Commit 93768378 authored by Michael Niedermayer's avatar Michael Niedermayer

fixing sinc filter (seems the problem was caused by rounding in pmulhw ->...

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

Originally committed as revision 6680 to svn://svn.mplayerhq.hu/mplayer/trunk/postproc
parent be8ffec9
...@@ -1079,10 +1079,13 @@ static inline void initFilter(int16_t **outFilter, int16_t **filterPos, int *out ...@@ -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_AREA) sizeFactor= 1.0; //downscale only, for upscale it is bilinear
else if(flags&SWS_GAUSS) sizeFactor= 8.0; // infinite ;) 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_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_SPLINE) sizeFactor= 20.0; // infinite ;)
else if(flags&SWS_BILINEAR) sizeFactor= 2.0; 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 if(xInc1 <= 1.0) filterSizeInSrc= sizeFactor; // upscale
else filterSizeInSrc= sizeFactor*srcW / (double)dstW; else filterSizeInSrc= sizeFactor*srcW / (double)dstW;
...@@ -1164,7 +1167,10 @@ static inline void initFilter(int16_t **outFilter, int16_t **filterPos, int *out ...@@ -1164,7 +1167,10 @@ static inline void initFilter(int16_t **outFilter, int16_t **filterPos, int *out
double p=-2.196152422706632; double p=-2.196152422706632;
coeff = getSplineCoeff(1.0, 0.0, p, -p-1.0, d); 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; filter[i*filterSize + j]= coeff;
xx++; xx++;
...@@ -1318,7 +1324,7 @@ static inline void initFilter(int16_t **outFilter, int16_t **filterPos, int *out ...@@ -1318,7 +1324,7 @@ static inline void initFilter(int16_t **outFilter, int16_t **filterPos, int *out
sum+= filter[i*filterSize + j]; sum+= filter[i*filterSize + j];
} }
scale/= sum; scale/= sum;
for(j=0; j<filterSize; j++) 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);
} }
......
...@@ -112,8 +112,8 @@ ...@@ -112,8 +112,8 @@
".balign 16 \n\t"\ ".balign 16 \n\t"\
"1: \n\t"\ "1: \n\t"\
"movl %1, %%edx \n\t" /* -chrFilterSize */\ "movl %1, %%edx \n\t" /* -chrFilterSize */\
"movl %3, %%ebx \n\t" /* chrMmxFilter+lumFilterSize */\ "movl %3, %%ebx \n\t" /* chrMmxFilter+chrFilterSize */\
"movl %7, %%ecx \n\t" /* chrSrc+lumFilterSize */\ "movl %7, %%ecx \n\t" /* chrSrc+chrFilterSize */\
"pxor %%mm3, %%mm3 \n\t"\ "pxor %%mm3, %%mm3 \n\t"\
"pxor %%mm4, %%mm4 \n\t"\ "pxor %%mm4, %%mm4 \n\t"\
"2: \n\t"\ "2: \n\t"\
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment