gst-libs/gst/audio/gstaudiofilter.c: fix link function to always query channels and query width for floats
Original commit message from CVS:
* gst-libs/gst/audio/gstaudiofilter.c: (gst_audiofilter_link):
fix link function to always query channels and query width for
floats
* configure.ac:
add equalizer dir
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_get_type),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_init), (gst_iir_equalizer_finalize),
(arg_to_scale), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_filter_inplace), (gst_iir_equalizer_setup),
(plugin_init):
add an equalizer
2004-10-28 02:33:48 +00:00
|
|
|
/* GStreamer
|
|
|
|
* Copyright (C) <2004> Benjamin Otte <otte@gnome.org>
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
* <2007> Stefan Kost <ensonic@users.sf.net>
|
gst/equalizer/: Add small demo application based on the spectrum demo applications that gets white noise as input, pu...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/demo.c: (on_window_destroy), (on_configure_event),
(on_gain_changed), (on_bandwidth_changed), (on_freq_changed),
(draw_spectrum), (message_handler), (main):
Add small demo application based on the spectrum demo applications
that gets white noise as input, pushes it through an equalizer and
paints the spectrum. For every equalizer band it's possible to set
gain, bandwidth and frequency.
* gst/equalizer/gstiirequalizer.c: (setup_filter):
Add some guarding against too large or too small frequencies and
bandwidths. Also improve debugging a bit.
2007-10-30 21:37:49 +00:00
|
|
|
* <2007> Sebastian Dröge <slomo@circular-chaos.org>
|
gst-libs/gst/audio/gstaudiofilter.c: fix link function to always query channels and query width for floats
Original commit message from CVS:
* gst-libs/gst/audio/gstaudiofilter.c: (gst_audiofilter_link):
fix link function to always query channels and query width for
floats
* configure.ac:
add equalizer dir
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_get_type),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_init), (gst_iir_equalizer_finalize),
(arg_to_scale), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_filter_inplace), (gst_iir_equalizer_setup),
(plugin_init):
add an equalizer
2004-10-28 02:33:48 +00:00
|
|
|
*
|
|
|
|
* 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.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
#include "config.h"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include <math.h>
|
|
|
|
#include <string.h>
|
|
|
|
|
Fix up to use the newly ported (actually working) GstAudioFilter.
Original commit message from CVS:
* configure.ac:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_base_init),
(gst_iir_equalizer_class_init), (gst_iir_equalizer_init),
(setup_filter), (gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_transform_ip), (gst_iir_equalizer_setup),
(plugin_init):
* gst/equalizer/gstiirequalizer.h:
Fix up to use the newly ported (actually working) GstAudioFilter.
Bump core/base requirements to CVS for this.
* tests/icles/.cvsignore:
* tests/icles/Makefile.am:
* tests/icles/equalizer-test.c: (check_bus),
(equalizer_set_band_value), (equalizer_set_all_band_values),
(equalizer_set_band_value_and_wait),
(equalizer_set_all_band_values_and_wait), (do_slider_fiddling),
(main):
Add brain-dead interactive test for equalizer.
2007-02-03 23:35:26 +00:00
|
|
|
#include "gstiirequalizer.h"
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
#include "gstiirequalizernbands.h"
|
gst/equalizer/: Add 3 and 10 band version and add missing gst_object_sync_values.
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_transform_ip), (plugin_init):
* gst/equalizer/gstiirequalizer10bands.c:
(gst_iir_equalizer_10bands_base_init),
(gst_iir_equalizer_10bands_class_init),
(gst_iir_equalizer_10bands_init),
(gst_iir_equalizer_10bands_set_property),
(gst_iir_equalizer_10bands_get_property):
* gst/equalizer/gstiirequalizer10bands.h:
* gst/equalizer/gstiirequalizer3bands.c:
(gst_iir_equalizer_3bands_base_init),
(gst_iir_equalizer_3bands_class_init),
(gst_iir_equalizer_3bands_init),
(gst_iir_equalizer_3bands_set_property),
(gst_iir_equalizer_3bands_get_property):
* gst/equalizer/gstiirequalizer3bands.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_init):
Add 3 and 10 band version and add missing gst_object_sync_values.
* gst/spectrum/gstspectrum.c: (gst_spectrum_event),
(gst_spectrum_transform_ip):
Add some comments about float support.
2007-03-14 14:48:08 +00:00
|
|
|
#include "gstiirequalizer3bands.h"
|
|
|
|
#include "gstiirequalizer10bands.h"
|
gst-libs/gst/audio/gstaudiofilter.c: fix link function to always query channels and query width for floats
Original commit message from CVS:
* gst-libs/gst/audio/gstaudiofilter.c: (gst_audiofilter_link):
fix link function to always query channels and query width for
floats
* configure.ac:
add equalizer dir
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_get_type),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_init), (gst_iir_equalizer_finalize),
(arg_to_scale), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_filter_inplace), (gst_iir_equalizer_setup),
(plugin_init):
add an equalizer
2004-10-28 02:33:48 +00:00
|
|
|
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
GST_DEBUG_CATEGORY (equalizer_debug);
|
|
|
|
#define GST_CAT_DEFAULT equalizer_debug
|
Fix up to use the newly ported (actually working) GstAudioFilter.
Original commit message from CVS:
* configure.ac:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_base_init),
(gst_iir_equalizer_class_init), (gst_iir_equalizer_init),
(setup_filter), (gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_transform_ip), (gst_iir_equalizer_setup),
(plugin_init):
* gst/equalizer/gstiirequalizer.h:
Fix up to use the newly ported (actually working) GstAudioFilter.
Bump core/base requirements to CVS for this.
* tests/icles/.cvsignore:
* tests/icles/Makefile.am:
* tests/icles/equalizer-test.c: (check_bus),
(equalizer_set_band_value), (equalizer_set_all_band_values),
(equalizer_set_band_value_and_wait),
(equalizer_set_all_band_values_and_wait), (do_slider_fiddling),
(main):
Add brain-dead interactive test for equalizer.
2007-02-03 23:35:26 +00:00
|
|
|
|
2009-11-05 09:45:59 +00:00
|
|
|
#define BANDS_LOCK(equ) g_mutex_lock(equ->bands_lock)
|
|
|
|
#define BANDS_UNLOCK(equ) g_mutex_unlock(equ->bands_lock)
|
|
|
|
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
static void gst_iir_equalizer_child_proxy_interface_init (gpointer g_iface,
|
|
|
|
gpointer iface_data);
|
|
|
|
|
gst-libs/gst/audio/gstaudiofilter.c: fix link function to always query channels and query width for floats
Original commit message from CVS:
* gst-libs/gst/audio/gstaudiofilter.c: (gst_audiofilter_link):
fix link function to always query channels and query width for
floats
* configure.ac:
add equalizer dir
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_get_type),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_init), (gst_iir_equalizer_finalize),
(arg_to_scale), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_filter_inplace), (gst_iir_equalizer_setup),
(plugin_init):
add an equalizer
2004-10-28 02:33:48 +00:00
|
|
|
static void gst_iir_equalizer_finalize (GObject * object);
|
|
|
|
|
Fix up to use the newly ported (actually working) GstAudioFilter.
Original commit message from CVS:
* configure.ac:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_base_init),
(gst_iir_equalizer_class_init), (gst_iir_equalizer_init),
(setup_filter), (gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_transform_ip), (gst_iir_equalizer_setup),
(plugin_init):
* gst/equalizer/gstiirequalizer.h:
Fix up to use the newly ported (actually working) GstAudioFilter.
Bump core/base requirements to CVS for this.
* tests/icles/.cvsignore:
* tests/icles/Makefile.am:
* tests/icles/equalizer-test.c: (check_bus),
(equalizer_set_band_value), (equalizer_set_all_band_values),
(equalizer_set_band_value_and_wait),
(equalizer_set_all_band_values_and_wait), (do_slider_fiddling),
(main):
Add brain-dead interactive test for equalizer.
2007-02-03 23:35:26 +00:00
|
|
|
static gboolean gst_iir_equalizer_setup (GstAudioFilter * filter,
|
|
|
|
GstRingBufferSpec * fmt);
|
|
|
|
static GstFlowReturn gst_iir_equalizer_transform_ip (GstBaseTransform * btrans,
|
|
|
|
GstBuffer * buf);
|
|
|
|
|
|
|
|
#define ALLOWED_CAPS \
|
|
|
|
"audio/x-raw-int," \
|
|
|
|
" depth=(int)16," \
|
|
|
|
" width=(int)16," \
|
|
|
|
" endianness=(int)BYTE_ORDER," \
|
|
|
|
" signed=(bool)TRUE," \
|
|
|
|
" rate=(int)[1000,MAX]," \
|
|
|
|
" channels=(int)[1,MAX]; " \
|
|
|
|
"audio/x-raw-float," \
|
2007-10-18 06:14:42 +00:00
|
|
|
" width=(int) { 32, 64 } ," \
|
Fix up to use the newly ported (actually working) GstAudioFilter.
Original commit message from CVS:
* configure.ac:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_base_init),
(gst_iir_equalizer_class_init), (gst_iir_equalizer_init),
(setup_filter), (gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_transform_ip), (gst_iir_equalizer_setup),
(plugin_init):
* gst/equalizer/gstiirequalizer.h:
Fix up to use the newly ported (actually working) GstAudioFilter.
Bump core/base requirements to CVS for this.
* tests/icles/.cvsignore:
* tests/icles/Makefile.am:
* tests/icles/equalizer-test.c: (check_bus),
(equalizer_set_band_value), (equalizer_set_all_band_values),
(equalizer_set_band_value_and_wait),
(equalizer_set_all_band_values_and_wait), (do_slider_fiddling),
(main):
Add brain-dead interactive test for equalizer.
2007-02-03 23:35:26 +00:00
|
|
|
" endianness=(int)BYTE_ORDER," \
|
|
|
|
" rate=(int)[1000,MAX]," \
|
|
|
|
" channels=(int)[1,MAX]"
|
|
|
|
|
2011-06-30 08:30:16 +00:00
|
|
|
#define gst_iir_equalizer_parent_class parent_class
|
|
|
|
G_DEFINE_TYPE_WITH_CODE (GstIirEqualizer, gst_iir_equalizer,
|
|
|
|
GST_TYPE_AUDIO_FILTER,
|
|
|
|
G_IMPLEMENT_INTERFACE (GST_TYPE_CHILD_PROXY,
|
|
|
|
gst_iir_equalizer_child_proxy_interface_init));
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
|
|
|
|
|
|
|
|
/* child object */
|
|
|
|
|
|
|
|
enum
|
|
|
|
{
|
2009-11-05 07:03:13 +00:00
|
|
|
PROP_GAIN = 1,
|
|
|
|
PROP_FREQ,
|
2009-11-05 07:18:05 +00:00
|
|
|
PROP_BANDWIDTH,
|
|
|
|
PROP_TYPE
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
};
|
|
|
|
|
2009-11-05 07:18:05 +00:00
|
|
|
typedef enum
|
|
|
|
{
|
|
|
|
BAND_TYPE_PEAK = 0,
|
|
|
|
BAND_TYPE_LOW_SHELF,
|
|
|
|
BAND_TYPE_HIGH_SHELF
|
|
|
|
} GstIirEqualizerBandType;
|
|
|
|
|
|
|
|
#define GST_TYPE_IIR_EQUALIZER_BAND_TYPE (gst_iir_equalizer_band_type_get_type ())
|
|
|
|
static GType
|
|
|
|
gst_iir_equalizer_band_type_get_type (void)
|
|
|
|
{
|
|
|
|
static GType gtype = 0;
|
|
|
|
|
|
|
|
if (gtype == 0) {
|
|
|
|
static const GEnumValue values[] = {
|
|
|
|
{BAND_TYPE_PEAK, "Peak filter (default for inner bands)", "peak"},
|
|
|
|
{BAND_TYPE_LOW_SHELF, "Low shelf filter (default for first band)",
|
|
|
|
"low-shelf"},
|
|
|
|
{BAND_TYPE_HIGH_SHELF, "High shelf filter (default for last band)",
|
|
|
|
"high-shelf"},
|
|
|
|
{0, NULL, NULL}
|
|
|
|
};
|
|
|
|
|
|
|
|
gtype = g_enum_register_static ("GstIirEqualizerBandType", values);
|
|
|
|
}
|
|
|
|
return gtype;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
typedef struct _GstIirEqualizerBandClass GstIirEqualizerBandClass;
|
|
|
|
|
|
|
|
#define GST_TYPE_IIR_EQUALIZER_BAND \
|
|
|
|
(gst_iir_equalizer_band_get_type())
|
|
|
|
#define GST_IIR_EQUALIZER_BAND(obj) \
|
|
|
|
(G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_IIR_EQUALIZER_BAND,GstIirEqualizerBand))
|
|
|
|
#define GST_IIR_EQUALIZER_BAND_CLASS(klass) \
|
|
|
|
(G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_IIR_EQUALIZER_BAND,GstIirEqualizerBandClass))
|
|
|
|
#define GST_IS_IIR_EQUALIZER_BAND(obj) \
|
|
|
|
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_IIR_EQUALIZER_BAND))
|
|
|
|
#define GST_IS_IIR_EQUALIZER_BAND_CLASS(klass) \
|
|
|
|
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_IIR_EQUALIZER_BAND))
|
|
|
|
|
|
|
|
struct _GstIirEqualizerBand
|
|
|
|
{
|
|
|
|
GstObject object;
|
|
|
|
|
|
|
|
/*< private > */
|
|
|
|
/* center frequency and gain */
|
|
|
|
gdouble freq;
|
|
|
|
gdouble gain;
|
2007-10-18 06:14:42 +00:00
|
|
|
gdouble width;
|
2009-11-05 07:18:05 +00:00
|
|
|
GstIirEqualizerBandType type;
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
|
|
|
|
/* second order iir filter */
|
2007-10-30 21:18:45 +00:00
|
|
|
gdouble b1, b2; /* IIR coefficients for outputs */
|
|
|
|
gdouble a0, a1, a2; /* IIR coefficients for inputs */
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct _GstIirEqualizerBandClass
|
|
|
|
{
|
|
|
|
GstObjectClass parent_class;
|
|
|
|
};
|
|
|
|
|
|
|
|
static GType gst_iir_equalizer_band_get_type (void);
|
2008-05-30 11:03:57 +00:00
|
|
|
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
static void
|
|
|
|
gst_iir_equalizer_band_set_property (GObject * object, guint prop_id,
|
|
|
|
const GValue * value, GParamSpec * pspec)
|
|
|
|
{
|
|
|
|
GstIirEqualizerBand *band = GST_IIR_EQUALIZER_BAND (object);
|
2009-11-05 09:45:59 +00:00
|
|
|
GstIirEqualizer *equ =
|
|
|
|
GST_IIR_EQUALIZER (gst_object_get_parent (GST_OBJECT (band)));
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
|
|
|
|
switch (prop_id) {
|
2009-11-05 07:03:13 +00:00
|
|
|
case PROP_GAIN:{
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
gdouble gain;
|
|
|
|
|
|
|
|
gain = g_value_get_double (value);
|
2007-07-20 11:37:37 +00:00
|
|
|
GST_DEBUG_OBJECT (band, "gain = %lf -> %lf", band->gain, gain);
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
if (gain != band->gain) {
|
2009-11-05 09:45:59 +00:00
|
|
|
BANDS_LOCK (equ);
|
2009-02-03 12:09:26 +00:00
|
|
|
equ->need_new_coefficients = TRUE;
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
band->gain = gain;
|
2009-11-05 09:45:59 +00:00
|
|
|
BANDS_UNLOCK (equ);
|
2007-07-20 11:37:37 +00:00
|
|
|
GST_DEBUG_OBJECT (band, "changed gain = %lf ", band->gain);
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
2009-11-05 07:03:13 +00:00
|
|
|
case PROP_FREQ:{
|
2007-10-30 21:18:45 +00:00
|
|
|
gdouble freq;
|
|
|
|
|
|
|
|
freq = g_value_get_double (value);
|
|
|
|
GST_DEBUG_OBJECT (band, "freq = %lf -> %lf", band->freq, freq);
|
|
|
|
if (freq != band->freq) {
|
2009-11-05 09:45:59 +00:00
|
|
|
BANDS_LOCK (equ);
|
2009-02-03 12:09:26 +00:00
|
|
|
equ->need_new_coefficients = TRUE;
|
2007-10-30 21:18:45 +00:00
|
|
|
band->freq = freq;
|
2009-11-05 09:45:59 +00:00
|
|
|
BANDS_UNLOCK (equ);
|
2007-10-30 21:18:45 +00:00
|
|
|
GST_DEBUG_OBJECT (band, "changed freq = %lf ", band->freq);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
2009-11-05 07:03:13 +00:00
|
|
|
case PROP_BANDWIDTH:{
|
2007-10-18 06:14:42 +00:00
|
|
|
gdouble width;
|
|
|
|
|
|
|
|
width = g_value_get_double (value);
|
|
|
|
GST_DEBUG_OBJECT (band, "width = %lf -> %lf", band->width, width);
|
|
|
|
if (width != band->width) {
|
2009-11-05 09:45:59 +00:00
|
|
|
BANDS_LOCK (equ);
|
2009-02-03 12:09:26 +00:00
|
|
|
equ->need_new_coefficients = TRUE;
|
2007-10-18 06:14:42 +00:00
|
|
|
band->width = width;
|
2009-11-05 09:45:59 +00:00
|
|
|
BANDS_UNLOCK (equ);
|
2007-10-18 06:14:42 +00:00
|
|
|
GST_DEBUG_OBJECT (band, "changed width = %lf ", band->width);
|
|
|
|
}
|
2007-10-18 06:20:21 +00:00
|
|
|
break;
|
2007-10-18 06:14:42 +00:00
|
|
|
}
|
2009-11-05 07:18:05 +00:00
|
|
|
case PROP_TYPE:{
|
|
|
|
GstIirEqualizerBandType type;
|
|
|
|
|
|
|
|
type = g_value_get_enum (value);
|
|
|
|
GST_DEBUG_OBJECT (band, "type = %d -> %d", band->type, type);
|
|
|
|
if (type != band->type) {
|
2009-11-05 09:45:59 +00:00
|
|
|
BANDS_LOCK (equ);
|
2009-11-05 07:18:05 +00:00
|
|
|
equ->need_new_coefficients = TRUE;
|
|
|
|
band->type = type;
|
2009-11-05 09:45:59 +00:00
|
|
|
BANDS_UNLOCK (equ);
|
2009-11-05 07:18:05 +00:00
|
|
|
GST_DEBUG_OBJECT (band, "changed type = %d ", band->type);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
default:
|
|
|
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
|
|
|
break;
|
|
|
|
}
|
2009-11-05 09:45:59 +00:00
|
|
|
|
|
|
|
gst_object_unref (equ);
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
gst_iir_equalizer_band_get_property (GObject * object, guint prop_id,
|
|
|
|
GValue * value, GParamSpec * pspec)
|
|
|
|
{
|
|
|
|
GstIirEqualizerBand *band = GST_IIR_EQUALIZER_BAND (object);
|
|
|
|
|
|
|
|
switch (prop_id) {
|
2009-11-05 07:03:13 +00:00
|
|
|
case PROP_GAIN:
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
g_value_set_double (value, band->gain);
|
|
|
|
break;
|
2009-11-05 07:03:13 +00:00
|
|
|
case PROP_FREQ:
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
g_value_set_double (value, band->freq);
|
|
|
|
break;
|
2009-11-05 07:03:13 +00:00
|
|
|
case PROP_BANDWIDTH:
|
2007-10-18 06:14:42 +00:00
|
|
|
g_value_set_double (value, band->width);
|
|
|
|
break;
|
2009-11-05 07:18:05 +00:00
|
|
|
case PROP_TYPE:
|
|
|
|
g_value_set_enum (value, band->type);
|
|
|
|
break;
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
default:
|
|
|
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
gst_iir_equalizer_band_class_init (GstIirEqualizerBandClass * klass)
|
|
|
|
{
|
|
|
|
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
|
|
|
|
|
|
|
gobject_class->set_property = gst_iir_equalizer_band_set_property;
|
|
|
|
gobject_class->get_property = gst_iir_equalizer_band_get_property;
|
|
|
|
|
2009-11-05 07:03:13 +00:00
|
|
|
g_object_class_install_property (gobject_class, PROP_GAIN,
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
g_param_spec_double ("gain", "gain",
|
2007-10-30 21:18:45 +00:00
|
|
|
"gain for the frequency band ranging from -24.0 dB to +12.0 dB",
|
2009-11-05 07:03:13 +00:00
|
|
|
-24.0, 12.0, 0.0,
|
|
|
|
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | GST_PARAM_CONTROLLABLE));
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
|
2009-11-05 07:03:13 +00:00
|
|
|
g_object_class_install_property (gobject_class, PROP_FREQ,
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
g_param_spec_double ("freq", "freq",
|
|
|
|
"center frequency of the band",
|
2009-11-05 07:03:13 +00:00
|
|
|
0.0, 100000.0, 0.0,
|
|
|
|
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | GST_PARAM_CONTROLLABLE));
|
2007-10-18 06:14:42 +00:00
|
|
|
|
2009-11-05 07:03:13 +00:00
|
|
|
g_object_class_install_property (gobject_class, PROP_BANDWIDTH,
|
2007-10-30 21:18:45 +00:00
|
|
|
g_param_spec_double ("bandwidth", "bandwidth",
|
|
|
|
"difference between bandedges in Hz",
|
2009-11-05 07:03:13 +00:00
|
|
|
0.0, 100000.0, 1.0,
|
|
|
|
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | GST_PARAM_CONTROLLABLE));
|
2009-11-05 07:18:05 +00:00
|
|
|
|
|
|
|
g_object_class_install_property (gobject_class, PROP_TYPE,
|
|
|
|
g_param_spec_enum ("type", "Type",
|
|
|
|
"Filter type", GST_TYPE_IIR_EQUALIZER_BAND_TYPE,
|
|
|
|
BAND_TYPE_PEAK,
|
|
|
|
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | GST_PARAM_CONTROLLABLE));
|
2007-10-18 06:14:42 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
gst_iir_equalizer_band_init (GstIirEqualizerBand * band,
|
|
|
|
GstIirEqualizerBandClass * klass)
|
|
|
|
{
|
|
|
|
band->freq = 0.0;
|
|
|
|
band->gain = 0.0;
|
|
|
|
band->width = 1.0;
|
2009-11-05 07:18:05 +00:00
|
|
|
band->type = BAND_TYPE_PEAK;
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static GType
|
|
|
|
gst_iir_equalizer_band_get_type (void)
|
|
|
|
{
|
|
|
|
static GType type = 0;
|
|
|
|
|
|
|
|
if (G_UNLIKELY (!type)) {
|
|
|
|
const GTypeInfo type_info = {
|
|
|
|
sizeof (GstIirEqualizerBandClass),
|
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
|
(GClassInitFunc) gst_iir_equalizer_band_class_init,
|
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
|
sizeof (GstIirEqualizerBand),
|
|
|
|
0,
|
2007-10-18 06:14:42 +00:00
|
|
|
(GInstanceInitFunc) gst_iir_equalizer_band_init,
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
};
|
|
|
|
type =
|
|
|
|
g_type_register_static (GST_TYPE_OBJECT, "GstIirEqualizerBand",
|
|
|
|
&type_info, 0);
|
|
|
|
}
|
|
|
|
return (type);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* child proxy iface */
|
|
|
|
static GstObject *
|
|
|
|
gst_iir_equalizer_child_proxy_get_child_by_index (GstChildProxy * child_proxy,
|
|
|
|
guint index)
|
|
|
|
{
|
|
|
|
GstIirEqualizer *equ = GST_IIR_EQUALIZER (child_proxy);
|
2009-11-05 09:45:59 +00:00
|
|
|
GstObject *ret;
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
|
2009-11-05 09:45:59 +00:00
|
|
|
BANDS_LOCK (equ);
|
|
|
|
if (G_UNLIKELY (index >= equ->freq_band_count)) {
|
|
|
|
BANDS_UNLOCK (equ);
|
|
|
|
g_return_val_if_fail (index < equ->freq_band_count, NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
ret = gst_object_ref (equ->bands[index]);
|
|
|
|
BANDS_UNLOCK (equ);
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
|
2009-11-05 23:40:15 +00:00
|
|
|
GST_LOG_OBJECT (equ, "return child[%d] %" GST_PTR_FORMAT, index, ret);
|
2009-11-05 09:45:59 +00:00
|
|
|
return ret;
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static guint
|
|
|
|
gst_iir_equalizer_child_proxy_get_children_count (GstChildProxy * child_proxy)
|
|
|
|
{
|
|
|
|
GstIirEqualizer *equ = GST_IIR_EQUALIZER (child_proxy);
|
|
|
|
|
2007-07-20 11:37:37 +00:00
|
|
|
GST_LOG ("we have %d children", equ->freq_band_count);
|
2009-11-05 09:45:59 +00:00
|
|
|
return equ->freq_band_count;
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
gst_iir_equalizer_child_proxy_interface_init (gpointer g_iface,
|
|
|
|
gpointer iface_data)
|
|
|
|
{
|
|
|
|
GstChildProxyInterface *iface = g_iface;
|
|
|
|
|
2007-07-20 11:37:37 +00:00
|
|
|
GST_DEBUG ("initializing iface");
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
|
|
|
|
iface->get_child_by_index = gst_iir_equalizer_child_proxy_get_child_by_index;
|
|
|
|
iface->get_children_count = gst_iir_equalizer_child_proxy_get_children_count;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* equalizer implementation */
|
gst-libs/gst/audio/gstaudiofilter.c: fix link function to always query channels and query width for floats
Original commit message from CVS:
* gst-libs/gst/audio/gstaudiofilter.c: (gst_audiofilter_link):
fix link function to always query channels and query width for
floats
* configure.ac:
add equalizer dir
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_get_type),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_init), (gst_iir_equalizer_finalize),
(arg_to_scale), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_filter_inplace), (gst_iir_equalizer_setup),
(plugin_init):
add an equalizer
2004-10-28 02:33:48 +00:00
|
|
|
|
|
|
|
static void
|
Fix up to use the newly ported (actually working) GstAudioFilter.
Original commit message from CVS:
* configure.ac:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_base_init),
(gst_iir_equalizer_class_init), (gst_iir_equalizer_init),
(setup_filter), (gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_transform_ip), (gst_iir_equalizer_setup),
(plugin_init):
* gst/equalizer/gstiirequalizer.h:
Fix up to use the newly ported (actually working) GstAudioFilter.
Bump core/base requirements to CVS for this.
* tests/icles/.cvsignore:
* tests/icles/Makefile.am:
* tests/icles/equalizer-test.c: (check_bus),
(equalizer_set_band_value), (equalizer_set_all_band_values),
(equalizer_set_band_value_and_wait),
(equalizer_set_all_band_values_and_wait), (do_slider_fiddling),
(main):
Add brain-dead interactive test for equalizer.
2007-02-03 23:35:26 +00:00
|
|
|
gst_iir_equalizer_class_init (GstIirEqualizerClass * klass)
|
gst-libs/gst/audio/gstaudiofilter.c: fix link function to always query channels and query width for floats
Original commit message from CVS:
* gst-libs/gst/audio/gstaudiofilter.c: (gst_audiofilter_link):
fix link function to always query channels and query width for
floats
* configure.ac:
add equalizer dir
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_get_type),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_init), (gst_iir_equalizer_finalize),
(arg_to_scale), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_filter_inplace), (gst_iir_equalizer_setup),
(plugin_init):
add an equalizer
2004-10-28 02:33:48 +00:00
|
|
|
{
|
Fix up to use the newly ported (actually working) GstAudioFilter.
Original commit message from CVS:
* configure.ac:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_base_init),
(gst_iir_equalizer_class_init), (gst_iir_equalizer_init),
(setup_filter), (gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_transform_ip), (gst_iir_equalizer_setup),
(plugin_init):
* gst/equalizer/gstiirequalizer.h:
Fix up to use the newly ported (actually working) GstAudioFilter.
Bump core/base requirements to CVS for this.
* tests/icles/.cvsignore:
* tests/icles/Makefile.am:
* tests/icles/equalizer-test.c: (check_bus),
(equalizer_set_band_value), (equalizer_set_all_band_values),
(equalizer_set_band_value_and_wait),
(equalizer_set_all_band_values_and_wait), (do_slider_fiddling),
(main):
Add brain-dead interactive test for equalizer.
2007-02-03 23:35:26 +00:00
|
|
|
GstAudioFilterClass *audio_filter_class = (GstAudioFilterClass *) klass;
|
|
|
|
GstBaseTransformClass *btrans_class = (GstBaseTransformClass *) klass;
|
|
|
|
GObjectClass *gobject_class = (GObjectClass *) klass;
|
2011-06-30 08:30:16 +00:00
|
|
|
GstCaps *caps;
|
gst-libs/gst/audio/gstaudiofilter.c: fix link function to always query channels and query width for floats
Original commit message from CVS:
* gst-libs/gst/audio/gstaudiofilter.c: (gst_audiofilter_link):
fix link function to always query channels and query width for
floats
* configure.ac:
add equalizer dir
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_get_type),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_init), (gst_iir_equalizer_finalize),
(arg_to_scale), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_filter_inplace), (gst_iir_equalizer_setup),
(plugin_init):
add an equalizer
2004-10-28 02:33:48 +00:00
|
|
|
|
|
|
|
gobject_class->finalize = gst_iir_equalizer_finalize;
|
2007-02-02 17:39:21 +00:00
|
|
|
audio_filter_class->setup = gst_iir_equalizer_setup;
|
Fix up to use the newly ported (actually working) GstAudioFilter.
Original commit message from CVS:
* configure.ac:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_base_init),
(gst_iir_equalizer_class_init), (gst_iir_equalizer_init),
(setup_filter), (gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_transform_ip), (gst_iir_equalizer_setup),
(plugin_init):
* gst/equalizer/gstiirequalizer.h:
Fix up to use the newly ported (actually working) GstAudioFilter.
Bump core/base requirements to CVS for this.
* tests/icles/.cvsignore:
* tests/icles/Makefile.am:
* tests/icles/equalizer-test.c: (check_bus),
(equalizer_set_band_value), (equalizer_set_all_band_values),
(equalizer_set_band_value_and_wait),
(equalizer_set_all_band_values_and_wait), (do_slider_fiddling),
(main):
Add brain-dead interactive test for equalizer.
2007-02-03 23:35:26 +00:00
|
|
|
btrans_class->transform_ip = gst_iir_equalizer_transform_ip;
|
2011-06-30 08:30:16 +00:00
|
|
|
|
|
|
|
caps = gst_caps_from_string (ALLOWED_CAPS);
|
|
|
|
gst_audio_filter_class_add_pad_templates (audio_filter_class, caps);
|
|
|
|
gst_caps_unref (caps);
|
gst-libs/gst/audio/gstaudiofilter.c: fix link function to always query channels and query width for floats
Original commit message from CVS:
* gst-libs/gst/audio/gstaudiofilter.c: (gst_audiofilter_link):
fix link function to always query channels and query width for
floats
* configure.ac:
add equalizer dir
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_get_type),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_init), (gst_iir_equalizer_finalize),
(arg_to_scale), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_filter_inplace), (gst_iir_equalizer_setup),
(plugin_init):
add an equalizer
2004-10-28 02:33:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2011-06-30 08:30:16 +00:00
|
|
|
gst_iir_equalizer_init (GstIirEqualizer * eq)
|
gst-libs/gst/audio/gstaudiofilter.c: fix link function to always query channels and query width for floats
Original commit message from CVS:
* gst-libs/gst/audio/gstaudiofilter.c: (gst_audiofilter_link):
fix link function to always query channels and query width for
floats
* configure.ac:
add equalizer dir
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_get_type),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_init), (gst_iir_equalizer_finalize),
(arg_to_scale), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_filter_inplace), (gst_iir_equalizer_setup),
(plugin_init):
add an equalizer
2004-10-28 02:33:48 +00:00
|
|
|
{
|
2009-11-05 09:45:59 +00:00
|
|
|
eq->bands_lock = g_mutex_new ();
|
2008-05-30 11:03:57 +00:00
|
|
|
eq->need_new_coefficients = TRUE;
|
gst-libs/gst/audio/gstaudiofilter.c: fix link function to always query channels and query width for floats
Original commit message from CVS:
* gst-libs/gst/audio/gstaudiofilter.c: (gst_audiofilter_link):
fix link function to always query channels and query width for
floats
* configure.ac:
add equalizer dir
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_get_type),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_init), (gst_iir_equalizer_finalize),
(arg_to_scale), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_filter_inplace), (gst_iir_equalizer_setup),
(plugin_init):
add an equalizer
2004-10-28 02:33:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
gst_iir_equalizer_finalize (GObject * object)
|
|
|
|
{
|
|
|
|
GstIirEqualizer *equ = GST_IIR_EQUALIZER (object);
|
2008-01-18 07:03:23 +00:00
|
|
|
gint i;
|
|
|
|
|
|
|
|
for (i = 0; i < equ->freq_band_count; i++) {
|
|
|
|
if (equ->bands[i])
|
|
|
|
gst_object_unparent (GST_OBJECT (equ->bands[i]));
|
|
|
|
equ->bands[i] = NULL;
|
|
|
|
}
|
|
|
|
equ->freq_band_count = 0;
|
gst-libs/gst/audio/gstaudiofilter.c: fix link function to always query channels and query width for floats
Original commit message from CVS:
* gst-libs/gst/audio/gstaudiofilter.c: (gst_audiofilter_link):
fix link function to always query channels and query width for
floats
* configure.ac:
add equalizer dir
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_get_type),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_init), (gst_iir_equalizer_finalize),
(arg_to_scale), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_filter_inplace), (gst_iir_equalizer_setup),
(plugin_init):
add an equalizer
2004-10-28 02:33:48 +00:00
|
|
|
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
g_free (equ->bands);
|
gst-libs/gst/audio/gstaudiofilter.c: fix link function to always query channels and query width for floats
Original commit message from CVS:
* gst-libs/gst/audio/gstaudiofilter.c: (gst_audiofilter_link):
fix link function to always query channels and query width for
floats
* configure.ac:
add equalizer dir
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_get_type),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_init), (gst_iir_equalizer_finalize),
(arg_to_scale), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_filter_inplace), (gst_iir_equalizer_setup),
(plugin_init):
add an equalizer
2004-10-28 02:33:48 +00:00
|
|
|
g_free (equ->history);
|
|
|
|
|
2009-11-05 09:45:59 +00:00
|
|
|
g_mutex_free (equ->bands_lock);
|
|
|
|
|
gst-libs/gst/audio/gstaudiofilter.c: fix link function to always query channels and query width for floats
Original commit message from CVS:
* gst-libs/gst/audio/gstaudiofilter.c: (gst_audiofilter_link):
fix link function to always query channels and query width for
floats
* configure.ac:
add equalizer dir
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_get_type),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_init), (gst_iir_equalizer_finalize),
(arg_to_scale), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_filter_inplace), (gst_iir_equalizer_setup),
(plugin_init):
add an equalizer
2004-10-28 02:33:48 +00:00
|
|
|
G_OBJECT_CLASS (parent_class)->finalize (object);
|
|
|
|
}
|
|
|
|
|
2007-10-30 21:18:45 +00:00
|
|
|
/* Filter taken from
|
|
|
|
*
|
|
|
|
* The Equivalence of Various Methods of Computing
|
|
|
|
* Biquad Coefficients for Audio Parametric Equalizers
|
|
|
|
*
|
|
|
|
* by Robert Bristow-Johnson
|
|
|
|
*
|
|
|
|
* http://www.aes.org/e-lib/browse.cfm?elib=6326
|
|
|
|
* http://www.musicdsp.org/files/EQ-Coefficients.pdf
|
2009-10-06 21:33:49 +00:00
|
|
|
* http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt
|
2007-10-30 21:18:45 +00:00
|
|
|
*
|
|
|
|
* The bandwidth method that we use here is the preferred
|
|
|
|
* one from this article transformed from octaves to frequency
|
|
|
|
* in Hz.
|
|
|
|
*/
|
2009-10-06 21:33:49 +00:00
|
|
|
static inline gdouble
|
|
|
|
arg_to_scale (gdouble arg)
|
|
|
|
{
|
|
|
|
return (pow (10.0, arg / 40.0));
|
|
|
|
}
|
|
|
|
|
|
|
|
static gdouble
|
|
|
|
calculate_omega (gdouble freq, gint rate)
|
|
|
|
{
|
|
|
|
gdouble omega;
|
|
|
|
|
|
|
|
if (freq / rate >= 0.5)
|
2010-12-30 22:20:52 +00:00
|
|
|
omega = G_PI;
|
2009-10-06 21:33:49 +00:00
|
|
|
else if (freq <= 0.0)
|
|
|
|
omega = 0.0;
|
|
|
|
else
|
2010-12-30 22:20:52 +00:00
|
|
|
omega = 2.0 * G_PI * (freq / rate);
|
2009-10-06 21:33:49 +00:00
|
|
|
|
|
|
|
return omega;
|
|
|
|
}
|
|
|
|
|
|
|
|
static gdouble
|
|
|
|
calculate_bw (GstIirEqualizerBand * band, gint rate)
|
|
|
|
{
|
|
|
|
gdouble bw = 0.0;
|
|
|
|
|
|
|
|
if (band->width / rate >= 0.5) {
|
2010-12-30 22:20:52 +00:00
|
|
|
/* If bandwidth == 0.5 the calculation below fails as tan(G_PI/2)
|
2009-10-06 21:33:49 +00:00
|
|
|
* is undefined. So set the bandwidth to a slightly smaller value.
|
|
|
|
*/
|
2010-12-30 22:20:52 +00:00
|
|
|
bw = G_PI - 0.00000001;
|
2009-10-06 21:33:49 +00:00
|
|
|
} else if (band->width <= 0.0) {
|
|
|
|
/* If bandwidth == 0 this band won't change anything so set
|
|
|
|
* the coefficients accordingly. The coefficient calculation
|
|
|
|
* below would create coefficients that for some reason amplify
|
|
|
|
* the band.
|
|
|
|
*/
|
|
|
|
band->a0 = 1.0;
|
|
|
|
band->a1 = 0.0;
|
|
|
|
band->a2 = 0.0;
|
|
|
|
band->b1 = 0.0;
|
|
|
|
band->b2 = 0.0;
|
|
|
|
} else {
|
2010-12-30 22:20:52 +00:00
|
|
|
bw = 2.0 * G_PI * (band->width / rate);
|
2009-10-06 21:33:49 +00:00
|
|
|
}
|
|
|
|
return bw;
|
|
|
|
}
|
|
|
|
|
gst-libs/gst/audio/gstaudiofilter.c: fix link function to always query channels and query width for floats
Original commit message from CVS:
* gst-libs/gst/audio/gstaudiofilter.c: (gst_audiofilter_link):
fix link function to always query channels and query width for
floats
* configure.ac:
add equalizer dir
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_get_type),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_init), (gst_iir_equalizer_finalize),
(arg_to_scale), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_filter_inplace), (gst_iir_equalizer_setup),
(plugin_init):
add an equalizer
2004-10-28 02:33:48 +00:00
|
|
|
static void
|
2009-10-06 21:33:49 +00:00
|
|
|
setup_peak_filter (GstIirEqualizer * equ, GstIirEqualizerBand * band)
|
gst-libs/gst/audio/gstaudiofilter.c: fix link function to always query channels and query width for floats
Original commit message from CVS:
* gst-libs/gst/audio/gstaudiofilter.c: (gst_audiofilter_link):
fix link function to always query channels and query width for
floats
* configure.ac:
add equalizer dir
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_get_type),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_init), (gst_iir_equalizer_finalize),
(arg_to_scale), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_filter_inplace), (gst_iir_equalizer_setup),
(plugin_init):
add an equalizer
2004-10-28 02:33:48 +00:00
|
|
|
{
|
gst/equalizer/: Add 3 and 10 band version and add missing gst_object_sync_values.
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_transform_ip), (plugin_init):
* gst/equalizer/gstiirequalizer10bands.c:
(gst_iir_equalizer_10bands_base_init),
(gst_iir_equalizer_10bands_class_init),
(gst_iir_equalizer_10bands_init),
(gst_iir_equalizer_10bands_set_property),
(gst_iir_equalizer_10bands_get_property):
* gst/equalizer/gstiirequalizer10bands.h:
* gst/equalizer/gstiirequalizer3bands.c:
(gst_iir_equalizer_3bands_base_init),
(gst_iir_equalizer_3bands_class_init),
(gst_iir_equalizer_3bands_init),
(gst_iir_equalizer_3bands_set_property),
(gst_iir_equalizer_3bands_get_property):
* gst/equalizer/gstiirequalizer3bands.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_init):
Add 3 and 10 band version and add missing gst_object_sync_values.
* gst/spectrum/gstspectrum.c: (gst_spectrum_event),
(gst_spectrum_transform_ip):
Add some comments about float support.
2007-03-14 14:48:08 +00:00
|
|
|
g_return_if_fail (GST_AUDIO_FILTER (equ)->format.rate);
|
|
|
|
|
|
|
|
{
|
gst/equalizer/: Add small demo application based on the spectrum demo applications that gets white noise as input, pu...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/demo.c: (on_window_destroy), (on_configure_event),
(on_gain_changed), (on_bandwidth_changed), (on_freq_changed),
(draw_spectrum), (message_handler), (main):
Add small demo application based on the spectrum demo applications
that gets white noise as input, pushes it through an equalizer and
paints the spectrum. For every equalizer band it's possible to set
gain, bandwidth and frequency.
* gst/equalizer/gstiirequalizer.c: (setup_filter):
Add some guarding against too large or too small frequencies and
bandwidths. Also improve debugging a bit.
2007-10-30 21:37:49 +00:00
|
|
|
gdouble gain, omega, bw;
|
2009-10-06 21:33:49 +00:00
|
|
|
gdouble alpha, alpha1, alpha2, b0;
|
gst/equalizer/: Add small demo application based on the spectrum demo applications that gets white noise as input, pu...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/demo.c: (on_window_destroy), (on_configure_event),
(on_gain_changed), (on_bandwidth_changed), (on_freq_changed),
(draw_spectrum), (message_handler), (main):
Add small demo application based on the spectrum demo applications
that gets white noise as input, pushes it through an equalizer and
paints the spectrum. For every equalizer band it's possible to set
gain, bandwidth and frequency.
* gst/equalizer/gstiirequalizer.c: (setup_filter):
Add some guarding against too large or too small frequencies and
bandwidths. Also improve debugging a bit.
2007-10-30 21:37:49 +00:00
|
|
|
|
|
|
|
gain = arg_to_scale (band->gain);
|
2009-10-06 21:33:49 +00:00
|
|
|
omega = calculate_omega (band->freq, GST_AUDIO_FILTER (equ)->format.rate);
|
|
|
|
bw = calculate_bw (band, GST_AUDIO_FILTER (equ)->format.rate);
|
|
|
|
if (bw == 0.0)
|
|
|
|
goto out;
|
|
|
|
|
|
|
|
alpha = tan (bw / 2.0);
|
gst/equalizer/: Add small demo application based on the spectrum demo applications that gets white noise as input, pu...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/demo.c: (on_window_destroy), (on_configure_event),
(on_gain_changed), (on_bandwidth_changed), (on_freq_changed),
(draw_spectrum), (message_handler), (main):
Add small demo application based on the spectrum demo applications
that gets white noise as input, pushes it through an equalizer and
paints the spectrum. For every equalizer band it's possible to set
gain, bandwidth and frequency.
* gst/equalizer/gstiirequalizer.c: (setup_filter):
Add some guarding against too large or too small frequencies and
bandwidths. Also improve debugging a bit.
2007-10-30 21:37:49 +00:00
|
|
|
|
2009-10-06 21:33:49 +00:00
|
|
|
alpha1 = alpha * gain;
|
|
|
|
alpha2 = alpha / gain;
|
|
|
|
|
|
|
|
b0 = (1.0 + alpha2);
|
|
|
|
|
|
|
|
band->a0 = (1.0 + alpha1) / b0;
|
|
|
|
band->a1 = (-2.0 * cos (omega)) / b0;
|
|
|
|
band->a2 = (1.0 - alpha1) / b0;
|
|
|
|
band->b1 = (2.0 * cos (omega)) / b0;
|
|
|
|
band->b2 = -(1.0 - alpha2) / b0;
|
|
|
|
|
|
|
|
out:
|
|
|
|
GST_INFO
|
|
|
|
("gain = %5.1f, width= %7.2f, freq = %7.2f, a0 = %7.5g, a1 = %7.5g, a2=%7.5g b1 = %7.5g, b2 = %7.5g",
|
|
|
|
band->gain, band->width, band->freq, band->a0, band->a1, band->a2,
|
|
|
|
band->b1, band->b2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
setup_low_shelf_filter (GstIirEqualizer * equ, GstIirEqualizerBand * band)
|
|
|
|
{
|
|
|
|
g_return_if_fail (GST_AUDIO_FILTER (equ)->format.rate);
|
|
|
|
|
|
|
|
{
|
|
|
|
gdouble gain, omega, bw;
|
|
|
|
gdouble alpha, delta, b0;
|
|
|
|
gdouble egp, egm;
|
|
|
|
|
|
|
|
gain = arg_to_scale (band->gain);
|
|
|
|
omega = calculate_omega (band->freq, GST_AUDIO_FILTER (equ)->format.rate);
|
|
|
|
bw = calculate_bw (band, GST_AUDIO_FILTER (equ)->format.rate);
|
|
|
|
if (bw == 0.0)
|
2007-11-03 19:50:11 +00:00
|
|
|
goto out;
|
2007-10-18 06:14:42 +00:00
|
|
|
|
2009-10-06 21:33:49 +00:00
|
|
|
egm = gain - 1.0;
|
|
|
|
egp = gain + 1.0;
|
|
|
|
alpha = tan (bw / 2.0);
|
|
|
|
|
|
|
|
delta = 2.0 * sqrt (gain) * alpha;
|
|
|
|
b0 = egp + egm * cos (omega) + delta;
|
|
|
|
|
|
|
|
band->a0 = ((egp - egm * cos (omega) + delta) * gain) / b0;
|
|
|
|
band->a1 = ((egm - egp * cos (omega)) * 2.0 * gain) / b0;
|
|
|
|
band->a2 = ((egp - egm * cos (omega) - delta) * gain) / b0;
|
|
|
|
band->b1 = ((egm + egp * cos (omega)) * 2.0) / b0;
|
|
|
|
band->b2 = -((egp + egm * cos (omega) - delta)) / b0;
|
|
|
|
|
|
|
|
|
|
|
|
out:
|
|
|
|
GST_INFO
|
|
|
|
("gain = %5.1f, width= %7.2f, freq = %7.2f, a0 = %7.5g, a1 = %7.5g, a2=%7.5g b1 = %7.5g, b2 = %7.5g",
|
|
|
|
band->gain, band->width, band->freq, band->a0, band->a1, band->a2,
|
|
|
|
band->b1, band->b2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
setup_high_shelf_filter (GstIirEqualizer * equ, GstIirEqualizerBand * band)
|
|
|
|
{
|
|
|
|
g_return_if_fail (GST_AUDIO_FILTER (equ)->format.rate);
|
gst/equalizer/: Add 3 and 10 band version and add missing gst_object_sync_values.
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_transform_ip), (plugin_init):
* gst/equalizer/gstiirequalizer10bands.c:
(gst_iir_equalizer_10bands_base_init),
(gst_iir_equalizer_10bands_class_init),
(gst_iir_equalizer_10bands_init),
(gst_iir_equalizer_10bands_set_property),
(gst_iir_equalizer_10bands_get_property):
* gst/equalizer/gstiirequalizer10bands.h:
* gst/equalizer/gstiirequalizer3bands.c:
(gst_iir_equalizer_3bands_base_init),
(gst_iir_equalizer_3bands_class_init),
(gst_iir_equalizer_3bands_init),
(gst_iir_equalizer_3bands_set_property),
(gst_iir_equalizer_3bands_get_property):
* gst/equalizer/gstiirequalizer3bands.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_init):
Add 3 and 10 band version and add missing gst_object_sync_values.
* gst/spectrum/gstspectrum.c: (gst_spectrum_event),
(gst_spectrum_transform_ip):
Add some comments about float support.
2007-03-14 14:48:08 +00:00
|
|
|
|
2009-10-06 21:33:49 +00:00
|
|
|
{
|
|
|
|
gdouble gain, omega, bw;
|
|
|
|
gdouble alpha, delta, b0;
|
|
|
|
gdouble egp, egm;
|
|
|
|
|
|
|
|
gain = arg_to_scale (band->gain);
|
|
|
|
omega = calculate_omega (band->freq, GST_AUDIO_FILTER (equ)->format.rate);
|
|
|
|
bw = calculate_bw (band, GST_AUDIO_FILTER (equ)->format.rate);
|
|
|
|
if (bw == 0.0)
|
|
|
|
goto out;
|
|
|
|
|
|
|
|
egm = gain - 1.0;
|
|
|
|
egp = gain + 1.0;
|
|
|
|
alpha = tan (bw / 2.0);
|
|
|
|
|
|
|
|
delta = 2.0 * sqrt (gain) * alpha;
|
|
|
|
b0 = egp - egm * cos (omega) + delta;
|
|
|
|
|
|
|
|
band->a0 = ((egp + egm * cos (omega) + delta) * gain) / b0;
|
|
|
|
band->a1 = ((egm + egp * cos (omega)) * -2.0 * gain) / b0;
|
|
|
|
band->a2 = ((egp + egm * cos (omega) - delta) * gain) / b0;
|
|
|
|
band->b1 = ((egm - egp * cos (omega)) * -2.0) / b0;
|
|
|
|
band->b2 = -((egp - egm * cos (omega) - delta)) / b0;
|
gst/equalizer/: Add 3 and 10 band version and add missing gst_object_sync_values.
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_transform_ip), (plugin_init):
* gst/equalizer/gstiirequalizer10bands.c:
(gst_iir_equalizer_10bands_base_init),
(gst_iir_equalizer_10bands_class_init),
(gst_iir_equalizer_10bands_init),
(gst_iir_equalizer_10bands_set_property),
(gst_iir_equalizer_10bands_get_property):
* gst/equalizer/gstiirequalizer10bands.h:
* gst/equalizer/gstiirequalizer3bands.c:
(gst_iir_equalizer_3bands_base_init),
(gst_iir_equalizer_3bands_class_init),
(gst_iir_equalizer_3bands_init),
(gst_iir_equalizer_3bands_set_property),
(gst_iir_equalizer_3bands_get_property):
* gst/equalizer/gstiirequalizer3bands.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_init):
Add 3 and 10 band version and add missing gst_object_sync_values.
* gst/spectrum/gstspectrum.c: (gst_spectrum_event),
(gst_spectrum_transform_ip):
Add some comments about float support.
2007-03-14 14:48:08 +00:00
|
|
|
|
2007-07-20 11:37:37 +00:00
|
|
|
|
2007-11-03 19:50:11 +00:00
|
|
|
out:
|
2007-07-20 11:37:37 +00:00
|
|
|
GST_INFO
|
2009-02-03 12:09:26 +00:00
|
|
|
("gain = %5.1f, width= %7.2f, freq = %7.2f, a0 = %7.5g, a1 = %7.5g, a2=%7.5g b1 = %7.5g, b2 = %7.5g",
|
gst/equalizer/: Add small demo application based on the spectrum demo applications that gets white noise as input, pu...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/demo.c: (on_window_destroy), (on_configure_event),
(on_gain_changed), (on_bandwidth_changed), (on_freq_changed),
(draw_spectrum), (message_handler), (main):
Add small demo application based on the spectrum demo applications
that gets white noise as input, pushes it through an equalizer and
paints the spectrum. For every equalizer band it's possible to set
gain, bandwidth and frequency.
* gst/equalizer/gstiirequalizer.c: (setup_filter):
Add some guarding against too large or too small frequencies and
bandwidths. Also improve debugging a bit.
2007-10-30 21:37:49 +00:00
|
|
|
band->gain, band->width, band->freq, band->a0, band->a1, band->a2,
|
|
|
|
band->b1, band->b2);
|
gst/equalizer/: Add 3 and 10 band version and add missing gst_object_sync_values.
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_transform_ip), (plugin_init):
* gst/equalizer/gstiirequalizer10bands.c:
(gst_iir_equalizer_10bands_base_init),
(gst_iir_equalizer_10bands_class_init),
(gst_iir_equalizer_10bands_init),
(gst_iir_equalizer_10bands_set_property),
(gst_iir_equalizer_10bands_get_property):
* gst/equalizer/gstiirequalizer10bands.h:
* gst/equalizer/gstiirequalizer3bands.c:
(gst_iir_equalizer_3bands_base_init),
(gst_iir_equalizer_3bands_class_init),
(gst_iir_equalizer_3bands_init),
(gst_iir_equalizer_3bands_set_property),
(gst_iir_equalizer_3bands_get_property):
* gst/equalizer/gstiirequalizer3bands.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_init):
Add 3 and 10 band version and add missing gst_object_sync_values.
* gst/spectrum/gstspectrum.c: (gst_spectrum_event),
(gst_spectrum_transform_ip):
Add some comments about float support.
2007-03-14 14:48:08 +00:00
|
|
|
}
|
gst-libs/gst/audio/gstaudiofilter.c: fix link function to always query channels and query width for floats
Original commit message from CVS:
* gst-libs/gst/audio/gstaudiofilter.c: (gst_audiofilter_link):
fix link function to always query channels and query width for
floats
* configure.ac:
add equalizer dir
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_get_type),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_init), (gst_iir_equalizer_finalize),
(arg_to_scale), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_filter_inplace), (gst_iir_equalizer_setup),
(plugin_init):
add an equalizer
2004-10-28 02:33:48 +00:00
|
|
|
}
|
|
|
|
|
2009-11-05 09:45:59 +00:00
|
|
|
/* Must be called with bands_lock and transform lock! */
|
2008-05-30 11:03:57 +00:00
|
|
|
static void
|
|
|
|
set_passthrough (GstIirEqualizer * equ)
|
|
|
|
{
|
|
|
|
gint i;
|
|
|
|
gboolean passthrough = TRUE;
|
|
|
|
|
|
|
|
for (i = 0; i < equ->freq_band_count; i++) {
|
|
|
|
passthrough = passthrough && (equ->bands[i]->gain == 0.0);
|
|
|
|
}
|
|
|
|
|
|
|
|
gst_base_transform_set_passthrough (GST_BASE_TRANSFORM (equ), passthrough);
|
|
|
|
GST_DEBUG ("Passthrough mode: %d\n", passthrough);
|
|
|
|
}
|
|
|
|
|
2009-11-05 09:45:59 +00:00
|
|
|
/* Must be called with bands_lock and transform lock! */
|
2008-05-30 11:03:57 +00:00
|
|
|
static void
|
|
|
|
update_coefficients (GstIirEqualizer * equ)
|
|
|
|
{
|
2009-10-06 21:33:49 +00:00
|
|
|
gint i, n = equ->freq_band_count;
|
2008-05-30 11:03:57 +00:00
|
|
|
|
2009-11-05 09:30:46 +00:00
|
|
|
for (i = 0; i < n; i++) {
|
2009-11-05 07:18:05 +00:00
|
|
|
if (equ->bands[i]->type == BAND_TYPE_PEAK)
|
|
|
|
setup_peak_filter (equ, equ->bands[i]);
|
|
|
|
else if (equ->bands[i]->type == BAND_TYPE_LOW_SHELF)
|
|
|
|
setup_low_shelf_filter (equ, equ->bands[i]);
|
|
|
|
else
|
|
|
|
setup_high_shelf_filter (equ, equ->bands[i]);
|
2008-05-30 11:03:57 +00:00
|
|
|
}
|
2009-10-06 21:33:49 +00:00
|
|
|
|
2008-10-27 08:30:51 +00:00
|
|
|
equ->need_new_coefficients = FALSE;
|
2008-05-30 11:03:57 +00:00
|
|
|
}
|
|
|
|
|
2009-11-05 09:45:59 +00:00
|
|
|
/* Must be called with transform lock! */
|
2009-02-03 12:09:26 +00:00
|
|
|
static void
|
|
|
|
alloc_history (GstIirEqualizer * equ)
|
|
|
|
{
|
|
|
|
/* free + alloc = no memcpy */
|
|
|
|
g_free (equ->history);
|
|
|
|
equ->history =
|
|
|
|
g_malloc0 (equ->history_size * GST_AUDIO_FILTER (equ)->format.channels *
|
|
|
|
equ->freq_band_count);
|
|
|
|
}
|
|
|
|
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
void
|
|
|
|
gst_iir_equalizer_compute_frequencies (GstIirEqualizer * equ, guint new_count)
|
gst-libs/gst/audio/gstaudiofilter.c: fix link function to always query channels and query width for floats
Original commit message from CVS:
* gst-libs/gst/audio/gstaudiofilter.c: (gst_audiofilter_link):
fix link function to always query channels and query width for
floats
* configure.ac:
add equalizer dir
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_get_type),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_init), (gst_iir_equalizer_finalize),
(arg_to_scale), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_filter_inplace), (gst_iir_equalizer_setup),
(plugin_init):
add an equalizer
2004-10-28 02:33:48 +00:00
|
|
|
{
|
|
|
|
guint old_count, i;
|
2007-07-20 11:37:37 +00:00
|
|
|
gdouble freq0, freq1, step;
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
gchar name[20];
|
|
|
|
|
2009-02-03 12:09:26 +00:00
|
|
|
if (equ->freq_band_count == new_count)
|
|
|
|
return;
|
|
|
|
|
2009-11-05 09:45:59 +00:00
|
|
|
BANDS_LOCK (equ);
|
|
|
|
|
|
|
|
if (G_UNLIKELY (equ->freq_band_count == new_count)) {
|
|
|
|
BANDS_UNLOCK (equ);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
old_count = equ->freq_band_count;
|
|
|
|
equ->freq_band_count = new_count;
|
|
|
|
GST_DEBUG ("bands %u -> %u", old_count, new_count);
|
|
|
|
|
|
|
|
if (old_count < new_count) {
|
|
|
|
/* add new bands */
|
|
|
|
equ->bands = g_realloc (equ->bands, sizeof (GstObject *) * new_count);
|
|
|
|
for (i = old_count; i < new_count; i++) {
|
|
|
|
equ->bands[i] = g_object_new (GST_TYPE_IIR_EQUALIZER_BAND, NULL);
|
|
|
|
/* otherwise they get names like 'iirequalizerband5' */
|
|
|
|
sprintf (name, "band%u", i);
|
|
|
|
gst_object_set_name (GST_OBJECT (equ->bands[i]), name);
|
2009-02-03 12:09:26 +00:00
|
|
|
GST_DEBUG ("adding band[%d]=%p", i, equ->bands[i]);
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
|
|
|
|
gst_object_set_parent (GST_OBJECT (equ->bands[i]), GST_OBJECT (equ));
|
|
|
|
gst_child_proxy_child_added (GST_OBJECT (equ),
|
|
|
|
GST_OBJECT (equ->bands[i]));
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
/* free unused bands */
|
|
|
|
for (i = new_count; i < old_count; i++) {
|
gst/equalizer/: Add 3 and 10 band version and add missing gst_object_sync_values.
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_transform_ip), (plugin_init):
* gst/equalizer/gstiirequalizer10bands.c:
(gst_iir_equalizer_10bands_base_init),
(gst_iir_equalizer_10bands_class_init),
(gst_iir_equalizer_10bands_init),
(gst_iir_equalizer_10bands_set_property),
(gst_iir_equalizer_10bands_get_property):
* gst/equalizer/gstiirequalizer10bands.h:
* gst/equalizer/gstiirequalizer3bands.c:
(gst_iir_equalizer_3bands_base_init),
(gst_iir_equalizer_3bands_class_init),
(gst_iir_equalizer_3bands_init),
(gst_iir_equalizer_3bands_set_property),
(gst_iir_equalizer_3bands_get_property):
* gst/equalizer/gstiirequalizer3bands.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_init):
Add 3 and 10 band version and add missing gst_object_sync_values.
* gst/spectrum/gstspectrum.c: (gst_spectrum_event),
(gst_spectrum_transform_ip):
Add some comments about float support.
2007-03-14 14:48:08 +00:00
|
|
|
GST_DEBUG ("removing band[%d]=%p", i, equ->bands[i]);
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
gst_child_proxy_child_removed (GST_OBJECT (equ),
|
|
|
|
GST_OBJECT (equ->bands[i]));
|
gst/equalizer/: Add 3 and 10 band version and add missing gst_object_sync_values.
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_transform_ip), (plugin_init):
* gst/equalizer/gstiirequalizer10bands.c:
(gst_iir_equalizer_10bands_base_init),
(gst_iir_equalizer_10bands_class_init),
(gst_iir_equalizer_10bands_init),
(gst_iir_equalizer_10bands_set_property),
(gst_iir_equalizer_10bands_get_property):
* gst/equalizer/gstiirequalizer10bands.h:
* gst/equalizer/gstiirequalizer3bands.c:
(gst_iir_equalizer_3bands_base_init),
(gst_iir_equalizer_3bands_class_init),
(gst_iir_equalizer_3bands_init),
(gst_iir_equalizer_3bands_set_property),
(gst_iir_equalizer_3bands_get_property):
* gst/equalizer/gstiirequalizer3bands.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_init):
Add 3 and 10 band version and add missing gst_object_sync_values.
* gst/spectrum/gstspectrum.c: (gst_spectrum_event),
(gst_spectrum_transform_ip):
Add some comments about float support.
2007-03-14 14:48:08 +00:00
|
|
|
gst_object_unparent (GST_OBJECT (equ->bands[i]));
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
equ->bands[i] = NULL;
|
|
|
|
}
|
gst-libs/gst/audio/gstaudiofilter.c: fix link function to always query channels and query width for floats
Original commit message from CVS:
* gst-libs/gst/audio/gstaudiofilter.c: (gst_audiofilter_link):
fix link function to always query channels and query width for
floats
* configure.ac:
add equalizer dir
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_get_type),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_init), (gst_iir_equalizer_finalize),
(arg_to_scale), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_filter_inplace), (gst_iir_equalizer_setup),
(plugin_init):
add an equalizer
2004-10-28 02:33:48 +00:00
|
|
|
}
|
Fix up to use the newly ported (actually working) GstAudioFilter.
Original commit message from CVS:
* configure.ac:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_base_init),
(gst_iir_equalizer_class_init), (gst_iir_equalizer_init),
(setup_filter), (gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_transform_ip), (gst_iir_equalizer_setup),
(plugin_init):
* gst/equalizer/gstiirequalizer.h:
Fix up to use the newly ported (actually working) GstAudioFilter.
Bump core/base requirements to CVS for this.
* tests/icles/.cvsignore:
* tests/icles/Makefile.am:
* tests/icles/equalizer-test.c: (check_bus),
(equalizer_set_band_value), (equalizer_set_all_band_values),
(equalizer_set_band_value_and_wait),
(equalizer_set_all_band_values_and_wait), (do_slider_fiddling),
(main):
Add brain-dead interactive test for equalizer.
2007-02-03 23:35:26 +00:00
|
|
|
|
2009-02-03 12:09:26 +00:00
|
|
|
alloc_history (equ);
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
|
|
|
|
/* set center frequencies and name band objects
|
|
|
|
* FIXME: arg! we can't change the name of parented objects :(
|
2007-07-20 11:37:37 +00:00
|
|
|
* application should read band->freq to get the name
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
*/
|
2007-10-30 21:18:45 +00:00
|
|
|
|
2007-07-20 11:37:37 +00:00
|
|
|
step = pow (HIGHEST_FREQ / LOWEST_FREQ, 1.0 / new_count);
|
|
|
|
freq0 = LOWEST_FREQ;
|
|
|
|
for (i = 0; i < new_count; i++) {
|
|
|
|
freq1 = freq0 * step;
|
2009-11-05 09:54:12 +00:00
|
|
|
|
|
|
|
if (i == 0)
|
|
|
|
equ->bands[i]->type = BAND_TYPE_LOW_SHELF;
|
|
|
|
else if (i == new_count - 1)
|
|
|
|
equ->bands[i]->type = BAND_TYPE_HIGH_SHELF;
|
|
|
|
else
|
|
|
|
equ->bands[i]->type = BAND_TYPE_PEAK;
|
|
|
|
|
2007-07-20 11:37:37 +00:00
|
|
|
equ->bands[i]->freq = freq0 + ((freq1 - freq0) / 2.0);
|
2007-10-30 21:18:45 +00:00
|
|
|
equ->bands[i]->width = freq1 - freq0;
|
gst/equalizer/: Add 3 and 10 band version and add missing gst_object_sync_values.
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_transform_ip), (plugin_init):
* gst/equalizer/gstiirequalizer10bands.c:
(gst_iir_equalizer_10bands_base_init),
(gst_iir_equalizer_10bands_class_init),
(gst_iir_equalizer_10bands_init),
(gst_iir_equalizer_10bands_set_property),
(gst_iir_equalizer_10bands_get_property):
* gst/equalizer/gstiirequalizer10bands.h:
* gst/equalizer/gstiirequalizer3bands.c:
(gst_iir_equalizer_3bands_base_init),
(gst_iir_equalizer_3bands_class_init),
(gst_iir_equalizer_3bands_init),
(gst_iir_equalizer_3bands_set_property),
(gst_iir_equalizer_3bands_get_property):
* gst/equalizer/gstiirequalizer3bands.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_init):
Add 3 and 10 band version and add missing gst_object_sync_values.
* gst/spectrum/gstspectrum.c: (gst_spectrum_event),
(gst_spectrum_transform_ip):
Add some comments about float support.
2007-03-14 14:48:08 +00:00
|
|
|
GST_DEBUG ("band[%2d] = '%lf'", i, equ->bands[i]->freq);
|
2009-11-05 09:54:12 +00:00
|
|
|
|
|
|
|
g_object_notify (G_OBJECT (equ->bands[i]), "bandwidth");
|
|
|
|
g_object_notify (G_OBJECT (equ->bands[i]), "freq");
|
|
|
|
g_object_notify (G_OBJECT (equ->bands[i]), "type");
|
|
|
|
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
/*
|
2007-07-20 11:37:37 +00:00
|
|
|
if(equ->bands[i]->freq<10000.0)
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
sprintf (name,"%dHz",(gint)equ->bands[i]->freq);
|
2007-07-20 11:37:37 +00:00
|
|
|
else
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
sprintf (name,"%dkHz",(gint)(equ->bands[i]->freq/1000.0));
|
|
|
|
gst_object_set_name( GST_OBJECT (equ->bands[i]), name);
|
|
|
|
GST_DEBUG ("band[%2d] = '%s'",i,name);
|
|
|
|
*/
|
2007-07-20 11:37:37 +00:00
|
|
|
freq0 = freq1;
|
gst-libs/gst/audio/gstaudiofilter.c: fix link function to always query channels and query width for floats
Original commit message from CVS:
* gst-libs/gst/audio/gstaudiofilter.c: (gst_audiofilter_link):
fix link function to always query channels and query width for
floats
* configure.ac:
add equalizer dir
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_get_type),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_init), (gst_iir_equalizer_finalize),
(arg_to_scale), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_filter_inplace), (gst_iir_equalizer_setup),
(plugin_init):
add an equalizer
2004-10-28 02:33:48 +00:00
|
|
|
}
|
|
|
|
|
2008-05-30 11:03:57 +00:00
|
|
|
equ->need_new_coefficients = TRUE;
|
2009-11-05 09:45:59 +00:00
|
|
|
BANDS_UNLOCK (equ);
|
gst-libs/gst/audio/gstaudiofilter.c: fix link function to always query channels and query width for floats
Original commit message from CVS:
* gst-libs/gst/audio/gstaudiofilter.c: (gst_audiofilter_link):
fix link function to always query channels and query width for
floats
* configure.ac:
add equalizer dir
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_get_type),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_init), (gst_iir_equalizer_finalize),
(arg_to_scale), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_filter_inplace), (gst_iir_equalizer_setup),
(plugin_init):
add an equalizer
2004-10-28 02:33:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/* start of code that is type specific */
|
|
|
|
|
2008-05-31 08:37:00 +00:00
|
|
|
#define CREATE_OPTIMIZED_FUNCTIONS_INT(TYPE,BIG_TYPE,MIN_VAL,MAX_VAL) \
|
2005-12-06 19:55:58 +00:00
|
|
|
typedef struct { \
|
2008-05-20 10:47:10 +00:00
|
|
|
BIG_TYPE x1, x2; /* history of input values for a filter */ \
|
|
|
|
BIG_TYPE y1, y2; /* history of output values for a filter */ \
|
2005-12-06 19:55:58 +00:00
|
|
|
} SecondOrderHistory ## TYPE; \
|
|
|
|
\
|
2008-05-20 10:47:10 +00:00
|
|
|
static inline BIG_TYPE \
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
one_step_ ## TYPE (GstIirEqualizerBand *filter, \
|
2008-05-20 10:47:10 +00:00
|
|
|
SecondOrderHistory ## TYPE *history, BIG_TYPE input) \
|
2005-12-06 19:55:58 +00:00
|
|
|
{ \
|
|
|
|
/* calculate output */ \
|
2009-05-28 10:39:46 +00:00
|
|
|
BIG_TYPE output = filter->a0 * input + \
|
2008-05-31 08:37:00 +00:00
|
|
|
filter->a1 * history->x1 + filter->a2 * history->x2 + \
|
2009-05-28 10:39:46 +00:00
|
|
|
filter->b1 * history->y1 + filter->b2 * history->y2; \
|
2005-12-06 19:55:58 +00:00
|
|
|
/* update history */ \
|
|
|
|
history->y2 = history->y1; \
|
|
|
|
history->y1 = output; \
|
|
|
|
history->x2 = history->x1; \
|
|
|
|
history->x1 = input; \
|
|
|
|
\
|
2007-10-30 21:18:45 +00:00
|
|
|
return output; \
|
2005-12-06 19:55:58 +00:00
|
|
|
} \
|
|
|
|
\
|
|
|
|
static const guint \
|
|
|
|
history_size_ ## TYPE = sizeof (SecondOrderHistory ## TYPE); \
|
|
|
|
\
|
|
|
|
static void \
|
2007-07-20 11:37:37 +00:00
|
|
|
gst_iir_equ_process_ ## TYPE (GstIirEqualizer *equ, guint8 *data, \
|
2005-12-06 19:55:58 +00:00
|
|
|
guint size, guint channels) \
|
|
|
|
{ \
|
|
|
|
guint frames = size / channels / sizeof (TYPE); \
|
2009-10-05 19:43:11 +00:00
|
|
|
guint i, c, f, nf = equ->freq_band_count; \
|
2005-12-06 19:55:58 +00:00
|
|
|
BIG_TYPE cur; \
|
2009-10-05 19:43:11 +00:00
|
|
|
GstIirEqualizerBand **filters = equ->bands; \
|
2005-12-06 19:55:58 +00:00
|
|
|
\
|
|
|
|
for (i = 0; i < frames; i++) { \
|
2009-10-05 19:43:11 +00:00
|
|
|
SecondOrderHistory ## TYPE *history = equ->history; \
|
2005-12-06 19:55:58 +00:00
|
|
|
for (c = 0; c < channels; c++) { \
|
2007-10-30 21:18:45 +00:00
|
|
|
cur = *((TYPE *) data); \
|
2009-10-05 19:43:11 +00:00
|
|
|
for (f = 0; f < nf; f++) { \
|
|
|
|
cur = one_step_ ## TYPE (filters[f], history, cur); \
|
2005-12-06 19:55:58 +00:00
|
|
|
history++; \
|
|
|
|
} \
|
|
|
|
cur = CLAMP (cur, MIN_VAL, MAX_VAL); \
|
2009-05-28 10:39:46 +00:00
|
|
|
*((TYPE *) data) = (TYPE) floor (cur); \
|
2005-12-06 19:55:58 +00:00
|
|
|
data += sizeof (TYPE); \
|
|
|
|
} \
|
|
|
|
} \
|
gst-libs/gst/audio/gstaudiofilter.c: fix link function to always query channels and query width for floats
Original commit message from CVS:
* gst-libs/gst/audio/gstaudiofilter.c: (gst_audiofilter_link):
fix link function to always query channels and query width for
floats
* configure.ac:
add equalizer dir
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_get_type),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_init), (gst_iir_equalizer_finalize),
(arg_to_scale), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_filter_inplace), (gst_iir_equalizer_setup),
(plugin_init):
add an equalizer
2004-10-28 02:33:48 +00:00
|
|
|
}
|
|
|
|
|
2009-10-05 19:43:11 +00:00
|
|
|
#define CREATE_OPTIMIZED_FUNCTIONS(TYPE) \
|
2008-05-31 08:37:00 +00:00
|
|
|
typedef struct { \
|
|
|
|
TYPE x1, x2; /* history of input values for a filter */ \
|
|
|
|
TYPE y1, y2; /* history of output values for a filter */ \
|
|
|
|
} SecondOrderHistory ## TYPE; \
|
|
|
|
\
|
2009-10-05 19:43:11 +00:00
|
|
|
static inline TYPE \
|
2008-05-31 08:37:00 +00:00
|
|
|
one_step_ ## TYPE (GstIirEqualizerBand *filter, \
|
2009-10-05 19:43:11 +00:00
|
|
|
SecondOrderHistory ## TYPE *history, TYPE input) \
|
2008-05-31 08:37:00 +00:00
|
|
|
{ \
|
|
|
|
/* calculate output */ \
|
2009-10-05 19:43:11 +00:00
|
|
|
TYPE output = filter->a0 * input + filter->a1 * history->x1 + \
|
2008-05-31 08:37:00 +00:00
|
|
|
filter->a2 * history->x2 + filter->b1 * history->y1 + \
|
|
|
|
filter->b2 * history->y2; \
|
|
|
|
/* update history */ \
|
|
|
|
history->y2 = history->y1; \
|
|
|
|
history->y1 = output; \
|
|
|
|
history->x2 = history->x1; \
|
|
|
|
history->x1 = input; \
|
|
|
|
\
|
|
|
|
return output; \
|
|
|
|
} \
|
|
|
|
\
|
|
|
|
static const guint \
|
|
|
|
history_size_ ## TYPE = sizeof (SecondOrderHistory ## TYPE); \
|
|
|
|
\
|
|
|
|
static void \
|
|
|
|
gst_iir_equ_process_ ## TYPE (GstIirEqualizer *equ, guint8 *data, \
|
|
|
|
guint size, guint channels) \
|
|
|
|
{ \
|
|
|
|
guint frames = size / channels / sizeof (TYPE); \
|
2009-10-05 19:43:11 +00:00
|
|
|
guint i, c, f, nf = equ->freq_band_count; \
|
|
|
|
TYPE cur; \
|
|
|
|
GstIirEqualizerBand **filters = equ->bands; \
|
2008-05-31 08:37:00 +00:00
|
|
|
\
|
|
|
|
for (i = 0; i < frames; i++) { \
|
2009-10-05 19:43:11 +00:00
|
|
|
SecondOrderHistory ## TYPE *history = equ->history; \
|
2008-05-31 08:37:00 +00:00
|
|
|
for (c = 0; c < channels; c++) { \
|
|
|
|
cur = *((TYPE *) data); \
|
2009-10-05 19:43:11 +00:00
|
|
|
for (f = 0; f < nf; f++) { \
|
|
|
|
cur = one_step_ ## TYPE (filters[f], history, cur); \
|
2008-05-31 08:37:00 +00:00
|
|
|
history++; \
|
|
|
|
} \
|
|
|
|
*((TYPE *) data) = (TYPE) cur; \
|
|
|
|
data += sizeof (TYPE); \
|
|
|
|
} \
|
|
|
|
} \
|
|
|
|
}
|
|
|
|
|
2009-05-28 10:39:46 +00:00
|
|
|
CREATE_OPTIMIZED_FUNCTIONS_INT (gint16, gfloat, -32768.0, 32767.0);
|
2008-05-31 08:37:00 +00:00
|
|
|
CREATE_OPTIMIZED_FUNCTIONS (gfloat);
|
|
|
|
CREATE_OPTIMIZED_FUNCTIONS (gdouble);
|
gst-libs/gst/audio/gstaudiofilter.c: fix link function to always query channels and query width for floats
Original commit message from CVS:
* gst-libs/gst/audio/gstaudiofilter.c: (gst_audiofilter_link):
fix link function to always query channels and query width for
floats
* configure.ac:
add equalizer dir
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_get_type),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_init), (gst_iir_equalizer_finalize),
(arg_to_scale), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_filter_inplace), (gst_iir_equalizer_setup),
(plugin_init):
add an equalizer
2004-10-28 02:33:48 +00:00
|
|
|
|
Fix up to use the newly ported (actually working) GstAudioFilter.
Original commit message from CVS:
* configure.ac:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_base_init),
(gst_iir_equalizer_class_init), (gst_iir_equalizer_init),
(setup_filter), (gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_transform_ip), (gst_iir_equalizer_setup),
(plugin_init):
* gst/equalizer/gstiirequalizer.h:
Fix up to use the newly ported (actually working) GstAudioFilter.
Bump core/base requirements to CVS for this.
* tests/icles/.cvsignore:
* tests/icles/Makefile.am:
* tests/icles/equalizer-test.c: (check_bus),
(equalizer_set_band_value), (equalizer_set_all_band_values),
(equalizer_set_band_value_and_wait),
(equalizer_set_all_band_values_and_wait), (do_slider_fiddling),
(main):
Add brain-dead interactive test for equalizer.
2007-02-03 23:35:26 +00:00
|
|
|
static GstFlowReturn
|
|
|
|
gst_iir_equalizer_transform_ip (GstBaseTransform * btrans, GstBuffer * buf)
|
gst-libs/gst/audio/gstaudiofilter.c: fix link function to always query channels and query width for floats
Original commit message from CVS:
* gst-libs/gst/audio/gstaudiofilter.c: (gst_audiofilter_link):
fix link function to always query channels and query width for
floats
* configure.ac:
add equalizer dir
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_get_type),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_init), (gst_iir_equalizer_finalize),
(arg_to_scale), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_filter_inplace), (gst_iir_equalizer_setup),
(plugin_init):
add an equalizer
2004-10-28 02:33:48 +00:00
|
|
|
{
|
Fix up to use the newly ported (actually working) GstAudioFilter.
Original commit message from CVS:
* configure.ac:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_base_init),
(gst_iir_equalizer_class_init), (gst_iir_equalizer_init),
(setup_filter), (gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_transform_ip), (gst_iir_equalizer_setup),
(plugin_init):
* gst/equalizer/gstiirequalizer.h:
Fix up to use the newly ported (actually working) GstAudioFilter.
Bump core/base requirements to CVS for this.
* tests/icles/.cvsignore:
* tests/icles/Makefile.am:
* tests/icles/equalizer-test.c: (check_bus),
(equalizer_set_band_value), (equalizer_set_all_band_values),
(equalizer_set_band_value_and_wait),
(equalizer_set_all_band_values_and_wait), (do_slider_fiddling),
(main):
Add brain-dead interactive test for equalizer.
2007-02-03 23:35:26 +00:00
|
|
|
GstAudioFilter *filter = GST_AUDIO_FILTER (btrans);
|
|
|
|
GstIirEqualizer *equ = GST_IIR_EQUALIZER (btrans);
|
gst/equalizer/: Add 3 and 10 band version and add missing gst_object_sync_values.
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_transform_ip), (plugin_init):
* gst/equalizer/gstiirequalizer10bands.c:
(gst_iir_equalizer_10bands_base_init),
(gst_iir_equalizer_10bands_class_init),
(gst_iir_equalizer_10bands_init),
(gst_iir_equalizer_10bands_set_property),
(gst_iir_equalizer_10bands_get_property):
* gst/equalizer/gstiirequalizer10bands.h:
* gst/equalizer/gstiirequalizer3bands.c:
(gst_iir_equalizer_3bands_base_init),
(gst_iir_equalizer_3bands_class_init),
(gst_iir_equalizer_3bands_init),
(gst_iir_equalizer_3bands_set_property),
(gst_iir_equalizer_3bands_get_property):
* gst/equalizer/gstiirequalizer3bands.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_init):
Add 3 and 10 band version and add missing gst_object_sync_values.
* gst/spectrum/gstspectrum.c: (gst_spectrum_event),
(gst_spectrum_transform_ip):
Add some comments about float support.
2007-03-14 14:48:08 +00:00
|
|
|
GstClockTime timestamp;
|
2011-06-30 08:30:16 +00:00
|
|
|
guint8 *data;
|
|
|
|
gsize size;
|
Fix up to use the newly ported (actually working) GstAudioFilter.
Original commit message from CVS:
* configure.ac:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_base_init),
(gst_iir_equalizer_class_init), (gst_iir_equalizer_init),
(setup_filter), (gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_transform_ip), (gst_iir_equalizer_setup),
(plugin_init):
* gst/equalizer/gstiirequalizer.h:
Fix up to use the newly ported (actually working) GstAudioFilter.
Bump core/base requirements to CVS for this.
* tests/icles/.cvsignore:
* tests/icles/Makefile.am:
* tests/icles/equalizer-test.c: (check_bus),
(equalizer_set_band_value), (equalizer_set_all_band_values),
(equalizer_set_band_value_and_wait),
(equalizer_set_all_band_values_and_wait), (do_slider_fiddling),
(main):
Add brain-dead interactive test for equalizer.
2007-02-03 23:35:26 +00:00
|
|
|
|
|
|
|
if (G_UNLIKELY (filter->format.channels < 1 || equ->process == NULL))
|
|
|
|
return GST_FLOW_NOT_NEGOTIATED;
|
gst-libs/gst/audio/gstaudiofilter.c: fix link function to always query channels and query width for floats
Original commit message from CVS:
* gst-libs/gst/audio/gstaudiofilter.c: (gst_audiofilter_link):
fix link function to always query channels and query width for
floats
* configure.ac:
add equalizer dir
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_get_type),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_init), (gst_iir_equalizer_finalize),
(arg_to_scale), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_filter_inplace), (gst_iir_equalizer_setup),
(plugin_init):
add an equalizer
2004-10-28 02:33:48 +00:00
|
|
|
|
2009-11-05 09:45:59 +00:00
|
|
|
BANDS_LOCK (equ);
|
2008-05-30 11:03:57 +00:00
|
|
|
if (equ->need_new_coefficients) {
|
|
|
|
update_coefficients (equ);
|
|
|
|
set_passthrough (equ);
|
|
|
|
}
|
2009-11-05 09:45:59 +00:00
|
|
|
BANDS_UNLOCK (equ);
|
2008-05-30 11:03:57 +00:00
|
|
|
|
2008-05-31 08:37:00 +00:00
|
|
|
if (gst_base_transform_is_passthrough (btrans))
|
|
|
|
return GST_FLOW_OK;
|
|
|
|
|
gst/equalizer/: Add 3 and 10 band version and add missing gst_object_sync_values.
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_transform_ip), (plugin_init):
* gst/equalizer/gstiirequalizer10bands.c:
(gst_iir_equalizer_10bands_base_init),
(gst_iir_equalizer_10bands_class_init),
(gst_iir_equalizer_10bands_init),
(gst_iir_equalizer_10bands_set_property),
(gst_iir_equalizer_10bands_get_property):
* gst/equalizer/gstiirequalizer10bands.h:
* gst/equalizer/gstiirequalizer3bands.c:
(gst_iir_equalizer_3bands_base_init),
(gst_iir_equalizer_3bands_class_init),
(gst_iir_equalizer_3bands_init),
(gst_iir_equalizer_3bands_set_property),
(gst_iir_equalizer_3bands_get_property):
* gst/equalizer/gstiirequalizer3bands.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_init):
Add 3 and 10 band version and add missing gst_object_sync_values.
* gst/spectrum/gstspectrum.c: (gst_spectrum_event),
(gst_spectrum_transform_ip):
Add some comments about float support.
2007-03-14 14:48:08 +00:00
|
|
|
timestamp = GST_BUFFER_TIMESTAMP (buf);
|
|
|
|
timestamp =
|
|
|
|
gst_segment_to_stream_time (&btrans->segment, GST_FORMAT_TIME, timestamp);
|
|
|
|
|
|
|
|
if (GST_CLOCK_TIME_IS_VALID (timestamp))
|
|
|
|
gst_object_sync_values (G_OBJECT (equ), timestamp);
|
|
|
|
|
2011-06-30 08:30:16 +00:00
|
|
|
data = gst_buffer_map (buf, &size, NULL, GST_MAP_WRITE);
|
|
|
|
equ->process (equ, data, size, filter->format.channels);
|
|
|
|
gst_buffer_unmap (buf, data, size);
|
Fix up to use the newly ported (actually working) GstAudioFilter.
Original commit message from CVS:
* configure.ac:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_base_init),
(gst_iir_equalizer_class_init), (gst_iir_equalizer_init),
(setup_filter), (gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_transform_ip), (gst_iir_equalizer_setup),
(plugin_init):
* gst/equalizer/gstiirequalizer.h:
Fix up to use the newly ported (actually working) GstAudioFilter.
Bump core/base requirements to CVS for this.
* tests/icles/.cvsignore:
* tests/icles/Makefile.am:
* tests/icles/equalizer-test.c: (check_bus),
(equalizer_set_band_value), (equalizer_set_all_band_values),
(equalizer_set_band_value_and_wait),
(equalizer_set_all_band_values_and_wait), (do_slider_fiddling),
(main):
Add brain-dead interactive test for equalizer.
2007-02-03 23:35:26 +00:00
|
|
|
|
|
|
|
return GST_FLOW_OK;
|
gst-libs/gst/audio/gstaudiofilter.c: fix link function to always query channels and query width for floats
Original commit message from CVS:
* gst-libs/gst/audio/gstaudiofilter.c: (gst_audiofilter_link):
fix link function to always query channels and query width for
floats
* configure.ac:
add equalizer dir
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_get_type),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_init), (gst_iir_equalizer_finalize),
(arg_to_scale), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_filter_inplace), (gst_iir_equalizer_setup),
(plugin_init):
add an equalizer
2004-10-28 02:33:48 +00:00
|
|
|
}
|
|
|
|
|
Fix up to use the newly ported (actually working) GstAudioFilter.
Original commit message from CVS:
* configure.ac:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_base_init),
(gst_iir_equalizer_class_init), (gst_iir_equalizer_init),
(setup_filter), (gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_transform_ip), (gst_iir_equalizer_setup),
(plugin_init):
* gst/equalizer/gstiirequalizer.h:
Fix up to use the newly ported (actually working) GstAudioFilter.
Bump core/base requirements to CVS for this.
* tests/icles/.cvsignore:
* tests/icles/Makefile.am:
* tests/icles/equalizer-test.c: (check_bus),
(equalizer_set_band_value), (equalizer_set_all_band_values),
(equalizer_set_band_value_and_wait),
(equalizer_set_all_band_values_and_wait), (do_slider_fiddling),
(main):
Add brain-dead interactive test for equalizer.
2007-02-03 23:35:26 +00:00
|
|
|
static gboolean
|
|
|
|
gst_iir_equalizer_setup (GstAudioFilter * audio, GstRingBufferSpec * fmt)
|
gst-libs/gst/audio/gstaudiofilter.c: fix link function to always query channels and query width for floats
Original commit message from CVS:
* gst-libs/gst/audio/gstaudiofilter.c: (gst_audiofilter_link):
fix link function to always query channels and query width for
floats
* configure.ac:
add equalizer dir
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_get_type),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_init), (gst_iir_equalizer_finalize),
(arg_to_scale), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_filter_inplace), (gst_iir_equalizer_setup),
(plugin_init):
add an equalizer
2004-10-28 02:33:48 +00:00
|
|
|
{
|
|
|
|
GstIirEqualizer *equ = GST_IIR_EQUALIZER (audio);
|
|
|
|
|
2007-10-18 06:14:42 +00:00
|
|
|
switch (fmt->type) {
|
|
|
|
case GST_BUFTYPE_LINEAR:
|
|
|
|
switch (fmt->width) {
|
|
|
|
case 16:
|
|
|
|
equ->history_size = history_size_gint16;
|
|
|
|
equ->process = gst_iir_equ_process_gint16;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
return FALSE;
|
|
|
|
}
|
Fix up to use the newly ported (actually working) GstAudioFilter.
Original commit message from CVS:
* configure.ac:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_base_init),
(gst_iir_equalizer_class_init), (gst_iir_equalizer_init),
(setup_filter), (gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_transform_ip), (gst_iir_equalizer_setup),
(plugin_init):
* gst/equalizer/gstiirequalizer.h:
Fix up to use the newly ported (actually working) GstAudioFilter.
Bump core/base requirements to CVS for this.
* tests/icles/.cvsignore:
* tests/icles/Makefile.am:
* tests/icles/equalizer-test.c: (check_bus),
(equalizer_set_band_value), (equalizer_set_all_band_values),
(equalizer_set_band_value_and_wait),
(equalizer_set_all_band_values_and_wait), (do_slider_fiddling),
(main):
Add brain-dead interactive test for equalizer.
2007-02-03 23:35:26 +00:00
|
|
|
break;
|
2007-10-18 06:14:42 +00:00
|
|
|
case GST_BUFTYPE_FLOAT:
|
|
|
|
switch (fmt->width) {
|
|
|
|
case 32:
|
|
|
|
equ->history_size = history_size_gfloat;
|
|
|
|
equ->process = gst_iir_equ_process_gfloat;
|
|
|
|
break;
|
|
|
|
case 64:
|
|
|
|
equ->history_size = history_size_gdouble;
|
|
|
|
equ->process = gst_iir_equ_process_gdouble;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
return FALSE;
|
|
|
|
}
|
Fix up to use the newly ported (actually working) GstAudioFilter.
Original commit message from CVS:
* configure.ac:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_base_init),
(gst_iir_equalizer_class_init), (gst_iir_equalizer_init),
(setup_filter), (gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_transform_ip), (gst_iir_equalizer_setup),
(plugin_init):
* gst/equalizer/gstiirequalizer.h:
Fix up to use the newly ported (actually working) GstAudioFilter.
Bump core/base requirements to CVS for this.
* tests/icles/.cvsignore:
* tests/icles/Makefile.am:
* tests/icles/equalizer-test.c: (check_bus),
(equalizer_set_band_value), (equalizer_set_all_band_values),
(equalizer_set_band_value_and_wait),
(equalizer_set_all_band_values_and_wait), (do_slider_fiddling),
(main):
Add brain-dead interactive test for equalizer.
2007-02-03 23:35:26 +00:00
|
|
|
break;
|
|
|
|
default:
|
|
|
|
return FALSE;
|
gst-libs/gst/audio/gstaudiofilter.c: fix link function to always query channels and query width for floats
Original commit message from CVS:
* gst-libs/gst/audio/gstaudiofilter.c: (gst_audiofilter_link):
fix link function to always query channels and query width for
floats
* configure.ac:
add equalizer dir
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_get_type),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_init), (gst_iir_equalizer_finalize),
(arg_to_scale), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_filter_inplace), (gst_iir_equalizer_setup),
(plugin_init):
add an equalizer
2004-10-28 02:33:48 +00:00
|
|
|
}
|
2007-10-18 06:14:42 +00:00
|
|
|
|
2009-02-03 12:09:26 +00:00
|
|
|
alloc_history (equ);
|
Fix up to use the newly ported (actually working) GstAudioFilter.
Original commit message from CVS:
* configure.ac:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_base_init),
(gst_iir_equalizer_class_init), (gst_iir_equalizer_init),
(setup_filter), (gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_transform_ip), (gst_iir_equalizer_setup),
(plugin_init):
* gst/equalizer/gstiirequalizer.h:
Fix up to use the newly ported (actually working) GstAudioFilter.
Bump core/base requirements to CVS for this.
* tests/icles/.cvsignore:
* tests/icles/Makefile.am:
* tests/icles/equalizer-test.c: (check_bus),
(equalizer_set_band_value), (equalizer_set_all_band_values),
(equalizer_set_band_value_and_wait),
(equalizer_set_all_band_values_and_wait), (do_slider_fiddling),
(main):
Add brain-dead interactive test for equalizer.
2007-02-03 23:35:26 +00:00
|
|
|
return TRUE;
|
gst-libs/gst/audio/gstaudiofilter.c: fix link function to always query channels and query width for floats
Original commit message from CVS:
* gst-libs/gst/audio/gstaudiofilter.c: (gst_audiofilter_link):
fix link function to always query channels and query width for
floats
* configure.ac:
add equalizer dir
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_get_type),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_init), (gst_iir_equalizer_finalize),
(arg_to_scale), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_filter_inplace), (gst_iir_equalizer_setup),
(plugin_init):
add an equalizer
2004-10-28 02:33:48 +00:00
|
|
|
}
|
|
|
|
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
|
gst-libs/gst/audio/gstaudiofilter.c: fix link function to always query channels and query width for floats
Original commit message from CVS:
* gst-libs/gst/audio/gstaudiofilter.c: (gst_audiofilter_link):
fix link function to always query channels and query width for
floats
* configure.ac:
add equalizer dir
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_get_type),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_init), (gst_iir_equalizer_finalize),
(arg_to_scale), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_filter_inplace), (gst_iir_equalizer_setup),
(plugin_init):
add an equalizer
2004-10-28 02:33:48 +00:00
|
|
|
static gboolean
|
|
|
|
plugin_init (GstPlugin * plugin)
|
|
|
|
{
|
Fix up to use the newly ported (actually working) GstAudioFilter.
Original commit message from CVS:
* configure.ac:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_base_init),
(gst_iir_equalizer_class_init), (gst_iir_equalizer_init),
(setup_filter), (gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_transform_ip), (gst_iir_equalizer_setup),
(plugin_init):
* gst/equalizer/gstiirequalizer.h:
Fix up to use the newly ported (actually working) GstAudioFilter.
Bump core/base requirements to CVS for this.
* tests/icles/.cvsignore:
* tests/icles/Makefile.am:
* tests/icles/equalizer-test.c: (check_bus),
(equalizer_set_band_value), (equalizer_set_all_band_values),
(equalizer_set_band_value_and_wait),
(equalizer_set_all_band_values_and_wait), (do_slider_fiddling),
(main):
Add brain-dead interactive test for equalizer.
2007-02-03 23:35:26 +00:00
|
|
|
GST_DEBUG_CATEGORY_INIT (equalizer_debug, "equalizer", 0, "equalizer");
|
|
|
|
|
gst/equalizer/: Add 3 and 10 band version and add missing gst_object_sync_values.
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_transform_ip), (plugin_init):
* gst/equalizer/gstiirequalizer10bands.c:
(gst_iir_equalizer_10bands_base_init),
(gst_iir_equalizer_10bands_class_init),
(gst_iir_equalizer_10bands_init),
(gst_iir_equalizer_10bands_set_property),
(gst_iir_equalizer_10bands_get_property):
* gst/equalizer/gstiirequalizer10bands.h:
* gst/equalizer/gstiirequalizer3bands.c:
(gst_iir_equalizer_3bands_base_init),
(gst_iir_equalizer_3bands_class_init),
(gst_iir_equalizer_3bands_init),
(gst_iir_equalizer_3bands_set_property),
(gst_iir_equalizer_3bands_get_property):
* gst/equalizer/gstiirequalizer3bands.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_init):
Add 3 and 10 band version and add missing gst_object_sync_values.
* gst/spectrum/gstspectrum.c: (gst_spectrum_event),
(gst_spectrum_transform_ip):
Add some comments about float support.
2007-03-14 14:48:08 +00:00
|
|
|
if (!(gst_element_register (plugin, "equalizer-nbands", GST_RANK_NONE,
|
|
|
|
GST_TYPE_IIR_EQUALIZER_NBANDS)))
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
if (!(gst_element_register (plugin, "equalizer-3bands", GST_RANK_NONE,
|
|
|
|
GST_TYPE_IIR_EQUALIZER_3BANDS)))
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
if (!(gst_element_register (plugin, "equalizer-10bands", GST_RANK_NONE,
|
|
|
|
GST_TYPE_IIR_EQUALIZER_10BANDS)))
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
return TRUE;
|
gst-libs/gst/audio/gstaudiofilter.c: fix link function to always query channels and query width for floats
Original commit message from CVS:
* gst-libs/gst/audio/gstaudiofilter.c: (gst_audiofilter_link):
fix link function to always query channels and query width for
floats
* configure.ac:
add equalizer dir
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_get_type),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_init), (gst_iir_equalizer_finalize),
(arg_to_scale), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_filter_inplace), (gst_iir_equalizer_setup),
(plugin_init):
add an equalizer
2004-10-28 02:33:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
|
|
|
|
GST_VERSION_MINOR,
|
2005-08-14 16:10:55 +00:00
|
|
|
"equalizer",
|
gst/equalizer/: Refactor plugin into a base class and a first subclass (nband eq). The nband eq uses GstChildProxy an...
Original commit message from CVS:
* gst/equalizer/Makefile.am:
* gst/equalizer/gstiirequalizer.c: (_do_init),
(gst_iir_equalizer_band_set_property),
(gst_iir_equalizer_band_get_property),
(gst_iir_equalizer_band_class_init),
(gst_iir_equalizer_band_get_type),
(gst_iir_equalizer_child_proxy_get_child_by_index),
(gst_iir_equalizer_child_proxy_get_children_count),
(gst_iir_equalizer_child_proxy_interface_init),
(gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
(gst_iir_equalizer_finalize), (setup_filter),
(gst_iir_equalizer_compute_frequencies),
(gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
(gst_iir_equalizer_setup), (plugin_init):
* gst/equalizer/gstiirequalizer.h:
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_base_init),
(gst_iir_equalizer_nbands_class_init),
(gst_iir_equalizer_nbands_init),
(gst_iir_equalizer_nbands_set_property),
(gst_iir_equalizer_nbands_get_property):
* gst/equalizer/gstiirequalizernbands.h:
Refactor plugin into a base class and a first subclass (nband eq). The
nband eq uses GstChildProxy and is controlable. More subclasses will
follow.
2007-03-09 08:58:26 +00:00
|
|
|
"GStreamer audio equalizers",
|
2007-02-02 17:39:21 +00:00
|
|
|
plugin_init, VERSION, GST_LICENSE, GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)
|