diff options
author | Linfeng Zhang <linfengz@google.com> | 2016-07-13 17:25:49 -0700 |
---|---|---|
committer | Jean-Marc Valin <jmvalin@jmvalin.ca> | 2017-02-14 23:57:15 -0500 |
commit | 95d4c9f960c9469961781c923ccfdb8c3eba0562 (patch) | |
tree | 293fb4a4794c6dc74d7ed7381a543e88f741a8c9 /silk/NLSF2A.c | |
parent | 68688651a4c3ed1fc4345c1bfb3932658e51f0b4 (diff) | |
download | opus-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.c | 5 |
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 ) ); |