vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Sun Nov 11 12:37:57 2012 +0200| [784b1bd3d410ce0ad01ece4ce111e37c5f041f03] | committer: Rémi Denis-Courmont
aout_CheckChannelReorder: remove redundant parameter The number of channels is conveyed in the channels mask. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=784b1bd3d410ce0ad01ece4ce111e37c5f041f03 --- include/vlc_aout.h | 3 +- modules/audio_filter/converter/a52tofloat32.c | 1 - modules/audio_filter/converter/dtstofloat32.c | 1 - modules/audio_output/directx.c | 2 +- modules/audio_output/waveout.c | 2 +- modules/codec/opus.c | 1 - modules/codec/vorbis.c | 8 ++--- modules/demux/wav.c | 1 - modules/mux/wav.c | 1 - src/audio_output/common.c | 47 +++++++++++-------------- 10 files changed, 27 insertions(+), 40 deletions(-) diff --git a/include/vlc_aout.h b/include/vlc_aout.h index 9aa5ec7..27d5bb0 100644 --- a/include/vlc_aout.h +++ b/include/vlc_aout.h @@ -178,7 +178,8 @@ static const uint32_t pi_vlc_chan_order_wg4[] = * If pi_chan_order_in or pi_chan_order_out is NULL, it will assume that vlc * internal (WG4) order is requested. */ -VLC_API int aout_CheckChannelReorder( const uint32_t *pi_chan_order_in, const uint32_t *pi_chan_order_out, uint32_t i_channel_mask, int i_channels, int *pi_chan_table ); +VLC_API unsigned aout_CheckChannelReorder( const uint32_t *, const uint32_t *, + uint32_t mask, int *table ); VLC_API void aout_ChannelReorder( void *, size_t, unsigned, const int *, unsigned ); /** diff --git a/modules/audio_filter/converter/a52tofloat32.c b/modules/audio_filter/converter/a52tofloat32.c index 8379e07..9391318 100644 --- a/modules/audio_filter/converter/a52tofloat32.c +++ b/modules/audio_filter/converter/a52tofloat32.c @@ -214,7 +214,6 @@ static int Open( vlc_object_t *p_this, filter_sys_t *p_sys, aout_CheckChannelReorder( pi_channels_in, NULL, output->i_physical_channels, - p_sys->i_nb_channels, p_sys->pi_chan_table ); return VLC_SUCCESS; diff --git a/modules/audio_filter/converter/dtstofloat32.c b/modules/audio_filter/converter/dtstofloat32.c index f4b9412..4df5689 100644 --- a/modules/audio_filter/converter/dtstofloat32.c +++ b/modules/audio_filter/converter/dtstofloat32.c @@ -176,7 +176,6 @@ static int Open( vlc_object_t *p_this, filter_sys_t *p_sys, aout_CheckChannelReorder( pi_channels_in, NULL, output->i_physical_channels, - p_sys->i_nb_channels, p_sys->pi_chan_table ); return VLC_SUCCESS; diff --git a/modules/audio_output/directx.c b/modules/audio_output/directx.c index 1862710..5a26d78 100644 --- a/modules/audio_output/directx.c +++ b/modules/audio_output/directx.c @@ -787,7 +787,7 @@ static int CreateDSBuffer( audio_output_t *p_aout, int i_format, p_aout->sys->i_channel_mask = waveformat.dwChannelMask; p_aout->sys->b_chan_reorder = aout_CheckChannelReorder( pi_channels_in, pi_channels_out, - waveformat.dwChannelMask, i_nb_channels, + waveformat.dwChannelMask, p_aout->sys->pi_chan_table ); if( p_aout->sys->b_chan_reorder ) diff --git a/modules/audio_output/waveout.c b/modules/audio_output/waveout.c index 63914c2..4ec5d44 100644 --- a/modules/audio_output/waveout.c +++ b/modules/audio_output/waveout.c @@ -659,7 +659,7 @@ static int OpenWaveOut( audio_output_t *p_aout, uint32_t i_device_id, int i_form p_aout->sys->b_chan_reorder = aout_CheckChannelReorder( pi_channels_in, pi_channels_out, - waveformat.dwChannelMask, i_nb_channels, + waveformat.dwChannelMask, p_aout->sys->pi_chan_table ); if( p_aout->sys->b_chan_reorder ) diff --git a/modules/codec/opus.c b/modules/codec/opus.c index d9d3257..8156976 100644 --- a/modules/codec/opus.c +++ b/modules/codec/opus.c @@ -298,7 +298,6 @@ static int ProcessInitialHeader( decoder_t *p_dec, ogg_packet *p_oggpacket ) pi_7channels_in, pi_8channels_in }; aout_CheckChannelReorder( pi_ch[p_header->channels-3], NULL, p_dec->fmt_out.audio.i_physical_channels, - p_header->channels, pi_chan_table ); for(int i=0;i<p_header->channels;i++) new_stream_map[pi_chan_table[i]]=p_header->stream_map[i]; diff --git a/modules/codec/vorbis.c b/modules/codec/vorbis.c index 524d79a..5d6cd61 100644 --- a/modules/codec/vorbis.c +++ b/modules/codec/vorbis.c @@ -660,14 +660,10 @@ static void ConfigureChannelOrder(int *pi_chan_table, int i_channels, uint32_t i if( b_decode ) aout_CheckChannelReorder( pi_channels_in, NULL, - i_channel_mask, - i_channels, - pi_chan_table ); + i_channel_mask, pi_chan_table ); else aout_CheckChannelReorder( NULL, pi_channels_in, - i_channel_mask, - i_channels, - pi_chan_table ); + i_channel_mask, pi_chan_table ); } /***************************************************************************** diff --git a/modules/demux/wav.c b/modules/demux/wav.c index 6acf631..0bd3adb 100644 --- a/modules/demux/wav.c +++ b/modules/demux/wav.c @@ -273,7 +273,6 @@ static int Open( vlc_object_t * p_this ) p_sys->b_chan_reorder = aout_CheckChannelReorder( pi_channels_in, NULL, p_sys->i_channel_mask, - p_sys->fmt.audio.i_channels, p_sys->pi_chan_table ); msg_Dbg( p_demux, "channel mask: %x, reordering: %i", diff --git a/modules/mux/wav.c b/modules/mux/wav.c index db70f7c..bb585ab 100644 --- a/modules/mux/wav.c +++ b/modules/mux/wav.c @@ -188,7 +188,6 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input ) p_sys->b_chan_reorder = aout_CheckChannelReorder( pi_channels_in, pi_channels_out, p_sys->i_channel_mask, - p_input->p_fmt->audio.i_channels, p_sys->pi_chan_table ); msg_Dbg( p_mux, "channel mask: %x, reordering: %i", diff --git a/src/audio_output/common.c b/src/audio_output/common.c index 027caab..720d6ff 100644 --- a/src/audio_output/common.c +++ b/src/audio_output/common.c @@ -241,40 +241,35 @@ void aout_FormatsPrint( vlc_object_t *obj, const char * psz_text, /***************************************************************************** * aout_CheckChannelReorder : Check if we need to do some channel re-ordering *****************************************************************************/ -int aout_CheckChannelReorder( const uint32_t *pi_chan_order_in, - const uint32_t *pi_chan_order_out, - uint32_t i_channel_mask, - int i_channels, int *pi_chan_table ) +unsigned aout_CheckChannelReorder( const uint32_t *chans_in, + const uint32_t *chans_out, + uint32_t mask, int *restrict table ) { - bool b_chan_reorder = false; - int i, j, k, l; + unsigned channels = 0; - if( i_channels > AOUT_CHAN_MAX ) - return false; - - if( pi_chan_order_in == NULL ) - pi_chan_order_in = pi_vlc_chan_order_wg4; - if( pi_chan_order_out == NULL ) - pi_chan_order_out = pi_vlc_chan_order_wg4; + if( chans_in == NULL ) + chans_in = pi_vlc_chan_order_wg4; + if( chans_out == NULL ) + chans_out = pi_vlc_chan_order_wg4; - for( i = 0, j = 0; pi_chan_order_in[i]; i++ ) + for( unsigned i = 0; chans_in[i]; i++ ) { - if( !(i_channel_mask & pi_chan_order_in[i]) ) continue; - - for( k = 0, l = 0; pi_chan_order_in[i] != pi_chan_order_out[k]; k++ ) - { - if( i_channel_mask & pi_chan_order_out[k] ) l++; - } + const uint32_t chan = chans_in[i]; + if( !(mask & chan) ) + continue; - pi_chan_table[j++] = l; - } + unsigned index = 0; + for( unsigned j = 0; chan != chans_out[j]; j++ ) + if( mask & chans_out[j] ) + index++; - for( i = 0; i < i_channels; i++ ) - { - if( pi_chan_table[i] != i ) b_chan_reorder = true; + table[channels++] = index; } - return b_chan_reorder; + for( unsigned i = 0; i < channels; i++ ) + if( table[i] != i ) + return channels; + return 0; } /***************************************************************************** _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
