diff --git a/sys/decklink/gstdecklinkvideosink.cpp b/sys/decklink/gstdecklinkvideosink.cpp index cf8b42ced1..b7c969c691 100644 --- a/sys/decklink/gstdecklinkvideosink.cpp +++ b/sys/decklink/gstdecklinkvideosink.cpp @@ -605,6 +605,7 @@ gst_decklink_video_sink_convert_to_internal_clock (GstDecklinkVideoSink * self, } else { GST_LOG_OBJECT (self, "No clock conversion needed, same clocks"); } + *timestamp += self->scheduled_stop_time; } static GstFlowReturn @@ -956,6 +957,7 @@ gst_decklink_video_sink_start_scheduled_playback (GstElement * element) self->output->started = TRUE; self->output->clock_restart = TRUE; + self->output->clock_offset = self->scheduled_stop_time; // Need to unlock to get the clock time g_mutex_unlock (&self->output->lock); @@ -1024,6 +1026,8 @@ gst_decklink_video_sink_stop_scheduled_playback (GstDecklinkVideoSink * self) self->output->output->IsScheduledPlaybackRunning (&active); } while (active); } + if (start_time > 0) + self->scheduled_stop_time = start_time; self->internal_base_time = GST_CLOCK_TIME_NONE; self->external_base_time = GST_CLOCK_TIME_NONE; g_mutex_unlock (&self->output->lock); diff --git a/sys/decklink/gstdecklinkvideosink.h b/sys/decklink/gstdecklinkvideosink.h index 08eb0a0ecb..86108ece7f 100644 --- a/sys/decklink/gstdecklinkvideosink.h +++ b/sys/decklink/gstdecklinkvideosink.h @@ -61,6 +61,8 @@ struct _GstDecklinkVideoSink GstClockTime internal_base_time; GstClockTime external_base_time; + GstClockTime scheduled_stop_time; + GstDecklinkOutput *output; };