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.
--p