Rumination on ALSA Drivers










Takashi Iwai

SuSE Linux AG, Nuremberg, Germany

LAD Meeting, March 14, 2003
Karlsruhe, Germany


(page 1)


Outline








(page 2)


Characteristics of ALSA

Advanced Linux Sound Architecture









(page 3)


History - CVS Check-In Statistics

alsa-checkin.gif



(page 4)


Structure

alsa-flow.gif


(page 5)


We Are Not Alone...


Different format types

formats.gif


(page 6)


Plugins - Behind the Scene


pcm-route.gif

pcm-share.gif

pcm-multi.gif



(page 7)


OSS Emulation






(page 8)


Driver Hierarchy








(page 9)


Different Hardwares







(page 10)


Different Hardwares (cont'd)






(page 11)


Memory Management

Memory Allocation


Large continuous physical memory





(page 12)


Buffer Types








(page 13)


Example - Emu10k1 Buffers

emu10k1-mem.gif


(page 14)


Memory Mapping


To Be or Not To Be?





(page 15)


Mixers


Handled via ALSA control API



OSS mixer elements are composed from the IDs

Line = Line Playback Volume, Line Playback Switch, Line Capture Volume...


(page 16)


More Is Better...?


There are too many mixer elements


Need to handle card-specific mixer-topology.



(page 17)


Future Works / TODOs








(page 18)


Resources


ALSA project homepage
http://www.alsa-project.org

ALSA Wiki
http://alsa.opensrc.org

Linux Audio Developers
http://www.linuxdj.com/audio/lad/

ALSA Driver's HOWTO
http://www.alsa-project.org/~iwai/writing-an-alsa-driver/

HTTP version of these slides
http://www.alsa-project.org/~iwai/lad2003/lad.html

(page 19)