diff options
author | Mark Spencer <markster@digium.com> | 2004-10-14 05:15:48 +0000 |
---|---|---|
committer | Mark Spencer <markster@digium.com> | 2004-10-14 05:15:48 +0000 |
commit | d4ff9abc610add56b6c9e0ec193519f48689c0bd (patch) | |
tree | 0deebbd8647eb5799eef8ddc6f084ec945574299 /codecs/ilbc/iLBC_define.h | |
parent | 7c4337dc91408de2c013c29cd010db02c3524512 (diff) |
Update to new iLBC codec
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3997 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'codecs/ilbc/iLBC_define.h')
-rwxr-xr-x | codecs/ilbc/iLBC_define.h | 358 |
1 files changed, 201 insertions, 157 deletions
diff --git a/codecs/ilbc/iLBC_define.h b/codecs/ilbc/iLBC_define.h index e1c821b3d..73a90ed66 100755 --- a/codecs/ilbc/iLBC_define.h +++ b/codecs/ilbc/iLBC_define.h @@ -1,157 +1,201 @@ - -/****************************************************************** - - iLBC Speech Coder ANSI-C Source Code - - iLBC_define.h - - Copyright (c) 2001, - Global IP Sound AB. - All rights reserved. - -******************************************************************/ -#include <string.h> - -#ifndef __iLBC_ILBCDEFINE_H -#define __iLBC_ILBCDEFINE_H - -/* general codec settings */ - -#define FS (float)8000.0 -#define BLOCKL 240 -#define NSUB 6 -#define NASUB 4 -#define SUBL 40 -#define STATE_LEN 80 -#define STATE_SHORT_LEN 58 - -/* LPC settings */ - -#define LPC_FILTERORDER 10 -#define LPC_CHIRP_SYNTDENUM (float)0.9025 -#define LPC_CHIRP_WEIGHTDENUM (float)0.4222 -#define LPC_LOOKBACK 60 -#define LPC_N 2 -#define LPC_ASYMDIFF 20 -#define LPC_BW (float)60.0 -#define LPC_WN (float)1.0001 -#define LSF_NSPLIT 3 -#define LSF_NUMBER_OF_STEPS 4 -#define LPC_HALFORDER LPC_FILTERORDER/2 - -/* cb settings */ - -#define CB_NSTAGES 3 -#define CB_EXPAND 2 -#define CB_MEML 147 -#define CB_FILTERLEN 2*4 -#define CB_HALFFILTERLEN 4 -#define CB_RESRANGE 34 -#define CB_MAXGAIN (float) 1.3 - -/* enhancer */ - -#define ENH_BLOCKL 80 /* block length */ -#define ENH_BLOCKL_HALF (ENH_BLOCKL/2) -#define ENH_HL 3 /* 2*ENH_HL+1 is number blocks - in said second sequence */ -#define ENH_SLOP 2 /* max difference estimated and - correct pitch period */ -#define ENH_PLOCSL 20 /* pitch-estimates and - pitch-locations buffer length */ -#define ENH_OVERHANG 2 -#define ENH_UPS0 4 /* upsampling rate */ -#define ENH_FL0 3 /* 2*FLO+1 is the length of each filter */ -#define ENH_VECTL (ENH_BLOCKL+2*ENH_FL0) -#define ENH_CORRDIM (2*ENH_SLOP+1) -#define ENH_NBLOCKS (BLOCKL/ENH_BLOCKL) -#define ENH_NBLOCKS_EXTRA 5 -#define ENH_NBLOCKS_TOT 8 /* ENH_NBLOCKS+ENH_NBLOCKS_EXTRA */ -#define ENH_BUFL (ENH_NBLOCKS_TOT)*ENH_BLOCKL -#define ENH_ALPHA0 (float)0.05 - -/* PLC */ - -#define PLC_BFIATTENUATE (float)0.9 -#define PLC_GAINTHRESHOLD (float)0.5 -#define PLC_BWEXPAND (float)0.99 -#define PLC_XT_MIX (float)1.0 -#define PLC_XB_MIX (float)0.0 -#define PLC_YT_MIX (float)0.95 -#define PLC_YB_MIX (float)0.0 - -/* Down sampling */ - -#define FILTERORDER_DS 7 -#define DELAY_DS 3 -#define FACTOR_DS 2 - -/* bit stream defs */ - -#define NO_OF_BYTES 50 -#define STATE_BITS 3 -#define BYTE_LEN 8 -#define ULP_CLASSES 3 - -/* help parameters */ - -#define FLOAT_MAX (float)1.0e37 -#define EPS (float)2.220446049250313e-016 -#define PI (float)3.14159265358979323846 -#define MIN_SAMPLE -32768 -#define MAX_SAMPLE 32767 -#define TWO_PI (float)6.283185307 -#define PI2 (float)0.159154943 - -/* type definition encoder instance */ -typedef struct iLBC_Enc_Inst_t_ { - - /* analysis filter state */ - float anaMem[LPC_FILTERORDER]; - - /* old lsf parameters for interpolation */ - float lsfold[LPC_FILTERORDER]; - float lsfdeqold[LPC_FILTERORDER]; - - /* signal buffer for LP analysis */ - float lpc_buffer[LPC_LOOKBACK + BLOCKL]; - - /* state of input HP filter */ - float hpimem[4]; - -} iLBC_Enc_Inst_t; - -/* type definition decoder instance */ -typedef struct iLBC_Dec_Inst_t_ { - /* synthesis filter state */ - float syntMem[LPC_FILTERORDER]; - - /* old LSF for interpolation */ - float lsfdeqold[LPC_FILTERORDER]; - - /* pitch lag estimated in enhancer and used in PLC */ - int last_lag; - - /* PLC state information */ - int prevLag, consPLICount, prevPLI, prev_enh_pl; - float prevGain, prevLpc[LPC_FILTERORDER+1]; - float prevResidual[NSUB*SUBL]; - float energy; - unsigned long seed; - - /* previous synthesis filter parameters */ - float old_syntdenum[(LPC_FILTERORDER + 1)*NSUB]; - - /* state of output HP filter */ - float hpomem[4]; - - /* enhancer state information */ - int use_enhancer; - float enh_buf[ENH_BUFL]; - float enh_period[ENH_NBLOCKS_TOT]; - -} iLBC_Dec_Inst_t; - -#endif - - + +/****************************************************************** + + iLBC Speech Coder ANSI-C Source Code + + iLBC_define.h + + Copyright (C) The Internet Society (2004). + All Rights Reserved. + +******************************************************************/ +#include <string.h> + +#ifndef __iLBC_ILBCDEFINE_H +#define __iLBC_ILBCDEFINE_H + +/* general codec settings */ + +#define FS (float)8000.0 +#define BLOCKL_20MS 160 +#define BLOCKL_30MS 240 +#define BLOCKL_MAX 240 +#define NSUB_20MS 4 +#define NSUB_30MS 6 +#define NSUB_MAX 6 +#define NASUB_20MS 2 +#define NASUB_30MS 4 +#define NASUB_MAX 4 +#define SUBL 40 +#define STATE_LEN 80 +#define STATE_SHORT_LEN_30MS 58 +#define STATE_SHORT_LEN_20MS 57 + +/* LPC settings */ + +#define LPC_FILTERORDER 10 +#define LPC_CHIRP_SYNTDENUM (float)0.9025 +#define LPC_CHIRP_WEIGHTDENUM (float)0.4222 +#define LPC_LOOKBACK 60 +#define LPC_N_20MS 1 +#define LPC_N_30MS 2 +#define LPC_N_MAX 2 +#define LPC_ASYMDIFF 20 +#define LPC_BW (float)60.0 +#define LPC_WN (float)1.0001 +#define LSF_NSPLIT 3 + +#define LSF_NUMBER_OF_STEPS 4 +#define LPC_HALFORDER (LPC_FILTERORDER/2) + +/* cb settings */ + +#define CB_NSTAGES 3 +#define CB_EXPAND 2 +#define CB_MEML 147 +#define CB_FILTERLEN 2*4 +#define CB_HALFFILTERLEN 4 +#define CB_RESRANGE 34 +#define CB_MAXGAIN (float)1.3 + +/* enhancer */ + +#define ENH_BLOCKL 80 /* block length */ +#define ENH_BLOCKL_HALF (ENH_BLOCKL/2) +#define ENH_HL 3 /* 2*ENH_HL+1 is number blocks + in said second sequence */ +#define ENH_SLOP 2 /* max difference estimated and + correct pitch period */ +#define ENH_PLOCSL 20 /* pitch-estimates and pitch- + locations buffer length */ +#define ENH_OVERHANG 2 +#define ENH_UPS0 4 /* upsampling rate */ +#define ENH_FL0 3 /* 2*FLO+1 is the length of + each filter */ +#define ENH_VECTL (ENH_BLOCKL+2*ENH_FL0) +#define ENH_CORRDIM (2*ENH_SLOP+1) +#define ENH_NBLOCKS (BLOCKL_MAX/ENH_BLOCKL) +#define ENH_NBLOCKS_EXTRA 5 +#define ENH_NBLOCKS_TOT 8 /* ENH_NBLOCKS + + ENH_NBLOCKS_EXTRA */ +#define ENH_BUFL (ENH_NBLOCKS_TOT)*ENH_BLOCKL +#define ENH_ALPHA0 (float)0.05 + +/* Down sampling */ + +#define FILTERORDER_DS 7 +#define DELAY_DS 3 +#define FACTOR_DS 2 + +/* bit stream defs */ + +#define NO_OF_BYTES_20MS 38 +#define NO_OF_BYTES_30MS 50 +#define NO_OF_WORDS_20MS 19 +#define NO_OF_WORDS_30MS 25 +#define STATE_BITS 3 +#define BYTE_LEN 8 +#define ULP_CLASSES 3 + +/* help parameters */ + + +#define FLOAT_MAX (float)1.0e37 +#define EPS (float)2.220446049250313e-016 +#define PI (float)3.14159265358979323846 +#define MIN_SAMPLE -32768 +#define MAX_SAMPLE 32767 +#define TWO_PI (float)6.283185307 +#define PI2 (float)0.159154943 + +/* type definition encoder instance */ +typedef struct iLBC_ULP_Inst_t_ { + int lsf_bits[6][ULP_CLASSES+2]; + int start_bits[ULP_CLASSES+2]; + int startfirst_bits[ULP_CLASSES+2]; + int scale_bits[ULP_CLASSES+2]; + int state_bits[ULP_CLASSES+2]; + int extra_cb_index[CB_NSTAGES][ULP_CLASSES+2]; + int extra_cb_gain[CB_NSTAGES][ULP_CLASSES+2]; + int cb_index[NSUB_MAX][CB_NSTAGES][ULP_CLASSES+2]; + int cb_gain[NSUB_MAX][CB_NSTAGES][ULP_CLASSES+2]; +} iLBC_ULP_Inst_t; + +/* type definition encoder instance */ +typedef struct iLBC_Enc_Inst_t_ { + + /* flag for frame size mode */ + int mode; + + /* basic parameters for different frame sizes */ + int blockl; + int nsub; + int nasub; + int no_of_bytes, no_of_words; + int lpc_n; + int state_short_len; + const iLBC_ULP_Inst_t *ULP_inst; + + /* analysis filter state */ + float anaMem[LPC_FILTERORDER]; + + /* old lsf parameters for interpolation */ + float lsfold[LPC_FILTERORDER]; + float lsfdeqold[LPC_FILTERORDER]; + + /* signal buffer for LP analysis */ + float lpc_buffer[LPC_LOOKBACK + BLOCKL_MAX]; + + /* state of input HP filter */ + float hpimem[4]; + +} iLBC_Enc_Inst_t; + +/* type definition decoder instance */ +typedef struct iLBC_Dec_Inst_t_ { + + + /* flag for frame size mode */ + int mode; + + /* basic parameters for different frame sizes */ + int blockl; + int nsub; + int nasub; + int no_of_bytes, no_of_words; + int lpc_n; + int state_short_len; + const iLBC_ULP_Inst_t *ULP_inst; + + /* synthesis filter state */ + float syntMem[LPC_FILTERORDER]; + + /* old LSF for interpolation */ + float lsfdeqold[LPC_FILTERORDER]; + + /* pitch lag estimated in enhancer and used in PLC */ + int last_lag; + + /* PLC state information */ + int prevLag, consPLICount, prevPLI, prev_enh_pl; + float prevLpc[LPC_FILTERORDER+1]; + float prevResidual[NSUB_MAX*SUBL]; + float per; + unsigned long seed; + + /* previous synthesis filter parameters */ + float old_syntdenum[(LPC_FILTERORDER + 1)*NSUB_MAX]; + + /* state of output HP filter */ + float hpomem[4]; + + /* enhancer state information */ + int use_enhancer; + float enh_buf[ENH_BUFL]; + float enh_period[ENH_NBLOCKS_TOT]; + +} iLBC_Dec_Inst_t; + +#endif + + |