From 8a4fd8358ddba1752a8cdac60735ce8038a7419a Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Fri, 18 May 2012 10:13:19 +0200 Subject: [PATCH] tsdemux: Detect and handle scrambled packets Users (tsdemux/mpegtsparse) can decide what to do with that --- gst/mpegtsdemux/mpegtspacketizer.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/gst/mpegtsdemux/mpegtspacketizer.c b/gst/mpegtsdemux/mpegtspacketizer.c index 11d31d8f66..84a0b597a0 100644 --- a/gst/mpegtsdemux/mpegtspacketizer.c +++ b/gst/mpegtsdemux/mpegtspacketizer.c @@ -338,7 +338,7 @@ mpegts_packetizer_parse_adaptation_field_control (MpegTSPacketizer2 * return TRUE; } -static gboolean +static MpegTSPacketizerPacketReturn mpegts_packetizer_parse_packet (MpegTSPacketizer2 * packetizer, MpegTSPacketizerPacket * packet) { @@ -347,11 +347,26 @@ mpegts_packetizer_parse_packet (MpegTSPacketizer2 * packetizer, data = packet->data_start; data++; + /* transport_error_indicator 1 */ + if (G_UNLIKELY (*data >> 7)) + return PACKET_BAD; + + /* payload_unit_start_indicator 1 */ packet->payload_unit_start_indicator = (*data >> 6) & 0x01; + + /* transport_priority 1 */ + /* PID 13 */ packet->pid = GST_READ_UINT16_BE (data) & 0x1FFF; data += 2; + /* transport_scrambling_control 2 */ + if (G_UNLIKELY (*data >> 6)) + return PACKET_BAD; + + /* adaptation_field_control 2 */ packet->adaptation_field_control = (*data >> 4) & 0x03; + + /* continuity_counter 4 */ packet->continuity_counter = *data & 0x0F; data += 1; @@ -368,7 +383,7 @@ mpegts_packetizer_parse_packet (MpegTSPacketizer2 * packetizer, else packet->payload = NULL; - return TRUE; + return PACKET_OK; } static gboolean -- 2.34.1