From 86352fc87a075258c0343585ce36aa6f2018da29 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Kempf Date: Fri, 26 Feb 2010 13:24:05 +0100 Subject: [PATCH] Fix FLAC 7.1 support Close #3348 --- modules/codec/flac.c | 14 ++++++++++---- modules/packetizer/flac.c | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/modules/codec/flac.c b/modules/codec/flac.c index f35a1dbed0..837b75f7ad 100644 --- a/modules/codec/flac.c +++ b/modules/codec/flac.c @@ -64,7 +64,7 @@ struct decoder_sys_t bool b_stream_info; }; -static const int pi_channels_maps[7] = +static const int pi_channels_maps[9] = { 0, AOUT_CHAN_CENTER, @@ -75,7 +75,13 @@ static const int pi_channels_maps[7] = AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT | AOUT_CHAN_CENTER | AOUT_CHAN_REARLEFT | AOUT_CHAN_REARRIGHT, AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT | AOUT_CHAN_CENTER - | AOUT_CHAN_REARLEFT | AOUT_CHAN_REARRIGHT | AOUT_CHAN_LFE + | AOUT_CHAN_REARLEFT | AOUT_CHAN_REARRIGHT | AOUT_CHAN_LFE, + AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT | AOUT_CHAN_CENTER + | AOUT_CHAN_REARLEFT | AOUT_CHAN_REARRIGHT | AOUT_CHAN_MIDDLELEFT + | AOUT_CHAN_MIDDLERIGHT, + AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT | AOUT_CHAN_CENTER | AOUT_CHAN_REARLEFT + | AOUT_CHAN_REARRIGHT | AOUT_CHAN_MIDDLELEFT | AOUT_CHAN_MIDDLERIGHT + | AOUT_CHAN_LFE }; /***************************************************************************** @@ -334,8 +340,8 @@ DecoderWriteCallback( const FLAC__StreamDecoder *decoder, { 0, 1, 3, 4, 2 }, { 0, 1, 4, 5, 2, 3 }, - { 0, 1, 6, 2, 3, 4, 5 }, /* 7.0 Unspecified by flac */ - { 0, 1, 6, 7, 2, 3, 4, 5 }, /* 7.1 Unspecified by flac */ + { 0, 1, 6, 4, 5, 2, 3 }, /* 7.0 Unspecified by flac, but following SMPTE */ + { 0, 1, 6, 7, 4, 5, 2, 3 }, /* 7.1 Unspecified by flac, but following SMPTE */ }; VLC_UNUSED(decoder); diff --git a/modules/packetizer/flac.c b/modules/packetizer/flac.c index a1a3c3b2ad..e7c2c7e20e 100644 --- a/modules/packetizer/flac.c +++ b/modules/packetizer/flac.c @@ -206,7 +206,7 @@ static block_t *Packetize( decoder_t *p_dec, block_t **pp_block ) if( !p_sys->b_stream_info ) ProcessHeader( p_dec ); - if( p_sys->stream_info.channels > 6 ) + if( p_sys->stream_info.channels > 8 ) { msg_Err( p_dec, "This stream uses too many audio channels" ); return NULL; -- 2.39.2