diff --git a/libavfilter/af_acrossover.c b/libavfilter/af_acrossover.c index 7788251d3a..6150af7933 100644 --- a/libavfilter/af_acrossover.c +++ b/libavfilter/af_acrossover.c @@ -288,7 +288,25 @@ static void biquad_process_## name(const BiquadCoeffs *const c,\ type z1 = b->z1; \ type z2 = b->z2; \ \ - for (int n = 0; n < nb_samples; n++) { \ + for (int n = 0; n + 1 < nb_samples; n++) { \ + type in = src[n]; \ + type out; \ + \ + out = in * b0 + z1; \ + z1 = b1 * in + z2 + a1 * out; \ + z2 = b2 * in + a2 * out; \ + dst[n] = out; \ + \ + n++; \ + in = src[n]; \ + out = in * b0 + z1; \ + z1 = b1 * in + z2 + a1 * out; \ + z2 = b2 * in + a2 * out; \ + dst[n] = out; \ + } \ + \ + if (nb_samples & 1) { \ + const int n = nb_samples - 1; \ const type in = src[n]; \ type out; \ \