diff options
author | michael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2008-07-17 23:35:36 +0000 |
---|---|---|
committer | michael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2008-07-17 23:35:36 +0000 |
commit | e96aa16d0c69b25c64efd22a0ba8de4dcb390a8b (patch) | |
tree | 9009c01a0d6239bfe5f08b673f1d0068453bfc27 /libswscale | |
parent | f45acd080b7cb044bde792a2893450d1ded6f4b4 (diff) | |
download | mpv-e96aa16d0c69b25c64efd22a0ba8de4dcb390a8b.tar.bz2 mpv-e96aa16d0c69b25c64efd22a0ba8de4dcb390a8b.tar.xz |
simplify yuv2yuv1()
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27320 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libswscale')
-rw-r--r-- | libswscale/swscale_template.c | 23 |
1 files changed, 7 insertions, 16 deletions
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<dstW; i++) |