From: Jordi Burguet-Castell Date: Mon, 11 Apr 2011 23:40:30 +0000 (-0500) Subject: audiowsinclimit: Fix range of kernel elements (lim -> lim-1) in high/low-pass filters X-Git-Tag: 1.19.3~509^2~7136^2~658 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=766e437af188c82d966cd5f459577098fbdc67ec;p=platform%2Fupstream%2Fgstreamer.git audiowsinclimit: Fix range of kernel elements (lim -> lim-1) in high/low-pass filters --- diff --git a/gst/audiofx/audiowsinclimit.c b/gst/audiofx/audiowsinclimit.c index c80d5af..f88f1b7 100644 --- a/gst/audiofx/audiowsinclimit.c +++ b/gst/audiofx/audiowsinclimit.c @@ -258,10 +258,11 @@ gst_audio_wsinclimit_build_kernel (GstAudioWSincLimit * self) kernel = g_new (gdouble, len); for (i = 0; i < len; ++i) { - if (i == len / 2) + if (i % 2 == 1 && i == (len - 1) / 2) kernel[i] = w; else - kernel[i] = sin (w * (i - len / 2)) / (i - len / 2); + kernel[i] = sin (w * (i - (len - 1) / 2)) / (i - (len - 1) / 2); + /* windowing */ switch (self->window) { case WINDOW_HAMMING: @@ -293,7 +294,13 @@ gst_audio_wsinclimit_build_kernel (GstAudioWSincLimit * self) if (self->mode == MODE_HIGH_PASS) { for (i = 0; i < len; ++i) kernel[i] = -kernel[i]; - kernel[len / 2] += 1.0; + + if (len % 2 == 1) + kernel[(len - 1) / 2] += 1.0; + else { + kernel[len / 2 - 1] += 0.5; + kernel[len / 2] += 0.5; + } } gst_audio_fx_base_fir_filter_set_kernel (GST_AUDIO_FX_BASE_FIR_FILTER (self),