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