OSDN Git Service

fixing sinc filter (seems the problem was caused by rounding in pmulhw -> solution...
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 9 Jul 2002 17:01:52 +0000 (17:01 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 9 Jul 2002 17:01:52 +0000 (17:01 +0000)
some typos
some warning fixes

Originally committed as revision 6680 to svn://svn.mplayerhq.hu/mplayer/trunk/postproc

postproc/swscale.c
postproc/swscale_template.c

index 12d5fbc..8f0273a 100644 (file)
@@ -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);
                }
index accbc97..9146102 100644 (file)
                ".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"\