Update SILK code using the CELT range coder
[opus.git] / src_FIX / SKP_Silk_find_LPC_FIX.c
similarity index 91%
rename from src/SKP_Silk_find_LPC_FIX.c
rename to src_FIX/SKP_Silk_find_LPC_FIX.c
index d45506c..fbf2608 100644 (file)
@@ -35,7 +35,8 @@ void SKP_Silk_find_LPC_FIX(
     const SKP_int       useInterpolatedNLSFs,   /* I    Flag                                                                        */\r
     const SKP_int       LPC_order,              /* I    LPC order                                                                   */\r
     const SKP_int16     x[],                    /* I    Input signal                                                                */\r
-    const SKP_int       subfr_length            /* I    Input signal subframe length including preceeding samples                   */\r
+    const SKP_int       subfr_length,           /* I    Input signal subframe length including preceeding samples                   */\r
+    const SKP_int       nb_subfr                /* I:   Number of subframes                                                         */\r
 )\r
 {\r
     SKP_int     k;\r
@@ -51,19 +52,19 @@ void SKP_Silk_find_LPC_FIX(
     SKP_int     res_nrg_interp_Q, res_nrg_Q, res_tmp_nrg_Q, res_nrg_2nd_Q;\r
     SKP_int16   a_tmp_Q12[ MAX_LPC_ORDER ];\r
     SKP_int     NLSF0_Q15[ MAX_LPC_ORDER ];\r
-    SKP_int16   LPC_res[ ( MAX_FRAME_LENGTH + NB_SUBFR * MAX_LPC_ORDER ) / 2 ];\r
+    SKP_int16   LPC_res[ ( MAX_FRAME_LENGTH + MAX_NB_SUBFR * MAX_LPC_ORDER ) / 2 ];\r
 \r
     /* Default: no interpolation */\r
     *interpIndex = 4;\r
 \r
     /* Burg AR analysis for the full frame */\r
-    SKP_Silk_burg_modified( &res_nrg, &res_nrg_Q, a_Q16, x, subfr_length, NB_SUBFR, FIND_LPC_COND_FAC_Q32, LPC_order );\r
+    SKP_Silk_burg_modified( &res_nrg, &res_nrg_Q, a_Q16, x, subfr_length, nb_subfr, FIND_LPC_COND_FAC_Q32, LPC_order );\r
 \r
-    if( useInterpolatedNLSFs == 1 ) {\r
+    if( useInterpolatedNLSFs == 1 && nb_subfr == MAX_NB_SUBFR ) {\r
 \r
         /* Optimal solution for last 10 ms */\r
-        SKP_Silk_burg_modified( &res_tmp_nrg, &res_tmp_nrg_Q, a_tmp_Q16, x + ( NB_SUBFR >> 1 ) * subfr_length, \r
-            subfr_length, ( NB_SUBFR >> 1 ), FIND_LPC_COND_FAC_Q32, LPC_order );\r
+        SKP_Silk_burg_modified( &res_tmp_nrg, &res_tmp_nrg_Q, a_tmp_Q16, x + ( MAX_NB_SUBFR >> 1 ) * subfr_length, \r
+            subfr_length, ( MAX_NB_SUBFR >> 1 ), FIND_LPC_COND_FAC_Q32, LPC_order );\r
 \r
         /* subtract residual energy here, as that's easier than adding it to the    */\r
         /* residual energy of the first 10 ms in each iteration of the search below */\r