annotate libgsmefr/dtx.h @ 527:f3246d109e2d

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