streamsynchronizer: reset eos on STREAM_START
authorGuillaume Desmottes <guillaume.desmottes@onestream.live>
Wed, 31 May 2023 14:05:48 +0000 (16:05 +0200)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Thu, 1 Jun 2023 11:15:00 +0000 (11:15 +0000)
self->eos was never reset after streamsynchronizer has sent EOS
(except on explicit flush or switching back to PAUSED).
As a result, synchronization was broken if new streams were pushed later
as gst_stream_synchronizer_wait() does not wait if self->eos is set.

Fix this by reseting self->eos on STREAM_START as that means a new
stream is being sent upstream and so a new EOS will follow later on.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4755>

subprojects/gst-plugins-base/gst/playback/gststreamsynchronizer.c

index 6a0f26c..4c3786b 100644 (file)
@@ -388,6 +388,7 @@ gst_stream_synchronizer_sink_event (GstPad * pad, GstObject * parent,
       GST_STREAM_SYNCHRONIZER_LOCK (self);
       self->have_group_id &= have_group_id;
       have_group_id = self->have_group_id;
+      self->eos = FALSE;
 
       stream = gst_streamsync_pad_get_stream (pad);