From: Edward Hervey Date: Fri, 18 May 2012 08:13:19 +0000 (+0200) Subject: tsdemux: Detect and handle scrambled packets X-Git-Tag: 1.19.3~507^2~15526 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8a4fd8358ddba1752a8cdac60735ce8038a7419a;p=platform%2Fupstream%2Fgstreamer.git tsdemux: Detect and handle scrambled packets Users (tsdemux/mpegtsparse) can decide what to do with that --- 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