diff options
| m--------- | common | 0 | ||||
| -rw-r--r-- | gst/spectrum/gstspectrum.c | 18 | ||||
| -rw-r--r-- | tests/examples/spectrum/demo-audiotest.c | 4 | 
3 files changed, 13 insertions, 9 deletions
diff --git a/common b/common -Subproject 34d7d649b972ea4915611a6ed88f01613bf3277 +Subproject 423e2ea96b5f79281f4dd20d734bd968b3d95e8 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 \ diff --git a/tests/examples/spectrum/demo-audiotest.c b/tests/examples/spectrum/demo-audiotest.c index 8cc8201f..05c9f886 100644 --- a/tests/examples/spectrum/demo-audiotest.c +++ b/tests/examples/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,  | 
