vlc | branch: master | Jean-Baptiste Kempf <j...@videolan.org> | Sun Aug 10 08:17:35 2014 +0200| [8736551ffc57068b389b6dd583c0640f64035cfd] | committer: Jean-Baptiste Kempf
PS: detect AC-3 from E-AC-3 We must look inside the packet to see this info > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=8736551ffc57068b389b6dd583c0640f64035cfd --- modules/demux/ps.h | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/modules/demux/ps.h b/modules/demux/ps.h index 618c25b..2a0018d 100644 --- a/modules/demux/ps.h +++ b/modules/demux/ps.h @@ -93,7 +93,21 @@ static inline int ps_track_fill( ps_track_t *tk, ps_psm_t *p_psm, int i_id, bloc else if( ( i_id&0xf8 ) == 0x80 || /* 0x80 -> 0x87 */ ( i_id&0xf0 ) == 0xc0 ) /* 0xc0 -> 0xcf AC-3, Can also be DD+/E-AC3 in evob */ { - es_format_Init( &tk->fmt, AUDIO_ES, VLC_CODEC_A52 ); + bool b_eac3 = false; + if( ( i_id&0xf0 ) == 0xc0 && p_pkt && p_pkt->i_buffer > 8 ) + { + unsigned i_start = 9 + p_pkt->p_buffer[8]; + /* AC-3 marking, see vlc_a52_header_Parse */ + if( p_pkt->p_buffer[i_start + 4] == 0x0b || + p_pkt->p_buffer[i_start + 5] == 0x77 ) + { + int bsid = p_pkt->p_buffer[i_start + 9] >> 3; + if( bsid > 10 ) + b_eac3 = true; + } + } + + es_format_Init( &tk->fmt, AUDIO_ES, b_eac3 ? VLC_CODEC_EAC3 : VLC_CODEC_A52 ); tk->i_skip = 4; } else if( ( i_id&0xfc ) == 0x00 ) /* 0x00 -> 0x03 */ _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits