[vlc-commits] mux: ts: fix AC3/EAC3 (fix #17834)
Francois Cartegnie
git at videolan.org
Mon Jan 2 10:54:20 CET 2017
vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Mon Jan 2 10:44:39 2017 +0100| [6063682fe74f2c443330629c60c5da2ac53a9446] | committer: Francois Cartegnie
mux: ts: fix AC3/EAC3 (fix #17834)
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=6063682fe74f2c443330629c60c5da2ac53a9446
---
modules/mux/mpeg/tables.c | 52 +++++++++++++++++++++++++++++++++++++----------
1 file changed, 41 insertions(+), 11 deletions(-)
diff --git a/modules/mux/mpeg/tables.c b/modules/mux/mpeg/tables.c
index 4025c33..e757d6b 100644
--- a/modules/mux/mpeg/tables.c
+++ b/modules/mux/mpeg/tables.c
@@ -43,6 +43,8 @@
#include "bits.h"
#include "pes.h"
+#include <assert.h>
+
block_t *WritePSISection( dvbpsi_psi_section_t* p_section )
{
block_t *p_psi, *p_first = NULL;
@@ -440,13 +442,6 @@ void BuildPMT( dvbpsi_t *p_dvbpsi, vlc_object_t *p_object,
/* 0xa0 is private */
dvbpsi_pmt_es_descriptor_add( p_es, 0xa0, i_extra + 10, data );
}
- else if( p_stream->ts->i_stream_type == 0x81 )
- {
- uint8_t format[4] = { 'A', 'C', '-', '3'};
-
- /* "registration" descriptor : "AC-3" */
- dvbpsi_pmt_es_descriptor_add( p_es, 0x05, 4, format );
- }
else if( p_stream->pes->i_codec == VLC_CODEC_DIRAC )
{
/* Dirac registration descriptor */
@@ -467,12 +462,47 @@ void BuildPMT( dvbpsi_t *p_dvbpsi, vlc_object_t *p_object,
}
}
}
+ else if( p_stream->pes->i_codec == VLC_CODEC_A52 )
+ {
+ uint8_t format[4] = { 'A', 'C', '-', '3'};
+
+ /* "registration" descriptor : "AC-3" */
+ dvbpsi_pmt_es_descriptor_add( p_es, 0x05, 4, format );
+
+ if( standard == TS_MUX_STANDARD_ATSC )
+ {
+ assert(p_stream->ts->i_stream_type == 0x81);
+ /* FIXME: ATSC AC-3 audio_stream_descriptor */
+ uint8_t data[1] = { 0x00 };
+ dvbpsi_pmt_es_descriptor_add( p_es, 0x81, 1, data );
+ }
+ else
+ {
+ /* FIXME: DVB AC-3 descriptor */
+ uint8_t data[1] = { 0x00 };
+ dvbpsi_pmt_es_descriptor_add( p_es, 0x6a, 1, data );
+ }
+ }
else if( p_stream->pes->i_codec == VLC_CODEC_EAC3 )
{
- /* FIXME: ATSC AC-3 audio_stream_descriptor */
- /* FIXME: DVB AC-3 descriptor */
- uint8_t data[1] = { 0x00 };
- dvbpsi_pmt_es_descriptor_add( p_es, 0x7a, 1, data );
+ uint8_t format[4] = { 'E', 'A', 'C', '3'};
+
+ /* "registration" descriptor : "EAC3" */
+ dvbpsi_pmt_es_descriptor_add( p_es, 0x05, 4, format );
+
+ if( standard == TS_MUX_STANDARD_ATSC )
+ {
+ assert( p_stream->ts->i_stream_type == 0x87 );
+ /* FIXME: ATSC EAC3 audio_stream_descriptor */
+ uint8_t data[1] = { 0x00 };
+ dvbpsi_pmt_es_descriptor_add( p_es, 0xcc, 1, data );
+ /* FIXME: ATSC A-71 stream_info_details */
+ }
+ else
+ {
+ uint8_t data[1] = { 0x00 };
+ dvbpsi_pmt_es_descriptor_add( p_es, 0x7a, 1, data );
+ }
}
else if( p_stream->pes->i_codec == VLC_CODEC_OPUS )
{
More information about the vlc-commits
mailing list