diff -Naur MPlayer-0.90.orig/postproc/swscale.c MPlayer-0.90/postproc/swscale.c
--- MPlayer-0.90.orig/postproc/swscale.c	2003-02-01 01:48:33.000000000 +0100
+++ MPlayer-0.90/postproc/swscale.c	2003-05-31 21:24:08.000000000 +0200
@@ -1633,7 +1633,7 @@
 		}
 	}
 	dst = dstParam[1] + dstStride[1]*srcSliceY;
-	if(c->srcFormat==IMGFMT_YV12)
+	if(c->srcFormat==IMGFMT_YV12 || c->srcFormat==IMGFMT_I420)
 		interleaveBytes( src[1],src[2],dst,c->srcW,srcSliceH,srcStride[1],srcStride[2],dstStride[0] );
 	else /* I420 & IYUV */
 		interleaveBytes( src[2],src[1],dst,c->srcW,srcSliceH,srcStride[2],srcStride[1],dstStride[0] );
@@ -1645,7 +1645,7 @@
              int srcSliceH, uint8_t* dstParam[], int dstStride[]){
 	uint8_t *dst=dstParam[0] + dstStride[0]*srcSliceY;
 
-	if(c->srcFormat==IMGFMT_YV12)
+	if(c->srcFormat==IMGFMT_YV12 || c->srcFormat==IMGFMT_I420)
 		yuv2rgb( dst,src[0],src[1],src[2],c->srcW,srcSliceH,dstStride[0],srcStride[0],srcStride[1] );
 	else /* I420 & IYUV */
 		yuv2rgb( dst,src[0],src[2],src[1],c->srcW,srcSliceH,dstStride[0],srcStride[0],srcStride[1] );
@@ -1655,7 +1655,7 @@
              int srcSliceH, uint8_t* dstParam[], int dstStride[]){
 	uint8_t *dst=dstParam[0] + dstStride[0]*srcSliceY;
 
-	if(c->srcFormat==IMGFMT_YV12)
+	if(c->srcFormat==IMGFMT_YV12 || c->srcFormat==IMGFMT_I420)
 		yv12toyuy2( src[0],src[1],src[2],dst,c->srcW,srcSliceH,srcStride[0],srcStride[1],dstStride[0] );
 	else /* I420 & IYUV */
 		yv12toyuy2( src[0],src[2],src[1],dst,c->srcW,srcSliceH,srcStride[0],srcStride[1],dstStride[0] );
@@ -1812,7 +1812,7 @@
  */
 static inline void orderYUV(int format, uint8_t * sortedP[], int sortedStride[], uint8_t * p[], int stride[]){
 	if(format == IMGFMT_YV12 || format == IMGFMT_YVU9 
-           || format == IMGFMT_444P || format == IMGFMT_422P || format == IMGFMT_411P){
+           || format == IMGFMT_444P || format == IMGFMT_422P || format == IMGFMT_411P || format == IMGFMT_I420){
 		sortedP[0]= p[0];
 		sortedP[1]= p[1];
 		sortedP[2]= p[2];
@@ -1828,16 +1828,7 @@
 		sortedStride[0]= stride[0];
 		sortedStride[1]= 
 		sortedStride[2]= 0;
-	}
-	else if(format == IMGFMT_I420)
-	{
-		sortedP[0]= p[0];
-		sortedP[1]= p[2];
-		sortedP[2]= p[1];
-		sortedStride[0]= stride[0];
-		sortedStride[1]= stride[2];
-		sortedStride[2]= stride[1];
-	}else{
+        }else{
 		MSG_ERR("internal error in orderYUV\n");
 	}
 }
