Update SILK code using the CELT range coder
[opus.git] / src_common / SKP_Silk_pulses_to_bytes.c
similarity index 85%
rename from src/SKP_Silk_pulses_to_bytes.c
rename to src_common/SKP_Silk_pulses_to_bytes.c
index 85c5e7e..1138e87 100644 (file)
@@ -35,15 +35,16 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 /* nBytes = sum_over_shell_blocks( POLY_FIT_0 + POLY_FIT_1 * sum_abs_val + POLY_FIT_2 * sum_abs_val^2 ) */\r
 #define POLY_FIT_0_Q15     12520\r
 #define POLY_FIT_1_Q15     15862\r
-#define POLY_FIT_2_Q20     -9222 // ToDo better training with \r
+#define POLY_FIT_2_Q20     -9222\r
 \r
 /* Predict number of bytes used to encode q */\r
 SKP_int SKP_Silk_pulses_to_bytes( /* O  Return value, predicted number of bytes used to encode q */ \r
     SKP_Silk_encoder_state          *psEncC,        /* I/O  Encoder State */\r
-    SKP_int                         q[]             /* I    Pulse signal  */\r
+    SKP_int8                        q[]             /* I    Pulse signal  */\r
 )\r
 {\r
-    SKP_int i, j, iter, *q_ptr;\r
+    SKP_int i, j, iter;\r
+    SKP_int8 *q_ptr;\r
     SKP_int32 sum_abs_val, nBytes, acc_nBytes;\r
     /* Take the absolute value of the pulses */\r
     iter = psEncC->frame_length / SHELL_CODEC_FRAME_LENGTH;\r
@@ -54,10 +55,10 @@ SKP_int SKP_Silk_pulses_to_bytes( /* O  Return value, predicted number of bytes
     for( j = 0; j < iter; j++ ) {\r
         sum_abs_val = 0;\r
         for(i = 0; i < SHELL_CODEC_FRAME_LENGTH; i+=4){\r
-            sum_abs_val += SKP_abs( q_ptr[ i + 0 ] );\r
-            sum_abs_val += SKP_abs( q_ptr[ i + 1 ] );\r
-            sum_abs_val += SKP_abs( q_ptr[ i + 2 ] );\r
-            sum_abs_val += SKP_abs( q_ptr[ i + 3 ] );\r
+            sum_abs_val += (SKP_int32)SKP_abs( q_ptr[ i + 0 ] );\r
+            sum_abs_val += (SKP_int32)SKP_abs( q_ptr[ i + 1 ] );\r
+            sum_abs_val += (SKP_int32)SKP_abs( q_ptr[ i + 2 ] );\r
+            sum_abs_val += (SKP_int32)SKP_abs( q_ptr[ i + 3 ] );\r
         }\r
         /* Calculate nBytes used for thi sshell frame */\r
         nBytes = SKP_SMULWB( SKP_SMULBB( sum_abs_val, sum_abs_val ), POLY_FIT_2_Q20 );  // Q4\r
@@ -65,6 +66,9 @@ SKP_int SKP_Silk_pulses_to_bytes( /* O  Return value, predicted number of bytes
         nBytes += SKP_SMULBB( sum_abs_val, POLY_FIT_1_Q15 );                            // Q15\r
         nBytes += POLY_FIT_0_Q15;                                                       // Q15\r
 \r
+#ifdef SAVE_ALL_INTERNAL_DATA\r
+        DEBUG_STORE_DATA( sum_abs_val.dat, &sum_abs_val, sizeof( SKP_int32 ) );\r
+#endif\r
         acc_nBytes += nBytes;\r
 \r
         q_ptr += SHELL_CODEC_FRAME_LENGTH; /* update pointer */\r