unsafe-libopus 0.2.0

libopus transpiled to rust by c2rust
Documentation
use crate::silk::define::MAX_NB_SUBFR;
use crate::silk::float::energy_FLP::silk_energy_FLP;
use crate::silk::float::LPC_analysis_filter_FLP::silk_LPC_analysis_filter_FLP;

pub unsafe fn silk_residual_energy_FLP(
    nrgs: *mut f32,
    x: *const f32,
    a: *mut [f32; 16],
    gains: *const f32,
    subfr_length: i32,
    nb_subfr: i32,
    LPC_order: i32,
) {
    let mut shift: i32 = 0;
    let mut LPC_res_ptr: *mut f32 = 0 as *mut f32;
    let mut LPC_res: [f32; 192] = [0.; 192];
    LPC_res_ptr = LPC_res.as_mut_ptr().offset(LPC_order as isize);
    shift = LPC_order + subfr_length;
    silk_LPC_analysis_filter_FLP(
        LPC_res.as_mut_ptr(),
        (*a.offset(0 as isize)).as_mut_ptr() as *const f32,
        x.offset((0 * shift) as isize),
        2 * shift,
        LPC_order,
    );
    *nrgs.offset(0 as isize) = ((*gains.offset(0 as isize) * *gains.offset(0 as isize)) as f64
        * silk_energy_FLP(LPC_res_ptr.offset((0 * shift) as isize), subfr_length))
        as f32;
    *nrgs.offset(1 as isize) = ((*gains.offset(1 as isize) * *gains.offset(1 as isize)) as f64
        * silk_energy_FLP(LPC_res_ptr.offset((1 * shift) as isize), subfr_length))
        as f32;
    if nb_subfr == MAX_NB_SUBFR {
        silk_LPC_analysis_filter_FLP(
            LPC_res.as_mut_ptr(),
            (*a.offset(1 as isize)).as_mut_ptr() as *const f32,
            x.offset((2 * shift) as isize),
            2 * shift,
            LPC_order,
        );
        *nrgs.offset(2 as isize) = ((*gains.offset(2 as isize) * *gains.offset(2 as isize)) as f64
            * silk_energy_FLP(LPC_res_ptr.offset((0 * shift) as isize), subfr_length))
            as f32;
        *nrgs.offset(3 as isize) = ((*gains.offset(3 as isize) * *gains.offset(3 as isize)) as f64
            * silk_energy_FLP(LPC_res_ptr.offset((1 * shift) as isize), subfr_length))
            as f32;
    }
}