22 #ifndef AVFILTER_WINDOW_FUNC_H 23 #define AVFILTER_WINDOW_FUNC_H 43 for (n = 0; n <
N; n++)
48 for (n = 0; n <
N; n++)
49 lut[n] = 1.-
fabs((n-(N-1)/2.)/((N-1)/2.));
53 for (n = 0; n <
N; n++)
54 lut[n] = .5*(1-cos(2*
M_PI*n/(N-1)));
58 for (n = 0; n <
N; n++)
59 lut[n] = .54-.46*cos(2*
M_PI*n/(N-1));
63 for (n = 0; n <
N; n++)
64 lut[n] = .42659-.49656*cos(2*
M_PI*n/(N-1))+.076849*cos(4*
M_PI*n/(N-1));
68 for (n = 0; n <
N; n++)
69 lut[n] = 1.-(n-(N-1)/2.)/((N-1)/2.)*(n-(N-1)/2.)/((N-1)/2.);
73 for (n = 0; n <
N; n++)
74 lut[n] = 1.-1.985844164102*cos( 2*
M_PI*n/(N-1))+1.791176438506*cos( 4*
M_PI*n/(N-1))-
75 1.282075284005*cos( 6*
M_PI*n/(N-1))+0.667777530266*cos( 8*
M_PI*n/(N-1))-
76 0.240160796576*cos(10*
M_PI*n/(N-1))+0.056656381764*cos(12*
M_PI*n/(N-1))-
77 0.008134974479*cos(14*
M_PI*n/(N-1))+0.000624544650*cos(16*
M_PI*n/(N-1))-
78 0.000019808998*cos(18*
M_PI*n/(N-1))+0.000000132974*cos(20*
M_PI*n/(N-1));
82 for (n = 0; n <
N; n++)
83 lut[n] = 0.35875-0.48829*cos(2*
M_PI*n/(N-1))+0.14128*cos(4*
M_PI*n/(N-1))-0.01168*cos(6*
M_PI*n/(N-1));
87 for (n = 0; n <
N; n++)
88 lut[n] = 0.3635819-0.4891775*cos(2*
M_PI*n/(N-1))+0.1365995*cos(4*
M_PI*n/(N-1))-0.0106411*cos(6*
M_PI*n/(N-1));
92 for (n = 0; n <
N; n++)
93 lut[n] = 0.62-0.48*
fabs(n/(
double)(N-1)-.5)-0.38*cos(2*
M_PI*n/(N-1));
97 for (n = 0; n <
N; n++)
98 lut[n] = sin(
M_PI*n/(N-1));
102 for (n = 0; n <
N; n++)
103 lut[n] = 0.355768-0.487396*cos(2*
M_PI*n/(N-1))+0.144232*cos(4*
M_PI*n/(N-1))-0.012604*cos(6*
M_PI*n/(N-1));
107 #define SINC(x) (!(x)) ? 1 : sin(M_PI * (x))/(M_PI * (x)); 108 for (n = 0; n <
N; n++)
109 lut[n] =
SINC((2.*n)/(N-1)-1);
113 #define SQR(x) ((x)*(x)) 114 for (n = 0; n <
N; n++)
115 lut[n] =
exp(-0.5 *
SQR((n-(N-1)/2)/(0.4*(N-1)/2.
f)));
119 for (n = 0; n <
N; n++) {
122 if (
FFABS(n - M) >= 0.3 *
M) {
123 lut[n] = 0.5 * (1 + cos((
M_PI*(
FFABS(n - M) - 0.3 * M))/((1 - 0.3) * M)));
131 double b = cosh(7.6009022095419887 / (N-1)), sum, t,
c, norm = 0;
133 for (c = 1 - 1 / (b*b), n = (N-1) / 2; n >= 0; --n) {
134 for (sum = !n, b = t = j = 1; j <= n && sum != t; b *= (n-j) * (1./j), ++j)
135 t = sum, sum += (b *= c * (N - n - j) * (1./j));
136 sum /= (N - 1 - n), norm = norm ? norm : sum, sum /= norm;
138 lut[N - 1 - n] = sum;
143 for (n = 0; n <
N; n++) {
144 double x = 2 * ((n / (double)(N - 1)) - .5);
146 if (x <= -.5 || x >= .5) {
155 for (n = 0; n <
N; n++) {
156 double x = 2 * ((n / (double)(N - 1)) - .5);
158 if (x > 0.25 && x <= 0.5) {
159 lut[n] = -2 *
powf(-1 + 2 * x, 3);
160 }
else if (x >= -.5 && x < -.25) {
161 lut[n] = 2 *
powf(1 + 2 * x, 3);
162 }
else if (x >= -.25 && x < 0) {
163 lut[n] = 1 - 24 * x * x - 48 * x * x * x;
164 }
else if (x >= 0 && x <= .25) {
165 lut[n] = 1 - 24 * x * x + 48 * x * x * x;
173 for (n = 0; n <
N; n++) {
174 double x = 2 * ((n / (double)(N - 1)) - .5);
176 if (x >= 0 && x <= .5) {
178 }
else if (x < 0 && x >= -.5) {
187 for (n = 0; n <
N; n++) {
188 double x = 2 * ((n / (double)(N - 1))) - 1.;
static void generate_window_func(float *lut, int N, int win_func, float *overlap)
#define av_assert0(cond)
assert() equivalent, that is always enabled.
Undefined Behavior In the C some operations are like signed integer dereferencing freed accessing outside allocated Undefined Behavior must not occur in a C it is not safe even if the output of undefined operations is unused The unsafety may seem nit picking but Optimizing compilers have in fact optimized code on the assumption that no undefined Behavior occurs Optimizing code based on wrong assumptions can and has in some cases lead to effects beyond the output of computations The signed integer overflow problem in speed critical code Code which is highly optimized and works with signed integers sometimes has the problem that often the output of the computation does not c
static __device__ float fabs(float a)
simple assert() macros that are a bit more flexible than ISO C assert().
#define FFABS(a)
Absolute value, Note, INT_MIN / INT64_MIN result in undefined behavior as they are not representable ...