summaryrefslogtreecommitdiff
path: root/gst
diff options
context:
space:
mode:
authorEdward Hervey <edward@centricular.com>2020-12-09 09:14:12 +0100
committerEdward Hervey <bilboed@bilboed.com>2020-12-14 17:57:40 +0100
commitfe6ae27046000613a90d15772f47e123c2389f52 (patch)
tree5374dc480e8a1095406b2f46145d20b2a693844f /gst
parent3cb32df838a0a946e3824a55fe092fde20c436b4 (diff)
downloadgstreamer-plugins-bad-fe6ae27046000613a90d15772f47e123c2389f52.tar.gz
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: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1880>
Diffstat (limited to 'gst')
-rw-r--r--gst/mpegtsdemux/mpegtsbase.c6
-rw-r--r--gst/mpegtsdemux/mpegtsbase.h1
2 files changed, 5 insertions, 2 deletions
diff --git a/gst/mpegtsdemux/mpegtsbase.c b/gst/mpegtsdemux/mpegtsbase.c
index cf440203e..bce8e8fc8 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 fe92a8a74..6b241285f 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;
};