summaryrefslogtreecommitdiffstats
path: root/libswscale/swscale_template.c
diff options
context:
space:
mode:
authormichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2008-07-17 23:35:36 +0000
committermichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2008-07-17 23:35:36 +0000
commite96aa16d0c69b25c64efd22a0ba8de4dcb390a8b (patch)
tree9009c01a0d6239bfe5f08b673f1d0068453bfc27 /libswscale/swscale_template.c
parentf45acd080b7cb044bde792a2893450d1ded6f4b4 (diff)
downloadmpv-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/swscale_template.c')
-rw-r--r--libswscale/swscale_template.c23
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++)