Browse code

avfilter/af_firequalizer: fix minval on cepstrum calculation

The impulse response is scaled with 2/rdft_len.

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>

Muhammad Faiz authored on 2017/08/25 19:36:04
Showing 1 changed files
... ...
@@ -554,6 +554,7 @@ static void generate_min_phase_kernel(FIREqualizerContext *s, float *rdft_buf)
554 554
 {
555 555
     int k, cepstrum_len = s->cepstrum_len, rdft_len = s->rdft_len;
556 556
     double norm = 2.0 / cepstrum_len;
557
+    double minval = 1e-7 / rdft_len;
557 558
 
558 559
     memset(s->cepstrum_buf, 0, cepstrum_len * sizeof(*s->cepstrum_buf));
559 560
     memcpy(s->cepstrum_buf, rdft_buf, rdft_len/2 * sizeof(*rdft_buf));
... ...
@@ -561,11 +562,11 @@ static void generate_min_phase_kernel(FIREqualizerContext *s, float *rdft_buf)
561 561
 
562 562
     av_rdft_calc(s->cepstrum_rdft, s->cepstrum_buf);
563 563
 
564
-    s->cepstrum_buf[0] = log(FFMAX(s->cepstrum_buf[0], 1e-10));
565
-    s->cepstrum_buf[1] = log(FFMAX(s->cepstrum_buf[1], 1e-10));
564
+    s->cepstrum_buf[0] = log(FFMAX(s->cepstrum_buf[0], minval));
565
+    s->cepstrum_buf[1] = log(FFMAX(s->cepstrum_buf[1], minval));
566 566
 
567 567
     for (k = 2; k < cepstrum_len; k += 2) {
568
-        s->cepstrum_buf[k] = log(FFMAX(s->cepstrum_buf[k], 1e-10));
568
+        s->cepstrum_buf[k] = log(FFMAX(s->cepstrum_buf[k], minval));
569 569
         s->cepstrum_buf[k+1] = 0;
570 570
     }
571 571