Merge branch 'eocanha-007' into 'main'

streamsynchronizer: Consider streams having received stream-start as waiting

See merge request gstreamer/gstreamer!4544
This commit is contained in:
Enrique Ocaña González 2024-05-14 20:15:13 +00:00
commit 44d53e8b84

View file

@ -75,6 +75,7 @@ typedef struct
gboolean flushing; /* set after flush-start and before flush-stop */ gboolean flushing; /* set after flush-start and before flush-stop */
gboolean seen_data; gboolean seen_data;
gboolean send_gap_event; gboolean send_gap_event;
gboolean seen_stream_start;
GstClockTime gap_duration; GstClockTime gap_duration;
GstStreamFlags flags; GstStreamFlags flags;
@ -435,13 +436,14 @@ gst_stream_synchronizer_sink_event (GstPad * pad, GstObject * parent,
GST_DEBUG_OBJECT (pad, "Stream %d changed", stream->stream_number); GST_DEBUG_OBJECT (pad, "Stream %d changed", stream->stream_number);
stream->wait = TRUE; stream->wait = TRUE;
stream->seen_stream_start = TRUE;
for (l = self->streams; l; l = l->next) { for (l = self->streams; l; l = l->next) {
GstSyncStream *ostream = l->data; GstSyncStream *ostream = l->data;
all_wait = all_wait && ((ostream->flags & GST_STREAM_FLAG_SPARSE) all_wait = all_wait && ((ostream->flags & GST_STREAM_FLAG_SPARSE)
|| (ostream->wait && (!have_group_id || ((ostream->wait || ostream->seen_stream_start)
|| ostream->group_id == group_id))); && (!have_group_id || ostream->group_id == group_id)));
if (!all_wait) if (!all_wait)
break; break;
} }
@ -1129,6 +1131,7 @@ gst_stream_synchronizer_change_state (GstElement * element,
gst_segment_init (&stream->segment, GST_FORMAT_UNDEFINED); gst_segment_init (&stream->segment, GST_FORMAT_UNDEFINED);
stream->gap_duration = GST_CLOCK_TIME_NONE; stream->gap_duration = GST_CLOCK_TIME_NONE;
stream->wait = FALSE; stream->wait = FALSE;
stream->seen_stream_start = FALSE;
stream->is_eos = FALSE; stream->is_eos = FALSE;
stream->eos_sent = FALSE; stream->eos_sent = FALSE;
stream->flushing = FALSE; stream->flushing = FALSE;