summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorViswanath Puttagunta <viswanath.puttagunta@linaro.org>2015-05-15 12:42:26 -0500
committerJean-Marc Valin <jmvalin@jmvalin.ca>2015-10-07 18:09:20 -0400
commitbae854501fa55ce2cdc1dd8f81e5e9c19c6ed2ff (patch)
tree29ccdb6f96aeed0ac42f5cc88bad51ddfbdeb19e
parentba8713ccb5fd1ee893630d2d1bcd86aacfc3aeea (diff)
downloadopus-bae854501fa55ce2cdc1dd8f81e5e9c19c6ed2ff.tar.gz
armv7: Enable NE10's fixed-point FFT for the MDCT
Extends usage of NEON optimized fixed-point FFT optimizations in libNE10 to clt_mdct_forward and clt_mdct_backward. Signed-off-by: Timothy B. Terriberry <tterribe@xiph.org>
-rw-r--r--celt/arm/arm_celt_map.c6
-rw-r--r--celt/arm/celt_ne10_mdct.c23
-rw-r--r--celt/arm/mdct_arm.h24
-rw-r--r--celt/mdct.h6
4 files changed, 27 insertions, 32 deletions
diff --git a/celt/arm/arm_celt_map.c b/celt/arm/arm_celt_map.c
index b5bd44dc..ee6c2447 100644
--- a/celt/arm/arm_celt_map.c
+++ b/celt/arm/arm_celt_map.c
@@ -91,7 +91,6 @@ void (*const OPUS_IFFT[OPUS_ARCHMASK+1])(const kiss_fft_state *cfg,
opus_ifft_neon /* Neon with NE10 */
};
-# if !defined(FIXED_POINT)
void (*const CLT_MDCT_FORWARD_IMPL[OPUS_ARCHMASK+1])(const mdct_lookup *l,
kiss_fft_scalar *in,
kiss_fft_scalar * OPUS_RESTRICT out,
@@ -101,7 +100,7 @@ void (*const CLT_MDCT_FORWARD_IMPL[OPUS_ARCHMASK+1])(const mdct_lookup *l,
clt_mdct_forward_c, /* ARMv4 */
clt_mdct_forward_c, /* EDSP */
clt_mdct_forward_c, /* Media */
- clt_mdct_forward_float_neon /* Neon with NE10 */
+ clt_mdct_forward_neon /* Neon with NE10 */
};
void (*const CLT_MDCT_BACKWARD_IMPL[OPUS_ARCHMASK+1])(const mdct_lookup *l,
@@ -113,10 +112,9 @@ void (*const CLT_MDCT_BACKWARD_IMPL[OPUS_ARCHMASK+1])(const mdct_lookup *l,
clt_mdct_backward_c, /* ARMv4 */
clt_mdct_backward_c, /* EDSP */
clt_mdct_backward_c, /* Media */
- clt_mdct_backward_float_neon /* Neon with NE10 */
+ clt_mdct_backward_neon /* Neon with NE10 */
};
-# endif /* !FIXED_POINT */
# endif /* HAVE_ARM_NE10 */
# endif /* OPUS_ARM_MAY_HAVE_NEON_INTR */
diff --git a/celt/arm/celt_ne10_mdct.c b/celt/arm/celt_ne10_mdct.c
index a68264e2..293c3efd 100644
--- a/celt/arm/celt_ne10_mdct.c
+++ b/celt/arm/celt_ne10_mdct.c
@@ -41,13 +41,11 @@
#include "mdct.h"
#include "stack_alloc.h"
-#if !defined(FIXED_POINT)
-
-void clt_mdct_forward_float_neon(const mdct_lookup *l,
- kiss_fft_scalar *in,
- kiss_fft_scalar * OPUS_RESTRICT out,
- const opus_val16 *window,
- int overlap, int shift, int stride, int arch)
+void clt_mdct_forward_neon(const mdct_lookup *l,
+ kiss_fft_scalar *in,
+ kiss_fft_scalar * OPUS_RESTRICT out,
+ const opus_val16 *window,
+ int overlap, int shift, int stride, int arch)
{
int i;
int N, N2, N4;
@@ -157,11 +155,11 @@ void clt_mdct_forward_float_neon(const mdct_lookup *l,
RESTORE_STACK;
}
-void clt_mdct_backward_float_neon(const mdct_lookup *l,
- kiss_fft_scalar *in,
- kiss_fft_scalar * OPUS_RESTRICT out,
- const opus_val16 * OPUS_RESTRICT window,
- int overlap, int shift, int stride, int arch)
+void clt_mdct_backward_neon(const mdct_lookup *l,
+ kiss_fft_scalar *in,
+ kiss_fft_scalar * OPUS_RESTRICT out,
+ const opus_val16 * OPUS_RESTRICT window,
+ int overlap, int shift, int stride, int arch)
{
int i;
int N, N2, N4;
@@ -258,4 +256,3 @@ void clt_mdct_backward_float_neon(const mdct_lookup *l,
}
RESTORE_STACK;
}
-#endif /* !defined(FIXED_POINT) */
diff --git a/celt/arm/mdct_arm.h b/celt/arm/mdct_arm.h
index db32efe5..49cbb445 100644
--- a/celt/arm/mdct_arm.h
+++ b/celt/arm/mdct_arm.h
@@ -36,25 +36,25 @@
#include "config.h"
#include "mdct.h"
-#if !defined(FIXED_POINT) && defined(HAVE_ARM_NE10)
+#if defined(HAVE_ARM_NE10)
/** Compute a forward MDCT and scale by 4/N, trashes the input array */
-void clt_mdct_forward_float_neon(const mdct_lookup *l, kiss_fft_scalar *in,
- kiss_fft_scalar * OPUS_RESTRICT out,
- const opus_val16 *window, int overlap,
- int shift, int stride, int arch);
+void clt_mdct_forward_neon(const mdct_lookup *l, kiss_fft_scalar *in,
+ kiss_fft_scalar * OPUS_RESTRICT out,
+ const opus_val16 *window, int overlap,
+ int shift, int stride, int arch);
-void clt_mdct_backward_float_neon(const mdct_lookup *l, kiss_fft_scalar *in,
- kiss_fft_scalar * OPUS_RESTRICT out,
- const opus_val16 *window, int overlap,
- int shift, int stride, int arch);
+void clt_mdct_backward_neon(const mdct_lookup *l, kiss_fft_scalar *in,
+ kiss_fft_scalar * OPUS_RESTRICT out,
+ const opus_val16 *window, int overlap,
+ int shift, int stride, int arch);
#if !defined(OPUS_HAVE_RTCD)
#define OVERRIDE_OPUS_MDCT (1)
#define clt_mdct_forward(_l, _in, _out, _window, _int, _shift, _stride, _arch) \
- clt_mdct_forward_float_neon(_l, _in, _out, _window, _int, _shift, _stride, _arch)
+ clt_mdct_forward_neon(_l, _in, _out, _window, _int, _shift, _stride, _arch)
#define clt_mdct_backward(_l, _in, _out, _window, _int, _shift, _stride, _arch) \
- clt_mdct_backward_float_neon(_l, _in, _out, _window, _int, _shift, _stride, _arch)
+ clt_mdct_backward_neon(_l, _in, _out, _window, _int, _shift, _stride, _arch)
#endif /* OPUS_HAVE_RTCD */
-#endif /* !defined(FIXED_POINT) && defined(HAVE_ARM_NE10) */
+#endif /* HAVE_ARM_NE10 */
#endif
diff --git a/celt/mdct.h b/celt/mdct.h
index 2400de1a..160ae4e0 100644
--- a/celt/mdct.h
+++ b/celt/mdct.h
@@ -53,7 +53,7 @@ typedef struct {
const kiss_twiddle_scalar * OPUS_RESTRICT trig;
} mdct_lookup;
-#if !defined(FIXED_POINT) && defined(HAVE_ARM_NE10)
+#if defined(HAVE_ARM_NE10)
#include "arm/mdct_arm.h"
#endif
@@ -76,7 +76,7 @@ void clt_mdct_backward_c(const mdct_lookup *l, kiss_fft_scalar *in,
#if !defined(OVERRIDE_OPUS_MDCT)
/* Is run-time CPU detection enabled on this platform? */
-#if defined(OPUS_HAVE_RTCD) && defined(HAVE_ARM_NE10) && !defined(FIXED_POINT)
+#if defined(OPUS_HAVE_RTCD) && defined(HAVE_ARM_NE10)
extern void (*const CLT_MDCT_FORWARD_IMPL[OPUS_ARCHMASK+1])(
const mdct_lookup *l, kiss_fft_scalar *in,
@@ -98,7 +98,7 @@ extern void (*const CLT_MDCT_BACKWARD_IMPL[OPUS_ARCHMASK+1])(
_window, _overlap, _shift, \
_stride, _arch)
-#else /* if defined(OPUS_HAVE_RTCD) && defined(HAVE_ARM_NE10) && !defined(FIXED_POINT) */
+#else /* if defined(OPUS_HAVE_RTCD) && defined(HAVE_ARM_NE10) */
#define clt_mdct_forward(_l, _in, _out, _window, _overlap, _shift, _stride, _arch) \
clt_mdct_forward_c(_l, _in, _out, _window, _overlap, _shift, _stride, _arch)