diff options
author | Vincent Genieux <mutex@runbox.com> | 2009-05-03 17:42:44 +0100 |
---|---|---|
committer | Zaheer Merali <zaheerabbas@merali.org> | 2009-05-03 17:42:44 +0100 |
commit | e41401e3174b80b2e2ce4febf99f15e766dfc5c6 (patch) | |
tree | 46c829e8ac3359d8133633f0a205ad314433435c /gst/mpegdemux/mpegtspacketizer.c | |
parent | 8ef8daf4dbdbab23ff49757a6223c3a9bfba11d3 (diff) | |
download | gst-plugins-bad-e41401e3174b80b2e2ce4febf99f15e766dfc5c6.tar.gz gst-plugins-bad-e41401e3174b80b2e2ce4febf99f15e766dfc5c6.tar.bz2 gst-plugins-bad-e41401e3174b80b2e2ce4febf99f15e766dfc5c6.zip |
mpegtsparse: Ignore subtable extension when parsing PAT
Fixes #569673.
Diffstat (limited to 'gst/mpegdemux/mpegtspacketizer.c')
-rw-r--r-- | gst/mpegdemux/mpegtspacketizer.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/gst/mpegdemux/mpegtspacketizer.c b/gst/mpegdemux/mpegtspacketizer.c index 1abbf1fe..b986fa60 100644 --- a/gst/mpegdemux/mpegtspacketizer.c +++ b/gst/mpegdemux/mpegtspacketizer.c @@ -241,7 +241,8 @@ mpegts_packetizer_parse_section_header (MpegTSPacketizer * packetizer, data = GST_BUFFER_DATA (section->buffer); section->table_id = *data++; - if ((data[0] & 0x80) == 0) + /* if table_id is 0 (pat) then ignore the subtable extension */ + if ((data[0] & 0x80) == 0 || section->table_id == 0) section->subtable_extension = 0; else section->subtable_extension = GST_READ_UINT16_BE (data + 2); @@ -1844,6 +1845,22 @@ mpegts_packetizer_clear (MpegTSPacketizer * packetizer) gst_adapter_clear (packetizer->adapter); } +void +mpegts_packetizer_remove_stream (MpegTSPacketizer * packetizer, gint16 pid) +{ + MpegTSPacketizerStream *stream = + (MpegTSPacketizerStream *) g_hash_table_lookup (packetizer->streams, + GINT_TO_POINTER ((gint) pid)); + if (stream) { + GST_INFO ("Removing stream for PID %d", pid); + + g_hash_table_remove (packetizer->streams, GINT_TO_POINTER ((gint) pid)); + + g_object_unref (stream->section_adapter); + g_free (stream); + } +} + MpegTSPacketizer * mpegts_packetizer_new () { |