On Fri, 10 Oct 2003, Paul Davis wrote:
You say that
the alsa kernel drivers export the hardware capabilities to
user level.
Would it be possible to write an API in C++ for ALSA then, basically
not using the alsalib, but the fast hardware abstraction ?
its certainly possible. whether its worth it is another
question. using alsa-lib on a "hw:N" ALSA device adds very very little
code to the execution path. i take it that you understand that the
"hw:N" devices presented by alsa-lib correspond precisely to the
hardware-limited capabilities offered by the hardware? that is, access
to these devices has to use parameters offered by the hardware, and no
format conversion, channel mapping, rate conversion or anything else
is done by alsa-lib. you basically get to the system calls and then
into the kernel in 1-3 layers of function calls, which is likely as
good as you'd get in another library.
if you want C++, i think you'd be better off wrapping alsa-lib. i can
see no reason to implement another library that has to handle the
kernel API (read, write, ioctl, open, close, etc.).
but yes, its possible.
Thanks for the clarifications. Actually I was thinking in terms
of the OSX driver structure you mentioned, but of course, you were
talking about the kernel modules, while I was thinking about the
user level alsalib (which has nothing to do with driver programming
per se).
Anyhow, last but not least, I think the rtaudio should be mentioned
in this context
http://www-ccrma.stanford.edu/~gary/rtaudio/,
which to my understanding the C++ wrapper around alsa-lib that you
mention. (and more ..)
Guenter