Re: FreeBSD 4.9 Hauppauge PVR-250 / 350 Driver Patch (Jan 25, 2004)

[ Available lists | Index of freebsd-multimedia | Month of Jan 2004 | Week of 31 Jan 2004 | Raw email | View thread | Wrap long lines | Reply | Tag ]
From
John Wehle <john@feith.com>
Date
31 Jan 2004 11:23:19
Subject
Re: FreeBSD 4.9 Hauppauge PVR-250 / 350 Driver Patch (Jan 25, 2004)
Message-ID
200401311921.i0VJL0028112@jwlab.FEITH.COM


[ Hide this part ]
> mplayer -tv driver=bsdbt848:channel=28:device=/dev/bktr0 /dev/bktr0

It's not really a bt848 so various pieces of software unfortunately
don't work correctly with it. Only a subset of the ioctls are supported
and there's only one device node (/dev/tuner0 isn't supported ... all
access / ioctls go through /dev/bktr0 ... on my system I have tuner0
linked to bktr0). However, it should be a easy task to write a cxm
driver for mplayer.

> #!/usr/bin/perl
> ...

Yep ... I see the same error here using your perl script.

> have any tips?

I use the enclosed program.

-- John
-------------8<-----------------------------8<-----------------------
#include <stdio.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <machine/ioctl_bt848.h>
#include <machine/ioctl_meteor.h>
#include <unistd.h>

/****************************************************************************/
/* setchannel.c - Set the channel of the bktr tuner card. */
/* */
/* COMPILE WITH: cc -o setchannel setchannel.c */
/****************************************************************************/

static void
usage()
{
printf("Usage: setchannel <-c|-s|-t|-t channel|channel>\n"
" -c Select composite input.\n"
" -s Select svideo input.\n"
" -t Select tuner.\n");
}

int main( int argc, char *argv[] )
{
int c;
int status;
int tfd;
unsigned int channel;
unsigned long device;

channel = 0;
device = 0;
status = 0;

while ((c = getopt (argc, argv, "cst")) != -1)
switch (c) {
case 'c':
device = METEOR_INPUT_DEV2;
break;

case 's':
device = METEOR_INPUT_DEV_SVIDEO;
break;

case 't':
device = METEOR_INPUT_DEV1;
break;

default:
usage ();
exit (1);
}

if ( optind < argc)
channel = atoi( argv[optind] );

if (! channel && ! device) {
usage ();
exit (1);
}

tfd = open( "/dev/bktr0", O_RDONLY );
if ( tfd < 0 ) {
perror( "open() of /dev/bktr0 failed." );
exit(1);
}

if (device)
if ( ioctl( tfd, METEORSINPUT, &device ) < 0 ) {
perror( "ioctl( tfd, METEORSINPUT ) failed." );
status = 1;
}

if (channel)
if ( ioctl( tfd, TVTUNER_SETCHNL, &channel ) < 0 ) {
perror( "ioctl( tfd, TVTUNER_SETCHNL ) failed." );
status = 1;
}

close ( tfd );
exit ( status );
}
-------------------------------------------------------------------------
| Feith Systems | Voice: 1-215-646-8000 | Email: john@feith.com |
| John Wehle | Fax: 1-215-540-5495 | |
-------------------------------------------------------------------------


Elapsed time: 0.140 seconds