summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2016-09-04 14:45:48 +0200
committerAnton Khirnov <anton@khirnov.net>2016-09-22 09:47:52 +0200
commit683da86aabb4fbeddc3ead5fce737c63c0ee762c (patch)
tree40ca837d60567573ebf825e51806d5820b18c292
parentbf58545aace7d14522ce4fa680c7b3ff62109a3a (diff)
audiodsp: reorder arguments for vector_clipf
This will make the x86 asm simpler. ARM conversion by Martin Storsjö <martin@martin.st> and Janne Grunau <janne-libav@jannau.net>
-rw-r--r--libavcodec/ac3enc_float.c2
-rw-r--r--libavcodec/arm/audiodsp_init_neon.c3
-rw-r--r--libavcodec/arm/audiodsp_neon.S5
-rw-r--r--libavcodec/audiodsp.c4
-rw-r--r--libavcodec/audiodsp.h3
-rw-r--r--libavcodec/cook.c2
-rw-r--r--libavcodec/x86/audiodsp.h2
-rw-r--r--libavcodec/x86/audiodsp_mmx.c2
-rw-r--r--tests/checkasm/audiodsp.c8
9 files changed, 15 insertions, 16 deletions
diff --git a/libavcodec/ac3enc_float.c b/libavcodec/ac3enc_float.c
index 822f431b44..968cb2c533 100644
--- a/libavcodec/ac3enc_float.c
+++ b/libavcodec/ac3enc_float.c
@@ -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);
}
diff --git a/libavcodec/arm/audiodsp_init_neon.c b/libavcodec/arm/audiodsp_init_neon.c
index af532724c8..08405cb829 100644
--- a/libavcodec/arm/audiodsp_init_neon.c
+++ b/libavcodec/arm/audiodsp_init_neon.c
@@ -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);
diff --git a/libavcodec/arm/audiodsp_neon.S b/libavcodec/arm/audiodsp_neon.S
index dfb998de32..5871b82c2c 100644
--- a/libavcodec/arm/audiodsp_neon.S
+++ b/libavcodec/arm/audiodsp_neon.S
@@ -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]!
diff --git a/libavcodec/audiodsp.c b/libavcodec/audiodsp.c
index f7e6167cb0..776cd11ce1 100644
--- a/libavcodec/audiodsp.c
+++ b/libavcodec/audiodsp.c
@@ -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;
diff --git a/libavcodec/audiodsp.h b/libavcodec/audiodsp.h
index e48cdb092e..2b4f9d44e2 100644
--- a/libavcodec/audiodsp.h
+++ b/libavcodec/audiodsp.h
@@ -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);
diff --git a/libavcodec/cook.c b/libavcodec/cook.c
index 016b1d01bb..c990333a7c 100644
--- a/libavcodec/cook.c
+++ b/libavcodec/cook.c
@@ -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);
}
diff --git a/libavcodec/x86/audiodsp.h b/libavcodec/x86/audiodsp.h
index 321056b8b7..c87ee45193 100644
--- a/libavcodec/x86/audiodsp.h
+++ b/libavcodec/x86/audiodsp.h
@@ -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 */
diff --git a/libavcodec/x86/audiodsp_mmx.c b/libavcodec/x86/audiodsp_mmx.c
index cb550598f9..04cbb90706 100644
--- a/libavcodec/x86/audiodsp_mmx.c
+++ b/libavcodec/x86/audiodsp_mmx.c
@@ -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 (
diff --git a/tests/checkasm/audiodsp.c b/tests/checkasm/audiodsp.c
index 456b90bfec..40fa3844e8 100644
--- a/tests/checkasm/audiodsp.c
+++ b/tests/checkasm/audiodsp.c
@@ -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");