Date: Sat, 22 Mar 1997 23:37:41 -0700 From: Steve Passe <smp@csn.net> To: multimedia@FreeBSD.org Cc: Randall Hopper <rhh@ct.picker.com> Subject: Re: First Cut at separating tuner and capture devices Message-ID: <199703230637.XAA18805@Ilsa.StevesCafe.com> In-Reply-To: Your message of "Sat, 22 Mar 1997 23:08:50 MST." <199703230608.XAA18434@Ilsa.StevesCafe.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Hi,
here's a patch file to make fxtv work with the new tuner-mode bt848 driver.
its just till Randall has a chance to do it right.
--------------------------------------- cut -----------------------------------
*** tvcapture.h 1997/03/23 06:18:23 1.1
--- tvcapture.h 1997/03/23 06:18:50
***************
*** 97,102 ****
--- 97,103 ----
typedef struct {
int fd;
+ int tfd;
UINT8 *drv_buf;
INT32 input_format;
*** tvcapture.c 1997/03/23 00:08:04 1.1
--- tvcapture.c 1997/03/23 06:20:34
***************
*** 120,125 ****
--- 120,127 ----
close( c->fd );
}
+
+ close( c->tfd );
}
***************
*** 225,231 ****
larg = MAX( BRIGHT_DRV_MIN,
MIN( BRIGHT_DRV_MIN+BRIGHT_DRV_RANGE-1, larg ));
! if ( ioctl( c->fd, BT848_SBRIG, &larg ) < 0 ) {
DO_IOCTL_SERR( "BT848_SBRIG", larg );
return;
}
--- 227,233 ----
larg = MAX( BRIGHT_DRV_MIN,
MIN( BRIGHT_DRV_MIN+BRIGHT_DRV_RANGE-1, larg ));
! if ( ioctl( c->tfd, BT848_SBRIG, &larg ) < 0 ) {
DO_IOCTL_SERR( "BT848_SBRIG", larg );
return;
}
***************
*** 246,252 ****
larg = MAX( CONTR_DRV_MIN,
MIN( CONTR_DRV_MIN+CONTR_DRV_RANGE-1, larg ) );
! if ( ioctl( c->fd, BT848_SCONT, &larg ) < 0 ) {
DO_IOCTL_SERR( "BT848_SCONT", larg );
return;
}
--- 248,254 ----
larg = MAX( CONTR_DRV_MIN,
MIN( CONTR_DRV_MIN+CONTR_DRV_RANGE-1, larg ) );
! if ( ioctl( c->tfd, BT848_SCONT, &larg ) < 0 ) {
DO_IOCTL_SERR( "BT848_SCONT", larg );
return;
}
***************
*** 266,272 ****
larg = MAX( HUE_DRV_MIN,
MIN( HUE_DRV_MIN+HUE_DRV_RANGE-1, larg ));
! if ( ioctl( c->fd, BT848_SHUE, &larg ) < 0 ) {
DO_IOCTL_SERR( "BT848_SHUE", larg );
return;
}
--- 268,274 ----
larg = MAX( HUE_DRV_MIN,
MIN( HUE_DRV_MIN+HUE_DRV_RANGE-1, larg ));
! if ( ioctl( c->tfd, BT848_SHUE, &larg ) < 0 ) {
DO_IOCTL_SERR( "BT848_SHUE", larg );
return;
}
***************
*** 286,292 ****
larg = MAX( SATU_DRV_MIN,
MIN( SATU_DRV_MIN+SATU_DRV_RANGE-1, larg ) );
! if ( ioctl( c->fd, BT848_SUSAT, &larg ) < 0 ) {
DO_IOCTL_SERR( "BT848_SUSAT", larg );
return;
}
--- 288,294 ----
larg = MAX( SATU_DRV_MIN,
MIN( SATU_DRV_MIN+SATU_DRV_RANGE-1, larg ) );
! if ( ioctl( c->tfd, BT848_SUSAT, &larg ) < 0 ) {
DO_IOCTL_SERR( "BT848_SUSAT", larg );
return;
}
***************
*** 306,312 ****
larg = MAX( SATV_DRV_MIN,
MIN( SATV_DRV_MIN+SATV_DRV_RANGE-1, larg ) );
! if ( ioctl( c->fd, BT848_SVSAT, &larg ) < 0 ) {
DO_IOCTL_SERR( "BT848_SVSAT", larg );
return;
}
--- 308,314 ----
larg = MAX( SATV_DRV_MIN,
MIN( SATV_DRV_MIN+SATV_DRV_RANGE-1, larg ) );
! if ( ioctl( c->tfd, BT848_SVSAT, &larg ) < 0 ) {
DO_IOCTL_SERR( "BT848_SVSAT", larg );
return;
}
***************
*** 368,374 ****
/* Driver FIXME: Hack to get around driver unmuting audio across */
/* channel, freq, and input device changes. */
! if ( ioctl( c->fd, BT848_GAUDIO, &old_audio ) < 0 ) {
DO_IOCTL_GERR( "BT848_GAUDIO" );
return;
}
--- 370,376 ----
/* Driver FIXME: Hack to get around driver unmuting audio across */
/* channel, freq, and input device changes. */
! if ( ioctl( c->tfd, BT848_GAUDIO, &old_audio ) < 0 ) {
DO_IOCTL_GERR( "BT848_GAUDIO" );
return;
}
***************
*** 404,415 ****
/* Driver FIXME: Hack to get around driver unmuting audio across */
/* channel, freq, and input device changes. */
! if ( ioctl( c->fd, BT848_GAUDIO, &old_audio ) < 0 ) {
DO_IOCTL_GERR( "BT848_GAUDIO" );
return;
}
! if ( ioctl( c->fd, TVTUNER_SETCHNL, &larg ) < 0 ) {
DO_IOCTL_SERR( "TVTUNER_SETCHNL", larg );
return;
}
--- 406,417 ----
/* Driver FIXME: Hack to get around driver unmuting audio across */
/* channel, freq, and input device changes. */
! if ( ioctl( c->tfd, BT848_GAUDIO, &old_audio ) < 0 ) {
DO_IOCTL_GERR( "BT848_GAUDIO" );
return;
}
! if ( ioctl( c->tfd, TVTUNER_SETCHNL, &larg ) < 0 ) {
DO_IOCTL_SERR( "TVTUNER_SETCHNL", larg );
return;
}
***************
*** 433,439 ****
return;
}
! if ( ioctl( c->fd, TVTUNER_SETTYPE, &larg ) < 0 ) {
DO_IOCTL_SERR( "TVTUNER_SETTYPE", larg );
return;
}
--- 435,441 ----
return;
}
! if ( ioctl( c->tfd, TVTUNER_SETTYPE, &larg ) < 0 ) {
DO_IOCTL_SERR( "TVTUNER_SETTYPE", larg );
return;
}
***************
*** 455,461 ****
int arg = ( mute ? AUDIO_MUTE : AUDIO_UNMUTE );
/* Don't change audio source; just mute it */
! if ( ioctl( c->fd, BT848_SAUDIO, &arg ) < 0 ) {
DO_IOCTL_SERR( "BT848_SAUDIO", arg );
return;
}
--- 457,463 ----
int arg = ( mute ? AUDIO_MUTE : AUDIO_UNMUTE );
/* Don't change audio source; just mute it */
! if ( ioctl( c->tfd, BT848_SAUDIO, &arg ) < 0 ) {
DO_IOCTL_SERR( "BT848_SAUDIO", arg );
return;
}
***************
*** 560,566 ****
#endif
/* HUE */
! if ( ioctl( c->fd, BT848_GHUE, &larg ) < 0 ) {
DO_IOCTL_GERR( "BT848_GHUE" );
return False;
}
--- 562,568 ----
#endif
/* HUE */
! if ( ioctl( c->tfd, BT848_GHUE, &larg ) < 0 ) {
DO_IOCTL_GERR( "BT848_GHUE" );
return False;
}
***************
*** 568,574 ****
* HUE_RANGE + HUE_MIN;
/* BRIGHTNESS */
! if ( ioctl( c->fd, BT848_GBRIG, &larg ) < 0 ) {
DO_IOCTL_GERR( "BT848_GBRIG" );
return False;
}
--- 570,576 ----
* HUE_RANGE + HUE_MIN;
/* BRIGHTNESS */
! if ( ioctl( c->tfd, BT848_GBRIG, &larg ) < 0 ) {
DO_IOCTL_GERR( "BT848_GBRIG" );
return False;
}
***************
*** 576,582 ****
* BRIGHT_RANGE + BRIGHT_MIN;
/* CONTRAST */
! if ( ioctl( c->fd, BT848_GCONT, &larg ) < 0 ) {
DO_IOCTL_GERR( "BT848_GCONT" );
return False;
}
--- 578,584 ----
* BRIGHT_RANGE + BRIGHT_MIN;
/* CONTRAST */
! if ( ioctl( c->tfd, BT848_GCONT, &larg ) < 0 ) {
DO_IOCTL_GERR( "BT848_GCONT" );
return False;
}
***************
*** 584,590 ****
* CONTR_RANGE + CONTR_MIN;
/* CHROMA U SATURATION */
! if ( ioctl( c->fd, BT848_GUSAT, &ucarg ) < 0 ) {
DO_IOCTL_GERR( "BT848_GUSAT" );
return False;
}
--- 586,592 ----
* CONTR_RANGE + CONTR_MIN;
/* CHROMA U SATURATION */
! if ( ioctl( c->tfd, BT848_GUSAT, &ucarg ) < 0 ) {
DO_IOCTL_GERR( "BT848_GUSAT" );
return False;
}
***************
*** 592,598 ****
* SATU_RANGE + SATU_MIN;
/* CHROMA V SATURATION */
! if ( ioctl( c->fd, BT848_GVSAT, &ucarg ) < 0 ) {
DO_IOCTL_GERR( "BT848_GVSAT" );
return False;
}
--- 594,600 ----
* SATU_RANGE + SATU_MIN;
/* CHROMA V SATURATION */
! if ( ioctl( c->tfd, BT848_GVSAT, &ucarg ) < 0 ) {
DO_IOCTL_GERR( "BT848_GVSAT" );
return False;
}
***************
*** 600,606 ****
* SATV_RANGE + SATV_MIN;
/* TUNER TYPE */
! if ( ioctl( c->fd, TVTUNER_GETTYPE, &larg ) < 0 ) {
DO_IOCTL_GERR( "TVTUNER_GETTYPE" );
return False;
}
--- 602,608 ----
* SATV_RANGE + SATV_MIN;
/* TUNER TYPE */
! if ( ioctl( c->tfd, TVTUNER_GETTYPE, &larg ) < 0 ) {
DO_IOCTL_GERR( "TVTUNER_GETTYPE" );
return False;
}
***************
*** 617,623 ****
}
/* TUNER CHANNEL */
! if ( ioctl( c->fd, TVTUNER_GETCHNL, &larg ) < 0 ) {
DO_IOCTL_GERR( "TVTUNER_GETCHNL" );
return False;
}
--- 619,625 ----
}
/* TUNER CHANNEL */
! if ( ioctl( c->tfd, TVTUNER_GETCHNL, &larg ) < 0 ) {
DO_IOCTL_GERR( "TVTUNER_GETCHNL" );
return False;
}
***************
*** 625,631 ****
/* TUNER FREQUENCY */
#ifdef NOT_NEEDED
! if ( ioctl( c->fd, TVTUNER_GETFREQ, &larg ) < 0 ) {
DO_IOCTL_GERR( "TVTUNER_GETFREQ" );
return False;
}
--- 627,633 ----
/* TUNER FREQUENCY */
#ifdef NOT_NEEDED
! if ( ioctl( c->tfd, TVTUNER_GETFREQ, &larg ) < 0 ) {
DO_IOCTL_GERR( "TVTUNER_GETFREQ" );
return False;
}
***************
*** 633,639 ****
#endif
/* AUDIO MUTE STATE (don't care about source -- tracks w/ vid device)
*/
! if ( ioctl( c->fd, BT848_GAUDIO, &larg ) < 0 ) {
DO_IOCTL_GERR( "BT848_GAUDIO" );
return False;
}
--- 635,641 ----
#endif
/* AUDIO MUTE STATE (don't care about source -- tracks w/ vid device)
*/
! if ( ioctl( c->tfd, BT848_GAUDIO, &larg ) < 0 ) {
DO_IOCTL_GERR( "BT848_GAUDIO" );
return False;
}
***************
*** 695,700 ****
--- 697,709 ----
c->fd = open( "/dev/bktr0", O_RDONLY );
if ( c->fd < 0 ) {
fprintf( stderr, "open(\"/dev/bktr0\") failed: %s\n",
+ strerror(errno) );
+ exit(1);
+ }
+
+ c->tfd = open( "/dev/tuner0", O_RDONLY );
+ if ( c->tfd < 0 ) {
+ fprintf( stderr, "open(\"/dev/tuner0\") failed: %s\n",
strerror(errno) );
exit(1);
}
--------------------------------------- cut -----------------------------------
--
Steve Passe | powered by
smp@csn.net | Symmetric MultiProcessor FreeBSD
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199703230637.XAA18805>
