summaryrefslogtreecommitdiffstats
path: root/gst/spectrum/gstspectrum.c
diff options
context:
space:
mode:
authorSebastian Dröge <slomo@circular-chaos.org>2007-11-06 12:23:35 +0000
committerSebastian Dröge <slomo@circular-chaos.org>2007-11-06 12:23:35 +0000
commit1407259dbc44b0cf23c9e72770c990e5f8cac680 (patch)
treeb9dd5dd88cf2b3f51dc6353b9b713eb60ebc7605 /gst/spectrum/gstspectrum.c
parent209d6105d73bcdb01f20432035fc58436caa26b7 (diff)
downloadgst-plugins-bad-1407259dbc44b0cf23c9e72770c990e5f8cac680.tar.gz
gst-plugins-bad-1407259dbc44b0cf23c9e72770c990e5f8cac680.tar.bz2
gst-plugins-bad-1407259dbc44b0cf23c9e72770c990e5f8cac680.zip
gst/spectrum/demo-audiotest.c: Use autoaudiosink instead of alsasink and use a sine wave.
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.
Diffstat (limited to 'gst/spectrum/gstspectrum.c')
-rw-r--r--gst/spectrum/gstspectrum.c18
1 files changed, 11 insertions, 7 deletions
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 \