Update SILK code using the CELT range coder
[opus.git] / src_FIX / SKP_Silk_quant_LTP_gains_FIX.c
similarity index 76%
rename from src/SKP_Silk_quant_LTP_gains_FIX.c
rename to src_FIX/SKP_Silk_quant_LTP_gains_FIX.c
index 63c5a0f..74ea26c 100644 (file)
@@ -28,15 +28,16 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #include "SKP_Silk_main_FIX.h"\r
 \r
 void SKP_Silk_quant_LTP_gains_FIX(\r
-    SKP_int16               B_Q14[],                /* I/O  (un)quantized LTP gains     */\r
-    SKP_int                 cbk_index[],            /* O    Codebook Index              */\r
-    SKP_int                 *periodicity_index,     /* O    Periodicity Index           */\r
-    const SKP_int32         W_Q18[],                /* I    Error Weights in Q18        */\r
-    SKP_int                 mu_Q8,                  /* I    Mu value (R/D tradeoff)     */\r
-    SKP_int                 lowComplexity           /* I    Flag for low complexity     */\r
+    SKP_int16           B_Q14[],                /* I/O  (un)quantized LTP gains     */\r
+    SKP_int             cbk_index[],            /* O    Codebook Index              */\r
+    SKP_int             *periodicity_index,     /* O    Periodicity Index           */\r
+    const SKP_int32     W_Q18[],                /* I    Error Weights in Q18        */\r
+    SKP_int             mu_Q8,                  /* I    Mu value (R/D tradeoff)     */\r
+    SKP_int             lowComplexity,          /* I    Flag for low complexity     */\r
+    const SKP_int       nb_subfr                /* I    number of subframes         */\r
 )\r
 {\r
-    SKP_int             j, k, temp_idx[ NB_SUBFR ], cbk_size;\r
+    SKP_int             j, k, temp_idx[ MAX_NB_SUBFR ], cbk_size;\r
     const SKP_uint16    *cdf_ptr;\r
     const SKP_int16     *cl_ptr;\r
     const SKP_int16     *cbk_ptr_Q14;\r
@@ -45,6 +46,7 @@ void SKP_Silk_quant_LTP_gains_FIX(
     SKP_int32           rate_dist_subfr, rate_dist, min_rate_dist;\r
 \r
 \r
+TIC(quant_LTP_fix)\r
 \r
     /***************************************************/\r
     /* iterate over different codebooks with different */\r
@@ -62,7 +64,7 @@ void SKP_Silk_quant_LTP_gains_FIX(
         b_Q14_ptr = B_Q14;\r
 \r
         rate_dist = 0;\r
-        for( j = 0; j < NB_SUBFR; j++ ) {\r
+        for( j = 0; j < nb_subfr; j++ ) {\r
 \r
             SKP_Silk_VQ_WMat_EC_FIX(\r
                 &temp_idx[ j ],         /* O    index of best codebook vector                           */\r
@@ -86,7 +88,7 @@ void SKP_Silk_quant_LTP_gains_FIX(
 \r
         if( rate_dist < min_rate_dist ) {\r
             min_rate_dist = rate_dist;\r
-            SKP_memcpy( cbk_index, temp_idx, NB_SUBFR * sizeof( SKP_int ) );\r
+            SKP_memcpy( cbk_index, temp_idx, nb_subfr * sizeof( SKP_int ) );\r
             *periodicity_index = k;\r
         }\r
 \r
@@ -97,10 +99,26 @@ void SKP_Silk_quant_LTP_gains_FIX(
     }\r
 \r
     cbk_ptr_Q14 = SKP_Silk_LTP_vq_ptrs_Q14[ *periodicity_index ];\r
-    for( j = 0; j < NB_SUBFR; j++ ) {\r
+    for( j = 0; j < nb_subfr; j++ ) {\r
         for( k = 0; k < LTP_ORDER; k++ ) { \r
             B_Q14[ j * LTP_ORDER + k ] = cbk_ptr_Q14[ SKP_MLA( k, cbk_index[ j ], LTP_ORDER ) ];\r
         }\r
     }\r
+TOC(quant_LTP_fix)\r
+#ifdef SAVE_ALL_INTERNAL_DATA\r
+       /* save rate */\r
+       {\r
+               SKP_int nbits_LTP;\r
+               SKP_float rateBPF_LTP;\r
+\r
+               cl_ptr   = SKP_Silk_LTP_gain_BITS_Q6_ptrs[*periodicity_index];\r
+               nbits_LTP = 0;\r
+               for(j = 0; j < nb_subfr; j++){\r
+                       nbits_LTP += cl_ptr[cbk_index[j]];\r
+               }\r
+               rateBPF_LTP = (SKP_float)nbits_LTP / 64.0f; // Q6 -> Q0\r
+               SAVE_DATA( rateBPF_LTP.dat, &rateBPF_LTP, sizeof(SKP_float));\r
+       }\r
+#endif\r
 }\r
 \r