123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- /*
- ********************************************************************************
- *
- * GSM AMR-NB speech codec R98 Version 7.6.0 December 12, 2001
- * R99 Version 3.3.0
- * REL-4 Version 4.1.0
- *
- ********************************************************************************
- *
- * File : vad2.h
- * Purpose : Voice Activity Detection (VAD) for AMR (option 2)
- *
- ********************************************************************************
- */
- #ifndef vad2_h
- #define vad2_h "$Id $"
- #include "typedef.h"
- /***** Defines ****/
- #define YES 1
- #define NO 0
- #define ON 1
- #define OFF 0
- #define TRUE 1
- #define FALSE 0
- #define FRM_LEN 80
- #define DELAY 24
- #define FFT_LEN 128
- #define NUM_CHAN 16
- #define LO_CHAN 0
- #define HI_CHAN 15
- #define UPDATE_THLD 35
- #define HYSTER_CNT_THLD 6
- #define UPDATE_CNT_THLD 50
- #define SHIFT_STATE_0 0 /* channel energy scaled as 22,9 */
- #define SHIFT_STATE_1 1 /* channel energy scaled as 27,4 */
- #define NOISE_FLOOR_CHAN_0 512 /* 1.0 scaled as 22,9 */
- #define MIN_CHAN_ENRG_0 32 /* 0.0625 scaled as 22,9 */
- #define MIN_NOISE_ENRG_0 32 /* 0.0625 scaled as 22,9 */
- #define INE_NOISE_0 8192 /* 16.0 scaled as 22,9 */
- #define FRACTIONAL_BITS_0 9 /* used as input to fn10Log10() */
- #define NOISE_FLOOR_CHAN_1 16 /* 1.0 scaled as 27,4 */
- #define MIN_CHAN_ENRG_1 1 /* 0.0625 scaled as 27,4 */
- #define MIN_NOISE_ENRG_1 1 /* 0.0625 scaled as 27,4 */
- #define INE_NOISE_1 256 /* 16.0 scaled as 27,4 */
- #define FRACTIONAL_BITS_1 4 /* used as input to fn10Log10() */
- #define STATE_1_TO_0_SHIFT_R (FRACTIONAL_BITS_1-FRACTIONAL_BITS_0) /* state correction factor */
- #define STATE_0_TO_1_SHIFT_R (FRACTIONAL_BITS_0-FRACTIONAL_BITS_1) /* state correction factor */
- #define HIGH_ALPHA 29491 /* 0.9 scaled as 0,15 */
- #define LOW_ALPHA 22938 /* 0.7 scaled as 0,15 */
- #define ALPHA_RANGE (HIGH_ALPHA - LOW_ALPHA)
- #define DEV_THLD 7168 /* 28.0 scaled as 7,8 */
- #define PRE_EMP_FAC (-26214) /* -0.8 scaled as 0,15 */
- #define CEE_SM_FAC 18022 /* 0.55 scaled as 0,15 */
- #define ONE_MINUS_CEE_SM_FAC 14746 /* 0.45 scaled as 0,15 */
- #define CNE_SM_FAC 3277 /* 0.1 scaled as 0,15 */
- #define ONE_MINUS_CNE_SM_FAC 29491 /* 0.9 scaled as 0,15 */
- #define FFT_HEADROOM 2
- typedef struct
- {
- Word16 pre_emp_mem;
- Word16 update_cnt;
- Word16 hyster_cnt;
- Word16 last_update_cnt;
- Word16 ch_enrg_long_db[NUM_CHAN]; /* scaled as 7,8 */
- Word32 Lframe_cnt;
- Word32 Lch_enrg[NUM_CHAN]; /* scaled as 22,9 or 27,4 */
- Word32 Lch_noise[NUM_CHAN]; /* scaled as 22,9 */
- Word16 last_normb_shift; /* last block norm shift count */
- Word16 tsnr; /* total signal-to-noise ratio in dB (scaled as 7,8) */
- Word16 hangover;
- Word16 burstcount;
- Word16 fupdate_flag; /* forced update flag from previous frame */
- Word16 negSNRvar; /* Negative SNR variance (scaled as 7,8) */
- Word16 negSNRbias; /* sensitivity bias from negative SNR variance (scaled as 15,0) */
- Word16 shift_state; /* use 22,9 or 27,4 scaling for ch_enrg[] */
- Word32 L_R0;
- Word32 L_Rmax;
- Flag LTP_flag; /* Use to indicate the the LTP gain is > LTP_THRESH */
- } vadState2;
- /**** Prototypes ****/
- Word16 vad2 (Word16 *farray_ptr, vadState2 *st);
- int vad2_init (vadState2 **st);
- int vad2_reset (vadState2 *st);
- void vad2_exit (vadState2 **state);
- void r_fft_ex (Word16 *farray_ptr);
- void LTP_flag_update (vadState2 *st, Word16 mode);
- #endif
|