swr: change simd len argument to be in samples instead of dst bytes.
authorMichael Niedermayer <michaelni@gmx.at>
Sat, 5 May 2012 16:30:17 +0000 (18:30 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Sat, 5 May 2012 16:32:34 +0000 (18:32 +0200)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libswresample/audioconvert.c
libswresample/x86/audio_convert.asm

index 1cdd80f..04e33c5 100644 (file)
@@ -160,7 +160,7 @@ int swri_audio_convert(AudioConvert *ctx, AudioData *out, AudioData *in, int len
         av_assert1(off>=0);
         if(off>0)
             for(ch=0; ch<planes; ch++){
-                ctx->simd_f(out->ch+ch, in->ch+ch, off*os);
+                ctx->simd_f(out->ch+ch, in->ch+ch, off * (out->planar ? 1 :out->ch_count));
             }
         av_assert1(off<=len);
         if(off == len)
index 4973b5c..3172352 100644 (file)
@@ -33,6 +33,7 @@ SECTION .text
 cglobal int16_to_int32_%1, 3, 3, 3, dst, src, len
     mov srcq, [srcq]
     mov dstq, [dstq]
+    shl     lenq, 2
 %ifidn %1, a
     test dstq, mmsize-1
         jne int16_to_int32_u_int %+ SUFFIX
@@ -65,6 +66,7 @@ int16_to_int32_u_int %+ SUFFIX
 cglobal int32_to_float_%1, 3, 3, 3, dst, src, len
     mov srcq, [srcq]
     mov dstq, [dstq]
+    shl     lenq, 2
 %ifidn %1, a
     test dstq, mmsize-1
         jne int32_to_float_u_int %+ SUFFIX
@@ -100,6 +102,7 @@ int32_to_float_u_int %+ SUFFIX
 cglobal int16_to_float_%1, 3, 3, 4, dst, src, len
     mov srcq, [srcq]
     mov dstq, [dstq]
+    shl     lenq, 2
 %ifidn %1, a
     test dstq, mmsize-1
         jne int16_to_float_u_int %+ SUFFIX
@@ -134,6 +137,7 @@ int16_to_float_u_int %+ SUFFIX
 cglobal float_to_int32_%1, 3, 3, 5, dst, src, len
     mov srcq, [srcq]
     mov dstq, [dstq]
+    shl     lenq, 2
 %ifidn %1, a
     test dstq, mmsize-1
         jne float_to_int32_u_int %+ SUFFIX
@@ -168,6 +172,7 @@ float_to_int32_u_int %+ SUFFIX
 cglobal float_to_int16_%1, 3, 3, 3, dst, src, len
     mov srcq, [srcq]
     mov dstq, [dstq]
+    add lenq    , lenq
 %ifidn %1, a
     test dstq, mmsize-1
         jne float_to_int16_u_int %+ SUFFIX
@@ -198,6 +203,7 @@ float_to_int16_u_int %+ SUFFIX
 cglobal int32_to_int16_%1, 3, 3, 2, dst, src, len
     mov srcq, [srcq]
     mov dstq, [dstq]
+    add lenq    , lenq
 %ifidn %1, a
     test dstq, mmsize-1
         jne int32_to_int16_u_int %+ SUFFIX