On Sun, 1 Jul 2012, Måns Rullgård wrote:

Martin Storsjö <[email protected]> writes:

From: "Ronald S. Bultje" <[email protected]>

Some compilers, MSVC among them, don't recognize the divisions by
zero as meaning infinity/nan.

These macros should, according to the standard, expand to constant
expressions, but this shouldn't matter for our usage.
---
 libavutil/mathematics.h |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/libavutil/mathematics.h b/libavutil/mathematics.h
index a734b75..043dd0f 100644
--- a/libavutil/mathematics.h
+++ b/libavutil/mathematics.h
@@ -25,6 +25,7 @@
 #include <math.h>
 #include "attributes.h"
 #include "rational.h"
+#include "intfloat.h"

 #ifndef M_LOG2_10
 #define M_LOG2_10      3.32192809488736234787  /* log_2 10 */
@@ -33,10 +34,10 @@
 #define M_PHI          1.61803398874989484820   /* phi / golden ratio */
 #endif
 #ifndef NAN
-#define NAN            (0.0/0.0)
+#define NAN            av_int2float(0x7fc00000)
 #endif
 #ifndef INFINITY
-#define INFINITY       (1.0/0.0)
+#define INFINITY       av_int2float(0x7f800000)
 #endif

 /**
--

Seems OK, but did you make sure it works as expected?

Make fate works fine with this in place, and it is tested by the fate-eval test. (I also extended this test to test isinf and the INFINITY macro.)

// Martin
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to