From a09411a0ee029687d3a80fb17149406513b2d2e5 Mon Sep 17 00:00:00 2001 From: Paul B Mahol Date: Mon, 12 Nov 2018 09:27:08 +0100 Subject: [PATCH] avfilter/af_afftfilt: calculate all channels FFT values upfront --- libavfilter/af_afftfilt.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/libavfilter/af_afftfilt.c b/libavfilter/af_afftfilt.c index d5e3b7f500..150f8ed859 100644 --- a/libavfilter/af_afftfilt.c +++ b/libavfilter/af_afftfilt.c @@ -289,14 +289,17 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame) 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 (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; for (n = 0; n <= window_size / 2; n++) { float fr, fi;