### gst/equalizer/: Allow setting 0 as bandwidth and handle this correctly.

```Original commit message from CVS:
* gst/equalizer/demo.c: (main):
* gst/equalizer/gstiirequalizer.c:
(gst_iir_equalizer_band_class_init), (setup_filter):
Allow setting 0 as bandwidth and handle this correctly.
Also handle a bandwidth of rate/2 properly.
* gst/equalizer/gstiirequalizernbands.c:
(gst_iir_equalizer_nbands_class_init):
Make it possible to generate a N-band equalizer with 1 bands. The
previous limit of 2 was caused by a nowadays replaced calculation
doing a division by zero if number of bands was 1.```
parent 13a97658
 ... ... @@ -232,7 +232,7 @@ gst_iir_equalizer_band_class_init (GstIirEqualizerBandClass * klass) g_object_class_install_property (gobject_class, ARG_BANDWIDTH, g_param_spec_double ("bandwidth", "bandwidth", "difference between bandedges in Hz", 1.0, 100000.0, 1.0, G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE)); 0.0, 100000.0, 1.0, G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE)); } static void ... ... @@ -390,12 +390,26 @@ setup_filter (GstIirEqualizer * equ, GstIirEqualizerBand * band) else omega = 2.0 * M_PI * (band->freq / GST_AUDIO_FILTER (equ)->format.rate); if (band->width / GST_AUDIO_FILTER (equ)->format.rate > 0.5) bw = M_PI; else if (band->width <= 1.0) bw = 2.0 * M_PI * (1.0 / GST_AUDIO_FILTER (equ)->format.rate); else if (band->width / GST_AUDIO_FILTER (equ)->format.rate >= 0.5) { /* If bandwidth == 0.5 the calculation below fails as tan(M_PI/2) * is undefined. So set the bandwidth to a slightly smaller value. */ bw = M_PI - 0.00000001; } 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; goto out; } else { bw = 2.0 * M_PI * (band->width / GST_AUDIO_FILTER (equ)->format.rate); } edge_gain = sqrt (gain); gamma = tan (bw / 2.0); ... ... @@ -409,6 +423,7 @@ setup_filter (GstIirEqualizer * equ, GstIirEqualizerBand * band) band->b1 = (2.0 * cos (omega)) / (1.0 + beta); band->b2 = -(1.0 - beta) / (1.0 + beta); out: GST_INFO ("gain = %7.5g, , bandwidth= %7.5g, frequency = %7.5g, 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, ... ...
 ... ... @@ -84,7 +84,7 @@ gst_iir_equalizer_nbands_class_init (GstIirEqualizerNBandsClass * klass) g_object_class_install_property (gobject_class, ARG_NUM_BANDS, g_param_spec_uint ("num-bands", "num-bands", "number of different bands to use", 2, 64, 10, "number of different bands to use", 1, 64, 10, G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); } ... ...
 ... ... @@ -208,7 +208,7 @@ main (int argc, char *argv[]) G_CALLBACK (on_gain_changed), (gpointer) band); gtk_box_pack_start (GTK_BOX (scales_hbox), widget, FALSE, FALSE, 0); widget = gtk_vscale_new_with_range (1.0, 20000.0, 5.0); widget = gtk_vscale_new_with_range (0.0, 20000.0, 5.0); gtk_scale_set_draw_value (GTK_SCALE (widget), TRUE); gtk_scale_set_value_pos (GTK_SCALE (widget), GTK_POS_TOP); gtk_range_set_value (GTK_RANGE (widget), bw); ... ...
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
{"ft_lang_label":"__label__en","ft_lang_prob":0.8386634,"math_prob":0.9934558,"size":663,"snap":"2021-31-2021-39","text_gpt3_token_len":165,"char_repetition_ratio":0.15781488,"word_repetition_ratio":0.12048193,"special_character_ratio":0.22322775,"punctuation_ratio":0.15044248,"nsfw_num_words":0,"has_unicode_error":false,"math_prob_llama3":0.9838868,"pos_list":[0],"im_url_duplicate_count":[null],"WARC_HEADER":"{\"WARC-Type\":\"response\",\"WARC-Date\":\"2021-07-28T08:44:45Z\",\"WARC-Record-ID\":\"<urn:uuid:633bd8b9-798e-423d-b800-516c2dcb7828>\",\"Content-Length\":\"208805\",\"Content-Type\":\"application/http; msgtype=response\",\"WARC-Warcinfo-ID\":\"<urn:uuid:96da0278-61b9-48bd-a69e-43a3da281d34>\",\"WARC-Concurrent-To\":\"<urn:uuid:ea398c03-3cab-48e6-a1d0-59d95246452e>\",\"WARC-IP-Address\":\"147.75.198.156\",\"WARC-Target-URI\":\"https://gitlab.freedesktop.org/thiblahute/gst-plugins-good/-/commit/6edf8c43268488ad21d5ba50e02ebc533c6c12f9\",\"WARC-Payload-Digest\":\"sha1:2EP4F7F5KPOCZSBTET44SMJU42KIRHTL\",\"WARC-Block-Digest\":\"sha1:BECFA3N35Q6FXP4A7EYZRSUHIZMC7ZBU\",\"WARC-Identified-Payload-Type\":\"text/html\",\"warc_filename\":\"/cc_download/warc_2021/CC-MAIN-2021-31/CC-MAIN-2021-31_segments_1627046153531.10_warc_CC-MAIN-20210728060744-20210728090744-00511.warc.gz\"}"}