[FFmpeg-devel] [PATCH] lavu/libm: add copysign hack

Ronald S. Bultje rsbultje at gmail.com
Fri Dec 18 21:41:43 CET 2015


Hi,

On Fri, Dec 18, 2015 at 2:18 PM, Ganesh Ajjanagadde <gajjanagadde at gmail.com>
wrote:

> For systems with broken libms.
> Tested with NAN, -NAN, INFINITY, -INFINITY, +/-x for regular double x and
> combinations of these.
>
> Signed-off-by: Ganesh Ajjanagadde <gajjanagadde at gmail.com>
> ---
>  configure        | 2 +-
>  libavutil/libm.h | 9 +++++++++
>  2 files changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/configure b/configure
> index 123d1df..7917386 100755
> --- a/configure
> +++ b/configure
> @@ -2852,7 +2852,7 @@ cropdetect_filter_deps="gpl"
>  delogo_filter_deps="gpl"
>  deshake_filter_select="pixelutils"
>  drawtext_filter_deps="libfreetype"
> -dynaudnorm_filter_deps="copysign erf"
> +dynaudnorm_filter_deps="erf"
>  ebur128_filter_deps="gpl"
>  eq_filter_deps="gpl"
>  fftfilt_filter_deps="avcodec"
> diff --git a/libavutil/libm.h b/libavutil/libm.h
> index 6d8bd68..637de19 100644
> --- a/libavutil/libm.h
> +++ b/libavutil/libm.h
> @@ -62,6 +62,15 @@ static av_always_inline float cbrtf(float x)
>  }
>  #endif
>
> +#if !HAVE_COPYSIGN
> +static av_always_inline double copysign(double x, double y)
> +{
> +    uint64_t vx = av_double2int(x);
> +    uint64_t vy = av_double2int(y);
> +    return av_int2double((vx & 0x7fffffffffffffff) | (vy &
> 0x8000000000000000));
> +}
> +#endif


Don't these need type suffixes (e.g. UINT64_C(val)) on some systems?

Ronald


More information about the ffmpeg-devel mailing list