From 32c465a5374282ddf49c2a7856aced79f76ecd09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Wed, 22 May 2019 18:06:04 +0300 Subject: [PATCH] splitmuxsink: Only set running time on finalizing sink element when in async-finalize mode There is only a single sink element in async-finalize mode, and we would keep the running time from previous fragments set in that case. As we don't ever set the running time for the very last fragment on EOS, this would mean that the closing time reported for the very last fragment is the same as the closing time of the previous fragment. --- gst/multifile/gstsplitmuxsink.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/gst/multifile/gstsplitmuxsink.c b/gst/multifile/gstsplitmuxsink.c index a9cd723c58..369ef2577d 100644 --- a/gst/multifile/gstsplitmuxsink.c +++ b/gst/multifile/gstsplitmuxsink.c @@ -2026,10 +2026,12 @@ handle_gathered_gop (GstSplitMuxSink * splitmux) /* Check for overrun - have we output at least one byte and overrun * either threshold? */ if (need_new_fragment (splitmux, queued_time, queued_gop_time, queued_bytes)) { - GstClockTime *sink_running_time = g_new (GstClockTime, 1); - *sink_running_time = splitmux->reference_ctx->out_running_time; - g_object_set_qdata_full (G_OBJECT (splitmux->sink), - RUNNING_TIME, sink_running_time, g_free); + if (splitmux->async_finalize) { + GstClockTime *sink_running_time = g_new (GstClockTime, 1); + *sink_running_time = splitmux->reference_ctx->out_running_time; + g_object_set_qdata_full (G_OBJECT (splitmux->sink), + RUNNING_TIME, sink_running_time, g_free); + } g_atomic_int_set (&(splitmux->do_split_next_gop), FALSE); /* Tell the output side to start a new fragment */ GST_INFO_OBJECT (splitmux,