[Mplayer-cvslog] CVS: main/postproc swscale.c,1.60,1.61 swscale.h,1.11,1.12

Johannes Feigl jaf.corporation1 at gmx.net
Tue Jan 29 07:50:45 CET 2002


*This message was transferred with a trial version of CommuniGate(tm) Pro*
well, what has now the beste quality?`

mfg Johannes


----- Original Message -----
From: "Michael Niedermayer" <michael at mplayer.dev.hu>
To: <mplayer-cvslog at mplayer.dev.hu>
Sent: Tuesday, January 29, 2002 2:43 AM
Subject: [Mplayer-cvslog] CVS: main/postproc swscale.c,1.60,1.61
swscale.h,1.11,1.12


> *This message was transferred with a trial version of CommuniGate(tm) Pro*
> Update of /cvsroot/mplayer/main/postproc
> In directory mplayer:/var/tmp.root/cvs-serv5980
>
> Modified Files:
> swscale.c swscale.h
> Log Message:
> area averageing scaling support (-sws 5) (is identical to bilinear for
upscale)
>
>
> Index: swscale.c
> ===================================================================
> RCS file: /cvsroot/mplayer/main/postproc/swscale.c,v
> retrieving revision 1.60
> retrieving revision 1.61
> diff -u -r1.60 -r1.61
> --- swscale.c 28 Jan 2002 23:57:18 -0000 1.60
> +++ swscale.c 29 Jan 2002 01:43:15 -0000 1.61
> @@ -604,6 +604,7 @@
>   case 2: flags|= SWS_BICUBIC; break;
>   case 3: flags|= SWS_X; break;
>   case 4: flags|= SWS_POINT; break;
> + case 5: flags|= SWS_AREA; break;
>   default:flags|= SWS_BILINEAR; break;
>   }
>
> @@ -666,7 +667,7 @@
>   int xDstInSrc;
>   if     (flags&SWS_BICUBIC) filterSize= 4;
>   else if(flags&SWS_X      ) filterSize= 4;
> - else    filterSize= 2;
> + else    filterSize= 2; // SWS_BILINEAR / SWS_AREA
>  // printf("%d %d %d\n", filterSize, srcW, dstW);
>   filter= (double*)memalign(8, dstW*sizeof(double)*filterSize);
>
> @@ -705,6 +706,7 @@
>   }
>   else
>   {
> + file://Bilinear upscale / linear interpolate / Area averaging
>   for(j=0; j<filterSize; j++)
>   {
>   double d= ABS((xx<<16) - xDstInSrc)/(double)(1<<16);
> @@ -721,9 +723,10 @@
>   else // downscale
>   {
>   int xDstInSrc;
> - if(flags&SWS_BICUBIC) filterSize= (int)ceil(1 + 4.0*srcW /
(double)dstW);
> - else if(flags&SWS_X)  filterSize= (int)ceil(1 + 4.0*srcW /
(double)dstW);
> - else       filterSize= (int)ceil(1 + 2.0*srcW / (double)dstW);
> + if(flags&SWS_BICUBIC) filterSize= (int)ceil(1 + 4.0*srcW /
(double)dstW);
> + else if(flags&SWS_X) filterSize= (int)ceil(1 + 4.0*srcW / (double)dstW);
> + else if(flags&SWS_AREA) filterSize= (int)ceil(1 + 1.0*srcW /
(double)dstW);
> + else /* BILINEAR */ filterSize= (int)ceil(1 + 2.0*srcW / (double)dstW);
>  // printf("%d %d %d\n", *filterSize, srcW, dstW);
>   filter= (double*)memalign(8, dstW*sizeof(double)*filterSize);
>
> @@ -749,15 +752,19 @@
>   else
>   coeff=0.0;
>   }
> -/* else if(flags & SWS_X)
> + else if(flags & SWS_AREA)
>   {
> - }*/
> + double srcPixelSize= (1<<16)/(double)xInc;
> + if(d + srcPixelSize/2 < 0.5) coeff= 1.0;
> + else if(d - srcPixelSize/2 < 0.5) coeff= (0.5-d)/srcPixelSize + 0.5;
> + else coeff=0.0;
> + }
>   else
>   {
>   coeff= 1.0 - d;
>   if(coeff<0) coeff=0;
>   }
> -// printf("%1.3f %d %d \n", coeff, (int)d, xDstInSrc);
> +// printf("%1.3f %2.3f %d \n", coeff, d, xDstInSrc);
>   filter[i*filterSize + j]= coeff;
>   xx++;
>   }
> @@ -1225,7 +1232,9 @@
>   else if(flags&SWS_BICUBIC)
>   fprintf(stderr, "\nSwScaler: BICUBIC scaler ");
>   else if(flags&SWS_POINT)
> - fprintf(stderr, "\nSwScaler: POINT scaler ");
> + fprintf(stderr, "\nSwScaler: Nearest Neighbor / POINT scaler ");
> + else if(flags&SWS_AREA)
> + fprintf(stderr, "\nSwScaler: Area Averageing scaler ");
>   else
>   fprintf(stderr, "\nSwScaler: ehh flags invalid?! ");
>
>
> Index: swscale.h
> ===================================================================
> RCS file: /cvsroot/mplayer/main/postproc/swscale.h,v
> retrieving revision 1.11
> retrieving revision 1.12
> diff -u -r1.11 -r1.12
> --- swscale.h 28 Jan 2002 23:57:18 -0000 1.11
> +++ swscale.h 29 Jan 2002 01:43:15 -0000 1.12
> @@ -22,6 +22,7 @@
>  #define SWS_BICUBIC  4
>  #define SWS_X        8
>  #define SWS_POINT    0x10
> +#define SWS_AREA     0x20
>  #define SWS_FULL_UV_IPOL 0x100
>  #define SWS_PRINT_INFO 0x1000
>
>
> _______________________________________________
> Mplayer-cvslog mailing list
> Mplayer-cvslog at mplayerhq.hu
> http://mplayerhq.hu/mailman/listinfo/mplayer-cvslog
>
>




More information about the MPlayer-cvslog mailing list