gst/: Change the meaning of the magnitude values given in the
authorSebastian Dröge <slomo@circular-chaos.org>
Sun, 11 Nov 2007 21:12:10 +0000 (21:12 +0000)
committerSebastian Dröge <slomo@circular-chaos.org>
Sun, 11 Nov 2007 21:12:10 +0000 (21:12 +0000)
Original commit message from CVS:
* gst/equalizer/demo.c: (draw_spectrum):
* gst/spectrum/demo-audiotest.c: (draw_spectrum):
* gst/spectrum/demo-osssrc.c: (draw_spectrum):
* gst/spectrum/gstspectrum.c: (gst_spectrum_class_init):
Change the meaning of the magnitude values given in the
GstMessages by spectrum to decibel instead of
decibel+threshold.

gst/spectrum/gstspectrum.c
tests/examples/equalizer/demo.c
tests/examples/spectrum/demo-audiotest.c
tests/examples/spectrum/demo-osssrc.c

index 3b2f19fcb2f348d2a8ccbb7e5c7771a79525e351..85e0540f293fd01d8ff91814e4e633e837223010 100644 (file)
@@ -40,9 +40,9 @@
  *   <para>
  *   #GstValueList of #gfloat
  *   <classname>&quot;magnitude&quot;</classname>:
- *   the level for each frequency band. A value of 0 maps to the
- *   db value given by the
- *   <link linkend="GstSpectrum--threshold">threshold property.</link>.
+ *   the level for each frequency band in dB. All values below the value of the
+ *   <link linkend="GstSpectrum--threshold">threshold property</link> will
+ *   be set to the threshold.
  *   </para>
  * </listitem>
  * <listitem>
@@ -57,7 +57,7 @@
  * This element cannot be used with the gst-launch command in a sensible way.
  * The included demo shows how to use it in an application.
  *
- * Last reviewed on 2007-08-18 (0.10.5)
+ * Last reviewed on 2007-11-11 (0.10.6)
  * </refsect2>
  */
 
@@ -212,8 +212,8 @@ gst_spectrum_class_init (GstSpectrumClass * klass)
 
   g_object_class_install_property (gobject_class, PROP_THRESHOLD,
       g_param_spec_int ("threshold", "Threshold",
-          "db threshold for result, maps to 0", G_MININT, 0, DEFAULT_THRESHOLD,
-          G_PARAM_READWRITE));
+          "dB threshold for result. All lower values will be set to this",
+          G_MININT, 0, DEFAULT_THRESHOLD, G_PARAM_READWRITE));
 
   GST_DEBUG_CATEGORY_INIT (gst_spectrum_debug, "spectrum", 0,
       "audio spectrum analyser element");
@@ -522,10 +522,8 @@ process_s##width (GstSpectrum *spectrum, const gint##width *samples) \
     val += (gdouble) freqdata[i].i * (gdouble) freqdata[i].i; \
     val /= max*max; \
     val = 10.0 * log10 (val); \
-    if (val > spectrum->threshold) \
-      val -= spectrum->threshold; \
-    else \
-      val = 0.0; \
+    if (val < spectrum->threshold) \
+      val = spectrum->threshold; \
     spect_magnitude[i] += val; \
   } \
    \
@@ -589,10 +587,8 @@ process_f##width (GstSpectrum *spectrum, const g##type *samples) \
     val += freqdata[i].i * freqdata[i].i; \
     val /= nfft*nfft; \
     val = 10.0 * log10 (val); \
-    if (val > spectrum->threshold) \
-      val -= spectrum->threshold; \
-    else \
-      val = 0.0; \
+    if (val < spectrum->threshold) \
+      val = spectrum->threshold; \
     spect_magnitude[i] += val; \
   } \
    \
index b4f1c55044928d75c09c83d6f81eb71c38db3ec3..43518463ab1be52c1736edfe8e4c69e2b13dceb2 100644 (file)
@@ -88,7 +88,7 @@ draw_spectrum (gfloat * data)
       TRUE, 0, 0, spect_bands, spect_height);
   for (i = 0; i < spect_bands; i++) {
     gdk_draw_rectangle (drawingarea->window, drawingarea->style->white_gc,
-        TRUE, i, spect_height - data[i], 1, data[i]);
+        TRUE, i, -data[i], 1, spect_height + data[i]);
   }
   gdk_window_end_paint (drawingarea->window);
 }
@@ -134,7 +134,7 @@ main (int argc, char *argv[])
 
   /* White noise */
   src = gst_element_factory_make ("audiotestsrc", "src");
-  g_object_set (G_OBJECT (src), "wave", 5, "volume", 0.5, NULL);
+  g_object_set (G_OBJECT (src), "wave", 5, "volume", 0.8, NULL);
 
   /* Force float32 samples */
   capsfilter = gst_element_factory_make ("capsfilter", "capsfilter");
index 05c9f886115767bf2fab4ce1c409e49f135ee5a0..bc2e9abc294a690c44221f13531adab8c87b2a08 100644 (file)
@@ -82,7 +82,7 @@ draw_spectrum (gfloat * data)
       TRUE, 0, 0, spect_bands, spect_height);
   for (i = 0; i < spect_bands; i++) {
     gdk_draw_rectangle (drawingarea->window, drawingarea->style->white_gc,
-        TRUE, i, spect_height - data[i], 1, data[i]);
+        TRUE, i, -data[i], 1, spect_height + data[i]);
   }
   gdk_window_end_paint (drawingarea->window);
 }
index d0b07f334b3e8a5cac2cbc7707a267efc5b8a84e..eb28cff7110e94760a9d5b440acb619d64ab6caa 100644 (file)
@@ -71,7 +71,7 @@ draw_spectrum (gfloat * data)
       TRUE, 0, 0, spect_bands, spect_height);
   for (i = 0; i < spect_bands; i++) {
     gdk_draw_rectangle (drawingarea->window, drawingarea->style->white_gc,
-        TRUE, i, spect_height - data[i], 1, data[i]);
+        TRUE, i, -data[i], 1, spect_height + data[i]);
   }
   gdk_window_end_paint (drawingarea->window);
 }