mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-02 20:42:30 +00:00
streamsynchronizer: Don't wait for sparse streams when doing stream switches
Their stream-start event might come a bit later, like just before the first buffer... and queues might run full before that happens.
This commit is contained in:
parent
152534611d
commit
bd508a343f
1 changed files with 7 additions and 2 deletions
|
@ -71,6 +71,8 @@ typedef struct
|
|||
gboolean seen_data;
|
||||
GstClockTime gap_duration;
|
||||
|
||||
GstStreamFlags flags;
|
||||
|
||||
GCond stream_finish_cond;
|
||||
|
||||
/* seqnum of the previously received STREAM_START
|
||||
|
@ -298,6 +300,8 @@ gst_stream_synchronizer_sink_event (GstPad * pad, GstObject * parent,
|
|||
break;
|
||||
}
|
||||
|
||||
gst_event_parse_stream_flags (event, &stream->flags);
|
||||
|
||||
if ((have_group_id && stream->group_id != group_id) || (!have_group_id
|
||||
&& stream->stream_start_seqnum != seqnum)) {
|
||||
stream->is_eos = FALSE;
|
||||
|
@ -342,8 +346,9 @@ gst_stream_synchronizer_sink_event (GstPad * pad, GstObject * parent,
|
|||
for (l = self->streams; l; l = l->next) {
|
||||
GstStream *ostream = l->data;
|
||||
|
||||
all_wait = all_wait && ostream->wait && (!have_group_id
|
||||
|| ostream->group_id == group_id);
|
||||
all_wait = all_wait && ((ostream->flags & GST_STREAM_FLAG_SPARSE)
|
||||
|| (ostream->wait && (!have_group_id
|
||||
|| ostream->group_id == group_id)));
|
||||
if (!all_wait)
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue