diff -Naur MPlayer-0.90.orig/vidix/drivers/mach64_vid.c MPlayer-0.90/vidix/drivers/mach64_vid.c
--- MPlayer-0.90.orig/vidix/drivers/mach64_vid.c	2003-04-12 13:36:17.000000000 +0200
+++ MPlayer-0.90/vidix/drivers/mach64_vid.c	2003-06-06 16:44:20.000000000 +0200
@@ -797,6 +797,8 @@
 	  tmp = config->offset.u;
 	  config->offset.u = config->offset.v;
 	  config->offset.v = tmp;
+          src_offset_u = config->offset.u;
+          src_offset_v = config->offset.v;
 	}
     }
     else if(besr.fourcc == IMGFMT_YVU9)
diff -Naur MPlayer-0.90.orig/vidix/drivers/mga_vid.c MPlayer-0.90/vidix/drivers/mga_vid.c
--- MPlayer-0.90.orig/vidix/drivers/mga_vid.c	2003-04-12 13:36:17.000000000 +0200
+++ MPlayer-0.90/vidix/drivers/mga_vid.c	2003-06-06 16:44:20.000000000 +0200
@@ -764,6 +764,14 @@
     config->offset.y=0;
     config->offset.v=((sw + 31) & ~31) * sh;
     config->offset.u=config->offset.v+((sw + 31) & ~31) * sh /4;
+    // should maybe also apply to IMGFMT_IYUV ?
+    if(config->fourcc == IMGFMT_I420)
+      {
+        uint32_t tmp;
+        tmp = config->offset.u;
+        config->offset.u = config->offset.v;
+        config->offset.v = tmp;
+      }
 
     //FIXME figure out a better way to allocate memory on card
     //allocate 2 megs
diff -Naur MPlayer-0.90.orig/vidix/drivers/radeon_vid.c MPlayer-0.90/vidix/drivers/radeon_vid.c
--- MPlayer-0.90.orig/vidix/drivers/radeon_vid.c	2003-04-12 13:36:17.000000000 +0200
+++ MPlayer-0.90/vidix/drivers/radeon_vid.c	2003-06-06 16:46:42.000000000 +0200
@@ -1504,7 +1504,7 @@
 	    config->offset.v = ((besr.vid_buf_base_adrs_v[0])&VIF_BUF1_BASE_ADRS_MASK) - radeon_overlay_off;
 	    config->offset.u = ((besr.vid_buf_base_adrs_u[0])&VIF_BUF2_BASE_ADRS_MASK) - radeon_overlay_off;
 	}
-	if(besr.fourcc == IMGFMT_I420 || besr.fourcc == IMGFMT_IYUV)
+	if(besr.fourcc == IMGFMT_IYUV)
 	{
 	  uint32_t tmp;
 	  tmp = config->offset.u;
