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/float | |
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/float')
-rw-r--r-- | silk/float/find_LPC_FLP.c | 2 | ||||
-rw-r--r-- | silk/float/main_FLP.h | 3 | ||||
-rw-r--r-- | silk/float/wrappers_FLP.c | 5 |
3 files changed, 6 insertions, 4 deletions
diff --git a/silk/float/find_LPC_FLP.c b/silk/float/find_LPC_FLP.c index fcfe1c36..4d63964f 100644 --- a/silk/float/find_LPC_FLP.c +++ b/silk/float/find_LPC_FLP.c @@ -73,7 +73,7 @@ void silk_find_LPC_FLP( silk_interpolate( NLSF0_Q15, psEncC->prev_NLSFq_Q15, NLSF_Q15, k, psEncC->predictLPCOrder ); /* Convert to LPC for residual energy evaluation */ - silk_NLSF2A_FLP( a_tmp, NLSF0_Q15, psEncC->predictLPCOrder ); + silk_NLSF2A_FLP( a_tmp, NLSF0_Q15, psEncC->predictLPCOrder, psEncC->arch ); /* Calculate residual energy with LSF interpolation */ silk_LPC_analysis_filter_FLP( LPC_res, a_tmp, x, 2 * subfr_length, psEncC->predictLPCOrder ); diff --git a/silk/float/main_FLP.h b/silk/float/main_FLP.h index 8d1d2a8a..f47fc93b 100644 --- a/silk/float/main_FLP.h +++ b/silk/float/main_FLP.h @@ -256,7 +256,8 @@ void silk_A2NLSF_FLP( void silk_NLSF2A_FLP( silk_float *pAR, /* O LPC coefficients [ LPC_order ] */ const opus_int16 *NLSF_Q15, /* I NLSF vector [ LPC_order ] */ - const opus_int LPC_order /* I LPC order */ + const opus_int LPC_order, /* I LPC order */ + int arch /* I Run-time architecture */ ); /* Limit, stabilize, and quantize NLSFs */ diff --git a/silk/float/wrappers_FLP.c b/silk/float/wrappers_FLP.c index e8f43831..ad90b874 100644 --- a/silk/float/wrappers_FLP.c +++ b/silk/float/wrappers_FLP.c @@ -54,13 +54,14 @@ void silk_A2NLSF_FLP( void silk_NLSF2A_FLP( silk_float *pAR, /* O LPC coefficients [ LPC_order ] */ const opus_int16 *NLSF_Q15, /* I NLSF vector [ LPC_order ] */ - const opus_int LPC_order /* I LPC order */ + const opus_int LPC_order, /* I LPC order */ + int arch /* I Run-time architecture */ ) { opus_int i; opus_int16 a_fix_Q12[ MAX_LPC_ORDER ]; - silk_NLSF2A( a_fix_Q12, NLSF_Q15, LPC_order ); + silk_NLSF2A( a_fix_Q12, NLSF_Q15, LPC_order, arch ); for( i = 0; i < LPC_order; i++ ) { pAR[ i ] = ( silk_float )a_fix_Q12[ i ] * ( 1.0f / 4096.0f ); |