Upload
filicio
View
213
Download
1
Embed Size (px)
DESCRIPTION
Tutorial drive som
Citation preview
OSS (Open Sound System) Tutorial
OSS (Open Sound System) Tutorial
OSS
OSSUnix(Unix)OSSLinux kernel
OSSAPI
Mixer :
Device File on Linux/dev/mixer
Codec (ADC/DAC): ()()
Device File on Linux/dev/dsp
1. include OSS API
2. open a device file, get the file descriptor
3. use ioctl function to control the device property
4. read from device, write to device or do nothing5. close the device file
#include #include
#include
#include
int main() {
int mixer_fd;
if ((mixer_fd = open(/dev/mixer,O_RDONLY,0)) == -1) {
perror(mixer);
exit(1);
}int vol = 0x3f3f;
ioctl(mixer_fd, MIXER_WRITE(SOUND_MIXER_VOLUME),&vol);close(mixer_fd);
return 0;}
Mixer Programming
Mixer Programming
Mixer Channelsmixer channelmixerchannelOSSOSS APIMacro
Channel MacrosMarcoDescription
SOUND_MIXER_VOLUME
SOUND_MIXER_TREBLEchannel
SOUND_MIXER_BASSchannel
SOUND_MIXER_PCM(/dev/dsp)
SOUND_MIXER_MIC
SOUND_MIXER_CDCD
SOUND_MIXER_LINEplayer
SOUND_MIXER_NRDEVICES : soundcard.hchannel
0 100
int vol;
ioctl(mixer_fd, MIXER_READ(channel_macro) , &vol);
int vol = 0x5f5f;
ioctl(mixer_fd, MIXER_WRITE(channel_macro) , &vol);
channel_macroMixer Channel Macro
Undefined
16 bits 8 bits 8 bits
=
Ex. int vol = 0x 5f5f
Ex. int vol = 0x 5f;
MixerMacroDescription
SOUND_MIXER_READ_DEVMASKMixer Channels
SOUND_MIXER_READ_RECMASKMixer Channels
SOUND_MIXER_READ_STEREODEVSMixer Channels
:
int mask;
ioctl(mixer_fd, SOUND_MIXER_READ_xxxx, &mask);
OSSMixer Channelsmasknbit1nChannelenable
Channel:
if (mask & (1