rendered paste bodyint siren_rmlt(float *samples, float *old_samples, int dct_length, float *rmlt_coefs) {
int half_dct_length = dct_length / 2;
float *old_ptr = old_samples + half_dct_length;
float *coef_high = rmlt_coefs + half_dct_length;
float *coef_low = rmlt_coefs + half_dct_length;
float *samples_low = samples;
float *samples_high = samples + dct_length;
float *window_low = NULL;
float *window_high = NULL;
int i = 0;
if (rmlt_initialized == 0)
siren_rmlt_init();
if (dct_length == 320)
window_low = rmlt_window_320;
else if (dct_length == 640)
window_low = rmlt_window_640;
else
return 4;
window_high = window_low + dct_length;
for (i = 0; i < half_dct_length; i++) {
*--coef_low = *--old_ptr;
*coef_high++ = (*samples_low * *--window_high) - (*--samples_high * *window_low);
*old_ptr = (*samples_high * *window_high) + (*samples_low++ * *window_low++);
}
siren_dct4(rmlt_coefs, rmlt_coefs, dct_length);
return 0;
}