[linux-audio-dev] What's the best audio IO API on Linux

Paul Davis paul at linuxaudiosystems.com
Mon Sep 15 07:33:00 UTC 2003


a few corrections:

>Well, the main differences between the OSS-Layer and ALSA are:
>1.) alsa is the new driver in linux kernel >= 2.6.X
>2.) oss-layers need ioctl() - calls to manage/configure sound devices (and  ioctl() 
>calls
>are just possible for root-users !!!!!),so oss is really user-unfriendly if you want
> to programm a application

this isn't true. any user that can open a device can call ioctl on the
device. the real difference in the API design between the two is that
in OSS, you make system calls (open/read/write/close/ioctl/mmap etc)
directly, which means that any transformation of the data or other
"clever" stuff has to happen inside the device driver as part of the
kernel. in ALSA, you make library calls (snd_pcm_open, etc), which
allows ALSA to have a rich set of "plugins" that can transform the
data, virtualize the device, and do all kinds of other things, all in
a user-space library where it can do no harm to anything except your
application. 

but i'll put it a little more strongly: NOBODY in 2003 should start a
new application using the OSS API. NOBODY.

>5.) alsa is basicly said a "wrapper", a front-end of the oss-arch and it is highly r
>ecommended to use alsa at all.

its not a wrapper. the low level kernel drivers are completely
different implementations compared to the OSS ones. its just that ALSA
provides the old OSS API for compatibility.

anyway, as others noted, you'd probably be much better using either
PortAudio or JACK (jackit.sf.net). they both encourage the "correct"
programming model for your application, and JACK in particular removes
all of the endless grunt work of setting up the audio interface
parameters, figuring out how to get data to/from the card, etc.

--p



More information about the Linux-audio-dev mailing list