From e96aa16d0c69b25c64efd22a0ba8de4dcb390a8b Mon Sep 17 00:00:00 2001 From: michael Date: Thu, 17 Jul 2008 23:35:36 +0000 Subject: simplify yuv2yuv1() git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27320 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libswscale/swscale_template.c | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) (limited to 'libswscale/swscale_template.c') diff --git a/libswscale/swscale_template.c b/libswscale/swscale_template.c index 893f346074..ee3c96836b 100644 --- a/libswscale/swscale_template.c +++ b/libswscale/swscale_template.c @@ -973,29 +973,20 @@ static inline void RENAME(yuv2yuv1)(int16_t *lumSrc, int16_t *chrSrc, uint8_t *dest, uint8_t *uDest, uint8_t *vDest, long dstW, long chrDstW) { #ifdef HAVE_MMX - if (uDest) - { - asm volatile( - YSCALEYUV2YV121 - :: "r" (chrSrc + chrDstW), "r" (uDest + chrDstW), - "g" (-chrDstW) - : "%"REG_a - ); + long p= uDest ? 3 : 1; + uint8_t *src[3]= {lumSrc + dstW, chrSrc + chrDstW, chrSrc + VOFW + chrDstW}; + uint8_t *dst[3]= {dest, uDest, vDest}; + long counter[3] = {dstW, chrDstW, chrDstW}; + while(p--){ asm volatile( YSCALEYUV2YV121 - :: "r" (chrSrc + VOFW + chrDstW), "r" (vDest + chrDstW), - "g" (-chrDstW) + :: "r" (src[p]), "r" (dst[p] + counter[p]), + "g" (-counter[p]) : "%"REG_a ); } - asm volatile( - YSCALEYUV2YV121 - :: "r" (lumSrc + dstW), "r" (dest + dstW), - "g" (-dstW) - : "%"REG_a - ); #else int i; for (i=0; i