[FFmpeg-cvslog] r11326 - in trunk: configure libavutil/internal.h
diego
subversion
Thu Dec 27 02:53:03 CET 2007
Author: diego
Date: Thu Dec 27 02:53:02 2007
New Revision: 11326
Log:
Check for the presence of llrint(), lrint(), round() and roundf()
and provide simple replacements if they are unavailable.
patch by Michael Kostylev, mik niipt ru
Modified:
trunk/configure
trunk/libavutil/internal.h
Modified: trunk/configure
==============================================================================
--- trunk/configure (original)
+++ trunk/configure Thu Dec 27 02:53:02 2007
@@ -706,6 +706,8 @@ HAVE_LIST="
getrusage
imlib2
inet_aton
+ llrint
+ lrint
lrintf
machine_ioctl_bt848_h
machine_ioctl_meteor_h
@@ -714,6 +716,8 @@ HAVE_LIST="
mkstemp
mlib
ppc64
+ round
+ roundf
sdl
sdl_video_size
soundcard_h
@@ -1593,12 +1597,14 @@ done
check_lib math.h sin -lm
-# test for lrintf in math.h
-check_exec <<EOF && enable lrintf || disable lrintf
+# test for C99 functions in math.h
+for func in llrint lrint lrintf round roundf; do
+ check_exec <<EOF && enable $func || disable $func
#define _ISOC9X_SOURCE 1
#include <math.h>
-int main(void) { return (lrintf(3.999f) > 0)?0:1; }
+int main(void) { return ($func(3.999f) > 0)?0:1; }
EOF
+done
enabled_any libamr_nb libamr_wb && enable libamr
Modified: trunk/libavutil/internal.h
==============================================================================
--- trunk/libavutil/internal.h (original)
+++ trunk/libavutil/internal.h Thu Dec 27 02:53:02 2007
@@ -270,6 +270,20 @@ if((y)<(x)){\
}\
}
+#ifndef HAVE_LLRINT
+static av_always_inline long long llrint(double x)
+{
+ return rint(x);
+}
+#endif /* HAVE_LLRINT */
+
+#ifndef HAVE_LRINT
+static av_always_inline long int lrint(double x)
+{
+ return rint(x);
+}
+#endif /* HAVE_LRINT */
+
#ifndef HAVE_LRINTF
static av_always_inline long int lrintf(float x)
{
@@ -277,4 +291,18 @@ static av_always_inline long int lrintf(
}
#endif /* HAVE_LRINTF */
+#ifndef HAVE_ROUND
+static av_always_inline double round(double x)
+{
+ return (x > 0) ? floor(x + 0.5) : ceil(x - 0.5);
+}
+#endif /* HAVE_ROUND */
+
+#ifndef HAVE_ROUNDF
+static av_always_inline float roundf(float x)
+{
+ return (x > 0) ? floor(x + 0.5) : ceil(x - 0.5);
+}
+#endif /* HAVE_ROUNDF */
+
#endif /* FFMPEG_INTERNAL_H */
More information about the ffmpeg-cvslog
mailing list