audiodsp: reorder arguments for vector_clipf
authorAnton Khirnov <anton@khirnov.net>
Sun, 4 Sep 2016 12:45:48 +0000 (14:45 +0200)
committerAnton Khirnov <anton@khirnov.net>
Thu, 22 Sep 2016 07:47:52 +0000 (09:47 +0200)
This will make the x86 asm simpler.

ARM conversion by Martin Storsj√∂ <martin@martin.st> and Janne Grunau
<janne-libav@jannau.net>

libavcodec/ac3enc_float.c
libavcodec/arm/audiodsp_init_neon.c
libavcodec/arm/audiodsp_neon.S
libavcodec/audiodsp.c
libavcodec/audiodsp.h
libavcodec/cook.c
libavcodec/x86/audiodsp.h
libavcodec/x86/audiodsp_mmx.c
tests/checkasm/audiodsp.c

index 822f431..968cb2c 100644 (file)
@@ -111,7 +111,7 @@ static void scale_coefficients(AC3EncodeContext *s)
 static void clip_coefficients(AudioDSPContext *adsp, float *coef,
                               unsigned int len)
 {
-    adsp->vector_clipf(coef, coef, COEF_MIN, COEF_MAX, len);
+    adsp->vector_clipf(coef, coef, len, COEF_MIN, COEF_MAX);
 }
 
 
index af53272..08405cb 100644 (file)
@@ -25,8 +25,7 @@
 #include "libavcodec/audiodsp.h"
 #include "audiodsp_arm.h"
 
-void ff_vector_clipf_neon(float *dst, const float *src, float min, float max,
-                          int len);
+void ff_vector_clipf_neon(float *dst, const float *src, int len, float min, float max);
 void ff_vector_clip_int32_neon(int32_t *dst, const int32_t *src, int32_t min,
                                int32_t max, unsigned int len);
 
index dfb998d..5871b82 100644 (file)
@@ -24,9 +24,8 @@
 function ff_vector_clipf_neon, export=1
 VFP     vdup.32         q1,  d0[1]
 VFP     vdup.32         q0,  d0[0]
-NOVFP   vdup.32         q0,  r2
-NOVFP   vdup.32         q1,  r3
-NOVFP   ldr             r2,  [sp]
+NOVFP   vdup.32         q0,  r3
+NOVFP   vld1.32         {d2[],d3[]}, [sp]
         vld1.f32        {q2},[r1,:128]!
         vmin.f32        q10, q2,  q1
         vld1.f32        {q3},[r1,:128]!
index f7e6167..776cd11 100644 (file)
@@ -55,8 +55,8 @@ static void vector_clipf_c_opposite_sign(float *dst, const float *src,
     }
 }
 
-static void vector_clipf_c(float *dst, const float *src,
-                           float min, float max, int len)
+static void vector_clipf_c(float *dst, const float *src, int len,
+                           float min, float max)
 {
     int i;
 
index e48cdb0..2b4f9d4 100644 (file)
@@ -48,7 +48,8 @@ typedef struct AudioDSPContext {
     /* assume len is a multiple of 16, and arrays are 16-byte aligned */
     void (*vector_clipf)(float *dst /* align 16 */,
                          const float *src /* align 16 */,
-                         float min, float max, int len /* align 16 */);
+                         int len /* align 16 */,
+                         float min, float max);
 } AudioDSPContext;
 
 void ff_audiodsp_init(AudioDSPContext *c);
index 016b1d0..c990333 100644 (file)
@@ -867,7 +867,7 @@ static inline void decode_bytes_and_gain(COOKContext *q, COOKSubpacket *p,
 static void saturate_output_float(COOKContext *q, float *out)
 {
     q->adsp.vector_clipf(out, q->mono_mdct_output + q->samples_per_channel,
-                         -1.0f, 1.0f, FFALIGN(q->samples_per_channel, 8));
+                         FFALIGN(q->samples_per_channel, 8), -1.0f, 1.0f);
 }
 
 
index 321056b..c87ee45 100644 (file)
@@ -20,6 +20,6 @@
 #define AVCODEC_X86_AUDIODSP_H
 
 void ff_vector_clipf_sse(float *dst, const float *src,
-                         float min, float max, int len);
+                         int len, float min, float max);
 
 #endif /* AVCODEC_X86_AUDIODSP_H */
index cb55059..04cbb90 100644 (file)
@@ -23,7 +23,7 @@
 #if HAVE_INLINE_ASM
 
 void ff_vector_clipf_sse(float *dst, const float *src,
-                         float min, float max, int len)
+                         int len, float min, float max)
 {
     x86_reg i = (len - 16) * 4;
     __asm__ volatile (
index 456b90b..40fa384 100644 (file)
@@ -120,7 +120,7 @@ void checkasm_check_audiodsp(void)
         int i, len;
 
         declare_func_emms(AV_CPU_FLAG_MMX, void, float *dst, const float *src,
-                          float min, float max, unsigned int len);
+                          int len, float min, float max);
 
         val1 = (float)rnd() / (UINT_MAX >> 1) - 1.0f;
         val2 = (float)rnd() / (UINT_MAX >> 1) - 1.0f;
@@ -133,13 +133,13 @@ void checkasm_check_audiodsp(void)
         len = rnd() % 128;
         len = 16 * FFMAX(len, 1);
 
-        call_ref(dst0, src, min, max, len);
-        call_new(dst1, src, min, max, len);
+        call_ref(dst0, src, len, min, max);
+        call_new(dst1, src, len, min, max);
         for (i = 0; i < len; i++) {
             if (!float_near_ulp_array(dst0, dst1, 3, len))
                 fail();
         }
-        bench_new(dst1, src, min, max, MAX_SIZE);
+        bench_new(dst1, src, MAX_SIZE, min, max);
     }
 
     report("audiodsp");