- id->pp_filter[id->i_filter] =
- transcode_audio_filter_new( p_stream, id, &fmt_last,
- &id->p_encoder->fmt_in, NULL );
-
- if( id->pp_filter[id->i_filter] )
- id->i_filter++;
- else
- break;
- }
- }
-
- /* Final checks to see if conversions were successful */
- if( fmt_last.i_codec != id->p_encoder->fmt_in.i_codec )
- {
- msg_Err( p_stream, "no audio filter found (%4.4s->%4.4s)",
- (char *)&fmt_last.i_codec,
- (char *)&id->p_encoder->fmt_in.i_codec );
- transcode_audio_close( id );
- return VLC_EGENERIC;
- }
-
- /* Load user specified audio filters now */
- for( i = 0; (i < p_sys->i_afilters) &&
- (id->i_ufilter < TRANSCODE_FILTERS); i++ )
- {
- id->pp_ufilter[id->i_ufilter] =
- transcode_audio_filter_new( p_stream, id, &fmt_last,
- &id->p_encoder->fmt_in,
- p_sys->psz_afilters[i] );
-
- if( id->pp_ufilter[id->i_ufilter] )
- id->i_ufilter++;
- else
- break;
- }
-
- if( fmt_last.audio.i_channels != id->p_encoder->fmt_in.audio.i_channels )
- {
-#if 1
- module_Unneed( id->p_encoder, id->p_encoder->p_module );
- id->p_encoder->p_module = NULL;
-
- /* This might work, but only if the encoder is restarted */
- id->p_encoder->fmt_in.audio.i_channels = fmt_last.audio.i_channels;
- id->p_encoder->fmt_out.audio.i_channels = fmt_last.audio.i_channels;
-
- id->p_encoder->fmt_in.audio.i_physical_channels =
- id->p_encoder->fmt_in.audio.i_original_channels =
- fmt_last.audio.i_physical_channels;
- id->p_encoder->fmt_out.audio.i_physical_channels =
- id->p_encoder->fmt_out.audio.i_original_channels =
- fmt_last.audio.i_physical_channels;
-
- msg_Dbg( p_stream, "number of audio channels for mixing changed, "
- "trying to reopen the encoder for mixing %i to %i channels",
- fmt_last.audio.i_channels,
- id->p_encoder->fmt_in.audio.i_channels );
-
- /* reload encoder */
- id->p_encoder->p_cfg = p_stream->p_sys->p_audio_cfg;
- id->p_encoder->p_module =
- module_Need( id->p_encoder, "encoder", p_sys->psz_aenc, true );
- if( !id->p_encoder->p_module )
- {
- msg_Err( p_stream, "cannot find audio encoder (module:%s fourcc:%4.4s)",
- p_sys->psz_aenc ? p_sys->psz_aenc : "any",
- (char *)&p_sys->i_acodec );