summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2016-11-02 15:00:36 +0200
committerSebastian Dröge <sebastian@centricular.com>2016-11-02 15:00:36 +0200
commitac37bdb9ac5953e056a36b8d9b8e956ac0fe0272 (patch)
treed0473c91d1ba7d1afb5a342742b2d5c29d5f3002
parent31317fd66633930b82d51d1c2e65121e24f9df19 (diff)
decklink: Use gst_clock_adjust_with_calibration() and unadjust_with_calibration()
Instead of hand-crafted versions of the same calculation. These calculations are still too complicated though.
-rw-r--r--sys/decklink/gstdecklinkvideosink.cpp12
-rw-r--r--sys/decklink/gstdecklinkvideosrc.cpp12
2 files changed, 6 insertions, 18 deletions
diff --git a/sys/decklink/gstdecklinkvideosink.cpp b/sys/decklink/gstdecklinkvideosink.cpp
index db7fa9d5b..6fbcb34a7 100644
--- a/sys/decklink/gstdecklinkvideosink.cpp
+++ b/sys/decklink/gstdecklinkvideosink.cpp
@@ -483,15 +483,9 @@ convert_to_internal_clock (GstDecklinkVideoSink * self,
// according to our internal clock.
//
// For the duration we just scale
- if (external > external_timestamp) {
- guint64 diff = external - external_timestamp;
- diff = gst_util_uint64_scale (diff, rate_d, rate_n);
- *timestamp = internal - diff;
- } else {
- guint64 diff = external_timestamp - external;
- diff = gst_util_uint64_scale (diff, rate_d, rate_n);
- *timestamp = internal + diff;
- }
+ *timestamp =
+ gst_clock_unadjust_with_calibration (NULL, external_timestamp,
+ internal, external, rate_n, rate_d);
GST_LOG_OBJECT (self,
"Converted %" GST_TIME_FORMAT " to %" GST_TIME_FORMAT " (internal: %"
diff --git a/sys/decklink/gstdecklinkvideosrc.cpp b/sys/decklink/gstdecklinkvideosrc.cpp
index d82c5fc73..0e8103406 100644
--- a/sys/decklink/gstdecklinkvideosrc.cpp
+++ b/sys/decklink/gstdecklinkvideosrc.cpp
@@ -464,15 +464,9 @@ gst_decklink_video_src_convert_to_external_clock (GstDecklinkVideoSrc * self,
// according to our external clock.
//
// For the duration we just scale
- if (internal > internal_timestamp) {
- guint64 diff = internal - internal_timestamp;
- diff = gst_util_uint64_scale (diff, rate_n, rate_d);
- *timestamp = external - diff;
- } else {
- guint64 diff = internal_timestamp - internal;
- diff = gst_util_uint64_scale (diff, rate_n, rate_d);
- *timestamp = external + diff;
- }
+ *timestamp =
+ gst_clock_adjust_with_calibration (NULL, internal_timestamp, internal,
+ external, rate_n, rate_d);
GST_LOG_OBJECT (self,
"Converted %" GST_TIME_FORMAT " to %" GST_TIME_FORMAT " (external: %"