avfilter/af_acrossover: really fix single-pole allpass coefficients
authorPaul B Mahol <onemda@gmail.com>
Sat, 28 Nov 2020 13:37:06 +0000 (14:37 +0100)
committerPaul B Mahol <onemda@gmail.com>
Sat, 28 Nov 2020 13:53:17 +0000 (14:53 +0100)
Now LR2, LR6, LR10, LR14 and LR18 have really flat sum.

libavfilter/af_acrossover.c

index f989ac8..33a0812 100644 (file)
@@ -211,11 +211,9 @@ static void set_ap(BiquadContext *b, double fc, double q, double sr)
 
 static void set_ap1(BiquadContext *b, double fc, double sr)
 {
-    double omega = 0.5 * M_PI * fc / sr + M_PI_4;
-    double cosine = cos(omega);
-    double sine = sin(omega);
+    double omega = M_PI * fc / sr;
 
-    b->a1 = -cosine / sine;
+    b->a1 = exp(-omega);
     b->a2 = 0.;
     b->b0 = -b->a1;
     b->b1 = 1.;