mpegtbase: ECM/CA sections don't have a CRC
authorEdward Hervey <edward.hervey@collabora.co.uk>
Fri, 1 Jun 2012 14:29:03 +0000 (16:29 +0200)
committerEdward Hervey <edward.hervey@collabora.co.uk>
Fri, 1 Jun 2012 14:42:41 +0000 (16:42 +0200)
So don't check for it :)

Also add a bit more info in the warning message to speed up detecting
whether it's a false-positive or not.

gst/mpegtsdemux/mpegtsbase.c

index c448dd1eb822374115ccc2cec50da0c2e8a8e799..5b271ee08d8f113606f29063e77f18089462d396 100644 (file)
@@ -1071,10 +1071,12 @@ mpegts_base_handle_psi (MpegTSBase * base, MpegTSPacketizerSection * section)
   GstStructure *structure = NULL;
 
   /* table ids 0x70 - 0x73 do not have a crc */
-  if (G_LIKELY (section->table_id < 0x70 || section->table_id > 0x73)) {
+  if (G_LIKELY ((section->table_id < 0x70 || section->table_id > 0x73)
+          && (section->table_id < 0x80 || section->table_id > 0x8f))) {
     if (G_UNLIKELY (mpegts_base_calc_crc32 (section->data,
                 section->section_length) != 0)) {
-      GST_WARNING_OBJECT (base, "bad crc in psi pid 0x%x", section->pid);
+      GST_WARNING_OBJECT (base, "bad crc in psi pid 0x%x (table_id:0x%x)",
+          section->pid, section->table_id);
       return FALSE;
     }
   }