streamsynchronizer: reset eos on STREAM_START

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/4749>
This commit is contained in:
Guillaume Desmottes 2023-05-31 16:05:48 +02:00
parent 211928ca41
commit c2d8f4f729

View file

@ -388,6 +388,7 @@ gst_stream_synchronizer_sink_event (GstPad * pad, GstObject * parent,
GST_STREAM_SYNCHRONIZER_LOCK (self); GST_STREAM_SYNCHRONIZER_LOCK (self);
self->have_group_id &= have_group_id; self->have_group_id &= have_group_id;
have_group_id = self->have_group_id; have_group_id = self->have_group_id;
self->eos = FALSE;
stream = gst_streamsync_pad_get_stream (pad); stream = gst_streamsync_pad_get_stream (pad);