www.pudn.com > VoiceActivityDetection.rar > cnst.h
/*--------------------------------------------------------------------------* * CNST.H * *--------------------------------------------------------------------------* * Codec constant parameters (coder and decoder) * *--------------------------------------------------------------------------*/ #ifndef cnst_h #define cnst_h #include "options.h" // do all setting in there #define CODEC_VERSION "AMR.WB+ ver 3.00 stereo (floating point)" #define FSCALE_DENOM 96 /* filter into decim_split.h */ #define FAC_FSCALE_MAX (FSCALE_DENOM*41/24) #define FAC_FSCALE_MIN (FSCALE_DENOM/2) #define USE_CASE_A 0 #define USE_CASE_B 1 #define L_FRAME_FSMAX 2*L_FRAME48k #define L_FRAME48k ((L_FRAME_PLUS/4)*15) #define L_FRAME44k ((L_FRAME_PLUS/128)*441) #define L_FRAME32k ((L_FRAME_PLUS/2)*5) #define L_FRAME24k ((L_FRAME_PLUS/8)*15) #define L_FRAME22k ((L_FRAME_PLUS/256)*441) #define L_FRAME16kPLUS ((L_FRAME_PLUS/4)*5) #define L_FRAME8k ((L_FRAME_PLUS/8)*5) #define L_NEXT24k ((L_NEXT/8)*15) #define L_NEXT16k ((L_NEXT/4)*5) #define L_NEXT8k ((L_NEXT/8)*5) #define L_FRAME11k ((L_FRAME_PLUS/512)*441) #define L_FILT_DECIM_FS (L_FILT_OVER_FS*6) #define L_FILT_OVER_FS 12 #define L_FILT_DECIM ((L_FILT_OVER+1)*60) #define L_FILT_OVER 12 #define L_FILT_SPLIT 24 #define L_FILT_JOIN 12 #define L_MEM_DECIM_SPLIT (2*(L_FILT_SPLIT+L_FILT_DECIM)) #define L_MEM_JOIN_OVER (2*(L_FILT_OVER+L_FILT_JOIN+L_FILT_JOIN)) #define L_FILT24k 23 /* codec constant assuming fs=12.8kHz */ #define L_OVLP 128 /* 80ms TCX overlap size (10 ms) */ #define L_TCX (1024+128) /* 80ms TCX Frame size (80ms + 10 ms overlap) */ #define L_FRAME_PLUS 1024 /* 80ms frame size (long TCX frame) */ #define L_DIV 256 /* 20ms frame size (ACELP or short TCX frame) */ #define NB_DIV 4 /* number of division (20ms) per 80ms frame */ #define NB_SUBFR 16 /* number of 5ms subframe per 80ms frame */ #define L_SUBFR 64 /* subframe size (5ms) */ #define L_NEXT 256 /* overhead in LP analysis (20ms) */ #define L_WINDOW 448 /* 35ms window size in LP analysis */ #define L_NEXT_HIGH_RATE 288 /* overhead in LP analysis */ #define L_WINDOW_HIGH_RATE 512 /* window size in LP analysis (50% overlap) */ #define L_TOTAL_PLUS (M+L_FRAME_PLUS+L_NEXT) /* total size of speech buffer. */ #define L_TOTAL_HIGH_RATE (M+L_FRAME_PLUS+L_NEXT_HIGH_RATE) #define M 16 /* order of LP filter */ #define MHF 8 /* order of LP filter for HF band */ #define L_FILT 12 /* Delay of up-sampling filter */ #define DELAY_SPLIT 54 /* Additional delay of mid band signal due to split filter */ #define DELAY_PF (L_FILT+L_SUBFR) /* decoder delay from post-filter e.tc*/ #define DELAY_PF_HIGH_RATE (L_FILT+(2*L_SUBFR)) /* decoder delay from post-filter e.tc*/ #define BWE 60.0f /* Bandwidth expansion in lag windowing */ #define WNC 1.0001f /* White noise correction factor in LPC */ //delay of STEREO need to be ajusted to new bass_postfilter delay (+64 samples) //before adding these new pitch limit for higher rate... #define PIT_MIN_12k8 34 /* Minimum pitch lag with resolution 1/4 */ #define PIT_FR2_12k8 128 /* Minimum pitch lag with resolution 1/2 */ #define PIT_FR1_12k8 160 /* Minimum pitch lag with resolution 1 */ #define PIT_MAX_12k8 231 /* Maximum pitch lag */ /* Maximum pitch lag for highest freq. scaling factor */ #define PIT_MAX_MAX (PIT_MAX_12k8 + (6*((((FAC_FSCALE_MAX*PIT_MIN_12k8)+(FSCALE_DENOM/2))/FSCALE_DENOM)-PIT_MIN_12k8))) #define L_INTERPOL (16+1) /* Length of filter for interpolation */ #define OPL_DECIM 2 /* Decimation in open-loop pitch analysis */ #ifndef PI #define PI 3.141592654 #endif #define PREEMPH_FAC 0.68f /* preemphasis factor */ #define GAMMA1 0.92f /* weighting factor (numerator) */ #define TILT_FAC 0.68f /* tilt factor (denominator) */ #define GAMMA_HF 0.9f /* weighting factor for HF weghted speech */ #define PIT_SHARP 0.85f /* pitch sharpening factor */ #define TILT_CODE 0.3f /* ACELP code preemphasis factor */ #define RANDOM_INITSEED 21845 /* own random init value */ #define L_MEANBUF 3 /* for isf recovery */ /* AMR_WB+ mode relative to AMR-WB core */ #define MODE_9k6 0 #define MODE_11k2 1 #define MODE_12k8 2 #define MODE_14k4 3 #define MODE_16k 4 #define MODE_18k4 5 #define MODE_20k 6 #define MODE_23k2 7 /* number of bits (for core codec) per 80ms frame according to the mode */ extern const int NBITS_CORE[8]; extern const int NBITS_CORE_AMR_WB[9]; /* number of bits for parametric bandwidth extension (BWE) */ #define NBITS_BWE (4*16) /* 4 packets x 16 bits = 0.8 kbps */ #define NPRM_BWE_DIV 6 /* 12 on 40ms frame, 24 on 80ms frame */ /* maximum number of bits (to set buffer size of bitstream vector) */ #define NBITS_MAX (48*80) /* define the buffer size at 32kbps */ /* number of packets per frame (4 packets of 20ms) */ #define N_PACK_MAX 4 /* codec mode: 0=ACELP, 1=TCX20, 2=TCX40, 3=TCX80 */ #define NBITS_MODE (4*2) /* 4 packets x 2 bits */ #define NBITS_LPC (46) /* AMR-WB LPC quantizer */ #define SYNC_WORD (short)0x6b21 /* packet sync transmitted every 20ms */ #define BIT_0 (short)0x007F #define BIT_1 (short)0x0081 /* AMRWB+ core parameters constants */ #define NPRM_LPC 7 /* number of prm for LPC */ #define NPRM_RE8 (L_TCX+(L_TCX/8)) #define NPRM_TCX80 (2+NPRM_RE8) /* TCX 80ms */ #define NPRM_TCX40 (2+(NPRM_RE8/2)) /* TCX 40ms */ #define NPRM_TCX20 (2+(NPRM_RE8/4)) /* TCX 20ms */ #define NPRM_DIV (NPRM_LPC+NPRM_TCX20) /* buffer size = NB_DIV*NPRM_DIV */ /* number of parameters on the decoder side (AVQ use 4 bits per parameter) */ #define DEC_NPRM_DIV (((24*80)/4)/NB_DIV) /* set for max of 24kbps (TCX) */ /* Stereo Constants */ /* Stereo Constants */ #define L_NEXT_ST24k ((L_NEXT_ST/8)*15) #define L_NEXT_ST16k ((L_NEXT_ST/4)*5) #define L_NEXT_ST8k ((L_NEXT_ST/8)*5) #define L_NEXT_ST_2k ((L_NEXT_ST * 5 / 32)) #define L_ANA (12800 * 30 / 1000) #define L_ANA_2k (2000 * 80/1000) #define L_B ((L_ANA - L_DIV)/2) #define L_B_2k ((L_ANA_2k - L_DIV_2k)/2) #define L_A L_B #define L_A_2k L_B_2k #define L_A_MAX (L_A > ((L_A_2k * 32)/5) ? L_A : ((L_A_2k * 32)/5)) #define N_COEFF_F2K 321 #define L_FDEL_64k ((N_COEFF_F2K * 2 - 1) - 1)/2 #define L_FDEL (L_FDEL_64k / 5) #define L_FDEL_2k (L_FDEL_64k / 32) #define L_BSP (2 * L_FDEL) #define L_BSP_2k ((L_BSP*5)/32) #define L_NEXT_ST (L_A_MAX + L_BSP) #define L_TOTAL_ST (M+L_FRAME_PLUS+L_A_MAX+L_BSP) /* total size of speech buffer in stereo mode */ #define L_TOTAL_ST_2k (L_B_2k + L_FRAME_2k + L_A_2k + L_BSP_2k) #define L_TOTAL_ST_hi (L_B + L_FRAME_PLUS + L_A_MAX) #define L_FILT_2k 128 #define L_DIV_2k ((L_DIV * 5)/32) #define L_FRAME_2k 160 #define L_NEXT_2k 80 #define L_OLD_SPEECH L_TOTAL_PLUS-L_FRAME_PLUS #define L_OLD_SPEECH_HIGH_RATE L_TOTAL_HIGH_RATE-L_FRAME_PLUS #define L_OLD_SPEECH_ST L_TOTAL_ST-L_FRAME_PLUS #define L_OLD_SPEECH_2k L_TOTAL_ST_2k-L_FRAME_2k #define L_OLD_SPEECH_hi L_TOTAL_ST_hi-L_FRAME_PLUS #define WIENER_ORDER 20 /* Filter order for wiener filters used in parametric stereo */ /* encoding. (Default value) */ #define WIENER_HI_ORDER WIENER_ORDER /* Filter order for wiener filters in high band (must be an even number) */ #define WIENER_LO_ORDER WIENER_ORDER /* Filter order for wiener filters in low band (must be an even number) */ #define MAXNCHOLES 21 /* Buffer sizes in cholesky decomposition */ /* Below, quantizer constants. Comments to be added. */ #define D_PAN_Q 0.5 #define MAX_NUMSTAGES 6 /* Maximum number of stages in MSVQ. */ #define INTENS_LO 8 #define INTENS_HI 8 #define INTENS_MAX (INTENS_LO > INTENS_HI ? INTENS_LO : INTENS_HI) /* TBD */ #define MA_COEFF 0.5 #define LO_SMSVQ_CBSIZE 32 /* Codebook size in MSVQ, low-band */ #define HI_SMSVQ_CBSIZE 32 /* Codebook size in MSVQ, hi-band */ #define LO_SMSVQ_CBBITS 5 /* Number of bits representing index of codebook, low-band */ #define HI_SMSVQ_CBBITS 5 /* Number of bits representing index of codebook, high-band */ #define CBBITS_MAX (LO_SMSVQ_CBSIZE > HI_SMSVQ_CBSIZE ? LO_SMSVQ_CBSIZE : HI_SMSVQ_CBSIZE) #define S_NSFR 8 /* Number of sub-frames in one 20 ms frame */ #define S_1_NSFR 0.125f /* Inverse of S_NSFR */ #define D_BPF (DELAY_PF+20) /* Bass postfilter delay used for stereo */ #define D_NC ((WIENER_LO_ORDER/2 * 32) / 5) /* Non causality delay */ #define NPRM_STEREO_DIV_X (NPRM_DIV_TCX_STEREO + NPRM_STEREO_HI_X + 1) #define MAX_NPRM_STEREO_DIV (NPRM_STEREO_DIV_X) extern const int nprm_stereo_hi_x[4]; // 2 msvq stages (filt) + 1 vq (gain) #define NPRM_STEREO_HI_X (2+1) // maximum: 2 msvq stages (filt) + 1 vq (gain) //#include "cnst_tcx_stereo.h" #define HI_FILT_ORDER 9 /* High stereo codebook */ // filter quantizers #define NSTAGES_FILT_HI_MSVQ4 1 #define SIZE_FILT_HI_MSVQ_4A 16 #define INTENS_FILT_HI_MSVQ4 1 #define NSTAGES_FILT_HI_MSVQ7 2 #define SIZE_FILT_HI_MSVQ_7A 16 #define SIZE_FILT_HI_MSVQ_7B 8 #define INTENS_FILT_HI_MSVQ7 8 // gain quantizers #define HI_GAIN_ORDER 2 #define NSTAGES_GAIN_HI_MSVQ2 1 #define SIZE_GAIN_HI_MSVQ_2A 4 #define INTENS_GAIN_HI_MSVQ2 1 #define NSTAGES_GAIN_HI_MSVQ5 1 #define SIZE_GAIN_HI_MSVQ_5A 32 #define INTENS_GAIN_HI_MSVQ5 1 #define FRAW 0 #define F3GP 1 #endif /* cnst_h */