Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.xiph.org/xiph/opus.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/silk/arm
diff options
context:
space:
mode:
authorLinfeng Zhang <linfengz@google.com>2016-07-14 02:40:48 +0300
committerJean-Marc Valin <jmvalin@jmvalin.ca>2017-04-14 01:30:27 +0300
commit8e19536baa5064a89abe93570fcc99412b6c68a1 (patch)
tree95eb80319a5cc30193dfe78726ca070f4365a7c8 /silk/arm
parentc43633d1a9d3747f96fc30a32f6fdaa322195aed (diff)
Optimize silk_warped_autocorrelation_FIX() for ARM NEON
The optimization is bit exact with C function. This optimization speeds up fixed-point SILK encoder on NEON about 5% to 8%. (Tested on Acer Chromebook, ARMv7 Processor rev 3 (v7l).) Change-Id: I582f6f3585b7946149e16a2ad3084ebc0ae79a4f Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
Diffstat (limited to 'silk/arm')
-rw-r--r--silk/arm/arm_silk_map.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/silk/arm/arm_silk_map.c b/silk/arm/arm_silk_map.c
index 0966cfde..7ac9ad38 100644
--- a/silk/arm/arm_silk_map.c
+++ b/silk/arm/arm_silk_map.c
@@ -87,4 +87,23 @@ opus_int32
# endif
+# if defined(FIXED_POINT) && \
+ defined(OPUS_ARM_MAY_HAVE_NEON_INTR) && !defined(OPUS_ARM_PRESUME_NEON_INTR)
+
+void (*const SILK_WARPED_AUTOCORRELATION_FIX_IMPL[OPUS_ARCHMASK + 1])(
+ opus_int32 *corr, /* O Result [order + 1] */
+ opus_int *scale, /* O Scaling of the correlation vector */
+ const opus_int16 *input, /* I Input data to correlate */
+ const opus_int warping_Q16, /* I Warping coefficient */
+ const opus_int length, /* I Length of input */
+ const opus_int order /* I Correlation order (even) */
+) = {
+ silk_warped_autocorrelation_FIX_c, /* ARMv4 */
+ silk_warped_autocorrelation_FIX_c, /* EDSP */
+ silk_warped_autocorrelation_FIX_c, /* Media */
+ MAY_HAVE_NEON(silk_warped_autocorrelation_FIX), /* Neon */
+};
+
+# endif
+
#endif /* OPUS_HAVE_RTCD */