From e8167dd1180a38d1562bad147a54d6d8667c379e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Tue, 10 Feb 2015 14:48:09 +0100 Subject: [PATCH] decklinkvideo{src,sink}: Sample the internal clock immediately after starting the device Otherwise we might stay at 0.0s for too long because we will take the first timestamp we ever see as 0.0... which will be after we started the device. --- sys/decklink/gstdecklinkvideosrc.cpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/sys/decklink/gstdecklinkvideosrc.cpp b/sys/decklink/gstdecklinkvideosrc.cpp index 8ca3cbde21..08d8b287ac 100644 --- a/sys/decklink/gstdecklinkvideosrc.cpp +++ b/sys/decklink/gstdecklinkvideosrc.cpp @@ -664,6 +664,16 @@ gst_decklink_video_src_start_streams (GstElement * element) || GST_STATE_PENDING (self) == GST_STATE_PLAYING)) { GST_DEBUG_OBJECT (self, "Starting streams"); + res = self->input->input->StartStreams (); + if (res != S_OK) { + GST_ELEMENT_ERROR (self, STREAM, FAILED, + (NULL), ("Failed to start streams: 0x%08x", res)); + return; + } + + self->input->started = TRUE; + self->input->clock_restart = TRUE; + // Need to unlock to get the clock time g_mutex_unlock (&self->input->lock); @@ -678,15 +688,6 @@ gst_decklink_video_src_start_streams (GstElement * element) gst_clock_get_internal_time (GST_ELEMENT_CLOCK (self)); g_mutex_lock (&self->input->lock); - - res = self->input->input->StartStreams (); - if (res != S_OK) { - GST_ELEMENT_ERROR (self, STREAM, FAILED, - (NULL), ("Failed to start streams: 0x%08x", res)); - return; - } - self->input->started = TRUE; - self->input->clock_restart = TRUE; } else { GST_DEBUG_OBJECT (self, "Not starting streams yet"); }