changeset 2062:37ca6f8677de libavcodec

cubic filter instead of truncated sinc looks much better for upscaling & scaling where src and dst size are quite similar
author michael
date Sun, 06 Jun 2004 13:46:50 +0000
parents c28b03fea50f
children 99556d33f102
files imgresample.c
diffstat 1 files changed, 7 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/imgresample.c	Sun Jun 06 03:52:42 2004 +0000
+++ b/imgresample.c	Sun Jun 06 13:46:50 2004 +0000
@@ -554,12 +554,18 @@
     for(ph=0;ph<NB_PHASES;ph++) {
         norm = 0;
         for(i=0;i<NB_TAPS;i++) {
-            
+#if 1
+            const float d= -0.5; //first order derivative = -0.5
+            x = fabs(((float)(i - FCENTER) - (float)ph / NB_PHASES) * factor);
+            if(x<1.0) y= 1 - 3*x*x + 2*x*x*x + d*(            -x*x + x*x*x);
+            else      y=                       d*(-4 + 8*x - 5*x*x + x*x*x);
+#else
             x = M_PI * ((float)(i - FCENTER) - (float)ph / NB_PHASES) * factor;
             if (x == 0)
                 y = 1.0;
             else
                 y = sin(x) / x;
+#endif
             tab[i] = y;
             norm += y;
         }