Commit 784b1bd3 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

aout_CheckChannelReorder: remove redundant parameter

The number of channels is conveyed in the channels mask.
parent c87fe2f7
......@@ -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 );
/**
......
......@@ -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;
......
......@@ -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;
......
......@@ -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 )
......
......@@ -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 )
......
......@@ -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];
......
......@@ -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 );
}
/*****************************************************************************
......
......@@ -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",
......
......@@ -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",
......
......@@ -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;
}
/*****************************************************************************
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment