From 90d41293014b3f8d4dcf38eef5e9d9ab6cf661cb Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Wed, 30 Nov 2022 16:16:53 +0100 Subject: [PATCH] multiqueue: Handle gapless with flushing Don't reset the stream-start group-id when stop/pausing single queues. They are only resetted when re-used (in READY->PAUSED). Fixes #1586 Part-of: --- subprojects/gstreamer/plugins/elements/gstmultiqueue.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/subprojects/gstreamer/plugins/elements/gstmultiqueue.c b/subprojects/gstreamer/plugins/elements/gstmultiqueue.c index bbe29e5e7f..98a7fd7f1e 100644 --- a/subprojects/gstreamer/plugins/elements/gstmultiqueue.c +++ b/subprojects/gstreamer/plugins/elements/gstmultiqueue.c @@ -1292,6 +1292,7 @@ gst_multi_queue_change_state (GstElement * element, GstStateChange transition) for (tmp = mqueue->queues; tmp; tmp = g_list_next (tmp)) { sq = (GstSingleQueue *) tmp->data; sq->flushing = FALSE; + sq->sink_stream_gid = sq->src_stream_gid = GST_GROUP_ID_INVALID; } /* the visible limit might not have been set on single queues that have grown because of other queueus were empty */ @@ -1363,9 +1364,7 @@ gst_single_queue_pause (GstMultiQueue * mq, GstSingleQueue * sq) } sq->sink_tainted = sq->src_tainted = TRUE; - sq->sink_stream_gid = sq->src_stream_gid = GST_GROUP_ID_INVALID; - sq->sink_stream_gid_changed = FALSE; - sq->src_stream_gid_changed = FALSE; + return result; } @@ -1381,9 +1380,7 @@ gst_single_queue_stop (GstMultiQueue * mq, GstSingleQueue * sq) gst_object_unref (srcpad); } sq->sink_tainted = sq->src_tainted = TRUE; - sq->sink_stream_gid = sq->src_stream_gid = GST_GROUP_ID_INVALID; - sq->sink_stream_gid_changed = FALSE; - sq->src_stream_gid_changed = FALSE; + return result; }