This is an automatic generated email to let you know that the following patch were queued at the http://git.linuxtv.org/xawtv3.git tree:
Subject: Port radio to use V4L2 API Author: Mauro Carvalho Chehab <[email protected]> Date: Thu Jan 27 19:38:24 2011 -0200 Signed-off-by: Mauro Carvalho Chehab <[email protected]> console/radio.c | 92 ++++++++++++++++++++++++++++++------------------------ 1 files changed, 51 insertions(+), 41 deletions(-) --- http://git.linuxtv.org/xawtv3.git?a=commitdiff;h=06310c43aef8fcaf13bae67471fa2c5cd377278e diff --git a/console/radio.c b/console/radio.c index e2964be..ff5b538 100644 --- a/console/radio.c +++ b/console/radio.c @@ -28,7 +28,9 @@ #include <sys/time.h> #include <sys/ioctl.h> -#include "videodev.h" +#include <linux/types.h> + +#include "videodev2.h" #define FREQ_MIN 87500000 #define FREQ_MAX 108000000 @@ -49,76 +51,84 @@ static int radio_setfreq(int fd, float freq) { int ifreq = (freq + .5/freqfact) * freqfact; - return ioctl(fd, VIDIOCSFREQ, &ifreq); + struct v4l2_frequency frequency; + + memset (&frequency, 0, sizeof(frequency)); + frequency.type = V4L2_TUNER_RADIO; + frequency.frequency = ifreq; + return ioctl(fd, VIDIOC_S_FREQUENCY, &frequency); } static int radio_getfreq(int fd, float *freq) { int ioctl_status; int ifreq; - ioctl_status = ioctl(fd,VIDIOCGFREQ, &ifreq); + struct v4l2_frequency frequency; + + memset (&frequency, 0, sizeof(frequency)); + + ioctl_status = ioctl(fd, VIDIOC_G_FREQUENCY, &frequency); if (ioctl_status == -1) return ioctl_status; + + ifreq = frequency.frequency; *freq = (float) ifreq / freqfact; return 0; } static void -radio_unmute(int fd) +radio_mute(int fd, int mute) { - struct video_audio vid_aud; - - if (ioctl(fd, VIDIOCGAUDIO, &vid_aud)) - perror("VIDIOCGAUDIO"); - if (vid_aud.volume == 0) - vid_aud.volume = 65535; - vid_aud.flags &= ~VIDEO_AUDIO_MUTE; - if (ioctl(fd, VIDIOCSAUDIO, &vid_aud)) - perror("VIDIOCSAUDIO"); -} + struct v4l2_control ctrl; -static void -radio_mute(int fd) -{ - struct video_audio vid_aud; + memset (&ctrl, 0, sizeof(ctrl)); + ctrl.id = V4L2_CID_AUDIO_MUTE; + ctrl.value = mute; - if (ioctl(fd, VIDIOCGAUDIO, &vid_aud)) - perror("VIDIOCGAUDIO"); - vid_aud.flags |= VIDEO_AUDIO_MUTE; - if (ioctl(fd, VIDIOCSAUDIO, &vid_aud)) - perror("VIDIOCSAUDIO"); + if (ioctl(fd, VIDIOC_S_CTRL, &ctrl)); + perror("VIDIOC_S_CTRL"); } static void radio_getstereo(int fd) { - struct video_audio va; - va.mode=-1; + struct v4l2_tuner tuner; if (!ncurses) return; + + memset (&tuner, 0, sizeof(tuner)); - if (ioctl (fd, VIDIOCGAUDIO, &va) < 0) + if (ioctl (fd, VIDIOC_G_TUNER, tuner)) { mvwprintw(wfreq,2,1," "); - mvwprintw(wfreq,2,1,"%s", va.mode == VIDEO_SOUND_STEREO ? + perror("VIDIOC_G_TUNER"); + return; + } + + mvwprintw(wfreq,2,1,"%s", (tuner.rxsubchans & V4L2_TUNER_SUB_STEREO)? "STEREO":" MONO "); } static int radio_getsignal(int fd) { - struct video_tuner vt; - int i,signal; + struct v4l2_tuner tuner; + int signal, i; + + memset (&tuner, 0, sizeof(tuner)); + + if (ioctl (fd, VIDIOC_G_TUNER, tuner)) { + perror("VIDIOC_G_TUNER"); + return 0; + } - memset(&vt,0,sizeof(vt)); - ioctl (fd, VIDIOCGTUNER, &vt); - signal=vt.signal>>13; + signal = (tuner.signal)>>13; if (!ncurses) return signal; - for(i=0;i<8;i++) - mvwprintw(wfreq,3,i+1,"%s", signal>i ? "*":" "); + for(i = 0; i < 8; i++) + mvwprintw(wfreq, 3, i+1, "%s", signal>i ? "*" : " "); return signal; } @@ -397,7 +407,7 @@ main(int argc, char *argv[]) float ffreq, newfreq = 0; int stset = 0, c; int quit=0, scan=0, arg_mute=0; - struct video_tuner tuner; + struct v4l2_tuner tuner; setlocale(LC_ALL,""); @@ -452,8 +462,8 @@ main(int argc, char *argv[]) } memset(&tuner,0,sizeof(tuner)); - if (0 == ioctl(fd, VIDIOCGTUNER, &tuner) && - (tuner.flags & VIDEO_TUNER_LOW)) + if (0 == ioctl(fd, VIDIOC_G_TUNER, &tuner) && + (tuner.capability & V4L2_TUNER_CAP_LOW)) freqfact = 16000; /* non-interactive stuff */ @@ -468,11 +478,11 @@ main(int argc, char *argv[]) ffreq = (float)ifreq / 1000000; fprintf(stderr,"tuned %.2f MHz\n",ffreq); radio_setfreq(fd,ffreq); - radio_unmute(fd); + radio_mute(fd, 0); } if (arg_mute) { fprintf(stderr,"muted radio\n"); - radio_mute(fd); + radio_mute(fd, 1); } if (quit) exit(0); @@ -548,7 +558,7 @@ main(int argc, char *argv[]) ifreq = ffreq * 1000000; } - radio_unmute(fd); + radio_mute(fd, 0); for (done = 0; done == 0;) { if (ifreq != lastfreq) { lastfreq = ifreq; @@ -673,7 +683,7 @@ main(int argc, char *argv[]) } } if (mute) - radio_mute(fd); + radio_mute(fd, 1); close(fd); bkgd(0); _______________________________________________ linuxtv-commits mailing list [email protected] http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits
