use crate::silk::vq_wmat_ec::LTP_ORDER;
use crate::silk::{MAX_LPC_ORDER, MAX_NB_SUBFR, MAX_SHAPE_LPC_ORDER};
#[derive(Clone, Debug, PartialEq)]
pub struct EncoderControl {
pub gains_q16: [i32; MAX_NB_SUBFR],
pub pred_coef_q12: [[i16; MAX_LPC_ORDER]; 2],
pub ltp_coef_q14: [i16; MAX_NB_SUBFR * LTP_ORDER],
pub ltp_scale_q14: i32,
pub pitch_l: [i32; MAX_NB_SUBFR],
pub ar_q13: [i16; MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER],
pub lf_shp_q14: [i32; MAX_NB_SUBFR],
pub tilt_q14: [i32; MAX_NB_SUBFR],
pub harm_shape_gain_q14: [i32; MAX_NB_SUBFR],
pub lambda_q10: i32,
pub input_quality_q14: i32,
pub coding_quality_q14: i32,
pub pred_gain_q16: i32,
pub lt_pred_cod_gain_q7: i32,
pub res_nrg: [i32; MAX_NB_SUBFR],
pub res_nrg_q: [i32; MAX_NB_SUBFR],
pub gains_unq_q16: [i32; MAX_NB_SUBFR],
pub last_gain_index_prev: i8,
}
impl Default for EncoderControl {
fn default() -> Self {
Self {
gains_q16: [0; MAX_NB_SUBFR],
pred_coef_q12: [[0; MAX_LPC_ORDER]; 2],
ltp_coef_q14: [0; MAX_NB_SUBFR * LTP_ORDER],
ltp_scale_q14: 0,
pitch_l: [0; MAX_NB_SUBFR],
ar_q13: [0; MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER],
lf_shp_q14: [0; MAX_NB_SUBFR],
tilt_q14: [0; MAX_NB_SUBFR],
harm_shape_gain_q14: [0; MAX_NB_SUBFR],
lambda_q10: 0,
input_quality_q14: 0,
coding_quality_q14: 0,
pred_gain_q16: 0,
lt_pred_cod_gain_q7: 0,
res_nrg: [0; MAX_NB_SUBFR],
res_nrg_q: [0; MAX_NB_SUBFR],
gains_unq_q16: [0; MAX_NB_SUBFR],
last_gain_index_prev: 0,
}
}
}