Update SILK code using the CELT range coder
[opus.git] / src_common / SKP_Silk_define.h
similarity index 77%
rename from src/SKP_Silk_define.h
rename to src_common/SKP_Silk_define.h
index 27d20ca..9895c00 100644 (file)
@@ -36,12 +36,11 @@ extern "C"
 {\r
 #endif\r
 \r
+#define MAX_FRAMES_PER_PACKET                   3\r
 \r
-#define MAX_FRAMES_PER_PACKET                   5\r
-#define BIT_STREAM_V3                           3\r
-#define BIT_STREAM_V4                           4\r
-#define USE_BIT_STREAM_V                        BIT_STREAM_V3 // Should be moved to a API call\r
-\r
+#ifndef FIXED_POINT\r
+#    define FIXED_POINT                         0\r
+#endif\r
 \r
 /* MAX DELTA LAG used for multiframe packets */\r
 #define MAX_DELTA_LAG                           10\r
@@ -53,11 +52,10 @@ extern "C"
 #define MIN_TARGET_RATE_SWB_BPS                 20000\r
 \r
 /* Transition bitrates between modes */\r
-#define SWB2WB_BITRATE_BPS                      30000\r
-#define SWB2WB_BITRATE_BPS_INITIAL              25000\r
-#define WB2SWB_BITRATE_BPS                      35000\r
-#define WB2MB_BITRATE_BPS                       15000\r
-#define MB2WB_BITRATE_BPS                       20000\r
+#define SWB2WB_BITRATE_BPS                      25000\r
+#define WB2SWB_BITRATE_BPS                      30000\r
+#define WB2MB_BITRATE_BPS                       14000\r
+#define MB2WB_BITRATE_BPS                       18000\r
 #define MB2NB_BITRATE_BPS                       10000\r
 #define NB2MB_BITRATE_BPS                       14000\r
 \r
@@ -101,28 +99,17 @@ extern "C"
 #define WB_DETECT_ACTIVE_SPEECH_MS_THRES        15000       /* ms of active speech needed for WB detection  */\r
 \r
 /* Low complexity setting */\r
-#ifdef EMBEDDED_OPT\r
-#   define LOW_COMPLEXITY_ONLY                  1\r
-#else\r
-#   define LOW_COMPLEXITY_ONLY                  0\r
-#endif\r
+#define LOW_COMPLEXITY_ONLY                     0\r
 \r
 /* Activate bandwidth transition filtering for mode switching */\r
-#ifdef EMBEDDED_OPT\r
-#   define SWITCH_TRANSITION_FILTERING          0\r
-#else\r
-#ifndef FORCE_FS_KHZ \r
-#   define SWITCH_TRANSITION_FILTERING          1\r
-#else\r
-#   define SWITCH_TRANSITION_FILTERING          0\r
-#endif\r
-#endif\r
+#  define SWITCH_TRANSITION_FILTERING           1\r
 \r
 /* Decoder Parameters */\r
 #define DEC_HP_ORDER                            2\r
 \r
 /* Maximum sampling frequency, should be 16 for embedded */\r
 #define MAX_FS_KHZ                              24 \r
+#define MAX_API_FS_KHZ                          48\r
 \r
 /* Signal Types used by silk */\r
 #define SIG_TYPE_VOICED                         0\r
@@ -132,9 +119,15 @@ extern "C"
 #define NO_VOICE_ACTIVITY                       0\r
 #define VOICE_ACTIVITY                          1\r
 \r
+/* Number of subframes */\r
+#define MAX_NB_SUBFR                            4\r
+\r
 /* number of samples per frame */ \r
-#define FRAME_LENGTH_MS                         20 /* 20 ms */\r
-#define MAX_FRAME_LENGTH                        (FRAME_LENGTH_MS * MAX_FS_KHZ)\r
+#define LTP_MEM_LENGTH_MS                       20\r
+#define SUB_FRAME_LENGTH_MS                     5\r
+#define MAX_SUB_FRAME_LENGTH                    ( SUB_FRAME_LENGTH_MS * MAX_FS_KHZ )\r
+#define MAX_FRAME_LENGTH_MS                     ( SUB_FRAME_LENGTH_MS * MAX_NB_SUBFR )\r
+#define MAX_FRAME_LENGTH                        ( MAX_FRAME_LENGTH_MS * MAX_FS_KHZ )\r
 \r
 /* number of lookahead samples for pitch analysis */\r
 #define LA_PITCH_MS                             3\r
@@ -145,15 +138,16 @@ extern "C"
 #define LA_SHAPE_MAX                            (LA_SHAPE_MS * MAX_FS_KHZ)\r
 \r
 /* Order of LPC used in find pitch */\r
-#define FIND_PITCH_LPC_ORDER_MAX                16\r
+#define MAX_FIND_PITCH_LPC_ORDER                16\r
 \r
 /* Length of LPC window used in find pitch */\r
 #define FIND_PITCH_LPC_WIN_MS                   (30 + (LA_PITCH_MS << 1))\r
+#define FIND_PITCH_LPC_WIN_MS_2_SF              (15 + (LA_PITCH_MS << 1))\r
 #define FIND_PITCH_LPC_WIN_MAX                  (FIND_PITCH_LPC_WIN_MS * MAX_FS_KHZ)\r
 \r
-#define PITCH_EST_COMPLEXITY_HC_MODE            SigProc_PITCH_EST_MAX_COMPLEX\r
-#define PITCH_EST_COMPLEXITY_MC_MODE            SigProc_PITCH_EST_MID_COMPLEX\r
-#define PITCH_EST_COMPLEXITY_LC_MODE            SigProc_PITCH_EST_MIN_COMPLEX\r
+#define PITCH_EST_COMPLEXITY_HC_MODE            SKP_Silk_PE_MAX_COMPLEX\r
+#define PITCH_EST_COMPLEXITY_MC_MODE            SKP_Silk_PE_MID_COMPLEX\r
+#define PITCH_EST_COMPLEXITY_LC_MODE            SKP_Silk_PE_MIN_COMPLEX\r
 \r
 \r
 /* Max number of bytes in payload output buffer (may contain multiple frames) */\r
@@ -197,14 +191,11 @@ extern "C"
 /* LTP quantization settings */\r
 #define NB_LTP_CBKS                             3\r
 \r
-/* Number of subframes */\r
-#define NB_SUBFR                                4\r
-\r
 /* Flag to use harmonic noise shaping */\r
 #define USE_HARM_SHAPING                        1\r
 \r
 /* Max LPC order of noise shaping filters */\r
-#define SHAPE_LPC_ORDER_MAX                     16\r
+#define MAX_SHAPE_LPC_ORDER                     16\r
 \r
 #define HARM_SHAPE_FIR_TAPS                     3\r
 \r
@@ -215,7 +206,7 @@ extern "C"
 #define SHAPE_LPC_WIN_MAX                       (SHAPE_LPC_WIN_MS * MAX_FS_KHZ)\r
 \r
 /* Maximum number of delayed decision states */\r
-#define DEL_DEC_STATES_MAX                      4\r
+#define MAX_DEL_DEC_STATES                      4\r
 \r
 #define LTP_BUF_LENGTH                          512\r
 #define LTP_MASK                                (LTP_BUF_LENGTH - 1)\r
@@ -225,6 +216,7 @@ extern "C"
 \r
 /* number of subframes for excitation entropy coding */\r
 #define SHELL_CODEC_FRAME_LENGTH                16\r
+#define LOG2_SHELL_CODEC_FRAME_LENGTH           4\r
 #define MAX_NB_SHELL_BLOCKS                     (MAX_FRAME_LENGTH / SHELL_CODEC_FRAME_LENGTH)\r
 \r
 /* number of rate levels, for entropy coding of excitation */\r
@@ -249,7 +241,7 @@ extern "C"
 /***************************/\r
 /* Voice activity detector */\r
 /***************************/\r
-#define VAD_N_BANDS                             4       /* 0-1, 1-2, 2-4, and 4-8 kHz                       */\r
+#define VAD_N_BANDS                             4\r
 \r
 #define VAD_INTERNAL_SUBFRAMES_LOG2             2\r
 #define VAD_INTERNAL_SUBFRAMES                  (1 << VAD_INTERNAL_SUBFRAMES_LOG2)\r
@@ -267,15 +259,9 @@ extern "C"
 /******************/\r
 /* NLSF quantizer */\r
 /******************/\r
-#ifdef NLSF_TRAINING\r
-#   define NLSF_MSVQ_MAX_CB_STAGES                      30 \r
-#   define NLSF_MSVQ_MAX_VECTORS_IN_STAGE               256\r
-#   define NLSF_MSVQ_MAX_VECTORS_IN_STAGE_TWO_TO_END    128\r
-#else\r
 #   define NLSF_MSVQ_MAX_CB_STAGES                      10  /* Update manually when changing codebooks      */\r
 #   define NLSF_MSVQ_MAX_VECTORS_IN_STAGE               128 /* Update manually when changing codebooks      */\r
 #   define NLSF_MSVQ_MAX_VECTORS_IN_STAGE_TWO_TO_END    16  /* Update manually when changing codebooks      */\r
-#endif\r
 \r
 #define NLSF_MSVQ_FLUCTUATION_REDUCTION         1\r
 #define MAX_NLSF_MSVQ_SURVIVORS                 16\r
@@ -299,29 +285,30 @@ extern "C"
 \r
 /* Transition filtering for mode switching */\r
 #if SWITCH_TRANSITION_FILTERING\r
-#  define TRANSITION_TIME_UP_MS             5120 // 5120 = 64 * FRAME_LENGTH_MS * ( TRANSITION_INT_NUM - 1 ) = 64*(20*4)\r
-#  define TRANSITION_TIME_DOWN_MS           2560 // 2560 = 32 * FRAME_LENGTH_MS * ( TRANSITION_INT_NUM - 1 ) = 32*(20*4)\r
-#  define TRANSITION_NB                     3 /* Hardcoded in tables */\r
-#  define TRANSITION_NA                     2 /* Hardcoded in tables */\r
-#  define TRANSITION_INT_NUM                5 /* Hardcoded in tables */\r
-#  define TRANSITION_FRAMES_UP          ( TRANSITION_TIME_UP_MS   / FRAME_LENGTH_MS )\r
-#  define TRANSITION_FRAMES_DOWN        ( TRANSITION_TIME_DOWN_MS / FRAME_LENGTH_MS )\r
-#  define TRANSITION_INT_STEPS_UP       ( TRANSITION_FRAMES_UP    / ( TRANSITION_INT_NUM - 1 )  )\r
-#  define TRANSITION_INT_STEPS_DOWN     ( TRANSITION_FRAMES_DOWN  / ( TRANSITION_INT_NUM - 1 )  )\r
-#endif\r
-\r
-/* Row based */\r
-#define matrix_ptr(Matrix_base_adr, row, column, N)         *(Matrix_base_adr + ((row)*(N)+(column)))\r
-#define matrix_adr(Matrix_base_adr, row, column, N)          (Matrix_base_adr + ((row)*(N)+(column)))\r
-\r
-/* Column based */\r
-#ifndef matrix_c_ptr\r
-#   define matrix_c_ptr(Matrix_base_adr, row, column, M)    *(Matrix_base_adr + ((row)+(M)*(column)))\r
+#  define TRANSITION_TIME_UP_MS                 5120 // 5120 = 64 * FRAME_LENGTH_MS * ( TRANSITION_INT_NUM - 1 ) = 64*(20*4)\r
+#  define TRANSITION_TIME_DOWN_MS               2560 // 2560 = 32 * FRAME_LENGTH_MS * ( TRANSITION_INT_NUM - 1 ) = 32*(20*4)\r
+#  define TRANSITION_NB                         3 /* Hardcoded in tables */\r
+#  define TRANSITION_NA                         2 /* Hardcoded in tables */\r
+#  define TRANSITION_INT_NUM                    5 /* Hardcoded in tables */\r
+#  define TRANSITION_FRAMES_UP                  ( TRANSITION_TIME_UP_MS   / MAX_FRAME_LENGTH_MS ) // NB! needs to be made flexible for 10 ms frames\r
+#  define TRANSITION_FRAMES_DOWN                ( TRANSITION_TIME_DOWN_MS / MAX_FRAME_LENGTH_MS ) // NB! needs to be made flexible for 10 ms frames\r
+#  define TRANSITION_INT_STEPS_UP               ( TRANSITION_FRAMES_UP    / ( TRANSITION_INT_NUM - 1 )  )\r
+#  define TRANSITION_INT_STEPS_DOWN             ( TRANSITION_FRAMES_DOWN  / ( TRANSITION_INT_NUM - 1 )  )\r
 #endif\r
-#define matrix_c_adr(Matrix_base_adr, row, column, M)        (Matrix_base_adr + ((row)+(M)*(column)))\r
 \r
 /* BWE factors to apply after packet loss */\r
-#define BWE_AFTER_LOSS_Q16                              63570\r
+#define BWE_AFTER_LOSS_Q16                      63570\r
+\r
+/*************************/\r
+/* Perceptual parameters */\r
+/*************************/\r
+/* Amount of warping to apply */\r
+#define WARPING_MULTIPLIER_Q16                  SKP_FIX_CONST( 0.02, 16 )\r
+\r
+/* Defines for CN generation */\r
+#define CNG_BUF_MASK_MAX                        255             /* 2^floor(log2(MAX_FRAME_LENGTH))-1    */\r
+#define CNG_GAIN_SMTH_Q16                       4634            /* 0.25^(1/4)                           */\r
+#define CNG_NLSF_SMTH_Q16                       16348           /* 0.25                                 */\r
 \r
 #ifdef __cplusplus\r
 }\r