From 1a32265b5108a4c7c7cc46b52ae84f12f3241050 Mon Sep 17 00:00:00 2001 From: Stefan Kost Date: Thu, 10 Mar 2011 14:15:42 +0200 Subject: [PATCH] spectrum: avoid unneccesary extra fft runs Before it was possible that we run an extra fft when the time for sending a new message is due. Only do this if we have not run the fft for the interval at all. --- gst/spectrum/gstspectrum.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/gst/spectrum/gstspectrum.c b/gst/spectrum/gstspectrum.c index d09fbbe2e2..ab3a556b1f 100644 --- a/gst/spectrum/gstspectrum.c +++ b/gst/spectrum/gstspectrum.c @@ -986,10 +986,9 @@ gst_spectrum_transform_ip (GstBaseTransform * trans, GstBuffer * buffer) ); /* If we have enough frames for an FFT or we have all frames required for - * the interval run an FFT. In the last case we probably take the - * FFT of frames that we already handled. - */ - if ((spectrum->num_frames % nfft == 0) || have_full_interval) { + * the interval and we haven't run a FFT, then run an FFT */ + if ((spectrum->num_frames % nfft == 0) || + (have_full_interval && !spectrum->num_fft)) { gst_spectrum_run_fft (spectrum, cd, input_pos); spectrum->num_fft++; } @@ -1050,10 +1049,9 @@ gst_spectrum_transform_ip (GstBaseTransform * trans, GstBuffer * buffer) ); /* If we have enough frames for an FFT or we have all frames required for - * the interval run an FFT. In the last case we probably take the - * FFT of frames that we already handled. - */ - if ((spectrum->num_frames % nfft == 0) || have_full_interval) { + * the interval and we haven't run a FFT, then run an FFT */ + if ((spectrum->num_frames % nfft == 0) || + (have_full_interval && !spectrum->num_fft)) { for (c = 0; c < channels; c++) { cd = &spectrum->channel_data[c]; gst_spectrum_run_fft (spectrum, cd, input_pos);