From bbdb392abe52a226db835eec1f5d6b676a3228d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Fri, 10 Jan 2020 11:33:28 +0200 Subject: [PATCH] timecodestamper: Fix waiting for the first video frame in case of live video input --- gst/timecode/gsttimecodestamper.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/gst/timecode/gsttimecodestamper.c b/gst/timecode/gsttimecodestamper.c index c791b0a59d..f122e29259 100644 --- a/gst/timecode/gsttimecodestamper.c +++ b/gst/timecode/gsttimecodestamper.c @@ -1238,14 +1238,20 @@ gst_timecodestamper_transform_ip (GstBaseTransform * vfilter, GstClockID clock_id; GstClockTime base_time = gst_element_get_base_time (GST_ELEMENT_CAST (timecodestamper)); + GstClockTime wait_time; + + /* If we have no latency yet then wait at least 8 frames durations. + * See LATENCY query handling for details. */ + if (timecodestamper->latency == GST_CLOCK_TIME_NONE) { + wait_time = base_time + running_time + 8 * frame_duration; + } else { + wait_time = base_time + running_time + timecodestamper->latency; + } GST_TRACE_OBJECT (timecodestamper, "Waiting for clock to reach %" GST_TIME_FORMAT, - GST_TIME_ARGS (base_time + running_time + - timecodestamper->latency)); - clock_id = - gst_clock_new_single_shot_id (clock, - base_time + running_time + timecodestamper->latency); + GST_TIME_ARGS (wait_time)); + clock_id = gst_clock_new_single_shot_id (clock, wait_time); timecodestamper->video_clock_id = clock_id; g_mutex_unlock (&timecodestamper->mutex); -- GitLab