diff options
author | michael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-07-09 17:01:52 +0000 |
---|---|---|
committer | michael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-07-09 17:01:52 +0000 |
commit | 154dc921d3e96014bbb48960c14ddfe29be7828f (patch) | |
tree | 03e22e7d749eb576aa5094020f8953d10c86a604 /postproc/swscale.c | |
parent | 65f5523fdcf33951c8739f8d858d9d91bb73a5ec (diff) | |
download | mpv-154dc921d3e96014bbb48960c14ddfe29be7828f.tar.bz2 mpv-154dc921d3e96014bbb48960c14ddfe29be7828f.tar.xz |
fixing sinc filter (seems the problem was caused by rounding in pmulhw -> solution use shorter filter, its long and slow enough anyway)
some typos
some warning fixes
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@6680 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'postproc/swscale.c')
-rw-r--r-- | postproc/swscale.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/postproc/swscale.c b/postproc/swscale.c index 12d5fbc10d..8f0273aa0d 100644 --- a/postproc/swscale.c +++ b/postproc/swscale.c @@ -1079,10 +1079,13 @@ static inline void initFilter(int16_t **outFilter, int16_t **filterPos, int *out else if(flags&SWS_AREA) sizeFactor= 1.0; //downscale only, for upscale it is bilinear else if(flags&SWS_GAUSS) sizeFactor= 8.0; // infinite ;) else if(flags&SWS_LANCZOS) sizeFactor= param ? 2.0*param : 6.0; - else if(flags&SWS_SINC) sizeFactor= 100.0; // infinite ;) + else if(flags&SWS_SINC) sizeFactor= 20.0; // infinite ;) else if(flags&SWS_SPLINE) sizeFactor= 20.0; // infinite ;) else if(flags&SWS_BILINEAR) sizeFactor= 2.0; - else ASSERT(0) + else { + sizeFactor= 0.0; //GCC warning killer + ASSERT(0) + } if(xInc1 <= 1.0) filterSizeInSrc= sizeFactor; // upscale else filterSizeInSrc= sizeFactor*srcW / (double)dstW; @@ -1164,7 +1167,10 @@ static inline void initFilter(int16_t **outFilter, int16_t **filterPos, int *out double p=-2.196152422706632; coeff = getSplineCoeff(1.0, 0.0, p, -p-1.0, d); } - else ASSERT(0) + else { + coeff= 0.0; //GCC warning killer + ASSERT(0) + } filter[i*filterSize + j]= coeff; xx++; @@ -1318,7 +1324,7 @@ static inline void initFilter(int16_t **outFilter, int16_t **filterPos, int *out sum+= filter[i*filterSize + j]; } scale/= sum; - for(j=0; j<filterSize; j++) + for(j=0; j<*outFilterSize; j++) { (*outFilter)[i*(*outFilterSize) + j]= (int)(filter[i*filterSize + j]*scale); } |