summaryrefslogtreecommitdiff
path: root/gst/spectrum
diff options
context:
space:
mode:
authorStefan Kost <ensonic@users.sf.net>2010-08-11 15:48:18 +0300
committerStefan Kost <ensonic@users.sf.net>2010-09-06 09:53:00 +0300
commit77fe8c151a623efcc6982040c7345948a2ff2a05 (patch)
tree564c04569118d6651e4c772c0d3cd72d0d70396c /gst/spectrum
parent0dca0becb2645d978b6f25e4fca086806bc7ffab (diff)
downloadgstreamer-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.c30
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? */