Date: Wed, 09 Apr 1997 02:13:02 -0700 From: Amancio Hasty <hasty@rah.star-gate.com> To: multimedia@freebsd.org Subject: patch to fix missing frames in vic plus with rgb Message-ID: <199704090913.CAA00501@rah.star-gate.com>
next in thread | raw e-mail | index | archive | help
This is a multipart MIME message. --===_0_Wed_Apr__9_02:12:31_PDT_1997 Content-Type: text/plain; charset=us-ascii This patch fixes the problem of vic only capturing an even or odd frame plus the my early patch for missing frames with resolutions higher than 320x240 in rgb mode. The yuv422 patch introduces a minor bug in that a green line appears at the bottom of the captured window . There is no easy work around for this right now. If no one complaints about the patches not working , then I suggest that that they should be applied to the released version of the bt848 driver. Enjoy, Amancio --===_0_Wed_Apr__9_02:12:31_PDT_1997 Content-Type: application/octet-stream Content-Description: patch.2 *** brooktree848.c.orig Wed Apr 2 11:14:38 1997 --- brooktree848.c Wed Apr 9 02:04:24 1997 *************** *** 2039,2045 **** buffer = target_buffer; /* contruct sync : for video packet format */ ! *dma_prog++ = OP_SYNC | 0xC << 24 | 1 << 15 | BKTR_FM1; /* sync, mode indicator packed data */ *dma_prog++ = 0; /* NULL WORD */ --- 2039,2045 ---- buffer = target_buffer; /* contruct sync : for video packet format */ ! *dma_prog++ = OP_SYNC | 1 << 15 | BKTR_FM1; /* sync, mode indicator packed data */ *dma_prog++ = 0; /* NULL WORD */ *************** *** 2073,2079 **** case 3: /* sync vre */ ! *dma_prog++ = OP_SYNC | 0xC << 24 | 1 << 24 | 1 << 15 | BKTR_VRO; *dma_prog++ = 0; /* NULL WORD */ *dma_prog++ = OP_JUMP | 0xc << 24 ; *dma_prog = (u_long ) vtophys(bktr->odd_dma_prog); --- 2073,2079 ---- case 3: /* sync vre */ ! *dma_prog++ = OP_SYNC | 1 << 15 | BKTR_VRO; *dma_prog++ = 0; /* NULL WORD */ *dma_prog++ = OP_JUMP | 0xc << 24 ; *dma_prog = (u_long ) vtophys(bktr->odd_dma_prog); *************** *** 2087,2093 **** dma_prog = (u_long *) bktr->odd_dma_prog; /* sync vre IRQ bit */ ! *dma_prog++ = OP_SYNC | 0xc << 24 | 1 << 15 | BKTR_FM1; *dma_prog++ = 0; /* NULL WORD */ for (i = 0; i < (rows/interlace); i++) { --- 2087,2093 ---- dma_prog = (u_long *) bktr->odd_dma_prog; /* sync vre IRQ bit */ ! *dma_prog++ = OP_SYNC | 1 << 15 | BKTR_FM1; *dma_prog++ = 0; /* NULL WORD */ for (i = 0; i < (rows/interlace); i++) { *************** *** 2100,2108 **** } /* sync vre IRQ bit */ ! *dma_prog++ = OP_SYNC | 0xc << 24 | 1 << 24 | 1 << 15 | BKTR_VRE; *dma_prog++ = 0; /* NULL WORD */ ! *dma_prog++ = OP_JUMP | 0xc << 24; *dma_prog++ = (u_long ) vtophys(bktr->dma_prog) ; *dma_prog++ = 0; /* NULL WORD */ } --- 2100,2108 ---- } /* sync vre IRQ bit */ ! *dma_prog++ = OP_SYNC | 1 << 24 | 1 << 15 | BKTR_VRE; *dma_prog++ = 0; /* NULL WORD */ ! *dma_prog++ = OP_JUMP ; *dma_prog++ = (u_long ) vtophys(bktr->dma_prog) ; *dma_prog++ = 0; /* NULL WORD */ } *************** *** 2288,2297 **** t1 = target_buffer; /* contruct sync : for video packet format */ ! *dma_prog++ = OP_SYNC | 0xC << 24 | 1 << 15 | BKTR_FM3; /*sync, mode indicator packed data*/ *dma_prog++ = 0; /* NULL WORD */ ! for (i = 0; i < (rows/interlace ); i++) { *dma_prog++ = inst; *dma_prog++ = cols/2 | cols/2 << 16; *dma_prog++ = target_buffer; --- 2288,2297 ---- t1 = target_buffer; /* contruct sync : for video packet format */ ! *dma_prog++ = OP_SYNC | 1 << 15 | BKTR_FM3; /*sync, mode indicator packed data*/ *dma_prog++ = 0; /* NULL WORD */ ! for (i = 0; i < (rows/interlace ) - 1; i++) { *dma_prog++ = inst; *dma_prog++ = cols/2 | cols/2 << 16; *dma_prog++ = target_buffer; *************** *** 2318,2327 **** return; case 3: ! *dma_prog++ = OP_SYNC | 0xc << 24 | 1 << 15 | BKTR_VRO; *dma_prog++ = 0; /* NULL WORD */ ! *dma_prog++ = OP_JUMP | 0xc << 24 ; *dma_prog = (u_long ) vtophys(bktr->odd_dma_prog); break; } --- 2318,2327 ---- return; case 3: ! *dma_prog++ = OP_SYNC | 1 << 15 | BKTR_VRO; *dma_prog++ = 0; /* NULL WORD */ ! *dma_prog++ = OP_JUMP ; *dma_prog = (u_long ) vtophys(bktr->odd_dma_prog); break; } *************** *** 2332,2341 **** target_buffer = (u_long) buffer + cols; t1 = target_buffer + cols/2; ! *dma_prog++ = OP_SYNC | 0xc << 24 | 1 << 24 | 1 << 15 | BKTR_FM3; *dma_prog++ = 0; /* NULL WORD */ ! for (i = 0; i < (rows/interlace ) ; i++) { *dma_prog++ = inst; *dma_prog++ = cols/2 | cols/2 << 16; *dma_prog++ = target_buffer; --- 2332,2341 ---- target_buffer = (u_long) buffer + cols; t1 = target_buffer + cols/2; ! *dma_prog++ = OP_SYNC | 1 << 15 | BKTR_FM3; *dma_prog++ = 0; /* NULL WORD */ ! for (i = 0; i < (rows/interlace ) - 1; i++) { *dma_prog++ = inst; *dma_prog++ = cols/2 | cols/2 << 16; *dma_prog++ = target_buffer; *************** *** 2345,2353 **** } } ! *dma_prog++ = OP_SYNC | 0xC << 24 | 1 << 24 | BKTR_VRE; *dma_prog++ = 0; /* NULL WORD */ ! *dma_prog++ = OP_JUMP | 0xC << 24;; *dma_prog++ = (u_long ) vtophys(bktr->dma_prog) ; *dma_prog++ = 0; /* NULL WORD */ } --- 2345,2353 ---- } } ! *dma_prog++ = OP_SYNC | 1 << 24 | BKTR_VRE; *dma_prog++ = 0; /* NULL WORD */ ! *dma_prog++ = OP_JUMP ; *dma_prog++ = (u_long ) vtophys(bktr->dma_prog) ; *dma_prog++ = 0; /* NULL WORD */ } --===_0_Wed_Apr__9_02:12:31_PDT_1997--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199704090913.CAA00501>