# HG changeset patch # User michael # Date 1004881820 0 # Node ID e8a5345095575fdf0cdf57aab73eb20435660b65 # Parent ae59ad941b42cb6b43e14f2fc287a199c70c2d40 green line fix for dstw%8!=0 diff -r ae59ad941b42 -r e8a534509557 postproc/swscale.c --- a/postproc/swscale.c Sun Nov 04 13:37:23 2001 +0000 +++ b/postproc/swscale.c Sun Nov 04 13:50:20 2001 +0000 @@ -11,6 +11,7 @@ #include "swscale.h" #include "../mmx_defs.h" #undef MOVNTQ +#undef PAVGB //#undef HAVE_MMX2 //#undef HAVE_MMX @@ -1399,10 +1400,15 @@ static int old_s_xinc= -1; #endif -int srcWidth= (dstw*s_xinc + 0x8000)>>16; -int dstUVw= fullUVIpol ? dstw : dstw/2; +int srcWidth; +int dstUVw; int i; +if(((dstw + 7)&(~7)) >= dststride) dstw&= ~7; + +srcWidth= (dstw*s_xinc + 0x8000)>>16; +dstUVw= fullUVIpol ? dstw : dstw/2; + #ifdef HAVE_MMX2 canMMX2BeUsed= (s_xinc <= 0x10000 && (dstw&31)==0 && (srcWidth&15)==0) ? 1 : 0; #endif @@ -1420,6 +1426,7 @@ // force calculation of the horizontal interpolation of the first line if(y==0){ +// printf("dstw %d, srcw %d, mmx2 %d\n", dstw, srcWidth, canMMX2BeUsed); s_last_ypos=-99; s_last_y1pos=-99; s_srcypos= s_yinc/2 - 0x8000; @@ -1429,9 +1436,9 @@ for(i=dstw-2; i>16; -int dstUVw= fullUVIpol ? dstw : dstw/2; +int srcWidth; +int dstUVw; int i; +if(((dstw + 7)&(~7)) >= dststride) dstw&= ~7; + +srcWidth= (dstw*s_xinc + 0x8000)>>16; +dstUVw= fullUVIpol ? dstw : dstw/2; + #ifdef HAVE_MMX2 canMMX2BeUsed= (s_xinc <= 0x10000 && (dstw&31)==0 && (srcWidth&15)==0) ? 1 : 0; #endif @@ -1420,6 +1426,7 @@ // force calculation of the horizontal interpolation of the first line if(y==0){ +// printf("dstw %d, srcw %d, mmx2 %d\n", dstw, srcWidth, canMMX2BeUsed); s_last_ypos=-99; s_last_y1pos=-99; s_srcypos= s_yinc/2 - 0x8000; @@ -1429,9 +1436,9 @@ for(i=dstw-2; i