git.cweiske.de
/
enigma2.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
9933f44
)
fix volume scaling
author
Felix Domke
<tmbinc@elitedvb.net>
Sat, 28 Jan 2006 01:23:22 +0000
(
01:23
+0000)
committer
Felix Domke
<tmbinc@elitedvb.net>
Sat, 28 Jan 2006 01:23:22 +0000
(
01:23
+0000)
lib/dvb/volume.cpp
patch
|
blob
|
history
diff --git
a/lib/dvb/volume.cpp
b/lib/dvb/volume.cpp
index 9cfcf2ee65221bd70c6cd855c529bdfc4e38e2cb..8a88480f331f7b7a0dcb129bf47169922c916b89 100644
(file)
--- a/
lib/dvb/volume.cpp
+++ b/
lib/dvb/volume.cpp
@@
-64,40
+64,49
@@
int eDVBVolumecontrol::checkVolume(int vol)
void eDVBVolumecontrol::setVolume(int left, int right)
{
void eDVBVolumecontrol::setVolume(int left, int right)
{
+ /* left, right is 0..100 */
leftVol = checkVolume(left);
rightVol = checkVolume(right);
leftVol = checkVolume(left);
rightVol = checkVolume(right);
+ /* convert to -1dB steps */
left = 63 - leftVol * 63 / 100;
right = 63 - rightVol * 63 / 100;
left = 63 - leftVol * 63 / 100;
right = 63 - rightVol * 63 / 100;
-
+ /* now range is 63..0, where 0 is loudest */
+
#if HAVE_DVB_API_VERSION < 3
#if HAVE_DVB_API_VERSION < 3
-
audioMixer_t mixer;
+ audioMixer_t mixer;
#else
#else
-
audio_mixer_t mixer;
+ audio_mixer_t mixer;
#endif
#ifdef HAVE_DVB_API_VERSION
#endif
#ifdef HAVE_DVB_API_VERSION
- mixer.volume_left = (left * left) / 64;
- mixer.volume_right = (right * right) / 64;
+ /* convert to linear scale. 0 = loudest, ..63 */
+ mixer.volume_left = 63.0-pow(1.068241, 63-left);
+ mixer.volume_right = 63.0-pow(1.068241, 63-right);
#endif
#endif
- int fd = openMixer();
+ printf("Setvolume: %d %d (raw)\n", leftVol, rightVol);
+ printf("Setvolume: %d %d (-1db)\n", left, right);
+ printf("Setvolume: %d %d (lin)\n", mixer.volume_left, mixer.volume_right);
+
+ int fd = openMixer();
+ if (fd >= 0)
+ {
#ifdef HAVE_DVB_API_VERSION
ioctl(fd, AUDIO_SET_MIXER, &mixer);
#endif
closeMixer(fd);
#ifdef HAVE_DVB_API_VERSION
ioctl(fd, AUDIO_SET_MIXER, &mixer);
#endif
closeMixer(fd);
-
- printf("Setvolume: %d %d\n", leftVol, rightVol);
- printf("Setvolume: %d %d\n", left, right);
-
+ return;
+ }
+
//HACK?
FILE *f;
if((f = fopen("/proc/stb/avs/0/volume", "wb")) == NULL) {
printf("cannot open /proc/stb/avs/0/volume\n");
return;
}
//HACK?
FILE *f;
if((f = fopen("/proc/stb/avs/0/volume", "wb")) == NULL) {
printf("cannot open /proc/stb/avs/0/volume\n");
return;
}
-
- fprintf(f, "%d", left);
+
+ fprintf(f, "%d", left);
/* in -1dB */
fclose(f);
}
fclose(f);
}