FreeCalypso > hg > gsm-codec-lib
view libtwamr/vad2.h @ 478:936a08cc73ce
doc/AMR-library-API: describe the decoder
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 19 May 2024 21:32:31 +0000 |
parents | 0152c069d01f |
children |
line wrap: on
line source
/* ******************************************************************************** * * 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); void vad2_reset (vadState2 *st); void r_fft (Word16 *farray_ptr); void LTP_flag_update (vadState2 *st, Word16 mode); #endif