summaryrefslogtreecommitdiff
path: root/libavutil/common.h
diff options
context:
space:
mode:
authorDiego Biurrun <diego@biurrun.de>2005-09-19 23:26:47 +0000
committerDiego Biurrun <diego@biurrun.de>2005-09-19 23:26:47 +0000
commit7df6545556367b62f6a122faf3298676c301af71 (patch)
tree04b869bfb7d9288c0e724bcbf1919d3f836bc464 /libavutil/common.h
parent0f8840707500538c37db3239e8e6443773877ab5 (diff)
Move lrintf implementation from libavcodec/dsputil.h to libavutil/common.h
where it makes more sense. Originally committed as revision 4599 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavutil/common.h')
-rw-r--r--libavutil/common.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/libavutil/common.h b/libavutil/common.h
index 8179ece5b2..bbbd4c91c9 100644
--- a/libavutil/common.h
+++ b/libavutil/common.h
@@ -543,6 +543,35 @@ tend= read_time();\
}\
}
+#ifndef HAVE_LRINTF
+/* XXX: add ISOC specific test to avoid specific BSD testing. */
+/* better than nothing implementation. */
+/* btw, rintf() is existing on fbsd too -- alex */
+static always_inline long int lrintf(float x)
+{
+#ifdef CONFIG_WIN32
+# ifdef ARCH_X86
+ int32_t i;
+ asm volatile(
+ "fistpl %0\n\t"
+ : "=m" (i) : "t" (x) : "st"
+ );
+ return i;
+# else
+ /* XXX: incorrect, but make it compile */
+ return (int)(x + (x < 0 ? -0.5 : 0.5));
+# endif /* ARCH_X86 */
+#else
+ return (int)(rint(x));
+#endif /* CONFIG_WIN32 */
+}
+#else
+#ifndef _ISOC9X_SOURCE
+#define _ISOC9X_SOURCE
+#endif
+#include <math.h>
+#endif /* HAVE_LRINTF */
+
#endif /* HAVE_AV_CONFIG_H */
#endif /* COMMON_H */