Browse Source

avfilter/af_acrossover: unroll biquad_process loop

Makes code significantly faster for higher orders.
tags/n4.4
Paul B Mahol 5 years ago
parent
commit
ca0900bc6e
1 changed files with 19 additions and 1 deletions
  1. +19
    -1
      libavfilter/af_acrossover.c

+ 19
- 1
libavfilter/af_acrossover.c View File

@@ -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; \
\


Loading…
Cancel
Save