pub const PE_MAX_FS_KHZ: usize = 16;
pub const PE_MAX_NB_SUBFR: usize = 4;
pub const PE_SUBFR_LENGTH_MS: usize = 5;
pub const PE_LTP_MEM_LENGTH_MS: usize = 4 * PE_SUBFR_LENGTH_MS;
pub const PE_MAX_FRAME_LENGTH_MS: usize =
PE_LTP_MEM_LENGTH_MS + PE_MAX_NB_SUBFR * PE_SUBFR_LENGTH_MS;
pub const PE_MAX_FRAME_LENGTH: usize = PE_MAX_FRAME_LENGTH_MS * PE_MAX_FS_KHZ;
pub const PE_MAX_FRAME_LENGTH_ST_1: usize = PE_MAX_FRAME_LENGTH >> 2;
pub const PE_MAX_FRAME_LENGTH_ST_2: usize = PE_MAX_FRAME_LENGTH >> 1;
pub const PE_MAX_LAG_MS: usize = 18;
pub const PE_MIN_LAG_MS: usize = 2;
pub const PE_MAX_LAG: usize = PE_MAX_LAG_MS * PE_MAX_FS_KHZ;
pub const PE_MIN_LAG: usize = PE_MIN_LAG_MS * PE_MAX_FS_KHZ;
pub const PE_D_SRCH_LENGTH: usize = 24;
pub const PE_NB_STAGE3_LAGS: usize = 5;
pub const PE_NB_CBKS_STAGE2: usize = 3;
pub const PE_NB_CBKS_STAGE2_EXT: usize = 11;
pub const PE_NB_CBKS_STAGE3_MAX: usize = 34;
pub const PE_NB_CBKS_STAGE3_MID: usize = 24;
pub const PE_NB_CBKS_STAGE3_MIN: usize = 16;
pub const PE_NB_CBKS_STAGE3_10_MS: usize = 12;
pub const PE_NB_CBKS_STAGE2_10_MS: usize = 3;
pub const PE_SHORTLAG_BIAS: f32 = 0.2;
pub const PE_PREVLAG_BIAS: f32 = 0.2;
pub const PE_FLATCONTOUR_BIAS: f32 = 0.05;
pub const SILK_PE_MIN_COMPLEX: usize = 0;
pub const SILK_PE_MID_COMPLEX: usize = 1;
pub const SILK_PE_MAX_COMPLEX: usize = 2;
const PE_MAX_NB_SUBFR_HALF: usize = PE_MAX_NB_SUBFR / 2;
pub const SILK_CB_LAGS_STAGE2_10_MS: [[i8; PE_NB_CBKS_STAGE2_10_MS]; PE_MAX_NB_SUBFR_HALF] =
[[0, 1, 0], [0, 0, 1]];
pub const SILK_CB_LAGS_STAGE3_10_MS: [[i8; PE_NB_CBKS_STAGE3_10_MS]; PE_MAX_NB_SUBFR_HALF] = [
[0, 0, 1, -1, 1, -1, 2, -2, 2, -2, 3, -3],
[0, 1, 0, 1, -1, 2, -1, 2, -2, 3, -2, 3],
];
pub const SILK_LAG_RANGE_STAGE3_10_MS: [[i8; 2]; PE_MAX_NB_SUBFR_HALF] = [[-3, 7], [-2, 7]];
pub const SILK_CB_LAGS_STAGE2: [[i8; PE_NB_CBKS_STAGE2_EXT]; PE_MAX_NB_SUBFR] = [
[0, 2, -1, -1, -1, 0, 0, 1, 1, 0, 1],
[0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0],
[0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0],
[0, -1, 2, 1, 0, 1, 1, 0, 0, -1, -1],
];
pub const SILK_CB_LAGS_STAGE3: [[i8; PE_NB_CBKS_STAGE3_MAX]; PE_MAX_NB_SUBFR] = [
[
0, 0, 1, -1, 0, 1, -1, 0, -1, 1, -2, 2, -2, -2, 2, -3, 2, 3, -3, -4, 3, -4, 4, 4, -5, 5,
-6, -5, 6, -7, 6, 5, 8, -9,
],
[
0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 1, -1, 0, 1, -1, -1, 1, -1, 2, 1, -1, 2, -2, -2,
2, -2, 2, 2, 3, -3,
],
[
0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, -1, 1, 0, 0, 2, 1, -1, 2, -1, -1, 2, -1, 2, 2,
-1, 3, -2, -2, -2, 3,
],
[
0, 1, 0, 0, 1, 0, 1, -1, 2, -1, 2, -1, 2, 3, -2, 3, -2, -2, 4, 4, -3, 5, -3, -4, 6, -4, 6,
5, -5, 8, -6, -5, -7, 9,
],
];
pub const SILK_LAG_RANGE_STAGE3: [[[i8; 2]; PE_MAX_NB_SUBFR]; SILK_PE_MAX_COMPLEX + 1] = [
[[-5, 8], [-1, 6], [-1, 6], [-4, 10]],
[[-6, 10], [-2, 6], [-1, 6], [-5, 10]],
[[-9, 12], [-3, 7], [-2, 7], [-7, 13]],
];
pub const SILK_NB_CBK_SEARCHS_STAGE3: [i8; SILK_PE_MAX_COMPLEX + 1] = [
PE_NB_CBKS_STAGE3_MIN as i8,
PE_NB_CBKS_STAGE3_MID as i8,
PE_NB_CBKS_STAGE3_MAX as i8,
];