FreeCalypso > hg > gsm-codec-lib
annotate libgsmefr/d_gains.c @ 341:450b090f2fd7
libtwamr: copy&adapt q_plsf5_tab.[ch] from libgsmefr
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Fri, 19 Apr 2024 00:27:46 +0000 | 
| parents | 9b07190a6d08 | 
| children | 
| rev | line source | 
|---|---|
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
1 /************************************************************************* | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
2 * | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
3 * FILE NAME: D_GAINS.C | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
4 * | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
5 * FUNCTIONS DEFINED IN THIS FILE: | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
6 * | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
7 * d_gain_pitch(), d_gain_code() and gmed5() | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
8 * | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
9 * MA prediction is performed on the innovation energy | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
10 * ( in dB/(20*log10(2)) ) with mean removed. | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
11 *************************************************************************/ | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
12 | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
13 #include "gsm_efr.h" | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
14 #include "typedef.h" | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
15 #include "namespace.h" | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
16 #include "basic_op.h" | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
17 #include "oper_32b.h" | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
18 #include "no_count.h" | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
19 #include "sig_proc.h" | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
20 #include "memops.h" | 
| 
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
21 #include "codec.h" | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
22 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
23 #include "gains_tb.h" | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
24 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
25 #include "cnst.h" | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
26 #include "dec_state.h" | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
27 #include "dtx.h" | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
28 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
29 /************************************************************************* | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
30 * | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
31 * FUNCTION: gmed5 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
32 * | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
33 * PURPOSE: calculates 5-point median. | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
34 * | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
35 * DESCRIPTION: | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
36 * | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
37 *************************************************************************/ | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
38 | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
39 static Word16 gmed5 ( /* out : index of the median value (0...4) */ | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
40 Word16 ind[] /* in : Past gain values */ | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
41 ) | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
42 { | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
43 Word16 i, j, ix = 0, tmp[5]; | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
44 Word16 max, tmp2[5]; | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
45 | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
46 Copy (ind, tmp2, 5); | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
47 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
48 for (i = 0; i < 5; i++) | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
49 { | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
50 max = -8192; move16 (); | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
51 for (j = 0; j < 5; j++) | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
52 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
53 if (tmp2[j] >= max) | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
54 { | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
55 max = tmp2[j]; move16 (); | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
56 ix = j; move16 (); | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
57 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
58 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
59 tmp2[ix] = -16384; move16 (); | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
60 tmp[i] = ix; move16 (); | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
61 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
62 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
63 return (ind[tmp[2]]); | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
64 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
65 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
66 /************************************************************************* | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
67 * | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
68 * FUNCTION: d_gain_pitch | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
69 * | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
70 * PURPOSE: decodes the pitch gain using the received index. | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
71 * | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
72 * DESCRIPTION: | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
73 * In case of no frame erasure, the gain is obtained from the | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
74 * quantization table at the given index; otherwise, a downscaled | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
75 * past gain is used. | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
76 * | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
77 *************************************************************************/ | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
78 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
79 Word16 d_gain_pitch ( /* out : quantized pitch gain */ | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
80 struct EFR_decoder_state *st, | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
81 Word16 index, /* in : index of quantization */ | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
82 Word16 bfi, /* in : bad frame indicator (good = 0) */ | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
83 Word16 state, | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
84 Word16 prev_bf, | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
85 Word16 rxdtx_ctrl | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
86 ) | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
87 { | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
88 static const Word16 pdown[7] = | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
89 { | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
90 32767, 32112, 32112, 26214, | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
91 9830, 6553, 6553 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
92 }; | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
93 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
94 Word16 gain, tmp, i; | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
95 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
96 if (bfi == 0) | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
97 { | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
98 if ((rxdtx_ctrl & RX_SP_FLAG) != 0) | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
99 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
100 gain = shr (qua_gain_pitch[index], 2); | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
101 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
102 if (prev_bf != 0) | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
103 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
104 if (gain > st->prev_gp) | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
105 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
106 gain = st->prev_gp; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
107 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
108 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
109 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
110 else | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
111 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
112 gain = 0; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
113 } | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
114 st->prev_gp = gain; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
115 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
116 else | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
117 { | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
118 if ((rxdtx_ctrl & RX_SP_FLAG) != 0) | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
119 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
120 tmp = gmed5 (st->pbuf); | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
121 | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
122 if (tmp < st->past_gain_pit) | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
123 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
124 st->past_gain_pit = tmp; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
125 } | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
126 gain = mult (pdown[state], st->past_gain_pit); | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
127 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
128 else | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
129 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
130 gain = 0; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
131 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
132 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
133 | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
134 st->past_gain_pit = gain; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
135 | 
| 
188
 
9b07190a6d08
libgsmefr/d_gains.c: perf opt
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
61 
diff
changeset
 | 
136 if (st->past_gain_pit > 4096) /* if (past_gain_pit > 1.0) */ | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
137 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
138 st->past_gain_pit = 4096; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
139 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
140 for (i = 1; i < 5; i++) | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
141 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
142 st->pbuf[i - 1] = st->pbuf[i]; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
143 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
144 | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
145 st->pbuf[4] = st->past_gain_pit; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
146 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
147 return gain; | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
148 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
149 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
150 /************************************************************************* | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
151 * | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
152 * FUNCTION: d_gain_code | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
153 * | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
154 * PURPOSE: decode the fixed codebook gain using the received index. | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
155 * | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
156 * DESCRIPTION: | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
157 * The received index gives the gain correction factor gamma. | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
158 * The quantized gain is given by g_q = g0 * gamma | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
159 * where g0 is the predicted gain. | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
160 * To find g0, 4th order MA prediction is applied to the mean-removed | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
161 * innovation energy in dB. | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
162 * In case of frame erasure, downscaled past gain is used. | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
163 * | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
164 *************************************************************************/ | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
165 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
166 /* average innovation energy. */ | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
167 /* MEAN_ENER = 36.0/constant, constant = 20*Log10(2) */ | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
168 #define MEAN_ENER 783741L /* 36/(20*log10(2)) */ | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
169 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
170 void d_gain_code ( | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
171 struct EFR_decoder_state *st, | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
172 Word16 index, /* input : received quantization index */ | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
173 Word16 code[], /* input : innovation codevector */ | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
174 Word16 lcode, /* input : codevector length */ | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
175 Word16 *gain_code, /* output: decoded innovation gain */ | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
176 Word16 bfi, /* input : bad frame indicator */ | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
177 Word16 state, | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
178 Word16 prev_bf, | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
179 Word16 rxdtx_ctrl, | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
180 Word16 i_subfr, | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
181 Word16 rx_dtx_state | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
182 ) | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
183 { | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
184 static const Word16 cdown[7] = | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
185 { | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
186 32767, 32112, 32112, 32112, | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
187 32112, 32112, 22937 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
188 }; | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
189 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
190 Word16 i, tmp; | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
191 Word16 gcode0, exp, frac, av_pred_en; | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
192 Word32 ener, ener_code; | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
193 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
194 if (((rxdtx_ctrl & RX_UPD_SID_QUANT_MEM) != 0) && (i_subfr == 0)) | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
195 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
196 st->gcode0_CN = update_gcode0_CN (st->gain_code_old_rx); | 
| 
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
197 st->gcode0_CN = shl (st->gcode0_CN, 4); | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
198 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
199 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
200 /* Handle cases of comfort noise fixed codebook gain decoding in | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
201 which past valid SID frames are repeated */ | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
202 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
203 if (((rxdtx_ctrl & RX_NO_TRANSMISSION) != 0) | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
204 || ((rxdtx_ctrl & RX_INVALID_SID_FRAME) != 0) | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
205 || ((rxdtx_ctrl & RX_LOST_SID_FRAME) != 0)) | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
206 { | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
207 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
208 if ((rxdtx_ctrl & RX_NO_TRANSMISSION) != 0) | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
209 { | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
210 /* DTX active: no transmission. Interpolate gain values | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
211 in memory */ | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
212 if (i_subfr == 0) | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
213 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
214 *gain_code = interpolate_CN_param (st->gain_code_old_CN, | 
| 
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
215 st->gain_code_new_CN, rx_dtx_state); | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
216 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
217 else | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
218 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
219 *gain_code = st->prev_gc; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
220 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
221 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
222 else | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
223 { /* Invalid or lost SID frame: | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
224 use gain values from last good SID frame */ | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
225 st->gain_code_old_CN = st->gain_code_new_CN; | 
| 
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
226 *gain_code = st->gain_code_new_CN; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
227 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
228 /* reset table of past quantized energies */ | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
229 for (i = 0; i < 4; i++) | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
230 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
231 st->past_qua_en[i] = -2381; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
232 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
233 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
234 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
235 if ((rxdtx_ctrl & RX_DTX_MUTING) != 0) | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
236 { | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
237 /* attenuate the gain value by 0.75 dB in each subframe */ | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
238 /* (total of 3 dB per frame) */ | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
239 st->gain_code_muting_CN = mult (st->gain_code_muting_CN, 30057); | 
| 
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
240 *gain_code = st->gain_code_muting_CN; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
241 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
242 else | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
243 { | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
244 /* Prepare for DTX muting by storing last good gain value */ | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
245 st->gain_code_muting_CN = st->gain_code_new_CN; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
246 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
247 | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
248 st->past_gain_code = *gain_code; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
249 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
250 for (i = 1; i < 5; i++) | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
251 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
252 st->gbuf[i - 1] = st->gbuf[i]; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
253 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
254 | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
255 st->gbuf[4] = st->past_gain_code; | 
| 
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
256 st->prev_gc = st->past_gain_code; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
257 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
258 return; | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
259 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
260 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
261 /*----------------- Test erasure ---------------*/ | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
262 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
263 if (bfi != 0) | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
264 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
265 tmp = gmed5 (st->gbuf); | 
| 
188
 
9b07190a6d08
libgsmefr/d_gains.c: perf opt
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
61 
diff
changeset
 | 
266 if (tmp < st->past_gain_code) | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
267 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
268 st->past_gain_code = tmp; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
269 } | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
270 st->past_gain_code = mult (st->past_gain_code, cdown[state]); | 
| 
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
271 *gain_code = st->past_gain_code; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
272 | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
273 av_pred_en = 0; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
274 for (i = 0; i < 4; i++) | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
275 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
276 av_pred_en = add (av_pred_en, st->past_qua_en[i]); | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
277 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
278 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
279 /* av_pred_en = 0.25*av_pred_en - 4/(20Log10(2)) */ | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
280 av_pred_en = mult (av_pred_en, 8192); /* *= 0.25 */ | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
281 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
282 /* if (av_pred_en < -14/(20Log10(2))) av_pred_en = .. */ | 
| 
188
 
9b07190a6d08
libgsmefr/d_gains.c: perf opt
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
61 
diff
changeset
 | 
283 if (av_pred_en < -2381) | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
284 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
285 av_pred_en = -2381; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
286 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
287 for (i = 3; i > 0; i--) | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
288 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
289 st->past_qua_en[i] = st->past_qua_en[i - 1]; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
290 } | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
291 st->past_qua_en[0] = av_pred_en; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
292 for (i = 1; i < 5; i++) | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
293 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
294 st->gbuf[i - 1] = st->gbuf[i]; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
295 } | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
296 st->gbuf[4] = st->past_gain_code; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
297 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
298 /* Use the most recent comfort noise fixed codebook gain value | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
299 for updating the fixed codebook gain history */ | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
300 if (st->gain_code_new_CN == 0) | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
301 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
302 tmp = st->prev_gc; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
303 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
304 else | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
305 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
306 tmp = st->gain_code_new_CN; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
307 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
308 | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
309 update_gain_code_history_rx (st, tmp); | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
310 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
311 if (sub (i_subfr, (3 * L_SUBFR)) == 0) | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
312 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
313 st->gain_code_old_CN = *gain_code; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
314 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
315 return; | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
316 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
317 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
318 if ((rxdtx_ctrl & RX_SP_FLAG) != 0) | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
319 { | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
320 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
321 /*-------------- Decode codebook gain ---------------*/ | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
322 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
323 /*-------------------------------------------------------------------* | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
324 * energy of code: * | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
325 * ~~~~~~~~~~~~~~~ * | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
326 * ener_code = 10 * Log10(energy/lcode) / constant * | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
327 * = 1/2 * Log2(energy/lcode) * | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
328 * constant = 20*Log10(2) * | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
329 *-------------------------------------------------------------------*/ | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
330 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
331 /* ener_code = log10(ener_code/lcode) / (20*log10(2)) */ | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
332 ener_code = 0; move32 (); | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
333 for (i = 0; i < lcode; i++) | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
334 { | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
335 ener_code = L_mac (ener_code, code[i], code[i]); | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
336 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
337 /* ener_code = ener_code / lcode */ | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
338 ener_code = L_mult (round (ener_code), 26214); | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
339 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
340 /* ener_code = 1/2 * Log2(ener_code) */ | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
341 Log2 (ener_code, &exp, &frac); | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
342 ener_code = L_Comp (sub (exp, 30), frac); | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
343 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
344 /* predicted energy */ | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
345 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
346 ener = MEAN_ENER; move32 (); | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
347 for (i = 0; i < 4; i++) | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
348 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
349 ener = L_mac (ener, st->past_qua_en[i], st->pred[i]); | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
350 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
351 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
352 /*-------------------------------------------------------------------* | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
353 * predicted codebook gain * | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
354 * ~~~~~~~~~~~~~~~~~~~~~~~ * | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
355 * gcode0 = Pow10( (ener*constant - ener_code*constant) / 20 ) * | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
356 * = Pow2(ener-ener_code) * | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
357 * constant = 20*Log10(2) * | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
358 *-------------------------------------------------------------------*/ | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
359 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
360 ener = L_shr (L_sub (ener, ener_code), 1); | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
361 L_Extract (ener, &exp, &frac); | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
362 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
363 gcode0 = extract_l (Pow2 (exp, frac)); /* predicted gain */ | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
364 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
365 gcode0 = shl (gcode0, 4); | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
366 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
367 *gain_code = mult (qua_gain_code[index], gcode0); move16 (); | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
368 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
369 if (prev_bf != 0) | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
370 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
371 if (sub (*gain_code, st->prev_gc) > 0) | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
372 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
373 *gain_code = st->prev_gc; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
374 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
375 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
376 /*-------------------------------------------------------------------* | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
377 * update table of past quantized energies * | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
378 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
379 * past_qua_en = 20 * Log10(qua_gain_code) / constant * | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
380 * = Log2(qua_gain_code) * | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
381 * constant = 20*Log10(2) * | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
382 *-------------------------------------------------------------------*/ | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
383 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
384 for (i = 3; i > 0; i--) | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
385 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
386 st->past_qua_en[i] = st->past_qua_en[i - 1]; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
387 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
388 Log2 (L_deposit_l (qua_gain_code[index]), &exp, &frac); | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
389 | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
390 st->past_qua_en[0] = shr (frac, 5); | 
| 
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
391 st->past_qua_en[0] = add (st->past_qua_en[0], shl (sub (exp, 11), 10)); | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
392 | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
393 update_gain_code_history_rx (st, *gain_code); | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
394 | 
| 
188
 
9b07190a6d08
libgsmefr/d_gains.c: perf opt
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
61 
diff
changeset
 | 
395 if (i_subfr == (3 * L_SUBFR)) | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
396 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
397 st->gain_code_old_CN = *gain_code; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
398 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
399 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
400 else | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
401 { | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
402 if (((rxdtx_ctrl & RX_FIRST_SID_UPDATE) != 0) && (i_subfr == 0)) | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
403 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
404 st->gain_code_new_CN = mult (st->gcode0_CN, qua_gain_code[index]); | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
405 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
406 /*---------------------------------------------------------------* | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
407 * reset table of past quantized energies * | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
408 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
409 *---------------------------------------------------------------*/ | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
410 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
411 for (i = 0; i < 4; i++) | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
412 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
413 st->past_qua_en[i] = -2381; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
414 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
415 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
416 if (((rxdtx_ctrl & RX_CONT_SID_UPDATE) != 0) && (i_subfr == 0)) | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
417 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
418 st->gain_code_old_CN = st->gain_code_new_CN; | 
| 
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
419 st->gain_code_new_CN = mult (st->gcode0_CN, qua_gain_code[index]); | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
420 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
421 if (i_subfr == 0) | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
422 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
423 *gain_code = interpolate_CN_param (st->gain_code_old_CN, | 
| 
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
424 st->gain_code_new_CN, | 
| 
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
425 rx_dtx_state); | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
426 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
427 else | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
428 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
429 *gain_code = st->prev_gc; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
430 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
431 } | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
432 | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
433 st->past_gain_code = *gain_code; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
434 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
435 for (i = 1; i < 5; i++) | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
436 { | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
437 st->gbuf[i - 1] = st->gbuf[i]; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
438 } | 
| 
61
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
439 st->gbuf[4] = st->past_gain_code; | 
| 
 
a18782a7d270
libgsmefr: d_gains.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
53 
diff
changeset
 | 
440 st->prev_gc = st->past_gain_code; | 
| 
53
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
441 | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
442 return; | 
| 
 
49dd1ac8e75b
libgsmefr: import most *.c files from ETSI source
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
443 } | 
