summaryrefslogtreecommitdiff
path: root/libavcodec/i386
diff options
context:
space:
mode:
Diffstat (limited to 'libavcodec/i386')
-rw-r--r--libavcodec/i386/dsputil_mmx.c2
-rw-r--r--libavcodec/i386/mpegvideo_mmx.c13
-rw-r--r--libavcodec/i386/mpegvideo_mmx_template.c3
3 files changed, 11 insertions, 7 deletions
diff --git a/libavcodec/i386/dsputil_mmx.c b/libavcodec/i386/dsputil_mmx.c
index 02558604bc..f1bace79dd 100644
--- a/libavcodec/i386/dsputil_mmx.c
+++ b/libavcodec/i386/dsputil_mmx.c
@@ -424,8 +424,6 @@ void dsputil_init_mmx(void)
pix_abs8x8_y2 = pix_abs8x8_y2_mmx;
pix_abs8x8_xy2= pix_abs8x8_xy2_mmx;
- av_fdct = fdct_mmx;
-
put_pixels_tab[0] = put_pixels_mmx;
put_pixels_tab[1] = put_pixels_x2_mmx;
put_pixels_tab[2] = put_pixels_y2_mmx;
diff --git a/libavcodec/i386/mpegvideo_mmx.c b/libavcodec/i386/mpegvideo_mmx.c
index fceccf7bd2..10efc173f3 100644
--- a/libavcodec/i386/mpegvideo_mmx.c
+++ b/libavcodec/i386/mpegvideo_mmx.c
@@ -552,16 +552,21 @@ void unused_var_warning_killer(){
void MPV_common_init_mmx(MpegEncContext *s)
{
if (mm_flags & MM_MMX) {
+ const int dct_algo= s->avctx->dct_algo;
s->dct_unquantize_h263 = dct_unquantize_h263_mmx;
s->dct_unquantize_mpeg1 = dct_unquantize_mpeg1_mmx;
s->dct_unquantize_mpeg2 = dct_unquantize_mpeg2_mmx;
draw_edges = draw_edges_mmx;
- if(mm_flags & MM_MMXEXT){
- dct_quantize= dct_quantize_MMX2;
- } else {
- dct_quantize= dct_quantize_MMX;
+ if(dct_algo==FF_DCT_AUTO || dct_algo==FF_DCT_MMX){
+ s->fdct = fdct_mmx;
+
+ if(mm_flags & MM_MMXEXT){
+ s->dct_quantize= dct_quantize_MMX2;
+ } else {
+ s->dct_quantize= dct_quantize_MMX;
+ }
}
}
}
diff --git a/libavcodec/i386/mpegvideo_mmx_template.c b/libavcodec/i386/mpegvideo_mmx_template.c
index d84f253013..6c3e52ea5f 100644
--- a/libavcodec/i386/mpegvideo_mmx_template.c
+++ b/libavcodec/i386/mpegvideo_mmx_template.c
@@ -40,7 +40,8 @@ static int RENAME(dct_quantize)(MpegEncContext *s,
const UINT16 *qmat, *bias;
static __align8 INT16 temp_block[64];
- av_fdct (block);
+ //s->fdct (block);
+ fdct_mmx (block); //cant be anything else ...
if (s->mb_intra) {
int dummy;