Index: third_party/opus/src/silk/fixed/find_pred_coefs_FIX.c |
diff --git a/third_party/opus/src/silk/fixed/find_pred_coefs_FIX.c b/third_party/opus/src/silk/fixed/find_pred_coefs_FIX.c |
index d308e9cf5fe609e17b06b4d1339193134cccf3f8..24c6aab3a77c95e1c90466e3cfb131e52b81e104 100644 |
--- a/third_party/opus/src/silk/fixed/find_pred_coefs_FIX.c |
+++ b/third_party/opus/src/silk/fixed/find_pred_coefs_FIX.c |
@@ -41,13 +41,12 @@ void silk_find_pred_coefs_FIX( |
) |
{ |
opus_int i; |
- opus_int32 invGains_Q16[ MAX_NB_SUBFR ], local_gains[ MAX_NB_SUBFR ], Wght_Q15[ MAX_NB_SUBFR ]; |
+ opus_int32 invGains_Q16[ MAX_NB_SUBFR ], local_gains[ MAX_NB_SUBFR ]; |
opus_int16 NLSF_Q15[ MAX_LPC_ORDER ]; |
const opus_int16 *x_ptr; |
opus_int16 *x_pre_ptr; |
VARDECL( opus_int16, LPC_in_pre ); |
- opus_int32 tmp, min_gain_Q16, minInvGain_Q30; |
- opus_int LTP_corrs_rshift[ MAX_NB_SUBFR ]; |
+ opus_int32 min_gain_Q16, minInvGain_Q30; |
SAVE_STACK; |
/* weighting for weighted least squares */ |
@@ -61,13 +60,11 @@ void silk_find_pred_coefs_FIX( |
/* Invert and normalize gains, and ensure that maximum invGains_Q16 is within range of a 16 bit int */ |
invGains_Q16[ i ] = silk_DIV32_varQ( min_gain_Q16, psEncCtrl->Gains_Q16[ i ], 16 - 2 ); |
- /* Ensure Wght_Q15 a minimum value 1 */ |
- invGains_Q16[ i ] = silk_max( invGains_Q16[ i ], 363 ); |
+ /* Limit inverse */ |
+ invGains_Q16[ i ] = silk_max( invGains_Q16[ i ], 100 ); |
/* Square the inverted gains */ |
silk_assert( invGains_Q16[ i ] == silk_SAT16( invGains_Q16[ i ] ) ); |
- tmp = silk_SMULWB( invGains_Q16[ i ], invGains_Q16[ i ] ); |
- Wght_Q15[ i ] = silk_RSHIFT( tmp, 1 ); |
/* Invert the inverted and normalized gains */ |
local_gains[ i ] = silk_DIV32( ( (opus_int32)1 << 16 ), invGains_Q16[ i ] ); |
@@ -77,24 +74,24 @@ void silk_find_pred_coefs_FIX( |
psEnc->sCmn.nb_subfr * psEnc->sCmn.predictLPCOrder |
+ psEnc->sCmn.frame_length, opus_int16 ); |
if( psEnc->sCmn.indices.signalType == TYPE_VOICED ) { |
- VARDECL( opus_int32, WLTP ); |
+ VARDECL( opus_int32, xXLTP_Q17 ); |
+ VARDECL( opus_int32, XXLTP_Q17 ); |
/**********/ |
/* VOICED */ |
/**********/ |
silk_assert( psEnc->sCmn.ltp_mem_length - psEnc->sCmn.predictLPCOrder >= psEncCtrl->pitchL[ 0 ] + LTP_ORDER / 2 ); |
- ALLOC( WLTP, psEnc->sCmn.nb_subfr * LTP_ORDER * LTP_ORDER, opus_int32 ); |
+ ALLOC( xXLTP_Q17, psEnc->sCmn.nb_subfr * LTP_ORDER, opus_int32 ); |
+ ALLOC( XXLTP_Q17, psEnc->sCmn.nb_subfr * LTP_ORDER * LTP_ORDER, opus_int32 ); |
/* LTP analysis */ |
- silk_find_LTP_FIX( psEncCtrl->LTPCoef_Q14, WLTP, &psEncCtrl->LTPredCodGain_Q7, |
- res_pitch, psEncCtrl->pitchL, Wght_Q15, psEnc->sCmn.subfr_length, |
- psEnc->sCmn.nb_subfr, psEnc->sCmn.ltp_mem_length, LTP_corrs_rshift, psEnc->sCmn.arch ); |
+ silk_find_LTP_FIX( XXLTP_Q17, xXLTP_Q17, res_pitch, |
+ psEncCtrl->pitchL, psEnc->sCmn.subfr_length, psEnc->sCmn.nb_subfr, psEnc->sCmn.arch ); |
/* Quantize LTP gain parameters */ |
silk_quant_LTP_gains( psEncCtrl->LTPCoef_Q14, psEnc->sCmn.indices.LTPIndex, &psEnc->sCmn.indices.PERIndex, |
- &psEnc->sCmn.sum_log_gain_Q7, WLTP, psEnc->sCmn.mu_LTP_Q9, psEnc->sCmn.LTPQuantLowComplexity, psEnc->sCmn.nb_subfr, |
- psEnc->sCmn.arch); |
+ &psEnc->sCmn.sum_log_gain_Q7, &psEncCtrl->LTPredCodGain_Q7, XXLTP_Q17, xXLTP_Q17, psEnc->sCmn.subfr_length, psEnc->sCmn.nb_subfr, psEnc->sCmn.arch ); |
/* Control LTP scaling */ |
silk_LTP_scale_ctrl_FIX( psEnc, psEncCtrl, condCoding ); |