diff --git a/ChangeLog b/ChangeLog index eeaa77c2b4..0737f5aa8d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-07-10 Wim Taymans + + * gst/filter/gstbpwsinc.h: + * gst/filter/gstiir.h: + * gst/filter/gstlpwsinc.h: + Don't forget new files. + 2006-07-10 Wim Taymans Patch by: Mathis Hofer diff --git a/gst/filter/gstbpwsinc.h b/gst/filter/gstbpwsinc.h new file mode 100644 index 0000000000..1d825dec20 --- /dev/null +++ b/gst/filter/gstbpwsinc.h @@ -0,0 +1,80 @@ +/* -*- c-basic-offset: 2 -*- + * + * GStreamer + * Copyright (C) 1999-2001 Erik Walthinsen + * 2006 Dreamlab Technologies Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * + * this windowed sinc filter is taken from the freely downloadable DSP book, + * "The Scientist and Engineer's Guide to Digital Signal Processing", + * 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__ +#define __GST_BPWSINC_H__ + +#include "gstfilter.h" +#include +#include + +G_BEGIN_DECLS + +#define GST_TYPE_BPWSINC \ + (gst_bpwsinc_get_type()) +#define GST_BPWSINC(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_BPWSINC,GstBPWSinc)) +#define GST_BPWSINC_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_BPWSINC,GstBPWSincClass)) +#define GST_IS_BPWSINC(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_BPWSINC)) +#define GST_IS_BPWSINC_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_BPWSINC)) + +typedef struct _GstBPWSinc GstBPWSinc; +typedef struct _GstBPWSincClass GstBPWSincClass; + +/** + * GstBPWSinc: + * + * Opaque data structure. + */ +struct _GstBPWSinc { + GstBaseTransform 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 */ + + gfloat *residue; /* buffer for left-over samples from previous buffer */ + double *kernel; +}; + +struct _GstBPWSincClass { + GstBaseTransformClass parent_class; +}; + +G_END_DECLS + +#endif /* __GST_BPWSINC_H__ */ diff --git a/gst/filter/gstiir.h b/gst/filter/gstiir.h new file mode 100644 index 0000000000..5a9a0c0ef5 --- /dev/null +++ b/gst/filter/gstiir.h @@ -0,0 +1,67 @@ +/* -*- c-basic-offset: 2 -*- + * + * GStreamer + * Copyright (C) 1999-2001 Erik Walthinsen + * 2006 Dreamlab Technologies Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __GST_IIR_H__ +#define __GST_IIR_H__ + +#include "gstfilter.h" +#include "iir.h" +#include +#include + +G_BEGIN_DECLS + +#define GST_TYPE_IIR \ + (gst_iir_get_type()) +#define GST_IIR(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_IIR,GstIIR)) +#define GST_IIR_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_IIR,GstIIRClass)) +#define GST_IS_IIR(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_IIR)) +#define GST_IS_IIR_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_IIR)) + +typedef struct _GstIIR GstIIR; +typedef struct _GstIIRClass GstIIRClass; + +/** + * GstIIR: + * + * Opaque data structure. + */ +struct _GstIIR { + GstBaseTransform element; + + double A, B; + double gain; + int stages; + IIR_state *state; +}; + +struct _GstIIRClass { + GstBaseTransformClass parent_class; +}; + +G_END_DECLS + +#endif /* __GST_IIR_H__ */ diff --git a/gst/filter/gstlpwsinc.h b/gst/filter/gstlpwsinc.h new file mode 100644 index 0000000000..58d5ec990f --- /dev/null +++ b/gst/filter/gstlpwsinc.h @@ -0,0 +1,81 @@ +/* -*- c-basic-offset: 2 -*- + * + * GStreamer + * Copyright (C) 1999-2001 Erik Walthinsen + * 2006 Dreamlab Technologies Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * + * this windowed sinc filter is taken from the freely downloadable DSP book, + * "The Scientist and Engineer's Guide to Digital Signal Processing", + * 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_LPWSINC_H__ +#define __GST_LPWSINC_H__ + +#include "gstfilter.h" +#include +#include + +G_BEGIN_DECLS + +#define GST_TYPE_LPWSINC \ + (gst_lpwsinc_get_type()) +#define GST_LPWSINC(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_LPWSINC,GstLPWSinc)) +#define GST_LPWSINC_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_LPWSINC,GstLPWSincClass)) +#define GST_IS_LPWSINC(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_LPWSINC)) +#define GST_IS_LPWSINC_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_LPWSINC)) + +typedef struct _GstLPWSinc GstLPWSinc; +typedef struct _GstLPWSincClass GstLPWSincClass; + +/** + * GstLPWSinc: + * + * Opaque data structure. + */ +struct _GstLPWSinc { + GstBaseTransform element; + + void (*process)(GstLPWSinc*, gpointer, gint); + + double frequency; + int wing_size; /* length of a "wing" of the filter; + actual length is 2 * wing_size + 1 */ + + gfloat *residue; /* buffer for left-over samples from previous buffer */ + double *kernel; +}; + +struct _GstLPWSincClass { + GstBaseTransformClass parent_class; +}; + +G_END_DECLS + +#endif /* __GST_LPWSINC_H__ */