Update SILK range coder due to CELT refactoring.
authorTimothy B. Terriberry <tterribe@xiph.org>
Thu, 3 Feb 2011 22:51:37 +0000 (14:51 -0800)
committerTimothy B. Terriberry <tterribe@xiph.org>
Thu, 3 Feb 2011 22:53:59 +0000 (14:53 -0800)
The byte buffer is now part of the range coder struct itself, and
 ec_{enc|dec}_tell have been replaced by a unified ec_tell() with
 no precision parameter.

src_FIX/SKP_Silk_encode_frame_FIX.c
src_FLP/SKP_Silk_encode_frame_FLP.c
src_common/SKP_Silk_decode_frame.c
src_common/SKP_Silk_decode_indices.c
src_common/SKP_Silk_decode_parameters.c
src_common/SKP_Silk_encode_indices.c
test/Decoder.c
test/Encoder.c

index be42261..348f4d2 100644 (file)
@@ -214,7 +214,7 @@ TOC(ENCODE_PARAMS)
         }\r
 \r
         /* Payload length so far */\r
-        nBytes = SKP_RSHIFT( ec_enc_tell( psRangeEnc, 0 ) + 7, 3 );\r
+        nBytes = SKP_RSHIFT( ec_tell( psRangeEnc ) + 7, 3 );\r
         *pnBytesOut = nBytes;\r
 \r
         /* Reset the number of frames in payload buffer */\r
@@ -224,7 +224,7 @@ TOC(ENCODE_PARAMS)
         *pnBytesOut = 0;\r
 \r
         /* Payload length so far */\r
-        nBytes = SKP_RSHIFT( ec_enc_tell( psRangeEnc, 0 ) + 7, 3 );\r
+        nBytes = SKP_RSHIFT( ec_tell( psRangeEnc ) + 7, 3 );\r
 \r
         /* Take into account the q signal that isn't in the bitstream yet */\r
         nBytes += SKP_Silk_pulses_to_bytes( &psEnc->sCmn, \r
@@ -305,7 +305,6 @@ void SKP_Silk_LBRR_encode_FIX(
     SKP_int     nBytes, nFramesInPayloadBuf;\r
     SKP_int32   TempGains_Q16[ MAX_NB_SUBFR ];\r
     SKP_int     typeOffset, LTP_scaleIndex, Rate_only_parameters = 0;\r
-    ec_byte_buffer range_enc_celt_buf;\r
 \r
     /*******************************************/\r
     /* Control use of inband LBRR              */\r
@@ -375,8 +374,7 @@ void SKP_Silk_LBRR_encode_FIX(
         /* Initialize arithmetic coder          */\r
         /****************************************/\r
         if( psEnc->sCmn.nFramesInPayloadBuf == 0 ) {\r
-            ec_byte_writeinit_buffer( &range_enc_celt_buf, psEnc->sCmn.sRC_LBRR.buffer, MAX_ARITHM_BYTES );\r
-            ec_enc_init( &psEnc->sCmn.sRC_LBRR.range_enc_celt_state, &range_enc_celt_buf );\r
+            ec_enc_init( &psEnc->sCmn.sRC_LBRR.range_enc_celt_state, psEnc->sCmn.sRC_LBRR.buffer, MAX_ARITHM_BYTES );\r
 \r
             SKP_Silk_range_enc_init( &psEnc->sCmn.sRC_LBRR );\r
             psEnc->sCmn.nBytesInPayloadBuf = 0;\r
@@ -417,12 +415,12 @@ void SKP_Silk_LBRR_encode_FIX(
             }\r
 \r
             /* Payload length so far */\r
-            nBytes = SKP_RSHIFT( ec_enc_tell( psRangeEnc_LBRR, 0 ) + 7, 3 );\r
+            nBytes = SKP_RSHIFT( ec_tell( psRangeEnc_LBRR ) + 7, 3 );\r
 \r
             /* Check that there is enough space in external output buffer and move data */\r
             if( *pnBytesOut >= nBytes ) {\r
                 SKP_int bits_in_stream, mask;\r
-                bits_in_stream = ec_enc_tell( &psEnc->sCmn.sRC_LBRR.range_enc_celt_state, 0 );\r
+                bits_in_stream = ec_tell( &psEnc->sCmn.sRC_LBRR.range_enc_celt_state );\r
                 ec_enc_done( &psEnc->sCmn.sRC_LBRR.range_enc_celt_state );\r
 \r
                 /* Fill up any remaining bits in the last byte with 1s */\r
index 3d3c361..b2a9037 100644 (file)
@@ -211,7 +211,7 @@ TOC(ENCODE_PARAMS)
         }\r
 \r
         /* Payload length so far */\r
-        nBytes = SKP_RSHIFT( ec_enc_tell( psRangeEnc, 0 ) + 7, 3 );\r
+        nBytes = SKP_RSHIFT( ec_tell( psRangeEnc ) + 7, 3 );\r
         *pnBytesOut = nBytes;\r
 \r
         /* Reset the number of frames in payload buffer */\r
@@ -221,7 +221,7 @@ TOC(ENCODE_PARAMS)
         *pnBytesOut = 0;\r
 \r
         /* Payload length so far */\r
-        nBytes = SKP_RSHIFT( ec_enc_tell( psRangeEnc, 0 ) + 7, 3 );\r
+        nBytes = SKP_RSHIFT( ec_tell( psRangeEnc ) + 7, 3 );\r
 \r
         /* Take into account the q signal that isn't in the bitstream yet */\r
         nBytes += SKP_Silk_pulses_to_bytes( &psEnc->sCmn, \r
@@ -337,8 +337,7 @@ void SKP_Silk_LBRR_encode_FLP(
         /* Initialize arithmetic coder          */\r
         /****************************************/\r
         if( psEnc->sCmn.nFramesInPayloadBuf == 0 ) {\r
-            ec_byte_writeinit_buffer( &range_enc_celt_buf, psEnc->sCmn.sRC_LBRR.buffer, MAX_ARITHM_BYTES );\r
-            ec_enc_init( &psEnc->sCmn.sRC_LBRR.range_enc_celt_state, &range_enc_celt_buf );\r
+            ec_enc_init( &psEnc->sCmn.sRC_LBRR.range_enc_celt_state, psEnc->sCmn.sRC_LBRR.buffer, MAX_ARITHM_BYTES );\r
 \r
             SKP_Silk_range_enc_init( &psEnc->sCmn.sRC_LBRR );\r
             psEnc->sCmn.nBytesInPayloadBuf = 0;\r
@@ -377,12 +376,12 @@ void SKP_Silk_LBRR_encode_FLP(
             }\r
 \r
             /* Payload length so far */\r
-            nBytes = SKP_RSHIFT( ec_enc_tell( psRangeEnc_LBRR, 0 ) + 7, 3 );\r
+            nBytes = SKP_RSHIFT( ec_tell( psRangeEnc_LBRR ) + 7, 3 );\r
 \r
             /* Check that there is enough space in external output buffer and move data */\r
             if( *pnBytesOut >= nBytes ) {\r
                 SKP_int bits_in_stream, mask;\r
-                bits_in_stream = ec_enc_tell( &psEnc->sCmn.sRC_LBRR.range_enc_celt_state, 0 );\r
+                bits_in_stream = ec_tell( &psEnc->sCmn.sRC_LBRR.range_enc_celt_state );\r
                 ec_enc_done( &psEnc->sCmn.sRC_LBRR.range_enc_celt_state );\r
 \r
                 /* Fill up any remaining bits in the last byte with 1s */\r
index 38dc82a..101d962 100644 (file)
@@ -74,7 +74,7 @@ TIC(decode_params)
         SKP_Silk_decode_parameters( psDec, &sDecCtrl, psRangeDec, Pulses );\r
 TOC(decode_params)\r
 \r
-        *decBytes = psRangeDec->buf->storage - psDec->nBytesLeft;\r
+        *decBytes = psRangeDec->storage - psDec->nBytesLeft;\r
         psDec->nFramesDecoded++;\r
 \r
         /* Update length. Sampling frequency may have changed */\r
index b28fb79..b324a70 100644 (file)
@@ -149,6 +149,6 @@ void SKP_Silk_decode_indices(
     /****************************************/\r
     /* Get number of bytes used so far      */\r
     /****************************************/\r
-    nBytesUsed = SKP_RSHIFT( ec_dec_tell( psRangeDec, 0 ) + 7, 3 );\r
-    psDec->nBytesLeft = psRangeDec->buf->storage - nBytesUsed;\r
+    nBytesUsed = SKP_RSHIFT( ec_tell( psRangeDec ) + 7, 3 );\r
+    psDec->nBytesLeft = psRangeDec->storage - nBytesUsed;\r
 }\r
index e3fda04..d5e6450 100644 (file)
@@ -138,6 +138,6 @@ TOC(decode_pulses)
     /****************************************/\r
     /* get number of bytes used so far      */\r
     /****************************************/\r
-    nBytesUsed = SKP_RSHIFT( ec_dec_tell( psRangeDec, 0 ) + 7, 3 );\r
-    psDec->nBytesLeft = psRangeDec->buf->storage - nBytesUsed;\r
+    nBytesUsed = SKP_RSHIFT( ec_tell( psRangeDec ) + 7, 3 );\r
+    psDec->nBytesLeft = psRangeDec->storage - nBytesUsed;\r
 }\r
index b381e12..a122a90 100644 (file)
@@ -62,7 +62,7 @@ void SKP_Silk_encode_indices(
     /* Encode gains */\r
     /****************/\r
 #ifdef SAVE_ALL_INTERNAL_DATA\r
-    nBytes_before = SKP_RSHIFT( ec_enc_tell( psRangeEnc, 0 ) + 7, 3 );\r
+    nBytes_before = SKP_RSHIFT( ec_tell( psRangeEnc ) + 7, 3 );\r
 #endif\r
     /* first subframe */\r
     if( psEncC->nFramesInPayloadBuf == 0 ) {\r
@@ -80,7 +80,7 @@ void SKP_Silk_encode_indices(
     }\r
 \r
 #ifdef SAVE_ALL_INTERNAL_DATA\r
-    nBytes_after = SKP_RSHIFT( ec_enc_tell( psRangeEnc, 0 ) + 7, 3 );\r
+    nBytes_after = SKP_RSHIFT( ec_tell( psRangeEnc ) + 7, 3 );\r
     nBytes_after -= nBytes_before; // bytes just added\r
     DEBUG_STORE_DATA( nBytes_gains.dat, &nBytes_after, sizeof( SKP_int ) );\r
 #endif\r
@@ -89,7 +89,7 @@ void SKP_Silk_encode_indices(
     /* Encode NLSFs */\r
     /****************/\r
 #ifdef SAVE_ALL_INTERNAL_DATA\r
-    nBytes_before = SKP_RSHIFT( ec_enc_tell( psRangeEnc, 0 ) + 7, 3 );\r
+    nBytes_before = SKP_RSHIFT( ec_tell( psRangeEnc ) + 7, 3 );\r
 #endif\r
     /* Range encoding of the NLSF path */\r
     psNLSF_CB = psEncC->psNLSF_CB[ 1 - (psEncCtrlC->signalType>>1) ];\r
@@ -105,7 +105,7 @@ void SKP_Silk_encode_indices(
 \r
 #ifdef SAVE_ALL_INTERNAL_DATA\r
     DEBUG_STORE_DATA( lsf_interpol.dat, &psEncCtrlC->NLSFInterpCoef_Q2, sizeof(int) );\r
-    nBytes_after = SKP_RSHIFT( ec_enc_tell( psRangeEnc, 0 ) + 7, 3 );\r
+    nBytes_after = SKP_RSHIFT( ec_tell( psRangeEnc ) + 7, 3 );\r
     nBytes_after -= nBytes_before; // bytes just added\r
     DEBUG_STORE_DATA( nBytes_LSF.dat, &nBytes_after, sizeof( SKP_int ) );\r
 #endif\r
@@ -115,7 +115,7 @@ void SKP_Silk_encode_indices(
         /* Encode pitch lags */\r
         /*********************/\r
 #ifdef SAVE_ALL_INTERNAL_DATA\r
-        nBytes_before = SKP_RSHIFT( ec_enc_tell( psRangeEnc, 0 ) + 7, 3 );\r
+        nBytes_before = SKP_RSHIFT( ec_tell( psRangeEnc ) + 7, 3 );\r
 #endif\r
         /* lag index */\r
         encode_absolute_lagIndex = 1;\r
@@ -144,12 +144,12 @@ void SKP_Silk_encode_indices(
         psEncC->prev_lagIndex = psEncCtrlC->lagIndex;\r
 \r
 #ifdef SAVE_ALL_INTERNAL_DATA\r
-        nBytes_after = SKP_RSHIFT( ec_enc_tell( psRangeEnc, 0 ) + 7, 3 );\r
+        nBytes_after = SKP_RSHIFT( ec_tell( psRangeEnc ) + 7, 3 );\r
         nBytes_lagIndex = nBytes_after - nBytes_before; // bytes just added\r
 #endif\r
 \r
 #ifdef SAVE_ALL_INTERNAL_DATA\r
-        nBytes_before = SKP_RSHIFT( ec_enc_tell( psRangeEnc, 0 ) + 7, 3 );\r
+        nBytes_before = SKP_RSHIFT( ec_tell( psRangeEnc ) + 7, 3 );\r
 #endif\r
         /* Countour index */\r
         SKP_assert( ( psEncCtrlC->contourIndex < 34 && psEncC->fs_kHz  > 8 && psEncC->nb_subfr == 4 ) ||\r
@@ -158,7 +158,7 @@ void SKP_Silk_encode_indices(
                     ( psEncCtrlC->contourIndex <  3 && psEncC->fs_kHz == 8 && psEncC->nb_subfr == 2 ) );\r
         ec_enc_icdf( psRangeEnc, psEncCtrlC->contourIndex, psEncC->pitch_contour_iCDF, 8 );\r
 #ifdef SAVE_ALL_INTERNAL_DATA\r
-        nBytes_after = SKP_RSHIFT( ec_enc_tell( psRangeEnc, 0 ) + 7, 3 );\r
+        nBytes_after = SKP_RSHIFT( ec_tell( psRangeEnc ) + 7, 3 );\r
         nBytes_contourIndex = nBytes_after - nBytes_before; // bytes just added\r
 #endif\r
 \r
@@ -166,7 +166,7 @@ void SKP_Silk_encode_indices(
         /* Encode LTP gains */\r
         /********************/\r
 #ifdef SAVE_ALL_INTERNAL_DATA\r
-        nBytes_before = SKP_RSHIFT( ec_enc_tell( psRangeEnc, 0 ) + 7, 3 );\r
+        nBytes_before = SKP_RSHIFT( ec_tell( psRangeEnc ) + 7, 3 );\r
 #endif\r
 \r
         /* PERIndex value */\r
@@ -182,7 +182,7 @@ void SKP_Silk_encode_indices(
         /**********************/\r
         ec_enc_icdf( psRangeEnc, psEncCtrlC->LTP_scaleIndex, SKP_Silk_LTPscale_iCDF, 8 );\r
 #ifdef SAVE_ALL_INTERNAL_DATA\r
-        nBytes_after = SKP_RSHIFT( ec_enc_tell( psRangeEnc, 0 ) + 7, 3 );\r
+        nBytes_after = SKP_RSHIFT( ec_tell( psRangeEnc ) + 7, 3 );\r
         nBytes_LTP = nBytes_after - nBytes_before; // bytes just added\r
 #endif\r
     }\r
@@ -199,7 +199,7 @@ void SKP_Silk_encode_indices(
 #endif\r
 \r
 #ifdef SAVE_ALL_INTERNAL_DATA\r
-    nBytes_before = SKP_RSHIFT( ec_enc_tell( psRangeEnc, 0 ) + 7, 3 );\r
+    nBytes_before = SKP_RSHIFT( ec_tell( psRangeEnc ) + 7, 3 );\r
 #endif\r
 \r
     /***************/\r
index 992e66a..356c3e7 100644 (file)
@@ -109,7 +109,6 @@ int main( int argc, char* argv[] )
     float     loss_prob;\r
     SKP_int32 frames, lost, quiet;\r
     SKP_SILK_SDK_DecControlStruct DecControl;\r
-    ec_byte_buffer range_dec_celt_buf;\r
     ec_dec         range_dec_celt_state;\r
 \r
     if( argc < 3 ) {\r
@@ -225,8 +224,7 @@ int main( int argc, char* argv[] )
         }\r
 \r
         /* Initialize range decoder state */\r
-        ec_byte_writeinit_buffer( &range_dec_celt_buf, payloadEnd, nBytes );\r
-        ec_dec_init( &range_dec_celt_state, &range_dec_celt_buf );\r
+        ec_dec_init( &range_dec_celt_state, payloadEnd, nBytes );\r
 \r
         /* Simulate losses */\r
         if( ( (float)rand() / (float)RAND_MAX >= loss_prob / 100 ) && counter > 0 ) {\r
index 876c802..105960f 100644 (file)
@@ -108,7 +108,6 @@ int main( int argc, char* argv[] )
     SKP_int16 nBytes_LE;\r
 #endif\r
     SKP_uint8      range_buf[ MAX_BYTES_PER_FRAME * MAX_INPUT_FRAMES ];\r
-    ec_byte_buffer range_enc_celt_buf;\r
     ec_enc         range_enc_celt_state;\r
 \r
     /* default settings */\r
@@ -239,8 +238,7 @@ int main( int argc, char* argv[] )
     while( 1 ) {\r
         if( smplsSinceLastPacket == 0 ) {\r
             /* Init range coder */\r
-            ec_byte_writeinit_buffer( &range_enc_celt_buf, range_buf, MAX_BYTES_PER_FRAME * MAX_INPUT_FRAMES );\r
-            ec_enc_init( &range_enc_celt_state, &range_enc_celt_buf );\r
+            ec_enc_init( &range_enc_celt_state, range_buf, MAX_BYTES_PER_FRAME * MAX_INPUT_FRAMES );\r
         }\r
 \r
         /* Read input from file */\r