Update SILK code using the CELT range coder
[opus.git] / src_common / SKP_Silk_decode_parameters_v4.c
similarity index 89%
rename from src/SKP_Silk_decode_parameters_v4.c
rename to src_common/SKP_Silk_decode_parameters_v4.c
index 2770b1b..6702742 100644 (file)
@@ -49,7 +49,8 @@ void SKP_Silk_decode_parameters_v4(
     psDecCtrl->Seed               = psDec->Seed[ psDec->nFramesDecoded ];\r
 \r
     /* Dequant Gains */\r
-    SKP_Silk_gains_dequant( psDecCtrl->Gains_Q16, psDec->GainsIndices[ psDec->nFramesDecoded ], &psDec->LastGainIndex, psDec->nFramesDecoded );\r
+    SKP_Silk_gains_dequant( psDecCtrl->Gains_Q16, psDec->GainsIndices[ psDec->nFramesDecoded ], \r
+        &psDec->LastGainIndex, psDec->nFramesDecoded, psDec->nb_subfr );\r
     /****************/\r
     /* Decode NLSFs */\r
     /****************/\r
@@ -99,8 +100,8 @@ void SKP_Silk_decode_parameters_v4(
         /*********************/\r
         \r
         /* Decode pitch values */\r
-        SKP_Silk_decode_pitch( psDec->lagIndex[ psDec->nFramesDecoded ], \r
-            psDec->contourIndex[ psDec->nFramesDecoded ], psDecCtrl->pitchL, psDec->fs_kHz );\r
+        SKP_Silk_decode_pitch( psDec->lagIndex[ psDec->nFramesDecoded ], psDec->contourIndex[ psDec->nFramesDecoded ], \r
+                               psDecCtrl->pitchL, psDec->fs_kHz, psDec->nb_subfr );\r
 \r
         /********************/\r
         /* Decode LTP gains */\r
@@ -110,7 +111,7 @@ void SKP_Silk_decode_parameters_v4(
         /* Decode Codebook Index */\r
         cbk_ptr_Q14 = SKP_Silk_LTP_vq_ptrs_Q14[ psDecCtrl->PERIndex ]; /* set pointer to start of codebook */\r
 \r
-        for( k = 0; k < NB_SUBFR; k++ ) {\r
+        for( k = 0; k < psDec->nb_subfr; k++ ) {\r
             Ix = psDec->LTPIndex[ psDec->nFramesDecoded ][ k ];\r
             for( i = 0; i < LTP_ORDER; i++ ) {\r
                 psDecCtrl->LTPCoef_Q14[ SKP_SMULBB( k, LTP_ORDER ) + i ] = cbk_ptr_Q14[ SKP_SMULBB( Ix, LTP_ORDER ) + i ];\r
@@ -123,8 +124,9 @@ void SKP_Silk_decode_parameters_v4(
         Ix = psDec->LTP_scaleIndex[ psDec->nFramesDecoded ];\r
         psDecCtrl->LTP_scale_Q14 = SKP_Silk_LTPScales_table_Q14[ Ix ];\r
     } else {\r
-        SKP_memset( psDecCtrl->pitchL,      0, NB_SUBFR * sizeof( SKP_int ) );\r
-        SKP_memset( psDecCtrl->LTPCoef_Q14, 0, NB_SUBFR * LTP_ORDER * sizeof( SKP_int16 ) );\r
+        SKP_assert( psDecCtrl->sigtype == SIG_TYPE_UNVOICED );\r
+        SKP_memset( psDecCtrl->pitchL,      0, psDec->nb_subfr * sizeof( SKP_int ) );\r
+        SKP_memset( psDecCtrl->LTPCoef_Q14, 0, psDec->nb_subfr * LTP_ORDER * sizeof( SKP_int16 ) );\r
         psDecCtrl->PERIndex      = 0;\r
         psDecCtrl->LTP_scale_Q14 = 0;\r
     }\r
@@ -132,13 +134,16 @@ void SKP_Silk_decode_parameters_v4(
     /*********************************************/\r
     /* Decode quantization indices of excitation */\r
     /*********************************************/\r
+TIC(decode_pulses)\r
     SKP_Silk_decode_pulses( psRC, psDecCtrl, q, psDec->frame_length );\r
+TOC(decode_pulses)\r
 \r
     /****************************************/\r
     /* get number of bytes used so far      */\r
     /****************************************/\r
-    SKP_Silk_range_coder_get_length( psRC, &nBytesUsed );\r
-    psDec->nBytesLeft = psRC->bufferLength - nBytesUsed;\r
+    SKP_Silk_range_decoder_get_length( psRC, &nBytesUsed );\r
+    psDec->nBytesLeft = psRC->range_dec_celt_state.buf->storage - nBytesUsed;\r
+\r
     if( psDec->nBytesLeft < 0 ) {\r
         psRC->error = RANGE_CODER_READ_BEYOND_BUFFER;\r
     }\r