+ msg_Dbg( p_filter, "filter discarded (incompatible format)" );
+ return VLC_EGENERIC;
+ }
+
+ /* Request a specific format if not already compatible */
+ if ( p_filter->input.i_original_channels
+ != p_filter->output.i_original_channels )
+ {
+ b_fit = VLC_FALSE;
+ p_filter->input.i_original_channels =
+ p_filter->output.i_original_channels;
+ }
+ if ( p_filter->input.i_format != VLC_FOURCC('f','l','3','2')
+ || p_filter->output.i_format != VLC_FOURCC('f','l','3','2') )
+ {
+ b_fit = VLC_FALSE;
+ p_filter->input.i_format = VLC_FOURCC('f','l','3','2');
+ p_filter->output.i_format = VLC_FOURCC('f','l','3','2');
+ }
+ if ( p_filter->input.i_rate != p_filter->output.i_rate )
+ {
+ b_fit = VLC_FALSE;
+ p_filter->input.i_rate = p_filter->output.i_rate;
+ }
+ if ( p_filter->input.i_physical_channels == (AOUT_CHAN_LEFT|AOUT_CHAN_RIGHT)
+ && ( p_filter->input.i_original_channels & AOUT_CHAN_DOLBYSTEREO )
+ && ! config_GetInt ( p_filter , "headphone-dolby" ) )
+ {
+ b_fit = VLC_FALSE;
+ p_filter->input.i_physical_channels = AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT |
+ AOUT_CHAN_CENTER |
+ AOUT_CHAN_REARLEFT |
+ AOUT_CHAN_REARRIGHT;
+ }
+ if ( ! b_fit )
+ {
+ msg_Dbg( p_filter, "requesting specific format" );
+ return VLC_EGENERIC;