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.
This commit is contained in:
Stefan Kost 2011-03-10 14:15:42 +02:00
parent f1785b0e4a
commit 1a32265b51

View file

@ -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);