summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Hervey <edward@centricular.com>2022-11-30 16:16:53 +0100
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>2022-12-02 09:22:41 +0000
commit90d41293014b3f8d4dcf38eef5e9d9ab6cf661cb (patch)
tree83ae84bb77a10123881e30b9c64bfedc91b7029e
parent41017e6c3456a027b775d8fa1c5c07ecc851a669 (diff)
downloadgstreamer-90d41293014b3f8d4dcf38eef5e9d9ab6cf661cb.tar.gz
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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3487>
-rw-r--r--subprojects/gstreamer/plugins/elements/gstmultiqueue.c9
1 files 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;
}