Update SILK code using the CELT range coder
[opus.git] / src_FIX / SKP_Silk_residual_energy_FIX.c
similarity index 66%
rename from src/SKP_Silk_residual_energy_FIX.c
rename to src_FIX/SKP_Silk_residual_energy_FIX.c
index 640bcc2..6d538ec 100644 (file)
@@ -30,18 +30,18 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 /* Calculates residual energies of input subframes where all subframes have LPC_order   */\r
 /* of preceeding samples                                                                */\r
 void SKP_Silk_residual_energy_FIX(\r
-          SKP_int32 nrgs[ NB_SUBFR ],           /* O    Residual energy per subframe    */\r
-          SKP_int   nrgsQ[ NB_SUBFR ],          /* O    Q value per subframe            */\r
-    const SKP_int16 x[],                        /* I    Input signal                    */\r
-    const SKP_int16 a_Q12[ 2 ][ MAX_LPC_ORDER ],/* I    AR coefs for each frame half    */\r
-    const SKP_int32 gains_Qx[ NB_SUBFR ],       /* I    Quantization gains in Qx        */\r
-    const SKP_int   Qx,                         /* I    Quantization gains Q value      */\r
-    const SKP_int   subfr_length,               /* I    Subframe length                 */\r
-    const SKP_int   LPC_order                   /* I    LPC order                       */\r
+          SKP_int32 nrgs[ MAX_NB_SUBFR ],           /* O    Residual energy per subframe    */\r
+          SKP_int   nrgsQ[ MAX_NB_SUBFR ],          /* O    Q value per subframe            */\r
+    const SKP_int16 x[],                            /* I    Input signal                    */\r
+    const SKP_int16 a_Q12[ 2 ][ MAX_LPC_ORDER ],    /* I    AR coefs for each frame half    */\r
+    const SKP_int32 gains[ MAX_NB_SUBFR ],          /* I    Quantization gains              */\r
+    const SKP_int   subfr_length,                   /* I    Subframe length                 */\r
+    const SKP_int   nb_subfr,                       /* I    Number of subframes             */\r
+    const SKP_int   LPC_order                       /* I    LPC order                       */\r
 )\r
 {\r
     SKP_int         offset, i, j, rshift, lz1, lz2;\r
-    SKP_int16       *LPC_res_ptr, LPC_res[ ( MAX_FRAME_LENGTH + NB_SUBFR * MAX_LPC_ORDER ) / 2 ];\r
+    SKP_int16       *LPC_res_ptr, LPC_res[ ( MAX_FRAME_LENGTH + MAX_NB_SUBFR * MAX_LPC_ORDER ) / 2 ];\r
     const SKP_int16 *x_ptr;\r
     SKP_int16       S[ MAX_LPC_ORDER ];\r
     SKP_int32       tmp32;\r
@@ -50,40 +50,40 @@ void SKP_Silk_residual_energy_FIX(
     offset = LPC_order + subfr_length;\r
     \r
     /* Filter input to create the LPC residual for each frame half, and measure subframe energies */\r
-    for( i = 0; i < 2; i++ ) {\r
+    for( i = 0; i < nb_subfr >> 1; i++ ) {\r
         /* Calculate half frame LPC residual signal including preceeding samples */\r
         SKP_memset( S, 0, LPC_order * sizeof( SKP_int16 ) );\r
-        SKP_Silk_LPC_analysis_filter( x_ptr, a_Q12[ i ], S, LPC_res, ( NB_SUBFR >> 1 ) * offset, LPC_order );\r
+        SKP_Silk_LPC_analysis_filter( x_ptr, a_Q12[ i ], S, LPC_res, ( MAX_NB_SUBFR >> 1 ) * offset, LPC_order );\r
 \r
         /* Point to first subframe of the just calculated LPC residual signal */\r
         LPC_res_ptr = LPC_res + LPC_order;\r
-        for( j = 0; j < ( NB_SUBFR >> 1 ); j++ ) {\r
+        for( j = 0; j < ( MAX_NB_SUBFR >> 1 ); j++ ) {\r
             /* Measure subframe energy */\r
-            SKP_Silk_sum_sqr_shift( &nrgs[ i * ( NB_SUBFR >> 1 ) + j ], &rshift, LPC_res_ptr, subfr_length ); \r
+            SKP_Silk_sum_sqr_shift( &nrgs[ i * ( MAX_NB_SUBFR >> 1 ) + j ], &rshift, LPC_res_ptr, subfr_length ); \r
             \r
             /* Set Q values for the measured energy */\r
-            nrgsQ[ i * ( NB_SUBFR >> 1 ) + j ] = -rshift;\r
+            nrgsQ[ i * ( MAX_NB_SUBFR >> 1 ) + j ] = -rshift;\r
             \r
             /* Move to next subframe */\r
             LPC_res_ptr += offset;\r
         }\r
         /* Move to next frame half */\r
-        x_ptr += ( NB_SUBFR >> 1 ) * offset;\r
+        x_ptr += ( MAX_NB_SUBFR >> 1 ) * offset;\r
     }\r
 \r
     /* Apply the squared subframe gains */\r
-    for( i = 0; i < NB_SUBFR; i++ ) {\r
+    for( i = 0; i < nb_subfr; i++ ) {\r
         /* Fully upscale gains and energies */\r
-        lz1 = SKP_Silk_CLZ32( nrgs[ i ] ) - 1; \r
-        lz2 = SKP_Silk_CLZ32( gains_Qx[ i ] ) - 1; \r
+        lz1 = SKP_Silk_CLZ32( nrgs[  i ] ) - 1; \r
+        lz2 = SKP_Silk_CLZ32( gains[ i ] ) - 1; \r
         \r
-        tmp32 = SKP_LSHIFT32( gains_Qx[ i ], lz2 );\r
+        tmp32 = SKP_LSHIFT32( gains[ i ], lz2 );\r
 \r
         /* Find squared gains */\r
-        tmp32 = SKP_SMMUL( tmp32, tmp32 ); // Q( 2 * ( Qx + lz2 ) - 32 )\r
+        tmp32 = SKP_SMMUL( tmp32, tmp32 ); // Q( 2 * lz2 - 32 )\r
 \r
         /* Scale energies */\r
-        nrgs[ i ] = SKP_SMMUL( tmp32, SKP_LSHIFT32( nrgs[ i ], lz1 ) ); // Q( nrgsQ[ i ] + lz1 + 2 * ( Qx + lz2 ) - 32 - 32 )\r
-        nrgsQ[ i ] += lz1 + 2 * ( Qx + lz2 ) - 32 - 32;\r
+        nrgs[ i ] = SKP_SMMUL( tmp32, SKP_LSHIFT32( nrgs[ i ], lz1 ) ); // Q( nrgsQ[ i ] + lz1 + 2 * lz2 - 32 - 32 )\r
+        nrgsQ[ i ] += lz1 + 2 * lz2 - 32 - 32;\r
     }\r
 }\r