From fe6ae27046000613a90d15772f47e123c2389f52 Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Wed, 9 Dec 2020 09:14:12 +0100 Subject: [PATCH] mpegts: Don't add non-padded streams to collection on updates When carrying over existing GstStream to a new GstStreamCollection we need to check whether they *actually* were being used in the previous collection. This avoids adding unknown streams (metadata, PSI, etc...) to the collection on updates. Part-of: --- gst/mpegtsdemux/mpegtsbase.c | 6 ++++-- gst/mpegtsdemux/mpegtsbase.h | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/gst/mpegtsdemux/mpegtsbase.c b/gst/mpegtsdemux/mpegtsbase.c index cf440203ef..bce8e8fc88 100644 --- a/gst/mpegtsdemux/mpegtsbase.c +++ b/gst/mpegtsdemux/mpegtsbase.c @@ -607,9 +607,11 @@ mpegts_base_program_add_stream (MpegTSBase * base, program->stream_list = g_list_append (program->stream_list, bstream); if (klass->stream_added) - if (klass->stream_added (base, bstream, program)) + if (klass->stream_added (base, bstream, program)) { gst_stream_collection_add_stream (program->collection, (GstStream *) gst_object_ref (bstream->stream_object)); + bstream->in_collection = TRUE; + } return bstream; @@ -692,7 +694,7 @@ mpegts_base_update_program (MpegTSBase * base, MpegTSBaseProgram * program, /* Copy over gststream that still exist into the collection */ for (tmp = program->stream_list; tmp; tmp = tmp->next) { MpegTSBaseStream *stream = (MpegTSBaseStream *) tmp->data; - if (_stream_in_pmt (pmt, stream)) { + if (_stream_in_pmt (pmt, stream) && stream->in_collection) { gst_stream_collection_add_stream (program->collection, gst_object_ref (stream->stream_object)); } diff --git a/gst/mpegtsdemux/mpegtsbase.h b/gst/mpegtsdemux/mpegtsbase.h index fe92a8a744..6b241285f4 100644 --- a/gst/mpegtsdemux/mpegtsbase.h +++ b/gst/mpegtsdemux/mpegtsbase.h @@ -65,6 +65,7 @@ struct _MpegTSBaseStream GstMpegtsPMTStream *stream; GstStream *stream_object; + gboolean in_collection; gchar *stream_id; };