GNOME Bugzilla – Bug 464800
[audiofx] New elements: chebyshev low/highpass and bandpass/bandreject
Last modified: 2007-08-16 17:01:10 UTC
Hi, the attached patches add a chebyshev lowpass/highpass filter and bandpass/bandreject filter to audiofx. It's possible to configure (apart from cutoff or lower/upper frequency): - amount of ripple - type of chebyshev filter (type 1 and 2 are possible) - number of poles (multiply of 2 for lowpass/highpass and multiply of 4 for the others) Documentation is already included, I hope a unit test is not necessary as it will be rather hard for this type of filters ;)
Created attachment 93300 [details] [review] chebyshev-1.diff addition to the build system and plugin_init function
Created attachment 93301 [details] [review] chebyshev-2.diff lowpass/highpass filter
Created attachment 93302 [details] [review] chebyshev-3.diff bandpass/bandreject filter
Created attachment 93303 [details] [review] chebyshev-4.diff addition to the docs
Created attachment 93538 [details] [review] chebyshev-2.diff lowpass/highpass this time we reset the history of input and output values in start.
Created attachment 93539 [details] [review] chebyshev-3.diff bandpass/bandreject this time we reset the history of input and output values in start.
Created attachment 93555 [details] [review] chebyshev-5.diff unit tests
They work fine. Limmiting the parameter ranges would be good though. Althugh its a general problem of gobject-arameters, that they cannot be limmited dynamically.
Committed... 2007-08-16 Sebastian Dröge <slomo@circular-chaos.org> reviewed by: Stefan Kost <ensonic@users.sf.net> * gst/audiofx/Makefile.am: * gst/audiofx/audiochebyshevfreqband.c: (gst_audio_chebyshev_freq_band_mode_get_type), (gst_audio_chebyshev_freq_band_base_init), (gst_audio_chebyshev_freq_band_dispose), (gst_audio_chebyshev_freq_band_class_init), (gst_audio_chebyshev_freq_band_init), (generate_biquad_coefficients), (calculate_gain), (generate_coefficients), (gst_audio_chebyshev_freq_band_set_property), (gst_audio_chebyshev_freq_band_get_property), (gst_audio_chebyshev_freq_band_setup), (process), (process_64), (process_32), (gst_audio_chebyshev_freq_band_transform_ip), (gst_audio_chebyshev_freq_band_start): * gst/audiofx/audiochebyshevfreqband.h: * gst/audiofx/audiochebyshevfreqlimit.c: (gst_audio_chebyshev_freq_limit_mode_get_type), (gst_audio_chebyshev_freq_limit_base_init), (gst_audio_chebyshev_freq_limit_dispose), (gst_audio_chebyshev_freq_limit_class_init), (gst_audio_chebyshev_freq_limit_init), (generate_biquad_coefficients), (calculate_gain), (generate_coefficients), (gst_audio_chebyshev_freq_limit_set_property), (gst_audio_chebyshev_freq_limit_get_property), (gst_audio_chebyshev_freq_limit_setup), (process), (process_64), (process_32), (gst_audio_chebyshev_freq_limit_transform_ip), (gst_audio_chebyshev_freq_limit_start): * gst/audiofx/audiochebyshevfreqlimit.h: * gst/audiofx/audiofx.c: (plugin_init): Add Chebyshev lowpass/highpass and bandpass/bandreject elements. Fixes #464800. * tests/check/Makefile.am: * tests/check/elements/.cvsignore: * tests/check/elements/audiochebyshevfreqband.c: (setup_audiochebyshevfreqband), (cleanup_audiochebyshevfreqband), (GST_START_TEST), (audiochebyshevfreqband_suite), (main): * tests/check/elements/audiochebyshevfreqlimit.c: (setup_audiochebyshevfreqlimit), (cleanup_audiochebyshevfreqlimit), (GST_START_TEST), (audiochebyshevfreqlimit_suite), (main): Add unit tests for the chebyshev filters. * docs/plugins/Makefile.am: * docs/plugins/gst-plugins-good-plugins-docs.sgml: * docs/plugins/gst-plugins-good-plugins-sections.txt: * docs/plugins/gst-plugins-good-plugins.args: * docs/plugins/inspect/plugin-1394.xml: * docs/plugins/inspect/plugin-audiofx.xml: * docs/plugins/inspect/plugin-dv.xml: * docs/plugins/inspect/plugin-flac.xml: * docs/plugins/inspect/plugin-jpeg.xml: * docs/plugins/inspect/plugin-png.xml: * docs/plugins/inspect/plugin-rtp.xml: * docs/plugins/inspect/plugin-shout2send.xml: * docs/plugins/inspect/plugin-wavpack.xml: And add docs for the chebyshev filters. While doing that also run make update in docs/plugins.