mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 12:11:13 +00:00
tsdemux: Add more AC3 detection cases
ATSC ac3 streams are always guaranteed to be AC3 if EAC3 descriptor is not present If stream registration id is 'AC-3' then it's also guaranteed to be AC3. Finally if AC3 descriptor is present it's guaranteed to be AC3. Only silences a warning, but still.
This commit is contained in:
parent
a76c658e8d
commit
edd69b2989
2 changed files with 19 additions and 6 deletions
|
@ -226,5 +226,8 @@
|
|||
#define DRF_ID_DTS3 0x44545333
|
||||
#define DRF_ID_S302M 0x42535344
|
||||
#define DRF_ID_TSHV 0x54534856
|
||||
#define DRF_ID_AC3 0x41432d33
|
||||
#define DRF_ID_GA94 0x47413934
|
||||
#define DRF_ID_CUEI 0x43554549
|
||||
|
||||
#endif /* __GST_MPEG_DESC_H__ */
|
||||
|
|
|
@ -946,11 +946,21 @@ create_pad_for_stream (MpegTSBase * base, MpegTSBaseStream * bstream,
|
|||
break;
|
||||
}
|
||||
|
||||
/* DVB_AC3 */
|
||||
desc = mpegts_get_descriptor_from_stream (bstream, GST_MTS_DESC_DVB_AC3);
|
||||
if (!desc)
|
||||
GST_WARNING ("AC3 stream type found but no corresponding "
|
||||
"descriptor to differentiate between AC3 and EAC3. "
|
||||
/* If stream has ac3 descriptor
|
||||
* OR program is ATSC (GA94)
|
||||
* OR stream registration is AC-3
|
||||
* then it's regular AC3 */
|
||||
if (bstream->registration_id == DRF_ID_AC3 ||
|
||||
program->registration_id == DRF_ID_GA94 ||
|
||||
mpegts_get_descriptor_from_stream (bstream, GST_MTS_DESC_DVB_AC3)) {
|
||||
template = gst_static_pad_template_get (&audio_template);
|
||||
name = g_strdup_printf ("audio_%04x", bstream->pid);
|
||||
caps = gst_caps_new_empty_simple ("audio/x-ac3");
|
||||
break;
|
||||
}
|
||||
|
||||
GST_WARNING ("AC3 stream type found but no guaranteed "
|
||||
"way found to differentiate between AC3 and EAC3. "
|
||||
"Assuming plain AC3.");
|
||||
template = gst_static_pad_template_get (&audio_template);
|
||||
name = g_strdup_printf ("audio_%04x", bstream->pid);
|
||||
|
|
Loading…
Reference in a new issue