summaryrefslogtreecommitdiff
path: root/silk/NLSF2A.c
diff options
context:
space:
mode:
authorLinfeng Zhang <linfengz@google.com>2016-07-13 17:25:49 -0700
committerJean-Marc Valin <jmvalin@jmvalin.ca>2017-02-14 23:57:15 -0500
commit95d4c9f960c9469961781c923ccfdb8c3eba0562 (patch)
tree293fb4a4794c6dc74d7ed7381a543e88f741a8c9 /silk/NLSF2A.c
parent68688651a4c3ed1fc4345c1bfb3932658e51f0b4 (diff)
downloadopus-95d4c9f960c9469961781c923ccfdb8c3eba0562.tar.gz
Optimize silk_LPC_inverse_pred_gain() for ARM NEON
The optimization is bit exact with C function. Change-Id: Ib3bdc26a5a4ebe02e7f24be85104e8e9a2a9a738 Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
Diffstat (limited to 'silk/NLSF2A.c')
-rw-r--r--silk/NLSF2A.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/silk/NLSF2A.c b/silk/NLSF2A.c
index 0ea5c17e..116b465b 100644
--- a/silk/NLSF2A.c
+++ b/silk/NLSF2A.c
@@ -66,7 +66,8 @@ static OPUS_INLINE void silk_NLSF2A_find_poly(
void silk_NLSF2A(
opus_int16 *a_Q12, /* O monic whitening filter coefficients in Q12, [ d ] */
const opus_int16 *NLSF, /* I normalized line spectral frequencies in Q15, [ d ] */
- const opus_int d /* I filter order (should be even) */
+ const opus_int d, /* I filter order (should be even) */
+ int arch /* I Run-time architecture */
)
{
/* This ordering was found to maximize quality. It improves numerical accuracy of
@@ -128,7 +129,7 @@ void silk_NLSF2A(
/* Convert int32 coefficients to Q12 int16 coefs */
silk_LPC_fit( a_Q12, a32_QA1, 12, QA + 1, d );
- for( i = 0; silk_LPC_inverse_pred_gain( a_Q12, d ) == 0 && i < MAX_LPC_STABILIZE_ITERATIONS; i++ ) {
+ for( i = 0; silk_LPC_inverse_pred_gain( a_Q12, d, arch ) == 0 && i < MAX_LPC_STABILIZE_ITERATIONS; i++ ) {
/* Prediction coefficients are (too close to) unstable; apply bandwidth expansion */
/* on the unscaled coefficients, convert to Q12 and measure again */
silk_bwexpander_32( a32_QA1, d, 65536 - silk_LSHIFT( 2, i ) );