summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiego Biurrun <diego@biurrun.de>2013-09-30 15:25:47 +0200
committerDiego Biurrun <diego@biurrun.de>2013-10-05 18:20:52 +0200
commit258414d0771845d20f646ffe4d4e60f22fba217c (patch)
tree84cf2f4c66b1ab806bdde52398a865b03be6bdf1
parent0b8b2ae5e93d616c2ece59f7175f483154cff918 (diff)
x86: fdct: Initialize optimized fdct implementations in the standard way
-rw-r--r--libavcodec/x86/dsputilenc_mmx.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/libavcodec/x86/dsputilenc_mmx.c b/libavcodec/x86/dsputilenc_mmx.c
index a1852e6678..33c8d51e14 100644
--- a/libavcodec/x86/dsputilenc_mmx.c
+++ b/libavcodec/x86/dsputilenc_mmx.c
@@ -946,6 +946,7 @@ hadamard_func(ssse3)
av_cold void ff_dsputilenc_init_mmx(DSPContext *c, AVCodecContext *avctx)
{
int cpu_flags = av_get_cpu_flags();
+ const int dct_algo = avctx->dct_algo;
#if HAVE_YASM
int bit_depth = avctx->bits_per_raw_sample;
@@ -965,18 +966,9 @@ av_cold void ff_dsputilenc_init_mmx(DSPContext *c, AVCodecContext *avctx)
#if HAVE_INLINE_ASM
if (INLINE_MMX(cpu_flags)) {
- const int dct_algo = avctx->dct_algo;
if (avctx->bits_per_raw_sample <= 8 &&
- (dct_algo==FF_DCT_AUTO || dct_algo==FF_DCT_MMX)) {
- if (cpu_flags & AV_CPU_FLAG_SSE2) {
- c->fdct = ff_fdct_sse2;
- } else if (cpu_flags & AV_CPU_FLAG_MMXEXT) {
- c->fdct = ff_fdct_mmxext;
- }else{
- c->fdct = ff_fdct_mmx;
- }
- }
-
+ (dct_algo == FF_DCT_AUTO || dct_algo == FF_DCT_MMX))
+ c->fdct = ff_fdct_mmx;
c->diff_bytes= diff_bytes_mmx;
c->sum_abs_dctelem= sum_abs_dctelem_mmx;
@@ -1000,6 +992,10 @@ av_cold void ff_dsputilenc_init_mmx(DSPContext *c, AVCodecContext *avctx)
}
if (INLINE_MMXEXT(cpu_flags)) {
+ if (avctx->bits_per_raw_sample <= 8 &&
+ (dct_algo == FF_DCT_AUTO || dct_algo == FF_DCT_MMX))
+ c->fdct = ff_fdct_mmxext;
+
c->sum_abs_dctelem = sum_abs_dctelem_mmxext;
c->vsad[4] = vsad_intra16_mmxext;
@@ -1011,6 +1007,10 @@ av_cold void ff_dsputilenc_init_mmx(DSPContext *c, AVCodecContext *avctx)
}
if (INLINE_SSE2(cpu_flags)) {
+ if (avctx->bits_per_raw_sample <= 8 &&
+ (dct_algo == FF_DCT_AUTO || dct_algo == FF_DCT_MMX))
+ c->fdct = ff_fdct_sse2;
+
c->sum_abs_dctelem= sum_abs_dctelem_sse2;
}