diff options
author | Sebastian Dröge <slomo@circular-chaos.org> | 2007-09-06 07:21:22 +0000 |
---|---|---|
committer | Sebastian Dröge <slomo@circular-chaos.org> | 2007-09-06 07:21:22 +0000 |
commit | 76a3fd7100246d47d3dcf08cd1e3370adca244af (patch) | |
tree | 8ed36919f4ad868314fa6cec4b4df4f34c999819 /gst/spectrum/gstspectrum.h | |
parent | 27f25ccd9bc38a0fb685bf26b28d3f5d5023b110 (diff) | |
download | gst-plugins-bad-76a3fd7100246d47d3dcf08cd1e3370adca244af.tar.gz gst-plugins-bad-76a3fd7100246d47d3dcf08cd1e3370adca244af.tar.bz2 gst-plugins-bad-76a3fd7100246d47d3dcf08cd1e3370adca244af.zip |
Port GstSpectrum to GstAudioFilter and libgstfft, add support for int32, float and double, use floats for the message...
Original commit message from CVS:
* configure.ac:
* gst/spectrum/Makefile.am:
* gst/spectrum/demo-audiotest.c: (draw_spectrum),
(message_handler), (main):
* gst/spectrum/demo-osssrc.c: (draw_spectrum), (message_handler):
* gst/spectrum/gstspectrum.c: (gst_spectrum_base_init),
(gst_spectrum_class_init), (gst_spectrum_init),
(gst_spectrum_dispose), (gst_spectrum_set_property),
(gst_spectrum_get_property), (gst_spectrum_start),
(gst_spectrum_setup), (gst_spectrum_message_new),
(gst_spectrum_transform_ip):
* gst/spectrum/gstspectrum.h:
Port GstSpectrum to GstAudioFilter and libgstfft, add support
for int32, float and double, use floats for the message contents,
average all FFTs done in one interval for better results, use
a better windowing function, allow posting the phase in the message
and actually do an FFT with the requested number of bands instead
of interpolating.
* tests/check/elements/spectrum.c: (GST_START_TEST),
(spectrum_suite):
Improve the units tests by checking for a 11025Hz sine wave
and add unit tests for all 4 supported sample types.
Diffstat (limited to 'gst/spectrum/gstspectrum.h')
-rw-r--r-- | gst/spectrum/gstspectrum.h | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/gst/spectrum/gstspectrum.h b/gst/spectrum/gstspectrum.h index 70ab25c9..a32d4ccf 100644 --- a/gst/spectrum/gstspectrum.h +++ b/gst/spectrum/gstspectrum.h @@ -25,6 +25,7 @@ #include <gst/gst.h> #include <gst/base/gstadapter.h> #include <gst/base/gstbasetransform.h> +#include <gst/audio/gstaudiofilter.h> #ifdef __cplusplus extern "C" { @@ -39,9 +40,11 @@ extern "C" { typedef struct _GstSpectrum GstSpectrum; typedef struct _GstSpectrumClass GstSpectrumClass; +typedef void (*GstSpectrumProcessFunc) (GstSpectrum *, const guint8 *); +typedef void (*GstSpectrumFFTFreeFunc) (void *); struct _GstSpectrum { - GstBaseTransform element; + GstAudioFilter element; GstPad *sinkpad,*srcpad; GstAdapter *adapter; @@ -49,24 +52,28 @@ struct _GstSpectrum { /* properties */ gboolean message; /* whether or not to post messages */ + gboolean message_magnitude; + gboolean message_phase; guint64 interval; /* how many seconds between emits */ guint bands; /* number of spectrum bands */ gint threshold; /* energy level treshold */ gint num_frames; /* frame count (1 sample per channel) * since last emit */ + gint num_fft; /* number of FFTs since last emit */ - gint rate; /* caps variables */ - gint channels; - /* <private> */ - gint base, len; - gint16 *re, *im, *loud; - guchar *spect; + gfloat *spect_magnitude; + gfloat *spect_phase; + GstSpectrumProcessFunc process; + void *fft_ctx; + GstSpectrumFFTFreeFunc fft_free_func; + void *in; + void *freqdata; }; struct _GstSpectrumClass { - GstBaseTransformClass parent_class; + GstAudioFilterClass parent_class; }; GType gst_spectrum_get_type (void); |