| Index: silk/fixed/find_LPC_FIX.c
|
| diff --git a/silk/fixed/find_LPC_FIX.c b/silk/fixed/find_LPC_FIX.c
|
| index 0ed7e846174086cad8fdc1a269cc720be85bbeed..70cefb6be8bdda0f968b4c55eb00c2e86a441b2e 100644
|
| --- a/silk/fixed/find_LPC_FIX.c
|
| +++ b/silk/fixed/find_LPC_FIX.c
|
| @@ -8,11 +8,11 @@ this list of conditions and the following disclaimer.
|
| - Redistributions in binary form must reproduce the above copyright
|
| notice, this list of conditions and the following disclaimer in the
|
| documentation and/or other materials provided with the distribution.
|
| -- Neither the name of Internet Society, IETF or IETF Trust, nor the
|
| +- Neither the name of Internet Society, IETF or IETF Trust, nor the
|
| names of specific contributors, may be used to endorse or promote
|
| products derived from this software without specific prior written
|
| permission.
|
| -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS”
|
| +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
| AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
| IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
| ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
| @@ -30,6 +30,7 @@ POSSIBILITY OF SUCH DAMAGE.
|
| #endif
|
|
|
| #include "main_FIX.h"
|
| +#include "stack_alloc.h"
|
| #include "tuning_parameters.h"
|
|
|
| /* Finds LPC vector from correlations, and converts to NLSF */
|
| @@ -51,7 +52,7 @@ void silk_find_LPC_FIX(
|
| opus_int res_nrg_interp_Q, res_nrg_Q, res_tmp_nrg_Q;
|
| opus_int16 a_tmp_Q12[ MAX_LPC_ORDER ];
|
| opus_int16 NLSF0_Q15[ MAX_LPC_ORDER ];
|
| - opus_int16 LPC_res[ MAX_FRAME_LENGTH + MAX_NB_SUBFR * MAX_LPC_ORDER ];
|
| + SAVE_STACK;
|
|
|
| subfr_length = psEncC->subfr_length + psEncC->predictLPCOrder;
|
|
|
| @@ -62,6 +63,8 @@ void silk_find_LPC_FIX(
|
| silk_burg_modified( &res_nrg, &res_nrg_Q, a_Q16, x, minInvGain_Q30, subfr_length, psEncC->nb_subfr, psEncC->predictLPCOrder );
|
|
|
| if( psEncC->useInterpolatedNLSFs && !psEncC->first_frame_after_reset && psEncC->nb_subfr == MAX_NB_SUBFR ) {
|
| + VARDECL( opus_int16, LPC_res );
|
| +
|
| /* Optimal solution for last 10 ms */
|
| silk_burg_modified( &res_tmp_nrg, &res_tmp_nrg_Q, a_tmp_Q16, x + 2 * subfr_length, minInvGain_Q30, subfr_length, 2, psEncC->predictLPCOrder );
|
|
|
| @@ -81,6 +84,8 @@ void silk_find_LPC_FIX(
|
| /* Convert to NLSFs */
|
| silk_A2NLSF( NLSF_Q15, a_tmp_Q16, psEncC->predictLPCOrder );
|
|
|
| + ALLOC( LPC_res, 2 * subfr_length, opus_int16 );
|
| +
|
| /* Search over interpolation indices to find the one with lowest residual energy */
|
| for( k = 3; k >= 0; k-- ) {
|
| /* Interpolate NLSFs for first half */
|
| @@ -142,4 +147,5 @@ void silk_find_LPC_FIX(
|
| }
|
|
|
| silk_assert( psEncC->indices.NLSFInterpCoef_Q2 == 4 || ( psEncC->useInterpolatedNLSFs && !psEncC->first_frame_after_reset && psEncC->nb_subfr == MAX_NB_SUBFR ) );
|
| + RESTORE_STACK;
|
| }
|
|
|