From 37363960d7058a49df977607c90c919fb804fd0b Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Mon, 10 Jul 2006 14:49:46 +0000 Subject: gst/filter/: Don't forget new files. Original commit message from CVS: * gst/filter/gstbpwsinc.h: * gst/filter/gstiir.h: * gst/filter/gstlpwsinc.h: Don't forget new files. --- gst/filter/gstbpwsinc.h | 80 ++++++++++++++++++++++++++++++++++++++++++++++++ gst/filter/gstiir.h | 67 ++++++++++++++++++++++++++++++++++++++++ gst/filter/gstlpwsinc.h | 81 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 228 insertions(+) create mode 100644 gst/filter/gstbpwsinc.h create mode 100644 gst/filter/gstiir.h create mode 100644 gst/filter/gstlpwsinc.h (limited to 'gst/filter') diff --git a/gst/filter/gstbpwsinc.h b/gst/filter/gstbpwsinc.h new file mode 100644 index 00000000..1d825dec --- /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 00000000..5a9a0c0e --- /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 00000000..58d5ec99 --- /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__ */ -- cgit v1.2.1