On Tue, 2008-03-11 at 16:14 -0400, Ross S. W. Walker wrote:
Ignacio Vazquez-Abrams wrote:
On Tue, 2008-03-11 at 11:59 -0400, Ross S. W. Walker wrote:
I have been working a while trying to get a big picture of how Linux handles sound processing and after much work I have put together this little representation of what I have learned.
Please send me any additional comments or components that I may have missed.
Some corrections (PulseAudio contains an ALSA module that can redirect audio back into PA):
ALSA provides an ALSA driver in it's plugins to send audio to a PulseAudio server, so that part is pure ALSA. I mean sure it uses PulseAudio's protocol to send over the network, but as far as ALSA is concerned it's just another ALSA kernel driver for communicating with sound hardare. The PulseAudio server by itself is of course a pure sound server.
Having said that, I don't believe that the ALSA driver for PulseAudio counts as yet another interface.
No, but it does place part of ALSA above (in front of?) part of PA. (JACK and OSS also have similar ALSA plugins, although I don't see the point of the OSS module)
Also sound servers can and do use third party API products such as GStreamer.
"Can" far, far more than "do". The only concrete evidence of that I was able to find were the PA GStreamer and JACK plugins. I was unable to find any evidence that ESD or aRts use third-party APIs, only ALSA and OSS. (Incidentally, I found that NAS can only use OSS. Yet another reason for it to die.)
Often GStreamer provides those plugins on behalf of the sound server (cause no one else wants to), but the plugin is still part of the sound server and as far as the sound server is concerned it is just sending audio directly to the hardware API.
It's just sending audio, period. It's not at all concerned with where it ends up, just that it moves to the next stage.
GStreamer/Phonon also have plugins for communicating with sound servers as well as HW APIs such as ALSA or OSS. When diagramming these third party APIs things can ugly pretty darn fast.
Indeed. And I also think that an ASCII diagram is no longer sufficient for showing the details.