Mercurial > mplayer.hg
diff postproc/swscale.c @ 11122:c552fe6acbaa
rounding fixes
author | michael |
---|---|
date | Wed, 15 Oct 2003 11:21:54 +0000 |
parents | f33f908ae085 |
children | b41af00e8c17 |
line wrap: on
line diff
--- a/postproc/swscale.c Wed Oct 15 00:08:55 2003 +0000 +++ b/postproc/swscale.c Wed Oct 15 11:21:54 2003 +0000 @@ -222,7 +222,7 @@ int i; for(i=0; i<dstW; i++) { - int val=0; + int val=1<<18; int j; for(j=0; j<lumFilterSize; j++) val += lumSrc[j][i] * lumFilter[j]; @@ -233,8 +233,8 @@ if(uDest != NULL) for(i=0; i<chrDstW; i++) { - int u=0; - int v=0; + int u=1<<18; + int v=1<<18; int j; for(j=0; j<chrFilterSize; j++) { @@ -251,10 +251,10 @@ #define YSCALE_YUV_2_PACKEDX_C(type) \ for(i=0; i<(dstW>>1); i++){\ int j;\ - int Y1=0;\ - int Y2=0;\ - int U=0;\ - int V=0;\ + int Y1=1<<18;\ + int Y2=1<<18;\ + int U=1<<18;\ + int V=1<<18;\ type *r, *b, *g;\ const int i2= 2*i;\ \ @@ -621,8 +621,8 @@ int acc=0; for(i=0; i<dstW-1; i+=2){ int j; - int Y1=0; - int Y2=0; + int Y1=1<<18; + int Y2=1<<18; for(j=0; j<lumFilterSize; j++) { @@ -1093,7 +1093,7 @@ scale/= sum; for(j=0; j<*outFilterSize; j++) { - (*outFilter)[i*(*outFilterSize) + j]= (int)(filter[i*filterSize + j]*scale); + (*outFilter)[i*(*outFilterSize) + j]= (int)(filter[i*filterSize + j]*scale + 0.5); } } @@ -1772,6 +1772,7 @@ c->srcFormat= srcFormat; c->origDstFormat= origDstFormat; c->origSrcFormat= origSrcFormat; + c->vRounder= 4* 0x0001000100010001ULL; usesFilter=0; if(dstFilter->lumV!=NULL && dstFilter->lumV->length>1) usesFilter=1;