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 z1 = b->z1; \
|
||||||
type z2 = b->z2; \
|
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]; \
|
const type in = src[n]; \
|
||||||
type out; \
|
type out; \
|
||||||
\
|
\
|
||||||
|
|
Loading…
Reference in New Issue