# HG changeset patch # User michael # Date 1216337736 0 # Node ID 37014889f212c3610a1726070f20e256d7a27b6a # Parent 910e475d3a2fc4c5d34d9d8b313f3a3ec0d4b097 simplify yuv2yuv1() diff -r 910e475d3a2f -r 37014889f212 libswscale/swscale_template.c --- a/libswscale/swscale_template.c Thu Jul 17 22:38:26 2008 +0000 +++ b/libswscale/swscale_template.c Thu Jul 17 23:35:36 2008 +0000 @@ -973,29 +973,20 @@ uint8_t *dest, uint8_t *uDest, uint8_t *vDest, long dstW, long chrDstW) { #ifdef HAVE_MMX - if (uDest) - { + 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 + chrDstW), "r" (uDest + chrDstW), - "g" (-chrDstW) - : "%"REG_a - ); - - 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