FreeCalypso > hg > gsm-codec-lib
annotate libgsmefr/dtx.c @ 113:269d341db403
libgsmefr: implement main encoder wrapper
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 29 Nov 2022 07:30:39 +0000 |
parents | 58b64224d4ac |
children |
rev | line source |
---|---|
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /*************************************************************************** |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 * File Name: dtx.c |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 * Purpose: Contains functions for performing DTX operation and comfort |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 * noise generation. |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 * Below is a listing of all the functions appearing in the file. |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 * The functions are arranged according to their purpose. Under |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 * each heading, the ordering is hierarchical. |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 * Resetting of static variables of TX DTX: |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 * reset_tx_dtx() |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 * Resetting of static variables of RX DTX: |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 * reset_rx_dtx() |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 * TX DTX handler (called by the speech encoder): |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 * tx_dtx() |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 * RX DTX handler (called by the speech decoder): |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 * rx_dtx() |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 * Encoding of comfort noise parameters into SID frame: |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 * CN_encoding() |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 * Encoding of SID codeword into SID frame: |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 * sid_codeword_encoding() |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 * Detecting of SID codeword from a frame: |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 * sid_frame_detection() |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 * Update the LSF parameter history: |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 * update_lsf_history() |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 * Update the reference LSF parameter vector: |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 * update_lsf_p_CN() |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 * Compute the averaged LSF parameter vector: |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 * aver_lsf_history() |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 * Update the fixed codebook gain parameter history of the encoder: |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 * update_gain_code_history_tx() |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 * Update the fixed codebook gain parameter history of the decoder: |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 * update_gain_code_history_rx() |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 * Compute the unquantized fixed codebook gain: |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 * compute_CN_excitation_gain() |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 * Update the reference fixed codebook gain: |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 * update_gcode0_CN() |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 * Compute the averaged fixed codebook gain: |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 * aver_gain_code_history() |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 * Compute the comfort noise fixed codebook excitation: |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 * build_CN_code() |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 * Generate a random integer value: |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 * pseudonoise() |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 * Interpolate a comfort noise parameter value over the comfort noise |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 * update period: |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 * interpolate_CN_param() |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 * Interpolate comfort noise LSF pparameter values over the comfort |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 * noise update period: |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 * interpolate_CN_lsf() |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 * interpolate_CN_param() |
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 |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
57 #include "gsm_efr.h" |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 #include "typedef.h" |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
59 #include "namespace.h" |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 #include "basic_op.h" |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 #include "cnst.h" |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 #include "sig_proc.h" |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
63 #include "memops.h" |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
64 #include "no_count.h" |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 #include "dtx.h" |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
66 #include "enc_state.h" |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
67 #include "dec_state.h" |
66
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 /* Inverse values of DTX hangover period and DTX hangover period + 1 */ |
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 #define INV_DTX_HANGOVER (0x7fff / DTX_HANGOVER) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 #define INV_DTX_HANGOVER_P1 (0x7fff / (DTX_HANGOVER+1)) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 #define NB_PULSE 10 /* Number of pulses in fixed codebook excitation */ |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 /* Constant DTX_ELAPSED_THRESHOLD is used as threshold for allowing |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77 SID frame updating without hangover period in case when elapsed |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 time measured from previous SID update is below 24 */ |
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 #define DTX_ELAPSED_THRESHOLD (24 + DTX_HANGOVER - 1) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 |
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 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84 * FUNCTION NAME: reset_tx_dtx |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
86 * 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
|
87 * initial values |
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 |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
91 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
|
92 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93 Word16 i; |
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 /* suppose infinitely long speech period before start */ |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96 |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
97 st->txdtx_hangover = DTX_HANGOVER; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
98 st->txdtx_N_elapsed = 0x7fff; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
99 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
|
100 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
101 for (i = 0; i < 6; i++) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
102 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
103 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
|
104 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
105 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
106 for (i = 0; i < DTX_HANGOVER; i++) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
107 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
108 st->lsf_old_tx[i][0] = 1384; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
109 st->lsf_old_tx[i][1] = 2077; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
110 st->lsf_old_tx[i][2] = 3420; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
111 st->lsf_old_tx[i][3] = 5108; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
112 st->lsf_old_tx[i][4] = 6742; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
113 st->lsf_old_tx[i][5] = 8122; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
114 st->lsf_old_tx[i][6] = 9863; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
115 st->lsf_old_tx[i][7] = 11092; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
116 st->lsf_old_tx[i][8] = 12714; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
117 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
|
118 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
119 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
120 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
|
121 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
122 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
|
123 } |
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->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
|
126 |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
127 st->buf_p_tx = 0; |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
128 return; |
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 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
131 /************************************************************************* |
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 * FUNCTION NAME: reset_rx_dtx |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
134 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
135 * PURPOSE: Resets the static variables of the RX DTX handler to their |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
136 * initial values |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
137 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
138 *************************************************************************/ |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
139 |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
140 void reset_rx_dtx (struct EFR_decoder_state *st) |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
141 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
142 Word16 i; |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
143 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
144 /* suppose infinitely long speech period before start */ |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
145 |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
146 st->rxdtx_aver_period = DTX_HANGOVER; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
147 st->rxdtx_N_elapsed = 0x7fff; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
148 st->rxdtx_ctrl = RX_SP_FLAG; |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
149 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
150 for (i = 0; i < DTX_HANGOVER; i++) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
151 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
152 st->lsf_old_rx[i][0] = 1384; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
153 st->lsf_old_rx[i][1] = 2077; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
154 st->lsf_old_rx[i][2] = 3420; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
155 st->lsf_old_rx[i][3] = 5108; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
156 st->lsf_old_rx[i][4] = 6742; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
157 st->lsf_old_rx[i][5] = 8122; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
158 st->lsf_old_rx[i][6] = 9863; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
159 st->lsf_old_rx[i][7] = 11092; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
160 st->lsf_old_rx[i][8] = 12714; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
161 st->lsf_old_rx[i][9] = 13701; |
66
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 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
164 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
|
165 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
166 st->gain_code_old_rx[i] = 0; |
66
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 |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
169 st->L_pn_seed_rx = PN_INITIAL_SEED; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
170 st->rx_dtx_state = CN_INT_PERIOD - 1; |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
171 |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
172 st->prev_SID_frames_lost = 0; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
173 st->buf_p_rx = 0; |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
174 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
175 return; |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
176 } |
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 /************************************************************************* |
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 * FUNCTION NAME: tx_dtx |
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 * 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
|
183 * 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
|
184 * 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
|
185 * 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
|
186 * the pseudo noise generator shift register. |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
187 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
188 * 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
|
189 * given as input from the speech encoder. |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
190 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
191 * INPUTS: VAD_flag Voice activity decision |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
192 * *txdtx_ctrl Old encoder DTX control word |
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 * 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
|
195 * 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
|
196 * register (global variable) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
197 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
198 * RETURN VALUE: none |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
199 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
200 *************************************************************************/ |
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 void tx_dtx ( |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
203 struct EFR_encoder_state *st, |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
204 Word16 VAD_flag |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
205 ) |
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 /* 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
|
208 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
|
209 |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
210 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
|
211 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
212 /* 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
|
213 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
214 if (sub (VAD_flag, 1) == 0) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
215 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
216 st->txdtx_hangover = DTX_HANGOVER; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
217 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
|
218 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
219 else |
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 if (st->txdtx_hangover == 0) |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
222 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
223 /* 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
|
224 |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
225 st->txdtx_N_elapsed = 0; |
66
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 /* 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
|
228 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
|
229 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
230 st->txdtx_ctrl = TX_PREV_HANGOVER_ACTIVE |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
231 | TX_SID_UPDATE; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
232 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
|
233 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
234 else |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
235 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
236 st->txdtx_ctrl = TX_SID_UPDATE; |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
237 } |
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 else |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
240 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
241 /* Hangover period is not over, update hangover counter */ |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
242 st->txdtx_hangover = sub (st->txdtx_hangover, 1); |
66
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 /* 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
|
245 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
|
246 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
|
247 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
|
248 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
|
249 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
|
250 |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
251 if (sub (add (st->txdtx_N_elapsed, st->txdtx_hangover), |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
252 DTX_ELAPSED_THRESHOLD) < 0) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
253 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
254 /* old SID frame should be used */ |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
255 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
|
256 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
257 else |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
258 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
259 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
|
260 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
261 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
|
262 | TX_HANGOVER_ACTIVE |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
263 | TX_SP_FLAG; |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
264 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
265 else |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
266 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
267 st->txdtx_ctrl = TX_HANGOVER_ACTIVE |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
268 | TX_SP_FLAG; |
66
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 } |
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: rx_dtx |
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: DTX handler of the speech decoder. Determines when to update |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
282 * the reference comfort noise parameters (LSF and gain) at the |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
283 * end of the speech burst. Also classifies the incoming frames |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
284 * according to SID flag and BFI flag |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
285 * and determines when the transmission is active during comfort |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
286 * noise insertion. This function also initializes the pseudo |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
287 * noise generator shift register. |
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 * Operation of the RX DTX handler is based on measuring the |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
290 * lengths of speech bursts and the lengths of the pauses between |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
291 * speech bursts to determine when there exists a hangover period |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
292 * at the end of a speech burst. The idea is to keep in sync with |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
293 * the TX DTX handler to be able to update the reference comfort |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
294 * noise parameters at the same time instances. |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
295 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
296 * INPUTS: *rxdtx_ctrl Old decoder DTX control word |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
297 * TAF Time alignment flag |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
298 * bfi Bad frame indicator flag |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
299 * SID_flag Silence descriptor flag |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
300 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
301 * OUTPUTS: *rxdtx_ctrl Updated decoder DTX control word |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
302 * rx_dtx_state Updated state of comfort noise interpolation |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
303 * period (global variable) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
304 * L_pn_seed_rx Initialized pseudo noise generator shift |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
305 * register (global variable) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
306 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
307 * RETURN VALUE: none |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
308 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
309 *************************************************************************/ |
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 void rx_dtx ( |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
312 struct EFR_decoder_state *st, |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
313 Word16 TAF, |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
314 Word16 bfi, |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
315 Word16 SID_flag |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
316 ) |
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 Word16 frame_type; |
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 /* Frame classification according to bfi-flag and ternary-valued |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
321 SID flag. The frames between SID updates (not actually trans- |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
322 mitted) are also classified here; they will be discarded later |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
323 and provided with "NO TRANSMISSION"-flag */ |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
324 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
325 if ((sub (SID_flag, 2) == 0) && (bfi == 0)) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
326 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
327 frame_type = VALID_SID_FRAME; move16 (); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
328 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
329 else if ((SID_flag == 0) && (bfi == 0)) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
330 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
331 frame_type = GOOD_SPEECH_FRAME; move16 (); |
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 else if ((SID_flag == 0) && (bfi != 0)) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
334 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
335 frame_type = UNUSABLE_FRAME; move16 (); |
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 else |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
338 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
339 frame_type = INVALID_SID_FRAME; move16 (); |
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 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
342 /* Update of decoder state */ |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
343 /* Previous frame was classified as a speech frame */ |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
344 if ((st->rxdtx_ctrl & RX_SP_FLAG) != 0) |
66
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 if (sub (frame_type, VALID_SID_FRAME) == 0) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
347 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
348 st->rxdtx_ctrl = RX_FIRST_SID_UPDATE; |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
349 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
350 else if (sub (frame_type, INVALID_SID_FRAME) == 0) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
351 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
352 st->rxdtx_ctrl = RX_FIRST_SID_UPDATE |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
353 | RX_INVALID_SID_FRAME; |
66
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 else if (sub (frame_type, UNUSABLE_FRAME) == 0) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
356 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
357 st->rxdtx_ctrl = RX_SP_FLAG; |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
358 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
359 else if (sub (frame_type, GOOD_SPEECH_FRAME) == 0) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
360 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
361 st->rxdtx_ctrl = RX_SP_FLAG; |
66
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 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
364 else |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
365 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
366 if (sub (frame_type, VALID_SID_FRAME) == 0) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
367 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
368 st->rxdtx_ctrl = RX_CONT_SID_UPDATE; |
66
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 else if (sub (frame_type, INVALID_SID_FRAME) == 0) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
371 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
372 st->rxdtx_ctrl = RX_CONT_SID_UPDATE |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
373 | RX_INVALID_SID_FRAME; |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
374 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
375 else if (sub (frame_type, UNUSABLE_FRAME) == 0) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
376 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
377 st->rxdtx_ctrl = RX_CNI_BFI; |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
378 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
379 else if (sub (frame_type, GOOD_SPEECH_FRAME) == 0) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
380 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
381 /* If the previous frame (during CNI period) was muted, |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
382 raise the RX_PREV_DTX_MUTING flag */ |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
383 if ((st->rxdtx_ctrl & RX_DTX_MUTING) != 0) |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
384 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
385 st->rxdtx_ctrl = RX_SP_FLAG | RX_FIRST_SP_FLAG |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
386 | RX_PREV_DTX_MUTING; |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
387 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
388 else |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
389 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
390 st->rxdtx_ctrl = RX_SP_FLAG | RX_FIRST_SP_FLAG; |
66
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 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
393 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
394 |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
395 if ((st->rxdtx_ctrl & RX_SP_FLAG) != 0) |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
396 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
397 st->prev_SID_frames_lost = 0; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
398 st->rx_dtx_state = CN_INT_PERIOD - 1; |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
399 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
400 else |
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 /* First SID frame */ |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
403 if ((st->rxdtx_ctrl & RX_FIRST_SID_UPDATE) != 0) |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
404 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
405 st->prev_SID_frames_lost = 0; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
406 st->rx_dtx_state = CN_INT_PERIOD - 1; |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
407 } |
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 /* SID frame detected, but not the first SID */ |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
410 if ((st->rxdtx_ctrl & RX_CONT_SID_UPDATE) != 0) |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
411 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
412 st->prev_SID_frames_lost = 0; |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
413 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
414 if (sub (frame_type, VALID_SID_FRAME) == 0) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
415 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
416 st->rx_dtx_state = 0; |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
417 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
418 else if (sub (frame_type, INVALID_SID_FRAME) == 0) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
419 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
420 if (sub(st->rx_dtx_state, (CN_INT_PERIOD - 1)) < 0) |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
421 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
422 st->rx_dtx_state = add(st->rx_dtx_state, 1); |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
423 } |
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 /* Bad frame received in CNI mode */ |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
428 if ((st->rxdtx_ctrl & RX_CNI_BFI) != 0) |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
429 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
430 if (sub (st->rx_dtx_state, (CN_INT_PERIOD - 1)) < 0) |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
431 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
432 st->rx_dtx_state = add (st->rx_dtx_state, 1); |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
433 } |
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 /* If an unusable frame is received during CNI period |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
436 when TAF == 1, the frame is classified as a lost |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
437 SID frame */ |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
438 if (sub (TAF, 1) == 0) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
439 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
440 st->rxdtx_ctrl = st->rxdtx_ctrl | RX_LOST_SID_FRAME; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
441 st->prev_SID_frames_lost = add (st->prev_SID_frames_lost, 1); |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
442 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
443 else /* No transmission occurred */ |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
444 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
445 st->rxdtx_ctrl = st->rxdtx_ctrl | RX_NO_TRANSMISSION; |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
446 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
447 |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
448 if (sub (st->prev_SID_frames_lost, 1) > 0) |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
449 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
450 st->rxdtx_ctrl = st->rxdtx_ctrl | RX_DTX_MUTING; |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
451 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
452 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
453 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
454 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
455 /* 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
|
456 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
|
457 |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
458 st->rxdtx_N_elapsed = add (st->rxdtx_N_elapsed, 1); |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
459 |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
460 if ((st->rxdtx_ctrl & RX_SP_FLAG) != 0) |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
461 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
462 st->rxdtx_aver_period = DTX_HANGOVER; |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
463 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
464 else |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
465 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
466 if (sub (st->rxdtx_N_elapsed, DTX_ELAPSED_THRESHOLD) > 0) |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
467 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
468 st->rxdtx_ctrl |= RX_UPD_SID_QUANT_MEM; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
469 st->rxdtx_N_elapsed = 0; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
470 st->rxdtx_aver_period = 0; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
471 st->L_pn_seed_rx = PN_INITIAL_SEED; |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
472 } |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
473 else if (st->rxdtx_aver_period == 0) |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
474 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
475 st->rxdtx_N_elapsed = 0; |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
476 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
477 else |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
478 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
479 st->rxdtx_aver_period = sub (st->rxdtx_aver_period, 1); |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
480 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
481 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
482 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
483 return; |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
484 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
485 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
486 /************************************************************************* |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
487 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
488 * FUNCTION NAME: CN_encoding |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
489 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
490 * 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
|
491 * 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
|
492 * 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
|
493 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
494 * 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
|
495 * speech encoder |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
496 * txdtx_ctrl TX DTX handler control word |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
497 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
498 * 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
|
499 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
500 * RETURN VALUE: none |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
501 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
502 *************************************************************************/ |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
503 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
504 void CN_encoding ( |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
505 struct EFR_encoder_state *st, |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
506 Word16 params[], |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
507 Word16 txdtx_ctrl |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
508 ) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
509 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
510 Word16 i; |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
511 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
512 if ((txdtx_ctrl & TX_SID_UPDATE) != 0) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
513 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
514 /* 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
|
515 CN parameters */ |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
516 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
517 /* LPC parameter indices */ |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
518 for (i = 0; i < 5; i++) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
519 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
520 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
|
521 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
522 /* Codebook index computed in last subframe */ |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
523 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
|
524 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
525 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
|
526 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
527 /* 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
|
528 for (i = 0; i < 5; i++) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
529 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
530 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
|
531 } |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
532 params[17] = st->old_CN_mem_tx[5]; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
533 params[30] = st->old_CN_mem_tx[5]; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
534 params[43] = st->old_CN_mem_tx[5]; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
535 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
|
536 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
537 /* 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
|
538 be written later) */ |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
539 for (i = 0; i < 12; i++) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
540 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
541 params[i + 5] = 0; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
542 params[i + 18] = 0; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
543 params[i + 31] = 0; |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
544 params[i + 44] = 0; |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
545 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
546 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
547 return; |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
548 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
549 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
550 /************************************************************************* |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
551 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
552 * FUNCTION NAME: update_lsf_history |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
553 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
554 * PURPOSE: Update the LSF parameter history. The LSF parameters kept |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
555 * in the buffer are used later for computing the reference |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
556 * LSF parameter vector and the averaged LSF parameter vector. |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
557 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
558 * INPUTS: lsf1[0..9] 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
|
559 * lsf2[0..9] 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
|
560 * 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
|
561 * Old LSF history |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
562 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
563 * OUTPUTS: 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
|
564 * Updated LSF history |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
565 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
566 * RETURN VALUE: none |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
567 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
568 *************************************************************************/ |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
569 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
570 void update_lsf_history ( |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
571 Word16 lsf1[M], |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
572 Word16 lsf2[M], |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
573 Word16 lsf_old[DTX_HANGOVER][M] |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
574 ) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
575 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
576 Word16 i, j, temp; |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
577 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
578 /* shift LSF data to make room for LSFs from current frame */ |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
579 /* This can also be implemented by using circular buffering */ |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
580 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
581 for (i = DTX_HANGOVER - 1; i > 0; i--) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
582 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
583 for (j = 0; j < M; j++) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
584 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
585 lsf_old[i][j] = lsf_old[i - 1][j]; move16 (); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
586 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
587 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
588 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
589 /* Store new LSF data to lsf_old buffer */ |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
590 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
591 for (i = 0; i < M; i++) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
592 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
593 temp = add (shr (lsf1[i], 1), shr (lsf2[i], 1)); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
594 lsf_old[0][i] = temp; move16 (); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
595 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
596 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
597 return; |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
598 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
599 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
600 /************************************************************************* |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
601 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
602 * FUNCTION NAME: update_lsf_p_CN |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
603 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
604 * PURPOSE: Update the reference LSF parameter vector. The reference |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
605 * vector is computed by averaging the quantized LSF parameter |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
606 * vectors which exist in the LSF parameter history. |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
607 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
608 * 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
|
609 * LSF parameter history |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
610 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
611 * OUTPUTS: lsf_p_CN[0..9] Computed reference LSF parameter vector |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
612 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
613 * RETURN VALUE: none |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
614 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
615 *************************************************************************/ |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
616 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
617 void update_lsf_p_CN ( |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
618 Word16 lsf_old[DTX_HANGOVER][M], |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
619 Word16 lsf_p_CN[M] |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
620 ) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
621 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
622 Word16 i, j; |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
623 Word32 L_temp; |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
624 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
625 for (j = 0; j < M; j++) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
626 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
627 L_temp = L_mult (INV_DTX_HANGOVER, lsf_old[0][j]); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
628 for (i = 1; i < DTX_HANGOVER; i++) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
629 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
630 L_temp = L_mac (L_temp, INV_DTX_HANGOVER, lsf_old[i][j]); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
631 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
632 lsf_p_CN[j] = round (L_temp); move16 (); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
633 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
634 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
635 return; |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
636 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
637 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
638 /************************************************************************* |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
639 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
640 * FUNCTION NAME: aver_lsf_history |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
641 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
642 * 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
|
643 * 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
|
644 * 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
|
645 * parameter vectors of the current frame. |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
646 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
647 * 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
|
648 * LSF parameter history |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
649 * 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
|
650 * 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
|
651 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
652 * 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
|
653 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
654 * RETURN VALUE: none |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
655 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
656 *************************************************************************/ |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
657 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
658 void aver_lsf_history ( |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
659 Word16 lsf_old[DTX_HANGOVER][M], |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
660 Word16 lsf1[M], |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
661 Word16 lsf2[M], |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
662 Word16 lsf_aver[M] |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
663 ) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
664 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
665 Word16 i, j; |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
666 Word32 L_temp; |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
667 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
668 for (j = 0; j < M; j++) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
669 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
670 L_temp = L_mult (0x3fff, lsf1[j]); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
671 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
|
672 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
|
673 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
674 for (i = 0; i < DTX_HANGOVER; i++) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
675 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
676 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
|
677 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
678 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
679 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
|
680 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
681 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
682 return; |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
683 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
684 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
685 /************************************************************************* |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
686 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
687 * FUNCTION NAME: update_gain_code_history_tx |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
688 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
689 * 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
|
690 * 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
|
691 * 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
|
692 * 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
|
693 * parameter value. |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
694 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
695 * 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
|
696 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
697 * 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
|
698 * Old fixed codebook gain history of encoder |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
699 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
700 * 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
|
701 * Updated fixed codebook gain history of encoder |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
702 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
703 * RETURN VALUE: none |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
704 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
705 *************************************************************************/ |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
706 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
707 void update_gain_code_history_tx ( |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
708 struct EFR_encoder_state *st, |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
709 Word16 new_gain_code |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
710 ) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
711 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
712 /* Circular buffer */ |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
713 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
|
714 |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
715 if (sub (st->buf_p_tx, (4 * DTX_HANGOVER - 1)) == 0) |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
716 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
717 st->buf_p_tx = 0; |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
718 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
719 else |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
720 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
721 st->buf_p_tx = add (st->buf_p_tx, 1); |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
722 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
723 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
724 return; |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
725 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
726 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
727 /************************************************************************* |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
728 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
729 * FUNCTION NAME: update_gain_code_history_rx |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
730 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
731 * 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
|
732 * decoder. 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
|
733 * 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
|
734 * gain parameter value. |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
735 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
736 * 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
|
737 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
738 * 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
|
739 * Old fixed codebook gain history of decoder |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
740 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
741 * 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
|
742 * Updated fixed codebk gain history of decoder |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
743 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
744 * RETURN VALUE: none |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
745 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
746 *************************************************************************/ |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
747 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
748 void update_gain_code_history_rx ( |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
749 struct EFR_decoder_state *st, |
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
750 Word16 new_gain_code |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
751 ) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
752 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
753 /* Circular buffer */ |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
754 st->gain_code_old_rx[st->buf_p_rx] = new_gain_code; |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
755 |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
756 if (sub (st->buf_p_rx, (4 * DTX_HANGOVER - 1)) == 0) |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
757 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
758 st->buf_p_rx = 0; |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
759 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
760 else |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
761 { |
67
58b64224d4ac
libgsmefr: dtx.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
66
diff
changeset
|
762 st->buf_p_rx = add (st->buf_p_rx, 1); |
66
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
763 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
764 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
765 return; |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
766 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
767 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
768 /************************************************************************* |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
769 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
770 * FUNCTION NAME: compute_CN_excitation_gain |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
771 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
772 * 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
|
773 * 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
|
774 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
775 * 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
|
776 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
777 * OUTPUTS: none |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
778 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
779 * RETURN VALUE: Unquantized fixed codebook gain |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
780 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
781 *************************************************************************/ |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
782 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
783 Word16 compute_CN_excitation_gain ( |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
784 Word16 res2[L_SUBFR] |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
785 ) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
786 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
787 Word16 i, norm, norm1, temp, overfl; |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
788 Word32 L_temp; |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
789 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
790 /* 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
|
791 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
792 norm = 0; move16 (); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
793 do |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
794 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
795 overfl = 0; move16 (); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
796 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
797 L_temp = 0L; move32 (); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
798 for (i = 0; i < L_SUBFR; i++) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
799 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
800 temp = shr (res2[i], norm); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
801 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
|
802 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
803 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
804 test (); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
805 if (L_sub (L_temp, MAX_32) == 0) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
806 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
807 norm = add (norm, 1); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
808 overfl = 1; move16 (); /* Set the overflow flag */ |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
809 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
810 test (); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
811 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
812 while (overfl != 0); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
813 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
814 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
|
815 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
816 /* 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
|
817 order Taylor series approximation) */ |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
818 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
819 norm1 = norm_l (L_temp); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
820 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
|
821 L_temp = L_mult (temp, temp); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
822 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
|
823 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
|
824 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
825 temp = extract_h (L_temp); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
826 test (); logic16 (); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
827 if ((norm1 & 0x0001) != 0) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
828 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
829 temp = mult_r (temp, 23170); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
830 norm1 = sub (norm1, 1); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
831 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
832 /* 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
|
833 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
834 temp = mult_r (temp, 10362); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
835 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
836 /* Re-scale to get the final value */ |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
837 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
838 norm1 = shr (norm1, 1); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
839 norm1 = sub (norm1, norm); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
840 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
841 test (); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
842 if (norm1 >= 0) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
843 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
844 temp = shr (temp, norm1); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
845 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
846 else |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
847 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
848 temp = shl (temp, abs_s (norm1)); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
849 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
850 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
851 return temp; |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
852 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
853 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
854 /************************************************************************* |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
855 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
856 * FUNCTION NAME: update_gcode0_CN |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
857 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
858 * PURPOSE: Update the reference fixed codebook gain parameter value. |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
859 * The reference value is computed by averaging the quantized |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
860 * fixed codebook gain parameter values which exist in the |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
861 * fixed codebook gain parameter history. |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
862 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
863 * INPUTS: 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
|
864 * fixed codebook gain parameter history |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
865 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
866 * OUTPUTS: none |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
867 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
868 * RETURN VALUE: Computed reference fixed codebook gain |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
869 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
870 *************************************************************************/ |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
871 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
872 Word16 update_gcode0_CN ( |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
873 Word16 gain_code_old[4 * DTX_HANGOVER] |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
874 ) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
875 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
876 Word16 i, j; |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
877 Word32 L_temp, L_ret; |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
878 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
879 L_ret = 0L; move32 (); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
880 for (i = 0; i < DTX_HANGOVER; i++) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
881 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
882 L_temp = L_mult (0x1fff, gain_code_old[4 * i]); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
883 for (j = 1; j < 4; j++) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
884 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
885 L_temp = L_mac (L_temp, 0x1fff, gain_code_old[4 * i + j]); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
886 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
887 L_ret = L_mac (L_ret, INV_DTX_HANGOVER, extract_h (L_temp)); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
888 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
889 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
890 return extract_h (L_ret); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
891 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
892 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
893 /************************************************************************* |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
894 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
895 * FUNCTION NAME: aver_gain_code_history |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
896 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
897 * 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
|
898 * 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
|
899 * 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
|
900 * 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
|
901 * gain parameter value of the current subframe. |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
902 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
903 * INPUTS: CN_excitation_gain |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
904 * Unquantized fixed codebook gain value |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
905 * of the current subframe |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
906 * 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
|
907 * fixed codebook gain parameter history |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
908 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
909 * OUTPUTS: none |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
910 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
911 * RETURN VALUE: Averaged fixed codebook gain value |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
912 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
913 *************************************************************************/ |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
914 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
915 Word16 aver_gain_code_history ( |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
916 Word16 CN_excitation_gain, |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
917 Word16 gain_code_old[4 * DTX_HANGOVER] |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
918 ) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
919 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
920 Word16 i; |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
921 Word32 L_ret; |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
922 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
923 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
|
924 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
925 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
|
926 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
927 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
|
928 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
929 return extract_h (L_ret); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
930 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
931 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
932 /************************************************************************* |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
933 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
934 * FUNCTION NAME: build_CN_code |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
935 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
936 * PURPOSE: Compute the comfort noise fixed codebook excitation. The |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
937 * gains of the pulses are always +/-1. |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
938 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
939 * INPUTS: *seed Old CN generator shift register state |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
940 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
941 * OUTPUTS: cod[0..39] Generated comfort noise fixed codebook vector |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
942 * *seed Updated CN generator shift register state |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
943 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
944 * RETURN VALUE: none |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
945 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
946 *************************************************************************/ |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
947 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
948 void build_CN_code ( |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
949 Word16 cod[], |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
950 Word32 *seed |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
951 ) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
952 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
953 Word16 i, j, k; |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
954 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
955 for (i = 0; i < L_SUBFR; i++) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
956 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
957 cod[i] = 0; move16 (); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
958 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
959 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
960 for (k = 0; k < NB_PULSE; k++) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
961 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
962 i = pseudonoise (seed, 2); /* generate pulse position */ |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
963 i = shr (extract_l (L_mult (i, 10)), 1); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
964 i = add (i, k); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
965 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
966 j = pseudonoise (seed, 1); /* generate sign */ |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
967 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
968 test (); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
969 if (j > 0) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
970 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
971 cod[i] = 4096; move16 (); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
972 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
973 else |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
974 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
975 cod[i] = -4096; move16 (); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
976 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
977 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
978 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
979 return; |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
980 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
981 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
982 /************************************************************************* |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
983 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
984 * FUNCTION NAME: pseudonoise |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
985 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
986 * PURPOSE: Generate a random integer value to use in comfort noise |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
987 * generation. The algorithm uses polynomial x^31 + x^3 + 1 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
988 * (length of PN sequence is 2^31 - 1). |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
989 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
990 * INPUTS: *shift_reg Old CN generator shift register state |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
991 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
992 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
993 * OUTPUTS: *shift_reg Updated CN generator shift register state |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
994 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
995 * RETURN VALUE: Generated random integer value |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
996 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
997 *************************************************************************/ |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
998 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
999 Word16 pseudonoise ( |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1000 Word32 *shift_reg, |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1001 Word16 no_bits |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1002 ) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1003 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1004 Word16 noise_bits, Sn, i; |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1005 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1006 noise_bits = 0; move16 (); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1007 for (i = 0; i < no_bits; i++) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1008 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1009 /* State n == 31 */ |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1010 test (); logic32 (); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1011 if ((*shift_reg & 0x00000001L) != 0) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1012 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1013 Sn = 1; move16 (); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1014 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1015 else |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1016 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1017 Sn = 0; move16 (); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1018 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1019 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1020 /* State n == 3 */ |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1021 test (); logic32 (); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1022 if ((*shift_reg & 0x10000000L) != 0) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1023 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1024 Sn = Sn ^ 1; logic16 (); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1025 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1026 else |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1027 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1028 Sn = Sn ^ 0; logic16 (); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1029 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1030 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1031 noise_bits = shl (noise_bits, 1); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1032 noise_bits = noise_bits | (extract_l (*shift_reg) & 1); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1033 logic16 (); logic16 (); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1034 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1035 *shift_reg = L_shr (*shift_reg, 1); move32 (); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1036 test (); logic16 (); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1037 if (Sn & 1) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1038 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1039 *shift_reg = *shift_reg | 0x40000000L; move32 (); logic32 (); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1040 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1041 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1042 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1043 return noise_bits; |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1044 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1045 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1046 /************************************************************************* |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1047 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1048 * FUNCTION NAME: interpolate_CN_param |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1049 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1050 * PURPOSE: Interpolate a comfort noise parameter value over the comfort |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1051 * noise update period. |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1052 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1053 * INPUTS: old_param The older parameter of the interpolation |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1054 * (the endpoint the interpolation is started |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1055 * from) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1056 * new_param The newer parameter of the interpolation |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1057 * (the endpoint the interpolation is ended to) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1058 * rx_dtx_state State of the comfort noise insertion period |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1059 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1060 * OUTPUTS: none |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1061 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1062 * RETURN VALUE: Interpolated CN parameter value |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1063 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1064 *************************************************************************/ |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1065 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1066 Word16 interpolate_CN_param ( |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1067 Word16 old_param, |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1068 Word16 new_param, |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1069 Word16 rx_dtx_state |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1070 ) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1071 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1072 static const Word16 interp_factor[CN_INT_PERIOD] = |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1073 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1074 0x0555, 0x0aaa, 0x1000, 0x1555, 0x1aaa, 0x2000, |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1075 0x2555, 0x2aaa, 0x3000, 0x3555, 0x3aaa, 0x4000, |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1076 0x4555, 0x4aaa, 0x5000, 0x5555, 0x5aaa, 0x6000, |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1077 0x6555, 0x6aaa, 0x7000, 0x7555, 0x7aaa, 0x7fff}; |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1078 Word16 temp; |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1079 Word32 L_temp; |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1080 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1081 L_temp = L_mult (interp_factor[rx_dtx_state], new_param); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1082 temp = sub (0x7fff, interp_factor[rx_dtx_state]); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1083 temp = add (temp, 1); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1084 L_temp = L_mac (L_temp, temp, old_param); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1085 temp = round (L_temp); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1086 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1087 return temp; |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1088 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1089 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1090 /************************************************************************* |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1091 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1092 * FUNCTION NAME: interpolate_CN_lsf |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1093 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1094 * PURPOSE: Interpolate comfort noise LSF parameter vector over the comfort |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1095 * noise update period. |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1096 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1097 * INPUTS: lsf_old_CN[0..9] |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1098 * The older LSF parameter vector of the |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1099 * interpolation (the endpoint the interpolation |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1100 * is started from) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1101 * lsf_new_CN[0..9] |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1102 * The newer LSF parameter vector of the |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1103 * interpolation (the endpoint the interpolation |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1104 * is ended to) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1105 * rx_dtx_state State of the comfort noise insertion period |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1106 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1107 * OUTPUTS: lsf_interp_CN[0..9] |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1108 * Interpolated LSF parameter vector |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1109 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1110 * RETURN VALUE: none |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1111 * |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1112 *************************************************************************/ |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1113 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1114 void interpolate_CN_lsf ( |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1115 Word16 lsf_old_CN[M], |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1116 Word16 lsf_new_CN[M], |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1117 Word16 lsf_interp_CN[M], |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1118 Word16 rx_dtx_state |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1119 ) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1120 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1121 Word16 i; |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1122 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1123 for (i = 0; i < M; i++) |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1124 { |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1125 lsf_interp_CN[i] = interpolate_CN_param (lsf_old_CN[i], |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1126 lsf_new_CN[i], |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1127 rx_dtx_state); move16 (); |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1128 } |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1129 |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1130 return; |
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1131 } |