From 8def029919904af7c83f26dccb3dcbac2018db32 Mon Sep 17 00:00:00 2001 From: Fabrice Bellard Date: Tue, 7 Aug 2001 22:49:50 +0000 Subject: [PATCH] added mmx idct Originally committed as revision 53 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/i386/dsputil_mmx.c | 35 +++++++++-------------------------- 1 file changed, 9 insertions(+), 26 deletions(-) diff --git a/libavcodec/i386/dsputil_mmx.c b/libavcodec/i386/dsputil_mmx.c index d9028cf2b9..92e31ff6d7 100644 --- a/libavcodec/i386/dsputil_mmx.c +++ b/libavcodec/i386/dsputil_mmx.c @@ -29,15 +29,9 @@ int pix_abs16x16_x2_mmx(UINT8 *blk1, UINT8 *blk2, int lx, int h); int pix_abs16x16_y2_mmx(UINT8 *blk1, UINT8 *blk2, int lx, int h); int pix_abs16x16_xy2_mmx(UINT8 *blk1, UINT8 *blk2, int lx, int h); -#ifdef USE_MMX_IDCT -/* external functions, defined in libmpeg2 */ -void mmx_idct(DCTELEM *block); -void mmxext_idct(DCTELEM *block); -/* this should be in dsputil.h? -- A'rpi */ -extern UINT8 ff_alternate_horizontal_scan[64]; -extern UINT8 ff_alternate_vertical_scan[64]; -extern UINT8 zigzag_direct[64]; -#endif +/* external functions, from idct_mmx.c */ +void ff_mmx_idct(DCTELEM *block); +void ff_mmxext_idct(DCTELEM *block); /* pixel operations */ static const unsigned long long int mm_wone __attribute__ ((aligned(8))) = 0x0001000100010001; @@ -1050,22 +1044,11 @@ void dsputil_init_mmx(void) sub_pixels_tab[2] = sub_pixels_y2_3dnow; } -#ifdef USE_MMX_IDCT - /* use MMX / MMXEXT iDCT code from libmpeg2 */ - //printf("LIBAVCODEC: Using MMX%s iDCT code\n",(mm_flags & MM_MMXEXT)?"EXT":""); - ff_idct = (mm_flags & MM_MMXEXT) ? mmxext_idct : mmx_idct; - /* the mmx/mmxext idct uses a reordered input, so we patch scan tables */ - { int i,j; - for (i = 0; i < 64; i++) { - j = zigzag_direct[i]; - zigzag_direct[i] = (j & 0x38) | ((j & 6) >> 1) | ((j & 1) << 2); - j = ff_alternate_horizontal_scan[i]; - ff_alternate_horizontal_scan[i] = (j & 0x38) | ((j & 6) >> 1) | ((j & 1) << 2); - j = ff_alternate_vertical_scan[i]; - ff_alternate_vertical_scan[i] = (j & 0x38) | ((j & 6) >> 1) | ((j & 1) << 2); - } - } -#endif - + /* idct */ + if (mm_flags & MM_MMXEXT) { + ff_idct = ff_mmxext_idct; + } else { + ff_idct = ff_mmx_idct; + } } }