summaryrefslogtreecommitdiffstats
path: root/gst/audiofx/audiowsincband.h
diff options
context:
space:
mode:
authorSebastian Dröge <slomo@circular-chaos.org>2007-08-10 05:20:06 +0000
committerSebastian Dröge <slomo@circular-chaos.org>2007-08-10 05:20:06 +0000
commit86dab97c0258d1ae42e0fade45d22844b9466797 (patch)
treeaebdff063c088117609c8d240e2a9e0f300da87b /gst/audiofx/audiowsincband.h
parent6b97253764969146b7b88df4d635777a36abd369 (diff)
gst/filter/gstbpwsinc.*: Apply the same changes to the bandpass filter:
Original commit message from CVS: * gst/filter/gstbpwsinc.c: (gst_bpwsinc_class_init), (gst_bpwsinc_init), (process_32), (process_64), (bpwsinc_build_kernel), (bpwsinc_setup), (bpwsinc_get_unit_size), (bpwsinc_transform), (bpwsinc_set_property), (bpwsinc_get_property): * gst/filter/gstbpwsinc.h: Apply the same changes to the bandpass filter: - Support double input - Fix processing for input with >1 channels - Specify frequency in Hz - Specify actual filter kernel length - Use transform instead of transform_ip as we're working out of place anyway - Factor out filter kernel generation and update the filter kernel when the properties are set Fix bandpass filter kernel generation to actually generate a bandpass filter by creating a highpass instead of a second lowpass. * gst/filter/gstlpwsinc.c: (gst_lpwsinc_class_init): Small formatting fix.
Diffstat (limited to 'gst/audiofx/audiowsincband.h')
-rw-r--r--gst/audiofx/audiowsincband.h20
1 files changed, 10 insertions, 10 deletions
diff --git a/gst/audiofx/audiowsincband.h b/gst/audiofx/audiowsincband.h
index af5938d5..3bbb3e01 100644
--- a/gst/audiofx/audiowsincband.h
+++ b/gst/audiofx/audiowsincband.h
@@ -25,10 +25,6 @@
* chapter 16
* available at http://www.dspguide.com/
*
- * FIXME:
- * - this filter is totally unoptimized !
- * - we do not destroy the allocated memory for filters and residue
- * - this might be improved upon with bytestream
*/
#ifndef __GST_BPWSINC_H__
@@ -54,6 +50,8 @@ G_BEGIN_DECLS
typedef struct _GstBPWSinc GstBPWSinc;
typedef struct _GstBPWSincClass GstBPWSincClass;
+typedef void (*GstBPWSincProcessFunc) (GstBPWSinc *, guint8 *, guint8 *, guint);
+
/**
* GstBPWSinc:
*
@@ -62,13 +60,15 @@ typedef struct _GstBPWSincClass GstBPWSincClass;
struct _GstBPWSinc {
GstAudioFilter element;
- double frequency;
- double lower_frequency, upper_frequency;
- int wing_size; /* length of a "wing" of the filter;
- actual length is 2 * wing_size + 1 */
+ GstBPWSincProcessFunc process;
+
+ gdouble frequency;
+ gdouble lower_frequency, upper_frequency;
+ gint kernel_length; /* length of the filter kernel */
- gfloat *residue; /* buffer for left-over samples from previous buffer */
- double *kernel;
+ gdouble *residue; /* buffer for left-over samples from previous buffer */
+ gdouble *kernel;
+ gboolean have_kernel;
};
struct _GstBPWSincClass {