diff options
-rw-r--r-- | src/video_out/yuv2rgb_mmx.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/video_out/yuv2rgb_mmx.c b/src/video_out/yuv2rgb_mmx.c index 2a164528c..7cbebf8c1 100644 --- a/src/video_out/yuv2rgb_mmx.c +++ b/src/video_out/yuv2rgb_mmx.c @@ -776,48 +776,56 @@ static void mmxext_rgb15 (yuv2rgb_t *this, uint8_t * image, uint8_t * py, uint8_t * pu, uint8_t * pv) { yuv420_rgb15 (this, image, py, pu, pv, CPU_MMXEXT); + emms(); /* re-initialize x86 FPU after MMX use */ } static void mmxext_rgb16 (yuv2rgb_t *this, uint8_t * image, uint8_t * py, uint8_t * pu, uint8_t * pv) { yuv420_rgb16 (this, image, py, pu, pv, CPU_MMXEXT); + emms(); /* re-initialize x86 FPU after MMX use */ } static void mmxext_rgb24 (yuv2rgb_t *this, uint8_t * image, uint8_t * py, uint8_t * pu, uint8_t * pv) { yuv420_rgb24 (this, image, py, pu, pv, CPU_MMXEXT); + emms(); /* re-initialize x86 FPU after MMX use */ } static void mmxext_argb32 (yuv2rgb_t *this, uint8_t * image, uint8_t * py, uint8_t * pu, uint8_t * pv) { yuv420_argb32 (this, image, py, pu, pv, CPU_MMXEXT); + emms(); /* re-initialize x86 FPU after MMX use */ } static void mmx_rgb15 (yuv2rgb_t *this, uint8_t * image, uint8_t * py, uint8_t * pu, uint8_t * pv) { yuv420_rgb15 (this, image, py, pu, pv, CPU_MMX); + emms(); /* re-initialize x86 FPU after MMX use */ } static void mmx_rgb16 (yuv2rgb_t *this, uint8_t * image, uint8_t * py, uint8_t * pu, uint8_t * pv) { yuv420_rgb16 (this, image, py, pu, pv, CPU_MMX); + emms(); /* re-initialize x86 FPU after MMX use */ } static void mmx_rgb24 (yuv2rgb_t *this, uint8_t * image, uint8_t * py, uint8_t * pu, uint8_t * pv) { yuv420_rgb24 (this, image, py, pu, pv, CPU_MMX); + emms(); /* re-initialize x86 FPU after MMX use */ } static void mmx_argb32 (yuv2rgb_t *this, uint8_t * image, uint8_t * py, uint8_t * pu, uint8_t * pv) { yuv420_argb32 (this, image, py, pu, pv, CPU_MMX); + emms(); /* re-initialize x86 FPU after MMX use */ } void yuv2rgb_init_mmxext (yuv2rgb_t *this, int mode) |