unsafe-libopus 0.2.0

libopus transpiled to rust by c2rust
Documentation
pub mod typedef_h {
    pub const silk_int32_MAX: i32 = i32::MAX;
}

pub use self::typedef_h::silk_int32_MAX;

pub unsafe fn silk_log2lin(inLog_Q7: i32) -> i32 {
    let mut out: i32 = 0;
    let mut frac_Q7: i32 = 0;
    if inLog_Q7 < 0 {
        return 0;
    } else {
        if inLog_Q7 >= 3967 {
            return silk_int32_MAX;
        }
    }
    out = ((1) << (inLog_Q7 >> 7)) as i32;
    frac_Q7 = inLog_Q7 & 0x7f;
    if inLog_Q7 < 2048 {
        out = out
            + (out
                * (frac_Q7 as i64
                    + ((frac_Q7 as i16 as i32 * (128 - frac_Q7) as i16 as i32) as i64
                        * -(174) as i16 as i64
                        >> 16)) as i32
                >> 7);
    } else {
        out = out
            + (out >> 7)
                * (frac_Q7 as i64
                    + ((frac_Q7 as i16 as i32 * (128 - frac_Q7) as i16 as i32) as i64
                        * -(174) as i16 as i64
                        >> 16)) as i32;
    }
    return out;
}