Skip site navigation (1)Skip section navigation (2)
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>