[Mplayer-cvslog] CVS: main/postproc swscale.c,1.75,1.76

Michael Niedermayer michael at mplayer.dev.hu
Fri Feb 8 05:18:07 CET 2002


Update of /cvsroot/mplayer/main/postproc
In directory mplayer:/var/tmp.root/cvs-serv6334

Modified Files:
	swscale.c 
Log Message:
unscaled BGR15->BGR16
a few bugfixes of the other unscaled converters


Index: swscale.c
===================================================================
RCS file: /cvsroot/mplayer/main/postproc/swscale.c,v
retrieving revision 1.75
retrieving revision 1.76
diff -u -r1.75 -r1.76
--- swscale.c	8 Feb 2002 03:09:46 -0000	1.75
+++ swscale.c	8 Feb 2002 04:18:01 -0000	1.76
@@ -27,12 +27,14 @@
   YUY2/BGR15/BGR16/BGR24/BGR32/RGB24/RGB32 -> same format
   BGR24 -> BGR32 & RGB24 -> RGB32
   BGR32 -> BGR24 & RGB32 -> RGB24
+  BGR15 -> BGR16
 */
 
 /* 
 tested special converters
  YV12/I420 -> BGR16
  YV12 -> YV12
+ BGR15 -> BGR16
 
 untested special converters
   YV12/I420/IYUV -> BGR15/BGR24/BGR32 (its the yuv2rgb stuff, so it should be ok)
@@ -1153,7 +1155,7 @@
              int srcSliceH, uint8_t* dst[], int dstStride[]){
 	
 	if(dstStride[0]*3==srcStride[0]*4)
-		rgb24to32(src[0], dst[0] + dstStride[0]*srcSliceY, srcSliceH*dstStride[0]>>2);
+		rgb24to32(src[0], dst[0] + dstStride[0]*srcSliceY, srcSliceH*srcStride[0]);
 	else
 	{
 		int i;
@@ -1162,7 +1164,7 @@
 
 		for(i=0; i<srcSliceH; i++)
 		{
-			rgb24to32(srcPtr, dstPtr, c->srcW);
+			rgb24to32(srcPtr, dstPtr, c->srcW*3);
 			srcPtr+= srcStride[0];
 			dstPtr+= dstStride[0];
 		}
@@ -1173,7 +1175,7 @@
              int srcSliceH, uint8_t* dst[], int dstStride[]){
 	
 	if(dstStride[0]*4==srcStride[0]*3)
-		rgb32to24(src[0], dst[0] + dstStride[0]*srcSliceY, srcSliceH*srcStride[0]>>2);
+		rgb32to24(src[0], dst[0] + dstStride[0]*srcSliceY, srcSliceH*srcStride[0]);
 	else
 	{
 		int i;
@@ -1182,7 +1184,27 @@
 
 		for(i=0; i<srcSliceH; i++)
 		{
-			rgb32to24(srcPtr, dstPtr, c->srcW);
+			rgb32to24(srcPtr, dstPtr, c->srcW<<2);
+			srcPtr+= srcStride[0];
+			dstPtr+= dstStride[0];
+		}
+	}     
+}
+
+static void bgr15to16Wrapper(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
+             int srcSliceH, uint8_t* dst[], int dstStride[]){
+	
+	if(dstStride[0]==srcStride[0])
+		rgb15to16(src[0], dst[0] + dstStride[0]*srcSliceY, srcSliceH*srcStride[0]);
+	else
+	{
+		int i;
+		uint8_t *srcPtr= src[0];
+		uint8_t *dstPtr= dst[0] + dstStride[0]*srcSliceY;
+
+		for(i=0; i<srcSliceH; i++)
+		{
+			rgb15to16(srcPtr, dstPtr, c->srcW<<1);
 			srcPtr+= srcStride[0];
 			dstPtr+= dstStride[0];
 		}
@@ -1394,6 +1416,17 @@
 		 ||(srcFormat==IMGFMT_RGB24 && dstFormat==IMGFMT_RGB32))
 		{
 			c->swScale= bgr24to32Wrapper;
+
+			if(flags&SWS_PRINT_INFO)
+				printf("SwScaler: using unscaled %s -> %s special converter\n", 
+					vo_format_name(srcFormat), vo_format_name(dstFormat));
+			return c;
+		}
+
+		/* bgr15to16 */
+		if(srcFormat==IMGFMT_BGR15 && dstFormat==IMGFMT_BGR16)
+		{
+			c->swScale= bgr15to16Wrapper;
 
 			if(flags&SWS_PRINT_INFO)
 				printf("SwScaler: using unscaled %s -> %s special converter\n", 




More information about the MPlayer-cvslog mailing list