spectrum: only scale the vectors that we are processing
authorStefan Kost <ensonic@users.sf.net>
Thu, 10 Mar 2011 12:12:01 +0000 (14:12 +0200)
committerStefan Kost <ensonic@users.sf.net>
Thu, 10 Mar 2011 12:12:01 +0000 (14:12 +0200)
Phase is not produced by default, so lets not scale it unconditionally to save a
few cycles.

gst/spectrum/gstspectrum.c

index ecc8a29..d09fbbe 100644 (file)
@@ -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;
   }
 }