]> git.sesse.net Git - ffmpeg/commitdiff
avfilter/af_aiir: fix sp2zp mapping
authorPaul B Mahol <onemda@gmail.com>
Mon, 19 Oct 2020 16:34:50 +0000 (18:34 +0200)
committerPaul B Mahol <onemda@gmail.com>
Mon, 19 Oct 2020 16:42:42 +0000 (18:42 +0200)
libavfilter/af_aiir.c

index c5df4b1202e96bb96fb9f758a61496fa96604a64..64bd78ad8afef5d62ee226c74fd0833ecb0221b8 100644 (file)
@@ -877,23 +877,17 @@ static void convert_sp2zp(AVFilterContext *ctx, int channels)
         for (n = 0; n < iir->nb_ab[0]; n++) {
             double sr = iir->ab[0][2*n];
             double si = iir->ab[0][2*n+1];
-            double snr = 1. + sr;
-            double sdr = 1. - sr;
-            double div = sdr * sdr + si * si;
 
-            iir->ab[0][2*n]   = (snr * sdr - si * si) / div;
-            iir->ab[0][2*n+1] = (sdr * si + snr * si) / div;
+            iir->ab[0][2*n]   = exp(sr) * cos(si);
+            iir->ab[0][2*n+1] = exp(sr) * sin(si);
         }
 
         for (n = 0; n < iir->nb_ab[1]; n++) {
             double sr = iir->ab[1][2*n];
             double si = iir->ab[1][2*n+1];
-            double snr = 1. + sr;
-            double sdr = 1. - sr;
-            double div = sdr * sdr + si * si;
 
-            iir->ab[1][2*n]   = (snr * sdr - si * si) / div;
-            iir->ab[1][2*n+1] = (sdr * si + snr * si) / div;
+            iir->ab[1][2*n]   = exp(sr) * cos(si);
+            iir->ab[1][2*n+1] = exp(sr) * sin(si);
         }
     }
 }