From owner-freebsd-multimedia Sat Mar 22 22:37:50 1997 Return-Path: Received: (from root@localhost) by freefall.freebsd.org (8.8.5/8.8.5) id WAA26501 for multimedia-outgoing; Sat, 22 Mar 1997 22:37:50 -0800 (PST) Received: from Ilsa.StevesCafe.com (sc-gw.StevesCafe.com [205.168.119.191]) by freefall.freebsd.org (8.8.5/8.8.5) with ESMTP id WAA26491 for ; Sat, 22 Mar 1997 22:37:44 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by Ilsa.StevesCafe.com (8.7.5/8.6.12) with SMTP id XAA18805; Sat, 22 Mar 1997 23:37:41 -0700 (MST) Message-Id: <199703230637.XAA18805@Ilsa.StevesCafe.com> X-Authentication-Warning: Ilsa.StevesCafe.com: Host localhost [127.0.0.1] didn't use HELO protocol X-Mailer: exmh version 1.6.5 12/11/95 From: Steve Passe To: multimedia@FreeBSD.org cc: Randall Hopper Subject: Re: First Cut at separating tuner and capture devices In-reply-to: Your message of "Sat, 22 Mar 1997 23:08:50 MST." <199703230608.XAA18434@Ilsa.StevesCafe.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Sat, 22 Mar 1997 23:37:41 -0700 Sender: owner-multimedia@FreeBSD.org X-Loop: FreeBSD.org Precedence: bulk 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