]> git.sesse.net Git - ffmpeg/commitdiff
avfilter/af_afftfilt: calculate all channels FFT values upfront
authorPaul B Mahol <onemda@gmail.com>
Mon, 12 Nov 2018 08:27:08 +0000 (09:27 +0100)
committerPaul B Mahol <onemda@gmail.com>
Mon, 12 Nov 2018 08:27:08 +0000 (09:27 +0100)
libavfilter/af_afftfilt.c

index d5e3b7f5001a87f365779b169f52e20c1c76fde4..150f8ed859553e69fa7e9f02a5d2028af710d6e8 100644 (file)
@@ -287,17 +287,20 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
         values[VAR_NBBINS]      = window_size / 2;
         values[VAR_CHANNELS]    = inlink->channels;
 
+        for (ch = 0; ch < inlink->channels; ch++) {
+            FFTComplex *fft_data = s->fft_data[ch];
+
+            av_fft_permute(s->fft, fft_data);
+            av_fft_calc(s->fft, fft_data);
+        }
+
         for (ch = 0; ch < inlink->channels; ch++) {
             FFTComplex *fft_data = s->fft_data[ch];
             FFTComplex *fft_temp = s->fft_temp[ch];
             float *buf = (float *)s->buffer->extended_data[ch];
             int x;
-
             values[VAR_CHANNEL] = ch;
 
-            av_fft_permute(s->fft, fft_data);
-            av_fft_calc(s->fft, fft_data);
-
             for (n = 0; n <= window_size / 2; n++) {
                 float fr, fi;