mpegtsparse: detect AC3 streams in PMT table
authorZaheer Abbas Merali <zaheer@localhost.localdomain>
Fri, 10 Apr 2009 17:06:55 +0000 (19:06 +0200)
committerZaheer Abbas Merali <zaheer@localhost.localdomain>
Tue, 21 Apr 2009 11:09:31 +0000 (12:09 +0100)
add 'has-ac3' boolean to pmt bus message

gst/mpegdemux/mpegtspacketizer.c

index 923283d7be1cf7ef65077718ee55c3bd64db8caf..1abbf1fe346863e29911699953db35684e33ff5e 100644 (file)
@@ -502,6 +502,17 @@ mpegts_packetizer_parse_pmt (MpegTSPacketizer * packetizer,
     g_free (struct_name);
 
     if (stream_info_length) {
+      /* check for AC3 descriptor */
+      GstMPEGDescriptor *desc =
+          gst_mpeg_descriptor_parse (data, stream_info_length);
+      if (desc != NULL) {
+        if (gst_mpeg_descriptor_find (desc, DESC_DVB_AC3)) {
+          gst_structure_set (stream_info, "has-ac3", G_TYPE_BOOLEAN, TRUE,
+              NULL);
+        }
+        gst_mpeg_descriptor_free (desc);
+      }
+
       descriptors = g_value_array_new (0);
       if (!mpegts_packetizer_parse_descriptors (packetizer,
               &data, data + stream_info_length, descriptors)) {
@@ -514,6 +525,7 @@ mpegts_packetizer_parse_pmt (MpegTSPacketizer * packetizer,
       gst_structure_set (stream_info,
           "descriptors", G_TYPE_VALUE_ARRAY, descriptors, NULL);
       g_value_array_free (descriptors);
+
     }
 
     g_value_init (&stream_value, GST_TYPE_STRUCTURE);