diff options
author | Diego Biurrun <diego@biurrun.de> | 2013-09-30 15:25:47 +0200 |
---|---|---|
committer | Diego Biurrun <diego@biurrun.de> | 2013-10-05 18:20:52 +0200 |
commit | 258414d0771845d20f646ffe4d4e60f22fba217c (patch) | |
tree | 84cf2f4c66b1ab806bdde52398a865b03be6bdf1 | |
parent | 0b8b2ae5e93d616c2ece59f7175f483154cff918 (diff) | |
download | ffmpeg-258414d0771845d20f646ffe4d4e60f22fba217c.tar.gz |
x86: fdct: Initialize optimized fdct implementations in the standard way
-rw-r--r-- | libavcodec/x86/dsputilenc_mmx.c | 22 |
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; } |