From owner-freebsd-multimedia Wed Apr 9 02:13:16 1997 Return-Path: Received: (from root@localhost) by freefall.freebsd.org (8.8.5/8.8.5) id CAA07523 for multimedia-outgoing; Wed, 9 Apr 1997 02:13:16 -0700 (PDT) Received: from rah.star-gate.com (rah.star-gate.com [204.188.121.18]) by freefall.freebsd.org (8.8.5/8.8.5) with ESMTP id CAA07513 for ; Wed, 9 Apr 1997 02:13:10 -0700 (PDT) Received: from rah.star-gate.com (localhost.star-gate.com [127.0.0.1]) by rah.star-gate.com (8.8.5/8.7.3) with ESMTP id CAA00501 for ; Wed, 9 Apr 1997 02:13:03 -0700 (PDT) Message-Id: <199704090913.CAA00501@rah.star-gate.com> X-Mailer: exmh version 1.6.9 8/22/96 To: multimedia@freebsd.org Subject: patch to fix missing frames in vic plus with rgb Mime-Version: 1.0 Content-Type: multipart/mixed ; boundary="===_0_Wed_Apr__9_02:12:31_PDT_1997" Date: Wed, 09 Apr 1997 02:13:02 -0700 From: Amancio Hasty Sender: owner-multimedia@freebsd.org X-Loop: FreeBSD.org Precedence: bulk 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--