ALSA Audio Driver
The below figure
shows audio connection on a PC compatible system; the audio controller on the
south bridge, together with an external codec, interfaces with analog audio
circuitry.
Figure: Audio in a PC environment
An audio codec
converts digital audio data to analog sound signals for playing via speakers
and performs the reverse operation for recording via a microphone. Other common
audio inputs and outputs that interface with a codec include headsets,
earphone, hand free, line in and line Out. A codec offers mixer functionality
that connects it to a combination of these audio outputs and inputs and
controls the volume gain associated with audio signal.
Digital data is
obtained by sampling audio analog signals at specific bit rates using a
technique called pulse code modulation (PCM). CD quality is for example sound
sampled at 44.1 KHz, using 16 bits to hold each sample. A codec is responsible
for recording audio by sampling at supported PCM bit rates and for playing
audio originally sampled at different bit rates.
Linux Sound Sub System
Advanced Linux Sound
Architecture (ALSA) is the sound sub system in 2.6 Kernel. Open Sound System
(OSS), the sound layer in the 2.4 layer is now obsolete and depreciated.
The following figure
shows the Linux sound sub system;
Figure: Linux Sound Sub System (ALSA)
1). The following
/dev/snd/* device nodes are created and managed by the ALSA core.
/dev/snd/controlC0 is a control node that application uses for controlling
volume gain and such. /dev/snd/pcmC0D0P is a play back device. /dev/snd/pcmD0C
is a recording device.
2). Audio controller
drivers specific to the controller hardware . To drive the audio controller
present in the intel ICH south bridge chipsets e.g. use the snd_intel8x0
driver.
3). Audio codec
interface that assist communication between controllers and codecs for AC’ 97
codec used the snd_ac97_codec and ac97_bus modules.
4). The nodes
/dev/adsp and /dev/mixer allow OSS application to run unchanged over ALSA. The
OSS /dev/dsp node maps to ALSA nodes /dev/snd/pcmC0D0; /dev/adsp corresponds to
/dev/snd/pcmC0D1* and /dev/mixer associates with /dev/snd/ControlC0.
5). Procfs and sysfc
interface implementations for accessing info via /proc/aSound and
/Sys/class/sound.
6). The user space
ALSA library alsa-lib which provides the libSound.so object. The library passes
the job of the ALSA application programming by offering several canned routines
to access ALSA drivers.
Tools and Links
Answers of FAQ
pertaining to Linux
MadPlay is a
software MP3 decoder and player that are both ALSA and OSS aware.
It is used for basic
playback and recording.
Data Structure and API
The figures show the
list of data structure and API used in developing the ALSA driver.
Figure: Summary of data structures
No comments:
Post a Comment