audioconvert: only resample on supported formats

This commit is contained in:
Wim Taymans 2016-01-15 11:43:13 +01:00
parent d348fbb9b9
commit 98bd349b88

View File

@ -950,6 +950,8 @@ gst_audio_converter_new (GstAudioConverterFlags flags, GstAudioInfo * in_info,
/* step 7, pack */ /* step 7, pack */
convert->pack_chain = chain_pack (convert, prev); convert->pack_chain = chain_pack (convert, prev);
convert->convert = converter_generic;
/* optimize */ /* optimize */
if (out_info->finfo->format == in_info->finfo->format if (out_info->finfo->format == in_info->finfo->format
&& convert->mix_passthrough) { && convert->mix_passthrough) {
@ -958,12 +960,14 @@ gst_audio_converter_new (GstAudioConverterFlags flags, GstAudioInfo * in_info,
("same formats, no resampler and passthrough mixing -> passthrough"); ("same formats, no resampler and passthrough mixing -> passthrough");
convert->convert = converter_passthrough; convert->convert = converter_passthrough;
} else { } else {
if (in_info->finfo->format == GST_AUDIO_FORMAT_S16 ||
in_info->finfo->format == GST_AUDIO_FORMAT_S32 ||
in_info->finfo->format == GST_AUDIO_FORMAT_F32 ||
in_info->finfo->format == GST_AUDIO_FORMAT_F64) {
GST_INFO ("same formats, and passthrough mixing -> only resampling"); GST_INFO ("same formats, and passthrough mixing -> only resampling");
convert->convert = converter_resample; convert->convert = converter_resample;
} }
} else { }
GST_INFO ("do full conversion");
convert->convert = converter_generic;
} }
setup_allocators (convert); setup_allocators (convert);