tsdemux: Fix AC-4 detection
authorEdward Hervey <edward@centricular.com>
Thu, 14 Apr 2022 06:23:51 +0000 (08:23 +0200)
committerEdward Hervey <bilboed@bilboed.com>
Thu, 14 Apr 2022 06:33:34 +0000 (08:33 +0200)
This regression was introduced by
https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1102
and has been present since 1.18

* Stream Type 0x06 is defined in the base mpeg-ts specification as Private PES
Packets. Determining the content should be solely based on descriptors found
within the PMT.
* This was abused in that commit by defining a "bluray-only" stream type for AC4
: `ST_BD_AUDIO_AC4`
* This should be entirely handled in the regular private pes handling further
down in the code

Fixes #1154

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2175>

subprojects/gst-plugins-bad/gst/mpegtsdemux/gstmpegdefs.h
subprojects/gst-plugins-bad/gst/mpegtsdemux/tsdemux.c

index c0debcd..f88f586 100644 (file)
@@ -56,7 +56,6 @@
 #define ST_PS_DVD_SUBPICTURE            0xff
 
 /* Blu-ray related (registration: 'HDMV'*/
-#define ST_BD_AUDIO_AC4                 0x06
 #define ST_BD_AUDIO_LPCM                0x80
 #define ST_BD_AUDIO_AC3                 0x81
 #define ST_BD_AUDIO_DTS                 0x82
index 5381518..6408c9b 100644 (file)
@@ -1382,14 +1382,6 @@ create_pad_for_stream (MpegTSBase * base, MpegTSBaseStream * bstream,
         is_audio = TRUE;
         caps = gst_caps_new_empty_simple ("audio/x-eac3");
         break;
-      case ST_BD_AUDIO_AC4:
-        /* Opus also uses 0x06, and there are bad streams that have HDMV registration ID,
-         * but contain an Opus registration id, so check for it */
-        if (bstream->registration_id != DRF_ID_OPUS) {
-          is_audio = TRUE;
-          caps = gst_caps_new_empty_simple ("audio/x-ac4");
-        }
-        break;
       case ST_BD_AUDIO_AC3_TRUE_HD:
         is_audio = TRUE;
         caps = gst_caps_new_empty_simple ("audio/x-true-hd");