linux-audio-output.xhtml (3264B)
- <article xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" class="h-entry">
- <a href="/articles/linux-audio-output"><h1>Linux Audio Output APIs</h1></a>
- <p>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" (<a href="https://queer.hacktivis.me/objects/33fc99e9-c901-4764-8b75-27d78bf7cc7d">previously</a>, <a href="https://queer.hacktivis.me/objects/3a5e4919-e8ee-4e4c-b50c-899f4afac678">previously</a>). 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).</p>
- <p>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).</p>
- <figure><img loading="lazy" title="Linux Audio Output APIs" src="/images/linux-audio-output.svg?serial=2021091104" /></figure>
- <p>You'll definitely need a large screen if you want to see the whole thing at once.</p>
- <h3>Other formats</h3>
- <ul>
- <li><a href="/images/linux-audio-output.dot">Graphviz DOT</a>: source, has comments and URLs</li>
- <li><a href="/images/linux-audio-output.svg">SVG</a>: access to URLs and can hover lines to see origin and destination</li>
- <li><a href="/images/linux-audio-output.png">PNG</a></li>
- </ul>
- <h3>Changelog</h3>
- <dl>
- <dd>2021-09-11</dd><dt>
- <ul>
- <li>New paths: sox → sndio ; OpenAL → sndio</li>
- <li>Removed "OpenSL ES", it's pretty much Android-only, which is considered out-of-scope</li>
- <li>Removed "network card" target, it should be redone per-protocol, in probably a dedicated graph</li>
- <li>Removed "filesystem" and "null" targets, this is more for diagnostics purposes and graphviz doesn't have layers</li>
- <li>Removed "?" target, in favor of going nowhere</li>
- <li>Added Legend</li>
- </ul>
- </dt>
- </dl>
- <h2>Cleaned out variant</h2>
- <p>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.</p>
- <figure><img loading="lazy" title="Linux Audio Output APIs" src="/images/linux-audio-output-current.svg?serial=2021091103" /></figure>
- <h3>Other formats</h3>
- <ul>
- <li><a href="/images/linux-audio-output-current.dot">Graphviz DOT</a>: source, has comments and URLs</li>
- <li><a href="/images/linux-audio-output-current.svg">SVG</a>: access to URLs and can hover lines to see origin and destination</li>
- <li><a href="/images/linux-audio-output-current.png">PNG</a></li>
- </ul>
- <h2>See Also</h2>
- <p>A similar kind of thing was done by an Adobe employe in 2006~2007 in an article named <q><a href="http://web.archive.org/web/20120331050917/http://blogs.adobe.com/penguinswf/2007/05/welcome_to_the_jungle.html">Welcome To The Jungle</a></q>.</p>
- <p><a href="https://queer.hacktivis.me/objects/7c5e3b69-ebfd-4a79-91a9-1fa7140d5436">Fediverse post for comments</a>, published on 2020-06-30T07:10:20Z, last updated on 2021-09-11T04:07:00Z</p>
- </article>