summaryrefslogtreecommitdiffstats
path: root/libswscale
diff options
context:
space:
mode:
authorramiro <ramiro@b3059339-0415-0410-9bf9-f77b7e298cf2>2009-07-28 05:41:22 +0000
committerramiro <ramiro@b3059339-0415-0410-9bf9-f77b7e298cf2>2009-07-28 05:41:22 +0000
commit7b6fecc8b3f143d8731f7b0cb5fdc3a9dc22b533 (patch)
treec2f0c93ea7b767f6d73ad2e5722c1dd9d327ee8e /libswscale
parente0af29f2c3f93d424c0982d7f64101dd416d4ed8 (diff)
downloadmpv-7b6fecc8b3f143d8731f7b0cb5fdc3a9dc22b533.tar.bz2
mpv-7b6fecc8b3f143d8731f7b0cb5fdc3a9dc22b533.tar.xz
MMX2 scaler: add variable to ease factorization of initMMX2Scaler().
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29452 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libswscale')
-rw-r--r--libswscale/swscale.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/libswscale/swscale.c b/libswscale/swscale.c
index 6a85a52f35..ab8c6759c9 100644
--- a/libswscale/swscale.c
+++ b/libswscale/swscale.c
@@ -1888,6 +1888,7 @@ static void initMMX2HScaler(int dstW, int xInc, uint8_t *funnyCode, int16_t *fil
int b=((xpos+xInc)>>16) - xx;
int c=((xpos+xInc*2)>>16) - xx;
int d=((xpos+xInc*3)>>16) - xx;
+ int inc = (d+1<4);
filter[i ] = (( xpos & 0xFFFF) ^ 0xFFFF)>>9;
filter[i+1] = (((xpos+xInc ) & 0xFFFF) ^ 0xFFFF)>>9;
@@ -1897,17 +1898,17 @@ static void initMMX2HScaler(int dstW, int xInc, uint8_t *funnyCode, int16_t *fil
if (d+1<4)
{
- int maxShift= 3-(d+1);
+ int maxShift= 3-(d+inc);
int shift=0;
memcpy(funnyCode + fragmentPos, fragmentB, fragmentLengthB);
funnyCode[fragmentPos + imm8OfPShufW1B]=
- (a+1) | ((b+1)<<2) | ((c+1)<<4) | ((d+1)<<6);
+ (a+inc) | ((b+inc)<<2) | ((c+inc)<<4) | ((d+inc)<<6);
funnyCode[fragmentPos + imm8OfPShufW2B]=
a | (b<<2) | (c<<4) | (d<<6);
- if (i+3>=dstW) shift=maxShift; //avoid overread
+ if (i+4-inc>=dstW) shift=maxShift; //avoid overread
else if ((filterPos[i/2]&3) <= maxShift) shift=filterPos[i/2]&3; //Align
if (shift && i>=shift)