vlc | branch: master | Thomas Guillem <[email protected]> | Thu Sep 1 09:27:56 2016 +0200| [9729f7fde3b0c2a307eb3b114cc64174148a1046] | committer: Thomas Guillem
packetizer/a52: add EAC3 support > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=9729f7fde3b0c2a307eb3b114cc64174148a1046 --- modules/packetizer/a52.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/modules/packetizer/a52.c b/modules/packetizer/a52.c index 25cae8e..0c58409 100644 --- a/modules/packetizer/a52.c +++ b/modules/packetizer/a52.c @@ -193,7 +193,8 @@ static block_t *PacketizeBlock( decoder_t *p_dec, block_t **pp_block ) } /* Check if frame is valid and get frame info */ - if( vlc_a52_header_Parse( &p_sys->frame, p_header, VLC_A52_HEADER_SIZE ) ) + vlc_a52_header_t a52; + if( vlc_a52_header_Parse( &a52, p_header, VLC_A52_HEADER_SIZE ) ) { msg_Dbg( p_dec, "emulated sync word" ); block_SkipByte( &p_sys->bytestream ); @@ -201,6 +202,15 @@ static block_t *PacketizeBlock( decoder_t *p_dec, block_t **pp_block ) break; } + if( a52.b_eac3 && a52.eac3.strmtyp != EAC3_STRMTYP_INDEPENDENT ) + { + /* Use the channel configuration of the independent stream */ + p_sys->frame.i_samples = a52.i_samples; + p_sys->frame.i_size = a52.i_size; + } + else + p_sys->frame = a52; + p_sys->i_state = STATE_NEXT_SYNC; case STATE_NEXT_SYNC: @@ -288,7 +298,7 @@ static int Open( vlc_object_t *p_this ) switch( p_dec->fmt_in.i_codec ) { - /* TODO case VLC_CODEC_EAC3: */ + case VLC_CODEC_EAC3: case VLC_CODEC_A52: break; default: @@ -313,6 +323,7 @@ static int Open( vlc_object_t *p_this ) p_dec->fmt_out.i_codec = p_dec->fmt_in.i_codec; p_dec->fmt_out.audio = p_dec->fmt_in.audio; + p_sys->frame.b_eac3 = false; p_sys->frame.i_rate = p_dec->fmt_out.audio.i_rate; p_sys->frame.i_channels = p_dec->fmt_out.audio.i_channels; p_sys->frame.i_size = p_dec->fmt_out.audio.i_bytes_per_frame; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
