summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
m---------common0
-rw-r--r--gst/spectrum/demo-audiotest.c4
-rw-r--r--gst/spectrum/gstspectrum.c18
4 files changed, 21 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index fcaab398..d4fcfbab 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2007-11-06 Sebastian Dröge <slomo@circular-chaos.org>
+
+ * gst/spectrum/demo-audiotest.c: (main):
+ Use autoaudiosink instead of alsasink and use a sine wave.
+
+ * gst/spectrum/gstspectrum.c:
+ Fix the magnitude calculation.
+
2007-11-04 Tim-Philipp Müller <tim at centricular dot net>
Patch by: Ole André Vadla Ravnås <ole.andre.ravnas@tandberg.com>
diff --git a/common b/common
-Subproject 34d7d649b972ea4915611a6ed88f01613bf3277
+Subproject 423e2ea96b5f79281f4dd20d734bd968b3d95e8
diff --git a/gst/spectrum/demo-audiotest.c b/gst/spectrum/demo-audiotest.c
index 8cc8201f..05c9f886 100644
--- a/gst/spectrum/demo-audiotest.c
+++ b/gst/spectrum/demo-audiotest.c
@@ -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,
diff --git a/gst/spectrum/gstspectrum.c b/gst/spectrum/gstspectrum.c
index d9899b49..f2f654a6 100644
--- a/gst/spectrum/gstspectrum.c
+++ b/gst/spectrum/gstspectrum.c
@@ -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 \