Linux Audio Output APIs

About a month ago I took a long afternoon being like "Okay whatever let's see how deep the rabbit hole of linux audio playback goes" (previously, previously). That was a mistake I guess but let's at least avoid others from doing the same and so share what I did as it's fairly complete (patches with reference/citations welcome btw).

I consider here as an Audio Output API any reused code which takes a PCM audio stream as input and which is designed to end up to the sound card at some point. In a simple system there should just be some decoders and cross-platform librairies going to the system native API (ones which are nicely desgined being SunAudio and Plan9 audio).

You'll definitely need a large screen if you want to see the whole thing at once.

Other formats

Changelog

2021-09-11
  • New paths: sox → sndio ; OpenAL → sndio
  • Removed "OpenSL ES", it's pretty much Android-only, which is considered out-of-scope
  • Removed "network card" target, it should be redone per-protocol, in probably a dedicated graph
  • Removed "filesystem" and "null" targets, this is more for diagnostics purposes and graphviz doesn't have layers
  • Removed "?" target, in favor of going nowhere
  • Added Legend

Cleaned out variant

This is a variant which only contains APIs/software which is available in current distributions rather than including all the paths that are technically still present in codebases.

Other formats

See Also

A similar kind of thing was done by an Adobe employe in 2006~2007 in an article named Welcome To The Jungle.

Fediverse post for comments, published on 2020-06-30T07:10:20Z, last updated on 2021-09-11T04:07:00Z