summaryrefslogtreecommitdiff
path: root/libswresample/audioconvert.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2012-05-05 18:31:04 +0200
committerMichael Niedermayer <michaelni@gmx.at>2012-05-05 18:32:34 +0200
commitfec3700dcd8c7cba7b85c5ce6f9c5f3092c1bc17 (patch)
treee16f37fd9cbcb3faf96b7d319852c601b2a901ab /libswresample/audioconvert.c
parente8dd7928c893c3d76b09a67e2acccc2630b4b32b (diff)
swr: update calling code to support mixed packed planar SIMD
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libswresample/audioconvert.c')
-rw-r--r--libswresample/audioconvert.c16
1 files changed, 10 insertions, 6 deletions
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; ch<planes; ch++){
- ctx->simd_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; ch<planes; ch++){
+ ctx->simd_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;
}