diff --git a/modules/audio_filter/converter/a52tofloat32.c b/modules/audio_filter/converter/a52tofloat32.c index 5d1cbf0e41..be73531d5c 100644 --- a/modules/audio_filter/converter/a52tofloat32.c +++ b/modules/audio_filter/converter/a52tofloat32.c @@ -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;