From a0a47a09b0e204216072c1f77643de3f6f869732 Mon Sep 17 00:00:00 2001
From: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
Date: Wed, 13 Jan 2016 19:09:25 -0500
Subject: [PATCH] lavu/libm: add isfinite fallback

Reviewed-by: Ronald S. Bultje <rsbultje@gmail.com>
Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
---
 configure        |  1 +
 libavutil/libm.h | 19 +++++++++++++++++++
 2 files changed, 20 insertions(+)

diff --git a/configure b/configure
index 6d14d37fda2..28ec5bf01e9 100755
--- a/configure
+++ b/configure
@@ -1820,6 +1820,7 @@ MATH_FUNCS="
     exp2f
     expf
     hypot
+    isfinite
     isinf
     isnan
     ldexpf
diff --git a/libavutil/libm.h b/libavutil/libm.h
index bc44dcab0fd..a8199623912 100644
--- a/libavutil/libm.h
+++ b/libavutil/libm.h
@@ -343,6 +343,25 @@ static av_always_inline av_const int avpriv_isnan(double x)
         : avpriv_isnan(x))
 #endif /* HAVE_ISNAN */
 
+#if !HAVE_ISFINITE
+static av_always_inline av_const int avpriv_isfinitef(float x)
+{
+    uint32_t v = av_float2int(x);
+    return (v & 0x7f800000) != 0x7f800000;
+}
+
+static av_always_inline av_const int avpriv_isfinite(double x)
+{
+    uint64_t v = av_double2int(x);
+    return (v & 0x7ff0000000000000) != 0x7ff0000000000000;
+}
+
+#define isfinite(x)                  \
+    (sizeof(x) == sizeof(float)      \
+        ? avpriv_isfinitef(x)        \
+        : avpriv_isfinite(x))
+#endif /* HAVE_ISFINITE */
+
 #if !HAVE_HYPOT
 static inline av_const double hypot(double x, double y)
 {
-- 
GitLab