[FFmpeg-cvslog] avcodec/x86/dsputil_init: move ff_idct_xvid_mmxext init

Michael Niedermayer git at videolan.org
Tue Oct 15 09:33:10 CEST 2013


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Tue Oct 15 02:05:11 2013 +0200| [c35d29a9c8240b81f8b7e089356b30bb26f034b9] | committer: Michael Niedermayer

avcodec/x86/dsputil_init: move ff_idct_xvid_mmxext init

This decreases the diff to libav

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

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

 libavcodec/x86/dsputil_init.c |   22 +++++++++++++---------
 1 file changed, 13 insertions(+), 9 deletions(-)

diff --git a/libavcodec/x86/dsputil_init.c b/libavcodec/x86/dsputil_init.c
index 6377c6c..2516f2a 100644
--- a/libavcodec/x86/dsputil_init.c
+++ b/libavcodec/x86/dsputil_init.c
@@ -568,6 +568,16 @@ static av_cold void dsputil_init_mmx(DSPContext *c, AVCodecContext *avctx,
 static av_cold void dsputil_init_mmxext(DSPContext *c, AVCodecContext *avctx,
                                         int cpu_flags)
 {
+#if HAVE_MMXEXT_INLINE
+    const int high_bit_depth = avctx->bits_per_raw_sample > 8;
+
+    if (!high_bit_depth && avctx->idct_algo == FF_IDCT_XVIDMMX && avctx->lowres == 0) {
+        c->idct_put = ff_idct_xvid_mmxext_put;
+        c->idct_add = ff_idct_xvid_mmxext_add;
+        c->idct     = ff_idct_xvid_mmxext;
+    }
+#endif /* HAVE_MMXEXT_INLINE */
+
 #if HAVE_MMXEXT_EXTERNAL
     SET_QPEL_FUNCS(avg_qpel,        0, 16, mmxext, );
     SET_QPEL_FUNCS(avg_qpel,        1,  8, mmxext, );
@@ -693,15 +703,9 @@ av_cold void ff_dsputil_init_x86(DSPContext *c, AVCodecContext *avctx)
                 c->idct                  = ff_simple_idct_mmx;
                 c->idct_permutation_type = FF_SIMPLE_IDCT_PERM;
             } else if (idct_algo == FF_IDCT_XVIDMMX) {
-                if (X86_MMXEXT(cpu_flags)) {
-                    c->idct_put              = ff_idct_xvid_mmxext_put;
-                    c->idct_add              = ff_idct_xvid_mmxext_add;
-                    c->idct                  = ff_idct_xvid_mmxext;
-                } else {
-                    c->idct_put              = ff_idct_xvid_mmx_put;
-                    c->idct_add              = ff_idct_xvid_mmx_add;
-                    c->idct                  = ff_idct_xvid_mmx;
-                }
+                c->idct_put              = ff_idct_xvid_mmx_put;
+                c->idct_add              = ff_idct_xvid_mmx_add;
+                c->idct                  = ff_idct_xvid_mmx;
             }
         }
 #endif /* HAVE_INLINE_ASM */



More information about the ffmpeg-cvslog mailing list