Update SILK code using the CELT range coder
[opus.git] / src_FIX / SKP_Silk_LTP_analysis_filter_FIX.c
similarity index 66%
rename from src/SKP_Silk_LTP_analysis_filter_FIX.c
rename to src_FIX/SKP_Silk_LTP_analysis_filter_FIX.c
index af851c7..1d90a97 100644 (file)
@@ -28,14 +28,14 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #include "SKP_Silk_main_FIX.h"\r
 \r
 void SKP_Silk_LTP_analysis_filter_FIX(\r
-    SKP_int16       *LTP_res,                           /* O:   LTP residual signal of length NB_SUBFR * ( pre_length + subfr_length )  */\r
-    const SKP_int16 *x,                                 /* I:   Pointer to input signal with at least max( pitchL ) preceeding samples  */\r
-    const SKP_int16 LTPCoef_Q14[ LTP_ORDER * NB_SUBFR ],/* I:   LTP_ORDER LTP coefficients for each NB_SUBFR subframe                   */\r
-    const SKP_int   pitchL[ NB_SUBFR ],                 /* I:   Pitch lag, one for each subframe                                        */\r
-    const SKP_int32 invGains_Qxx[ NB_SUBFR ],           /* I:   Inverse quantization gains, one for each subframe                       */\r
-    const SKP_int   Qxx,                                /* I:   Inverse quantization gains Q domain                                     */\r
-    const SKP_int   subfr_length,                       /* I:   Length of each subframe                                                 */\r
-    const SKP_int   pre_length                          /* I:   Length of the preceeding samples starting at &x[0] for each subframe    */\r
+    SKP_int16       *LTP_res,                               /* O:   LTP residual signal of length MAX_NB_SUBFR * ( pre_length + subfr_length )  */\r
+    const SKP_int16 *x,                                     /* I:   Pointer to input signal with at least max( pitchL ) preceeding samples      */\r
+    const SKP_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ],/* I:   LTP_ORDER LTP coefficients for each MAX_NB_SUBFR subframe                   */\r
+    const SKP_int   pitchL[ MAX_NB_SUBFR ],                 /* I:   Pitch lag, one for each subframe                                            */\r
+    const SKP_int32 invGains_Q16[ MAX_NB_SUBFR ],           /* I:   Inverse quantization gains, one for each subframe                           */\r
+    const SKP_int   subfr_length,                           /* I:   Length of each subframe                                                     */\r
+    const SKP_int   nb_subfr,                               /* I:   Number of subframes                                                         */\r
+    const SKP_int   pre_length                              /* I:   Length of the preceeding samples starting at &x[0] for each subframe        */\r
 )\r
 {\r
     const SKP_int16 *x_ptr, *x_lag_ptr;\r
@@ -46,7 +46,7 @@ void SKP_Silk_LTP_analysis_filter_FIX(
 \r
     x_ptr = x;\r
     LTP_res_ptr = LTP_res;\r
-    for( k = 0; k < NB_SUBFR; k++ ) {\r
+    for( k = 0; k < nb_subfr; k++ ) {\r
 \r
         x_lag_ptr = x_ptr - pitchL[ k ];\r
         for( i = 0; i < LTP_ORDER; i++ ) {\r
@@ -61,18 +61,14 @@ void SKP_Silk_LTP_analysis_filter_FIX(
             LTP_est = SKP_SMULBB( x_lag_ptr[ LTP_ORDER / 2 ], Btmp_Q14[ 0 ] );\r
             for( j = 1; j < LTP_ORDER; j++ ) {\r
                 LTP_est = SKP_SMLABB_ovflw( LTP_est, x_lag_ptr[ LTP_ORDER / 2 - j ], Btmp_Q14[ j ] );\r
-            }\r
+                       }\r
             LTP_est = SKP_RSHIFT_ROUND( LTP_est, 14 ); // round and -> Q0\r
 \r
             /* Subtract long-term prediction */\r
             LTP_res_ptr[ i ] = ( SKP_int16 )SKP_SAT16( ( SKP_int32 )x_ptr[ i ] - LTP_est );\r
 \r
             /* Scale residual */\r
-            if( Qxx == 16 ) {\r
-                LTP_res_ptr[ i ] = SKP_SMULWB( invGains_Qxx[ k ], LTP_res_ptr[ i ] );\r
-            } else {\r
-                LTP_res_ptr[ i ] = ( SKP_int16 )SKP_CHECK_FIT16( SKP_RSHIFT64( SKP_SMULL( invGains_Qxx[ k ], LTP_res_ptr[ i ] ), Qxx ) );\r
-            }\r
+            LTP_res_ptr[ i ] = SKP_SMULWB( invGains_Q16[ k ], LTP_res_ptr[ i ] );\r
 \r
             x_lag_ptr++;\r
         }\r