diff options
author | Paul B Mahol <onemda@gmail.com> | 2016-08-16 14:30:43 +0200 |
---|---|---|
committer | Paul B Mahol <onemda@gmail.com> | 2016-08-16 15:56:12 +0200 |
commit | ea58dd2bebf8748be4c2716936e1056dc6c507fc (patch) | |
tree | e272a8b6d567a6877e58ba3853c5904babb0a52a /libavfilter/window_func.c | |
parent | c3c4c72665b9fbb06d8e84e6350c1148b3c55498 (diff) |
avfilter/window_func: add dolph window
Diffstat (limited to 'libavfilter/window_func.c')
-rw-r--r-- | libavfilter/window_func.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/libavfilter/window_func.c b/libavfilter/window_func.c index 9c6202aa18..1931c8ea65 100644 --- a/libavfilter/window_func.c +++ b/libavfilter/window_func.c @@ -116,6 +116,18 @@ void ff_generate_window_func(float *lut, int N, int win_func, float *overlap) } *overlap = 0.33; break; + case WFUNC_DOLPH: { + double b = cosh(acosh(pow(10., 3)) / (N-1)), sum, t, c, norm = 0; + int j; + for (c = 1 - 1 / (b*b), n = (N-1) / 2; n >= 0; --n) { + for (sum = !n, b = t = j = 1; j <= n && sum != t; b *= (n-j) * (1./j), ++j) + t = sum, sum += (b *= c * (N - n - j) * (1./j)); + sum /= (N - 1 - n), sum /= (norm = norm ? norm : sum); + lut[n] = sum; + lut[N - 1 - n] = sum; + } + *overlap = 0.5;} + break; default: av_assert0(0); } |