Mercurial > mplayer.hg
changeset 2680:e8a534509557
green line fix for dstw%8!=0
author | michael |
---|---|
date | Sun, 04 Nov 2001 13:50:20 +0000 |
parents | ae59ad941b42 |
children | 7f0862258f4b |
files | postproc/swscale.c postproc/swscale_template.c |
diffstat | 2 files changed, 22 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- 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<dstw+20; i++) { pix_buf_uv[0][i] = pix_buf_uv[1][i] - = pix_buf_uv[0][2048+i] = pix_buf_uv[1][2048+i] = 128; + = pix_buf_uv[0][2048+i] = pix_buf_uv[1][2048+i] = 128*128; pix_buf_uv[0][i/2] = pix_buf_uv[1][i/2] - = pix_buf_uv[0][2048+i/2] = pix_buf_uv[1][2048+i/2] = 128; + = pix_buf_uv[0][2048+i/2] = pix_buf_uv[1][2048+i/2] = 128*128; pix_buf_y[0][i]= pix_buf_y[1][i]= 0; }
--- a/postproc/swscale_template.c Sun Nov 04 13:37:23 2001 +0000 +++ b/postproc/swscale_template.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<dstw+20; i++) { pix_buf_uv[0][i] = pix_buf_uv[1][i] - = pix_buf_uv[0][2048+i] = pix_buf_uv[1][2048+i] = 128; + = pix_buf_uv[0][2048+i] = pix_buf_uv[1][2048+i] = 128*128; pix_buf_uv[0][i/2] = pix_buf_uv[1][i/2] - = pix_buf_uv[0][2048+i/2] = pix_buf_uv[1][2048+i/2] = 128; + = pix_buf_uv[0][2048+i/2] = pix_buf_uv[1][2048+i/2] = 128*128; pix_buf_y[0][i]= pix_buf_y[1][i]= 0; }