--- bttv-risc.c.orig	2004-07-02 12:36:27.000000000 +0200
+++ bttv-risc.c	2004-07-03 19:14:01.000000000 +0200
@@ -122,6 +122,7 @@
 	struct scatterlist *usg;
 	struct scatterlist *vsg;
 	int rc;
+	int is_2nd_field= !!yoffset;
 
 	/* estimate risc mem: worst case is one write per page border +
 	   one write per scan line (5 dwords)
@@ -146,8 +147,8 @@
 			continue;
 		switch (vshift) {
 		case 0:  chroma = 1;           break;
-		case 1:  chroma = !(line & 1); break;
-		case 2:  chroma = !(line & 3); break;
+		case 1:  chroma = !((line  -is_2nd_field) & 1); break;
+		case 2:  chroma = !((line-1-is_2nd_field) & 3); break;
 		default: chroma = 0;
 		}
 		for (todo = ybpl; todo > 0; todo -= ylen) {
