diff --git a/libswresample/audioconvert.c b/libswresample/audioconvert.c index 04e33c511d..81bd6d30ba 100644 --- a/libswresample/audioconvert.c +++ b/libswresample/audioconvert.c @@ -154,15 +154,19 @@ int swri_audio_convert(AudioConvert *ctx, AudioData *out, AudioData *in, int len //FIXME optimize common cases if(ctx->simd_f && !ctx->ch_map){ - int planes = out->planar ? out->ch_count : 1; off = len/16 * 16; - av_assert1(out->planar == in->planar); av_assert1(off>=0); - if(off>0) - for(ch=0; chsimd_f(out->ch+ch, in->ch+ch, off * (out->planar ? 1 :out->ch_count)); - } av_assert1(off<=len); + if(off>0){ + if(out->planar == in->planar){ + int planes = out->planar ? out->ch_count : 1; + for(ch=0; chsimd_f(out->ch+ch, in->ch+ch, off * (out->planar ? 1 :out->ch_count)); + } + }else{ + ctx->simd_f(out->ch, in->ch, off); + } + } if(off == len) return 0; }