comparison src/dtx.h @ 0:56410792419a

src: original EFR source from ETSI
author Mychaela Falconia <falcon@freecalypso.org>
date Wed, 03 Apr 2024 05:31:37 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:56410792419a
1 /***************************************************************************
2 *
3 * File Name: dtx.h
4 *
5 * Purpose: Contains the prototypes for all the functions of DTX.
6 * Also contains definitions of constants used in DTX functions.
7 *
8 **************************************************************************/
9
10 #define PN_INITIAL_SEED 0x70816958L /* Pseudo noise generator seed value */
11
12 #define CN_INT_PERIOD 24 /* Comfort noise interpolation period
13 (nbr of frames between successive
14 SID updates in the decoder) */
15
16 #define DTX_HANGOVER 7 /* Period when SP=1 although VAD=0.
17 Used for comfort noise averaging */
18
19
20 /* Frame classification constants */
21
22 #define VALID_SID_FRAME 1
23 #define INVALID_SID_FRAME 2
24 #define GOOD_SPEECH_FRAME 3
25 #define UNUSABLE_FRAME 4
26
27 /* Encoder DTX control flags */
28
29 #define TX_SP_FLAG 0x0001
30 #define TX_VAD_FLAG 0x0002
31 #define TX_HANGOVER_ACTIVE 0x0004
32 #define TX_PREV_HANGOVER_ACTIVE 0x0008
33 #define TX_SID_UPDATE 0x0010
34 #define TX_USE_OLD_SID 0x0020
35
36 /* Decoder DTX control flags */
37
38 #define RX_SP_FLAG 0x0001
39 #define RX_UPD_SID_QUANT_MEM 0x0002
40 #define RX_FIRST_SID_UPDATE 0x0004
41 #define RX_CONT_SID_UPDATE 0x0008
42 #define RX_LOST_SID_FRAME 0x0010
43 #define RX_INVALID_SID_FRAME 0x0020
44 #define RX_NO_TRANSMISSION 0x0040
45 #define RX_DTX_MUTING 0x0080
46 #define RX_PREV_DTX_MUTING 0x0100
47 #define RX_CNI_BFI 0x0200
48 #define RX_FIRST_SP_FLAG 0x0400
49
50 void reset_tx_dtx (void); /* Reset tx dtx variables */
51 void reset_rx_dtx (void); /* Reset rx dtx variables */
52
53 void tx_dtx (
54 Word16 VAD_flag,
55 Word16 *txdtx_ctrl
56 );
57
58 void rx_dtx (
59 Word16 *rxdtx_ctrl,
60 Word16 TAF,
61 Word16 bfi,
62 Word16 SID_flag
63 );
64
65 void CN_encoding (
66 Word16 params[],
67 Word16 txdtx_ctrl
68 );
69
70 void sid_codeword_encoding (
71 Word16 ser2[]
72 );
73
74 Word16 sid_frame_detection (
75 Word16 ser2[]
76 );
77
78 void update_lsf_history (
79 Word16 lsf1[M],
80 Word16 lsf2[M],
81 Word16 lsf_old[DTX_HANGOVER][M]
82 );
83
84 void update_lsf_p_CN (
85 Word16 lsf_old[DTX_HANGOVER][M],
86 Word16 lsf_p_CN[M]
87 );
88
89 void aver_lsf_history (
90 Word16 lsf_old[DTX_HANGOVER][M],
91 Word16 lsf1[M],
92 Word16 lsf2[M],
93 Word16 lsf_aver[M]
94 );
95
96 void update_gain_code_history_tx (
97 Word16 new_gain_code,
98 Word16 gain_code_old_tx[4 * DTX_HANGOVER]
99 );
100
101 void update_gain_code_history_rx (
102 Word16 new_gain_code,
103 Word16 gain_code_old_rx[4 * DTX_HANGOVER]
104 );
105
106 Word16 compute_CN_excitation_gain (
107 Word16 res2[L_SUBFR]
108 );
109
110 Word16 update_gcode0_CN (
111 Word16 gain_code_old_tx[4 * DTX_HANGOVER]
112 );
113
114 Word16 aver_gain_code_history (
115 Word16 CN_excitation_gain,
116 Word16 gain_code_old[4 * DTX_HANGOVER]
117 );
118
119 void build_CN_code (
120 Word16 cod[],
121 Word32 *seed
122 );
123
124 Word16 pseudonoise (
125 Word32 *shift_reg,
126 Word16 no_bits
127 );
128
129 Word16 interpolate_CN_param (
130 Word16 old_param,
131 Word16 new_param,
132 Word16 rx_dtx_state
133 );
134
135 void interpolate_CN_lsf (
136 Word16 lsf_old_CN[M],
137 Word16 lsf_new_CN[M],
138 Word16 lsf_interp_CN[M],
139 Word16 rx_dtx_state
140 );