multiqueue: Handle gapless with flushing
authorEdward Hervey <edward@centricular.com>
Wed, 30 Nov 2022 15:16:53 +0000 (16:16 +0100)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Fri, 2 Dec 2022 09:22:41 +0000 (09:22 +0000)
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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3487>

subprojects/gstreamer/plugins/elements/gstmultiqueue.c

index bbe29e5..98a7fd7 100644 (file)
@@ -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;
 }