summaryrefslogtreecommitdiffstats
path: root/postproc
diff options
context:
space:
mode:
authormichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-06-02 20:54:03 +0000
committermichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-06-02 20:54:03 +0000
commit3f3ef3d48b62dc4b065be2f182ad635b4c083ca4 (patch)
tree6ec0747b4b55700f563fb2569b7b311cf16b4ce0 /postproc
parentc9f8f44dbeb88fad8e45d8565aa7c3ed186ed707 (diff)
downloadmpv-3f3ef3d48b62dc4b065be2f182ad635b4c083ca4.tar.bz2
mpv-3f3ef3d48b62dc4b065be2f182ad635b4c083ca4.tar.xz
one bugfix and a few gcc4 bug workaorunds by (Gianluigi Tiesi: mplayer, netfarm it)
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@15618 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'postproc')
-rw-r--r--postproc/swscale_template.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/postproc/swscale_template.c b/postproc/swscale_template.c
index ee4be2127c..99f756e8b8 100644
--- a/postproc/swscale_template.c
+++ b/postproc/swscale_template.c
@@ -2129,6 +2129,7 @@ static inline void RENAME(hScale)(int16_t *dst, int dstW, uint8_t *src, int srcW
}
else
{
+ uint8_t *offset = src+filterSize;
long counter= -2*dstW;
// filter-= counter*filterSize/2;
filterPos-= counter/2;
@@ -2171,7 +2172,7 @@ static inline void RENAME(hScale)(int16_t *dst, int dstW, uint8_t *src, int srcW
" jnc 1b \n\t"
: "+r" (counter), "+r" (filter)
- : "m" (filterPos), "m" (dst), "m"(src+filterSize),
+ : "m" (filterPos), "m" (dst), "m"(offset),
"m" (src), "r" ((long)filterSize*2)
: "%"REG_b, "%"REG_a, "%"REG_c
);
@@ -2313,6 +2314,8 @@ FUNNY_Y_CODE
else
{
#endif
+ int xInc_shr16 = xInc >> 16;
+ int xInc_mask = xInc & 0xffff;
//NO MMX just normal asm ...
asm volatile(
"xor %%"REG_a", %%"REG_a" \n\t" // i
@@ -2350,7 +2353,7 @@ FUNNY_Y_CODE
" jb 1b \n\t"
- :: "r" (src), "m" (dst), "m" (dstWidth), "m" (xInc>>16), "m" (xInc&0xFFFF)
+ :: "r" (src), "m" (dst), "m" (dstWidth), "m" (xInc_shr16), "m" (xInc_mask)
: "%"REG_a, "%"REG_b, "%ecx", "%"REG_D, "%esi"
);
#ifdef HAVE_MMX2
@@ -2509,6 +2512,8 @@ FUNNY_UV_CODE
else
{
#endif
+ long xInc_shr16 = (long) (xInc >> 16);
+ int xInc_mask = xInc & 0xffff;
asm volatile(
"xor %%"REG_a", %%"REG_a" \n\t" // i
"xor %%"REG_b", %%"REG_b" \n\t" // xx
@@ -2542,7 +2547,7 @@ FUNNY_UV_CODE
"cmp %2, %%"REG_a" \n\t"
" jb 1b \n\t"
- :: "m" (src1), "m" (dst), "m" ((long)dstWidth), "m" ((long)(xInc>>16)), "m" ((xInc&0xFFFF)),
+ :: "m" (src1), "m" (dst), "m" ((long)dstWidth), "m" (xInc_shr16), "m" (xInc_mask),
"r" (src2)
: "%"REG_a, "%"REG_b, "%ecx", "%"REG_D, "%esi"
);