Make av_cmp_q() work with infinities and NAN.
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 5 Oct 2010 01:43:31 +0000 (01:43 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 5 Oct 2010 01:43:31 +0000 (01:43 +0000)
Originally committed as revision 25338 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavutil/avutil.h
libavutil/rational.h

index 3e23b6e..31b249a 100644 (file)
@@ -41,7 +41,7 @@
 
 #define LIBAVUTIL_VERSION_MAJOR 50
 #define LIBAVUTIL_VERSION_MINOR 32
-#define LIBAVUTIL_VERSION_MICRO  1
+#define LIBAVUTIL_VERSION_MICRO  2
 
 #define LIBAVUTIL_VERSION_INT   AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
                                                LIBAVUTIL_VERSION_MINOR, \
index 21542a8..15df06f 100644 (file)
@@ -29,6 +29,7 @@
 #define AVUTIL_RATIONAL_H
 
 #include <stdint.h>
+#include <limits.h>
 #include "attributes.h"
 
 /**
@@ -49,7 +50,9 @@ static inline int av_cmp_q(AVRational a, AVRational b){
     const int64_t tmp= a.num * (int64_t)b.den - b.num * (int64_t)a.den;
 
     if(tmp) return ((tmp ^ a.den ^ b.den)>>63)|1;
-    else    return 0;
+    else if(b.den && a.den) return 0;
+    else if(a.num && b.num) return (a.num>>31) - (b.num>>31);
+    else                    return INT_MIN;
 }
 
 /**