35 for (
int pos = resampler->
delay_pos; pos < 4; pos++) {
36 in_x[in_pos++] = resampler->
delay[pos];
38 for (
int pos = 0; pos < resampler->
delay_pos; pos++) {
39 in_x[in_pos++] = resampler->
delay[pos];
42 while (input_pos < length) {
45 float c1 = 0.5 * (in_x[2] - in_x[0]);
46 float c2 = in_x[0] - 2.5 * in_x[1] + 2 * in_x[2] - 0.5 * in_x[3];
47 float c3 = 0.5 * (in_x[3] - in_x[0]) + 1.5 * (in_x[1] - in_x[2]);
49 output[result] = c0 + resampler->
phase * (c1 + resampler->
phase * (c2 + resampler->
phase * c3));
53 while (resampler->
phase >= 1) {
54 resampler->
phase -= 1;
62 for (
int pos = resampler->
delay_pos; pos < 4; pos++) {
63 in_x[in_pos++] = resampler->
delay[pos];
65 for (
int pos = 0; pos < resampler->
delay_pos; pos++) {
66 in_x[in_pos++] = resampler->
delay[pos];
int32_t dsps_resampler_ph_exec(dsps_resample_ph_t *resampler, float *input, float *output, int32_t length)
Execute the poly-phase resampler.