[FFmpeg-cvslog] x86: cavs: call ff_cavsdsp_init_x86() under if (ARCH_X86)

Janne Grunau git at videolan.org
Mon Oct 8 22:03:16 CEST 2012


ffmpeg | branch: master | Janne Grunau <janne-libav at jannau.net> | Sun Oct  7 17:23:54 2012 +0200| [cb36febcbc59d18470361fc27ae834b84be975e3] | committer: Janne Grunau

x86: cavs: call ff_cavsdsp_init_x86() under if (ARCH_X86)

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

 libavcodec/cavsdsp.c     |    3 ++-
 libavcodec/cavsdsp.h     |    2 +-
 libavcodec/x86/Makefile  |    2 +-
 libavcodec/x86/cavsdsp.c |   34 ++++++++++++++++++++++------------
 4 files changed, 26 insertions(+), 15 deletions(-)

diff --git a/libavcodec/cavsdsp.c b/libavcodec/cavsdsp.c
index bdb8d6d..15020a8 100644
--- a/libavcodec/cavsdsp.c
+++ b/libavcodec/cavsdsp.c
@@ -546,5 +546,6 @@ av_cold void ff_cavsdsp_init(CAVSDSPContext* c, AVCodecContext *avctx) {
     c->cavs_idct8_add = cavs_idct8_add_c;
     c->idct_perm = FF_NO_IDCT_PERM;
 
-    if (HAVE_MMX) ff_cavsdsp_init_mmx(c, avctx);
+    if (ARCH_X86)
+        ff_cavsdsp_init_x86(c, avctx);
 }
diff --git a/libavcodec/cavsdsp.h b/libavcodec/cavsdsp.h
index 99b0ea3..fff9c1c 100644
--- a/libavcodec/cavsdsp.h
+++ b/libavcodec/cavsdsp.h
@@ -37,6 +37,6 @@ typedef struct CAVSDSPContext {
 } CAVSDSPContext;
 
 void ff_cavsdsp_init(CAVSDSPContext* c, AVCodecContext *avctx);
-void ff_cavsdsp_init_mmx(CAVSDSPContext* c, AVCodecContext *avctx);
+void ff_cavsdsp_init_x86(CAVSDSPContext* c, AVCodecContext *avctx);
 
 #endif /* AVCODEC_CAVSDSP_H */
diff --git a/libavcodec/x86/Makefile b/libavcodec/x86/Makefile
index d0cfb95..2962d39 100644
--- a/libavcodec/x86/Makefile
+++ b/libavcodec/x86/Makefile
@@ -2,6 +2,7 @@ OBJS                                   += x86/fmtconvert_init.o
 
 OBJS-$(CONFIG_AAC_DECODER)             += x86/sbrdsp_init.o
 OBJS-$(CONFIG_AC3DSP)                  += x86/ac3dsp_init.o
+OBJS-$(CONFIG_CAVS_DECODER)            += x86/cavsdsp.o
 OBJS-$(CONFIG_DNXHD_ENCODER)           += x86/dnxhdenc.o
 OBJS-$(CONFIG_FFT)                     += x86/fft_init.o
 OBJS-$(CONFIG_H264DSP)                 += x86/h264dsp_init.o
@@ -29,7 +30,6 @@ MMX-OBJS                               += x86/dsputil_mmx.o             \
                                           x86/idct_sse2_xvid.o          \
                                           x86/simple_idct.o             \
 
-MMX-OBJS-$(CONFIG_CAVS_DECODER)        += x86/cavsdsp.o
 MMX-OBJS-$(CONFIG_DWT)                 += x86/snowdsp.o
 MMX-OBJS-$(CONFIG_ENCODERS)            += x86/dsputilenc_mmx.o          \
                                           x86/motion_est.o
diff --git a/libavcodec/x86/cavsdsp.c b/libavcodec/x86/cavsdsp.c
index aef74c4..5350f7e 100644
--- a/libavcodec/x86/cavsdsp.c
+++ b/libavcodec/x86/cavsdsp.c
@@ -25,11 +25,13 @@
 #include "libavutil/common.h"
 #include "libavutil/cpu.h"
 #include "libavutil/x86/asm.h"
+#include "libavutil/x86/cpu.h"
 #include "libavcodec/dsputil.h"
 #include "libavcodec/cavsdsp.h"
 #include "dsputil_mmx.h"
+#include "config.h"
 
-#if HAVE_INLINE_ASM
+#if (HAVE_MMXEXT_INLINE || HAVE_AMD3DNOW_INLINE)
 
 /* in/out: mma=mma+mmb, mmb=mmb-mma */
 #define SUMSUB_BA( a, b ) \
@@ -433,15 +435,12 @@ static void ff_ ## OPNAME ## cavs_qpel ## SIZE ## _mc03_ ## MMX(uint8_t *dst, ui
 "pavgb " #temp ", " #a "          \n\t"\
 "mov" #size " " #a ", " #b "      \n\t"
 
-QPEL_CAVS(put_,       PUT_OP, 3dnow)
-QPEL_CAVS(avg_, AVG_3DNOW_OP, 3dnow)
+#endif /* (HAVE_MMXEXT_INLINE || HAVE_AMD3DNOW_INLINE) */
+
+#if HAVE_MMXEXT_INLINE
 QPEL_CAVS(put_,       PUT_OP, mmx2)
 QPEL_CAVS(avg_,  AVG_MMX2_OP, mmx2)
 
-CAVS_MC(put_, 8, 3dnow)
-CAVS_MC(put_, 16,3dnow)
-CAVS_MC(avg_, 8, 3dnow)
-CAVS_MC(avg_, 16,3dnow)
 CAVS_MC(put_, 8, mmx2)
 CAVS_MC(put_, 16,mmx2)
 CAVS_MC(avg_, 8, mmx2)
@@ -463,6 +462,16 @@ static void ff_cavsdsp_init_mmx2(CAVSDSPContext* c, AVCodecContext *avctx) {
     c->cavs_idct8_add = cavs_idct8_add_mmx;
     c->idct_perm = FF_TRANSPOSE_IDCT_PERM;
 }
+#endif /* HAVE_MMXEXT_INLINE */
+
+#if HAVE_AMD3DNOW_INLINE
+QPEL_CAVS(put_,       PUT_OP, 3dnow)
+QPEL_CAVS(avg_, AVG_3DNOW_OP, 3dnow)
+
+CAVS_MC(put_, 8, 3dnow)
+CAVS_MC(put_, 16,3dnow)
+CAVS_MC(avg_, 8, 3dnow)
+CAVS_MC(avg_, 16,3dnow)
 
 static void ff_cavsdsp_init_3dnow(CAVSDSPContext* c, AVCodecContext *avctx) {
 #define dspfunc(PFX, IDX, NUM) \
@@ -480,15 +489,16 @@ static void ff_cavsdsp_init_3dnow(CAVSDSPContext* c, AVCodecContext *avctx) {
     c->cavs_idct8_add = cavs_idct8_add_mmx;
     c->idct_perm = FF_TRANSPOSE_IDCT_PERM;
 }
+#endif /* HAVE_AMD3DNOW_INLINE */
 
-#endif /* HAVE_INLINE_ASM */
-
-void ff_cavsdsp_init_mmx(CAVSDSPContext *c, AVCodecContext *avctx)
+av_cold void ff_cavsdsp_init_x86(CAVSDSPContext *c, AVCodecContext *avctx)
 {
     int mm_flags = av_get_cpu_flags();
 
-#if HAVE_INLINE_ASM
+#if HAVE_MMXEXT_INLINE
     if (mm_flags & AV_CPU_FLAG_MMXEXT) ff_cavsdsp_init_mmx2(c, avctx);
+#endif /* HAVE_MMXEXT_INLINE */
+#if HAVE_AMD3DNOW_INLINE
     if (mm_flags & AV_CPU_FLAG_3DNOW) ff_cavsdsp_init_3dnow(c, avctx);
-#endif /* HAVE_INLINE_ASM */
+#endif /* HAVE_AMD3DNOW_INLINE */
 }



More information about the ffmpeg-cvslog mailing list