1 #include <lib/dvb/volume.h>
7 #if HAVE_DVB_API_VERSION < 3
8 #define VIDEO_DEV "/dev/dvb/card0/video0"
9 #define AUDIO_DEV "/dev/dvb/card0/audio0"
10 #include <ost/audio.h>
11 #include <ost/video.h>
13 #define VIDEO_DEV "/dev/dvb/adapter0/video0"
14 #define AUDIO_DEV "/dev/dvb/adapter0/audio0"
15 #include <linux/dvb/audio.h>
16 #include <linux/dvb/video.h>
19 eDVBVolumecontrol* eDVBVolumecontrol::instance = NULL;
21 eDVBVolumecontrol* eDVBVolumecontrol::getInstance()
24 instance = new eDVBVolumecontrol;
28 eDVBVolumecontrol::eDVBVolumecontrol()
34 int eDVBVolumecontrol::openMixer()
36 return open( AUDIO_DEV, O_RDWR );
39 void eDVBVolumecontrol::closeMixer(int fd)
44 void eDVBVolumecontrol::volumeUp(int left, int right)
46 printf("[volume.cpp] Volume up\n");
47 setVolume(leftVol + left, rightVol + right);
50 void eDVBVolumecontrol::volumeDown(int left, int right)
52 printf("[volume.cpp] Volume down\n");
53 setVolume(leftVol - left, rightVol - right);
56 int eDVBVolumecontrol::checkVolume(int vol)
65 void eDVBVolumecontrol::setVolume(int left, int right)
67 leftVol = checkVolume(left);
68 rightVol = checkVolume(right);
70 left = 63 - leftVol * 63 / 100;
71 right = 63 - rightVol * 63 / 100;
73 #if HAVE_DVB_API_VERSION < 3
79 #ifdef HAVE_DVB_API_VERSION
80 mixer.volume_left = (left * left) / 64;
81 mixer.volume_right = (right * right) / 64;
85 #ifdef HAVE_DVB_API_VERSION
86 ioctl(fd, AUDIO_SET_MIXER, &mixer);
90 printf("Setvolume: %d %d\n", leftVol, rightVol);
91 printf("Setvolume: %d %d\n", left, right);
95 if((f = fopen("/proc/stb/avs/0/volume", "wb")) == NULL) {
96 printf("cannot open /proc/stb/avs/0/volume\n");
100 fprintf(f, "%d", left);
105 int eDVBVolumecontrol::getVolume()
112 bool eDVBVolumecontrol::isMuted()
118 void eDVBVolumecontrol::volumeMute()
120 int fd = openMixer();
121 #ifdef HAVE_DVB_API_VERSION
122 ioctl(fd, AUDIO_SET_MUTE, true);
129 if((f = fopen("/proc/stb/audio/j1_mute", "wb")) == NULL) {
130 printf("cannot open /proc/stb/audio/j1_mute\n");
139 void eDVBVolumecontrol::volumeUnMute()
141 int fd = openMixer();
142 #ifdef HAVE_DVB_API_VERSION
143 ioctl(fd, AUDIO_SET_MUTE, false);
150 if((f = fopen("/proc/stb/audio/j1_mute", "wb")) == NULL) {
151 printf("cannot open /proc/stb/audio/j1_mute\n");
160 void eDVBVolumecontrol::volumeToggleMute()