summaryrefslogtreecommitdiff
path: root/libavcodec/x86
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-10-15 02:05:11 +0200
committerMichael Niedermayer <michaelni@gmx.at>2013-10-15 02:06:12 +0200
commitc35d29a9c8240b81f8b7e089356b30bb26f034b9 (patch)
treeaba144e063f76e2da94f2c8bfd1066a47227d51e /libavcodec/x86
parentab8cbfe0dd7759b74ded030bb3a704ab5e7603ad (diff)
avcodec/x86/dsputil_init: move ff_idct_xvid_mmxext init
This decreases the diff to libav Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/x86')
-rw-r--r--libavcodec/x86/dsputil_init.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/libavcodec/x86/dsputil_init.c b/libavcodec/x86/dsputil_init.c
index 6377c6c298..2516f2a722 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 */