audioconvert: handle NAN from window function

The window function can generate NAN, convert those to 0.0.

Fixes #2491
This commit is contained in:
Wim Taymans 2022-07-03 20:37:48 +02:00
parent 8b649c4510
commit 67f648cc66

View file

@ -61,18 +61,20 @@ static inline double sinc(double x)
#if 0 #if 0
static inline double window_blackman(double x, double n_taps) static inline double window_blackman(double x, double n_taps)
{ {
double alpha = 0.232; double alpha = 0.232, r;
x = 2.0 * M_PI * x / n_taps; x = 2.0 * M_PI * x / n_taps;
return (1.0 - alpha) / 2.0 + (1.0 / 2.0) * cos(x) + r = (1.0 - alpha) / 2.0 + (1.0 / 2.0) * cos(x) +
(alpha / 2.0) * cos(2 * x); (alpha / 2.0) * cos(2 * x);
return r;
} }
#else #else
static inline double window_cosh(double x, double n_taps) static inline double window_cosh(double x, double n_taps)
{ {
double R = 95.0; double R = 95.0, r;
double A = -325.1E-6 * (R * R) + 0.1677 * R - 3.149; double A = -325.1E-6 * (R * R) + 0.1677 * R - 3.149;
x = 2.0 * M_PI * x / n_taps; x = 2.0 * M_PI * x / n_taps;
return cosh(A * sqrt(1 - pow(x / M_PI, 2))) / cosh(A); r = cosh(A * sqrt(1 - pow(x / M_PI, 2))) / cosh(A);
return isnan(r) ? 0.0 : r;
} }
#endif #endif