28 #ifndef SILK_STRUCTS_H
29 #define SILK_STRUCTS_H
32 #include "SigProc_FIX.h"
46 opus_int16 xq[ 2 * MAX_FRAME_LENGTH ];
47 opus_int32 sLTP_shp_Q14[ 2 * MAX_FRAME_LENGTH ];
48 opus_int32 sLPC_Q14[ MAX_SUB_FRAME_LENGTH + NSQ_LPC_BUF_LENGTH ];
49 opus_int32 sAR2_Q14[ MAX_SHAPE_LPC_ORDER ];
50 opus_int32 sLF_AR_shp_Q14;
51 opus_int32 sDiff_shp_Q14;
53 opus_int sLTP_buf_idx;
54 opus_int sLTP_shp_buf_idx;
56 opus_int32 prev_gain_Q16;
57 opus_int rewhite_flag;
64 opus_int32 AnaState[ 2 ];
65 opus_int32 AnaState1[ 2 ];
66 opus_int32 AnaState2[ 2 ];
67 opus_int32 XnrgSubfr[ VAD_N_BANDS ];
68 opus_int32 NrgRatioSmth_Q8[ VAD_N_BANDS ];
70 opus_int32 NL[ VAD_N_BANDS ];
71 opus_int32 inv_NL[ VAD_N_BANDS ];
72 opus_int32 NoiseLevelBias[ VAD_N_BANDS ];
78 opus_int32 In_LP_State[ 2 ];
79 opus_int32 transition_frame_no;
85 const opus_int16 nVectors;
86 const opus_int16 order;
87 const opus_int16 quantStepSize_Q16;
88 const opus_int16 invQuantStepSize_Q6;
89 const opus_uint8 *CB1_NLSF_Q8;
90 const opus_int16 *CB1_Wght_Q9;
91 const opus_uint8 *CB1_iCDF;
92 const opus_uint8 *pred_Q8;
93 const opus_uint8 *ec_sel;
94 const opus_uint8 *ec_iCDF;
95 const opus_uint8 *ec_Rates_Q5;
96 const opus_int16 *deltaMin_Q15;
97 } silk_NLSF_CB_struct;
100 opus_int16 pred_prev_Q13[ 2 ];
101 opus_int16 sMid[ 2 ];
102 opus_int16 sSide[ 2 ];
103 opus_int32 mid_side_amp_Q0[ 4 ];
104 opus_int16 smth_width_Q14;
105 opus_int16 width_prev_Q14;
106 opus_int16 silent_side_len;
107 opus_int8 predIx[ MAX_FRAMES_PER_PACKET ][ 2 ][ 3 ];
108 opus_int8 mid_only_flags[ MAX_FRAMES_PER_PACKET ];
112 opus_int16 pred_prev_Q13[ 2 ];
113 opus_int16 sMid[ 2 ];
114 opus_int16 sSide[ 2 ];
118 opus_int8 GainsIndices[ MAX_NB_SUBFR ];
119 opus_int8 LTPIndex[ MAX_NB_SUBFR ];
120 opus_int8 NLSFIndices[ MAX_LPC_ORDER + 1 ];
122 opus_int8 contourIndex;
123 opus_int8 signalType;
124 opus_int8 quantOffsetType;
125 opus_int8 NLSFInterpCoef_Q2;
127 opus_int8 LTP_scaleIndex;
135 opus_int32 In_HP_State[ 2 ];
136 opus_int32 variable_HP_smth1_Q15;
137 opus_int32 variable_HP_smth2_Q15;
141 opus_int16 prev_NLSFq_Q15[ MAX_LPC_ORDER ];
142 opus_int speech_activity_Q8;
143 opus_int allow_bandwidth_switch;
144 opus_int8 LBRRprevLastGainIndex;
145 opus_int8 prevSignalType;
147 opus_int pitch_LPC_win_length;
148 opus_int max_pitch_lag;
149 opus_int32 API_fs_Hz;
150 opus_int32 prev_API_fs_Hz;
151 opus_int maxInternal_fs_Hz;
152 opus_int minInternal_fs_Hz;
153 opus_int desiredInternal_fs_Hz;
156 opus_int frame_length;
157 opus_int subfr_length;
158 opus_int ltp_mem_length;
161 opus_int shapeWinLength;
162 opus_int32 TargetRate_bps;
163 opus_int PacketSize_ms;
164 opus_int PacketLoss_perc;
165 opus_int32 frameCounter;
167 opus_int nStatesDelayedDecision;
168 opus_int useInterpolatedNLSFs;
169 opus_int shapingLPCOrder;
170 opus_int predictLPCOrder;
171 opus_int pitchEstimationComplexity;
172 opus_int pitchEstimationLPCOrder;
173 opus_int32 pitchEstimationThreshold_Q16;
174 opus_int32 sum_log_gain_Q7;
175 opus_int NLSF_MSVQ_Survivors;
176 opus_int first_frame_after_reset;
177 opus_int controlled_since_last_payload;
178 opus_int warping_Q16;
180 opus_int prefillFlag;
181 const opus_uint8 *pitch_lag_low_bits_iCDF;
182 const opus_uint8 *pitch_contour_iCDF;
183 const silk_NLSF_CB_struct *psNLSF_CB;
184 opus_int input_quality_bands_Q15[ VAD_N_BANDS ];
185 opus_int input_tilt_Q15;
188 opus_int8 VAD_flags[ MAX_FRAMES_PER_PACKET ];
190 opus_int LBRR_flags[ MAX_FRAMES_PER_PACKET ];
192 SideInfoIndices indices;
193 opus_int8 pulses[ MAX_FRAME_LENGTH ];
198 opus_int16 inputBuf[ MAX_FRAME_LENGTH + 2 ];
200 opus_int nFramesPerPacket;
201 opus_int nFramesEncoded;
203 opus_int nChannelsAPI;
204 opus_int nChannelsInternal;
208 opus_int frames_since_onset;
211 opus_int ec_prevSignalType;
212 opus_int16 ec_prevLagIndex;
214 silk_resampler_state_struct resampler_state;
219 opus_int noSpeechCounter;
222 opus_int useInBandFEC;
223 opus_int LBRR_enabled;
224 opus_int LBRR_GainIncreases;
225 SideInfoIndices indices_LBRR[ MAX_FRAMES_PER_PACKET ];
226 opus_int8 pulses_LBRR[ MAX_FRAMES_PER_PACKET ][ MAX_FRAME_LENGTH ];
227 } silk_encoder_state;
232 opus_int32 pitchL_Q8;
233 opus_int16 LTPCoef_Q14[ LTP_ORDER ];
234 opus_int16 prevLPC_Q12[ MAX_LPC_ORDER ];
235 opus_int last_frame_lost;
236 opus_int32 rand_seed;
237 opus_int16 randScale_Q14;
238 opus_int32 conc_energy;
239 opus_int conc_energy_shift;
240 opus_int16 prevLTP_scale_Q14;
241 opus_int32 prevGain_Q16[ 2 ];
244 opus_int subfr_length;
249 opus_int32 CNG_exc_buf_Q14[ MAX_FRAME_LENGTH ];
250 opus_int16 CNG_smth_NLSF_Q15[ MAX_LPC_ORDER ];
251 opus_int32 CNG_synth_state[ MAX_LPC_ORDER ];
252 opus_int32 CNG_smth_Gain_Q16;
253 opus_int32 rand_seed;
261 opus_int32 prev_gain_Q16;
262 opus_int32 exc_Q14[ MAX_FRAME_LENGTH ];
263 opus_int32 sLPC_Q14_buf[ MAX_LPC_ORDER ];
264 opus_int16 outBuf[ MAX_FRAME_LENGTH + 2 * MAX_SUB_FRAME_LENGTH ];
266 opus_int8 LastGainIndex;
268 opus_int32 fs_API_hz;
270 opus_int frame_length;
271 opus_int subfr_length;
272 opus_int ltp_mem_length;
274 opus_int16 prevNLSF_Q15[ MAX_LPC_ORDER ];
275 opus_int first_frame_after_reset;
276 const opus_uint8 *pitch_lag_low_bits_iCDF;
277 const opus_uint8 *pitch_contour_iCDF;
280 opus_int nFramesDecoded;
281 opus_int nFramesPerPacket;
284 opus_int ec_prevSignalType;
285 opus_int16 ec_prevLagIndex;
287 opus_int VAD_flags[ MAX_FRAMES_PER_PACKET ];
289 opus_int LBRR_flags[ MAX_FRAMES_PER_PACKET ];
291 silk_resampler_state_struct resampler_state;
293 const silk_NLSF_CB_struct *psNLSF_CB;
296 SideInfoIndices indices;
299 silk_CNG_struct sCNG;
303 opus_int prevSignalType;
306 silk_PLC_struct sPLC;
308 } silk_decoder_state;
315 opus_int pitchL[ MAX_NB_SUBFR ];
316 opus_int32 Gains_Q16[ MAX_NB_SUBFR ];
318 silk_DWORD_ALIGN opus_int16 PredCoef_Q12[ 2 ][ MAX_LPC_ORDER ];
319 opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ];
320 opus_int LTP_scale_Q14;
321 } silk_decoder_control;