FreeCalypso > hg > gsm-codec-lib
annotate libgsmefr/dtx_enc.c @ 525:c95e89367321
libgsmfr2: add gsmfr_preproc_good_frame_hm()
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Thu, 19 Sep 2024 06:42:01 +0000 | 
| parents | cf39a90f5196 | 
| children | 
| rev | line source | 
|---|---|
| 
119
 
c1d53064b410
libgsmefr: split dtx.c into dtx_{common,dec,enc}.c
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
67 
diff
changeset
 | 
1 /* | 
| 
 
c1d53064b410
libgsmefr: split dtx.c into dtx_{common,dec,enc}.c
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
67 
diff
changeset
 | 
2 * This file is a product of splitting ETSI EFR dtx.c into parts; | 
| 
 
c1d53064b410
libgsmefr: split dtx.c into dtx_{common,dec,enc}.c
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
67 
diff
changeset
 | 
3 * the present module is the encoder-specific part. | 
| 
 
c1d53064b410
libgsmefr: split dtx.c into dtx_{common,dec,enc}.c
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
67 
diff
changeset
 | 
4 */ | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
5 | 
| 
67
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
6 #include "gsm_efr.h" | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
7 #include "typedef.h" | 
| 
67
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
8 #include "namespace.h" | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
9 #include "basic_op.h" | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
10 #include "cnst.h" | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
11 #include "sig_proc.h" | 
| 
67
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
12 #include "memops.h" | 
| 
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
13 #include "no_count.h" | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
14 #include "dtx.h" | 
| 
119
 
c1d53064b410
libgsmefr: split dtx.c into dtx_{common,dec,enc}.c
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
67 
diff
changeset
 | 
15 #include "dtx_defs.h" | 
| 
67
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
16 #include "enc_state.h" | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
17 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
18 /************************************************************************* | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
19 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
20 * FUNCTION NAME: reset_tx_dtx | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
21 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
22 * PURPOSE: Resets the static variables of the TX DTX handler to their | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
23 * initial values | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
24 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
25 *************************************************************************/ | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
26 | 
| 
67
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
27 void reset_tx_dtx (struct EFR_encoder_state *st) | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
28 { | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
29 Word16 i; | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
30 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
31 /* suppose infinitely long speech period before start */ | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
32 | 
| 
67
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
33 st->txdtx_hangover = DTX_HANGOVER; | 
| 
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
34 st->txdtx_N_elapsed = 0x7fff; | 
| 
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
35 st->txdtx_ctrl = TX_SP_FLAG | TX_VAD_FLAG; | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
36 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
37 for (i = 0; i < 6; i++) | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
38 { | 
| 
67
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
39 st->old_CN_mem_tx[i] = 0; | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
40 } | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
41 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
42 for (i = 0; i < DTX_HANGOVER; i++) | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
43 { | 
| 
67
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
44 st->lsf_old_tx[i][0] = 1384; | 
| 
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
45 st->lsf_old_tx[i][1] = 2077; | 
| 
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
46 st->lsf_old_tx[i][2] = 3420; | 
| 
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
47 st->lsf_old_tx[i][3] = 5108; | 
| 
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
48 st->lsf_old_tx[i][4] = 6742; | 
| 
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
49 st->lsf_old_tx[i][5] = 8122; | 
| 
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
50 st->lsf_old_tx[i][6] = 9863; | 
| 
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
51 st->lsf_old_tx[i][7] = 11092; | 
| 
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
52 st->lsf_old_tx[i][8] = 12714; | 
| 
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
53 st->lsf_old_tx[i][9] = 13701; | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
54 } | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
55 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
56 for (i = 0; i < 4 * DTX_HANGOVER; i++) | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
57 { | 
| 
67
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
58 st->gain_code_old_tx[i] = 0; | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
59 } | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
60 | 
| 
67
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
61 st->L_pn_seed_tx = PN_INITIAL_SEED; | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
62 | 
| 
67
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
63 st->buf_p_tx = 0; | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
64 return; | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
65 } | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
66 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
67 /************************************************************************* | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
68 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
69 * FUNCTION NAME: tx_dtx | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
70 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
71 * PURPOSE: DTX handler of the speech encoder. Determines when to add | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
72 * the hangover period to the end of the speech burst, and | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
73 * also determines when to use old SID parameters, and when | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
74 * to update the SID parameters. This function also initializes | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
75 * the pseudo noise generator shift register. | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
76 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
77 * Operation of the TX DTX handler is based on the VAD flag | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
78 * given as input from the speech encoder. | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
79 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
80 * INPUTS: VAD_flag Voice activity decision | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
81 * *txdtx_ctrl Old encoder DTX control word | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
82 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
83 * OUTPUTS: *txdtx_ctrl Updated encoder DTX control word | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
84 * L_pn_seed_tx Initialized pseudo noise generator shift | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
85 * register (global variable) | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
86 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
87 * RETURN VALUE: none | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
88 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
89 *************************************************************************/ | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
90 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
91 void tx_dtx ( | 
| 
67
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
92 struct EFR_encoder_state *st, | 
| 
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
93 Word16 VAD_flag | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
94 ) | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
95 { | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
96 /* N_elapsed (frames since last SID update) is incremented. If SID | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
97 is updated N_elapsed is cleared later in this function */ | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
98 | 
| 
67
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
99 st->txdtx_N_elapsed = add (st->txdtx_N_elapsed, 1); | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
100 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
101 /* If voice activity was detected, reset hangover counter */ | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
102 | 
| 
193
 
cf39a90f5196
libgsmefr/dtx_enc.c: perf opt
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
119 
diff
changeset
 | 
103 if (VAD_flag == 1) | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
104 { | 
| 
67
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
105 st->txdtx_hangover = DTX_HANGOVER; | 
| 
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
106 st->txdtx_ctrl = TX_SP_FLAG | TX_VAD_FLAG; | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
107 } | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
108 else | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
109 { | 
| 
67
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
110 if (st->txdtx_hangover == 0) | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
111 { | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
112 /* Hangover period is over, SID should be updated */ | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
113 | 
| 
67
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
114 st->txdtx_N_elapsed = 0; | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
115 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
116 /* Check if this is the first frame after hangover period */ | 
| 
67
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
117 if ((st->txdtx_ctrl & TX_HANGOVER_ACTIVE) != 0) | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
118 { | 
| 
67
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
119 st->txdtx_ctrl = TX_PREV_HANGOVER_ACTIVE | 
| 
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
120 | TX_SID_UPDATE; | 
| 
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
121 st->L_pn_seed_tx = PN_INITIAL_SEED; | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
122 } | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
123 else | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
124 { | 
| 
67
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
125 st->txdtx_ctrl = TX_SID_UPDATE; | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
126 } | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
127 } | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
128 else | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
129 { | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
130 /* Hangover period is not over, update hangover counter */ | 
| 
193
 
cf39a90f5196
libgsmefr/dtx_enc.c: perf opt
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
119 
diff
changeset
 | 
131 st->txdtx_hangover--; | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
132 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
133 /* Check if elapsed time from last SID update is greater than | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
134 threshold. If not, set SP=0 (although hangover period is not | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
135 over) and use old SID parameters for new SID frame. | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
136 N_elapsed counter must be summed with hangover counter in order | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
137 to avoid erroneus SP=1 decision in case when N_elapsed is grown | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
138 bigger than threshold and hangover period is still active */ | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
139 | 
| 
193
 
cf39a90f5196
libgsmefr/dtx_enc.c: perf opt
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
119 
diff
changeset
 | 
140 if (add (st->txdtx_N_elapsed, st->txdtx_hangover) < | 
| 
 
cf39a90f5196
libgsmefr/dtx_enc.c: perf opt
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
119 
diff
changeset
 | 
141 DTX_ELAPSED_THRESHOLD) | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
142 { | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
143 /* old SID frame should be used */ | 
| 
67
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
144 st->txdtx_ctrl = TX_USE_OLD_SID; | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
145 } | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
146 else | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
147 { | 
| 
67
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
148 if ((st->txdtx_ctrl & TX_HANGOVER_ACTIVE) != 0) | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
149 { | 
| 
67
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
150 st->txdtx_ctrl = TX_PREV_HANGOVER_ACTIVE | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
151 | TX_HANGOVER_ACTIVE | 
| 
67
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
152 | TX_SP_FLAG; | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
153 } | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
154 else | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
155 { | 
| 
67
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
156 st->txdtx_ctrl = TX_HANGOVER_ACTIVE | 
| 
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
157 | TX_SP_FLAG; | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
158 } | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
159 } | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
160 } | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
161 } | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
162 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
163 return; | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
164 } | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
165 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
166 /************************************************************************* | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
167 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
168 * FUNCTION NAME: CN_encoding | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
169 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
170 * PURPOSE: Encoding of the comfort noise parameters into a SID frame. | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
171 * Use old SID parameters if necessary. Set the parameter | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
172 * indices not used by comfort noise parameters to zero. | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
173 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
174 * INPUTS: params[0..56] Comfort noise parameter frame from the | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
175 * speech encoder | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
176 * txdtx_ctrl TX DTX handler control word | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
177 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
178 * OUTPUTS: params[0..56] Comfort noise encoded parameter frame | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
179 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
180 * RETURN VALUE: none | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
181 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
182 *************************************************************************/ | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
183 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
184 void CN_encoding ( | 
| 
67
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
185 struct EFR_encoder_state *st, | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
186 Word16 params[], | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
187 Word16 txdtx_ctrl | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
188 ) | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
189 { | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
190 Word16 i; | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
191 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
192 if ((txdtx_ctrl & TX_SID_UPDATE) != 0) | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
193 { | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
194 /* Store new CN parameters in memory to be used later as old | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
195 CN parameters */ | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
196 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
197 /* LPC parameter indices */ | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
198 for (i = 0; i < 5; i++) | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
199 { | 
| 
67
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
200 st->old_CN_mem_tx[i] = params[i]; | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
201 } | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
202 /* Codebook index computed in last subframe */ | 
| 
67
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
203 st->old_CN_mem_tx[5] = params[56]; | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
204 } | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
205 if ((txdtx_ctrl & TX_USE_OLD_SID) != 0) | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
206 { | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
207 /* Use old CN parameters previously stored in memory */ | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
208 for (i = 0; i < 5; i++) | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
209 { | 
| 
67
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
210 params[i] = st->old_CN_mem_tx[i]; | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
211 } | 
| 
67
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
212 params[17] = st->old_CN_mem_tx[5]; | 
| 
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
213 params[30] = st->old_CN_mem_tx[5]; | 
| 
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
214 params[43] = st->old_CN_mem_tx[5]; | 
| 
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
215 params[56] = st->old_CN_mem_tx[5]; | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
216 } | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
217 /* Set all the rest of the parameters to zero (SID codeword will | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
218 be written later) */ | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
219 for (i = 0; i < 12; i++) | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
220 { | 
| 
67
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
221 params[i + 5] = 0; | 
| 
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
222 params[i + 18] = 0; | 
| 
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
223 params[i + 31] = 0; | 
| 
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
224 params[i + 44] = 0; | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
225 } | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
226 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
227 return; | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
228 } | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
229 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
230 /************************************************************************* | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
231 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
232 * FUNCTION NAME: aver_lsf_history | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
233 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
234 * PURPOSE: Compute the averaged LSF parameter vector. Computation is | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
235 * performed by averaging the LSF parameter vectors which exist | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
236 * in the LSF parameter history, together with the LSF | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
237 * parameter vectors of the current frame. | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
238 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
239 * INPUTS: lsf_old[0..DTX_HANGOVER-1][0..M-1] | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
240 * LSF parameter history | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
241 * lsf1[0..M-1] LSF vector of the 1st half of the frame | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
242 * lsf2[0..M-1] LSF vector of the 2nd half of the frame | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
243 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
244 * OUTPUTS: lsf_aver[0..M-1] Averaged LSF parameter vector | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
245 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
246 * RETURN VALUE: none | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
247 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
248 *************************************************************************/ | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
249 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
250 void aver_lsf_history ( | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
251 Word16 lsf_old[DTX_HANGOVER][M], | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
252 Word16 lsf1[M], | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
253 Word16 lsf2[M], | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
254 Word16 lsf_aver[M] | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
255 ) | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
256 { | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
257 Word16 i, j; | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
258 Word32 L_temp; | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
259 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
260 for (j = 0; j < M; j++) | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
261 { | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
262 L_temp = L_mult (0x3fff, lsf1[j]); | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
263 L_temp = L_mac (L_temp, 0x3fff, lsf2[j]); | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
264 L_temp = L_mult (INV_DTX_HANGOVER_P1, extract_h (L_temp)); | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
265 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
266 for (i = 0; i < DTX_HANGOVER; i++) | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
267 { | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
268 L_temp = L_mac (L_temp, INV_DTX_HANGOVER_P1, lsf_old[i][j]); | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
269 } | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
270 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
271 lsf_aver[j] = extract_h (L_temp); move16 (); | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
272 } | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
273 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
274 return; | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
275 } | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
276 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
277 /************************************************************************* | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
278 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
279 * FUNCTION NAME: update_gain_code_history_tx | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
280 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
281 * PURPOSE: Update the fixed codebook gain parameter history of the | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
282 * encoder. The fixed codebook gain parameters kept in the buffer | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
283 * are used later for computing the reference fixed codebook | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
284 * gain parameter value and the averaged fixed codebook gain | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
285 * parameter value. | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
286 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
287 * INPUTS: new_gain_code New fixed codebook gain value | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
288 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
289 * gain_code_old_tx[0..4*DTX_HANGOVER-1] | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
290 * Old fixed codebook gain history of encoder | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
291 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
292 * OUTPUTS: gain_code_old_tx[0..4*DTX_HANGOVER-1] | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
293 * Updated fixed codebook gain history of encoder | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
294 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
295 * RETURN VALUE: none | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
296 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
297 *************************************************************************/ | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
298 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
299 void update_gain_code_history_tx ( | 
| 
67
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
300 struct EFR_encoder_state *st, | 
| 
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
301 Word16 new_gain_code | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
302 ) | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
303 { | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
304 /* Circular buffer */ | 
| 
67
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
305 st->gain_code_old_tx[st->buf_p_tx] = new_gain_code; | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
306 | 
| 
193
 
cf39a90f5196
libgsmefr/dtx_enc.c: perf opt
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
119 
diff
changeset
 | 
307 if (st->buf_p_tx == (4 * DTX_HANGOVER - 1)) | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
308 { | 
| 
67
 
58b64224d4ac
libgsmefr: dtx.c compiles
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
66 
diff
changeset
 | 
309 st->buf_p_tx = 0; | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
310 } | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
311 else | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
312 { | 
| 
193
 
cf39a90f5196
libgsmefr/dtx_enc.c: perf opt
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
119 
diff
changeset
 | 
313 st->buf_p_tx++; | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
314 } | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
315 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
316 return; | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
317 } | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
318 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
319 /************************************************************************* | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
320 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
321 * FUNCTION NAME: compute_CN_excitation_gain | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
322 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
323 * PURPOSE: Compute the unquantized fixed codebook gain. Computation is | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
324 * based on the energy of the Linear Prediction residual signal. | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
325 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
326 * INPUTS: res2[0..39] Linear Prediction residual signal | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
327 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
328 * OUTPUTS: none | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
329 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
330 * RETURN VALUE: Unquantized fixed codebook gain | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
331 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
332 *************************************************************************/ | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
333 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
334 Word16 compute_CN_excitation_gain ( | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
335 Word16 res2[L_SUBFR] | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
336 ) | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
337 { | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
338 Word16 i, norm, norm1, temp, overfl; | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
339 Word32 L_temp; | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
340 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
341 /* Compute the energy of the LP residual signal */ | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
342 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
343 norm = 0; move16 (); | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
344 do | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
345 { | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
346 overfl = 0; move16 (); | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
347 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
348 L_temp = 0L; move32 (); | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
349 for (i = 0; i < L_SUBFR; i++) | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
350 { | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
351 temp = shr (res2[i], norm); | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
352 L_temp = L_mac (L_temp, temp, temp); | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
353 } | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
354 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
355 test (); | 
| 
193
 
cf39a90f5196
libgsmefr/dtx_enc.c: perf opt
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
119 
diff
changeset
 | 
356 if (L_temp == MAX_32) | 
| 
66
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
357 { | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
358 norm = add (norm, 1); | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
359 overfl = 1; move16 (); /* Set the overflow flag */ | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
360 } | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
361 test (); | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
362 } | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
363 while (overfl != 0); | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
364 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
365 L_temp = L_add (L_temp, 1L); /* Avoid the case of all zeros */ | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
366 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
367 /* Take the square root of the obtained energy value (sqroot is a 2nd | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
368 order Taylor series approximation) */ | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
369 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
370 norm1 = norm_l (L_temp); | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
371 temp = extract_h (L_shl (L_temp, norm1)); | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
372 L_temp = L_mult (temp, temp); | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
373 L_temp = L_sub (805306368L, L_shr (L_temp, 3)); | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
374 L_temp = L_add (L_temp, L_mult (24576, temp)); | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
375 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
376 temp = extract_h (L_temp); | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
377 test (); logic16 (); | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
378 if ((norm1 & 0x0001) != 0) | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
379 { | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
380 temp = mult_r (temp, 23170); | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
381 norm1 = sub (norm1, 1); | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
382 } | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
383 /* Divide the result of sqroot operation by sqroot(10) */ | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
384 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
385 temp = mult_r (temp, 10362); | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
386 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
387 /* Re-scale to get the final value */ | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
388 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
389 norm1 = shr (norm1, 1); | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
390 norm1 = sub (norm1, norm); | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
391 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
392 test (); | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
393 if (norm1 >= 0) | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
394 { | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
395 temp = shr (temp, norm1); | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
396 } | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
397 else | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
398 { | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
399 temp = shl (temp, abs_s (norm1)); | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
400 } | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
401 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
402 return temp; | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
403 } | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
404 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
405 /************************************************************************* | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
406 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
407 * FUNCTION NAME: aver_gain_code_history | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
408 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
409 * PURPOSE: Compute the averaged fixed codebook gain parameter value. | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
410 * Computation is performed by averaging the fixed codebook | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
411 * gain parameter values which exist in the fixed codebook | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
412 * gain parameter history, together with the fixed codebook | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
413 * gain parameter value of the current subframe. | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
414 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
415 * INPUTS: CN_excitation_gain | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
416 * Unquantized fixed codebook gain value | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
417 * of the current subframe | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
418 * gain_code_old[0..4*DTX_HANGOVER-1] | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
419 * fixed codebook gain parameter history | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
420 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
421 * OUTPUTS: none | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
422 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
423 * RETURN VALUE: Averaged fixed codebook gain value | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
424 * | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
425 *************************************************************************/ | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
426 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
427 Word16 aver_gain_code_history ( | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
428 Word16 CN_excitation_gain, | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
429 Word16 gain_code_old[4 * DTX_HANGOVER] | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
430 ) | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
431 { | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
432 Word16 i; | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
433 Word32 L_ret; | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
434 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
435 L_ret = L_mult (0x470, CN_excitation_gain); | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
436 | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
437 for (i = 0; i < (4 * DTX_HANGOVER); i++) | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
438 { | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
439 L_ret = L_mac (L_ret, 0x470, gain_code_old[i]); | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
440 } | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
441 return extract_h (L_ret); | 
| 
 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
442 } | 
