[FFmpeg-cvslog] x86: xviddct: Employ more specific ifdefs

Diego Biurrun git at videolan.org
Sun Oct 6 11:30:46 CEST 2013


ffmpeg | branch: master | Diego Biurrun <diego at biurrun.de> | Mon Sep 16 13:47:35 2013 +0200| [0b8b2ae5e93d616c2ece59f7175f483154cff918] | committer: Diego Biurrun

x86: xviddct: Employ more specific ifdefs

This avoids building mmxext and sse2 code when disabled by configure.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=0b8b2ae5e93d616c2ece59f7175f483154cff918
---

 libavcodec/dct-test.c           |    8 ++++++++
 libavcodec/x86/idct_mmx_xvid.c  |   32 ++++++++++++++++++--------------
 libavcodec/x86/idct_sse2_xvid.c |    4 ++--
 3 files changed, 28 insertions(+), 16 deletions(-)

diff --git a/libavcodec/dct-test.c b/libavcodec/dct-test.c
index 0f7f5c3..730a368 100644
--- a/libavcodec/dct-test.c
+++ b/libavcodec/dct-test.c
@@ -84,7 +84,11 @@ static const struct algo fdct_tab[] = {
 
 #if HAVE_MMX_INLINE
     { "MMX",            ff_fdct_mmx,           NO_PERM,   AV_CPU_FLAG_MMX     },
+#endif
+#if HAVE_MMXEXT_INLINE
     { "MMXEXT",         ff_fdct_mmxext,        NO_PERM,   AV_CPU_FLAG_MMXEXT  },
+#endif
+#if HAVE_SSE2_INLINE
     { "SSE2",           ff_fdct_sse2,          NO_PERM,   AV_CPU_FLAG_SSE2    },
 #endif
 
@@ -108,7 +112,11 @@ static const struct algo idct_tab[] = {
 #if HAVE_MMX_INLINE
     { "SIMPLE-MMX",     ff_simple_idct_mmx,  MMX_SIMPLE_PERM, AV_CPU_FLAG_MMX },
     { "XVID-MMX",       ff_idct_xvid_mmx,      NO_PERM,   AV_CPU_FLAG_MMX,  1 },
+#endif
+#if HAVE_MMXEXT_INLINE
     { "XVID-MMXEXT",    ff_idct_xvid_mmxext,   NO_PERM,   AV_CPU_FLAG_MMXEXT, 1 },
+#endif
+#if HAVE_SSE2_INLINE
     { "XVID-SSE2",      ff_idct_xvid_sse2,     SSE2_PERM, AV_CPU_FLAG_SSE2, 1 },
 #endif
 
diff --git a/libavcodec/x86/idct_mmx_xvid.c b/libavcodec/x86/idct_mmx_xvid.c
index 7c97b95..2772339 100644
--- a/libavcodec/x86/idct_mmx_xvid.c
+++ b/libavcodec/x86/idct_mmx_xvid.c
@@ -47,7 +47,7 @@
 #include "dsputil_x86.h"
 #include "idct_xvid.h"
 
-#if HAVE_INLINE_ASM
+#if HAVE_MMX_INLINE
 
 //=============================================================================
 // Macros and other preprocessor constants
@@ -507,6 +507,22 @@ __asm__ volatile(
     :: "r"(block), "r"(rounder_0), "r"(tab_i_04_mmx), "r"(tg_1_16));
 }
 
+void ff_idct_xvid_mmx_put(uint8_t *dest, int line_size, int16_t *block)
+{
+    ff_idct_xvid_mmx(block);
+    ff_put_pixels_clamped_mmx(block, dest, line_size);
+}
+
+void ff_idct_xvid_mmx_add(uint8_t *dest, int line_size, int16_t *block)
+{
+    ff_idct_xvid_mmx(block);
+    ff_add_pixels_clamped_mmx(block, dest, line_size);
+}
+
+#endif /* HAVE_MMX_INLINE */
+
+#if HAVE_MMXEXT_INLINE
+
 //-----------------------------------------------------------------------------
 // void idct_xmm(uint16_t block[64]);
 //-----------------------------------------------------------------------------
@@ -531,18 +547,6 @@ __asm__ volatile(
     :: "r"(block), "r"(rounder_0), "r"(tab_i_04_xmm), "r"(tg_1_16));
 }
 
-void ff_idct_xvid_mmx_put(uint8_t *dest, int line_size, int16_t *block)
-{
-    ff_idct_xvid_mmx(block);
-    ff_put_pixels_clamped_mmx(block, dest, line_size);
-}
-
-void ff_idct_xvid_mmx_add(uint8_t *dest, int line_size, int16_t *block)
-{
-    ff_idct_xvid_mmx(block);
-    ff_add_pixels_clamped_mmx(block, dest, line_size);
-}
-
 void ff_idct_xvid_mmxext_put(uint8_t *dest, int line_size, int16_t *block)
 {
     ff_idct_xvid_mmxext(block);
@@ -555,4 +559,4 @@ void ff_idct_xvid_mmxext_add(uint8_t *dest, int line_size, int16_t *block)
     ff_add_pixels_clamped_mmx(block, dest, line_size);
 }
 
-#endif /* HAVE_INLINE_ASM */
+#endif /* HAVE_MMXEXT_INLINE */
diff --git a/libavcodec/x86/idct_sse2_xvid.c b/libavcodec/x86/idct_sse2_xvid.c
index da2c772..50655d6 100644
--- a/libavcodec/x86/idct_sse2_xvid.c
+++ b/libavcodec/x86/idct_sse2_xvid.c
@@ -44,7 +44,7 @@
 #include "idct_xvid.h"
 #include "dsputil_x86.h"
 
-#if HAVE_INLINE_ASM
+#if HAVE_SSE2_INLINE
 
 /**
  * @file
@@ -405,4 +405,4 @@ void ff_idct_xvid_sse2_add(uint8_t *dest, int line_size, short *block)
     ff_add_pixels_clamped_mmx(block, dest, line_size);
 }
 
-#endif /* HAVE_INLINE_ASM */
+#endif /* HAVE_SSE2_INLINE */



More information about the ffmpeg-cvslog mailing list