tsdemux: Detect and handle scrambled packets
authorEdward Hervey <edward@collabora.com>
Fri, 18 May 2012 08:13:19 +0000 (10:13 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Fri, 18 May 2012 09:11:31 +0000 (11:11 +0200)
Users (tsdemux/mpegtsparse) can decide what to do with that

gst/mpegtsdemux/mpegtspacketizer.c

index 11d31d8..84a0b59 100644 (file)
@@ -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