Date: Wed, 19 Mar 1997 08:26:00 -0500 From: Michael Petry <petry@netwolf.NetMasters.com> To: multimedia@freebsd.org Subject: fxtv changes for audio and tuning Message-ID: <199703191326.IAA00402@netwolf.NetMasters.com>
next in thread | raw e-mail | index | archive | help
Attached is a diff to fxtv-0.0.2 that provides selection of tuner/ext1 as the video source. It also proviced channel selection (up/down) from a hardcoded array of channels. (Yep, it's a hack, but I got tired of the blue screen) X resource management me heartburn. What would be cool is if somebody could whip up a widget that displayes the current channel on the menu bar (or even better on top of the screen) (There's also a bug fix to tvscreen.c at the end for a compare vs. assignment error) In tvmenu.c that is an array that should be update to reflect your of-air channels > static int channels[] = > { 2, 4, 5, 7, 9, 11, 13, 20, 22, 26, 32, 45, 50, 54, 56}; diff -r fxtv-0.0.2/tvcapture.c fxtv-0.0.2.mine/tvcapture.c 190a191,225 > void TVCAPTURESetExt1( int ext1 ) > { > TV_CAPTURE *c = &G_glob.capture; > > c->changed.input_dev = True; > c->input_dev = METEOR_INPUT_DEV0; > } > > void TVCAPTURESetTuner( int tuner ) > { > TV_CAPTURE *c = &G_glob.capture; > > c->changed.input_dev = True; > c->input_dev = METEOR_INPUT_DEV1; > } > > void TVCAPTURESetChannel(int channel ) > { > int arg; > TV_CAPTURE *c = &G_glob.capture; > > arg = channel; > > DBPRINTF(("changing channel to %d\n", arg)); > if ( ioctl( c->fd, TVTUNER_SETCHNL, &arg ) < 0 ) { > fprintf( stderr, "ioctl(TVTUNER_SETCHNL, %d) failed: %s\n", > arg, strerror(errno) ); > return; > } > > c->changed.channel = True; > c->channel = channel; > } > > 194c229 < c->changed.brightness = 1; --- > c->changed.brightness = True; 201c236 < c->changed.contrast = 1; --- > c->changed.contrast = True; 474a510,522 > /* Channel */ > > if ( c->changed.channel ) { > arg = c->channel; > > if ( ioctl( c->fd, TVTUNER_SETCHNL, &arg ) < 0 ) { > fprintf( stderr, "ioctl(TVTUNER_SETCHNL, %d) failed: %s\n", > arg, strerror(errno) ); > return; > } > c->changed.channel = 0; > } > 477a526 > diff -r fxtv-0.0.2/tvcapture.h fxtv-0.0.2.mine/tvcapture.h 36a37 > #include <machine/ioctl_bt848.h> 56a58 > INT32 channel; 75a78 > unsigned channel :1; Only in fxtv-0.0.2: tvcapture.o diff -r fxtv-0.0.2/tvmenu.c fxtv-0.0.2.mine/tvmenu.c 95c95,96 < static XT_CB QuitCB, FreezeCB, MuteCB, ZoomCB; --- > static XT_CB QuitCB, FreezeCB, MuteCB, TunerCB, Ext1CB, ZoomCB; > static XT_CB UpCB, DownCB; 125,126c126,127 < { TVMI( INPUT,INPUT_TUNER ), "tunerCmd" , WC_mcmd , NULL }, < { TVMI( INPUT,INPUT_EXT1 ), "ext1Cmd" , WC_mcmd , NULL }, --- > { TVMI( INPUT,INPUT_TUNER ), "tunerCmd" , WC_mcmd , TunerCB}, > { TVMI( INPUT,INPUT_EXT1 ), "ext1Cmd" , WC_mcmd , Ext1CB }, 142,143c143,144 < { TV_TOOLITEM_CHANUP , "channelUpCmd" , WC_cmd , NULL }, < { TV_TOOLITEM_CHANDOWN , "channelDnCmd" , WC_cmd , NULL }, --- > { TV_TOOLITEM_CHANUP , "channelUpCmd" , WC_cmd , UpCB }, > { TV_TOOLITEM_CHANDOWN , "channelDnCmd" , WC_cmd , DownCB }, 160a162,210 > } > > static void Ext1CB( Widget w, XtPointer cl, XtPointer cb ) > { > Boolean ext1_on; > > XtVaGetValues( w, XtNstate, &ext1_on, > NULL ); > DBPRINTF(( "Ext1 = %s\n", ext1_on ? "yes" : "no" )); > > TVCAPTURESetExt1( 1 ); > } > > static void TunerCB( Widget w, XtPointer cl, XtPointer cb ) > { > Boolean tuner_on; > > XtVaGetValues( w, XtNstate, &tuner_on, > NULL ); > DBPRINTF(( "Tuner = %s\n", tuner_on ? "yes" : "no" )); > > TVCAPTURESetTuner( 1 ); > } > > static int channel_index = 0; > static int channels[] = > { 2, 4, 5, 7, 9, 11, 13, 20, 22, 26, 32, 45, 50, 54, 56}; > > static void UpCB( Widget w, XtPointer cl, XtPointer cb ) > { > > channel_index++; > if (channel_index >= (sizeof(channels)/sizeof(int))) > channel_index = 0; > > DBPRINTF(("channel = %d\n", channels[channel_index])); > > TVCAPTURESetChannel( channels[channel_index] ); > } > > static void DownCB( Widget w, XtPointer cl, XtPointer cb ) > { > channel_index--; > if (channel_index < 0) > channel_index = (sizeof(channels)/sizeof(int)) - 1; > > DBPRINTF(("channel = %d\n", channels[channel_index])); > > TVCAPTURESetChannel( channels[channel_index] ); Only in fxtv-0.0.2: tvmenu.o diff -r fxtv-0.0.2/tvscreen.c fxtv-0.0.2.mine/tvscreen.c 1464c1464 < bpp == 24; --- > bpp = 24; 1466c1466 < bpp == 15; --- > bpp = 15;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199703191326.IAA00402>