a52dec: pass sample formats by address rather than value

This commit is contained in:
Rémi Denis-Courmont 2011-08-03 16:42:26 +03:00
parent 819fe74dee
commit 5d9de36f76
1 changed files with 16 additions and 15 deletions

View File

@ -105,14 +105,15 @@ vlc_module_end ()
* Open:
*****************************************************************************/
static int Open( vlc_object_t *p_this, filter_sys_t *p_sys,
audio_format_t input, audio_format_t output )
const audio_format_t *restrict input,
const audio_format_t *restrict output )
{
p_sys->b_dynrng = var_InheritBool( p_this, "a52-dynrng" );
p_sys->b_dontwarn = 0;
/* No upmixing: it's not necessary and some other filters may want to do
* it themselves. */
if ( aout_FormatNbChannels( &output ) > aout_FormatNbChannels( &input ) )
if ( aout_FormatNbChannels( output ) > aout_FormatNbChannels( input ) )
{
if ( ! var_InheritBool( p_this, "a52-upmix" ) )
{
@ -121,18 +122,18 @@ static int Open( vlc_object_t *p_this, filter_sys_t *p_sys,
}
/* We'll do our own downmixing, thanks. */
p_sys->i_nb_channels = aout_FormatNbChannels( &output );
switch ( (output.i_physical_channels & AOUT_CHAN_PHYSMASK)
p_sys->i_nb_channels = aout_FormatNbChannels( output );
switch ( (output->i_physical_channels & AOUT_CHAN_PHYSMASK)
& ~AOUT_CHAN_LFE )
{
case AOUT_CHAN_CENTER:
if ( (output.i_original_channels & AOUT_CHAN_CENTER)
|| (output.i_original_channels
if ( (output->i_original_channels & AOUT_CHAN_CENTER)
|| (output->i_original_channels
& (AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT)) )
{
p_sys->i_flags = A52_MONO;
}
else if ( output.i_original_channels & AOUT_CHAN_LEFT )
else if ( output->i_original_channels & AOUT_CHAN_LEFT )
{
p_sys->i_flags = A52_CHANNEL1;
}
@ -143,23 +144,23 @@ static int Open( vlc_object_t *p_this, filter_sys_t *p_sys,
break;
case AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT:
if ( output.i_original_channels & AOUT_CHAN_DOLBYSTEREO )
if ( output->i_original_channels & AOUT_CHAN_DOLBYSTEREO )
{
p_sys->i_flags = A52_DOLBY;
}
else if ( input.i_original_channels == AOUT_CHAN_CENTER )
else if ( input->i_original_channels == AOUT_CHAN_CENTER )
{
p_sys->i_flags = A52_MONO;
}
else if ( input.i_original_channels & AOUT_CHAN_DUALMONO )
else if ( input->i_original_channels & AOUT_CHAN_DUALMONO )
{
p_sys->i_flags = A52_CHANNEL;
}
else if ( !(output.i_original_channels & AOUT_CHAN_RIGHT) )
else if ( !(output->i_original_channels & AOUT_CHAN_RIGHT) )
{
p_sys->i_flags = A52_CHANNEL1;
}
else if ( !(output.i_original_channels & AOUT_CHAN_LEFT) )
else if ( !(output->i_original_channels & AOUT_CHAN_LEFT) )
{
p_sys->i_flags = A52_CHANNEL2;
}
@ -197,7 +198,7 @@ static int Open( vlc_object_t *p_this, filter_sys_t *p_sys,
free( p_sys );
return VLC_EGENERIC;
}
if ( output.i_physical_channels & AOUT_CHAN_LFE )
if ( output->i_physical_channels & AOUT_CHAN_LFE )
{
p_sys->i_flags |= A52_LFE;
}
@ -213,7 +214,7 @@ static int Open( vlc_object_t *p_this, filter_sys_t *p_sys,
}
aout_CheckChannelReorder( pi_channels_in, NULL,
output.i_physical_channels & AOUT_CHAN_PHYSMASK,
output->i_physical_channels & AOUT_CHAN_PHYSMASK,
p_sys->i_nb_channels,
p_sys->pi_chan_table );
@ -375,7 +376,7 @@ static int OpenFilter( vlc_object_t *p_this )
return VLC_ENOMEM;
i_ret = Open( VLC_OBJECT(p_filter), p_sys,
p_filter->fmt_in.audio, p_filter->fmt_out.audio );
&p_filter->fmt_in.audio, &p_filter->fmt_out.audio );
p_filter->pf_audio_filter = Convert;
p_filter->fmt_out.audio.i_rate = p_filter->fmt_in.audio.i_rate;