diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2015-09-23 15:56:26 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2015-09-24 09:32:36 +0200 |
commit | 9764e22a5c150238fe5e5368c3816bcacc8dc0a4 (patch) | |
tree | 4938c92257e6f5e209d0bec50f19cb5eb274c5dc /sys/decklink/gstdecklinkvideosink.cpp | |
parent | e0fd5317df193acb671e67f276a2ca2e5fa8c4b8 (diff) | |
download | gstreamer-plugins-bad-9764e22a5c150238fe5e5368c3816bcacc8dc0a4.tar.gz |
decklink: Add a clock epoch that is used as offset whenever restarting the clock
Otherwise we're going to return times starting at 0 again after shutting down
an element for a specific input/output and then using it again later.
https://bugzilla.gnome.org/show_bug.cgi?id=755426
Diffstat (limited to 'sys/decklink/gstdecklinkvideosink.cpp')
-rw-r--r-- | sys/decklink/gstdecklinkvideosink.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/decklink/gstdecklinkvideosink.cpp b/sys/decklink/gstdecklinkvideosink.cpp index e1f520cbf..c50d09ba0 100644 --- a/sys/decklink/gstdecklinkvideosink.cpp +++ b/sys/decklink/gstdecklinkvideosink.cpp @@ -558,6 +558,7 @@ gst_decklink_video_sink_open (GstBaseSink * bsink) self->output->start_scheduled_playback = gst_decklink_video_sink_start_scheduled_playback; self->output->clock_start_time = GST_CLOCK_TIME_NONE; + self->output->clock_epoch += self->output->clock_last_time; self->output->clock_last_time = 0; self->output->clock_offset = 0; g_mutex_unlock (&self->output->lock); @@ -706,6 +707,7 @@ gst_decklink_video_sink_change_state (GstElement * element, case GST_STATE_CHANGE_READY_TO_PAUSED: g_mutex_lock (&self->output->lock); self->output->clock_start_time = GST_CLOCK_TIME_NONE; + self->output->clock_epoch += self->output->clock_last_time; self->output->clock_last_time = 0; self->output->clock_offset = 0; g_mutex_unlock (&self->output->lock); @@ -746,6 +748,7 @@ gst_decklink_video_sink_change_state (GstElement * element, gst_clock_set_calibration (self->output->clock, 0, 0, 1, 1); g_mutex_lock (&self->output->lock); self->output->clock_start_time = GST_CLOCK_TIME_NONE; + self->output->clock_epoch += self->output->clock_last_time; self->output->clock_last_time = 0; self->output->clock_offset = 0; g_mutex_unlock (&self->output->lock); |