FreeCalypso > hg > gsm-codec-lib
comparison libtwamr/vad2.h @ 410:0152c069d01f
libtwamr: integrate VAD2 main body
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 07 May 2024 01:14:14 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
409:4184ccc136a3 | 410:0152c069d01f |
---|---|
1 /* | |
2 ******************************************************************************** | |
3 * | |
4 * GSM AMR-NB speech codec R98 Version 7.6.0 December 12, 2001 | |
5 * R99 Version 3.3.0 | |
6 * REL-4 Version 4.1.0 | |
7 * | |
8 ******************************************************************************** | |
9 * | |
10 * File : vad2.h | |
11 * Purpose : Voice Activity Detection (VAD) for AMR (option 2) | |
12 * | |
13 ******************************************************************************** | |
14 */ | |
15 | |
16 #ifndef vad2_h | |
17 #define vad2_h "$Id $" | |
18 | |
19 #include "typedef.h" | |
20 | |
21 /***** Defines ****/ | |
22 | |
23 #define YES 1 | |
24 #define NO 0 | |
25 #define ON 1 | |
26 #define OFF 0 | |
27 #define TRUE 1 | |
28 #define FALSE 0 | |
29 | |
30 #define FRM_LEN 80 | |
31 #define DELAY 24 | |
32 #define FFT_LEN 128 | |
33 | |
34 #define NUM_CHAN 16 | |
35 #define LO_CHAN 0 | |
36 #define HI_CHAN 15 | |
37 | |
38 #define UPDATE_THLD 35 | |
39 #define HYSTER_CNT_THLD 6 | |
40 #define UPDATE_CNT_THLD 50 | |
41 | |
42 #define SHIFT_STATE_0 0 /* channel energy scaled as 22,9 */ | |
43 #define SHIFT_STATE_1 1 /* channel energy scaled as 27,4 */ | |
44 | |
45 #define NOISE_FLOOR_CHAN_0 512 /* 1.0 scaled as 22,9 */ | |
46 #define MIN_CHAN_ENRG_0 32 /* 0.0625 scaled as 22,9 */ | |
47 #define MIN_NOISE_ENRG_0 32 /* 0.0625 scaled as 22,9 */ | |
48 #define INE_NOISE_0 8192 /* 16.0 scaled as 22,9 */ | |
49 #define FRACTIONAL_BITS_0 9 /* used as input to fn10Log10() */ | |
50 | |
51 #define NOISE_FLOOR_CHAN_1 16 /* 1.0 scaled as 27,4 */ | |
52 #define MIN_CHAN_ENRG_1 1 /* 0.0625 scaled as 27,4 */ | |
53 #define MIN_NOISE_ENRG_1 1 /* 0.0625 scaled as 27,4 */ | |
54 #define INE_NOISE_1 256 /* 16.0 scaled as 27,4 */ | |
55 #define FRACTIONAL_BITS_1 4 /* used as input to fn10Log10() */ | |
56 | |
57 #define STATE_1_TO_0_SHIFT_R (FRACTIONAL_BITS_1-FRACTIONAL_BITS_0) /* state correction factor */ | |
58 #define STATE_0_TO_1_SHIFT_R (FRACTIONAL_BITS_0-FRACTIONAL_BITS_1) /* state correction factor */ | |
59 | |
60 #define HIGH_ALPHA 29491 /* 0.9 scaled as 0,15 */ | |
61 #define LOW_ALPHA 22938 /* 0.7 scaled as 0,15 */ | |
62 #define ALPHA_RANGE (HIGH_ALPHA - LOW_ALPHA) | |
63 #define DEV_THLD 7168 /* 28.0 scaled as 7,8 */ | |
64 | |
65 #define PRE_EMP_FAC (-26214) /* -0.8 scaled as 0,15 */ | |
66 | |
67 #define CEE_SM_FAC 18022 /* 0.55 scaled as 0,15 */ | |
68 #define ONE_MINUS_CEE_SM_FAC 14746 /* 0.45 scaled as 0,15 */ | |
69 | |
70 #define CNE_SM_FAC 3277 /* 0.1 scaled as 0,15 */ | |
71 #define ONE_MINUS_CNE_SM_FAC 29491 /* 0.9 scaled as 0,15 */ | |
72 | |
73 #define FFT_HEADROOM 2 | |
74 | |
75 | |
76 typedef struct | |
77 { | |
78 Word16 pre_emp_mem; | |
79 Word16 update_cnt; | |
80 Word16 hyster_cnt; | |
81 Word16 last_update_cnt; | |
82 Word16 ch_enrg_long_db[NUM_CHAN]; /* scaled as 7,8 */ | |
83 | |
84 Word32 Lframe_cnt; | |
85 Word32 Lch_enrg[NUM_CHAN]; /* scaled as 22,9 or 27,4 */ | |
86 Word32 Lch_noise[NUM_CHAN]; /* scaled as 22,9 */ | |
87 | |
88 Word16 last_normb_shift; /* last block norm shift count */ | |
89 | |
90 Word16 tsnr; /* total signal-to-noise ratio in dB (scaled as 7,8) */ | |
91 Word16 hangover; | |
92 Word16 burstcount; | |
93 Word16 fupdate_flag; /* forced update flag from previous frame */ | |
94 Word16 negSNRvar; /* Negative SNR variance (scaled as 7,8) */ | |
95 Word16 negSNRbias; /* sensitivity bias from negative SNR variance (scaled as 15,0) */ | |
96 | |
97 Word16 shift_state; /* use 22,9 or 27,4 scaling for ch_enrg[] */ | |
98 | |
99 Word32 L_R0; | |
100 Word32 L_Rmax; | |
101 Flag LTP_flag; /* Use to indicate the the LTP gain is > LTP_THRESH */ | |
102 | |
103 } vadState2; | |
104 | |
105 /**** Prototypes ****/ | |
106 | |
107 Word16 vad2 (Word16 *farray_ptr, vadState2 *st); | |
108 void vad2_reset (vadState2 *st); | |
109 | |
110 void r_fft (Word16 *farray_ptr); | |
111 void LTP_flag_update (vadState2 *st, Word16 mode); | |
112 | |
113 #endif |