summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xconfigure2
-rw-r--r--libavutil/internal.h29
-rw-r--r--libavutil/x86/emms.h22
3 files changed, 31 insertions, 22 deletions
diff --git a/configure b/configure
index 4a8d85fff2..94aff58292 100755
--- a/configure
+++ b/configure
@@ -3226,7 +3226,6 @@ case $target_os in
objformat="win32"
ranlib=:
enable dos_paths
- add_cppflags -U__STRICT_ANSI__
;;
win32|win64)
if enabled shared; then
@@ -3370,6 +3369,7 @@ elif check_header _mingw.h; then
"defined (__MINGW64_VERSION_MAJOR) || (__MINGW32_MAJOR_VERSION > 3) || \
(__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" ||
die "ERROR: MinGW runtime version must be >= 3.15."
+ add_cppflags -U__STRICT_ANSI__
if check_cpp_condition _mingw.h "defined(__MINGW64_VERSION_MAJOR) && \
__MINGW64_VERSION_MAJOR < 3"; then
add_compat msvcrt/snprintf.o
diff --git a/libavutil/internal.h b/libavutil/internal.h
index 2dacb2c5af..a105fe6b44 100644
--- a/libavutil/internal.h
+++ b/libavutil/internal.h
@@ -40,6 +40,14 @@
#include "cpu.h"
#include "dict.h"
+#if ARCH_X86
+# include "x86/emms.h"
+#endif
+
+#ifndef emms_c
+# define emms_c()
+#endif
+
#ifndef attribute_align_arg
#if ARCH_X86_32 && AV_GCC_VERSION_AT_LEAST(4,2)
# define attribute_align_arg __attribute__((force_align_arg_pointer))
@@ -154,25 +162,4 @@
# define ONLY_IF_THREADS_ENABLED(x) NULL
#endif
-#if HAVE_MMX_INLINE
-/**
- * Empty mmx state.
- * this must be called between any dsp function and float/double code.
- * for example sin(); dsp->idct_put(); emms_c(); cos()
- */
-static av_always_inline void emms_c(void)
-{
- if(av_get_cpu_flags() & AV_CPU_FLAG_MMX)
- __asm__ volatile ("emms" ::: "memory");
-}
-#elif HAVE_MMX && HAVE_MM_EMPTY
-# include <mmintrin.h>
-# define emms_c _mm_empty
-#elif HAVE_MMX && HAVE_YASM
-# include "libavutil/x86/emms.h"
-# define emms_c avpriv_emms_yasm
-#else
-# define emms_c()
-#endif /* HAVE_MMX_INLINE */
-
#endif /* AVUTIL_INTERNAL_H */
diff --git a/libavutil/x86/emms.h b/libavutil/x86/emms.h
index 35f0dfbfc1..809a23b05b 100644
--- a/libavutil/x86/emms.h
+++ b/libavutil/x86/emms.h
@@ -19,6 +19,28 @@
#ifndef AVUTIL_X86_EMMS_H
#define AVUTIL_X86_EMMS_H
+#include "config.h"
+#include "libavutil/attributes.h"
+
void avpriv_emms_yasm(void);
+#if HAVE_MMX_INLINE
+# define emms_c emms_c
+/**
+ * Empty mmx state.
+ * this must be called between any dsp function and float/double code.
+ * for example sin(); dsp->idct_put(); emms_c(); cos()
+ */
+static av_always_inline void emms_c(void)
+{
+ if(av_get_cpu_flags() & AV_CPU_FLAG_MMX)
+ __asm__ volatile ("emms" ::: "memory");
+}
+#elif HAVE_MMX && HAVE_MM_EMPTY
+# include <mmintrin.h>
+# define emms_c _mm_empty
+#elif HAVE_MMX_EXTERNAL
+# define emms_c avpriv_emms_yasm
+#endif /* HAVE_MMX_INLINE */
+
#endif /* AVUTIL_X86_EMMS_H */