[FFmpeg-devel] [PATCH] configure+libm.h: add fmin/fmax/fminf/fmaxf emulation

Michael Niedermayer michaelni at gmx.at
Fri Oct 30 23:35:34 CET 2015


From: Michael Niedermayer <michael at niedermayer.cc>

This should fix the build failure of avf_showcqt.c

An alternative solution would be to add a check for fmin/fmax to fate-source and
then to replace them by FFMIN/FFMAX, i can do that if preferred?

Untested due to lack of a affected platform

Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
---
 configure        |    8 ++++++++
 libavutil/libm.h |   28 ++++++++++++++++++++++++++++
 2 files changed, 36 insertions(+)

diff --git a/configure b/configure
index 95790f4..e6f5d2c 100755
--- a/configure
+++ b/configure
@@ -1770,6 +1770,10 @@ MATH_FUNCS="
     exp2
     exp2f
     expf
+    fmax
+    fmaxf
+    fmin
+    fminf
     isinf
     isnan
     ldexpf
@@ -5304,6 +5308,10 @@ check_lib math.h sin -lm && LIBM="-lm"
 disabled crystalhd || check_lib libcrystalhd/libcrystalhd_if.h DtsCrystalHDVersion -lcrystalhd || disable crystalhd
 
 atan2f_args=2
+fmax_args=2
+fmaxf_args=2
+fmin_args=2
+fminf_args=2
 copysign_args=2
 ldexpf_args=2
 powf_args=2
diff --git a/libavutil/libm.h b/libavutil/libm.h
index 6c17b28..ba837a2 100644
--- a/libavutil/libm.h
+++ b/libavutil/libm.h
@@ -43,6 +43,34 @@
 #define atan2f(y, x) ((float)atan2(y, x))
 #endif
 
+#if !HAVE_FMAX
+#undef fmax
+static av_always_inline double fmax(double x, double y)
+{
+    if (x < y) return y;
+    else       return x;
+}
+#endif
+
+#if !HAVE_FMIN
+#undef fmin
+static av_always_inline double fmin(double x, double y)
+{
+    if (x < y) return x;
+    else       return y;
+}
+#endif
+
+#if !HAVE_FMAXF
+#undef fmaxf
+#define fmaxf(y, x) ((float)fmax(y, x))
+#endif
+
+#if !HAVE_FMINF
+#undef fminf
+#define fminf(y, x) ((float)fmin(y, x))
+#endif
+
 #if !HAVE_POWF
 #undef powf
 #define powf(x, y) ((float)pow(x, y))
-- 
1.7.9.5



More information about the ffmpeg-devel mailing list