diff options
author | Stefan Kost <ensonic@users.sf.net> | 2010-08-11 15:48:18 +0300 |
---|---|---|
committer | Stefan Kost <ensonic@users.sf.net> | 2010-09-06 09:53:00 +0300 |
commit | 77fe8c151a623efcc6982040c7345948a2ff2a05 (patch) | |
tree | 564c04569118d6651e4c772c0d3cd72d0d70396c /gst/spectrum | |
parent | 0dca0becb2645d978b6f25e4fca086806bc7ffab (diff) | |
download | gstreamer-plugins-good-77fe8c151a623efcc6982040c7345948a2ff2a05.tar.gz |
spectrum only aggregate magnitude/phase if user asks for it
Diffstat (limited to 'gst/spectrum')
-rw-r--r-- | gst/spectrum/gstspectrum.c | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/gst/spectrum/gstspectrum.c b/gst/spectrum/gstspectrum.c index 6e91af8ac..9e82829ae 100644 --- a/gst/spectrum/gstspectrum.c +++ b/gst/spectrum/gstspectrum.c @@ -623,21 +623,25 @@ gst_spectrum_transform_ip (GstBaseTransform * trans, GstBuffer * buffer) gst_fft_f32_fft (fft_ctx, input_tmp, freqdata); spectrum->num_fft++; - /* Calculate magnitude in db */ - for (i = 0; i < bands; i++) { - gdouble val = 0.0; - val = freqdata[i].r * freqdata[i].r; - val += freqdata[i].i * freqdata[i].i; - val /= nfft * nfft; - val = 10.0 * log10 (val); - if (val < threshold) - val = threshold; - spect_magnitude[i] += val; + if (spectrum->message_magnitude) { + gdouble val; + /* Calculate magnitude in db */ + for (i = 0; i < bands; i++) { + val = freqdata[i].r * freqdata[i].r; + val += freqdata[i].i * freqdata[i].i; + val /= nfft * nfft; + val = 10.0 * log10 (val); + if (val < threshold) + val = threshold; + spect_magnitude[i] += val; + } } - /* Calculate phase */ - for (i = 0; i < bands; i++) - spect_phase[i] += atan2 (freqdata[i].i, freqdata[i].r); + if (spectrum->message_phase) { + /* Calculate phase */ + for (i = 0; i < bands; i++) + spect_phase[i] += atan2 (freqdata[i].i, freqdata[i].r); + } } /* Do we have the FFTs for one interval? */ |