FreeCalypso > hg > gsm-codec-lib
comparison libtwamr/lflg_upd.c @ 411:bd5614fc780a
libtwamr: integrate VAD2 lflg_upd.c
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 07 May 2024 01:18:25 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
410:0152c069d01f | 411:bd5614fc780a |
---|---|
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 : lflg_upd.c | |
11 * Purpose : LTP_flag update for AMR VAD option 2 | |
12 * | |
13 ***************************************************************************** | |
14 */ | |
15 | |
16 #include "tw_amr.h" | |
17 #include "namespace.h" | |
18 #include "typedef.h" | |
19 #include "cnst.h" | |
20 #include "basic_op.h" | |
21 #include "oper_32b.h" | |
22 #include "no_count.h" | |
23 #include "vad2.h" | |
24 | |
25 /*************************************************************************** | |
26 * | |
27 * FUNCTION NAME: LTP_flag_update | |
28 * | |
29 * PURPOSE: | |
30 * Set LTP_flag if the LTP gain > LTP_THRESHOLD, where the value of | |
31 * LTP_THRESHOLD depends on the LTP analysis window length. | |
32 * | |
33 * INPUTS: | |
34 * | |
35 * mode | |
36 * AMR mode | |
37 * vadState->L_R0 | |
38 * LTP energy | |
39 * vadState->L_Rmax | |
40 * LTP maximum autocorrelation | |
41 * OUTPUTS: | |
42 * | |
43 * vadState->LTP_flag | |
44 * Set if LTP gain > LTP_THRESHOLD | |
45 * | |
46 * RETURN VALUE: | |
47 * | |
48 * none | |
49 * | |
50 *************************************************************************/ | |
51 | |
52 void LTP_flag_update (vadState2 * st, Word16 mode) | |
53 { | |
54 Word16 thresh; | |
55 Word16 hi1; | |
56 Word16 lo1; | |
57 Word32 Ltmp; | |
58 | |
59 test(); test(); | |
60 if ((sub(mode, MR475) == 0) || (sub(mode, MR515) == 0)) | |
61 { | |
62 thresh = (Word16)(32768.0*0.55); move16(); | |
63 } | |
64 else if (sub(mode, MR102) == 0) | |
65 { | |
66 thresh = (Word16)(32768.0*0.60); move16(); | |
67 } | |
68 else | |
69 { | |
70 thresh = (Word16)(32768.0*0.65); move16(); | |
71 } | |
72 | |
73 L_Extract (st->L_R0, &hi1, &lo1); | |
74 Ltmp = Mpy_32_16(hi1, lo1, thresh); test(); | |
75 if (L_sub(st->L_Rmax, Ltmp) > 0) | |
76 { | |
77 st->LTP_flag = TRUE; move16(); | |
78 } | |
79 else | |
80 { | |
81 st->LTP_flag = FALSE; move16(); | |
82 } | |
83 | |
84 return; | |
85 } |