summaryrefslogtreecommitdiffstats
path: root/postproc
diff options
context:
space:
mode:
authormichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-07-09 17:01:52 +0000
committermichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-07-09 17:01:52 +0000
commit154dc921d3e96014bbb48960c14ddfe29be7828f (patch)
tree03e22e7d749eb576aa5094020f8953d10c86a604 /postproc
parent65f5523fdcf33951c8739f8d858d9d91bb73a5ec (diff)
downloadmpv-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')
-rw-r--r--postproc/swscale.c14
-rw-r--r--postproc/swscale_template.c4
2 files changed, 12 insertions, 6 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);
}
diff --git a/postproc/swscale_template.c b/postproc/swscale_template.c
index accbc9710e..91461027ee 100644
--- a/postproc/swscale_template.c
+++ b/postproc/swscale_template.c
@@ -112,8 +112,8 @@
".balign 16 \n\t"\
"1: \n\t"\
"movl %1, %%edx \n\t" /* -chrFilterSize */\
- "movl %3, %%ebx \n\t" /* chrMmxFilter+lumFilterSize */\
- "movl %7, %%ecx \n\t" /* chrSrc+lumFilterSize */\
+ "movl %3, %%ebx \n\t" /* chrMmxFilter+chrFilterSize */\
+ "movl %7, %%ecx \n\t" /* chrSrc+chrFilterSize */\
"pxor %%mm3, %%mm3 \n\t"\
"pxor %%mm4, %%mm4 \n\t"\
"2: \n\t"\