gst/spectrum/demo-audiotest.c: Use autoaudiosink instead of alsasink and use a sine...
authorSebastian Dröge <slomo@circular-chaos.org>
Tue, 6 Nov 2007 12:23:35 +0000 (12:23 +0000)
committerSebastian Dröge <slomo@circular-chaos.org>
Tue, 6 Nov 2007 12:23:35 +0000 (12:23 +0000)
Original commit message from CVS:
* gst/spectrum/demo-audiotest.c: (main):
Use autoaudiosink instead of alsasink and use a sine wave.
* gst/spectrum/gstspectrum.c:
Fix the magnitude calculation.

common
gst/spectrum/gstspectrum.c
tests/examples/spectrum/demo-audiotest.c

diff --git a/common b/common
index 34d7d64..423e2ea 160000 (submodule)
--- a/common
+++ b/common
@@ -1 +1 @@
-Subproject commit 34d7d649b972ea4915611a6ed88f01613bf32777
+Subproject commit 423e2ea96b5f79281f4dd20d734bd968b3d95e89
index d9899b4..f2f654a 100644 (file)
@@ -517,10 +517,12 @@ process_s##width (GstSpectrum *spectrum, const gint##width *samples) \
   \
   /* Calculate magnitude in db */ \
   for (i = 0; i < spectrum->bands; i++) { \
-    gdouble val = (gdouble) freqdata[i].r * (gdouble) freqdata[i].r \
-        + (gdouble) freqdata[i].i * (gdouble) freqdata[i].i; \
-    val = sqrt (val); \
-    val = 20.0 * log10 (val / max); \
+    gdouble val; \
+    val = (gdouble) freqdata[i].r * (gdouble) freqdata[i].r; \
+    val += (gdouble) freqdata[i].i * (gdouble) freqdata[i].i; \
+    val *= nfft; \
+    val /= max*max; \
+    val = 10.0 * log10 (val); \
     if (val > spectrum->threshold) \
       val -= spectrum->threshold; \
     else \
@@ -583,9 +585,11 @@ process_f##width (GstSpectrum *spectrum, const g##type *samples) \
   \
   /* Calculate magnitude in db */ \
   for (i = 0; i < spectrum->bands; i++) { \
-    gdouble val = freqdata[i].r * freqdata[i].r + freqdata[i].i * freqdata[i].i; \
-    val = sqrt (val); \
-    val = 20.0 * log10 (val / nfft); \
+    gdouble val; \
+    val = freqdata[i].r * freqdata[i].r; \
+    val += freqdata[i].i * freqdata[i].i; \
+    val /= nfft; \
+    val = 10.0 * log10 (val); \
     if (val > spectrum->threshold) \
       val -= spectrum->threshold; \
     else \
index 8cc8201..05c9f88 100644 (file)
@@ -28,7 +28,7 @@
 #include <gst/gst.h>
 #include <gtk/gtk.h>
 
-#define DEFAULT_AUDIOSINK "alsasink"
+#define DEFAULT_AUDIOSINK "autoaudiosink"
 
 static GtkWidget *drawingarea = NULL;
 static guint spect_height = 64;
@@ -126,7 +126,7 @@ main (int argc, char *argv[])
   bin = gst_pipeline_new ("bin");
 
   src = gst_element_factory_make ("audiotestsrc", "src");
-  g_object_set (G_OBJECT (src), "wave", 1, NULL);
+  g_object_set (G_OBJECT (src), "wave", 0, NULL);
 
   spectrum = gst_element_factory_make ("spectrum", "spectrum");
   g_object_set (G_OBJECT (spectrum), "bands", spect_bands, "threshold", -80,