- \r
- /******************************************************************\r
- \r
- iLBC Speech Coder ANSI-C Source Code\r
- \r
- iLBC_define.h \r
- \r
- Copyright (C) The Internet Society (2004). \r
- All Rights Reserved.\r
- \r
- ******************************************************************/\r
- #include <string.h>\r
- \r
- #ifndef __iLBC_ILBCDEFINE_H\r
- #define __iLBC_ILBCDEFINE_H\r
- \r
- /* general codec settings */\r
- \r
- #define FS (float)8000.0\r
- #define BLOCKL_20MS 160\r
- #define BLOCKL_30MS 240\r
- #define BLOCKL_MAX 240\r
- #define NSUB_20MS 4\r
- #define NSUB_30MS 6\r
- #define NSUB_MAX 6\r
- #define NASUB_20MS 2\r
- #define NASUB_30MS 4\r
- #define NASUB_MAX 4\r
- #define SUBL 40\r
- #define STATE_LEN 80\r
- #define STATE_SHORT_LEN_30MS 58\r
- #define STATE_SHORT_LEN_20MS 57\r
- \r
- /* LPC settings */\r
- \r
- #define LPC_FILTERORDER 10\r
- #define LPC_CHIRP_SYNTDENUM (float)0.9025\r
- #define LPC_CHIRP_WEIGHTDENUM (float)0.4222\r
- #define LPC_LOOKBACK 60\r
- #define LPC_N_20MS 1\r
- #define LPC_N_30MS 2\r
- #define LPC_N_MAX 2\r
- #define LPC_ASYMDIFF 20\r
- #define LPC_BW (float)60.0\r
- #define LPC_WN (float)1.0001\r
- #define LSF_NSPLIT 3\r
- \r
- \r
- #define LSF_NUMBER_OF_STEPS 4\r
- #define LPC_HALFORDER (LPC_FILTERORDER/2)\r
- \r
- /* cb settings */\r
- \r
- #define CB_NSTAGES 3\r
- #define CB_EXPAND 2\r
- #define CB_MEML 147\r
- #define CB_FILTERLEN 2*4\r
- #define CB_HALFFILTERLEN 4\r
- #define CB_RESRANGE 34\r
- #define CB_MAXGAIN (float)1.3 \r
- \r
- /* enhancer */\r
- \r
- #define ENH_BLOCKL 80 /* block length */\r
- #define ENH_BLOCKL_HALF (ENH_BLOCKL/2)\r
- #define ENH_HL 3 /* 2*ENH_HL+1 is number blocks\r
- in said second sequence */\r
- #define ENH_SLOP 2 /* max difference estimated and\r
- correct pitch period */\r
- #define ENH_PLOCSL 20 /* pitch-estimates and pitch-\r
- locations buffer length */\r
- #define ENH_OVERHANG 2\r
- #define ENH_UPS0 4 /* upsampling rate */\r
- #define ENH_FL0 3 /* 2*FLO+1 is the length of \r
- each filter */\r
- #define ENH_VECTL (ENH_BLOCKL+2*ENH_FL0)\r
- #define ENH_CORRDIM (2*ENH_SLOP+1)\r
- #define ENH_NBLOCKS (BLOCKL_MAX/ENH_BLOCKL)\r
- #define ENH_NBLOCKS_EXTRA 5\r
- #define ENH_NBLOCKS_TOT 8 /* ENH_NBLOCKS + \r
- ENH_NBLOCKS_EXTRA */\r
- #define ENH_BUFL (ENH_NBLOCKS_TOT)*ENH_BLOCKL\r
- #define ENH_ALPHA0 (float)0.05\r
- \r
- /* Down sampling */\r
- \r
- #define FILTERORDER_DS 7\r
- #define DELAY_DS 3\r
- #define FACTOR_DS 2\r
- \r
- /* bit stream defs */\r
- \r
- #define NO_OF_BYTES_20MS 38\r
- #define NO_OF_BYTES_30MS 50\r
- #define NO_OF_WORDS_20MS 19\r
- #define NO_OF_WORDS_30MS 25\r
- #define STATE_BITS 3\r
- #define BYTE_LEN 8\r
- #define ULP_CLASSES 3\r
- \r
- /* help parameters */\r
- \r
- \r
- \r
- #define FLOAT_MAX (float)1.0e37\r
- #define EPS (float)2.220446049250313e-016\r
- #define PI (float)3.14159265358979323846\r
- #define MIN_SAMPLE -32768\r
- #define MAX_SAMPLE 32767\r
- #define TWO_PI (float)6.283185307\r
- #define PI2 (float)0.159154943\r
- \r
- /* type definition encoder instance */\r
- typedef struct iLBC_ULP_Inst_t_ {\r
- int lsf_bits[6][ULP_CLASSES+2];\r
- int start_bits[ULP_CLASSES+2];\r
- int startfirst_bits[ULP_CLASSES+2];\r
- int scale_bits[ULP_CLASSES+2];\r
- int state_bits[ULP_CLASSES+2];\r
- int extra_cb_index[CB_NSTAGES][ULP_CLASSES+2];\r
- int extra_cb_gain[CB_NSTAGES][ULP_CLASSES+2];\r
- int cb_index[NSUB_MAX][CB_NSTAGES][ULP_CLASSES+2];\r
- int cb_gain[NSUB_MAX][CB_NSTAGES][ULP_CLASSES+2];\r
- } iLBC_ULP_Inst_t;\r
- \r
- /* type definition encoder instance */\r
- typedef struct iLBC_Enc_Inst_t_ {\r
- \r
- /* flag for frame size mode */\r
- int mode;\r
- \r
- /* basic parameters for different frame sizes */\r
- int blockl;\r
- int nsub;\r
- int nasub;\r
- int no_of_bytes, no_of_words;\r
- int lpc_n;\r
- int state_short_len;\r
- const iLBC_ULP_Inst_t *ULP_inst;\r
- \r
- /* analysis filter state */\r
- float anaMem[LPC_FILTERORDER];\r
- \r
- /* old lsf parameters for interpolation */\r
- float lsfold[LPC_FILTERORDER];\r
- float lsfdeqold[LPC_FILTERORDER];\r
- \r
- /* signal buffer for LP analysis */\r
- float lpc_buffer[LPC_LOOKBACK + BLOCKL_MAX];\r
- \r
- /* state of input HP filter */\r
- float hpimem[4];\r
- \r
- } iLBC_Enc_Inst_t;\r
- \r
- /* type definition decoder instance */\r
- typedef struct iLBC_Dec_Inst_t_ {\r
- \r
- \r
- \r
- /* flag for frame size mode */\r
- int mode;\r
- \r
- /* basic parameters for different frame sizes */\r
- int blockl;\r
- int nsub;\r
- int nasub;\r
- int no_of_bytes, no_of_words;\r
- int lpc_n;\r
- int state_short_len;\r
- const iLBC_ULP_Inst_t *ULP_inst;\r
- \r
- /* synthesis filter state */\r
- float syntMem[LPC_FILTERORDER];\r
- \r
- /* old LSF for interpolation */\r
- float lsfdeqold[LPC_FILTERORDER];\r
- \r
- /* pitch lag estimated in enhancer and used in PLC */\r
- int last_lag;\r
- \r
- /* PLC state information */\r
- int prevLag, consPLICount, prevPLI, prev_enh_pl;\r
- float prevLpc[LPC_FILTERORDER+1];\r
- float prevResidual[NSUB_MAX*SUBL];\r
- float per;\r
- unsigned long seed;\r
- \r
- /* previous synthesis filter parameters */\r
- float old_syntdenum[(LPC_FILTERORDER + 1)*NSUB_MAX];\r
- \r
- /* state of output HP filter */\r
- float hpomem[4];\r
- \r
- /* enhancer state information */\r
- int use_enhancer;\r
- float enh_buf[ENH_BUFL];\r
- float enh_period[ENH_NBLOCKS_TOT];\r
- \r
- } iLBC_Dec_Inst_t;\r
- \r
- #endif\r
- \r
- \r
+\r
+/******************************************************************\r
+\r
+iLBC Speech Coder ANSI-C Source Code\r
+\r
+iLBC_define.h \r
+\r
+Copyright (C) The Internet Society (2004). \r
+All Rights Reserved.\r
+\r
+******************************************************************/\r
+#include <string.h>\r
+\r
+#ifndef __iLBC_ILBCDEFINE_H\r
+#define __iLBC_ILBCDEFINE_H\r
+\r
+/* general codec settings */\r
+\r
+#define FS (float)8000.0\r
+#define BLOCKL_20MS 160\r
+#define BLOCKL_30MS 240\r
+#define BLOCKL_MAX 240\r
+#define NSUB_20MS 4\r
+#define NSUB_30MS 6\r
+#define NSUB_MAX 6\r
+#define NASUB_20MS 2\r
+#define NASUB_30MS 4\r
+#define NASUB_MAX 4\r
+#define SUBL 40\r
+#define STATE_LEN 80\r
+#define STATE_SHORT_LEN_30MS 58\r
+#define STATE_SHORT_LEN_20MS 57\r
+\r
+/* LPC settings */\r
+\r
+#define LPC_FILTERORDER 10\r
+#define LPC_CHIRP_SYNTDENUM (float)0.9025\r
+#define LPC_CHIRP_WEIGHTDENUM (float)0.4222\r
+#define LPC_LOOKBACK 60\r
+#define LPC_N_20MS 1\r
+#define LPC_N_30MS 2\r
+#define LPC_N_MAX 2\r
+#define LPC_ASYMDIFF 20\r
+#define LPC_BW (float)60.0\r
+#define LPC_WN (float)1.0001\r
+#define LSF_NSPLIT 3\r
+\r
+\r
+#define LSF_NUMBER_OF_STEPS 4\r
+#define LPC_HALFORDER (LPC_FILTERORDER/2)\r
+\r
+/* cb settings */\r
+\r
+#define CB_NSTAGES 3\r
+#define CB_EXPAND 2\r
+#define CB_MEML 147\r
+#define CB_FILTERLEN 2*4\r
+#define CB_HALFFILTERLEN 4\r
+#define CB_RESRANGE 34\r
+#define CB_MAXGAIN (float)1.3 \r
+\r
+/* enhancer */\r
+\r
+#define ENH_BLOCKL 80 /* block length */\r
+#define ENH_BLOCKL_HALF (ENH_BLOCKL/2)\r
+#define ENH_HL 3 /* 2*ENH_HL+1 is number blocks\r
+in said second sequence */\r
+#define ENH_SLOP 2 /* max difference estimated and\r
+correct pitch period */\r
+#define ENH_PLOCSL 20 /* pitch-estimates and pitch-\r
+locations buffer length */\r
+#define ENH_OVERHANG 2\r
+#define ENH_UPS0 4 /* upsampling rate */\r
+#define ENH_FL0 3 /* 2*FLO+1 is the length of \r
+each filter */\r
+#define ENH_VECTL (ENH_BLOCKL+2*ENH_FL0)\r
+#define ENH_CORRDIM (2*ENH_SLOP+1)\r
+#define ENH_NBLOCKS (BLOCKL_MAX/ENH_BLOCKL)\r
+#define ENH_NBLOCKS_EXTRA 5\r
+#define ENH_NBLOCKS_TOT 8 /* ENH_NBLOCKS + \r
+ENH_NBLOCKS_EXTRA */\r
+#define ENH_BUFL (ENH_NBLOCKS_TOT)*ENH_BLOCKL\r
+#define ENH_ALPHA0 (float)0.05\r
+\r
+/* Down sampling */\r
+\r
+#define FILTERORDER_DS 7\r
+#define DELAY_DS 3\r
+#define FACTOR_DS 2\r
+\r
+/* bit stream defs */\r
+\r
+#define NO_OF_BYTES_20MS 38\r
+#define NO_OF_BYTES_30MS 50\r
+#define NO_OF_WORDS_20MS 19\r
+#define NO_OF_WORDS_30MS 25\r
+#define STATE_BITS 3\r
+#define BYTE_LEN 8\r
+#define ULP_CLASSES 3\r
+\r
+/* help parameters */\r
+\r
+\r
+\r
+#define FLOAT_MAX (float)1.0e37\r
+#define EPS (float)2.220446049250313e-016\r
+#define PI (float)3.14159265358979323846\r
+#define MIN_SAMPLE -32768\r
+#define MAX_SAMPLE 32767\r
+#define TWO_PI (float)6.283185307\r
+#define PI2 (float)0.159154943\r
+\r
+/* type definition encoder instance */\r
+typedef struct iLBC_ULP_Inst_t_ {\r
+ int lsf_bits[6][ULP_CLASSES+2];\r
+ int start_bits[ULP_CLASSES+2];\r
+ int startfirst_bits[ULP_CLASSES+2];\r
+ int scale_bits[ULP_CLASSES+2];\r
+ int state_bits[ULP_CLASSES+2];\r
+ int extra_cb_index[CB_NSTAGES][ULP_CLASSES+2];\r
+ int extra_cb_gain[CB_NSTAGES][ULP_CLASSES+2];\r
+ int cb_index[NSUB_MAX][CB_NSTAGES][ULP_CLASSES+2];\r
+ int cb_gain[NSUB_MAX][CB_NSTAGES][ULP_CLASSES+2];\r
+} iLBC_ULP_Inst_t;\r
+\r
+/* type definition encoder instance */\r
+typedef struct iLBC_Enc_Inst_t_ {\r
+\r
+ /* flag for frame size mode */\r
+ int mode;\r
+\r
+ /* basic parameters for different frame sizes */\r
+ int blockl;\r
+ int nsub;\r
+ int nasub;\r
+ int no_of_bytes, no_of_words;\r
+ int lpc_n;\r
+ int state_short_len;\r
+ const iLBC_ULP_Inst_t *ULP_inst;\r
+\r
+ /* analysis filter state */\r
+ float anaMem[LPC_FILTERORDER];\r
+\r
+ /* old lsf parameters for interpolation */\r
+ float lsfold[LPC_FILTERORDER];\r
+ float lsfdeqold[LPC_FILTERORDER];\r
+\r
+ /* signal buffer for LP analysis */\r
+ float lpc_buffer[LPC_LOOKBACK + BLOCKL_MAX];\r
+\r
+ /* state of input HP filter */\r
+ float hpimem[4];\r
+\r
+} iLBC_Enc_Inst_t;\r
+\r
+/* type definition decoder instance */\r
+typedef struct iLBC_Dec_Inst_t_ {\r
+\r
+\r
+\r
+ /* flag for frame size mode */\r
+ int mode;\r
+\r
+ /* basic parameters for different frame sizes */\r
+ int blockl;\r
+ int nsub;\r
+ int nasub;\r
+ int no_of_bytes, no_of_words;\r
+ int lpc_n;\r
+ int state_short_len;\r
+ const iLBC_ULP_Inst_t *ULP_inst;\r
+\r
+ /* synthesis filter state */\r
+ float syntMem[LPC_FILTERORDER];\r
+\r
+ /* old LSF for interpolation */\r
+ float lsfdeqold[LPC_FILTERORDER];\r
+\r
+ /* pitch lag estimated in enhancer and used in PLC */\r
+ int last_lag;\r
+\r
+ /* PLC state information */\r
+ int prevLag, consPLICount, prevPLI, prev_enh_pl;\r
+ float prevLpc[LPC_FILTERORDER+1];\r
+ float prevResidual[NSUB_MAX*SUBL];\r
+ float per;\r
+ unsigned long seed;\r
+\r
+ /* previous synthesis filter parameters */\r
+ float old_syntdenum[(LPC_FILTERORDER + 1)*NSUB_MAX];\r
+\r
+ /* state of output HP filter */\r
+ float hpomem[4];\r
+\r
+ /* enhancer state information */\r
+ int use_enhancer;\r
+ float enh_buf[ENH_BUFL];\r
+ float enh_period[ENH_NBLOCKS_TOT];\r
+\r
+} iLBC_Dec_Inst_t;\r
+\r
+#endif\r
+\r
+\r