unsafe-libopus 0.2.0

libopus transpiled to rust by c2rust
Documentation
use crate::silk::define::LTP_ORDER;
use crate::silk::float::corrMatrix_FLP::{silk_corrMatrix_FLP, silk_corrVector_FLP};
use crate::silk::float::energy_FLP::silk_energy_FLP;
use crate::silk::float::scale_vector_FLP::silk_scale_vector_FLP;

pub unsafe fn silk_find_LTP_FLP(
    XX: *mut f32,
    xX: *mut f32,
    mut r_ptr: *const f32,
    lag: *const i32,
    subfr_length: i32,
    nb_subfr: i32,
) {
    let mut k: i32 = 0;
    let mut xX_ptr: *mut f32 = 0 as *mut f32;
    let mut XX_ptr: *mut f32 = 0 as *mut f32;
    let mut lag_ptr: *const f32 = 0 as *const f32;
    let mut xx: f32 = 0.;
    let mut temp: f32 = 0.;
    xX_ptr = xX;
    XX_ptr = XX;
    k = 0;
    while k < nb_subfr {
        lag_ptr = r_ptr.offset(-((*lag.offset(k as isize) + LTP_ORDER / 2) as isize));
        silk_corrMatrix_FLP(lag_ptr, subfr_length, LTP_ORDER, XX_ptr);
        silk_corrVector_FLP(lag_ptr, r_ptr, subfr_length, LTP_ORDER, xX_ptr);
        xx = silk_energy_FLP(r_ptr, subfr_length + LTP_ORDER) as f32;
        temp = 1.0f32
            / (if xx
                > 0.03f32 * 0.5f32 * (*XX_ptr.offset(0 as isize) + *XX_ptr.offset(24 as isize))
                    + 1.0f32
            {
                xx
            } else {
                0.03f32 * 0.5f32 * (*XX_ptr.offset(0 as isize) + *XX_ptr.offset(24 as isize))
                    + 1.0f32
            });
        silk_scale_vector_FLP(XX_ptr, temp, LTP_ORDER * LTP_ORDER);
        silk_scale_vector_FLP(xX_ptr, temp, LTP_ORDER);
        r_ptr = r_ptr.offset(subfr_length as isize);
        XX_ptr = XX_ptr.offset((LTP_ORDER * LTP_ORDER) as isize);
        xX_ptr = xX_ptr.offset(LTP_ORDER as isize);
        k += 1;
    }
}