summaryrefslogtreecommitdiff
path: root/gst/spectrum
diff options
context:
space:
mode:
authorStefan Kost <ensonic@users.sf.net>2011-03-10 14:12:01 +0200
committerStefan Kost <ensonic@users.sf.net>2011-03-10 14:12:01 +0200
commitf1785b0e4aafc014354f732cec9485fdfbcafe4b (patch)
tree60e29efb726a31226135ea685e37dd072462b7b4 /gst/spectrum
parent5bf267c485493db9912926044c4e590e83ccfe3d (diff)
spectrum: only scale the vectors that we are processing
Phase is not produced by default, so lets not scale it unconditionally to save a few cycles.
Diffstat (limited to 'gst/spectrum')
-rw-r--r--gst/spectrum/gstspectrum.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/gst/spectrum/gstspectrum.c b/gst/spectrum/gstspectrum.c
index ecc8a29f8..d09fbbe2e 100644
--- a/gst/spectrum/gstspectrum.c
+++ b/gst/spectrum/gstspectrum.c
@@ -889,13 +889,17 @@ gst_spectrum_prepare_message_data (GstSpectrum * spectrum,
guint i;
guint bands = spectrum->bands;
guint num_fft = spectrum->num_fft;
- gfloat *spect_magnitude = cd->spect_magnitude;
- gfloat *spect_phase = cd->spect_phase;
/* Calculate average */
- for (i = 0; i < bands; i++) {
- spect_magnitude[i] /= num_fft;
- spect_phase[i] /= num_fft;
+ if (spectrum->message_magnitude) {
+ gfloat *spect_magnitude = cd->spect_magnitude;
+ for (i = 0; i < bands; i++)
+ spect_magnitude[i] /= num_fft;
+ }
+ if (spectrum->message_phase) {
+ gfloat *spect_phase = cd->spect_phase;
+ for (i = 0; i < bands; i++)
+ spect_phase[i] /= num_fft;
}
}