| 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 );
|
|
|