PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Volumesteuerung unter Linux



totycro
08-08-2007, 18:29
Mein Programm soll die Lautstärke systemweit verändern und abfragen können und der Code funktioniert bei mir auch.
Mein Problem ist nur, dass ich nicht weiß, ob das so bei jedem System funktioniert; ich habe nicht wirklich Erfahrung mit lowlevel-funktionen wie ioctl, die ich hier verwendet habe:


// includes für open, ioctl..
#include <linux/soundcard.h>

void setVol(int _vol)
{
int mixer;

if ( (mixer = open("/dev/mixer", O_RDWR)) < 0)
{
// error
}

// _vol ist ein wert von 0-100, mit dem bitshifting soll der für links und rechts verwendet werden
_vol = _vol + (_vol << 8);

if( ioctl(mixer, MIXER_WRITE(SOUND_MIXER_PCM), &_vol) == -1)
{
// error
}

close(mixer);
}


int getVol()
{
// das selbe wie oben hier

int vol;
if( ioctl(mixer, MIXER_READ(SOUND_MIXER_PCM), &vol) == -1)
{
// error
}

// wie oben, ich nehme an, dass der wert für links und rechts ident ist
vol = vol >> 8;
return vol;
}