mirror of https://git.ffmpeg.org/ffmpeg.git
avfilter/af_acrossover: unroll biquad_process loop
Makes code significantly faster for higher orders.
This commit is contained in:
parent
6100a01a7a
commit
ca0900bc6e
|
@ -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…
Reference in New Issue