[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