diff options
author | michael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2003-10-15 11:21:54 +0000 |
---|---|---|
committer | michael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2003-10-15 11:21:54 +0000 |
commit | f9bb7a21e57d481ddeea4d27919ac37c7ea32bd1 (patch) | |
tree | d054bc1f671901f89b5a5e79dc5a46c2b6210bfb /postproc/swscale.c | |
parent | d8a1591ba4755749ca7196f9fcb00341832857cd (diff) | |
download | mpv-f9bb7a21e57d481ddeea4d27919ac37c7ea32bd1.tar.bz2 mpv-f9bb7a21e57d481ddeea4d27919ac37c7ea32bd1.tar.xz |
rounding fixes
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@11123 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'postproc/swscale.c')
-rw-r--r-- | postproc/swscale.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/postproc/swscale.c b/postproc/swscale.c index 1685c69b5e..e911a6467d 100644 --- a/postproc/swscale.c +++ b/postproc/swscale.c @@ -222,7 +222,7 @@ static inline void yuv2yuvXinC(int16_t *lumFilter, int16_t **lumSrc, int lumFilt 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 @@ static inline void yuv2yuvXinC(int16_t *lumFilter, int16_t **lumSrc, int lumFilt 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 @@ static inline void yuv2yuvXinC(int16_t *lumFilter, int16_t **lumSrc, int lumFilt #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 @@ static inline void yuv2packedXinC(SwsContext *c, int16_t *lumFilter, int16_t **l 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 @@ static inline void initFilter(int16_t **outFilter, int16_t **filterPos, int *out 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 @@ SwsContext *sws_getContext(int srcW, int srcH, int origSrcFormat, int dstW, int 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; |