unsafe-libopus 0.2.0

libopus transpiled to rust by c2rust
Documentation
pub mod typedef_h {
    pub const silk_int16_MIN: i32 = i16::MIN as i32;
    pub const silk_int16_MAX: i32 = i16::MAX as i32;
}

pub use self::typedef_h::{silk_int16_MAX, silk_int16_MIN};

static mut A_fb1_20: i16 = ((5394) << 1) as i16;
static mut A_fb1_21: i16 = -(24290) as i16;
pub unsafe fn silk_ana_filt_bank_1(
    in_0: *const i16,
    S: *mut i32,
    outL: *mut i16,
    outH: *mut i16,
    N: i32,
) {
    let mut k: i32 = 0;
    let N2: i32 = N >> 1;
    let mut in32: i32 = 0;
    let mut X: i32 = 0;
    let mut Y: i32 = 0;
    let mut out_1: i32 = 0;
    let mut out_2: i32 = 0;
    k = 0;
    while k < N2 {
        in32 = ((*in_0.offset((2 * k) as isize) as i32 as u32) << 10) as i32;
        Y = in32 - *S.offset(0 as isize);
        X = (Y as i64 + (Y as i64 * A_fb1_21 as i64 >> 16)) as i32;
        out_1 = *S.offset(0 as isize) + X;
        *S.offset(0 as isize) = in32 + X;
        in32 = ((*in_0.offset((2 * k + 1) as isize) as i32 as u32) << 10) as i32;
        Y = in32 - *S.offset(1 as isize);
        X = (Y as i64 * A_fb1_20 as i64 >> 16) as i32;
        out_2 = *S.offset(1 as isize) + X;
        *S.offset(1 as isize) = in32 + X;
        *outL.offset(k as isize) = (if (if 11 == 1 {
            (out_2 + out_1 >> 1) + (out_2 + out_1 & 1)
        } else {
            (out_2 + out_1 >> 11 - 1) + 1 >> 1
        }) > silk_int16_MAX
        {
            silk_int16_MAX
        } else if (if 11 == 1 {
            (out_2 + out_1 >> 1) + (out_2 + out_1 & 1)
        } else {
            (out_2 + out_1 >> 11 - 1) + 1 >> 1
        }) < silk_int16_MIN
        {
            silk_int16_MIN
        } else if 11 == 1 {
            (out_2 + out_1 >> 1) + (out_2 + out_1 & 1)
        } else {
            (out_2 + out_1 >> 11 - 1) + 1 >> 1
        }) as i16;
        *outH.offset(k as isize) = (if (if 11 == 1 {
            (out_2 - out_1 >> 1) + (out_2 - out_1 & 1)
        } else {
            (out_2 - out_1 >> 11 - 1) + 1 >> 1
        }) > silk_int16_MAX
        {
            silk_int16_MAX
        } else if (if 11 == 1 {
            (out_2 - out_1 >> 1) + (out_2 - out_1 & 1)
        } else {
            (out_2 - out_1 >> 11 - 1) + 1 >> 1
        }) < silk_int16_MIN
        {
            silk_int16_MIN
        } else if 11 == 1 {
            (out_2 - out_1 >> 1) + (out_2 - out_1 & 1)
        } else {
            (out_2 - out_1 >> 11 - 1) + 1 >> 1
        }) as i16;
        k += 1;
    }
}