[FFmpeg-devel] [PATCH] avfilter/window_func: use a constant instead of acosh()

Paul B Mahol onemda at gmail.com
Sat Aug 20 08:46:54 EEST 2016


On Saturday, August 20, 2016, James Almer <jamrial at gmail.com> wrote:

> Should fix compilation with non C99 compilers like msvc 2012, where
> acosh() is not available.
>
> Signed-off-by: James Almer <jamrial at gmail.com <javascript:;>>
> ---
> A fallback function like
>
> static av_always_inline double acosh(double x)
> {
>     return log(x + sqrt((x * x) - 1.0));
> }
>
> could be added to libm.h if acosh() is needed sometime in the
> future for values that can't be computed at compile time.
> The above example doesn't take into account things like x == NaN
> and x < 1.0, though.
>
>  libavfilter/window_func.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/libavfilter/window_func.c b/libavfilter/window_func.c
> index fcdf6ea..acf1b20 100644
> --- a/libavfilter/window_func.c
> +++ b/libavfilter/window_func.c
> @@ -117,7 +117,7 @@ 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;
> +        double b = cosh(7.6009022095419887 / (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)


>



 LGTM


More information about the ffmpeg-devel mailing list