Originally committed as revision 12 to svn://svn.ffmpeg.org/ffmpeg/trunktags/v0.5
| @@ -21,10 +21,6 @@ | |||||
| #include "avcodec.h" | #include "avcodec.h" | ||||
| #include "dsputil.h" | #include "dsputil.h" | ||||
| #ifdef HAVE_MMX | |||||
| int mm_flags; /* multimedia extension flags */ | |||||
| #endif | |||||
| void (*get_pixels)(DCTELEM *block, const UINT8 *pixels, int line_size); | void (*get_pixels)(DCTELEM *block, const UINT8 *pixels, int line_size); | ||||
| void (*put_pixels_clamped)(const DCTELEM *block, UINT8 *pixels, int line_size); | void (*put_pixels_clamped)(const DCTELEM *block, UINT8 *pixels, int line_size); | ||||
| void (*add_pixels_clamped)(const DCTELEM *block, UINT8 *pixels, int line_size); | void (*add_pixels_clamped)(const DCTELEM *block, UINT8 *pixels, int line_size); | ||||
| @@ -75,7 +75,13 @@ int mm_support(void); | |||||
| static inline void emms(void) | static inline void emms(void) | ||||
| { | { | ||||
| asm volatile ("emms;"); | |||||
| __asm __volatile ("emms;":::"memory"); | |||||
| } | |||||
| #define emms_c() \ | |||||
| {\ | |||||
| if (mm_flags & MM_MMX)\ | |||||
| emms();\ | |||||
| } | } | ||||
| #define __align8 __attribute__ ((aligned (8))) | #define __align8 __attribute__ ((aligned (8))) | ||||
| @@ -84,6 +90,8 @@ void dsputil_init_mmx(void); | |||||
| #else | #else | ||||
| #define emms_c() | |||||
| #define __align8 | #define __align8 | ||||
| #endif | #endif | ||||
| @@ -434,10 +434,7 @@ int estimate_motion(MpegEncContext * s, | |||||
| dmin = phods_motion_search(s, &mx, &my, range / 2, xmin, ymin, xmax, ymax); | dmin = phods_motion_search(s, &mx, &my, range / 2, xmin, ymin, xmax, ymax); | ||||
| break; | break; | ||||
| } | } | ||||
| #ifdef HAVE_MMX | |||||
| if (mm_flags & MM_MMX) | |||||
| emms(); | |||||
| #endif | |||||
| emms_c(); | |||||
| /* intra / predictive decision */ | /* intra / predictive decision */ | ||||
| xx = mb_x * 16; | xx = mb_x * 16; | ||||