[Mplayer-cvslog] CVS: main/postproc swscale.c,1.59,1.60 swscale.h,1.10,1.11
Michael Niedermayer
michael at mplayer.dev.hu
Tue Jan 29 00:57:28 CET 2002
Update of /cvsroot/mplayer/main/postproc
In directory mplayer:/var/tmp.root/cvs-serv7425
Modified Files:
swscale.c swscale.h
Log Message:
nearest neighbor / sdl emulation ;) scaling (-sws 4)
Index: swscale.c
===================================================================
RCS file: /cvsroot/mplayer/main/postproc/swscale.c,v
retrieving revision 1.59
retrieving revision 1.60
diff -u -r1.59 -r1.60
--- swscale.c 22 Jan 2002 15:54:44 -0000 1.59
+++ swscale.c 28 Jan 2002 23:57:18 -0000 1.60
@@ -69,10 +69,13 @@
TODO
more intelligent missalignment avoidance for the horizontal scaler
-dither in C
change the distance of the u & v buffer
write special vertical cubic upscale version
Optimize C code (yv12 / minmax)
+add support for packed pixel yuv input & output
+add support for Y8 input & output
+add BGR4 output support
+add BGR32 / BGR24 input support
*/
#define ABS(a) ((a) > 0 ? (a) : (-(a)))
@@ -600,6 +603,7 @@
case 1: flags|= SWS_BILINEAR; break;
case 2: flags|= SWS_BICUBIC; break;
case 3: flags|= SWS_X; break;
+ case 4: flags|= SWS_POINT; break;
default:flags|= SWS_BILINEAR; break;
}
@@ -639,6 +643,23 @@
}
}
+ else if(flags&SWS_POINT) // lame looking point sampling mode
+ {
+ int i;
+ int xDstInSrc;
+ filterSize= 1;
+ filter= (double*)memalign(8, dstW*sizeof(double)*filterSize);
+
+ xDstInSrc= xInc/2 - 0x8000;
+ for(i=0; i<dstW; i++)
+ {
+ int xx= (xDstInSrc>>16) - (filterSize>>1) + 1;
+
+ (*filterPos)[i]= xx;
+ filter[i]= 1.0;
+ xDstInSrc+= xInc;
+ }
+ }
else if(xInc <= (1<<16) || (flags&SWS_FAST_BILINEAR)) // upscale
{
int i;
@@ -1203,6 +1224,8 @@
fprintf(stderr, "\nSwScaler: BILINEAR scaler ");
else if(flags&SWS_BICUBIC)
fprintf(stderr, "\nSwScaler: BICUBIC scaler ");
+ else if(flags&SWS_POINT)
+ fprintf(stderr, "\nSwScaler: POINT scaler ");
else
fprintf(stderr, "\nSwScaler: ehh flags invalid?! ");
@@ -1430,7 +1453,7 @@
static SwsVector *getShiftedVec(SwsVector *a, int shift){
int length= a->length + ABS(shift)*2;
double *coeff= memalign(sizeof(double), length*sizeof(double));
- int i, j;
+ int i;
SwsVector *vec= malloc(sizeof(SwsVector));
vec->coeff= coeff;
Index: swscale.h
===================================================================
RCS file: /cvsroot/mplayer/main/postproc/swscale.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- swscale.h 21 Jan 2002 22:11:09 -0000 1.10
+++ swscale.h 28 Jan 2002 23:57:18 -0000 1.11
@@ -21,6 +21,7 @@
#define SWS_BILINEAR 2
#define SWS_BICUBIC 4
#define SWS_X 8
+#define SWS_POINT 0x10
#define SWS_FULL_UV_IPOL 0x100
#define SWS_PRINT_INFO 0x1000
More information about the MPlayer-cvslog
mailing list