diff --git a/configure b/configure index 473393a4e868e6162253ae93ef4c8e7aaa076dfd..4a03846163d58a01afea2c60328123739f3914c4 100755 --- a/configure +++ b/configure @@ -1093,6 +1093,8 @@ HAVE_LIST=" inet_aton inline_asm isatty + isinf + isnan jack_port_get_latency_range ldbrx libdc1394_1 @@ -2922,6 +2924,8 @@ enabled vaapi && require vaapi va/va.h vaInitialize -lva check_mathfunc cbrtf check_mathfunc exp2 check_mathfunc exp2f +check_mathfunc isinf +check_mathfunc isnan check_mathfunc llrint check_mathfunc llrintf check_mathfunc log2 diff --git a/libavutil/libm.h b/libavutil/libm.h index b6d8a94fce260a9ace0a4759c04b309e327e8109..b5821e82679d397ea133b3a66b4aed5b73c1df11 100644 --- a/libavutil/libm.h +++ b/libavutil/libm.h @@ -27,6 +27,7 @@ #include <math.h> #include "config.h" #include "attributes.h" +#include "intfloat.h" #if !HAVE_CBRTF static av_always_inline float cbrtf(float x) @@ -45,6 +46,26 @@ static av_always_inline float cbrtf(float x) #define exp2f(x) ((float)exp2(x)) #endif /* HAVE_EXP2F */ +#if !HAVE_ISINF +static av_always_inline av_const int isinf(float x) +{ + uint32_t v = av_float2int(x); + if ((v & 0x7f800000) != 0x7f800000) + return 0; + return !(v & 0x007fffff); +} +#endif /* HAVE_ISINF */ + +#if !HAVE_ISNAN +static av_always_inline av_const int isnan(float x) +{ + uint32_t v = av_float2int(x); + if ((v & 0x7f800000) != 0x7f800000) + return 0; + return v & 0x007fffff; +} +#endif /* HAVE_ISNAN */ + #if !HAVE_LLRINT #undef llrint #define llrint(x) ((long long)rint(x))