summaryrefslogtreecommitdiff
path: root/libavfilter/window_func.c
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2016-08-16 14:30:43 +0200
committerPaul B Mahol <onemda@gmail.com>2016-08-16 15:56:12 +0200
commitea58dd2bebf8748be4c2716936e1056dc6c507fc (patch)
treee272a8b6d567a6877e58ba3853c5904babb0a52a /libavfilter/window_func.c
parentc3c4c72665b9fbb06d8e84e6350c1148b3c55498 (diff)
avfilter/window_func: add dolph window
Diffstat (limited to 'libavfilter/window_func.c')
-rw-r--r--libavfilter/window_func.c12
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);
}