logo

blog

My website can't be that messy, right? git clone https://hacktivis.me/git/blog.git
commit: 5ecb924e1620a368ca54c8bf8d2282f107bf0fe3
parent 0ffde84ea61320f68c25c3294ab302970a40546e
Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
Date:   Sat, 11 Sep 2021 06:06:25 +0200

linux audio output: More cleaning, -current variant

Diffstat:

MMakefile16+++++++++++++++-
Marticles/linux-audio-output.xhtml27++++++++++++++++++++++-----
Aimages/linux-audio-output-current.dot157+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aimages/linux-audio-output-current.png0
Aimages/linux-audio-output-current.svg800+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aimages/linux-audio-output-obsolete.txt6++++++
Mimages/linux-audio-output.dot39++++++++++++++-------------------------
Mimages/linux-audio-output.png0
Mimages/linux-audio-output.svg1179+++++++++++++++++++++++++++++++++++++------------------------------------------
9 files changed, 1569 insertions(+), 655 deletions(-)

diff --git a/Makefile b/Makefile @@ -1,10 +1,24 @@ -all: bookmarks.shtml images/linux-audio-output.png images/linux-audio-output.svg +.PHONY: all +all: bookmarks.shtml linux-audio-output bookmarks.shtml: bookmarks.xbel bookmarks.xsl xsltproc --nonet -o $@ bookmarks.xsl bookmarks.xbel +.PHONY: linux-audio-output +linux-audio-output: images/linux-audio-output.png images/linux-audio-output.svg images/linux-audio-output-current.png images/linux-audio-output-current.svg + images/linux-audio-output.png: images/linux-audio-output.dot dot -Tpng $< > $@ images/linux-audio-output.svg: images/linux-audio-output.dot dot -Tsvg $< > $@ + +images/linux-audio-output-current.dot: images/linux-audio-output.dot images/linux-audio-output-obsolete.txt + grep -v -f images/linux-audio-output-obsolete.txt $< > $@ + sed -i 's;Linux Audio Output APIs[^"]*;Linux Audio Output APIs (current-only);' $@ + +images/linux-audio-output-current.png: images/linux-audio-output-current.dot + dot -Tpng $< > $@ + +images/linux-audio-output-current.svg: images/linux-audio-output-current.dot + dot -Tsvg $< > $@ diff --git a/articles/linux-audio-output.xhtml b/articles/linux-audio-output.xhtml @@ -2,18 +2,35 @@ <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=2021091101" /></figure> +<figure><img loading="lazy" title="Linux Audio Output APIs" src="/images/linux-audio-output.svg?serial=2021091102" /></figure> <p>You'll definitely need a large screen if you want to see the whole thing at once.</p> -<h2>Other formats</h2> +<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> -<h2>Changelog</h2> +<h3>Changelog</h3> <dl> - <dd>2021-09-11</dd><dt>sox → sndio ; OpenAL → sndio</dt> + <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 "?" target, in favor of going nowhere</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=2021091101" /></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 2020-06-30T08:07:00Z</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> diff --git a/images/linux-audio-output-current.dot b/images/linux-audio-output-current.dot @@ -0,0 +1,157 @@ +digraph "Linux Audio Output APIs (current-only)" { + node [ shape=ellipse style=filled ]; + label="Linux Audio Output APIs (current-only) + CC-BY 4.0 © 2020-2021 Haelwenn (lanodan) Monnier + https://hacktivis.me/articles/linux-audio-output"; + + "sound card" [ shape=box fillcolor=cyan ]; + "phone modem" [ shape=box fillcolor=cyan ]; + "Bluetooth card" [ shape=box fillcolor=cyan ]; + filesystem [ shape=octagon fillcolor=yellow ]; + null [ shape=diamond fillcolor=red ]; + + portaudio [ URL="https://app.assembla.com/spaces/portaudio/git/source/master/src/hostapi/" ]; + portaudio -> ALSA; + portaudio -> JACK; + // through a patch + portaudio -> sndio; + + // https://rudd-o.com/linux-and-free-software/how-pulseaudio-works + PulseAudio [ URL="https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules/" ]; + PulseAudio -> ALSA; + PulseAudio -> null [ color=red ]; + PulseAudio -> "sound card" [ color=green ]; + PulseAudio -> JACK; + PulseAudio -> bluez; + PulseAudio -> ofono; + PulseAudio -> sox; + "X11 bell" -> PulseAudio; + + PipeWire [ URL="http://pipewire.org/" ]; + PulseAudio -> PipeWire [ dir=both ]; + ALSA -> PipeWire [ dir=both ]; + JACK -> PipeWire [ dir=both ]; + PipeWire -> bluez; + gstreamer -> PipeWire; + + ofono [ shape=octagon fillcolor=yellow ]; + ofono -> "phone modem" [ color=green ]; + + bluez [ label="BlueZ" shape=octagon fillcolor=yellow ]; + ALSA -> bluez; + bluez -> "Bluetooth card" [ color=green ]; + + sox [ URL="http://sox.sourceforge.net/Docs/Features" ]; + sox -> filesystem; + sox -> null [ color=red ]; + sox -> libao; + sox -> PulseAudio; + sox -> ALSA; + sox -> sndio; + + libao [ URL="https://www.xiph.org/ao/" ]; + libao -> filesystem; + libao -> ALSA; + libao -> PulseAudio; + libao -> null [ color=red ]; + libao -> NAS; + libao -> RoarAudio; + libao -> sndio; + + RoarAudio [ URL="http://roaraudio.keep-cool.org/" ]; + RoarAudio -> sndio; + RoarAudio -> PulseAudio; + + // Probably incomplete, need some proper documentation + + libcanberra [ URL="http://git.0pointer.net/libcanberra.git/tree/src/driver-order.c" ]; + libcanberra -> PulseAudio; + libcanberra -> ALSA; + libcanberra -> gstreamer; + libcanberra -> null [ color=red ]; + + sndio [ URL="http://www.sndio.org/" ]; + sndio -> ALSA; + PulseAudio -> sndio; + ALSA -> sndio; + gstreamer -> sndio; + + OpenAL [ URL="https://www.openal-soft.org/" ]; + OpenAL -> PulseAudio; + OpenAL -> ALSA; + OpenAL -> SoundIO; + OpenAL -> portaudio; + OpenAL -> JACK; + OpenAL -> filesystem; + OpenAL -> sndio; + OpenAL -> null [ color=red ]; + + SoundIO [ URL="http://libsound.io/" ]; + SoundIO -> JACK; + SoundIO -> PulseAudio; + SoundIO -> ALSA; + SoundIO -> null [ color=red ]; + + RtAudio [ URL="https://www.music.mcgill.ca/~gary/rtaudio/apinotes.html" ]; + RtAudio -> ALSA; + RtAudio -> JACK; + RtAudio -> PulseAudio; + + // This shit is the hardest to find any documentation for + JUCE -> ALSA; + JUCE -> JACK; + + ALSA [ shape=octagon URL="https://alsa-project.org/wiki/Asoundrc#Plugins" fillcolor=yellow ]; + ALSA -> "sound card" [ color=green ]; + ALSA -> PulseAudio; + ALSA -> JACK; + ALSA -> null [ color=red ]; + ALSA -> filesystem; + + + // https://wiki.libsdl.org/FAQUsingSDL + + SDL2 [ label="libSDL-2.0" URL="https://hg.libsdl.org/SDL/file/355a4f94a782" ]; + SDL2 -> ALSA; + SDL2 -> filesystem; + SDL2 -> JACK; + SDL2 -> NAS; + // Maybe SDL2 -> "NaCL"; + SDL2 -> null [ color=red ]; + SDL2 -> PulseAudio; + SDL2 -> sndio; + + + // And then where the hell does it goes? + NAS [ label="Network Audio System/Server" URL="http://radscan.com/nas.html" ] + + gstreamer -> ALSA; + gstreamer -> JACK; + gstreamer -> PulseAudio; + + phonon -> gstreamer; + phonon -> VLC; + phonon -> PulseAudio; + + ClanLib [ URL="https://github.com/sphair/ClanLib/tree/master/Sources/Sound/Platform/Linux" ]; + ClanLib -> ALSA; + + allegro [ URL="https://github.com/liballeg/allegro5/tree/master/addons/audio" ]; + allegro -> OpenAL; + allegro -> PulseAudio; + allegro -> SDL2; + + telepathy -> "phone modem" [ label="?" fontcolor=red ]; + + VLC [ URL="https://code.videolan.org/videolan/vlc/-/tree/master/modules/audio_output" ]; + VLC -> null [ color=red ]; + VLC -> ALSA; + VLC -> filesystem; + VLC -> JACK; + VLC -> PulseAudio; + VLC -> sndio; + + pcaudiolib [ URL="https://github.com/espeak-ng/pcaudiolib" ]; + pcaudiolib -> ALSA; + pcaudiolib -> PulseAudio; +} diff --git a/images/linux-audio-output-current.png b/images/linux-audio-output-current.png Binary files differ. diff --git a/images/linux-audio-output-current.svg b/images/linux-audio-output-current.svg @@ -0,0 +1,800 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Generated by graphviz version 2.47.1 (20210417.1919) + --> +<!-- Title: Linux Audio Output APIs (current&#45;only) Pages: 1 --> +<svg width="1754pt" height="695pt" + viewBox="0.00 0.00 1754.00 695.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 691)"> +<title>Linux Audio Output APIs (current&#45;only)</title> +<polygon fill="white" stroke="transparent" points="-4,4 -4,-691 1750,-691 1750,4 -4,4"/> +<text text-anchor="middle" x="873" y="-37.8" font-family="Times,serif" font-size="14.00">Linux Audio Output APIs (current&#45;only)</text> +<text text-anchor="middle" x="873" y="-22.8" font-family="Times,serif" font-size="14.00"> CC&#45;BY 4.0 © 2020&#45;2021 Haelwenn (lanodan) Monnier</text> +<text text-anchor="middle" x="873" y="-7.8" font-family="Times,serif" font-size="14.00"> https://hacktivis.me/articles/linux&#45;audio&#45;output</text> +<!-- sound card --> +<g id="node1" class="node"> +<title>sound card</title> +<polygon fill="cyan" stroke="black" points="1003.5,-322 908.5,-322 908.5,-286 1003.5,-286 1003.5,-322"/> +<text text-anchor="middle" x="956" y="-300.3" font-family="Times,serif" font-size="14.00">sound card</text> +</g> +<!-- phone modem --> +<g id="node2" class="node"> +<title>phone modem</title> +<polygon fill="cyan" stroke="black" points="665.5,-235 548.5,-235 548.5,-199 665.5,-199 665.5,-235"/> +<text text-anchor="middle" x="607" y="-213.3" font-family="Times,serif" font-size="14.00">phone modem</text> +</g> +<!-- Bluetooth card --> +<g id="node3" class="node"> +<title>Bluetooth card</title> +<polygon fill="cyan" stroke="black" points="421,-89 299,-89 299,-53 421,-53 421,-89"/> +<text text-anchor="middle" x="360" y="-67.3" font-family="Times,serif" font-size="14.00">Bluetooth card</text> +</g> +<!-- filesystem --> +<g id="node4" class="node"> +<title>filesystem</title> +<polygon fill="yellow" stroke="black" points="1265.72,-136.54 1265.72,-151.46 1228.98,-162 1177.02,-162 1140.28,-151.46 1140.28,-136.54 1177.02,-126 1228.98,-126 1265.72,-136.54"/> +<text text-anchor="middle" x="1203" y="-140.3" font-family="Times,serif" font-size="14.00">filesystem</text> +</g> +<!-- null --> +<g id="node5" class="node"> +<title>null</title> +<polygon fill="red" stroke="black" points="1082,-162 1041.61,-144 1082,-126 1122.39,-144 1082,-162"/> +<text text-anchor="middle" x="1082" y="-140.3" font-family="Times,serif" font-size="14.00">null</text> +</g> +<!-- portaudio --> +<g id="node6" class="node"> +<title>portaudio</title> +<g id="a_node6"><a xlink:href="https://app.assembla.com/spaces/portaudio/git/source/master/src/hostapi/" xlink:title="portaudio"> +<ellipse fill="lightgrey" stroke="black" cx="1353" cy="-523" rx="55.79" ry="18"/> +<text text-anchor="middle" x="1353" y="-519.3" font-family="Times,serif" font-size="14.00">portaudio</text> +</a> +</g> +</g> +<!-- ALSA --> +<g id="node7" class="node"> +<title>ALSA</title> +<g id="a_node7"><a xlink:href="https://alsa-project.org/wiki/Asoundrc#Plugins" xlink:title="ALSA"> +<polygon fill="yellow" stroke="black" points="1048.89,-442.54 1048.89,-457.46 1026.11,-468 993.89,-468 971.11,-457.46 971.11,-442.54 993.89,-432 1026.11,-432 1048.89,-442.54"/> +<text text-anchor="middle" x="1010" y="-446.3" font-family="Times,serif" font-size="14.00">ALSA</text> +</a> +</g> +</g> +<!-- portaudio&#45;&gt;ALSA --> +<g id="edge1" class="edge"> +<title>portaudio&#45;&gt;ALSA</title> +<path fill="none" stroke="black" d="M1328.31,-506.62C1315.29,-499.22 1298.79,-490.91 1283,-486 1207.12,-462.42 1114.64,-454.71 1059.13,-452.2"/> +<polygon fill="black" stroke="black" points="1059.01,-448.69 1048.87,-451.77 1058.72,-455.68 1059.01,-448.69"/> +</g> +<!-- JACK --> +<g id="node8" class="node"> +<title>JACK</title> +<ellipse fill="lightgrey" stroke="black" cx="252" cy="-304" rx="34.39" ry="18"/> +<text text-anchor="middle" x="252" y="-300.3" font-family="Times,serif" font-size="14.00">JACK</text> +</g> +<!-- portaudio&#45;&gt;JACK --> +<g id="edge2" class="edge"> +<title>portaudio&#45;&gt;JACK</title> +<path fill="none" stroke="black" d="M1302.51,-515.05C1275.67,-511.57 1242.09,-507.57 1212,-505 1049.72,-491.13 633.67,-521.99 480,-468 401.91,-440.56 396.44,-406.99 329,-359 313.03,-347.63 295.1,-335.05 280.56,-324.89"/> +<polygon fill="black" stroke="black" points="282.2,-321.77 272,-318.91 278.19,-327.51 282.2,-321.77"/> +</g> +<!-- sndio --> +<g id="node9" class="node"> +<title>sndio</title> +<g id="a_node9"><a xlink:href="http://www.sndio.org/" xlink:title="sndio"> +<ellipse fill="lightgrey" stroke="black" cx="1014" cy="-71" rx="36" ry="18"/> +<text text-anchor="middle" x="1014" y="-67.3" font-family="Times,serif" font-size="14.00">sndio</text> +</a> +</g> +</g> +<!-- portaudio&#45;&gt;sndio --> +<g id="edge3" class="edge"> +<title>portaudio&#45;&gt;sndio</title> +<path fill="none" stroke="black" d="M1372.45,-505.81C1432.1,-455.7 1610.49,-302.54 1644,-235 1665.71,-191.25 1665.63,-159.41 1630,-126 1588.64,-87.22 1196.09,-75.67 1060.1,-72.82"/> +<polygon fill="black" stroke="black" points="1060.08,-69.32 1050.01,-72.61 1059.94,-76.32 1060.08,-69.32"/> +</g> +<!-- ALSA&#45;&gt;sound card --> +<g id="edge60" class="edge"> +<title>ALSA&#45;&gt;sound card</title> +<path fill="none" stroke="green" d="M1003.07,-431.95C1000.78,-426.25 998.25,-419.87 996,-414 985.29,-386.05 973.54,-353.86 965.57,-331.74"/> +<polygon fill="green" stroke="green" points="968.76,-330.27 962.08,-322.05 962.18,-332.64 968.76,-330.27"/> +</g> +<!-- ALSA&#45;&gt;filesystem --> +<g id="edge64" class="edge"> +<title>ALSA&#45;&gt;filesystem</title> +<path fill="none" stroke="black" d="M1042.43,-439.45C1068.25,-430.75 1104.37,-416.02 1131,-395 1156.37,-374.98 1316.25,-211.11 1328,-181 1328.16,-180.59 1328.27,-180.35 1328,-180 1325.69,-176.96 1290.82,-167.33 1258.49,-158.95"/> +<polygon fill="black" stroke="black" points="1259.14,-155.5 1248.58,-156.39 1257.39,-162.28 1259.14,-155.5"/> +</g> +<!-- ALSA&#45;&gt;null --> +<g id="edge63" class="edge"> +<title>ALSA&#45;&gt;null</title> +<path fill="none" stroke="red" d="M1038.87,-437.81C1059.17,-428.77 1085.84,-414.35 1104,-395 1128.76,-368.62 1131.79,-357.23 1140,-322 1154.57,-259.52 1146.06,-235.58 1114,-180 1110.78,-174.43 1106.55,-168.99 1102.22,-164.14"/> +<polygon fill="red" stroke="red" points="1104.44,-161.39 1095,-156.58 1099.38,-166.23 1104.44,-161.39"/> +</g> +<!-- ALSA&#45;&gt;JACK --> +<g id="edge62" class="edge"> +<title>ALSA&#45;&gt;JACK</title> +<path fill="none" stroke="black" d="M971.21,-444.95C899.93,-437.23 743.49,-419.04 613,-395 542.76,-382.06 368.55,-342.06 300,-322 296.39,-320.94 292.66,-319.77 288.95,-318.55"/> +<polygon fill="black" stroke="black" points="289.84,-315.15 279.24,-315.24 287.58,-321.78 289.84,-315.15"/> +</g> +<!-- ALSA&#45;&gt;sndio --> +<g id="edge41" class="edge"> +<title>ALSA&#45;&gt;sndio</title> +<path fill="none" stroke="black" d="M1039.66,-438.13C1069.47,-428.3 1116.05,-412.7 1155,-395 1360.58,-301.6 1738.1,-292.89 1586,-126 1550.54,-87.09 1189.59,-75.77 1059.94,-72.88"/> +<polygon fill="black" stroke="black" points="1060,-69.38 1049.93,-72.67 1059.85,-76.38 1060,-69.38"/> +</g> +<!-- PulseAudio --> +<g id="node10" class="node"> +<title>PulseAudio</title> +<g id="a_node10"><a xlink:href="https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules/" xlink:title="PulseAudio"> +<ellipse fill="lightgrey" stroke="black" cx="684" cy="-377" rx="62.29" ry="18"/> +<text text-anchor="middle" x="684" y="-373.3" font-family="Times,serif" font-size="14.00">PulseAudio</text> +</a> +</g> +</g> +<!-- ALSA&#45;&gt;PulseAudio --> +<g id="edge61" class="edge"> +<title>ALSA&#45;&gt;PulseAudio</title> +<path fill="none" stroke="black" d="M972.67,-441.8C915.61,-430 806.65,-406.35 740.08,-391.39"/> +<polygon fill="black" stroke="black" points="740.7,-387.95 730.18,-389.16 739.16,-394.77 740.7,-387.95"/> +</g> +<!-- bluez --> +<g id="node11" class="node"> +<title>bluez</title> +<polygon fill="yellow" stroke="black" points="401.51,-136.54 401.51,-151.46 377.19,-162 342.81,-162 318.49,-151.46 318.49,-136.54 342.81,-126 377.19,-126 401.51,-136.54"/> +<text text-anchor="middle" x="360" y="-140.3" font-family="Times,serif" font-size="14.00">BlueZ</text> +</g> +<!-- ALSA&#45;&gt;bluez --> +<g id="edge18" class="edge"> +<title>ALSA&#45;&gt;bluez</title> +<path fill="none" stroke="black" d="M1016.55,-431.58C1027.52,-399.16 1045.29,-328.94 1012,-286 938.11,-190.68 552.84,-157.13 411.8,-147.93"/> +<polygon fill="black" stroke="black" points="411.88,-144.43 401.68,-147.29 411.44,-151.42 411.88,-144.43"/> +</g> +<!-- PipeWire --> +<g id="node15" class="node"> +<title>PipeWire</title> +<g id="a_node15"><a xlink:href="http://pipewire.org/" xlink:title="PipeWire"> +<ellipse fill="lightgrey" stroke="black" cx="360" cy="-217" rx="53.09" ry="18"/> +<text text-anchor="middle" x="360" y="-213.3" font-family="Times,serif" font-size="14.00">PipeWire</text> +</a> +</g> +</g> +<!-- ALSA&#45;&gt;PipeWire --> +<g id="edge13" class="edge"> +<title>ALSA&#45;&gt;PipeWire</title> +<path fill="none" stroke="black" d="M973.02,-433.27C924.05,-413.05 834.56,-378.28 755,-359 637.29,-330.47 595.84,-370.84 485,-322 443.04,-303.51 404.01,-266.62 381.08,-242.12"/> +<polygon fill="black" stroke="black" points="971.69,-436.5 982.26,-437.11 974.37,-430.04 971.69,-436.5"/> +<polygon fill="black" stroke="black" points="383.55,-239.64 374.21,-234.64 378.4,-244.37 383.55,-239.64"/> +</g> +<!-- JACK&#45;&gt;PipeWire --> +<g id="edge14" class="edge"> +<title>JACK&#45;&gt;PipeWire</title> +<path fill="none" stroke="black" d="M278.27,-282.33C294.39,-269.64 315.03,-253.39 331.54,-240.4"/> +<polygon fill="black" stroke="black" points="276.01,-279.65 270.32,-288.58 280.34,-285.15 276.01,-279.65"/> +<polygon fill="black" stroke="black" points="334.06,-242.87 339.75,-233.94 329.73,-237.37 334.06,-242.87"/> +</g> +<!-- sndio&#45;&gt;ALSA --> +<g id="edge39" class="edge"> +<title>sndio&#45;&gt;ALSA</title> +<path fill="none" stroke="black" d="M1050.01,-72.53C1172.55,-74.75 1566.85,-85.24 1604,-126 1756.1,-292.89 1378.58,-301.6 1173,-395 1134.43,-412.52 1088.37,-428 1054.95,-437.84"/> +<polygon fill="black" stroke="black" points="1053.64,-434.58 1045,-440.71 1055.58,-441.3 1053.64,-434.58"/> +</g> +<!-- PulseAudio&#45;&gt;sound card --> +<g id="edge6" class="edge"> +<title>PulseAudio&#45;&gt;sound card</title> +<path fill="none" stroke="green" d="M728.61,-364.36C774.96,-352.26 847.65,-333.28 898.33,-320.05"/> +<polygon fill="green" stroke="green" points="899.37,-323.4 908.16,-317.49 897.6,-316.63 899.37,-323.4"/> +</g> +<!-- PulseAudio&#45;&gt;null --> +<g id="edge5" class="edge"> +<title>PulseAudio&#45;&gt;null</title> +<path fill="none" stroke="red" d="M704.78,-359.76C729.25,-340.97 771.48,-309.58 810,-286 895.91,-233.42 1003.56,-181.47 1053.78,-157.99"/> +<polygon fill="red" stroke="red" points="1055.44,-161.08 1063.03,-153.69 1052.49,-154.73 1055.44,-161.08"/> +</g> +<!-- PulseAudio&#45;&gt;ALSA --> +<g id="edge4" class="edge"> +<title>PulseAudio&#45;&gt;ALSA</title> +<path fill="none" stroke="black" d="M734.05,-387.85C797.21,-401.06 904.68,-424.45 965.24,-438.16"/> +<polygon fill="black" stroke="black" points="964.73,-441.63 975.26,-440.44 966.29,-434.81 964.73,-441.63"/> +</g> +<!-- PulseAudio&#45;&gt;JACK --> +<g id="edge7" class="edge"> +<title>PulseAudio&#45;&gt;JACK</title> +<path fill="none" stroke="black" d="M626.81,-369.73C554.98,-361.74 435.84,-348.14 392,-341 350.79,-334.29 340.22,-333.22 300,-322 296.23,-320.95 292.32,-319.75 288.45,-318.49"/> +<polygon fill="black" stroke="black" points="289.55,-315.17 278.96,-315.27 287.3,-321.8 289.55,-315.17"/> +</g> +<!-- PulseAudio&#45;&gt;sndio --> +<g id="edge40" class="edge"> +<title>PulseAudio&#45;&gt;sndio</title> +<path fill="none" stroke="black" d="M628.37,-368.51C575.78,-360.15 502.4,-344.75 485,-322 451.71,-278.47 524.75,-211.57 539,-199 664.13,-88.62 875.1,-72.76 967.87,-71.43"/> +<polygon fill="black" stroke="black" points="968.09,-74.93 978.06,-71.34 968.03,-67.93 968.09,-74.93"/> +</g> +<!-- PulseAudio&#45;&gt;bluez --> +<g id="edge8" class="edge"> +<title>PulseAudio&#45;&gt;bluez</title> +<path fill="none" stroke="black" d="M628.45,-368.79C569.32,-360.95 479.73,-348.52 446,-341 417.46,-334.63 408.01,-337.16 383,-322 336.77,-293.98 318.4,-285.06 298,-235 291.96,-220.18 291.37,-213.56 298,-199 304.19,-185.41 315.67,-173.91 327.09,-165.06"/> +<polygon fill="black" stroke="black" points="329.27,-167.8 335.31,-159.09 325.16,-162.13 329.27,-167.8"/> +</g> +<!-- ofono --> +<g id="node12" class="node"> +<title>ofono</title> +<polygon fill="yellow" stroke="black" points="572.29,-296.54 572.29,-311.46 549.28,-322 516.72,-322 493.71,-311.46 493.71,-296.54 516.72,-286 549.28,-286 572.29,-296.54"/> +<text text-anchor="middle" x="533" y="-300.3" font-family="Times,serif" font-size="14.00">ofono</text> +</g> +<!-- PulseAudio&#45;&gt;ofono --> +<g id="edge9" class="edge"> +<title>PulseAudio&#45;&gt;ofono</title> +<path fill="none" stroke="black" d="M652.71,-361.29C628.35,-349.84 594.52,-333.92 569.03,-321.94"/> +<polygon fill="black" stroke="black" points="570.24,-318.64 559.71,-317.56 567.27,-324.98 570.24,-318.64"/> +</g> +<!-- sox --> +<g id="node13" class="node"> +<title>sox</title> +<g id="a_node13"><a xlink:href="http://sox.sourceforge.net/Docs/Features" xlink:title="sox"> +<ellipse fill="lightgrey" stroke="black" cx="1087" cy="-304" rx="27" ry="18"/> +<text text-anchor="middle" x="1087" y="-300.3" font-family="Times,serif" font-size="14.00">sox</text> +</a> +</g> +</g> +<!-- PulseAudio&#45;&gt;sox --> +<g id="edge10" class="edge"> +<title>PulseAudio&#45;&gt;sox</title> +<path fill="none" stroke="black" d="M736.85,-367.31C800.3,-357.42 909.55,-340.27 1003,-322 1018.65,-318.94 1036.02,-315.04 1051.02,-311.74"/> +<polygon fill="black" stroke="black" points="1051.94,-315.12 1060.97,-309.57 1050.45,-308.28 1051.94,-315.12"/> +</g> +<!-- PulseAudio&#45;&gt;PipeWire --> +<g id="edge12" class="edge"> +<title>PulseAudio&#45;&gt;PipeWire</title> +<path fill="none" stroke="black" d="M614.8,-370.09C544.88,-362.76 443.14,-347.94 414,-322 390.71,-301.26 375.95,-268.06 367.85,-244.76"/> +<polygon fill="black" stroke="black" points="614.57,-373.58 624.87,-371.11 615.28,-366.62 614.57,-373.58"/> +<polygon fill="black" stroke="black" points="371.14,-243.55 364.69,-235.15 364.49,-245.74 371.14,-243.55"/> +</g> +<!-- bluez&#45;&gt;Bluetooth card --> +<g id="edge19" class="edge"> +<title>bluez&#45;&gt;Bluetooth card</title> +<path fill="none" stroke="green" d="M360,-125.81C360,-117.79 360,-108.05 360,-99.07"/> +<polygon fill="green" stroke="green" points="363.5,-99.03 360,-89.03 356.5,-99.03 363.5,-99.03"/> +</g> +<!-- ofono&#45;&gt;phone modem --> +<g id="edge17" class="edge"> +<title>ofono&#45;&gt;phone modem</title> +<path fill="none" stroke="green" d="M547.98,-285.8C558.71,-273.47 573.33,-256.68 585.33,-242.89"/> +<polygon fill="green" stroke="green" points="588.12,-245.02 592.05,-235.18 582.84,-240.42 588.12,-245.02"/> +</g> +<!-- sox&#45;&gt;filesystem --> +<g id="edge20" class="edge"> +<title>sox&#45;&gt;filesystem</title> +<path fill="none" stroke="black" d="M1099.96,-287.87C1105.07,-281.78 1110.91,-274.64 1116,-268 1141.22,-235.08 1168.57,-195.77 1185.74,-170.6"/> +<polygon fill="black" stroke="black" points="1188.85,-172.24 1191.58,-162 1183.06,-168.31 1188.85,-172.24"/> +</g> +<!-- sox&#45;&gt;null --> +<g id="edge21" class="edge"> +<title>sox&#45;&gt;null</title> +<path fill="none" stroke="red" d="M1093.71,-286.37C1101.13,-265.79 1111.27,-229.7 1105,-199 1102.82,-188.33 1098.45,-177.16 1094.1,-167.76"/> +<polygon fill="red" stroke="red" points="1097.21,-166.15 1089.67,-158.71 1090.93,-169.23 1097.21,-166.15"/> +</g> +<!-- sox&#45;&gt;ALSA --> +<g id="edge24" class="edge"> +<title>sox&#45;&gt;ALSA</title> +<path fill="none" stroke="black" d="M1078.35,-321.18C1065.12,-345.91 1039.75,-393.37 1023.91,-422.98"/> +<polygon fill="black" stroke="black" points="1020.76,-421.45 1019.14,-431.92 1026.94,-424.75 1020.76,-421.45"/> +</g> +<!-- sox&#45;&gt;sndio --> +<g id="edge25" class="edge"> +<title>sox&#45;&gt;sndio</title> +<path fill="none" stroke="black" d="M1069.02,-290.52C1053.19,-278.39 1031.14,-258.4 1021,-235 1001.69,-190.44 1005.11,-132.46 1009.47,-99.02"/> +<polygon fill="black" stroke="black" points="1012.94,-99.46 1010.89,-89.07 1006.01,-98.47 1012.94,-99.46"/> +</g> +<!-- sox&#45;&gt;PulseAudio --> +<g id="edge23" class="edge"> +<title>sox&#45;&gt;PulseAudio</title> +<path fill="none" stroke="black" d="M1063.3,-312.7C1050.71,-315.78 1035.15,-319.23 1021,-322 927.53,-340.27 818.26,-357.43 750,-367.31"/> +<polygon fill="black" stroke="black" points="749.22,-363.89 739.82,-368.77 750.22,-370.82 749.22,-363.89"/> +</g> +<!-- libao --> +<g id="node17" class="node"> +<title>libao</title> +<g id="a_node17"><a xlink:href="https://www.xiph.org/ao/" xlink:title="libao"> +<ellipse fill="lightgrey" stroke="black" cx="1063" cy="-217" rx="33.29" ry="18"/> +<text text-anchor="middle" x="1063" y="-213.3" font-family="Times,serif" font-size="14.00">libao</text> +</a> +</g> +</g> +<!-- sox&#45;&gt;libao --> +<g id="edge22" class="edge"> +<title>sox&#45;&gt;libao</title> +<path fill="none" stroke="black" d="M1082.26,-286.21C1078.93,-274.41 1074.4,-258.38 1070.57,-244.82"/> +<polygon fill="black" stroke="black" points="1073.9,-243.72 1067.81,-235.05 1067.16,-245.62 1073.9,-243.72"/> +</g> +<!-- X11 bell --> +<g id="node14" class="node"> +<title>X11 bell</title> +<ellipse fill="lightgrey" stroke="black" cx="609" cy="-450" rx="48.99" ry="18"/> +<text text-anchor="middle" x="609" y="-446.3" font-family="Times,serif" font-size="14.00">X11 bell</text> +</g> +<!-- X11 bell&#45;&gt;PulseAudio --> +<g id="edge11" class="edge"> +<title>X11 bell&#45;&gt;PulseAudio</title> +<path fill="none" stroke="black" d="M626.02,-432.89C635.76,-423.67 648.15,-411.94 658.98,-401.68"/> +<polygon fill="black" stroke="black" points="661.67,-403.96 666.53,-394.54 656.86,-398.87 661.67,-403.96"/> +</g> +<!-- PipeWire&#45;&gt;bluez --> +<g id="edge15" class="edge"> +<title>PipeWire&#45;&gt;bluez</title> +<path fill="none" stroke="black" d="M360,-198.81C360,-190.79 360,-181.05 360,-172.07"/> +<polygon fill="black" stroke="black" points="363.5,-172.03 360,-162.03 356.5,-172.03 363.5,-172.03"/> +</g> +<!-- gstreamer --> +<g id="node16" class="node"> +<title>gstreamer</title> +<ellipse fill="lightgrey" stroke="black" cx="197" cy="-523" rx="59.29" ry="18"/> +<text text-anchor="middle" x="197" y="-519.3" font-family="Times,serif" font-size="14.00">gstreamer</text> +</g> +<!-- gstreamer&#45;&gt;ALSA --> +<g id="edge72" class="edge"> +<title>gstreamer&#45;&gt;ALSA</title> +<path fill="none" stroke="black" d="M250.63,-515.19C277.7,-511.88 311.06,-507.97 341,-505 572.68,-481.98 850.24,-462 960.93,-454.34"/> +<polygon fill="black" stroke="black" points="961.38,-457.81 971.12,-453.63 960.9,-450.83 961.38,-457.81"/> +</g> +<!-- gstreamer&#45;&gt;JACK --> +<g id="edge73" class="edge"> +<title>gstreamer&#45;&gt;JACK</title> +<path fill="none" stroke="black" d="M155.64,-510.07C135.06,-501.81 112.06,-488.52 100,-468 71.17,-418.96 64.57,-384.51 100,-340 113.34,-323.24 168.26,-313.83 208.26,-309.08"/> +<polygon fill="black" stroke="black" points="208.78,-312.54 218.33,-307.95 208,-305.59 208.78,-312.54"/> +</g> +<!-- gstreamer&#45;&gt;sndio --> +<g id="edge42" class="edge"> +<title>gstreamer&#45;&gt;sndio</title> +<path fill="none" stroke="black" d="M202.81,-504.97C209.79,-486.01 222.74,-454.99 240,-432 301.72,-349.77 493.49,-168.72 587,-126 654.23,-95.29 872.56,-79.79 968.3,-74.34"/> +<polygon fill="black" stroke="black" points="968.74,-77.82 978.53,-73.77 968.35,-70.83 968.74,-77.82"/> +</g> +<!-- gstreamer&#45;&gt;PulseAudio --> +<g id="edge74" class="edge"> +<title>gstreamer&#45;&gt;PulseAudio</title> +<path fill="none" stroke="black" d="M209.39,-505.05C230.11,-478.45 274.73,-428.38 327,-413 422.58,-384.89 538.11,-378.24 611.34,-377.21"/> +<polygon fill="black" stroke="black" points="611.42,-380.71 621.38,-377.1 611.35,-373.71 611.42,-380.71"/> +</g> +<!-- gstreamer&#45;&gt;PipeWire --> +<g id="edge16" class="edge"> +<title>gstreamer&#45;&gt;PipeWire</title> +<path fill="none" stroke="black" d="M145.75,-513.9C87.38,-503.2 0,-481.99 0,-451 0,-451 0,-451 0,-303 0,-242.72 193.63,-225.14 296.88,-220.05"/> +<polygon fill="black" stroke="black" points="297.06,-223.54 306.88,-219.58 296.73,-216.55 297.06,-223.54"/> +</g> +<!-- libao&#45;&gt;filesystem --> +<g id="edge26" class="edge"> +<title>libao&#45;&gt;filesystem</title> +<path fill="none" stroke="black" d="M1086.43,-204.12C1107.28,-193.54 1138.21,-177.86 1162.97,-165.3"/> +<polygon fill="black" stroke="black" points="1164.79,-168.3 1172.12,-160.66 1161.62,-162.06 1164.79,-168.3"/> +</g> +<!-- libao&#45;&gt;null --> +<g id="edge29" class="edge"> +<title>libao&#45;&gt;null</title> +<path fill="none" stroke="red" d="M1067.6,-198.81C1069.89,-190.25 1072.7,-179.74 1075.23,-170.28"/> +<polygon fill="red" stroke="red" points="1078.63,-171.14 1077.83,-160.58 1071.87,-169.33 1078.63,-171.14"/> +</g> +<!-- libao&#45;&gt;ALSA --> +<g id="edge27" class="edge"> +<title>libao&#45;&gt;ALSA</title> +<path fill="none" stroke="black" d="M1081.34,-232.21C1095.74,-244.62 1114.7,-264.06 1123,-286 1128.66,-300.97 1128.4,-306.94 1123,-322 1107.06,-366.51 1066.82,-405.04 1038.94,-427.65"/> +<polygon fill="black" stroke="black" points="1036.75,-424.92 1031.08,-433.87 1041.09,-430.41 1036.75,-424.92"/> +</g> +<!-- libao&#45;&gt;sndio --> +<g id="edge32" class="edge"> +<title>libao&#45;&gt;sndio</title> +<path fill="none" stroke="black" d="M1052.19,-199.6C1045.78,-189.2 1037.95,-175.26 1033,-162 1025.34,-141.49 1020.43,-117.14 1017.53,-98.94"/> +<polygon fill="black" stroke="black" points="1020.99,-98.38 1016.05,-89.01 1014.06,-99.42 1020.99,-98.38"/> +</g> +<!-- libao&#45;&gt;PulseAudio --> +<g id="edge28" class="edge"> +<title>libao&#45;&gt;PulseAudio</title> +<path fill="none" stroke="black" d="M1037.42,-228.57C1005.14,-241.91 947.93,-265.59 899,-286 840.72,-310.32 826.26,-316.63 768,-341 754.75,-346.54 740.31,-352.56 727.2,-358.02"/> +<polygon fill="black" stroke="black" points="725.82,-354.81 717.93,-361.89 728.51,-361.27 725.82,-354.81"/> +</g> +<!-- NAS --> +<g id="node18" class="node"> +<title>NAS</title> +<g id="a_node18"><a xlink:href="http://radscan.com/nas.html" xlink:title="Network Audio System/Server"> +<ellipse fill="lightgrey" stroke="black" cx="1435" cy="-144" rx="151.37" ry="18"/> +<text text-anchor="middle" x="1435" y="-140.3" font-family="Times,serif" font-size="14.00">Network Audio System/Server</text> +</a> +</g> +</g> +<!-- libao&#45;&gt;NAS --> +<g id="edge30" class="edge"> +<title>libao&#45;&gt;NAS</title> +<path fill="none" stroke="black" d="M1093.76,-210.13C1148.93,-199.6 1266.56,-177.15 1348.18,-161.57"/> +<polygon fill="black" stroke="black" points="1349.28,-164.92 1358.45,-159.61 1347.97,-158.05 1349.28,-164.92"/> +</g> +<!-- RoarAudio --> +<g id="node19" class="node"> +<title>RoarAudio</title> +<g id="a_node19"><a xlink:href="http://roaraudio.keep-cool.org/" xlink:title="RoarAudio"> +<ellipse fill="lightgrey" stroke="black" cx="766" cy="-144" rx="59.29" ry="18"/> +<text text-anchor="middle" x="766" y="-140.3" font-family="Times,serif" font-size="14.00">RoarAudio</text> +</a> +</g> +</g> +<!-- libao&#45;&gt;RoarAudio --> +<g id="edge31" class="edge"> +<title>libao&#45;&gt;RoarAudio</title> +<path fill="none" stroke="black" d="M1033.16,-208.87C983.63,-197.03 883.68,-173.13 821.06,-158.16"/> +<polygon fill="black" stroke="black" points="821.51,-154.67 810.97,-155.75 819.88,-161.48 821.51,-154.67"/> +</g> +<!-- RoarAudio&#45;&gt;sndio --> +<g id="edge33" class="edge"> +<title>RoarAudio&#45;&gt;sndio</title> +<path fill="none" stroke="black" d="M792.66,-127.76C806.19,-120.57 823.08,-112.41 839,-107 882.12,-92.34 933.42,-82.97 969.28,-77.66"/> +<polygon fill="black" stroke="black" points="970.03,-81.09 979.43,-76.2 969.04,-74.16 970.03,-81.09"/> +</g> +<!-- RoarAudio&#45;&gt;PulseAudio --> +<g id="edge34" class="edge"> +<title>RoarAudio&#45;&gt;PulseAudio</title> +<path fill="none" stroke="black" d="M761.25,-162.08C752.24,-193.94 731.5,-264.42 709,-322 705.45,-331.09 701.11,-340.82 697.06,-349.49"/> +<polygon fill="black" stroke="black" points="693.8,-348.19 692.65,-358.72 700.12,-351.2 693.8,-348.19"/> +</g> +<!-- libcanberra --> +<g id="node20" class="node"> +<title>libcanberra</title> +<g id="a_node20"><a xlink:href="http://git.0pointer.net/libcanberra.git/tree/src/driver-order.c" xlink:title="libcanberra"> +<ellipse fill="lightgrey" stroke="black" cx="774" cy="-596" rx="63.89" ry="18"/> +<text text-anchor="middle" x="774" y="-592.3" font-family="Times,serif" font-size="14.00">libcanberra</text> +</a> +</g> +</g> +<!-- libcanberra&#45;&gt;null --> +<g id="edge38" class="edge"> +<title>libcanberra&#45;&gt;null</title> +<path fill="none" stroke="red" d="M836.07,-591.83C951,-585.32 1187.51,-568.69 1212,-541 1313.45,-426.28 1256.27,-325.53 1170,-199 1156.35,-178.98 1132.58,-165.05 1113.19,-156.36"/> +<polygon fill="red" stroke="red" points="1114.37,-153.06 1103.8,-152.39 1111.65,-159.51 1114.37,-153.06"/> +</g> +<!-- libcanberra&#45;&gt;ALSA --> +<g id="edge36" class="edge"> +<title>libcanberra&#45;&gt;ALSA</title> +<path fill="none" stroke="black" d="M828.88,-586.64C864.29,-579.17 909.92,-565.48 944,-541 967.1,-524.41 985.4,-497.27 996.82,-477.12"/> +<polygon fill="black" stroke="black" points="1000,-478.6 1001.72,-468.14 993.86,-475.24 1000,-478.6"/> +</g> +<!-- libcanberra&#45;&gt;PulseAudio --> +<g id="edge35" class="edge"> +<title>libcanberra&#45;&gt;PulseAudio</title> +<path fill="none" stroke="black" d="M711.24,-592.66C673.59,-587.62 628.41,-574.37 604,-541 594.55,-528.09 596.05,-518.89 604,-505 620.13,-476.82 648.31,-494.56 667,-468 679.84,-449.76 683.71,-424.49 684.59,-405.37"/> +<polygon fill="black" stroke="black" points="688.09,-405.27 684.81,-395.2 681.09,-405.12 688.09,-405.27"/> +</g> +<!-- libcanberra&#45;&gt;gstreamer --> +<g id="edge37" class="edge"> +<title>libcanberra&#45;&gt;gstreamer</title> +<path fill="none" stroke="black" d="M710.04,-595C619.64,-593.91 449.7,-587.88 308,-560 285.62,-555.6 261.46,-548.1 241.41,-541.09"/> +<polygon fill="black" stroke="black" points="242.52,-537.77 231.92,-537.7 240.16,-544.36 242.52,-537.77"/> +</g> +<!-- OpenAL --> +<g id="node21" class="node"> +<title>OpenAL</title> +<g id="a_node21"><a xlink:href="https://www.openal-soft.org/" xlink:title="OpenAL"> +<ellipse fill="lightgrey" stroke="black" cx="1296" cy="-596" rx="47.39" ry="18"/> +<text text-anchor="middle" x="1296" y="-592.3" font-family="Times,serif" font-size="14.00">OpenAL</text> +</a> +</g> +</g> +<!-- OpenAL&#45;&gt;filesystem --> +<g id="edge48" class="edge"> +<title>OpenAL&#45;&gt;filesystem</title> +<path fill="none" stroke="black" d="M1339.21,-588.22C1378.21,-581.57 1432.27,-570.86 1451,-560 1469.78,-549.11 1484,-545.71 1484,-524 1484,-524 1484,-524 1484,-413 1484,-305.12 1499.24,-248.62 1416,-180 1391.63,-159.91 1306.08,-167.64 1275,-162 1269.63,-161.03 1264.06,-159.91 1258.5,-158.72"/> +<polygon fill="black" stroke="black" points="1259.07,-155.26 1248.55,-156.52 1257.56,-162.09 1259.07,-155.26"/> +</g> +<!-- OpenAL&#45;&gt;null --> +<g id="edge50" class="edge"> +<title>OpenAL&#45;&gt;null</title> +<path fill="none" stroke="red" d="M1339.05,-588.16C1366.72,-581.29 1400.62,-567.69 1418,-541 1466.63,-466.3 1535.61,-619.84 1313,-253 1291.07,-216.85 1288.88,-200.68 1252,-180 1204.58,-153.4 1183.8,-174.97 1131,-162 1124.69,-160.45 1118.04,-158.42 1111.75,-156.31"/> +<polygon fill="red" stroke="red" points="1112.84,-152.99 1102.25,-152.98 1110.52,-159.59 1112.84,-152.99"/> +</g> +<!-- OpenAL&#45;&gt;portaudio --> +<g id="edge46" class="edge"> +<title>OpenAL&#45;&gt;portaudio</title> +<path fill="none" stroke="black" d="M1309.22,-578.53C1316.31,-569.7 1325.19,-558.63 1333.1,-548.78"/> +<polygon fill="black" stroke="black" points="1335.92,-550.86 1339.46,-540.87 1330.47,-546.48 1335.92,-550.86"/> +</g> +<!-- OpenAL&#45;&gt;ALSA --> +<g id="edge44" class="edge"> +<title>OpenAL&#45;&gt;ALSA</title> +<path fill="none" stroke="black" d="M1284.98,-578.4C1270.6,-558.04 1243.52,-523.92 1212,-505 1164.45,-476.46 1101.73,-462.76 1058.87,-456.34"/> +<polygon fill="black" stroke="black" points="1059.35,-452.88 1048.96,-454.93 1058.37,-459.81 1059.35,-452.88"/> +</g> +<!-- OpenAL&#45;&gt;JACK --> +<g id="edge47" class="edge"> +<title>OpenAL&#45;&gt;JACK</title> +<path fill="none" stroke="black" d="M1249.04,-592.99C1059.5,-584.82 360.04,-553.83 341,-541 270.82,-493.72 255.88,-383.33 252.77,-332.06"/> +<polygon fill="black" stroke="black" points="256.27,-331.87 252.27,-322.06 249.27,-332.22 256.27,-331.87"/> +</g> +<!-- OpenAL&#45;&gt;sndio --> +<g id="edge49" class="edge"> +<title>OpenAL&#45;&gt;sndio</title> +<path fill="none" stroke="black" d="M1342.88,-592.47C1458.14,-585.63 1746,-564.48 1746,-524 1746,-524 1746,-524 1746,-143 1746,-73.74 1220.11,-70.88 1059.82,-71.62"/> +<polygon fill="black" stroke="black" points="1059.78,-68.12 1049.8,-71.67 1059.82,-75.12 1059.78,-68.12"/> +</g> +<!-- OpenAL&#45;&gt;PulseAudio --> +<g id="edge43" class="edge"> +<title>OpenAL&#45;&gt;PulseAudio</title> +<path fill="none" stroke="black" d="M1248.98,-593.55C1120.59,-589.18 770.98,-574.3 732,-541 687.33,-502.84 717.96,-468.61 699,-413 698.04,-410.18 696.95,-407.28 695.82,-404.4"/> +<polygon fill="black" stroke="black" points="698.93,-402.77 691.85,-394.89 692.47,-405.46 698.93,-402.77"/> +</g> +<!-- SoundIO --> +<g id="node22" class="node"> +<title>SoundIO</title> +<g id="a_node22"><a xlink:href="http://libsound.io/" xlink:title="SoundIO"> +<ellipse fill="lightgrey" stroke="black" cx="1042" cy="-523" rx="50.89" ry="18"/> +<text text-anchor="middle" x="1042" y="-519.3" font-family="Times,serif" font-size="14.00">SoundIO</text> +</a> +</g> +</g> +<!-- OpenAL&#45;&gt;SoundIO --> +<g id="edge45" class="edge"> +<title>OpenAL&#45;&gt;SoundIO</title> +<path fill="none" stroke="black" d="M1258.79,-584.7C1219.73,-573.87 1156.53,-556.31 1102,-541 1098.18,-539.93 1094.23,-538.81 1090.25,-537.69"/> +<polygon fill="black" stroke="black" points="1090.98,-534.26 1080.4,-534.91 1089.07,-541 1090.98,-534.26"/> +</g> +<!-- SoundIO&#45;&gt;null --> +<g id="edge54" class="edge"> +<title>SoundIO&#45;&gt;null</title> +<path fill="none" stroke="red" d="M1064.91,-506.81C1094.35,-485.76 1144.02,-444.63 1164,-395 1196.65,-313.89 1189.38,-275.48 1147,-199 1138.02,-182.79 1122.07,-169.43 1108.22,-160.05"/> +<polygon fill="red" stroke="red" points="1109.83,-156.92 1099.52,-154.47 1106.05,-162.82 1109.83,-156.92"/> +</g> +<!-- SoundIO&#45;&gt;ALSA --> +<g id="edge53" class="edge"> +<title>SoundIO&#45;&gt;ALSA</title> +<path fill="none" stroke="black" d="M1034.42,-505.17C1030.69,-496.9 1026.1,-486.72 1021.92,-477.44"/> +<polygon fill="black" stroke="black" points="1025.05,-475.88 1017.75,-468.2 1018.67,-478.75 1025.05,-475.88"/> +</g> +<!-- SoundIO&#45;&gt;JACK --> +<g id="edge51" class="edge"> +<title>SoundIO&#45;&gt;JACK</title> +<path fill="none" stroke="black" d="M998.72,-513.5C981.72,-510.42 962,-507.17 944,-505 824.58,-490.59 512.6,-519.71 404,-468 387.18,-459.99 309.64,-371.78 272.26,-328.57"/> +<polygon fill="black" stroke="black" points="274.75,-326.1 265.56,-320.81 269.45,-330.67 274.75,-326.1"/> +</g> +<!-- SoundIO&#45;&gt;PulseAudio --> +<g id="edge52" class="edge"> +<title>SoundIO&#45;&gt;PulseAudio</title> +<path fill="none" stroke="black" d="M1009.6,-508.97C945.27,-483.09 801.38,-425.21 728.34,-395.84"/> +<polygon fill="black" stroke="black" points="729.53,-392.54 718.95,-392.06 726.92,-399.04 729.53,-392.54"/> +</g> +<!-- RtAudio --> +<g id="node23" class="node"> +<title>RtAudio</title> +<g id="a_node23"><a xlink:href="https://www.music.mcgill.ca/~gary/rtaudio/apinotes.html" xlink:title="RtAudio"> +<ellipse fill="lightgrey" stroke="black" cx="398" cy="-523" rx="48.19" ry="18"/> +<text text-anchor="middle" x="398" y="-519.3" font-family="Times,serif" font-size="14.00">RtAudio</text> +</a> +</g> +</g> +<!-- RtAudio&#45;&gt;ALSA --> +<g id="edge55" class="edge"> +<title>RtAudio&#45;&gt;ALSA</title> +<path fill="none" stroke="black" d="M443.5,-516.72C555.77,-503.7 845.24,-470.11 961.05,-456.68"/> +<polygon fill="black" stroke="black" points="961.52,-460.15 971.05,-455.52 960.71,-453.19 961.52,-460.15"/> +</g> +<!-- RtAudio&#45;&gt;JACK --> +<g id="edge56" class="edge"> +<title>RtAudio&#45;&gt;JACK</title> +<path fill="none" stroke="black" d="M353.63,-515.87C283,-505.66 151.55,-484.65 138,-468 102.1,-423.87 104.19,-385.75 138,-340 153.83,-318.58 182.53,-309.85 207.17,-306.47"/> +<polygon fill="black" stroke="black" points="207.89,-309.91 217.44,-305.32 207.11,-302.95 207.89,-309.91"/> +</g> +<!-- RtAudio&#45;&gt;PulseAudio --> +<g id="edge57" class="edge"> +<title>RtAudio&#45;&gt;PulseAudio</title> +<path fill="none" stroke="black" d="M417.95,-506.17C448.18,-482.87 508.1,-439.25 565,-413 584.32,-404.09 606.46,-396.84 626.35,-391.3"/> +<polygon fill="black" stroke="black" points="627.48,-394.62 636.22,-388.64 625.66,-387.87 627.48,-394.62"/> +</g> +<!-- JUCE --> +<g id="node24" class="node"> +<title>JUCE</title> +<ellipse fill="lightgrey" stroke="black" cx="649" cy="-523" rx="36" ry="18"/> +<text text-anchor="middle" x="649" y="-519.3" font-family="Times,serif" font-size="14.00">JUCE</text> +</g> +<!-- JUCE&#45;&gt;ALSA --> +<g id="edge58" class="edge"> +<title>JUCE&#45;&gt;ALSA</title> +<path fill="none" stroke="black" d="M681.7,-515.22C696.98,-512.08 715.41,-508.31 732,-505 812.8,-488.88 906.93,-470.73 962.32,-460.11"/> +<polygon fill="black" stroke="black" points="963.04,-463.53 972.2,-458.22 961.73,-456.66 963.04,-463.53"/> +</g> +<!-- JUCE&#45;&gt;JACK --> +<g id="edge59" class="edge"> +<title>JUCE&#45;&gt;JACK</title> +<path fill="none" stroke="black" d="M613.13,-521.18C557.47,-518.61 448.16,-508.36 366,-468 301.76,-436.45 297.31,-405.83 267,-341 265.57,-337.93 264.12,-334.69 262.72,-331.46"/> +<polygon fill="black" stroke="black" points="265.84,-329.84 258.73,-321.98 259.38,-332.55 265.84,-329.84"/> +</g> +<!-- SDL2 --> +<g id="node25" class="node"> +<title>SDL2</title> +<g id="a_node25"><a xlink:href="https://hg.libsdl.org/SDL/file/355a4f94a782" xlink:title="libSDL&#45;2.0"> +<ellipse fill="lightgrey" stroke="black" cx="1572" cy="-523" rx="59.59" ry="18"/> +<text text-anchor="middle" x="1572" y="-519.3" font-family="Times,serif" font-size="14.00">libSDL&#45;2.0</text> +</a> +</g> +</g> +<!-- SDL2&#45;&gt;filesystem --> +<g id="edge66" class="edge"> +<title>SDL2&#45;&gt;filesystem</title> +<path fill="none" stroke="black" d="M1567.46,-504.92C1564.07,-490.62 1560,-469.63 1560,-451 1560,-451 1560,-451 1560,-340 1560,-260.5 1545.74,-224.72 1480,-180 1442.19,-154.28 1320.15,-169.27 1275,-162 1269.31,-161.08 1263.41,-159.97 1257.54,-158.75"/> +<polygon fill="black" stroke="black" points="1258.25,-155.32 1247.74,-156.62 1256.77,-162.16 1258.25,-155.32"/> +</g> +<!-- SDL2&#45;&gt;null --> +<g id="edge69" class="edge"> +<title>SDL2&#45;&gt;null</title> +<path fill="none" stroke="red" d="M1562.52,-505.12C1526.59,-441.78 1397.27,-219.76 1328,-180 1289.87,-158.11 1173.97,-171.27 1131,-162 1124.65,-160.63 1117.98,-158.68 1111.68,-156.59"/> +<polygon fill="red" stroke="red" points="1112.78,-153.26 1102.19,-153.24 1110.46,-159.87 1112.78,-153.26"/> +</g> +<!-- SDL2&#45;&gt;ALSA --> +<g id="edge65" class="edge"> +<title>SDL2&#45;&gt;ALSA</title> +<path fill="none" stroke="black" d="M1518.47,-514.81C1463.25,-507.43 1374.63,-495.69 1298,-486 1214.27,-475.41 1116.75,-463.69 1059.38,-456.85"/> +<polygon fill="black" stroke="black" points="1059.49,-453.34 1049.14,-455.64 1058.66,-460.29 1059.49,-453.34"/> +</g> +<!-- SDL2&#45;&gt;JACK --> +<g id="edge67" class="edge"> +<title>SDL2&#45;&gt;JACK</title> +<path fill="none" stroke="black" d="M1517.92,-515.13C1488.43,-511.61 1451.26,-507.54 1418,-505 1225.72,-490.3 735.99,-522.47 551,-468 459.09,-440.94 449.63,-403.92 365,-359 339.12,-345.26 309.18,-331.03 286.62,-320.62"/> +<polygon fill="black" stroke="black" points="287.98,-317.4 277.44,-316.41 285.07,-323.76 287.98,-317.4"/> +</g> +<!-- SDL2&#45;&gt;sndio --> +<g id="edge71" class="edge"> +<title>SDL2&#45;&gt;sndio</title> +<path fill="none" stroke="black" d="M1626.53,-515.31C1664.37,-507.27 1708,-489.62 1708,-451 1708,-451 1708,-451 1708,-143 1708,-77.66 1214.88,-72.03 1059.98,-71.87"/> +<polygon fill="black" stroke="black" points="1059.85,-68.37 1049.85,-71.87 1059.85,-75.37 1059.85,-68.37"/> +</g> +<!-- SDL2&#45;&gt;PulseAudio --> +<g id="edge70" class="edge"> +<title>SDL2&#45;&gt;PulseAudio</title> +<path fill="none" stroke="black" d="M1522.46,-512.82C1430.89,-495.96 1228.87,-459.29 1058,-432 950.03,-414.76 824.13,-397.08 749.41,-386.84"/> +<polygon fill="black" stroke="black" points="749.59,-383.33 739.21,-385.44 748.64,-390.27 749.59,-383.33"/> +</g> +<!-- SDL2&#45;&gt;NAS --> +<g id="edge68" class="edge"> +<title>SDL2&#45;&gt;NAS</title> +<path fill="none" stroke="black" d="M1598.4,-506.58C1616.03,-494.1 1636,-474.73 1636,-451 1636,-451 1636,-451 1636,-340 1636,-259.68 1613.99,-231.06 1552,-180 1543.67,-173.14 1534.02,-167.62 1523.91,-163.18"/> +<polygon fill="black" stroke="black" points="1525.11,-159.89 1514.53,-159.41 1522.5,-166.39 1525.11,-159.89"/> +</g> +<!-- phonon --> +<g id="node26" class="node"> +<title>phonon</title> +<ellipse fill="lightgrey" stroke="black" cx="284" cy="-596" rx="44.69" ry="18"/> +<text text-anchor="middle" x="284" y="-592.3" font-family="Times,serif" font-size="14.00">phonon</text> +</g> +<!-- phonon&#45;&gt;PulseAudio --> +<g id="edge77" class="edge"> +<title>phonon&#45;&gt;PulseAudio</title> +<path fill="none" stroke="black" d="M291.62,-578.03C301.03,-558.54 318.56,-526.49 341,-505 418.12,-431.11 541.97,-399.49 617.85,-386.5"/> +<polygon fill="black" stroke="black" points="618.48,-389.94 627.77,-384.86 617.33,-383.03 618.48,-389.94"/> +</g> +<!-- phonon&#45;&gt;gstreamer --> +<g id="edge75" class="edge"> +<title>phonon&#45;&gt;gstreamer</title> +<path fill="none" stroke="black" d="M257.81,-581.33C247.68,-575.44 236.31,-568.05 227,-560 223.03,-556.56 219.15,-552.57 215.57,-548.51"/> +<polygon fill="black" stroke="black" points="218.21,-546.21 209.11,-540.78 212.84,-550.7 218.21,-546.21"/> +</g> +<!-- VLC --> +<g id="node27" class="node"> +<title>VLC</title> +<g id="a_node27"><a xlink:href="https://code.videolan.org/videolan/vlc/-/tree/master/modules/audio_output" xlink:title="VLC"> +<ellipse fill="lightgrey" stroke="black" cx="771" cy="-523" rx="29.8" ry="18"/> +<text text-anchor="middle" x="771" y="-519.3" font-family="Times,serif" font-size="14.00">VLC</text> +</a> +</g> +</g> +<!-- phonon&#45;&gt;VLC --> +<g id="edge76" class="edge"> +<title>phonon&#45;&gt;VLC</title> +<path fill="none" stroke="black" d="M326.98,-590.58C401.84,-582.59 560.89,-564.41 694,-541 706.96,-538.72 721.04,-535.76 733.57,-532.94"/> +<polygon fill="black" stroke="black" points="734.7,-536.28 743.67,-530.64 733.15,-529.45 734.7,-536.28"/> +</g> +<!-- VLC&#45;&gt;filesystem --> +<g id="edge85" class="edge"> +<title>VLC&#45;&gt;filesystem</title> +<path fill="none" stroke="black" d="M793.73,-510.9C798.98,-508.68 804.6,-506.55 810,-505 917.11,-474.25 953.59,-506.95 1058,-468 1189.18,-419.07 1390.22,-207.44 1402,-181 1413.61,-154.93 1303.04,-167.29 1275,-162 1269.64,-160.99 1264.07,-159.84 1258.51,-158.64"/> +<polygon fill="black" stroke="black" points="1259.1,-155.18 1248.57,-156.42 1257.57,-162.02 1259.1,-155.18"/> +</g> +<!-- VLC&#45;&gt;null --> +<g id="edge83" class="edge"> +<title>VLC&#45;&gt;null</title> +<path fill="none" stroke="red" d="M794.77,-512.01C813.11,-503.1 837.69,-488.31 852,-468 900.11,-399.7 852.97,-355.72 899,-286 920.29,-253.75 1013.24,-190.14 1057.89,-160.67"/> +<polygon fill="red" stroke="red" points="1059.95,-163.51 1066.39,-155.09 1056.11,-157.65 1059.95,-163.51"/> +</g> +<!-- VLC&#45;&gt;ALSA --> +<g id="edge84" class="edge"> +<title>VLC&#45;&gt;ALSA</title> +<path fill="none" stroke="black" d="M793.87,-511.36C799.11,-509.11 804.7,-506.86 810,-505 861.94,-486.78 923.25,-471.05 964.17,-461.34"/> +<polygon fill="black" stroke="black" points="965.18,-464.7 974.11,-459 963.58,-457.88 965.18,-464.7"/> +</g> +<!-- VLC&#45;&gt;JACK --> +<g id="edge86" class="edge"> +<title>VLC&#45;&gt;JACK</title> +<path fill="none" stroke="black" d="M743.7,-515.24C729.03,-511.8 710.61,-507.76 694,-505 549.29,-480.93 506.99,-508.55 366,-468 293.98,-447.29 253.91,-458.43 214,-395 200.98,-374.31 204.18,-362.39 214,-340 216.3,-334.76 219.81,-329.96 223.78,-325.71"/> +<polygon fill="black" stroke="black" points="226.39,-328.06 231.28,-318.66 221.6,-322.96 226.39,-328.06"/> +</g> +<!-- VLC&#45;&gt;sndio --> +<g id="edge88" class="edge"> +<title>VLC&#45;&gt;sndio</title> +<path fill="none" stroke="black" d="M777.73,-505.32C793.69,-466.21 835.79,-365.85 879,-286 917.32,-215.18 969.98,-136.06 996.79,-96.84"/> +<polygon fill="black" stroke="black" points="999.95,-98.42 1002.73,-88.2 994.18,-94.46 999.95,-98.42"/> +</g> +<!-- VLC&#45;&gt;PulseAudio --> +<g id="edge87" class="edge"> +<title>VLC&#45;&gt;PulseAudio</title> +<path fill="none" stroke="black" d="M743.59,-515.73C685.28,-502.34 554.02,-471.85 551,-468 541.13,-455.41 542.06,-445.27 551,-432 566.43,-409.09 593.43,-395.89 619.09,-388.3"/> +<polygon fill="black" stroke="black" points="620.1,-391.65 628.83,-385.65 618.26,-384.89 620.1,-391.65"/> +</g> +<!-- ClanLib --> +<g id="node28" class="node"> +<title>ClanLib</title> +<g id="a_node28"><a xlink:href="https://github.com/sphair/ClanLib/tree/master/Sources/Sound/Platform/Linux" xlink:title="ClanLib"> +<ellipse fill="lightgrey" stroke="black" cx="1157" cy="-523" rx="46.29" ry="18"/> +<text text-anchor="middle" x="1157" y="-519.3" font-family="Times,serif" font-size="14.00">ClanLib</text> +</a> +</g> +</g> +<!-- ClanLib&#45;&gt;ALSA --> +<g id="edge78" class="edge"> +<title>ClanLib&#45;&gt;ALSA</title> +<path fill="none" stroke="black" d="M1129,-508.48C1105.11,-496.94 1070.65,-480.29 1044.95,-467.88"/> +<polygon fill="black" stroke="black" points="1046.45,-464.72 1035.92,-463.52 1043.4,-471.02 1046.45,-464.72"/> +</g> +<!-- allegro --> +<g id="node29" class="node"> +<title>allegro</title> +<g id="a_node29"><a xlink:href="https://github.com/liballeg/allegro5/tree/master/addons/audio" xlink:title="allegro"> +<ellipse fill="lightgrey" stroke="black" cx="1296" cy="-669" rx="42.79" ry="18"/> +<text text-anchor="middle" x="1296" y="-665.3" font-family="Times,serif" font-size="14.00">allegro</text> +</a> +</g> +</g> +<!-- allegro&#45;&gt;PulseAudio --> +<g id="edge80" class="edge"> +<title>allegro&#45;&gt;PulseAudio</title> +<path fill="none" stroke="black" d="M1252.94,-667.79C1036.31,-666.47 76,-657.23 76,-597 76,-597 76,-597 76,-486 76,-409.26 166.13,-452.78 240,-432 367.81,-396.04 522.95,-384.03 611.9,-380.01"/> +<polygon fill="black" stroke="black" points="612.31,-383.5 622.15,-379.57 612.01,-376.51 612.31,-383.5"/> +</g> +<!-- allegro&#45;&gt;OpenAL --> +<g id="edge79" class="edge"> +<title>allegro&#45;&gt;OpenAL</title> +<path fill="none" stroke="black" d="M1296,-650.81C1296,-642.79 1296,-633.05 1296,-624.07"/> +<polygon fill="black" stroke="black" points="1299.5,-624.03 1296,-614.03 1292.5,-624.03 1299.5,-624.03"/> +</g> +<!-- allegro&#45;&gt;SDL2 --> +<g id="edge81" class="edge"> +<title>allegro&#45;&gt;SDL2</title> +<path fill="none" stroke="black" d="M1321.97,-654.45C1371.03,-628.85 1477.54,-573.29 1534.42,-543.61"/> +<polygon fill="black" stroke="black" points="1536.19,-546.63 1543.44,-538.9 1532.95,-540.43 1536.19,-546.63"/> +</g> +<!-- telepathy --> +<g id="node30" class="node"> +<title>telepathy</title> +<ellipse fill="lightgrey" stroke="black" cx="645" cy="-304" rx="54.69" ry="18"/> +<text text-anchor="middle" x="645" y="-300.3" font-family="Times,serif" font-size="14.00">telepathy</text> +</g> +<!-- telepathy&#45;&gt;phone modem --> +<g id="edge82" class="edge"> +<title>telepathy&#45;&gt;phone modem</title> +<path fill="none" stroke="black" d="M637.31,-285.8C632,-273.93 624.85,-257.93 618.82,-244.45"/> +<polygon fill="black" stroke="black" points="621.96,-242.88 614.68,-235.18 615.56,-245.73 621.96,-242.88"/> +<text text-anchor="middle" x="633" y="-256.8" font-family="Times,serif" font-size="14.00" fill="red">?</text> +</g> +<!-- pcaudiolib --> +<g id="node31" class="node"> +<title>pcaudiolib</title> +<g id="a_node31"><a xlink:href="https://github.com/espeak-ng/pcaudiolib" xlink:title="pcaudiolib"> +<ellipse fill="lightgrey" stroke="black" cx="877" cy="-523" rx="58.49" ry="18"/> +<text text-anchor="middle" x="877" y="-519.3" font-family="Times,serif" font-size="14.00">pcaudiolib</text> +</a> +</g> +</g> +<!-- pcaudiolib&#45;&gt;ALSA --> +<g id="edge89" class="edge"> +<title>pcaudiolib&#45;&gt;ALSA</title> +<path fill="none" stroke="black" d="M904.88,-507.12C925.68,-496.02 954.18,-480.8 976.26,-469.01"/> +<polygon fill="black" stroke="black" points="978.12,-471.99 985.29,-464.19 974.82,-465.81 978.12,-471.99"/> +</g> +<!-- pcaudiolib&#45;&gt;PulseAudio --> +<g id="edge90" class="edge"> +<title>pcaudiolib&#45;&gt;PulseAudio</title> +<path fill="none" stroke="black" d="M847.33,-507.21C828.83,-497.33 805.01,-483.35 786,-468 760.06,-447.06 760.23,-434.79 735,-413 729.59,-408.33 723.55,-403.73 717.57,-399.47"/> +<polygon fill="black" stroke="black" points="719.16,-396.31 708.94,-393.51 715.18,-402.07 719.16,-396.31"/> +</g> +</g> +</svg> diff --git a/images/linux-audio-output-obsolete.txt b/images/linux-audio-output-obsolete.txt @@ -0,0 +1,6 @@ +FusionSound +aRts +ESD +SDL1 +OSS +asihpi diff --git a/images/linux-audio-output.dot b/images/linux-audio-output.dot @@ -1,16 +1,14 @@ -digraph "Linux Audio Output APIs" { +digraph "Linux Audio Output APIs (available code)" { node [ shape=ellipse style=filled ]; - label="Linux Audio Output APIs + label="Linux Audio Output APIs (available code) CC-BY 4.0 © 2020-2021 Haelwenn (lanodan) Monnier https://hacktivis.me/articles/linux-audio-output"; - "network card" [ shape=box fillcolor=cyan ]; "sound card" [ shape=box fillcolor=cyan ]; "phone modem" [ shape=box fillcolor=cyan ]; "Bluetooth card" [ shape=box fillcolor=cyan ]; filesystem [ shape=octagon fillcolor=yellow ]; null [ shape=diamond fillcolor=red ]; - "?" [ shape=circle fillcolor=red ]; portaudio [ URL="https://app.assembla.com/spaces/portaudio/git/source/master/src/hostapi/" ]; portaudio -> ALSA; @@ -26,7 +24,6 @@ digraph "Linux Audio Output APIs" { PulseAudio [ URL="https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules/" ]; PulseAudio -> ALSA; PulseAudio -> OSS [ dir=both ]; - PulseAudio -> "network card" [ label="DLNA, RTP, SDP, SAP, RAOP, Tunnel, HTTP" dir=both color=green fontcolor=green ]; PulseAudio -> null [ color=red ]; PulseAudio -> "sound card" [ color=green ]; PulseAudio -> JACK; @@ -35,6 +32,13 @@ digraph "Linux Audio Output APIs" { PulseAudio -> sox; "X11 bell" -> PulseAudio; + PipeWire [ URL="http://pipewire.org/" ]; + PulseAudio -> PipeWire [ dir=both ]; + ALSA -> PipeWire [ dir=both ]; + JACK -> PipeWire [ dir=both ]; + PipeWire -> bluez; + gstreamer -> PipeWire; + ofono [ shape=octagon fillcolor=yellow ]; ofono -> "phone modem" [ color=green ]; @@ -68,12 +72,10 @@ digraph "Linux Audio Output APIs" { RoarAudio -> PulseAudio; RoarAudio -> ESD; RoarAudio -> aRts; - RoarAudio -> "network card" [ label="IPv4, DECnet, OpenSLP" dir=both ]; // Probably incomplete, need some proper documentation ESD -> OSS; ESD -> ALSA; - ESD -> "network card"; libcanberra [ URL="http://git.0pointer.net/libcanberra.git/tree/src/driver-order.c" ]; libcanberra -> PulseAudio; @@ -82,16 +84,8 @@ digraph "Linux Audio Output APIs" { libcanberra -> gstreamer; libcanberra -> null [ color=red ]; - PipeWire [ URL="http://pipewire.org/" ]; - PulseAudio -> PipeWire [ dir=both ]; - ALSA -> PipeWire; - JACK -> PipeWire; - gstreamer -> PipeWire; - PipeWire -> "?" [ color=red ]; - sndio [ URL="http://www.sndio.org/" ]; sndio -> ALSA; - sndio -> "network card" [ dir=both ]; PulseAudio -> sndio; ALSA -> sndio; gstreamer -> sndio; @@ -122,11 +116,9 @@ digraph "Linux Audio Output APIs" { // This shit is the hardest to find any documentation for JUCE -> ALSA; JUCE -> JACK; - JUCE -> "?" [ color=red ]; ALSA [ shape=octagon URL="https://alsa-project.org/wiki/Asoundrc#Plugins" fillcolor=yellow ]; ALSA -> "sound card" [ color=green ]; - ALSA -> "network card" [ color=green ]; ALSA -> PulseAudio; ALSA -> JACK; ALSA -> aRts; @@ -157,7 +149,6 @@ digraph "Linux Audio Output APIs" { SDL2 -> FusionSound [ color=red ]; SDL2 -> JACK; SDL2 -> NAS; - SDL2 -> "OpenSL ES"; // Gonna have to check again on the others // Maybe SDL2 -> "NaCL"; SDL2 -> null [ color=red ]; SDL2 -> OSS; @@ -165,11 +156,9 @@ digraph "Linux Audio Output APIs" { SDL2 -> sndio; FusionSound [ label="DirectFB/FusionSound\n[dead]" fillcolor=red ]; - FusionSound -> "?" [ color=red ]; // And then where the hell does it goes? - NAS [ label="Network Audio Server" ] - NAS -> "network card"; + NAS [ label="Network Audio System/Server" URL="http://radscan.com/nas.html" ] gstreamer -> ALSA; gstreamer -> OSS; @@ -188,22 +177,22 @@ digraph "Linux Audio Output APIs" { allegro -> OSS; allegro -> OpenAL; allegro -> PulseAudio; - allegro -> "OpenSL ES"; allegro -> SDL1; allegro -> SDL2; telepathy -> "phone modem" [ label="?" fontcolor=red ]; - telepathy -> "?" [ color=red ]; VLC [ URL="https://code.videolan.org/videolan/vlc/-/tree/master/modules/audio_output" ]; VLC -> null [ color=red ]; VLC -> ALSA; VLC -> filesystem; VLC -> JACK; - VLC -> "OpenSL ES"; VLC -> OSS; VLC -> PulseAudio; VLC -> sndio; - "OpenSL ES" -> "?" [ color=red ]; + pcaudiolib [ URL="https://github.com/espeak-ng/pcaudiolib" ]; + pcaudiolib -> ALSA; + pcaudiolib -> OSS; + pcaudiolib -> PulseAudio; } \ No newline at end of file diff --git a/images/linux-audio-output.png b/images/linux-audio-output.png Binary files differ. diff --git a/images/linux-audio-output.svg b/images/linux-audio-output.svg @@ -3,1126 +3,1057 @@ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <!-- Generated by graphviz version 2.47.1 (20210417.1919) --> -<!-- Title: Linux Audio Output APIs Pages: 1 --> -<svg width="2779pt" height="943pt" - viewBox="0.00 0.00 2779.48 942.74" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> -<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 938.74)"> -<title>Linux Audio Output APIs</title> -<polygon fill="white" stroke="transparent" points="-4,4 -4,-938.74 2775.48,-938.74 2775.48,4 -4,4"/> -<text text-anchor="middle" x="1385.74" y="-37.8" font-family="Times,serif" font-size="14.00">Linux Audio Output APIs</text> -<text text-anchor="middle" x="1385.74" y="-22.8" font-family="Times,serif" font-size="14.00"> CC&#45;BY 4.0 © 2020&#45;2021 Haelwenn (lanodan) Monnier</text> -<text text-anchor="middle" x="1385.74" y="-7.8" font-family="Times,serif" font-size="14.00"> https://hacktivis.me/articles/linux&#45;audio&#45;output</text> -<!-- network card --> -<g id="node1" class="node"> -<title>network card</title> -<polygon fill="cyan" stroke="black" points="1652.98,-89 1541.98,-89 1541.98,-53 1652.98,-53 1652.98,-89"/> -<text text-anchor="middle" x="1597.48" y="-67.3" font-family="Times,serif" font-size="14.00">network card</text> -</g> +<!-- Title: Linux Audio Output APIs (available code) Pages: 1 --> +<svg width="2590pt" height="849pt" + viewBox="0.00 0.00 2590.00 848.74" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 844.74)"> +<title>Linux Audio Output APIs (available code)</title> +<polygon fill="white" stroke="transparent" points="-4,4 -4,-844.74 2586,-844.74 2586,4 -4,4"/> +<text text-anchor="middle" x="1291" y="-37.8" font-family="Times,serif" font-size="14.00">Linux Audio Output APIs (available code)</text> +<text text-anchor="middle" x="1291" y="-22.8" font-family="Times,serif" font-size="14.00"> CC&#45;BY 4.0 © 2020&#45;2021 Haelwenn (lanodan) Monnier</text> +<text text-anchor="middle" x="1291" y="-7.8" font-family="Times,serif" font-size="14.00"> https://hacktivis.me/articles/linux&#45;audio&#45;output</text> <!-- sound card --> -<g id="node2" class="node"> +<g id="node1" class="node"> <title>sound card</title> -<polygon fill="cyan" stroke="black" points="1459.98,-235 1364.98,-235 1364.98,-199 1459.98,-199 1459.98,-235"/> -<text text-anchor="middle" x="1412.48" y="-213.3" font-family="Times,serif" font-size="14.00">sound card</text> +<polygon fill="cyan" stroke="black" points="1695.5,-162 1600.5,-162 1600.5,-126 1695.5,-126 1695.5,-162"/> +<text text-anchor="middle" x="1648" y="-140.3" font-family="Times,serif" font-size="14.00">sound card</text> </g> <!-- phone modem --> -<g id="node3" class="node"> +<g id="node2" class="node"> <title>phone modem</title> -<polygon fill="cyan" stroke="black" points="1393.98,-395 1276.98,-395 1276.98,-359 1393.98,-359 1393.98,-395"/> -<text text-anchor="middle" x="1335.48" y="-373.3" font-family="Times,serif" font-size="14.00">phone modem</text> +<polygon fill="cyan" stroke="black" points="727.5,-322 610.5,-322 610.5,-286 727.5,-286 727.5,-322"/> +<text text-anchor="middle" x="669" y="-300.3" font-family="Times,serif" font-size="14.00">phone modem</text> </g> <!-- Bluetooth card --> -<g id="node4" class="node"> +<g id="node3" class="node"> <title>Bluetooth card</title> -<polygon fill="cyan" stroke="black" points="1772.48,-395 1650.48,-395 1650.48,-359 1772.48,-359 1772.48,-395"/> -<text text-anchor="middle" x="1711.48" y="-373.3" font-family="Times,serif" font-size="14.00">Bluetooth card</text> +<polygon fill="cyan" stroke="black" points="616,-162 494,-162 494,-126 616,-126 616,-162"/> +<text text-anchor="middle" x="555" y="-140.3" font-family="Times,serif" font-size="14.00">Bluetooth card</text> </g> <!-- filesystem --> -<g id="node5" class="node"> +<g id="node4" class="node"> <title>filesystem</title> -<polygon fill="yellow" stroke="black" points="1961.21,-296.54 1961.21,-311.46 1924.46,-322 1872.5,-322 1835.76,-311.46 1835.76,-296.54 1872.5,-286 1924.46,-286 1961.21,-296.54"/> -<text text-anchor="middle" x="1898.48" y="-300.3" font-family="Times,serif" font-size="14.00">filesystem</text> +<polygon fill="yellow" stroke="black" points="1264.72,-223.54 1264.72,-238.46 1227.98,-249 1176.02,-249 1139.28,-238.46 1139.28,-223.54 1176.02,-213 1227.98,-213 1264.72,-223.54"/> +<text text-anchor="middle" x="1202" y="-227.3" font-family="Times,serif" font-size="14.00">filesystem</text> </g> <!-- null --> -<g id="node6" class="node"> +<g id="node5" class="node"> <title>null</title> -<polygon fill="red" stroke="black" points="2090.48,-322 2050.1,-304 2090.48,-286 2130.87,-304 2090.48,-322"/> -<text text-anchor="middle" x="2090.48" y="-300.3" font-family="Times,serif" font-size="14.00">null</text> -</g> -<!-- ? --> -<g id="node7" class="node"> -<title>?</title> -<ellipse fill="red" stroke="black" cx="255.48" cy="-304" rx="18" ry="18"/> -<text text-anchor="middle" x="255.48" y="-300.3" font-family="Times,serif" font-size="14.00">?</text> +<polygon fill="red" stroke="black" points="1079,-249 1038.61,-231 1079,-213 1119.39,-231 1079,-249"/> +<text text-anchor="middle" x="1079" y="-227.3" font-family="Times,serif" font-size="14.00">null</text> </g> <!-- portaudio --> -<g id="node8" class="node"> +<g id="node6" class="node"> <title>portaudio</title> -<g id="a_node8"><a xlink:href="https://app.assembla.com/spaces/portaudio/git/source/master/src/hostapi/" xlink:title="portaudio"> -<ellipse fill="lightgrey" stroke="black" cx="1705.48" cy="-770.74" rx="55.79" ry="18"/> -<text text-anchor="middle" x="1705.48" y="-767.04" font-family="Times,serif" font-size="14.00">portaudio</text> +<g id="a_node6"><a xlink:href="https://app.assembla.com/spaces/portaudio/git/source/master/src/hostapi/" xlink:title="portaudio"> +<ellipse fill="lightgrey" stroke="black" cx="1136" cy="-676.74" rx="55.79" ry="18"/> +<text text-anchor="middle" x="1136" y="-673.04" font-family="Times,serif" font-size="14.00">portaudio</text> </a> </g> </g> <!-- ALSA --> -<g id="node9" class="node"> +<g id="node7" class="node"> <title>ALSA</title> -<g id="a_node9"><a xlink:href="https://alsa-project.org/wiki/Asoundrc#Plugins" xlink:title="ALSA"> -<polygon fill="yellow" stroke="black" points="1351.37,-690.28 1351.37,-705.2 1328.59,-715.74 1296.38,-715.74 1273.6,-705.2 1273.6,-690.28 1296.38,-679.74 1328.59,-679.74 1351.37,-690.28"/> -<text text-anchor="middle" x="1312.48" y="-694.04" font-family="Times,serif" font-size="14.00">ALSA</text> +<g id="a_node7"><a xlink:href="https://alsa-project.org/wiki/Asoundrc#Plugins" xlink:title="ALSA"> +<polygon fill="yellow" stroke="black" points="1121.89,-587.41 1121.89,-602.33 1099.11,-612.87 1066.89,-612.87 1044.11,-602.33 1044.11,-587.41 1066.89,-576.87 1099.11,-576.87 1121.89,-587.41"/> +<text text-anchor="middle" x="1083" y="-591.17" font-family="Times,serif" font-size="14.00">ALSA</text> </a> </g> </g> <!-- portaudio&#45;&gt;ALSA --> <g id="edge1" class="edge"> <title>portaudio&#45;&gt;ALSA</title> -<path fill="none" stroke="black" d="M1658.08,-761.18C1582.82,-747.58 1436.76,-721.19 1360.88,-707.48"/> -<polygon fill="black" stroke="black" points="1361.12,-703.97 1350.66,-705.64 1359.87,-710.86 1361.12,-703.97"/> +<path fill="none" stroke="black" d="M1124.76,-658.8C1117.57,-647.97 1108.11,-633.71 1100.01,-621.51"/> +<polygon fill="black" stroke="black" points="1102.85,-619.46 1094.41,-613.06 1097.02,-623.33 1102.85,-619.46"/> </g> <!-- JACK --> -<g id="node10" class="node"> +<g id="node8" class="node"> <title>JACK</title> -<ellipse fill="lightgrey" stroke="black" cx="1540.48" cy="-464" rx="34.39" ry="18"/> -<text text-anchor="middle" x="1540.48" y="-460.3" font-family="Times,serif" font-size="14.00">JACK</text> +<ellipse fill="lightgrey" stroke="black" cx="290" cy="-391" rx="34.39" ry="18"/> +<text text-anchor="middle" x="290" y="-387.3" font-family="Times,serif" font-size="14.00">JACK</text> </g> <!-- portaudio&#45;&gt;JACK --> <g id="edge2" class="edge"> <title>portaudio&#45;&gt;JACK</title> -<path fill="none" stroke="black" d="M1661.02,-759.74C1636.46,-751.88 1607.55,-738.37 1590.48,-715.74 1531.98,-638.19 1582.6,-593.28 1555.48,-500 1554.65,-497.14 1553.65,-494.21 1552.56,-491.31"/> -<polygon fill="black" stroke="black" points="1555.69,-489.71 1548.66,-481.78 1549.21,-492.36 1555.69,-489.71"/> +<path fill="none" stroke="black" d="M1085.17,-669.16C993.49,-657.12 807.29,-631.88 779,-621.74 712.98,-598.08 570.63,-491.57 508,-460 474.02,-442.87 465.4,-438.08 429,-427 389.56,-414.99 377.76,-419.91 338,-409 334.22,-407.96 330.32,-406.78 326.44,-405.52"/> +<polygon fill="black" stroke="black" points="327.54,-402.2 316.94,-402.31 325.3,-408.83 327.54,-402.2"/> </g> <!-- OSS --> -<g id="node11" class="node"> +<g id="node9" class="node"> <title>OSS</title> -<polygon fill="yellow" stroke="black" points="1073.61,-296.54 1073.61,-311.46 1054.21,-322 1026.76,-322 1007.36,-311.46 1007.36,-296.54 1026.76,-286 1054.21,-286 1073.61,-296.54"/> -<text text-anchor="middle" x="1040.48" y="-300.3" font-family="Times,serif" font-size="14.00">OSS</text> +<polygon fill="yellow" stroke="black" points="1828.13,-223.54 1828.13,-238.46 1808.72,-249 1781.28,-249 1761.87,-238.46 1761.87,-223.54 1781.28,-213 1808.72,-213 1828.13,-223.54"/> +<text text-anchor="middle" x="1795" y="-227.3" font-family="Times,serif" font-size="14.00">OSS</text> </g> <!-- portaudio&#45;&gt;OSS --> <g id="edge3" class="edge"> <title>portaudio&#45;&gt;OSS</title> -<path fill="none" stroke="black" d="M1703.86,-752.72C1696.73,-681.88 1665.74,-411.69 1603.48,-359 1583.75,-342.3 1397.23,-343.4 1371.48,-341 1268.17,-331.38 1147,-317.55 1083.81,-310.14"/> -<polygon fill="black" stroke="black" points="1084.15,-306.66 1073.81,-308.97 1083.33,-313.61 1084.15,-306.66"/> +<path fill="none" stroke="black" d="M1177.53,-664.53C1185.31,-662.53 1193.39,-660.52 1201,-658.74 1280.54,-640.18 1302.48,-644.22 1381,-621.74 1447.07,-602.82 1460.83,-589.83 1526,-568 1552.4,-559.16 1563.03,-565.73 1586,-550 1602.72,-538.54 1598.07,-526.53 1614,-514 1629.33,-501.95 1639.76,-509.31 1654,-496 1727.52,-427.3 1770.5,-311.46 1787.07,-259.12"/> +<polygon fill="black" stroke="black" points="1790.51,-259.83 1790.12,-249.24 1783.82,-257.76 1790.51,-259.83"/> </g> <!-- asihpi --> -<g id="node12" class="node"> +<g id="node10" class="node"> <title>asihpi</title> -<polygon fill="yellow" stroke="black" points="1908,-510.54 1908,-525.46 1883.68,-536 1849.29,-536 1824.97,-525.46 1824.97,-510.54 1849.29,-500 1883.68,-500 1908,-510.54"/> -<text text-anchor="middle" x="1866.48" y="-514.3" font-family="Times,serif" font-size="14.00">asihpi</text> +<polygon fill="yellow" stroke="black" points="1584.51,-524.54 1584.51,-539.46 1560.19,-550 1525.81,-550 1501.49,-539.46 1501.49,-524.54 1525.81,-514 1560.19,-514 1584.51,-524.54"/> +<text text-anchor="middle" x="1543" y="-528.3" font-family="Times,serif" font-size="14.00">asihpi</text> </g> <!-- portaudio&#45;&gt;asihpi --> <g id="edge4" class="edge"> <title>portaudio&#45;&gt;asihpi</title> -<path fill="none" stroke="black" d="M1716.3,-752.9C1743.9,-709.91 1817.1,-595.91 1850.03,-544.63"/> -<polygon fill="black" stroke="black" points="1853.05,-546.4 1855.51,-536.1 1847.16,-542.62 1853.05,-546.4"/> +<path fill="none" stroke="black" d="M1172.98,-663.12C1238.44,-640.71 1378.94,-592.37 1497,-550 1498.86,-549.33 1500.77,-548.64 1502.69,-547.95"/> +<polygon fill="black" stroke="black" points="1504.15,-551.14 1512.35,-544.42 1501.75,-544.56 1504.15,-551.14"/> </g> <!-- sndio --> -<g id="node13" class="node"> +<g id="node11" class="node"> <title>sndio</title> -<g id="a_node13"><a xlink:href="http://www.sndio.org/" xlink:title="sndio"> -<ellipse fill="lightgrey" stroke="black" cx="2138.48" cy="-144" rx="36" ry="18"/> -<text text-anchor="middle" x="2138.48" y="-140.3" font-family="Times,serif" font-size="14.00">sndio</text> +<g id="a_node11"><a xlink:href="http://www.sndio.org/" xlink:title="sndio"> +<ellipse fill="lightgrey" stroke="black" cx="805" cy="-71" rx="36" ry="18"/> +<text text-anchor="middle" x="805" y="-67.3" font-family="Times,serif" font-size="14.00">sndio</text> </a> </g> </g> <!-- portaudio&#45;&gt;sndio --> <g id="edge6" class="edge"> <title>portaudio&#45;&gt;sndio</title> -<path fill="none" stroke="black" d="M1757.7,-764.28C1831.88,-755.85 1963.46,-738.29 2005.48,-715.74 2132.28,-647.72 2166.17,-611.21 2229.48,-482 2283.14,-372.49 2196.21,-226.91 2156.56,-169.63"/> -<polygon fill="black" stroke="black" points="2159.26,-167.38 2150.63,-161.22 2153.53,-171.41 2159.26,-167.38"/> -</g> -<!-- ALSA&#45;&gt;network card --> -<g id="edge81" class="edge"> -<title>ALSA&#45;&gt;network card</title> -<path fill="none" stroke="green" d="M1273.61,-695.95C1196.55,-693.86 1027.38,-686.5 975.48,-661.74 740.32,-549.52 665.18,-478.9 573.48,-235 564.67,-211.57 578.44,-129.77 582.48,-126 617.24,-93.58 1312.44,-77.48 1531.78,-73.2"/> -<polygon fill="green" stroke="green" points="1531.93,-76.69 1541.86,-73 1531.8,-69.69 1531.93,-76.69"/> +<path fill="none" stroke="black" d="M1153.97,-659.49C1181.29,-635.68 1235.85,-591.58 1290,-568 1325,-552.75 1341.66,-570.29 1374,-550 1477.11,-485.29 1514.3,-387.44 1447,-286 1372.06,-173.04 941.54,-176.77 909,-162 899.75,-157.8 856.83,-119.4 829.1,-94.14"/> +<polygon fill="black" stroke="black" points="831.12,-91.24 821.38,-87.08 826.4,-96.41 831.12,-91.24"/> </g> <!-- ALSA&#45;&gt;sound card --> -<g id="edge80" class="edge"> +<g id="edge75" class="edge"> <title>ALSA&#45;&gt;sound card</title> -<path fill="none" stroke="green" d="M1273.45,-692.23C1254.12,-687.8 1232.42,-679.04 1220.48,-661.74 1195.98,-626.2 1239.62,-571.49 1262.48,-428 1267.33,-397.6 1255.34,-386.83 1268.48,-359 1292.46,-308.25 1342.92,-265.74 1377.27,-241.07"/> -<polygon fill="green" stroke="green" points="1379.47,-243.81 1385.63,-235.19 1375.44,-238.08 1379.47,-243.81"/> +<path fill="none" stroke="green" d="M1119.86,-586.36C1147.17,-580.92 1185.33,-573.57 1219,-568 1275.68,-558.63 1297.45,-579.08 1347,-550 1348.71,-548.99 1518.82,-323.6 1520,-322 1559.58,-268.57 1604.99,-205.3 1629.67,-170.73"/> +<polygon fill="green" stroke="green" points="1632.81,-172.35 1635.77,-162.18 1627.12,-168.29 1632.81,-172.35"/> </g> <!-- ALSA&#45;&gt;filesystem --> -<g id="edge86" class="edge"> +<g id="edge80" class="edge"> <title>ALSA&#45;&gt;filesystem</title> -<path fill="none" stroke="black" d="M1306.81,-679.57C1296.17,-644.29 1276.51,-561.79 1302.48,-500 1306.82,-489.68 1436.51,-364.09 1446.48,-359 1511.01,-326.11 1714.82,-312.63 1825.4,-307.63"/> -<polygon fill="black" stroke="black" points="1825.64,-311.13 1835.48,-307.19 1825.34,-304.13 1825.64,-311.13"/> +<path fill="none" stroke="black" d="M1108.52,-581.16C1120.83,-573.74 1134.69,-563.22 1143,-550 1202.12,-456.01 1205.11,-317.47 1203.41,-259.3"/> +<polygon fill="black" stroke="black" points="1206.9,-258.95 1203.03,-249.08 1199.9,-259.21 1206.9,-258.95"/> </g> <!-- ALSA&#45;&gt;null --> -<g id="edge85" class="edge"> +<g id="edge79" class="edge"> <title>ALSA&#45;&gt;null</title> -<path fill="none" stroke="red" d="M1317.13,-679.72C1326.86,-645.07 1350.94,-564.18 1380.48,-500 1399.23,-459.29 1405.14,-449.26 1431.48,-413 1450.36,-387.02 1450.71,-373.25 1479.48,-359 1528.51,-334.73 1916.09,-327.9 1970.48,-322 1998,-319.02 2028.92,-314.61 2052.48,-311.03"/> -<polygon fill="red" stroke="red" points="2053.07,-314.48 2062.42,-309.51 2052.01,-307.56 2053.07,-314.48"/> +<path fill="none" stroke="red" d="M1102.46,-578.27C1110.7,-570.62 1119.62,-560.75 1125,-550 1135.9,-528.25 1131.99,-520.25 1134,-496 1136.53,-465.43 1137.08,-457.4 1133,-427 1124.59,-364.26 1101.26,-293.22 1088.18,-256.66"/> +<polygon fill="red" stroke="red" points="1091.34,-255.08 1084.64,-246.88 1084.76,-257.47 1091.34,-255.08"/> </g> <!-- ALSA&#45;&gt;JACK --> -<g id="edge83" class="edge"> +<g id="edge77" class="edge"> <title>ALSA&#45;&gt;JACK</title> -<path fill="none" stroke="black" d="M1348.61,-688.88C1366.19,-683.59 1386.67,-675.06 1401.48,-661.74 1421.51,-643.73 1412.32,-628.76 1429.48,-608 1462.35,-568.25 1491.88,-578.91 1520.48,-536 1529.2,-522.92 1534.16,-506.07 1536.95,-492.06"/> -<polygon fill="black" stroke="black" points="1540.44,-492.47 1538.7,-482.02 1533.54,-491.27 1540.44,-492.47"/> +<path fill="none" stroke="black" d="M1044.22,-589.52C993,-583.28 900.27,-570.25 823,-550 777.31,-538.02 768.19,-527.75 723,-514 691.44,-504.4 682.52,-505.74 651,-496 634.47,-490.89 520.77,-449.1 505,-442 492.13,-436.2 490.34,-431.63 477,-427 433.92,-412.05 420.81,-417.42 376,-409 361.56,-406.29 345.77,-403.2 331.72,-400.41"/> +<polygon fill="black" stroke="black" points="332.32,-396.96 321.83,-398.44 330.95,-403.83 332.32,-396.96"/> </g> <!-- ALSA&#45;&gt;sndio --> -<g id="edge58" class="edge"> +<g id="edge54" class="edge"> <title>ALSA&#45;&gt;sndio</title> -<path fill="none" stroke="black" d="M1291.05,-682.04C1285.91,-676.13 1281.26,-668.99 1278.48,-661.74 1230.08,-535.49 1222.29,-491.65 1248.48,-359 1264.68,-276.96 1273.49,-237.96 1347.48,-199 1363.99,-190.31 1926.12,-156.88 2092.57,-147.47"/> -<polygon fill="black" stroke="black" points="2093.17,-150.95 2102.96,-146.89 2092.78,-143.96 2093.17,-150.95"/> +<path fill="none" stroke="black" d="M1080.04,-576.69C1078.66,-537.18 1080.98,-438.2 1038,-373 1010.46,-331.22 877.77,-290.64 850,-249 818.66,-202.01 804.9,-136.08 802.27,-99.39"/> +<polygon fill="black" stroke="black" points="805.74,-98.83 801.8,-88.99 798.75,-99.14 805.74,-98.83"/> </g> <!-- PulseAudio --> -<g id="node14" class="node"> +<g id="node12" class="node"> <title>PulseAudio</title> -<g id="a_node14"><a xlink:href="https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules/" xlink:title="PulseAudio"> -<ellipse fill="lightgrey" stroke="black" cx="2011.48" cy="-572" rx="62.29" ry="18"/> -<text text-anchor="middle" x="2011.48" y="-568.3" font-family="Times,serif" font-size="14.00">PulseAudio</text> +<g id="a_node12"><a xlink:href="https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules/" xlink:title="PulseAudio"> +<ellipse fill="lightgrey" stroke="black" cx="757" cy="-478" rx="62.29" ry="18"/> +<text text-anchor="middle" x="757" y="-474.3" font-family="Times,serif" font-size="14.00">PulseAudio</text> </a> </g> </g> <!-- ALSA&#45;&gt;PulseAudio --> -<g id="edge82" class="edge"> +<g id="edge76" class="edge"> <title>ALSA&#45;&gt;PulseAudio</title> -<path fill="none" stroke="black" d="M1350.95,-689.85C1392.81,-683.08 1461.31,-672.25 1520.48,-661.74 1643.96,-639.81 1674.11,-630.5 1797.48,-608 1847.3,-598.92 1904.07,-589.28 1946.69,-582.42"/> -<polygon fill="black" stroke="black" points="1947.34,-585.86 1956.66,-580.83 1946.23,-578.95 1947.34,-585.86"/> +<path fill="none" stroke="black" d="M1053.04,-583.05C1001.86,-562.53 902.3,-519.49 886,-514 862.03,-505.92 835.16,-498.71 812.13,-492.96"/> +<polygon fill="black" stroke="black" points="812.72,-489.5 802.18,-490.5 811.05,-496.3 812.72,-489.5"/> </g> <!-- bluez --> -<g id="node15" class="node"> +<g id="node13" class="node"> <title>bluez</title> -<polygon fill="yellow" stroke="black" points="1752,-456.54 1752,-471.46 1727.68,-482 1693.29,-482 1668.97,-471.46 1668.97,-456.54 1693.29,-446 1727.68,-446 1752,-456.54"/> -<text text-anchor="middle" x="1710.48" y="-460.3" font-family="Times,serif" font-size="14.00">BlueZ</text> +<polygon fill="yellow" stroke="black" points="587.51,-223.54 587.51,-238.46 563.19,-249 528.81,-249 504.49,-238.46 504.49,-223.54 528.81,-213 563.19,-213 587.51,-223.54"/> +<text text-anchor="middle" x="546" y="-227.3" font-family="Times,serif" font-size="14.00">BlueZ</text> </g> <!-- ALSA&#45;&gt;bluez --> -<g id="edge18" class="edge"> +<g id="edge22" class="edge"> <title>ALSA&#45;&gt;bluez</title> -<path fill="none" stroke="black" d="M1351.22,-692.51C1375.15,-688.18 1405.24,-679.42 1426.48,-661.74 1447.18,-644.51 1435.28,-626.88 1454.48,-608 1467.24,-595.46 1474.7,-598.42 1490.48,-590 1557.64,-554.16 1634.68,-509.57 1677.46,-484.49"/> -<polygon fill="black" stroke="black" points="1679.45,-487.38 1686.3,-479.3 1675.91,-481.34 1679.45,-487.38"/> -</g> -<!-- aRts --> -<g id="node20" class="node"> -<title>aRts</title> -<ellipse fill="lightgrey" stroke="black" cx="623.48" cy="-144" rx="31.7" ry="18"/> -<text text-anchor="middle" x="623.48" y="-140.3" font-family="Times,serif" font-size="14.00">aRts</text> -</g> -<!-- ALSA&#45;&gt;aRts --> -<g id="edge84" class="edge"> -<title>ALSA&#45;&gt;aRts</title> -<path fill="none" stroke="black" d="M1273.37,-697.61C1224.92,-697.23 1140.89,-691.7 1076.48,-661.74 914.11,-586.22 889.21,-532.51 774.48,-395 712.47,-320.67 658.97,-218.16 635.77,-170.84"/> -<polygon fill="black" stroke="black" points="638.81,-169.08 631.29,-161.62 632.51,-172.14 638.81,-169.08"/> +<path fill="none" stroke="black" d="M1071.67,-576.83C1044.68,-537.17 972.87,-437.19 894,-373 831.83,-322.4 810.14,-316.49 736,-286 689.13,-266.73 633.05,-251.71 594.02,-242.46"/> +<polygon fill="black" stroke="black" points="594.51,-238.98 583.98,-240.12 592.92,-245.8 594.51,-238.98"/> </g> <!-- PipeWire --> -<g id="node26" class="node"> +<g id="node17" class="node"> <title>PipeWire</title> -<g id="a_node26"><a xlink:href="http://pipewire.org/" xlink:title="PipeWire"> -<ellipse fill="lightgrey" stroke="black" cx="1541.48" cy="-377" rx="53.09" ry="18"/> -<text text-anchor="middle" x="1541.48" y="-373.3" font-family="Times,serif" font-size="14.00">PipeWire</text> +<g id="a_node17"><a xlink:href="http://pipewire.org/" xlink:title="PipeWire"> +<ellipse fill="lightgrey" stroke="black" cx="385" cy="-304" rx="53.09" ry="18"/> +<text text-anchor="middle" x="385" y="-300.3" font-family="Times,serif" font-size="14.00">PipeWire</text> </a> </g> </g> <!-- ALSA&#45;&gt;PipeWire --> -<g id="edge51" class="edge"> +<g id="edge17" class="edge"> <title>ALSA&#45;&gt;PipeWire</title> -<path fill="none" stroke="black" d="M1312.06,-679.53C1312,-643.1 1316.34,-556.88 1355.48,-500 1390.59,-448.98 1454.71,-414.01 1497.71,-395"/> -<polygon fill="black" stroke="black" points="1499.28,-398.13 1507.08,-390.96 1496.51,-391.7 1499.28,-398.13"/> +<path fill="none" stroke="black" d="M1035.49,-584.51C996.41,-576.46 939.73,-563.96 891,-550 843.98,-536.53 834.33,-526.33 787,-514 742.88,-502.51 729.2,-510.59 686,-496 652.85,-484.81 647.2,-475.82 616,-460 600.05,-451.91 595.89,-450.22 580,-442 567.46,-435.51 565.42,-431.38 552,-427 496.96,-409.05 468.03,-445.38 423,-409 399.82,-390.27 390.78,-356.07 387.25,-332.02"/> +<polygon fill="black" stroke="black" points="1035.03,-587.99 1045.53,-586.57 1036.43,-581.13 1035.03,-587.99"/> +<polygon fill="black" stroke="black" points="390.72,-331.59 386.02,-322.09 383.78,-332.45 390.72,-331.59"/> +</g> +<!-- aRts --> +<g id="node20" class="node"> +<title>aRts</title> +<ellipse fill="lightgrey" stroke="black" cx="1432" cy="-71" rx="31.7" ry="18"/> +<text text-anchor="middle" x="1432" y="-67.3" font-family="Times,serif" font-size="14.00">aRts</text> +</g> +<!-- ALSA&#45;&gt;aRts --> +<g id="edge78" class="edge"> +<title>ALSA&#45;&gt;aRts</title> +<path fill="none" stroke="black" d="M1112.92,-583.05C1130.02,-575.73 1150.97,-564.71 1166,-550 1308.91,-410.14 1396.68,-177.01 1423.34,-98.63"/> +<polygon fill="black" stroke="black" points="1426.69,-99.62 1426.56,-89.03 1420.06,-97.4 1426.69,-99.62"/> </g> <!-- JACK&#45;&gt;PipeWire --> -<g id="edge52" class="edge"> +<g id="edge18" class="edge"> <title>JACK&#45;&gt;PipeWire</title> -<path fill="none" stroke="black" d="M1540.69,-445.8C1540.82,-434.16 1541.01,-418.55 1541.16,-405.24"/> -<polygon fill="black" stroke="black" points="1544.66,-405.22 1541.28,-395.18 1537.66,-405.13 1544.66,-405.22"/> +<path fill="none" stroke="black" d="M311.08,-366.45C319.2,-357.82 328.74,-348.17 338,-340 343.13,-335.48 348.8,-330.92 354.38,-326.65"/> +<polygon fill="black" stroke="black" points="308.3,-364.31 304.08,-374.02 313.44,-369.06 308.3,-364.31"/> +<polygon fill="black" stroke="black" points="356.49,-329.44 362.41,-320.65 352.3,-323.83 356.49,-329.44"/> </g> <!-- OSS&#45;&gt;sound card --> -<g id="edge88" class="edge"> +<g id="edge82" class="edge"> <title>OSS&#45;&gt;sound card</title> -<path fill="none" stroke="green" d="M1014.83,-292.47C994.66,-282.74 972.02,-267.62 985.48,-253 1010.01,-226.38 1244.16,-220.01 1354.93,-218.48"/> -<polygon fill="green" stroke="green" points="1354.98,-221.98 1364.94,-218.35 1354.89,-214.98 1354.98,-221.98"/> -<text text-anchor="middle" x="1129.48" y="-256.8" font-family="Times,serif" font-size="14.00" fill="green">third&#45;party drivers from opensound.com</text> +<path fill="none" stroke="green" d="M1781.22,-212.77C1771.93,-202.11 1758.89,-188.82 1745,-180 1732.96,-172.35 1719.02,-166.08 1705.53,-161.06"/> +<polygon fill="green" stroke="green" points="1706.41,-157.66 1695.82,-157.62 1704.08,-164.26 1706.41,-157.66"/> +<text text-anchor="middle" x="1907" y="-183.8" font-family="Times,serif" font-size="14.00" fill="green">third&#45;party drivers from opensound.com</text> </g> <!-- OSS&#45;&gt;ALSA --> -<g id="edge87" class="edge"> +<g id="edge81" class="edge"> <title>OSS&#45;&gt;ALSA</title> -<path fill="none" stroke="black" d="M1042.73,-322.31C1049.37,-368.76 1072.12,-498.82 1128.48,-590 1150.95,-626.34 1156.35,-638.93 1192.48,-661.74 1213.98,-675.31 1240.94,-683.79 1263.85,-689"/> -<polygon fill="black" stroke="black" points="1263.22,-692.44 1273.73,-691.1 1264.68,-685.6 1263.22,-692.44"/> +<path fill="none" stroke="black" d="M1761.75,-232.75C1729.64,-235 1681.01,-242.61 1647,-267 1609.52,-293.88 1617.5,-316.57 1592,-355 1519.75,-463.87 1492.94,-500.55 1372,-550 1308.62,-575.91 1286.67,-557.6 1219,-568 1189.12,-572.59 1155.76,-578.92 1129.56,-584.17"/> +<polygon fill="black" stroke="black" points="1128.64,-580.78 1119.53,-586.19 1130.03,-587.64 1128.64,-580.78"/> </g> <!-- RoarAudio --> <g id="node23" class="node"> <title>RoarAudio</title> <g id="a_node23"><a xlink:href="http://roaraudio.keep-cool.org/" xlink:title="RoarAudio"> -<ellipse fill="lightgrey" stroke="black" cx="1720.48" cy="-217" rx="59.29" ry="18"/> -<text text-anchor="middle" x="1720.48" y="-213.3" font-family="Times,serif" font-size="14.00">RoarAudio</text> +<ellipse fill="lightgrey" stroke="black" cx="977" cy="-144" rx="59.29" ry="18"/> +<text text-anchor="middle" x="977" y="-140.3" font-family="Times,serif" font-size="14.00">RoarAudio</text> </a> </g> </g> <!-- OSS&#45;&gt;RoarAudio --> -<g id="edge36" class="edge"> +<g id="edge40" class="edge"> <title>OSS&#45;&gt;RoarAudio</title> -<path fill="none" stroke="black" d="M1073.74,-298.84C1180.4,-285.51 1515.13,-243.67 1656.48,-226"/> -<polygon fill="black" stroke="black" points="1657.24,-229.43 1666.72,-224.72 1656.37,-222.49 1657.24,-229.43"/> +<path fill="none" stroke="black" d="M1761.92,-226.56C1639.03,-213.79 1207.37,-168.94 1042.07,-151.76"/> +<polygon fill="black" stroke="black" points="1042.35,-148.27 1032.04,-150.72 1041.63,-155.23 1042.35,-148.27"/> </g> <!-- asihpi&#45;&gt;sound card --> <g id="edge5" class="edge"> <title>asihpi&#45;&gt;sound card</title> -<path fill="none" stroke="green" d="M1867.07,-499.9C1866.94,-485.03 1865.22,-463.23 1857.48,-446 1836.45,-399.16 1824.44,-387.12 1781.48,-359 1735.85,-329.13 1715.74,-340.64 1664.48,-322 1592.4,-295.78 1510.6,-261.08 1460.26,-239.15"/> -<polygon fill="green" stroke="green" points="1461.5,-235.87 1450.94,-235.07 1458.7,-242.28 1461.5,-235.87"/> -</g> -<!-- sndio&#45;&gt;network card --> -<g id="edge56" class="edge"> -<title>sndio&#45;&gt;network card</title> -<path fill="none" stroke="black" d="M2094.07,-137.17C1998.99,-124.69 1775.3,-95.34 1663.5,-80.66"/> -<polygon fill="black" stroke="black" points="2093.86,-140.67 2104.23,-138.5 2094.77,-133.73 2093.86,-140.67"/> -<polygon fill="black" stroke="black" points="1663.74,-77.17 1653.37,-79.33 1662.83,-84.11 1663.74,-77.17"/> +<path fill="none" stroke="green" d="M1573.43,-519.55C1595.73,-510.96 1622.8,-500.01 1627,-496 1657.91,-466.47 1657.89,-450.53 1668,-409 1688.6,-324.33 1667.72,-220.27 1655.5,-171.99"/> +<polygon fill="green" stroke="green" points="1658.88,-171.08 1652.97,-162.29 1652.11,-172.85 1658.88,-171.08"/> </g> <!-- sndio&#45;&gt;ALSA --> -<g id="edge55" class="edge"> +<g id="edge52" class="edge"> <title>sndio&#45;&gt;ALSA</title> -<path fill="none" stroke="black" d="M2103.28,-147.23C1954.11,-156.29 1382.14,-190.23 1365.48,-199 1291.49,-237.96 1282.68,-276.96 1266.48,-359 1240.29,-491.65 1248.08,-535.49 1296.48,-661.74 1297.69,-664.88 1299.24,-667.99 1300.93,-671"/> -<polygon fill="black" stroke="black" points="1298,-672.91 1306.22,-679.59 1303.96,-669.24 1298,-672.91"/> -</g> -<!-- PulseAudio&#45;&gt;network card --> -<g id="edge9" class="edge"> -<title>PulseAudio&#45;&gt;network card</title> -<path fill="none" stroke="green" d="M2083.06,-567.37C2130.51,-563.27 2193.53,-554.55 2246.48,-536 2291.59,-520.2 2302.63,-512.44 2339.48,-482 2364.02,-461.74 2365.96,-452.32 2386.48,-428 2398.71,-413.52 2403.21,-410.93 2413.48,-395 2442.79,-349.57 2427.93,-322.85 2467.48,-286 2557.59,-202.06 2806.12,-271.31 2723.48,-180 2652.06,-101.08 1894.1,-78.37 1663.6,-73.27"/> -<polygon fill="green" stroke="green" points="2082.56,-563.9 2072.88,-568.2 2083.13,-570.87 2082.56,-563.9"/> -<polygon fill="green" stroke="green" points="1663.43,-69.77 1653.35,-73.05 1663.27,-76.76 1663.43,-69.77"/> -<text text-anchor="middle" x="2619.48" y="-300.3" font-family="Times,serif" font-size="14.00" fill="green">DLNA, RTP, SDP, SAP, RAOP, Tunnel, HTTP</text> +<path fill="none" stroke="black" d="M811.9,-88.74C820.17,-121.85 833.33,-197.01 868,-249 895.77,-290.64 1028.46,-331.22 1056,-373 1095.71,-433.23 1096.75,-522.29 1090.9,-566.67"/> +<polygon fill="black" stroke="black" points="1087.42,-566.27 1089.32,-576.69 1094.33,-567.36 1087.42,-566.27"/> </g> <!-- PulseAudio&#45;&gt;sound card --> -<g id="edge11" class="edge"> +<g id="edge10" class="edge"> <title>PulseAudio&#45;&gt;sound card</title> -<path fill="none" stroke="green" d="M2073.54,-569.4C2104.31,-565.74 2140.36,-556.78 2166.48,-536 2253.94,-466.42 2239.19,-336.48 2139.48,-286 2109.71,-270.93 1636.96,-234.64 1470.18,-222.24"/> -<polygon fill="green" stroke="green" points="1470.35,-218.74 1460.11,-221.49 1469.83,-225.72 1470.35,-218.74"/> +<path fill="none" stroke="green" d="M724.18,-462.65C710.44,-456.49 694.35,-449.09 680,-442 667.34,-435.74 665.15,-432.13 652,-427 622.07,-415.33 602.38,-433.83 582,-409 547.31,-366.74 544.19,-327.31 580,-286 646.94,-208.79 1377.94,-160.65 1590.41,-148.21"/> +<polygon fill="green" stroke="green" points="1590.64,-151.71 1600.42,-147.63 1590.24,-144.72 1590.64,-151.71"/> </g> <!-- PulseAudio&#45;&gt;null --> -<g id="edge10" class="edge"> +<g id="edge9" class="edge"> <title>PulseAudio&#45;&gt;null</title> -<path fill="none" stroke="red" d="M2054.83,-558.86C2090.39,-546.23 2137.93,-522.5 2157.48,-482 2184.09,-426.9 2136.54,-358.3 2108.63,-325"/> -<polygon fill="red" stroke="red" points="2111.2,-322.62 2102.02,-317.33 2105.9,-327.19 2111.2,-322.62"/> +<path fill="none" stroke="red" d="M733.43,-461.05C714.2,-448.28 688.42,-431.73 677,-427 644.13,-413.38 621.15,-436.84 599,-409 584.41,-390.66 568.77,-319.2 601,-286 627.35,-258.85 903.62,-273.8 941,-268 978.04,-262.25 1019.54,-250.71 1047.27,-242.24"/> +<polygon fill="red" stroke="red" points="1048.31,-245.58 1056.82,-239.27 1046.24,-238.89 1048.31,-245.58"/> </g> <!-- PulseAudio&#45;&gt;ALSA --> <g id="edge7" class="edge"> <title>PulseAudio&#45;&gt;ALSA</title> -<path fill="none" stroke="black" d="M1960.66,-582.61C1921.05,-589.45 1864.86,-599 1815.48,-608 1692.11,-630.5 1661.96,-639.81 1538.48,-661.74 1477.88,-672.5 1407.5,-683.6 1361.47,-690.33"/> -<polygon fill="black" stroke="black" points="1360.85,-686.89 1351.46,-691.79 1361.85,-693.81 1360.85,-686.89"/> +<path fill="none" stroke="black" d="M808.45,-488.27C837.09,-494.53 872.97,-503.54 904,-514 918.7,-518.95 1001.11,-554.44 1048.94,-576.41"/> +<polygon fill="black" stroke="black" points="1047.76,-579.72 1058.31,-580.74 1050.7,-573.37 1047.76,-579.72"/> </g> <!-- PulseAudio&#45;&gt;JACK --> -<g id="edge12" class="edge"> +<g id="edge11" class="edge"> <title>PulseAudio&#45;&gt;JACK</title> -<path fill="none" stroke="black" d="M1951.21,-567.18C1902.43,-562.89 1832.39,-554.01 1773.48,-536 1738.13,-525.19 1733.43,-512.08 1698.48,-500 1660.39,-486.83 1615.36,-477.43 1583.15,-471.71"/> -<polygon fill="black" stroke="black" points="1583.61,-468.24 1573.16,-469.98 1582.42,-475.14 1583.61,-468.24"/> +<path fill="none" stroke="black" d="M706.55,-467.27C670.46,-460.28 620.73,-450.62 577,-442 543.65,-435.42 535.44,-433.1 502,-427 443.52,-416.33 375.69,-405.38 332.82,-398.63"/> +<polygon fill="black" stroke="black" points="333.17,-395.15 322.75,-397.05 332.08,-402.06 333.17,-395.15"/> </g> <!-- PulseAudio&#45;&gt;OSS --> <g id="edge8" class="edge"> <title>PulseAudio&#45;&gt;OSS</title> -<path fill="none" stroke="black" d="M1993.03,-546.14C1982.28,-532.15 1968.18,-514.61 1954.48,-500 1930.17,-474.06 1923.08,-468.41 1895.48,-446 1865.32,-421.51 1855.18,-418.82 1824.48,-395 1804.79,-379.72 1804.71,-368.04 1781.48,-359 1740.54,-343.06 1430.3,-344.27 1386.48,-341 1277.29,-332.84 1149.22,-318.18 1083.78,-310.32"/> -<polygon fill="black" stroke="black" points="1990.42,-548.49 1999.26,-554.34 1996,-544.26 1990.42,-548.49"/> -<polygon fill="black" stroke="black" points="1084.17,-306.84 1073.83,-309.12 1083.34,-313.79 1084.17,-306.84"/> +<path fill="none" stroke="black" d="M816.86,-465.05C848.73,-458.53 888.57,-450.15 924,-442 1235.68,-370.3 1310.07,-337.62 1622,-267 1666.07,-257.02 1716.76,-246.93 1751.83,-240.16"/> +<polygon fill="black" stroke="black" points="815.9,-461.67 806.8,-467.09 817.3,-468.53 815.9,-461.67"/> +<polygon fill="black" stroke="black" points="1752.58,-243.58 1761.74,-238.26 1751.26,-236.71 1752.58,-243.58"/> </g> <!-- PulseAudio&#45;&gt;sndio --> -<g id="edge57" class="edge"> +<g id="edge53" class="edge"> <title>PulseAudio&#45;&gt;sndio</title> -<path fill="none" stroke="black" d="M2072.35,-567.64C2109.73,-563.63 2157.7,-554.92 2196.48,-536 2314.51,-478.42 2364.33,-460.64 2418.48,-341 2430.54,-314.36 2376.65,-342.18 2355.48,-322 2307.27,-276.03 2357.37,-224.15 2307.48,-180 2289.41,-164.01 2227.17,-154.28 2183.5,-149.27"/> -<polygon fill="black" stroke="black" points="2183.71,-145.77 2173.39,-148.15 2182.94,-152.73 2183.71,-145.77"/> +<path fill="none" stroke="black" d="M708.83,-466.41C684.74,-460.45 655.38,-452.15 630,-442 616.89,-436.76 615.31,-431.71 602,-427 561.91,-412.79 543.66,-432.19 508,-409 480.56,-391.16 466,-381.23 466,-348.5 466,-348.5 466,-348.5 466,-143 466,-83.87 666.08,-73.69 758.82,-72.15"/> +<polygon fill="black" stroke="black" points="759.09,-75.64 769.04,-72 758.99,-68.64 759.09,-75.64"/> </g> <!-- PulseAudio&#45;&gt;bluez --> -<g id="edge13" class="edge"> +<g id="edge12" class="edge"> <title>PulseAudio&#45;&gt;bluez</title> -<path fill="none" stroke="black" d="M1948.83,-570.68C1905.94,-568.08 1849.01,-559.79 1804.48,-536 1785.07,-525.63 1787.72,-513.68 1770.48,-500 1762.77,-493.88 1753.88,-488.1 1745.34,-483.07"/> -<polygon fill="black" stroke="black" points="1747.06,-480.02 1736.63,-478.12 1743.59,-486.11 1747.06,-480.02"/> +<path fill="none" stroke="black" d="M715.23,-464.35C696.54,-458.27 674.39,-450.46 655,-442 642.06,-436.36 640.33,-431.65 627,-427 584.78,-412.26 556.66,-443.33 528,-409 492.48,-366.44 515.61,-296.57 532.61,-258.59"/> +<polygon fill="black" stroke="black" points="535.93,-259.76 536.98,-249.22 529.58,-256.8 535.93,-259.76"/> </g> <!-- ofono --> -<g id="node16" class="node"> +<g id="node14" class="node"> <title>ofono</title> -<polygon fill="yellow" stroke="black" points="1848.78,-456.54 1848.78,-471.46 1825.76,-482 1793.21,-482 1770.19,-471.46 1770.19,-456.54 1793.21,-446 1825.76,-446 1848.78,-456.54"/> -<text text-anchor="middle" x="1809.48" y="-460.3" font-family="Times,serif" font-size="14.00">ofono</text> +<polygon fill="yellow" stroke="black" points="686.29,-383.54 686.29,-398.46 663.28,-409 630.72,-409 607.71,-398.46 607.71,-383.54 630.72,-373 663.28,-373 686.29,-383.54"/> +<text text-anchor="middle" x="647" y="-387.3" font-family="Times,serif" font-size="14.00">ofono</text> </g> <!-- PulseAudio&#45;&gt;ofono --> -<g id="edge14" class="edge"> +<g id="edge13" class="edge"> <title>PulseAudio&#45;&gt;ofono</title> -<path fill="none" stroke="black" d="M1951.06,-567.02C1903.1,-562.58 1841.24,-553.57 1823.48,-536 1812.13,-524.77 1808.6,-507.18 1807.92,-492.32"/> -<polygon fill="black" stroke="black" points="1811.42,-492.09 1807.86,-482.11 1804.42,-492.13 1811.42,-492.09"/> +<path fill="none" stroke="black" d="M741.45,-460.25C731.53,-450.04 718.12,-437.06 705,-427 697.39,-421.16 688.75,-415.5 680.5,-410.48"/> +<polygon fill="black" stroke="black" points="682.16,-407.4 671.77,-405.32 678.6,-413.42 682.16,-407.4"/> </g> <!-- sox --> -<g id="node17" class="node"> +<g id="node15" class="node"> <title>sox</title> -<g id="a_node17"><a xlink:href="http://sox.sourceforge.net/Docs/Features" xlink:title="sox"> -<ellipse fill="lightgrey" stroke="black" cx="2121.48" cy="-464" rx="27" ry="18"/> -<text text-anchor="middle" x="2121.48" y="-460.3" font-family="Times,serif" font-size="14.00">sox</text> +<g id="a_node15"><a xlink:href="http://sox.sourceforge.net/Docs/Features" xlink:title="sox"> +<ellipse fill="lightgrey" stroke="black" cx="1011" cy="-391" rx="27" ry="18"/> +<text text-anchor="middle" x="1011" y="-387.3" font-family="Times,serif" font-size="14.00">sox</text> </a> </g> </g> <!-- PulseAudio&#45;&gt;sox --> -<g id="edge15" class="edge"> +<g id="edge14" class="edge"> <title>PulseAudio&#45;&gt;sox</title> -<path fill="none" stroke="black" d="M2024.04,-553.97C2041.72,-534.91 2073.6,-504.11 2096.21,-484.21"/> -<polygon fill="black" stroke="black" points="2098.5,-486.85 2103.77,-477.66 2093.92,-481.56 2098.5,-486.85"/> +<path fill="none" stroke="black" d="M797.73,-464.31C819.85,-458.08 847.48,-450.16 872,-442 908.33,-429.91 949.45,-413.65 977.66,-403"/> +<polygon fill="black" stroke="black" points="978.94,-406.26 987.08,-399.49 976.49,-399.71 978.94,-406.26"/> </g> <!-- PulseAudio&#45;&gt;PipeWire --> -<g id="edge50" class="edge"> +<g id="edge16" class="edge"> <title>PulseAudio&#45;&gt;PipeWire</title> -<path fill="none" stroke="black" d="M1978.41,-549.69C1972.03,-545.31 1965.46,-540.62 1959.48,-536 1911.64,-499.04 1911.46,-473.24 1857.48,-446 1834.44,-434.37 1681.24,-404.32 1596.92,-388.35"/> -<polygon fill="black" stroke="black" points="1976.7,-552.75 1986.95,-555.43 1980.61,-546.94 1976.7,-552.75"/> -<polygon fill="black" stroke="black" points="1597.46,-384.89 1586.99,-386.47 1596.16,-391.77 1597.46,-384.89"/> +<path fill="none" stroke="black" d="M698.25,-464.25C659.38,-455.68 613.96,-445.36 605,-442 591.78,-437.04 590.41,-431.41 577,-427 523.68,-409.48 499.23,-439.32 452,-409 444.33,-404.08 417.41,-360.01 400.11,-330.84"/> +<polygon fill="black" stroke="black" points="697.97,-467.78 708.49,-466.5 699.47,-460.94 697.97,-467.78"/> +<polygon fill="black" stroke="black" points="402.97,-328.79 394.87,-321.96 396.94,-332.35 402.97,-328.79"/> </g> <!-- bluez&#45;&gt;Bluetooth card --> -<g id="edge19" class="edge"> +<g id="edge23" class="edge"> <title>bluez&#45;&gt;Bluetooth card</title> -<path fill="none" stroke="green" d="M1710.69,-445.8C1710.82,-434.16 1711.01,-418.55 1711.16,-405.24"/> -<polygon fill="green" stroke="green" points="1714.66,-405.22 1711.28,-395.18 1707.66,-405.13 1714.66,-405.22"/> +<path fill="none" stroke="green" d="M547.82,-212.8C549.05,-201.16 550.71,-185.55 552.12,-172.24"/> +<polygon fill="green" stroke="green" points="555.61,-172.49 553.18,-162.18 548.65,-171.75 555.61,-172.49"/> </g> <!-- ofono&#45;&gt;phone modem --> -<g id="edge17" class="edge"> +<g id="edge21" class="edge"> <title>ofono&#45;&gt;phone modem</title> -<path fill="none" stroke="green" d="M1780.3,-451.71C1774.15,-449.6 1767.65,-447.57 1761.48,-446 1695.2,-429.12 1506.61,-401.71 1404.01,-387.39"/> -<polygon fill="green" stroke="green" points="1404.44,-383.91 1394.05,-386 1403.47,-390.85 1404.44,-383.91"/> +<path fill="none" stroke="green" d="M651.45,-372.8C654.46,-361.16 658.51,-345.55 661.95,-332.24"/> +<polygon fill="green" stroke="green" points="665.44,-332.73 664.55,-322.18 658.66,-330.98 665.44,-332.73"/> </g> <!-- sox&#45;&gt;filesystem --> -<g id="edge20" class="edge"> +<g id="edge24" class="edge"> <title>sox&#45;&gt;filesystem</title> -<path fill="none" stroke="black" d="M2107.92,-448.18C2084.55,-422.88 2037.32,-372.74 2017.48,-359 1995.7,-343.91 1969.02,-331.35 1946.44,-322.15"/> -<polygon fill="black" stroke="black" points="1947.63,-318.86 1937.05,-318.42 1945.05,-325.36 1947.63,-318.86"/> +<path fill="none" stroke="black" d="M1027.28,-376.53C1059.69,-349.72 1132.64,-289.38 1173.28,-255.76"/> +<polygon fill="black" stroke="black" points="1175.72,-258.28 1181.2,-249.21 1171.26,-252.89 1175.72,-258.28"/> </g> <!-- sox&#45;&gt;null --> -<g id="edge21" class="edge"> +<g id="edge25" class="edge"> <title>sox&#45;&gt;null</title> -<path fill="none" stroke="red" d="M2118.17,-446.09C2112.75,-418.48 2101.97,-363.54 2095.58,-330.97"/> -<polygon fill="red" stroke="red" points="2098.95,-329.98 2093.59,-320.85 2092.08,-331.33 2098.95,-329.98"/> +<path fill="none" stroke="red" d="M1000.16,-374.18C987.03,-352.87 968.59,-314.35 985,-286 997.92,-263.68 1023.93,-249.78 1045.33,-241.69"/> +<polygon fill="red" stroke="red" points="1046.5,-244.99 1054.77,-238.37 1044.17,-238.38 1046.5,-244.99"/> </g> <!-- sox&#45;&gt;ALSA --> -<g id="edge24" class="edge"> +<g id="edge28" class="edge"> <title>sox&#45;&gt;ALSA</title> -<path fill="none" stroke="black" d="M2098.89,-474.15C2061.64,-488.93 1984.74,-518.23 1917.48,-536 1746.22,-581.25 1688.3,-538.22 1525.48,-608 1488.12,-624.01 1488.3,-644.52 1451.48,-661.74 1423,-675.06 1388.77,-683.76 1361.41,-689.15"/> -<polygon fill="black" stroke="black" points="1360.46,-685.77 1351.28,-691.06 1361.76,-692.65 1360.46,-685.77"/> +<path fill="none" stroke="black" d="M1005.91,-409.03C997.84,-439.54 985.48,-504.56 1011,-550 1018.15,-562.73 1030.67,-572.21 1043.28,-579.02"/> +<polygon fill="black" stroke="black" points="1041.89,-582.24 1052.4,-583.53 1044.99,-575.96 1041.89,-582.24"/> </g> <!-- sox&#45;&gt;sndio --> -<g id="edge25" class="edge"> +<g id="edge29" class="edge"> <title>sox&#45;&gt;sndio</title> -<path fill="none" stroke="black" d="M2123.99,-445.92C2124.81,-440.22 2125.71,-433.84 2126.48,-428 2132.73,-380.95 2136.59,-369.38 2139.48,-322 2140.46,-306.03 2139.54,-302 2139.48,-286 2139.34,-246.67 2138.99,-201.17 2138.74,-172.73"/> -<polygon fill="black" stroke="black" points="2142.24,-172.33 2138.65,-162.37 2135.24,-172.4 2142.24,-172.33"/> +<path fill="none" stroke="black" d="M993.83,-376.76C965.09,-355.13 904.76,-312.01 848,-286 822.69,-274.4 810,-285.07 788,-268 753.45,-241.19 733.61,-222.47 744,-180 751.66,-148.7 771.2,-117.1 786.12,-96.23"/> +<polygon fill="black" stroke="black" points="789.08,-98.11 792.19,-87.98 783.44,-93.97 789.08,-98.11"/> </g> <!-- sox&#45;&gt;PulseAudio --> -<g id="edge23" class="edge"> +<g id="edge27" class="edge"> <title>sox&#45;&gt;PulseAudio</title> -<path fill="none" stroke="black" d="M2110.28,-480.56C2093.95,-498.36 2063.77,-527.67 2040.93,-548.09"/> -<polygon fill="black" stroke="black" points="2038.39,-545.66 2033.2,-554.9 2043.02,-550.92 2038.39,-545.66"/> +<path fill="none" stroke="black" d="M990.8,-403.27C966.76,-413.93 926.02,-430.02 890,-442 865.86,-450.03 838.69,-457.84 815.16,-464.03"/> +<polygon fill="black" stroke="black" points="814.12,-460.68 805.32,-466.58 815.87,-467.46 814.12,-460.68"/> </g> <!-- libao --> <g id="node19" class="node"> <title>libao</title> <g id="a_node19"><a xlink:href="https://www.xiph.org/ao/" xlink:title="libao"> -<ellipse fill="lightgrey" stroke="black" cx="1975.48" cy="-377" rx="33.29" ry="18"/> -<text text-anchor="middle" x="1975.48" y="-373.3" font-family="Times,serif" font-size="14.00">libao</text> +<ellipse fill="lightgrey" stroke="black" cx="1027" cy="-304" rx="33.29" ry="18"/> +<text text-anchor="middle" x="1027" y="-300.3" font-family="Times,serif" font-size="14.00">libao</text> </a> </g> </g> <!-- sox&#45;&gt;libao --> -<g id="edge22" class="edge"> +<g id="edge26" class="edge"> <title>sox&#45;&gt;libao</title> -<path fill="none" stroke="black" d="M2099.46,-453.56C2093.35,-451.02 2086.69,-448.34 2080.48,-446 2057.2,-437.23 2048.74,-440.93 2027.48,-428 2015.78,-420.88 2004.59,-410.72 1995.6,-401.41"/> -<polygon fill="black" stroke="black" points="1997.98,-398.83 1988.61,-393.88 1992.85,-403.59 1997.98,-398.83"/> +<path fill="none" stroke="black" d="M1014.24,-372.8C1016.43,-361.16 1019.37,-345.55 1021.87,-332.24"/> +<polygon fill="black" stroke="black" points="1025.36,-332.65 1023.77,-322.18 1018.48,-331.36 1025.36,-332.65"/> </g> <!-- X11 bell --> -<g id="node18" class="node"> +<g id="node16" class="node"> <title>X11 bell</title> -<ellipse fill="lightgrey" stroke="black" cx="1947.48" cy="-697.74" rx="48.99" ry="18"/> -<text text-anchor="middle" x="1947.48" y="-694.04" font-family="Times,serif" font-size="14.00">X11 bell</text> +<ellipse fill="lightgrey" stroke="black" cx="837" cy="-594.87" rx="48.99" ry="18"/> +<text text-anchor="middle" x="837" y="-591.17" font-family="Times,serif" font-size="14.00">X11 bell</text> </g> <!-- X11 bell&#45;&gt;PulseAudio --> -<g id="edge16" class="edge"> +<g id="edge15" class="edge"> <title>X11 bell&#45;&gt;PulseAudio</title> -<path fill="none" stroke="black" d="M1956.25,-679.79C1967.01,-658.99 1985.37,-623.49 1997.95,-599.17"/> -<polygon fill="black" stroke="black" points="2001.13,-600.63 2002.62,-590.14 1994.92,-597.41 2001.13,-600.63"/> +<path fill="none" stroke="black" d="M808.05,-580.27C795.49,-572.98 781.69,-562.82 773,-550 764.3,-537.17 760.26,-520.32 758.42,-506.26"/> +<polygon fill="black" stroke="black" points="761.89,-505.76 757.4,-496.16 754.92,-506.46 761.89,-505.76"/> +</g> +<!-- PipeWire&#45;&gt;bluez --> +<g id="edge19" class="edge"> +<title>PipeWire&#45;&gt;bluez</title> +<path fill="none" stroke="black" d="M416.04,-289.31C442.44,-277.67 480.43,-260.91 508.53,-248.53"/> +<polygon fill="black" stroke="black" points="510.28,-251.58 518.01,-244.34 507.45,-245.17 510.28,-251.58"/> +</g> +<!-- gstreamer --> +<g id="node18" class="node"> +<title>gstreamer</title> +<ellipse fill="lightgrey" stroke="black" cx="921" cy="-676.74" rx="59.29" ry="18"/> +<text text-anchor="middle" x="921" y="-673.04" font-family="Times,serif" font-size="14.00">gstreamer</text> +</g> +<!-- gstreamer&#45;&gt;ALSA --> +<g id="edge102" class="edge"> +<title>gstreamer&#45;&gt;ALSA</title> +<path fill="none" stroke="black" d="M950.71,-661.09C978.24,-647.52 1019.2,-627.33 1048.24,-613.01"/> +<polygon fill="black" stroke="black" points="1049.79,-616.14 1057.21,-608.58 1046.7,-609.87 1049.79,-616.14"/> +</g> +<!-- gstreamer&#45;&gt;JACK --> +<g id="edge104" class="edge"> +<title>gstreamer&#45;&gt;JACK</title> +<path fill="none" stroke="black" d="M872.22,-666.31C822.57,-656.67 752.03,-642.81 746,-640.74 574.31,-581.83 566.09,-495.5 398,-427 372.22,-416.49 364.46,-417.65 338,-409 334.47,-407.85 330.81,-406.62 327.16,-405.36"/> +<polygon fill="black" stroke="black" points="328.18,-402.01 317.59,-402.03 325.88,-408.62 328.18,-402.01"/> +</g> +<!-- gstreamer&#45;&gt;OSS --> +<g id="edge103" class="edge"> +<title>gstreamer&#45;&gt;OSS</title> +<path fill="none" stroke="black" d="M966.33,-665.11C1009.04,-654.86 1074.71,-638.47 1131,-621.74 1202.5,-600.49 1217.37,-585.02 1290,-568 1348.08,-554.39 1365.77,-566.82 1423,-550 1459.24,-539.34 1464.12,-525.83 1500,-514 1538.33,-501.36 1556.71,-520.2 1589,-496 1651.68,-449.02 1622.41,-401.44 1671,-340 1698.96,-304.64 1739.61,-271.81 1766.65,-251.84"/> +<polygon fill="black" stroke="black" points="1768.89,-254.54 1774.92,-245.83 1764.78,-248.88 1768.89,-254.54"/> +</g> +<!-- gstreamer&#45;&gt;sndio --> +<g id="edge55" class="edge"> +<title>gstreamer&#45;&gt;sndio</title> +<path fill="none" stroke="black" d="M923.34,-658.68C924.02,-652.99 924.67,-646.6 925,-640.74 926.84,-608.39 927.37,-599.56 920,-568 898.69,-476.78 887.87,-453.52 840,-373 803.67,-311.9 763.44,-315.74 739,-249 720.17,-197.58 720.31,-174.35 746,-126 753.08,-112.68 764.77,-100.94 775.89,-91.84"/> +<polygon fill="black" stroke="black" points="778.06,-94.59 783.81,-85.69 773.77,-89.06 778.06,-94.59"/> +</g> +<!-- gstreamer&#45;&gt;PulseAudio --> +<g id="edge105" class="edge"> +<title>gstreamer&#45;&gt;PulseAudio</title> +<path fill="none" stroke="black" d="M920.69,-658.45C919.49,-635.72 914.49,-595.46 895,-568 891.45,-563 830.38,-524.55 790.68,-499.85"/> +<polygon fill="black" stroke="black" points="792.42,-496.8 782.08,-494.5 788.72,-502.75 792.42,-496.8"/> +</g> +<!-- gstreamer&#45;&gt;PipeWire --> +<g id="edge20" class="edge"> +<title>gstreamer&#45;&gt;PipeWire</title> +<path fill="none" stroke="black" d="M880.62,-663.48C851.52,-653.91 811.77,-639.32 779,-621.74 670.15,-563.36 662.09,-517.92 553,-460 515.74,-440.22 504.24,-439.67 464,-427 433.77,-417.48 416.59,-432.2 395,-409 376.14,-388.73 376.22,-355.66 379.35,-332.26"/> +<polygon fill="black" stroke="black" points="382.82,-332.7 380.95,-322.27 375.91,-331.6 382.82,-332.7"/> </g> <!-- libao&#45;&gt;filesystem --> -<g id="edge26" class="edge"> +<g id="edge30" class="edge"> <title>libao&#45;&gt;filesystem</title> -<path fill="none" stroke="black" d="M1959.15,-360.94C1949.11,-351.68 1936.01,-339.61 1924.56,-329.05"/> -<polygon fill="black" stroke="black" points="1926.68,-326.23 1916.95,-322.03 1921.93,-331.38 1926.68,-326.23"/> +<path fill="none" stroke="black" d="M1052.53,-292.14C1069.61,-284.92 1092.6,-275.28 1113,-267 1127,-261.32 1142.29,-255.25 1156.19,-249.8"/> +<polygon fill="black" stroke="black" points="1157.52,-253.03 1165.56,-246.13 1154.97,-246.52 1157.52,-253.03"/> </g> <!-- libao&#45;&gt;null --> -<g id="edge32" class="edge"> +<g id="edge36" class="edge"> <title>libao&#45;&gt;null</title> -<path fill="none" stroke="red" d="M1996.58,-362.98C2016.12,-350.91 2045.2,-332.96 2065.81,-320.23"/> -<polygon fill="red" stroke="red" points="2067.68,-323.19 2074.35,-314.96 2064,-317.24 2067.68,-323.19"/> +<path fill="none" stroke="red" d="M1038.8,-286.89C1046.08,-276.95 1055.51,-264.07 1063.4,-253.3"/> +<polygon fill="red" stroke="red" points="1066.25,-255.33 1069.34,-245.2 1060.6,-251.2 1066.25,-255.33"/> </g> <!-- libao&#45;&gt;ALSA --> -<g id="edge28" class="edge"> +<g id="edge32" class="edge"> <title>libao&#45;&gt;ALSA</title> -<path fill="none" stroke="black" d="M1943.13,-381.01C1849.71,-389.95 1580.87,-417.52 1497.48,-446 1451.52,-461.7 1431.58,-461.11 1402.48,-500 1358.25,-559.12 1406.46,-600.99 1364.48,-661.74 1359.92,-668.35 1353.66,-674.06 1347.07,-678.84"/> -<polygon fill="black" stroke="black" points="1345.06,-675.96 1338.64,-684.39 1348.91,-681.81 1345.06,-675.96"/> +<path fill="none" stroke="black" d="M1047.45,-318.19C1064.22,-330.25 1086.94,-349.72 1098,-373 1131.8,-444.12 1124.83,-473.54 1106,-550 1104.52,-555.99 1102.07,-562.07 1099.3,-567.72"/> +<polygon fill="black" stroke="black" points="1096.11,-566.26 1094.46,-576.72 1102.28,-569.57 1096.11,-566.26"/> </g> <!-- libao&#45;&gt;OSS --> -<g id="edge27" class="edge"> +<g id="edge31" class="edge"> <title>libao&#45;&gt;OSS</title> -<path fill="none" stroke="black" d="M1950.01,-365.27C1943.14,-362.79 1935.62,-360.46 1928.48,-359 1790.23,-330.7 1752.35,-349.44 1611.48,-341 1414.37,-329.19 1179.06,-314.01 1083.75,-307.82"/> -<polygon fill="black" stroke="black" points="1083.83,-304.32 1073.63,-307.16 1083.38,-311.3 1083.83,-304.32"/> +<path fill="none" stroke="black" d="M1059.51,-299.99C1181.52,-288.71 1612.28,-248.89 1751.36,-236.03"/> +<polygon fill="black" stroke="black" points="1751.99,-239.49 1761.62,-235.09 1751.34,-232.52 1751.99,-239.49"/> </g> <!-- libao&#45;&gt;sndio --> -<g id="edge35" class="edge"> +<g id="edge39" class="edge"> <title>libao&#45;&gt;sndio</title> -<path fill="none" stroke="black" d="M1986.95,-359.76C2015.06,-319.91 2087.59,-217.13 2121.07,-169.68"/> -<polygon fill="black" stroke="black" points="2124.13,-171.41 2127.03,-161.23 2118.41,-167.38 2124.13,-171.41"/> +<path fill="none" stroke="black" d="M1000.88,-292.74C994.15,-290.32 986.86,-287.89 980,-286 939.42,-274.81 921.3,-292.41 887,-268 879.05,-262.34 880.03,-257.89 876,-249 848.51,-188.32 857.2,-166.88 828,-107 826.34,-103.6 824.41,-100.13 822.37,-96.77"/> +<polygon fill="black" stroke="black" points="825.24,-94.75 816.9,-88.22 819.35,-98.53 825.24,-94.75"/> </g> <!-- libao&#45;&gt;PulseAudio --> -<g id="edge30" class="edge"> +<g id="edge34" class="edge"> <title>libao&#45;&gt;PulseAudio</title> -<path fill="none" stroke="black" d="M1978.67,-395.09C1984.94,-428.68 1998.9,-503.54 2006.43,-543.93"/> -<polygon fill="black" stroke="black" points="2003.01,-544.68 2008.29,-553.87 2009.9,-543.4 2003.01,-544.68"/> +<path fill="none" stroke="black" d="M1011.45,-320.1C982.44,-347.59 917.15,-406.26 853,-442 839.27,-449.65 823.55,-456.2 808.85,-461.49"/> +<polygon fill="black" stroke="black" points="807.67,-458.19 799.38,-464.78 809.97,-464.8 807.67,-458.19"/> </g> <!-- libao&#45;&gt;aRts --> -<g id="edge29" class="edge"> +<g id="edge33" class="edge"> <title>libao&#45;&gt;aRts</title> -<path fill="none" stroke="black" d="M1949.44,-365.44C1942.71,-363.02 1935.4,-360.68 1928.48,-359 1867.95,-344.32 1849.74,-356.8 1789.48,-341 1767.69,-335.28 1763.2,-330.85 1742.48,-322 1620.1,-269.72 1598.69,-230.87 1469.48,-199 1452.92,-194.92 873.51,-163.13 856.48,-162 789.33,-157.52 711.33,-151.71 664.76,-148.17"/> -<polygon fill="black" stroke="black" points="664.99,-144.68 654.76,-147.41 664.46,-151.66 664.99,-144.68"/> +<path fill="none" stroke="black" d="M1000.1,-293.26C974.6,-283.89 939.88,-270.76 938,-268 937.75,-267.63 937.83,-267.41 938,-267 963.79,-205.56 997.67,-208.89 1045,-162 1069.56,-137.67 1068.8,-121.89 1100,-107 1150.27,-83.01 1312.21,-75.31 1389.79,-72.97"/> +<polygon fill="black" stroke="black" points="1390.27,-76.46 1400.16,-72.67 1390.07,-69.46 1390.27,-76.46"/> </g> <!-- ESD --> <g id="node21" class="node"> <title>ESD</title> -<ellipse fill="lightgrey" stroke="black" cx="896.48" cy="-144" rx="31.4" ry="18"/> -<text text-anchor="middle" x="896.48" y="-140.3" font-family="Times,serif" font-size="14.00">ESD</text> +<ellipse fill="lightgrey" stroke="black" cx="1586" cy="-71" rx="31.4" ry="18"/> +<text text-anchor="middle" x="1586" y="-67.3" font-family="Times,serif" font-size="14.00">ESD</text> </g> <!-- libao&#45;&gt;ESD --> -<g id="edge31" class="edge"> +<g id="edge35" class="edge"> <title>libao&#45;&gt;ESD</title> -<path fill="none" stroke="black" d="M1948.53,-366.25C1905.64,-350.74 1826.62,-322.15 1826.48,-322 1787.01,-280.58 1833.48,-234.34 1788.48,-199 1721.07,-146.05 1105.16,-144.28 938.11,-144.78"/> -<polygon fill="black" stroke="black" points="937.76,-141.28 927.77,-144.82 937.78,-148.28 937.76,-141.28"/> +<path fill="none" stroke="black" d="M1022.06,-286.01C1017.43,-266.21 1013.43,-233.58 1030,-213 1063.22,-171.74 1425.39,-101.65 1546.68,-79.17"/> +<polygon fill="black" stroke="black" points="1547.46,-82.58 1556.66,-77.32 1546.19,-75.7 1547.46,-82.58"/> </g> <!-- NAS --> <g id="node22" class="node"> <title>NAS</title> -<ellipse fill="lightgrey" stroke="black" cx="405.48" cy="-304" rx="114.28" ry="18"/> -<text text-anchor="middle" x="405.48" y="-300.3" font-family="Times,serif" font-size="14.00">Network Audio Server</text> +<g id="a_node22"><a xlink:href="http://radscan.com/nas.html" xlink:title="Network Audio System/Server"> +<ellipse fill="lightgrey" stroke="black" cx="2327" cy="-231" rx="151.37" ry="18"/> +<text text-anchor="middle" x="2327" y="-227.3" font-family="Times,serif" font-size="14.00">Network Audio System/Server</text> +</a> +</g> </g> <!-- libao&#45;&gt;NAS --> -<g id="edge33" class="edge"> +<g id="edge37" class="edge"> <title>libao&#45;&gt;NAS</title> -<path fill="none" stroke="black" d="M1943.25,-372.7C1904.79,-368.87 1838.51,-362.62 1781.48,-359 1319.29,-329.7 768.68,-313.82 528.12,-307.83"/> -<polygon fill="black" stroke="black" points="528.03,-304.33 517.95,-307.58 527.86,-311.32 528.03,-304.33"/> +<path fill="none" stroke="black" d="M1059.79,-301.21C1215.41,-292.71 1884.39,-256.17 2182.59,-239.89"/> +<polygon fill="black" stroke="black" points="2182.81,-243.38 2192.6,-239.34 2182.43,-236.39 2182.81,-243.38"/> </g> <!-- libao&#45;&gt;RoarAudio --> -<g id="edge34" class="edge"> +<g id="edge38" class="edge"> <title>libao&#45;&gt;RoarAudio</title> -<path fill="none" stroke="black" d="M1949.44,-365.46C1942.7,-363.04 1935.4,-360.69 1928.48,-359 1869.69,-344.62 1843.99,-374.37 1793.48,-341 1759.35,-318.45 1738.91,-273.97 1728.68,-245.14"/> -<polygon fill="black" stroke="black" points="1731.88,-243.65 1725.37,-235.29 1725.24,-245.89 1731.88,-243.65"/> -</g> -<!-- ESD&#45;&gt;network card --> -<g id="edge44" class="edge"> -<title>ESD&#45;&gt;network card</title> -<path fill="none" stroke="black" d="M927.06,-139.9C1032.76,-129.2 1384.34,-93.59 1531.65,-78.67"/> -<polygon fill="black" stroke="black" points="1532.3,-82.12 1541.9,-77.63 1531.6,-75.16 1532.3,-82.12"/> +<path fill="none" stroke="black" d="M1000.87,-292.78C994.14,-290.35 986.85,-287.92 980,-286 941.14,-275.11 916.55,-299.24 891,-268 865.4,-236.71 889.18,-211.91 914,-180 918.97,-173.61 925.45,-168.22 932.36,-163.72"/> +<polygon fill="black" stroke="black" points="934.41,-166.58 941.26,-158.5 930.87,-160.54 934.41,-166.58"/> </g> <!-- ESD&#45;&gt;ALSA --> -<g id="edge43" class="edge"> +<g id="edge46" class="edge"> <title>ESD&#45;&gt;ALSA</title> -<path fill="none" stroke="black" d="M866.33,-149.18C830.2,-156.08 774.48,-173.6 774.48,-216 774.48,-341 774.48,-341 774.48,-341 774.48,-416.21 982.8,-502.37 1037.48,-554 1084.55,-598.44 1079.12,-629.92 1135.48,-661.74 1174.88,-683.98 1226.16,-692.27 1263.37,-695.26"/> -<polygon fill="black" stroke="black" points="1263.25,-698.76 1273.48,-695.98 1263.75,-691.78 1263.25,-698.76"/> +<path fill="none" stroke="black" d="M1576.94,-88.67C1539.41,-156.28 1388.95,-412.9 1196,-550 1175.4,-564.64 1149.25,-575.2 1127.3,-582.28"/> +<polygon fill="black" stroke="black" points="1126.07,-579 1117.55,-585.3 1128.13,-585.69 1126.07,-579"/> </g> <!-- ESD&#45;&gt;OSS --> -<g id="edge42" class="edge"> +<g id="edge45" class="edge"> <title>ESD&#45;&gt;OSS</title> -<path fill="none" stroke="black" d="M904.12,-161.54C916.53,-187 943.18,-236.18 977.48,-268 985.84,-275.75 996.23,-282.42 1006.15,-287.79"/> -<polygon fill="black" stroke="black" points="1004.55,-290.91 1015.05,-292.36 1007.75,-284.68 1004.55,-290.91"/> -</g> -<!-- NAS&#45;&gt;network card --> -<g id="edge110" class="edge"> -<title>NAS&#45;&gt;network card</title> -<path fill="none" stroke="black" d="M407.44,-285.81C412.96,-246.2 432.62,-148.73 495.48,-107 538.75,-78.28 1300.75,-73.1 1531.69,-72.19"/> -<polygon fill="black" stroke="black" points="1531.97,-75.69 1541.95,-72.15 1531.94,-68.69 1531.97,-75.69"/> -</g> -<!-- RoarAudio&#45;&gt;network card --> -<g id="edge41" class="edge"> -<title>RoarAudio&#45;&gt;network card</title> -<path fill="none" stroke="black" d="M1699.83,-191.82C1677.35,-165.5 1641.55,-123.59 1618.8,-96.96"/> -<polygon fill="black" stroke="black" points="1697.22,-194.15 1706.37,-199.48 1702.54,-189.6 1697.22,-194.15"/> -<polygon fill="black" stroke="black" points="1621.35,-94.55 1612.19,-89.22 1616.02,-99.09 1621.35,-94.55"/> -<text text-anchor="middle" x="1758.48" y="-140.3" font-family="Times,serif" font-size="14.00">IPv4, DECnet, OpenSLP</text> +<path fill="none" stroke="black" d="M1616.9,-74.25C1712.38,-81.91 1999.65,-110.46 2055,-180 2059.15,-185.22 2059.39,-189.98 2055,-195 2027.4,-226.57 1904.97,-230.83 1838.42,-230.74"/> +<polygon fill="black" stroke="black" points="1838.26,-227.24 1828.25,-230.69 1838.23,-234.24 1838.26,-227.24"/> </g> <!-- RoarAudio&#45;&gt;sndio --> -<g id="edge37" class="edge"> +<g id="edge41" class="edge"> <title>RoarAudio&#45;&gt;sndio</title> -<path fill="none" stroke="black" d="M1770.9,-207.44C1853.72,-193.37 2017.11,-165.62 2095.09,-152.37"/> -<polygon fill="black" stroke="black" points="2095.79,-155.8 2105.06,-150.68 2094.61,-148.9 2095.79,-155.8"/> +<path fill="none" stroke="black" d="M948.59,-128.01C935.23,-121.22 918.97,-113.31 904,-107 884.49,-98.78 862.31,-90.81 843.9,-84.56"/> +<polygon fill="black" stroke="black" points="844.96,-81.23 834.37,-81.37 842.74,-87.87 844.96,-81.23"/> </g> <!-- RoarAudio&#45;&gt;PulseAudio --> -<g id="edge38" class="edge"> +<g id="edge42" class="edge"> <title>RoarAudio&#45;&gt;PulseAudio</title> -<path fill="none" stroke="black" d="M1779.12,-219.63C1881.89,-223.73 2088.5,-237.88 2139.48,-286 2203.84,-346.74 2200.13,-397.31 2174.48,-482 2166.13,-509.61 2161.86,-519.1 2138.48,-536 2120.8,-548.78 2098.66,-556.9 2077.85,-562.05"/> -<polygon fill="black" stroke="black" points="2077.05,-558.64 2068.08,-564.28 2078.6,-565.46 2077.05,-558.64"/> +<path fill="none" stroke="black" d="M936.36,-157.13C890,-173.5 816.89,-207.65 788,-267 759.55,-325.44 847.43,-348.76 823,-409 815.71,-426.97 801.15,-442.81 787.55,-454.67"/> +<polygon fill="black" stroke="black" points="785.17,-452.09 779.71,-461.18 789.64,-457.48 785.17,-452.09"/> </g> <!-- RoarAudio&#45;&gt;aRts --> -<g id="edge40" class="edge"> +<g id="edge44" class="edge"> <title>RoarAudio&#45;&gt;aRts</title> -<path fill="none" stroke="black" d="M1664.56,-210.99C1623.14,-207.37 1565.32,-202.53 1514.48,-199 1222.28,-178.73 1148.78,-180.88 856.48,-162 789.32,-157.66 711.32,-151.8 664.76,-148.22"/> -<polygon fill="black" stroke="black" points="664.99,-144.73 654.75,-147.45 664.45,-151.71 664.99,-144.73"/> +<path fill="none" stroke="black" d="M1002.43,-127.58C1016.05,-120.07 1033.41,-111.68 1050,-107 1113.07,-89.22 1304.91,-78.09 1390.27,-73.9"/> +<polygon fill="black" stroke="black" points="1390.56,-77.39 1400.38,-73.41 1390.22,-70.4 1390.56,-77.39"/> </g> <!-- RoarAudio&#45;&gt;ESD --> -<g id="edge39" class="edge"> +<g id="edge43" class="edge"> <title>RoarAudio&#45;&gt;ESD</title> -<path fill="none" stroke="black" d="M1664.49,-211.18C1508.79,-197.76 1073.18,-160.23 937.42,-148.53"/> -<polygon fill="black" stroke="black" points="937.33,-145.01 927.06,-147.63 936.72,-151.98 937.33,-145.01"/> +<path fill="none" stroke="black" d="M1014.25,-129.91C1039.07,-121.81 1072.58,-112.02 1103,-107 1265.44,-80.21 1309.17,-105.27 1473,-89 1497.43,-86.57 1524.65,-82.52 1546.25,-78.98"/> +<polygon fill="black" stroke="black" points="1547.07,-82.39 1556.36,-77.29 1545.92,-75.49 1547.07,-82.39"/> </g> <!-- libcanberra --> <g id="node24" class="node"> <title>libcanberra</title> <g id="a_node24"><a xlink:href="http://git.0pointer.net/libcanberra.git/tree/src/driver-order.c" xlink:title="libcanberra"> -<ellipse fill="lightgrey" stroke="black" cx="1217.48" cy="-843.74" rx="63.89" ry="18"/> -<text text-anchor="middle" x="1217.48" y="-840.04" font-family="Times,serif" font-size="14.00">libcanberra</text> +<ellipse fill="lightgrey" stroke="black" cx="1579" cy="-749.74" rx="63.89" ry="18"/> +<text text-anchor="middle" x="1579" y="-746.04" font-family="Times,serif" font-size="14.00">libcanberra</text> </a> </g> </g> <!-- libcanberra&#45;&gt;null --> -<g id="edge49" class="edge"> +<g id="edge51" class="edge"> <title>libcanberra&#45;&gt;null</title> -<path fill="none" stroke="red" d="M1154.66,-840.23C1117.32,-835.11 1072.64,-821.82 1048.48,-788.74 1001.31,-724.14 809.44,-811.78 1065.48,-446 1121.77,-365.59 1172.94,-381.48 1268.48,-359 1295.86,-352.56 1963.92,-322.62 1970.48,-322 1998.04,-319.39 2028.96,-314.97 2052.51,-311.29"/> -<polygon fill="red" stroke="red" points="2053.12,-314.74 2062.45,-309.72 2052.02,-307.83 2053.12,-314.74"/> +<path fill="none" stroke="red" d="M1586.21,-731.59C1602.21,-690.63 1636.1,-585.17 1594,-514 1565.62,-466.03 1209.89,-294.22 1106.81,-245.16"/> +<polygon fill="red" stroke="red" points="1108.18,-241.94 1097.65,-240.81 1105.18,-248.26 1108.18,-241.94"/> </g> <!-- libcanberra&#45;&gt;ALSA --> -<g id="edge47" class="edge"> +<g id="edge49" class="edge"> <title>libcanberra&#45;&gt;ALSA</title> -<path fill="none" stroke="black" d="M1228.57,-825.94C1245.07,-800.93 1276.22,-753.71 1295.58,-724.37"/> -<polygon fill="black" stroke="black" points="1298.59,-726.15 1301.18,-715.88 1292.75,-722.3 1298.59,-726.15"/> +<path fill="none" stroke="black" d="M1516.13,-746.67C1386.74,-741.76 1100.28,-727.3 1071,-694.74 1053.55,-675.34 1060.84,-644.46 1069.77,-622.37"/> +<polygon fill="black" stroke="black" points="1073.1,-623.48 1073.9,-612.92 1066.69,-620.68 1073.1,-623.48"/> </g> <!-- libcanberra&#45;&gt;OSS --> -<g id="edge46" class="edge"> +<g id="edge48" class="edge"> <title>libcanberra&#45;&gt;OSS</title> -<path fill="none" stroke="black" d="M1156.4,-838.57C1040.58,-829.82 800.48,-807.4 800.48,-771.74 800.48,-771.74 800.48,-771.74 800.48,-633.87 800.48,-494.1 805.44,-429.88 912.48,-340 936.19,-320.1 970.26,-311.45 997.29,-307.72"/> -<polygon fill="black" stroke="black" points="997.76,-311.19 1007.27,-306.52 996.93,-304.24 997.76,-311.19"/> +<path fill="none" stroke="black" d="M1602.56,-732.95C1659.43,-694.86 1803.08,-598.85 1852,-568 1865.15,-559.71 1872.08,-561.97 1882,-550 1922.79,-500.76 1973.31,-317.43 1934,-267 1922.27,-251.95 1874.71,-242.37 1838.46,-237.11"/> +<polygon fill="black" stroke="black" points="1838.48,-233.58 1828.1,-235.68 1837.52,-240.51 1838.48,-233.58"/> </g> <!-- libcanberra&#45;&gt;PulseAudio --> -<g id="edge45" class="edge"> +<g id="edge47" class="edge"> <title>libcanberra&#45;&gt;PulseAudio</title> -<path fill="none" stroke="black" d="M1281.17,-841.67C1407.42,-838.71 1684.68,-827.84 1770.48,-788.74 1797.07,-776.62 1938.84,-626.47 1961.48,-608 1967,-603.5 1973.07,-598.95 1979.01,-594.69"/> -<polygon fill="black" stroke="black" points="1981.38,-597.3 1987.56,-588.69 1977.36,-591.57 1981.38,-597.3"/> -</g> -<!-- gstreamer --> -<g id="node25" class="node"> -<title>gstreamer</title> -<ellipse fill="lightgrey" stroke="black" cx="1926.48" cy="-770.74" rx="59.29" ry="18"/> -<text text-anchor="middle" x="1926.48" y="-767.04" font-family="Times,serif" font-size="14.00">gstreamer</text> +<path fill="none" stroke="black" d="M1559.47,-732.59C1534.54,-712.71 1489.43,-679.07 1446,-658.74 1413.01,-643.3 1166.11,-577.7 1131,-568 1100.87,-559.67 1092.86,-559.26 1063,-550 1017.48,-535.89 1008.11,-526.06 962,-514 916.27,-502.04 863.71,-493.16 823.25,-487.34"/> +<polygon fill="black" stroke="black" points="823.63,-483.86 813.24,-485.92 822.65,-490.79 823.63,-483.86"/> </g> <!-- libcanberra&#45;&gt;gstreamer --> -<g id="edge48" class="edge"> +<g id="edge50" class="edge"> <title>libcanberra&#45;&gt;gstreamer</title> -<path fill="none" stroke="black" d="M1281.09,-842.02C1418.28,-840 1738.09,-832.7 1843.48,-807.74 1859.01,-804.06 1875.28,-797.64 1889.26,-791.22"/> -<polygon fill="black" stroke="black" points="1891,-794.27 1898.53,-786.82 1888,-787.95 1891,-794.27"/> -</g> -<!-- gstreamer&#45;&gt;ALSA --> -<g id="edge111" class="edge"> -<title>gstreamer&#45;&gt;ALSA</title> -<path fill="none" stroke="black" d="M1872.26,-763.47C1754.04,-749.8 1474.61,-717.49 1361.39,-704.4"/> -<polygon fill="black" stroke="black" points="1361.62,-700.9 1351.29,-703.23 1360.82,-707.85 1361.62,-700.9"/> -</g> -<!-- gstreamer&#45;&gt;JACK --> -<g id="edge113" class="edge"> -<title>gstreamer&#45;&gt;JACK</title> -<path fill="none" stroke="black" d="M1905.55,-753.8C1894.98,-746.54 1881.63,-738.52 1868.48,-733.74 1815.32,-714.41 1791.5,-743.98 1742.48,-715.74 1636.71,-654.8 1651.5,-593.05 1572.48,-500 1569.11,-496.02 1565.44,-491.87 1561.84,-487.87"/> -<polygon fill="black" stroke="black" points="1564.4,-485.49 1555.07,-480.46 1559.23,-490.21 1564.4,-485.49"/> -</g> -<!-- gstreamer&#45;&gt;OSS --> -<g id="edge112" class="edge"> -<title>gstreamer&#45;&gt;OSS</title> -<path fill="none" stroke="black" d="M1961.07,-756.03C1974.65,-750.13 1990.14,-742.75 2003.48,-734.74 2049.13,-707.32 2074.95,-709.5 2098.48,-661.74 2109.04,-640.32 2101.91,-631.64 2098.48,-608 2094.89,-583.23 2096.89,-574.47 2082.48,-554 2040.31,-494.06 1885.59,-383.43 1816.48,-359 1736.15,-330.6 1518.49,-346.89 1433.48,-341 1306.12,-332.18 1155.95,-317.13 1083.66,-309.59"/> -<polygon fill="black" stroke="black" points="1083.88,-306.09 1073.57,-308.53 1083.15,-313.05 1083.88,-306.09"/> -</g> -<!-- gstreamer&#45;&gt;sndio --> -<g id="edge59" class="edge"> -<title>gstreamer&#45;&gt;sndio</title> -<path fill="none" stroke="black" d="M1972.08,-759.19C2042.1,-742.35 2179.73,-706.64 2291.48,-661.74 2355.99,-635.82 2374.46,-631.17 2430.48,-590 2438.92,-583.8 2691.5,-331.68 2695.48,-322 2736.41,-222.42 2506.32,-223.78 2321.48,-180 2274.16,-168.79 2219.29,-158.67 2182.07,-152.23"/> -<polygon fill="black" stroke="black" points="2182.51,-148.76 2172.06,-150.52 2181.33,-155.66 2182.51,-148.76"/> -</g> -<!-- gstreamer&#45;&gt;PulseAudio --> -<g id="edge114" class="edge"> -<title>gstreamer&#45;&gt;PulseAudio</title> -<path fill="none" stroke="black" d="M1959.86,-755.84C1976.64,-746.99 1995.49,-733.75 2005.48,-715.74 2025.42,-679.81 2022.07,-630.61 2017.22,-600.36"/> -<polygon fill="black" stroke="black" points="2020.6,-599.37 2015.4,-590.13 2013.7,-600.59 2020.6,-599.37"/> -</g> -<!-- gstreamer&#45;&gt;PipeWire --> -<g id="edge53" class="edge"> -<title>gstreamer&#45;&gt;PipeWire</title> -<path fill="none" stroke="black" d="M1872.37,-763.4C1810.92,-755.21 1715.64,-739.15 1688.48,-715.74 1591.04,-631.75 1640.86,-561.15 1583.48,-446 1576.21,-431.41 1566.77,-415.89 1558.68,-403.37"/> -<polygon fill="black" stroke="black" points="1561.49,-401.27 1553.08,-394.83 1555.64,-405.11 1561.49,-401.27"/> -</g> -<!-- PipeWire&#45;&gt;? --> -<g id="edge54" class="edge"> -<title>PipeWire&#45;&gt;?</title> -<path fill="none" stroke="red" d="M1493.37,-369C1466.91,-365.42 1433.45,-361.34 1403.48,-359 1279.24,-349.32 401.63,-358.53 282.48,-322 281.06,-321.56 279.64,-321.03 278.23,-320.43"/> -<polygon fill="red" stroke="red" points="279.83,-317.32 269.36,-315.69 276.53,-323.49 279.83,-317.32"/> +<path fill="none" stroke="black" d="M1518.86,-743.62C1418.89,-734.92 1212.26,-716.09 1038,-694.74 1020.03,-692.54 1000.56,-689.84 982.75,-687.24"/> +<polygon fill="black" stroke="black" points="982.88,-683.72 972.48,-685.73 981.86,-690.65 982.88,-683.72"/> </g> <!-- OpenAL --> -<g id="node27" class="node"> +<g id="node25" class="node"> <title>OpenAL</title> -<g id="a_node27"><a xlink:href="https://www.openal-soft.org/" xlink:title="OpenAL"> -<ellipse fill="lightgrey" stroke="black" cx="1923.48" cy="-843.74" rx="47.39" ry="18"/> -<text text-anchor="middle" x="1923.48" y="-840.04" font-family="Times,serif" font-size="14.00">OpenAL</text> +<g id="a_node25"><a xlink:href="https://www.openal-soft.org/" xlink:title="OpenAL"> +<ellipse fill="lightgrey" stroke="black" cx="1075" cy="-749.74" rx="47.39" ry="18"/> +<text text-anchor="middle" x="1075" y="-746.04" font-family="Times,serif" font-size="14.00">OpenAL</text> </a> </g> </g> <!-- OpenAL&#45;&gt;filesystem --> -<g id="edge66" class="edge"> +<g id="edge62" class="edge"> <title>OpenAL&#45;&gt;filesystem</title> -<path fill="none" stroke="black" d="M1969.08,-838.6C2027.34,-832.19 2122.9,-817.47 2141.48,-788.74 2224.32,-660.71 2223,-583.7 2157.48,-446 2121.37,-370.08 2025.01,-333.54 1960.56,-317.1"/> -<polygon fill="black" stroke="black" points="1961.05,-313.62 1950.51,-314.63 1959.38,-320.42 1961.05,-313.62"/> +<path fill="none" stroke="black" d="M1122.47,-749.17C1212.94,-748.88 1404.7,-742.49 1446,-694.74 1513.47,-616.74 1337.34,-341.47 1266,-267 1260.39,-261.15 1253.59,-256.04 1246.54,-251.66"/> +<polygon fill="black" stroke="black" points="1247.97,-248.44 1237.55,-246.5 1244.49,-254.51 1247.97,-248.44"/> </g> <!-- OpenAL&#45;&gt;null --> -<g id="edge68" class="edge"> +<g id="edge64" class="edge"> <title>OpenAL&#45;&gt;null</title> -<path fill="none" stroke="red" d="M1970.95,-841.6C2088.29,-838.22 2389.23,-826.07 2481.48,-788.74 2541,-764.66 2594.48,-762.95 2594.48,-698.74 2594.48,-698.74 2594.48,-698.74 2594.48,-517 2594.48,-355.64 2435.78,-371.33 2277.48,-340 2225.66,-329.74 2165.59,-318.64 2127.81,-311.75"/> -<polygon fill="red" stroke="red" points="2128.24,-308.27 2117.77,-309.92 2126.98,-315.16 2128.24,-308.27"/> +<path fill="none" stroke="red" d="M1122.26,-748.15C1223.75,-746.4 1455.3,-739.59 1479,-713.74 1511.97,-677.79 1487.91,-575.47 1447,-514 1402.11,-446.56 1362.65,-457.82 1298,-409 1224.01,-353.13 1139.45,-282.89 1100.59,-250.24"/> +<polygon fill="red" stroke="red" points="1102.49,-247.26 1092.59,-243.5 1097.98,-252.62 1102.49,-247.26"/> </g> <!-- OpenAL&#45;&gt;portaudio --> -<g id="edge64" class="edge"> +<g id="edge60" class="edge"> <title>OpenAL&#45;&gt;portaudio</title> -<path fill="none" stroke="black" d="M1888.46,-831.33C1851.77,-819.38 1793.9,-800.54 1753.08,-787.24"/> -<polygon fill="black" stroke="black" points="1753.94,-783.84 1743.35,-784.07 1751.78,-790.5 1753.94,-783.84"/> +<path fill="none" stroke="black" d="M1089.15,-732.27C1096.81,-723.35 1106.43,-712.15 1114.96,-702.23"/> +<polygon fill="black" stroke="black" points="1117.64,-704.48 1121.51,-694.61 1112.33,-699.92 1117.64,-704.48"/> </g> <!-- OpenAL&#45;&gt;ALSA --> -<g id="edge61" class="edge"> +<g id="edge57" class="edge"> <title>OpenAL&#45;&gt;ALSA</title> -<path fill="none" stroke="black" d="M1876.93,-840.19C1773.48,-834.08 1527.46,-816.97 1449.48,-788.74 1407.23,-773.44 1364.98,-742.77 1338.8,-721.52"/> -<polygon fill="black" stroke="black" points="1340.83,-718.65 1330.89,-714.98 1336.37,-724.05 1340.83,-718.65"/> +<path fill="none" stroke="black" d="M1060.11,-732.63C1051.84,-722.56 1042.37,-708.85 1038,-694.74 1033.27,-679.46 1033.11,-673.97 1038,-658.74 1042.45,-644.89 1051.19,-631.5 1059.8,-620.66"/> +<polygon fill="black" stroke="black" points="1062.56,-622.82 1066.28,-612.9 1057.19,-618.33 1062.56,-622.82"/> </g> <!-- OpenAL&#45;&gt;JACK --> -<g id="edge65" class="edge"> +<g id="edge61" class="edge"> <title>OpenAL&#45;&gt;JACK</title> -<path fill="none" stroke="black" d="M1876.35,-841.09C1761.27,-836.57 1468.75,-822.07 1377.48,-788.74 1321.32,-768.23 1293.08,-768.25 1264.48,-715.74 1256.83,-701.69 1257.09,-693.93 1264.48,-679.74 1309.59,-593.21 1357.68,-598.59 1444.48,-554 1465.87,-543.02 1476.68,-550.98 1495.48,-536 1503.65,-529.5 1516.74,-508.09 1526.7,-490.47"/> -<polygon fill="black" stroke="black" points="1529.78,-492.13 1531.59,-481.69 1523.67,-488.73 1529.78,-492.13"/> +<path fill="none" stroke="black" d="M1027.67,-748.01C880.7,-745.34 439,-734.08 389,-694.74 344.45,-659.69 307.76,-486.59 294.91,-419.05"/> +<polygon fill="black" stroke="black" points="298.34,-418.34 293.06,-409.16 291.46,-419.63 298.34,-418.34"/> </g> <!-- OpenAL&#45;&gt;OSS --> -<g id="edge62" class="edge"> +<g id="edge58" class="edge"> <title>OpenAL&#45;&gt;OSS</title> -<path fill="none" stroke="black" d="M1875.98,-841.96C1704.38,-838.85 1122.71,-825.66 1048.48,-788.74 981.89,-755.61 965.31,-731.49 939.48,-661.74 894.52,-540.31 982.59,-389.43 1022.38,-330.37"/> -<polygon fill="black" stroke="black" points="1025.34,-332.25 1028.1,-322.02 1019.57,-328.29 1025.34,-332.25"/> +<path fill="none" stroke="black" d="M1122.4,-747.8C1216.98,-745.42 1425.82,-737.57 1493,-713.74 1679.92,-647.44 1745.64,-593.27 1819,-409 1842.7,-349.46 1873.32,-323.98 1844,-267 1840.3,-259.81 1834.36,-253.77 1827.88,-248.84"/> +<polygon fill="black" stroke="black" points="1829.75,-245.88 1819.5,-243.19 1825.83,-251.68 1829.75,-245.88"/> </g> <!-- OpenAL&#45;&gt;sndio --> -<g id="edge67" class="edge"> +<g id="edge63" class="edge"> <title>OpenAL&#45;&gt;sndio</title> -<path fill="none" stroke="black" d="M1970.96,-842.76C2097.14,-842.15 2438,-836.06 2538.48,-788.74 2740.81,-693.46 2696.67,-543.64 2726.48,-322 2730.64,-291.07 2734.04,-276.48 2713.48,-253 2680.98,-215.87 2663.46,-214.1 2616.48,-199 2463.68,-149.89 2270.9,-144.08 2184.29,-144.24"/> -<polygon fill="black" stroke="black" points="2184.25,-140.74 2174.27,-144.28 2184.28,-147.74 2184.25,-140.74"/> +<path fill="none" stroke="black" d="M1027.24,-748.98C887.42,-749.09 481.19,-744.95 360,-694.74 185.6,-622.49 114,-537.27 114,-348.5 114,-348.5 114,-348.5 114,-143 114,-78.01 603.87,-72.13 758.69,-71.89"/> +<polygon fill="black" stroke="black" points="758.82,-75.39 768.82,-71.88 758.82,-68.39 758.82,-75.39"/> </g> <!-- OpenAL&#45;&gt;PulseAudio --> -<g id="edge60" class="edge"> +<g id="edge56" class="edge"> <title>OpenAL&#45;&gt;PulseAudio</title> -<path fill="none" stroke="black" d="M1967.46,-836.84C2019.41,-828.87 2101.14,-812.82 2119.48,-788.74 2154.94,-742.19 2140.05,-700.89 2065.48,-608 2061.16,-602.61 2055.78,-597.79 2050.1,-593.57"/> -<polygon fill="black" stroke="black" points="2051.89,-590.55 2041.65,-587.82 2047.95,-596.34 2051.89,-590.55"/> +<path fill="none" stroke="black" d="M1028.08,-746.89C913.78,-741.9 628.22,-726.35 600,-694.74 540.6,-628.21 659.35,-539.72 721.88,-499.94"/> +<polygon fill="black" stroke="black" points="724.06,-502.71 730.67,-494.43 720.34,-496.77 724.06,-502.71"/> </g> <!-- SoundIO --> -<g id="node28" class="node"> +<g id="node26" class="node"> <title>SoundIO</title> -<g id="a_node28"><a xlink:href="http://libsound.io/" xlink:title="SoundIO"> -<ellipse fill="lightgrey" stroke="black" cx="2059.48" cy="-770.74" rx="50.89" ry="18"/> -<text text-anchor="middle" x="2059.48" y="-767.04" font-family="Times,serif" font-size="14.00">SoundIO</text> +<g id="a_node26"><a xlink:href="http://libsound.io/" xlink:title="SoundIO"> +<ellipse fill="lightgrey" stroke="black" cx="660" cy="-676.74" rx="50.89" ry="18"/> +<text text-anchor="middle" x="660" y="-673.04" font-family="Times,serif" font-size="14.00">SoundIO</text> </a> </g> </g> <!-- OpenAL&#45;&gt;SoundIO --> -<g id="edge63" class="edge"> +<g id="edge59" class="edge"> <title>OpenAL&#45;&gt;SoundIO</title> -<path fill="none" stroke="black" d="M1950.35,-828.71C1971.17,-817.84 2000.23,-802.67 2023.13,-790.72"/> -<polygon fill="black" stroke="black" points="2024.96,-793.71 2032.21,-785.98 2021.72,-787.51 2024.96,-793.71"/> +<path fill="none" stroke="black" d="M1031.65,-742.39C967.85,-732.9 844.95,-714.04 741,-694.74 731.56,-692.99 721.54,-690.99 711.87,-689"/> +<polygon fill="black" stroke="black" points="712.47,-685.55 701.97,-686.94 711.04,-692.4 712.47,-685.55"/> </g> <!-- SoundIO&#45;&gt;null --> -<g id="edge72" class="edge"> +<g id="edge68" class="edge"> <title>SoundIO&#45;&gt;null</title> -<path fill="none" stroke="red" d="M2109.09,-766.46C2153.73,-761.39 2219.37,-748.5 2266.48,-715.74 2322.48,-676.79 2333.98,-655.06 2354.48,-590 2395.04,-461.31 2259.99,-446.74 2157.48,-359 2142.77,-346.41 2125.79,-332.73 2112.6,-322.28"/> -<polygon fill="red" stroke="red" points="2114.56,-319.37 2104.54,-315.93 2110.23,-324.87 2114.56,-319.37"/> +<path fill="none" stroke="red" d="M619.02,-666.1C582.9,-656.9 529.27,-641.52 485,-621.74 340.21,-557.03 141.27,-579.15 186,-427 207.97,-352.29 219.6,-319.27 290,-286 336.55,-264 701.66,-271.83 753,-268 856.6,-260.28 978.11,-245.28 1039.38,-237.3"/> +<polygon fill="red" stroke="red" points="1039.94,-240.75 1049.4,-235.98 1039.03,-233.81 1039.94,-240.75"/> </g> <!-- SoundIO&#45;&gt;ALSA --> -<g id="edge71" class="edge"> +<g id="edge67" class="edge"> <title>SoundIO&#45;&gt;ALSA</title> -<path fill="none" stroke="black" d="M2021.58,-758.62C2012.75,-756.37 2003.34,-754.24 1994.48,-752.74 1759.4,-713.01 1473.66,-702.39 1361.25,-699.65"/> -<polygon fill="black" stroke="black" points="1361.31,-696.15 1351.23,-699.42 1361.15,-703.15 1361.31,-696.15"/> +<path fill="none" stroke="black" d="M702.42,-666.63C714.84,-664.02 728.45,-661.21 741,-658.74 845.3,-638.21 967.92,-616.18 1034.31,-604.42"/> +<polygon fill="black" stroke="black" points="1035.24,-607.82 1044.47,-602.63 1034.02,-600.92 1035.24,-607.82"/> </g> <!-- SoundIO&#45;&gt;JACK --> -<g id="edge69" class="edge"> +<g id="edge65" class="edge"> <title>SoundIO&#45;&gt;JACK</title> -<path fill="none" stroke="black" d="M2020.86,-759.08C1978.22,-747.04 1912.56,-727.57 1889.48,-715.74 1746.52,-642.47 1733.19,-589.04 1599.48,-500 1590.71,-494.16 1580.95,-488.17 1571.94,-482.84"/> -<polygon fill="black" stroke="black" points="1573.64,-479.78 1563.24,-477.76 1570.11,-485.82 1573.64,-479.78"/> +<path fill="none" stroke="black" d="M631.6,-661.73C619.77,-655.63 606.02,-648.18 594,-640.74 535,-604.24 519.56,-595.28 467,-550 409.37,-500.35 407.5,-474.38 348,-427 340.08,-420.69 330.93,-414.67 322.27,-409.45"/> +<polygon fill="black" stroke="black" points="323.89,-406.35 313.49,-404.33 320.36,-412.39 323.89,-406.35"/> </g> <!-- SoundIO&#45;&gt;PulseAudio --> -<g id="edge70" class="edge"> +<g id="edge66" class="edge"> <title>SoundIO&#45;&gt;PulseAudio</title> -<path fill="none" stroke="black" d="M2079.23,-754.13C2084.24,-748.31 2087.87,-741.27 2086.48,-733.74 2075.64,-674.91 2067.73,-660.18 2038.48,-608 2036.61,-604.66 2034.44,-601.29 2032.16,-598.03"/> -<polygon fill="black" stroke="black" points="2034.78,-595.68 2026,-589.75 2029.16,-599.86 2034.78,-595.68"/> +<path fill="none" stroke="black" d="M668.27,-658.97C685.19,-624.64 723.88,-546.17 744.12,-505.12"/> +<polygon fill="black" stroke="black" points="747.33,-506.53 748.61,-496.01 741.05,-503.43 747.33,-506.53"/> </g> <!-- RtAudio --> -<g id="node29" class="node"> +<g id="node27" class="node"> <title>RtAudio</title> -<g id="a_node29"><a xlink:href="https://www.music.mcgill.ca/~gary/rtaudio/apinotes.html" xlink:title="RtAudio"> -<ellipse fill="lightgrey" stroke="black" cx="1506.48" cy="-770.74" rx="48.19" ry="18"/> -<text text-anchor="middle" x="1506.48" y="-767.04" font-family="Times,serif" font-size="14.00">RtAudio</text> +<g id="a_node27"><a xlink:href="https://www.music.mcgill.ca/~gary/rtaudio/apinotes.html" xlink:title="RtAudio"> +<ellipse fill="lightgrey" stroke="black" cx="446" cy="-676.74" rx="48.19" ry="18"/> +<text text-anchor="middle" x="446" y="-673.04" font-family="Times,serif" font-size="14.00">RtAudio</text> </a> </g> </g> <!-- RtAudio&#45;&gt;ALSA --> -<g id="edge74" class="edge"> +<g id="edge70" class="edge"> <title>RtAudio&#45;&gt;ALSA</title> -<path fill="none" stroke="black" d="M1473.73,-757.5C1454.95,-750.5 1430.91,-741.58 1409.48,-733.74 1390.79,-726.9 1370.04,-719.4 1352.54,-713.1"/> -<polygon fill="black" stroke="black" points="1353.25,-709.64 1342.66,-709.55 1350.88,-716.22 1353.25,-709.64"/> +<path fill="none" stroke="black" d="M491.28,-670.55C572.31,-661.21 747.44,-640.76 895,-621.74 942.19,-615.66 995.97,-608.2 1033.88,-602.86"/> +<polygon fill="black" stroke="black" points="1034.73,-606.28 1044.14,-601.41 1033.75,-599.35 1034.73,-606.28"/> </g> <!-- RtAudio&#45;&gt;JACK --> -<g id="edge75" class="edge"> +<g id="edge71" class="edge"> <title>RtAudio&#45;&gt;JACK</title> -<path fill="none" stroke="black" d="M1509.96,-752.54C1517.55,-713.98 1535.41,-617.63 1541.48,-536 1542.55,-521.69 1542.44,-505.71 1542,-492.54"/> -<polygon fill="black" stroke="black" points="1545.49,-492.09 1541.58,-482.24 1538.49,-492.38 1545.49,-492.09"/> +<path fill="none" stroke="black" d="M438.49,-658.77C415.09,-606.05 344.17,-447.39 329,-427 325.38,-422.14 321.01,-417.43 316.51,-413.14"/> +<polygon fill="black" stroke="black" points="318.72,-410.42 308.95,-406.34 314.04,-415.62 318.72,-410.42"/> </g> <!-- RtAudio&#45;&gt;OSS --> -<g id="edge73" class="edge"> +<g id="edge69" class="edge"> <title>RtAudio&#45;&gt;OSS</title> -<path fill="none" stroke="black" d="M1497.68,-752.84C1467.88,-697.11 1365.38,-516.8 1234.48,-413 1183.45,-372.53 1115.28,-338.44 1074.82,-319.93"/> -<polygon fill="black" stroke="black" points="1076.2,-316.71 1065.65,-315.79 1073.32,-323.09 1076.2,-316.71"/> -<text text-anchor="middle" x="1389.48" y="-514.3" font-family="Times,serif" font-size="14.00">OSS 4.0+</text> +<path fill="none" stroke="black" d="M403.2,-668.5C371.4,-661.26 328.59,-647.38 299,-621.74 230.4,-562.3 224.23,-530.01 202,-442 200.37,-435.54 199.73,-433.27 202,-427 209.76,-405.57 305.02,-294.4 323,-286 366.7,-265.6 1142.81,-269.94 1191,-268 1401.14,-259.56 1652.01,-242.3 1751.38,-235.18"/> +<polygon fill="black" stroke="black" points="1751.91,-238.65 1761.63,-234.45 1751.4,-231.67 1751.91,-238.65"/> +<text text-anchor="middle" x="237" y="-430.8" font-family="Times,serif" font-size="14.00">OSS 4.0+</text> </g> <!-- RtAudio&#45;&gt;PulseAudio --> -<g id="edge76" class="edge"> +<g id="edge72" class="edge"> <title>RtAudio&#45;&gt;PulseAudio</title> -<path fill="none" stroke="black" d="M1552.45,-765.37C1620.66,-756.69 1749.45,-731.63 1831.48,-661.74 1851.98,-644.27 1838.18,-624.48 1859.48,-608 1882.38,-590.29 1912.65,-581.27 1940.14,-576.77"/> -<polygon fill="black" stroke="black" points="1940.74,-580.22 1950.13,-575.3 1939.73,-573.29 1940.74,-580.22"/> +<path fill="none" stroke="black" d="M453.59,-658.88C472.14,-617.69 518.42,-515.19 520,-514 545.5,-494.85 625.52,-486.08 685.57,-482.13"/> +<polygon fill="black" stroke="black" points="686.02,-485.61 695.78,-481.49 685.58,-478.62 686.02,-485.61"/> </g> <!-- JUCE --> -<g id="node30" class="node"> +<g id="node28" class="node"> <title>JUCE</title> -<ellipse fill="lightgrey" stroke="black" cx="1093.48" cy="-770.74" rx="36" ry="18"/> -<text text-anchor="middle" x="1093.48" y="-767.04" font-family="Times,serif" font-size="14.00">JUCE</text> -</g> -<!-- JUCE&#45;&gt;? --> -<g id="edge79" class="edge"> -<title>JUCE&#45;&gt;?</title> -<path fill="none" stroke="red" d="M1067.12,-758.37C1023.82,-739.48 935.19,-699.93 862.48,-661.74 629.55,-539.4 359.19,-370.58 279.02,-319.94"/> -<polygon fill="red" stroke="red" points="280.53,-316.75 270.2,-314.36 276.78,-322.67 280.53,-316.75"/> +<ellipse fill="lightgrey" stroke="black" cx="786" cy="-676.74" rx="36" ry="18"/> +<text text-anchor="middle" x="786" y="-673.04" font-family="Times,serif" font-size="14.00">JUCE</text> </g> <!-- JUCE&#45;&gt;ALSA --> -<g id="edge77" class="edge"> +<g id="edge73" class="edge"> <title>JUCE&#45;&gt;ALSA</title> -<path fill="none" stroke="black" d="M1120.99,-759.05C1126.75,-756.89 1132.8,-754.69 1138.48,-752.74 1183,-737.44 1234.55,-721.68 1269.93,-711.17"/> -<polygon fill="black" stroke="black" points="1271.31,-714.41 1279.9,-708.21 1269.32,-707.7 1271.31,-714.41"/> +<path fill="none" stroke="black" d="M816.94,-667.42C870.14,-653.11 979.06,-623.82 1039.74,-607.5"/> +<polygon fill="black" stroke="black" points="1040.66,-610.88 1049.41,-604.9 1038.84,-604.12 1040.66,-610.88"/> </g> <!-- JUCE&#45;&gt;JACK --> -<g id="edge78" class="edge"> +<g id="edge74" class="edge"> <title>JUCE&#45;&gt;JACK</title> -<path fill="none" stroke="black" d="M1067.18,-758.29C1057.43,-752.19 1049.58,-743.85 1053.48,-733.74 1080.64,-663.36 1106.54,-652.45 1167.48,-608 1273.23,-530.87 1425.77,-489.75 1498.65,-473.46"/> -<polygon fill="black" stroke="black" points="1499.79,-476.79 1508.81,-471.23 1498.29,-469.95 1499.79,-476.79"/> +<path fill="none" stroke="black" d="M754.8,-667.68C731.4,-661.3 698.78,-651.65 671,-640.74 653.05,-633.69 648.47,-631.77 632,-621.74 508.4,-546.44 496.28,-499.47 371,-427 357.1,-418.96 341.01,-411.64 326.84,-405.79"/> +<polygon fill="black" stroke="black" points="327.98,-402.48 317.4,-401.99 325.37,-408.97 327.98,-402.48"/> </g> <!-- SDL1 --> -<g id="node31" class="node"> +<g id="node29" class="node"> <title>SDL1</title> -<g id="a_node31"><a xlink:href="https://hg.libsdl.org/SDL/file/fba40d9f4a73/src/audio" xlink:title="libSDL&#45;1.2"> -<ellipse fill="lightgrey" stroke="black" cx="709.48" cy="-770.74" rx="59.59" ry="18"/> -<text text-anchor="middle" x="709.48" y="-767.04" font-family="Times,serif" font-size="14.00">libSDL&#45;1.2</text> +<g id="a_node29"><a xlink:href="https://hg.libsdl.org/SDL/file/fba40d9f4a73/src/audio" xlink:title="libSDL&#45;1.2"> +<ellipse fill="lightgrey" stroke="black" cx="2340" cy="-676.74" rx="59.59" ry="18"/> +<text text-anchor="middle" x="2340" y="-673.04" font-family="Times,serif" font-size="14.00">libSDL&#45;1.2</text> </a> </g> </g> <!-- SDL1&#45;&gt;filesystem --> -<g id="edge92" class="edge"> +<g id="edge86" class="edge"> <title>SDL1&#45;&gt;filesystem</title> -<path fill="none" stroke="black" d="M715.47,-752.55C740.27,-684.46 842.48,-433.78 1026.48,-359 1099.52,-329.32 1629.06,-312.23 1825.45,-306.86"/> -<polygon fill="black" stroke="black" points="1825.77,-310.35 1835.67,-306.58 1825.58,-303.35 1825.77,-310.35"/> +<path fill="none" stroke="black" d="M2328.1,-659.03C2307.36,-630.14 2265.87,-573.42 2256,-568 2182.82,-527.8 2149.62,-571.72 2069,-550 1942.45,-515.91 1921.47,-478.6 1801,-427 1645.32,-360.32 1607.12,-341.15 1447,-286 1387.86,-265.63 1317.98,-251.12 1268.01,-242.31"/> +<polygon fill="black" stroke="black" points="1268.43,-238.83 1257.98,-240.57 1267.23,-245.72 1268.43,-238.83"/> </g> <!-- SDL1&#45;&gt;null --> -<g id="edge96" class="edge"> +<g id="edge90" class="edge"> <title>SDL1&#45;&gt;null</title> -<path fill="none" stroke="red" d="M726.28,-753.31C747.38,-732.47 784.46,-695.23 814.48,-661.74 872.72,-596.77 986.33,-397.79 1064.48,-359 1067.3,-357.6 1967.35,-322.29 1970.48,-322 1998.05,-319.49 2028.97,-315.07 2052.52,-311.37"/> -<polygon fill="red" stroke="red" points="2053.13,-314.82 2062.45,-309.78 2052.02,-307.9 2053.13,-314.82"/> +<path fill="none" stroke="red" d="M2337.05,-658.44C2332.07,-634.55 2319.67,-591.73 2292,-568 2203.02,-491.71 1395.78,-290.75 1281,-267 1214.82,-253.31 1195.95,-263.76 1130,-249 1123.15,-247.47 1115.92,-245.36 1109.12,-243.16"/> +<polygon fill="red" stroke="red" points="1110.17,-239.82 1099.57,-239.92 1107.92,-246.45 1110.17,-239.82"/> </g> <!-- SDL1&#45;&gt;ALSA --> -<g id="edge89" class="edge"> +<g id="edge83" class="edge"> <title>SDL1&#45;&gt;ALSA</title> -<path fill="none" stroke="black" d="M764.06,-763.31C880.59,-749.59 1152.16,-717.62 1263.52,-704.51"/> -<polygon fill="black" stroke="black" points="1263.95,-707.98 1273.47,-703.33 1263.13,-701.03 1263.95,-707.98"/> +<path fill="none" stroke="black" d="M2281.89,-672.05C2068.43,-658.48 1329.76,-611.55 1132.01,-598.98"/> +<polygon fill="black" stroke="black" points="1132.13,-595.48 1121.92,-598.34 1131.68,-602.47 1132.13,-595.48"/> </g> <!-- SDL1&#45;&gt;OSS --> -<g id="edge94" class="edge"> +<g id="edge88" class="edge"> <title>SDL1&#45;&gt;OSS</title> -<path fill="none" stroke="black" d="M706.77,-752.38C699.12,-697.5 682.4,-524.73 754.48,-413 780.94,-372 792.52,-361.16 836.48,-340 888.08,-315.16 954.49,-307.68 997.28,-305.58"/> -<polygon fill="black" stroke="black" points="997.51,-309.07 1007.36,-305.16 997.22,-302.08 997.51,-309.07"/> +<path fill="none" stroke="black" d="M2348.33,-658.69C2350.64,-653.1 2352.84,-646.78 2354,-640.74 2360.44,-607.31 2350.56,-595.13 2330,-568 2254.07,-467.78 2187.35,-495.4 2096,-409 2038,-354.14 2055.04,-307.09 1986,-267 1940.41,-240.53 1879.24,-233.34 1838.54,-231.75"/> +<polygon fill="black" stroke="black" points="1838.5,-228.25 1828.4,-231.45 1838.3,-235.24 1838.5,-228.25"/> </g> <!-- SDL1&#45;&gt;PulseAudio --> -<g id="edge95" class="edge"> +<g id="edge89" class="edge"> <title>SDL1&#45;&gt;PulseAudio</title> -<path fill="none" stroke="black" d="M768,-766.45C882.2,-759.68 1142.68,-742.55 1360.48,-715.74 1507.99,-697.58 1546.85,-699.9 1690.48,-661.74 1756.51,-644.2 1768.76,-626.63 1834.48,-608 1871.49,-597.51 1913.72,-589.03 1947.65,-583.05"/> -<polygon fill="black" stroke="black" points="1948.64,-586.43 1957.9,-581.27 1947.45,-579.53 1948.64,-586.43"/> +<path fill="none" stroke="black" d="M2314.71,-660.33C2299.25,-650.31 2279.53,-636.41 2264,-621.74 2241.76,-600.74 2248.41,-581.59 2221,-568 2184.7,-550 1532.42,-552.73 1492,-550 1346.56,-540.19 1311.07,-528.22 1166,-514 1046.8,-502.32 907.84,-490.89 826.43,-484.42"/> +<polygon fill="black" stroke="black" points="826.55,-480.92 816.31,-483.61 826,-487.89 826.55,-480.92"/> </g> <!-- SDL1&#45;&gt;aRts --> -<g id="edge90" class="edge"> +<g id="edge84" class="edge"> <title>SDL1&#45;&gt;aRts</title> -<path fill="none" stroke="black" d="M683.43,-754.51C674.74,-748.84 665.29,-742.01 657.48,-734.74 627.37,-706.68 619.02,-698.49 600.48,-661.74 545.39,-552.5 538.03,-517.22 532.48,-395 531.37,-370.54 528.48,-363.46 535.48,-340 554.46,-276.46 589.77,-206.7 609.4,-170.3"/> -<polygon fill="black" stroke="black" points="612.56,-171.83 614.27,-161.37 606.41,-168.48 612.56,-171.83"/> +<path fill="none" stroke="black" d="M2389.64,-666.54C2450.03,-653.89 2544,-628.91 2544,-595.87 2544,-595.87 2544,-595.87 2544,-267 2544,-189.55 2468.58,-196.93 2393,-180 2256.53,-149.42 2221.84,-142.83 2083,-126 1845.51,-97.21 1783.83,-114.88 1546,-89 1521.44,-86.33 1494.06,-82.28 1472.29,-78.8"/> +<polygon fill="black" stroke="black" points="1472.83,-75.35 1462.4,-77.2 1471.71,-82.26 1472.83,-75.35"/> </g> <!-- SDL1&#45;&gt;ESD --> -<g id="edge91" class="edge"> +<g id="edge85" class="edge"> <title>SDL1&#45;&gt;ESD</title> -<path fill="none" stroke="black" d="M698.01,-752.66C659.7,-693.35 542.28,-491.73 608.48,-340 651.16,-242.2 691.96,-227.56 787.48,-180 809.91,-168.83 836.67,-160.18 858.07,-154.27"/> -<polygon fill="black" stroke="black" points="859.04,-157.63 867.79,-151.67 857.23,-150.87 859.04,-157.63"/> +<path fill="none" stroke="black" d="M2397.92,-672.22C2453.62,-667.82 2532.95,-658.6 2558,-640.74 2576.41,-627.61 2582,-618.49 2582,-595.87 2582,-595.87 2582,-595.87 2582,-143 2582,-94.32 1815.15,-76.41 1627.21,-72.74"/> +<polygon fill="black" stroke="black" points="1627.24,-69.24 1617.18,-72.55 1627.11,-76.24 1627.24,-69.24"/> </g> <!-- SDL1&#45;&gt;NAS --> -<g id="edge93" class="edge"> +<g id="edge87" class="edge"> <title>SDL1&#45;&gt;NAS</title> -<path fill="none" stroke="black" d="M654.97,-763.17C630.83,-758.25 603.09,-749.67 581.48,-734.74 548.5,-711.94 547,-697.3 528.48,-661.74 467.98,-545.53 426.94,-393.17 411.88,-332.07"/> -<polygon fill="black" stroke="black" points="415.22,-330.96 409.45,-322.08 408.41,-332.62 415.22,-330.96"/> +<path fill="none" stroke="black" d="M2374.03,-661.86C2399.51,-648.95 2430,-627 2430,-595.87 2430,-595.87 2430,-595.87 2430,-303 2430,-279.53 2411.65,-263.22 2390.44,-252.21"/> +<polygon fill="black" stroke="black" points="2391.75,-248.96 2381.21,-247.81 2388.73,-255.28 2391.75,-248.96"/> </g> <!-- SDL2 --> -<g id="node32" class="node"> +<g id="node30" class="node"> <title>SDL2</title> -<g id="a_node32"><a xlink:href="https://hg.libsdl.org/SDL/file/355a4f94a782" xlink:title="libSDL&#45;2.0"> -<ellipse fill="lightgrey" stroke="black" cx="393.48" cy="-770.74" rx="59.59" ry="18"/> -<text text-anchor="middle" x="393.48" y="-767.04" font-family="Times,serif" font-size="14.00">libSDL&#45;2.0</text> +<g id="a_node30"><a xlink:href="https://hg.libsdl.org/SDL/file/355a4f94a782" xlink:title="libSDL&#45;2.0"> +<ellipse fill="lightgrey" stroke="black" cx="1854" cy="-676.74" rx="59.59" ry="18"/> +<text text-anchor="middle" x="1854" y="-673.04" font-family="Times,serif" font-size="14.00">libSDL&#45;2.0</text> </a> </g> </g> <!-- SDL2&#45;&gt;filesystem --> -<g id="edge100" class="edge"> +<g id="edge94" class="edge"> <title>SDL2&#45;&gt;filesystem</title> -<path fill="none" stroke="black" d="M400.47,-752.71C402.76,-747.02 405.28,-740.62 407.48,-734.74 446.24,-631.25 411.93,-578.73 489.48,-500 617.37,-370.18 696.34,-397.34 874.48,-359 1056.24,-319.88 1623.07,-308.65 1825.62,-305.84"/> -<polygon fill="black" stroke="black" points="1825.9,-309.34 1835.85,-305.7 1825.8,-302.34 1825.9,-309.34"/> +<path fill="none" stroke="black" d="M1829.51,-660.12C1820.68,-654.26 1810.74,-647.41 1802,-640.74 1599.61,-486.35 1596.16,-379.86 1368,-267 1339.18,-252.74 1304.76,-244.28 1274.75,-239.27"/> +<polygon fill="black" stroke="black" points="1275.18,-235.79 1264.75,-237.69 1274.09,-242.7 1275.18,-235.79"/> </g> <!-- SDL2&#45;&gt;null --> -<g id="edge105" class="edge"> +<g id="edge98" class="edge"> <title>SDL2&#45;&gt;null</title> -<path fill="none" stroke="red" d="M409.71,-753.01C476.47,-685.6 739.49,-433.94 1015.48,-359 1220.44,-303.35 1758.95,-340.92 1970.48,-322 1998.23,-319.52 2029.38,-315.06 2052.98,-311.33"/> -<polygon fill="red" stroke="red" points="2053.62,-314.77 2062.93,-309.73 2052.5,-307.86 2053.62,-314.77"/> +<path fill="none" stroke="red" d="M1841,-658.86C1823.77,-636.92 1791.91,-597.88 1761,-568 1640.99,-451.97 1587.35,-451.44 1440,-373 1395.96,-349.56 1382.39,-348.31 1340,-322 1305.18,-300.39 1303.97,-282.4 1266,-267 1209.5,-244.08 1189.41,-262.7 1130,-249 1123.16,-247.42 1115.93,-245.3 1109.14,-243.1"/> +<polygon fill="red" stroke="red" points="1110.18,-239.76 1099.59,-239.86 1107.93,-246.38 1110.18,-239.76"/> </g> <!-- SDL2&#45;&gt;ALSA --> -<g id="edge97" class="edge"> +<g id="edge91" class="edge"> <title>SDL2&#45;&gt;ALSA</title> -<path fill="none" stroke="black" d="M450.97,-765.71C614.85,-754.21 1077.02,-721.68 1145.48,-715.74 1185.17,-712.3 1230.1,-707.68 1263.35,-704.13"/> -<polygon fill="black" stroke="black" points="1264.14,-707.57 1273.71,-703.02 1263.39,-700.61 1264.14,-707.57"/> +<path fill="none" stroke="black" d="M1794.4,-674.63C1676.19,-671.64 1404.01,-660.72 1179,-621.74 1160.97,-618.62 1141.41,-613.64 1124.68,-608.89"/> +<polygon fill="black" stroke="black" points="1125.25,-605.41 1114.67,-605.98 1123.3,-612.13 1125.25,-605.41"/> </g> <!-- SDL2&#45;&gt;JACK --> -<g id="edge102" class="edge"> +<g id="edge96" class="edge"> <title>SDL2&#45;&gt;JACK</title> -<path fill="none" stroke="black" d="M440.36,-759.43C469.34,-752.85 507.21,-743.86 540.48,-734.74 879.38,-641.83 952.68,-577.26 1295.48,-500 1365.14,-484.3 1447.6,-474.24 1496.89,-469.1"/> -<polygon fill="black" stroke="black" points="1497.3,-472.58 1506.89,-468.08 1496.59,-465.62 1497.3,-472.58"/> +<path fill="none" stroke="black" d="M1811.39,-664.02C1786.97,-657.27 1755.74,-648.6 1728,-640.74 1615.84,-608.98 1589.59,-594.21 1476,-568 1036.33,-466.57 490.89,-410.72 334.04,-395.99"/> +<polygon fill="black" stroke="black" points="334.14,-392.48 323.85,-395.04 333.49,-399.45 334.14,-392.48"/> </g> <!-- SDL2&#45;&gt;OSS --> -<g id="edge106" class="edge"> +<g id="edge99" class="edge"> <title>SDL2&#45;&gt;OSS</title> -<path fill="none" stroke="black" d="M392.91,-752.47C392.04,-715.61 391.82,-626.64 406.48,-554 416.56,-504.12 412.98,-485.96 444.48,-446 498.22,-377.85 526.3,-367.9 608.48,-340 679.56,-315.87 902.26,-308.09 997.06,-305.83"/> -<polygon fill="black" stroke="black" points="997.25,-309.33 1007.17,-305.6 997.09,-302.33 997.25,-309.33"/> +<path fill="none" stroke="black" d="M1853.44,-658.51C1853.59,-635.47 1857.09,-594.47 1878,-568 1889.34,-553.65 1902.52,-563.37 1915,-550 1961.13,-500.59 1959.1,-475.35 1972,-409 1984.05,-347.05 2012.06,-315.76 1972,-267 1955.41,-246.81 1885.23,-238.07 1838.39,-234.43"/> +<polygon fill="black" stroke="black" points="1838.42,-230.92 1828.19,-233.69 1837.91,-237.9 1838.42,-230.92"/> </g> <!-- SDL2&#45;&gt;sndio --> -<g id="edge108" class="edge"> +<g id="edge101" class="edge"> <title>SDL2&#45;&gt;sndio</title> -<path fill="none" stroke="black" d="M333.78,-769.45C259.61,-765.38 136.63,-745.54 85.48,-661.74 73.04,-641.35 80.53,-631.36 85.48,-608 101.73,-531.41 164.62,-331.29 228.48,-286 288.9,-243.15 1483.58,-184.97 1557.48,-180 1661.47,-173.01 1975.09,-154.56 2093.01,-147.66"/> -<polygon fill="black" stroke="black" points="2093.36,-151.14 2103.14,-147.06 2092.95,-144.15 2093.36,-151.14"/> +<path fill="none" stroke="black" d="M1860.76,-658.48C1870.29,-635.78 1889.39,-595.55 1915,-568 1924.82,-557.44 1932.3,-560.67 1942,-550 1960.32,-529.84 1960.83,-521.27 1971,-496 1998.12,-428.59 2102.61,-234.89 2055,-180 2036.47,-158.63 1956.96,-166.24 1929,-162 1829.31,-146.87 1805.23,-137.03 1705,-126 1378.92,-90.1 983.56,-76.79 850.89,-73.14"/> +<polygon fill="black" stroke="black" points="850.79,-69.64 840.7,-72.87 850.6,-76.64 850.79,-69.64"/> </g> <!-- SDL2&#45;&gt;PulseAudio --> -<g id="edge107" class="edge"> +<g id="edge100" class="edge"> <title>SDL2&#45;&gt;PulseAudio</title> -<path fill="none" stroke="black" d="M447.01,-762.46C498.43,-755.44 578.28,-744.48 647.48,-734.74 1039.65,-679.55 1135.75,-650.53 1529.48,-608 1675.01,-592.28 1846.04,-581.73 1940.23,-576.61"/> -<polygon fill="black" stroke="black" points="1940.69,-580.09 1950.49,-576.05 1940.32,-573.1 1940.69,-580.09"/> +<path fill="none" stroke="black" d="M1806.28,-665.86C1640.92,-631.65 1100.48,-519.96 1063,-514 981.96,-501.11 888.13,-491.09 825.95,-485.14"/> +<polygon fill="black" stroke="black" points="826.16,-481.65 815.87,-484.19 825.5,-488.61 826.16,-481.65"/> </g> <!-- SDL2&#45;&gt;aRts --> -<g id="edge98" class="edge"> +<g id="edge92" class="edge"> <title>SDL2&#45;&gt;aRts</title> -<path fill="none" stroke="black" d="M334.04,-768.26C236.76,-765.21 52.32,-756.59 32.48,-734.74 -37.97,-657.12 25.11,-600.33 55.48,-500 85.14,-402.05 64.8,-354.88 140.48,-286 207.08,-225.39 479.68,-170.95 583.28,-152.06"/> -<polygon fill="black" stroke="black" points="584.12,-155.46 593.34,-150.24 582.87,-148.57 584.12,-155.46"/> +<path fill="none" stroke="black" d="M1912.66,-672.83C2016.48,-666.99 2227.93,-651.72 2295,-621.74 2374.11,-586.38 2400.86,-571.15 2444,-496 2507.34,-385.67 2569.74,-309.64 2487,-213 2466.6,-189.17 1960.13,-129.93 1929,-126 1759.33,-104.6 1715.74,-109.84 1546,-89 1521.48,-85.99 1494.1,-81.93 1472.32,-78.53"/> +<polygon fill="black" stroke="black" points="1472.85,-75.07 1462.42,-76.97 1471.76,-81.99 1472.85,-75.07"/> </g> <!-- SDL2&#45;&gt;ESD --> -<g id="edge99" class="edge"> +<g id="edge93" class="edge"> <title>SDL2&#45;&gt;ESD</title> -<path fill="none" stroke="black" d="M334.54,-767.23C246.52,-762.91 89.01,-752.75 70.48,-734.74 7.75,-673.75 132.75,-331.71 187.48,-286 239.82,-242.3 714.2,-171.19 856.39,-150.69"/> -<polygon fill="black" stroke="black" points="857.02,-154.14 866.42,-149.25 856.03,-147.21 857.02,-154.14"/> +<path fill="none" stroke="black" d="M1881.42,-660.55C1889.92,-655.02 1898.91,-648.26 1906,-640.74 1931.77,-613.42 1920.14,-592.03 1949,-568 1966.83,-553.15 1979.67,-564.23 1998,-550 2058.08,-503.36 2068.31,-480.23 2095,-409 2125.61,-327.32 2114.66,-295.03 2085,-213 2067.24,-163.88 2053.55,-147.6 2006,-126 1938.89,-95.51 1719.23,-79.65 1627.17,-74.21"/> +<polygon fill="black" stroke="black" points="1627.3,-70.71 1617.11,-73.63 1626.89,-77.7 1627.3,-70.71"/> </g> <!-- SDL2&#45;&gt;NAS --> -<g id="edge103" class="edge"> +<g id="edge97" class="edge"> <title>SDL2&#45;&gt;NAS</title> -<path fill="none" stroke="black" d="M390.32,-752.72C384.57,-720.91 372.65,-650.19 368.48,-590 363.05,-511.51 361.45,-491.04 371.48,-413 374.59,-388.87 373.31,-382.25 380.48,-359 383.36,-349.68 387.52,-339.88 391.62,-331.23"/> -<polygon fill="black" stroke="black" points="394.87,-332.56 396.16,-322.04 388.59,-329.46 394.87,-332.56"/> +<path fill="none" stroke="black" d="M1911.36,-671.54C2042.69,-660.34 2354,-624.18 2354,-533 2354,-533 2354,-533 2354,-303 2354,-287.55 2348.35,-271.38 2342.21,-258.37"/> +<polygon fill="black" stroke="black" points="2345.16,-256.45 2337.52,-249.11 2338.92,-259.61 2345.16,-256.45"/> </g> <!-- FusionSound --> -<g id="node33" class="node"> +<g id="node31" class="node"> <title>FusionSound</title> -<ellipse fill="red" stroke="black" cx="213.48" cy="-634.87" rx="126.64" ry="26.74"/> -<text text-anchor="middle" x="213.48" y="-638.67" font-family="Times,serif" font-size="14.00">DirectFB/FusionSound</text> -<text text-anchor="middle" x="213.48" y="-623.67" font-family="Times,serif" font-size="14.00">[dead]</text> +<ellipse fill="red" stroke="black" cx="2085" cy="-594.87" rx="126.64" ry="26.74"/> +<text text-anchor="middle" x="2085" y="-598.67" font-family="Times,serif" font-size="14.00">DirectFB/FusionSound</text> +<text text-anchor="middle" x="2085" y="-583.67" font-family="Times,serif" font-size="14.00">[dead]</text> </g> <!-- SDL2&#45;&gt;FusionSound --> -<g id="edge101" class="edge"> +<g id="edge95" class="edge"> <title>SDL2&#45;&gt;FusionSound</title> -<path fill="none" stroke="red" d="M341.01,-762.09C290.45,-753.52 219.22,-737.86 202.48,-715.74 192.99,-703.19 193.96,-686.27 198.02,-671.23"/> -<polygon fill="red" stroke="red" points="201.36,-672.28 201.06,-661.69 194.69,-670.15 201.36,-672.28"/> -</g> -<!-- OpenSL ES --> -<g id="node34" class="node"> -<title>OpenSL ES</title> -<ellipse fill="lightgrey" stroke="black" cx="275.48" cy="-697.74" rx="63.89" ry="18"/> -<text text-anchor="middle" x="275.48" y="-694.04" font-family="Times,serif" font-size="14.00">OpenSL ES</text> -</g> -<!-- SDL2&#45;&gt;OpenSL ES --> -<g id="edge104" class="edge"> -<title>SDL2&#45;&gt;OpenSL ES</title> -<path fill="none" stroke="black" d="M367.88,-754.33C350.99,-744.17 328.65,-730.73 310.17,-719.61"/> -<polygon fill="black" stroke="black" points="311.82,-716.52 301.45,-714.36 308.21,-722.52 311.82,-716.52"/> -</g> -<!-- FusionSound&#45;&gt;? --> -<g id="edge109" class="edge"> -<title>FusionSound&#45;&gt;?</title> -<path fill="none" stroke="red" d="M221.43,-607.68C227.73,-584.57 235.48,-549.86 235.48,-519 235.48,-519 235.48,-519 235.48,-376 235.48,-360.39 240.02,-343.54 244.77,-330.18"/> -<polygon fill="red" stroke="red" points="248.09,-331.31 248.38,-320.72 241.55,-328.82 248.09,-331.31"/> -</g> -<!-- OpenSL ES&#45;&gt;? --> -<g id="edge136" class="edge"> -<title>OpenSL ES&#45;&gt;?</title> -<path fill="none" stroke="red" d="M316.19,-683.76C326.18,-678.55 335.67,-671.41 341.48,-661.74 353.8,-641.27 347.95,-630.99 341.48,-608 338.94,-598.97 334.45,-598.49 330.48,-590 316.38,-559.82 306.48,-552.31 306.48,-519 306.48,-519 306.48,-519 306.48,-376 306.48,-354.81 291.32,-335.62 277.53,-322.55"/> -<polygon fill="red" stroke="red" points="279.49,-319.61 269.69,-315.59 274.84,-324.84 279.49,-319.61"/> +<path fill="none" stroke="red" d="M1891.63,-662.73C1923.87,-651.58 1971.27,-635.19 2011.07,-621.43"/> +<polygon fill="red" stroke="red" points="2012.44,-624.66 2020.75,-618.09 2010.15,-618.05 2012.44,-624.66"/> </g> <!-- phonon --> -<g id="node35" class="node"> +<g id="node32" class="node"> <title>phonon</title> -<ellipse fill="lightgrey" stroke="black" cx="2494.48" cy="-843.74" rx="44.69" ry="18"/> -<text text-anchor="middle" x="2494.48" y="-840.04" font-family="Times,serif" font-size="14.00">phonon</text> +<ellipse fill="lightgrey" stroke="black" cx="235" cy="-749.74" rx="44.69" ry="18"/> +<text text-anchor="middle" x="235" y="-746.04" font-family="Times,serif" font-size="14.00">phonon</text> </g> <!-- phonon&#45;&gt;PulseAudio --> -<g id="edge117" class="edge"> +<g id="edge108" class="edge"> <title>phonon&#45;&gt;PulseAudio</title> -<path fill="none" stroke="black" d="M2470.47,-828.49C2385.06,-777.81 2100.92,-609.2 2098.48,-608 2085.68,-601.68 2071.44,-595.58 2058.25,-590.29"/> -<polygon fill="black" stroke="black" points="2059.45,-587 2048.86,-586.59 2056.88,-593.52 2059.45,-587"/> +<path fill="none" stroke="black" d="M243,-731.81C254.03,-709.44 275.35,-669.39 300,-639.74 313.53,-623.47 423.65,-522.55 443,-514 485.01,-495.43 606.45,-486.18 685.4,-482"/> +<polygon fill="black" stroke="black" points="685.96,-485.48 695.77,-481.47 685.6,-478.49 685.96,-485.48"/> </g> <!-- phonon&#45;&gt;gstreamer --> -<g id="edge115" class="edge"> +<g id="edge106" class="edge"> <title>phonon&#45;&gt;gstreamer</title> -<path fill="none" stroke="black" d="M2450.54,-839.73C2363.83,-833.39 2164.81,-816.9 1999.48,-788.74 1993.25,-787.68 1986.76,-786.41 1980.33,-785.05"/> -<polygon fill="black" stroke="black" points="1980.84,-781.57 1970.32,-782.85 1979.33,-788.41 1980.84,-781.57"/> +<path fill="none" stroke="black" d="M279.28,-746.19C378.43,-740.17 625.71,-723.36 831,-694.74 841.5,-693.28 852.64,-691.42 863.37,-689.48"/> +<polygon fill="black" stroke="black" points="864.31,-692.86 873.5,-687.6 863.03,-685.98 864.31,-692.86"/> </g> <!-- VLC --> -<g id="node36" class="node"> +<g id="node33" class="node"> <title>VLC</title> -<g id="a_node36"><a xlink:href="https://code.videolan.org/videolan/vlc/-/tree/master/modules/audio_output" xlink:title="VLC"> -<ellipse fill="lightgrey" stroke="black" cx="2442.48" cy="-770.74" rx="29.8" ry="18"/> -<text text-anchor="middle" x="2442.48" y="-767.04" font-family="Times,serif" font-size="14.00">VLC</text> +<g id="a_node33"><a xlink:href="https://code.videolan.org/videolan/vlc/-/tree/master/modules/audio_output" xlink:title="VLC"> +<ellipse fill="lightgrey" stroke="black" cx="146" cy="-676.74" rx="29.8" ry="18"/> +<text text-anchor="middle" x="146" y="-673.04" font-family="Times,serif" font-size="14.00">VLC</text> </a> </g> </g> <!-- phonon&#45;&gt;VLC --> -<g id="edge116" class="edge"> +<g id="edge107" class="edge"> <title>phonon&#45;&gt;VLC</title> -<path fill="none" stroke="black" d="M2505.16,-825.93C2507.76,-819.64 2508.93,-812.6 2505.48,-806.74 2499.35,-796.31 2488.86,-788.77 2478.19,-783.42"/> -<polygon fill="black" stroke="black" points="2479.42,-780.14 2468.86,-779.27 2476.57,-786.53 2479.42,-780.14"/> +<path fill="none" stroke="black" d="M215.69,-733.33C202.7,-722.97 185.43,-709.2 171.34,-697.95"/> +<polygon fill="black" stroke="black" points="173.46,-695.17 163.46,-691.67 169.1,-700.64 173.46,-695.17"/> </g> <!-- VLC&#45;&gt;filesystem --> -<g id="edge130" class="edge"> +<g id="edge119" class="edge"> <title>VLC&#45;&gt;filesystem</title> -<path fill="none" stroke="black" d="M2452.28,-753.38C2454.93,-747.39 2456.97,-740.43 2456.48,-733.74 2450.69,-653.23 2465.96,-626.5 2430.48,-554 2401.19,-494.15 2381.13,-484.14 2326.48,-446 2230.53,-379.03 2197.28,-374.55 2085.48,-340 2047.43,-328.24 2003.73,-319.79 1968.15,-314.15"/> -<polygon fill="black" stroke="black" points="1968.28,-310.63 1957.86,-312.56 1967.21,-317.54 1968.28,-310.63"/> +<path fill="none" stroke="black" d="M125,-663.68C104.38,-650.09 76,-625.92 76,-595.87 76,-595.87 76,-595.87 76,-433.5 76,-399 222.24,-296.76 252,-286 343.61,-252.87 1031.45,-262.02 1128,-249 1134.26,-248.16 1140.77,-247.03 1147.21,-245.76"/> +<polygon fill="black" stroke="black" points="1148.17,-249.14 1157.24,-243.67 1146.74,-242.29 1148.17,-249.14"/> </g> <!-- VLC&#45;&gt;null --> -<g id="edge128" class="edge"> +<g id="edge117" class="edge"> <title>VLC&#45;&gt;null</title> -<path fill="none" stroke="red" d="M2469.17,-762.44C2492.15,-755.58 2522.79,-744.9 2530.48,-734.74 2610.51,-629.16 2552.8,-536.96 2456.48,-446 2403.22,-395.7 2384.09,-387.21 2316.48,-359 2253.97,-332.92 2176.23,-317.82 2130.13,-310.51"/> -<polygon fill="red" stroke="red" points="2130.38,-307.01 2119.96,-308.95 2129.31,-313.93 2130.38,-307.01"/> +<path fill="none" stroke="red" d="M118.42,-669.4C100.62,-664.16 77.91,-655.18 62,-640.74 45.26,-625.54 38,-618.49 38,-595.87 38,-595.87 38,-595.87 38,-433.5 38,-325.19 127.56,-314.72 232,-286 309.42,-264.71 869.01,-240.53 1033.59,-233.81"/> +<polygon fill="red" stroke="red" points="1034,-237.3 1043.85,-233.4 1033.72,-230.3 1034,-237.3"/> </g> <!-- VLC&#45;&gt;ALSA --> -<g id="edge129" class="edge"> +<g id="edge118" class="edge"> <title>VLC&#45;&gt;ALSA</title> -<path fill="none" stroke="black" d="M2412.83,-767.83C2328.96,-762.42 2082.9,-746.58 1878.48,-733.74 1687.22,-721.72 1459.57,-707.74 1361.46,-701.74"/> -<polygon fill="black" stroke="black" points="1361.45,-698.23 1351.26,-701.11 1361.02,-705.22 1361.45,-698.23"/> +<path fill="none" stroke="black" d="M175.58,-673.66C310.03,-664.21 858.61,-625.55 895,-621.74 942.32,-616.78 996.09,-609.19 1033.96,-603.5"/> +<polygon fill="black" stroke="black" points="1034.84,-606.91 1044.2,-601.96 1033.79,-599.99 1034.84,-606.91"/> </g> <!-- VLC&#45;&gt;JACK --> -<g id="edge131" class="edge"> +<g id="edge120" class="edge"> <title>VLC&#45;&gt;JACK</title> -<path fill="none" stroke="black" d="M2414.98,-763.52C2315.65,-740.54 1967.2,-655.61 1698.48,-536 1669.72,-523.2 1665.97,-513.4 1637.48,-500 1618.76,-491.19 1597.17,-483.2 1579.11,-477.09"/> -<polygon fill="black" stroke="black" points="1580.08,-473.72 1569.49,-473.89 1577.88,-480.36 1580.08,-473.72"/> +<path fill="none" stroke="black" d="M156.69,-659.69C180.9,-622.71 240.58,-528.1 276,-442 279.02,-434.66 281.62,-426.46 283.72,-418.86"/> +<polygon fill="black" stroke="black" points="287.16,-419.56 286.29,-409 280.39,-417.79 287.16,-419.56"/> </g> <!-- VLC&#45;&gt;OSS --> -<g id="edge133" class="edge"> +<g id="edge121" class="edge"> <title>VLC&#45;&gt;OSS</title> -<path fill="none" stroke="black" d="M2432.97,-753.39C2429.21,-747.15 2424.78,-740.03 2420.48,-733.74 2403.49,-708.85 2400.65,-701.18 2379.48,-679.74 2343.06,-642.84 2330.36,-637.16 2287.48,-608 2264.93,-592.67 1890.55,-367.03 1864.48,-359 1863.89,-358.82 1253.64,-318.93 1083.86,-307.83"/> -<polygon fill="black" stroke="black" points="1083.99,-304.34 1073.78,-307.18 1083.53,-311.32 1083.99,-304.34"/> +<path fill="none" stroke="black" d="M142.15,-658.81C137.89,-637.48 132.32,-599.76 138,-568 154.25,-477.06 163.89,-453.06 210,-373 235.05,-329.51 236.97,-308.17 282,-286 290.48,-281.83 1505.74,-241.54 1751.84,-233.42"/> +<polygon fill="black" stroke="black" points="1751.96,-236.92 1761.84,-233.09 1751.73,-229.92 1751.96,-236.92"/> </g> <!-- VLC&#45;&gt;sndio --> -<g id="edge135" class="edge"> +<g id="edge123" class="edge"> <title>VLC&#45;&gt;sndio</title> -<path fill="none" stroke="black" d="M2471.49,-765.9C2500.67,-760.34 2544.3,-747.02 2565.48,-715.74 2578.56,-696.42 2707.36,-344.96 2711.48,-322 2714.31,-306.25 2716.43,-301.22 2711.48,-286 2683.63,-200.36 2616.12,-219.75 2528.48,-199 2405.65,-169.92 2257.09,-154.69 2183.84,-148.47"/> -<polygon fill="black" stroke="black" points="2183.85,-144.96 2173.59,-147.61 2183.26,-151.93 2183.85,-144.96"/> +<path fill="none" stroke="black" d="M116.81,-672.81C74.2,-666.74 0,-648.6 0,-595.87 0,-595.87 0,-595.87 0,-143 0,-95.76 53.68,-116.27 100,-107 226.77,-81.62 623.51,-74.3 759.06,-72.51"/> +<polygon fill="black" stroke="black" points="759.16,-76.01 769.12,-72.38 759.07,-69.01 759.16,-76.01"/> </g> <!-- VLC&#45;&gt;PulseAudio --> -<g id="edge134" class="edge"> +<g id="edge122" class="edge"> <title>VLC&#45;&gt;PulseAudio</title> -<path fill="none" stroke="black" d="M2428.06,-754.67C2395.75,-721.94 2313.71,-644.39 2228.48,-608 2182.51,-588.37 2126.77,-579.66 2083.29,-575.84"/> -<polygon fill="black" stroke="black" points="2083.33,-572.34 2073.08,-575.02 2082.76,-579.31 2083.33,-572.34"/> -</g> -<!-- VLC&#45;&gt;OpenSL ES --> -<g id="edge132" class="edge"> -<title>VLC&#45;&gt;OpenSL ES</title> -<path fill="none" stroke="black" d="M2412.66,-767.94C2355.7,-764.55 2227.49,-757.16 2119.48,-752.74 1431.35,-724.56 598.18,-705.62 349.16,-700.28"/> -<polygon fill="black" stroke="black" points="348.87,-696.77 338.79,-700.06 348.72,-703.77 348.87,-696.77"/> +<path fill="none" stroke="black" d="M170.46,-666.37C186.38,-659.92 207.38,-650.73 225,-640.74 313.29,-590.66 318.93,-546.77 415,-514 463.45,-497.47 600.51,-487.38 685.69,-482.52"/> +<polygon fill="black" stroke="black" points="686.02,-486.01 695.81,-481.95 685.63,-479.02 686.02,-486.01"/> </g> <!-- ClanLib --> -<g id="node37" class="node"> +<g id="node34" class="node"> <title>ClanLib</title> -<g id="a_node37"><a xlink:href="https://github.com/sphair/ClanLib/tree/master/Sources/Sound/Platform/Linux" xlink:title="ClanLib"> -<ellipse fill="lightgrey" stroke="black" cx="1193.48" cy="-770.74" rx="46.29" ry="18"/> -<text text-anchor="middle" x="1193.48" y="-767.04" font-family="Times,serif" font-size="14.00">ClanLib</text> +<g id="a_node34"><a xlink:href="https://github.com/sphair/ClanLib/tree/master/Sources/Sound/Platform/Linux" xlink:title="ClanLib"> +<ellipse fill="lightgrey" stroke="black" cx="1391" cy="-676.74" rx="46.29" ry="18"/> +<text text-anchor="middle" x="1391" y="-673.04" font-family="Times,serif" font-size="14.00">ClanLib</text> </a> </g> </g> <!-- ClanLib&#45;&gt;ALSA --> -<g id="edge118" class="edge"> +<g id="edge109" class="edge"> <title>ClanLib&#45;&gt;ALSA</title> -<path fill="none" stroke="black" d="M1217.57,-755.37C1235.7,-744.55 1260.75,-729.61 1280.56,-717.79"/> -<polygon fill="black" stroke="black" points="1282.45,-720.73 1289.25,-712.6 1278.87,-714.72 1282.45,-720.73"/> +<path fill="none" stroke="black" d="M1356.48,-664.75C1349.41,-662.64 1341.99,-660.53 1335,-658.74 1295.4,-648.57 1285.17,-647.32 1245,-639.74 1197.18,-630.71 1183.4,-636.4 1137,-621.74 1130.21,-619.59 1123.18,-616.74 1116.53,-613.72"/> +<polygon fill="black" stroke="black" points="1117.67,-610.38 1107.14,-609.22 1114.65,-616.7 1117.67,-610.38"/> </g> <!-- ClanLib&#45;&gt;OSS --> -<g id="edge119" class="edge"> +<g id="edge110" class="edge"> <title>ClanLib&#45;&gt;OSS</title> -<path fill="none" stroke="black" d="M1169.62,-755.22C1141.42,-736.85 1095,-702.65 1068.48,-661.74 1014.73,-578.79 1007.72,-544.61 1014.48,-446 1017.16,-407.06 1018.91,-397.29 1026.48,-359 1028.22,-350.22 1030.53,-340.74 1032.77,-332.21"/> -<polygon fill="black" stroke="black" points="1036.19,-332.96 1035.42,-322.39 1029.44,-331.13 1036.19,-332.96"/> +<path fill="none" stroke="black" d="M1429.4,-666.55C1465.1,-657.35 1519.34,-641.72 1564,-621.74 1652.08,-582.33 1677.01,-568.23 1741,-496 1797.82,-431.87 1804.69,-405.48 1824,-322 1829.54,-298.04 1839.41,-289.72 1830,-267 1828,-262.16 1824.96,-257.64 1821.5,-253.57"/> +<polygon fill="black" stroke="black" points="1823.95,-251.07 1814.49,-246.31 1818.92,-255.93 1823.95,-251.07"/> </g> <!-- allegro --> -<g id="node38" class="node"> +<g id="node35" class="node"> <title>allegro</title> -<g id="a_node38"><a xlink:href="https://github.com/liballeg/allegro5/tree/master/addons/audio" xlink:title="allegro"> -<ellipse fill="lightgrey" stroke="black" cx="500.48" cy="-916.74" rx="42.79" ry="18"/> -<text text-anchor="middle" x="500.48" y="-913.04" font-family="Times,serif" font-size="14.00">allegro</text> +<g id="a_node35"><a xlink:href="https://github.com/liballeg/allegro5/tree/master/addons/audio" xlink:title="allegro"> +<ellipse fill="lightgrey" stroke="black" cx="1854" cy="-822.74" rx="42.79" ry="18"/> +<text text-anchor="middle" x="1854" y="-819.04" font-family="Times,serif" font-size="14.00">allegro</text> </a> </g> </g> <!-- allegro&#45;&gt;OSS --> -<g id="edge120" class="edge"> +<g id="edge111" class="edge"> <title>allegro&#45;&gt;OSS</title> -<path fill="none" stroke="black" d="M493.3,-898.86C487.92,-884.69 481.48,-863.75 481.48,-844.74 481.48,-844.74 481.48,-844.74 481.48,-733.74 481.48,-525.3 586.91,-469.76 763.48,-359 836.16,-313.41 939.01,-304.92 996.75,-304.11"/> -<polygon fill="black" stroke="black" points="997.02,-307.61 1006.99,-304.04 996.97,-300.61 997.02,-307.61"/> +<path fill="none" stroke="black" d="M1897.03,-821.58C2042.37,-820.49 2506,-812.19 2506,-750.74 2506,-750.74 2506,-750.74 2506,-639.74 2506,-500.08 2133.16,-309.11 2000,-267 1945.73,-249.84 1880.56,-240.54 1838.5,-235.93"/> +<polygon fill="black" stroke="black" points="1838.64,-232.43 1828.32,-234.86 1837.9,-239.39 1838.64,-232.43"/> </g> <!-- allegro&#45;&gt;PulseAudio --> -<g id="edge122" class="edge"> +<g id="edge113" class="edge"> <title>allegro&#45;&gt;PulseAudio</title> -<path fill="none" stroke="black" d="M543.39,-915.43C834.71,-913.23 2512.23,-898.96 2548.48,-861.74 2636.36,-771.52 2393.31,-650.7 2287.48,-608 2251.32,-593.41 2150.99,-583.3 2081.81,-577.82"/> -<polygon fill="black" stroke="black" points="2081.66,-574.3 2071.42,-577.02 2081.11,-581.28 2081.66,-574.3"/> +<path fill="none" stroke="black" d="M1811.01,-821.76C1578.03,-821.41 474.1,-813.47 389,-694.74 335.07,-619.5 384.51,-581.04 500,-514 530.68,-496.19 620.96,-487.04 685.84,-482.64"/> +<polygon fill="black" stroke="black" points="686.28,-486.12 696.03,-481.98 685.82,-479.14 686.28,-486.12"/> </g> <!-- allegro&#45;&gt;OpenAL --> -<g id="edge121" class="edge"> +<g id="edge112" class="edge"> <title>allegro&#45;&gt;OpenAL</title> -<path fill="none" stroke="black" d="M543.07,-913.62C748.02,-903.39 1632.46,-859.26 1866.49,-847.58"/> -<polygon fill="black" stroke="black" points="1867,-851.06 1876.82,-847.07 1866.65,-844.07 1867,-851.06"/> +<path fill="none" stroke="black" d="M1812.39,-817.95C1681.69,-806.04 1279.23,-769.35 1130.76,-755.82"/> +<polygon fill="black" stroke="black" points="1130.8,-752.31 1120.52,-754.89 1130.16,-759.28 1130.8,-752.31"/> </g> <!-- allegro&#45;&gt;SDL1 --> -<g id="edge124" class="edge"> +<g id="edge114" class="edge"> <title>allegro&#45;&gt;SDL1</title> -<path fill="none" stroke="black" d="M522.06,-900.87C559.24,-875.26 635.49,-822.72 678.39,-793.16"/> -<polygon fill="black" stroke="black" points="680.51,-795.95 686.76,-787.4 676.54,-790.19 680.51,-795.95"/> +<path fill="none" stroke="black" d="M1888.17,-811.61C1972.25,-786.7 2189.52,-722.33 2288.96,-692.86"/> +<polygon fill="black" stroke="black" points="2290.18,-696.15 2298.77,-689.96 2288.19,-689.44 2290.18,-696.15"/> </g> <!-- allegro&#45;&gt;SDL2 --> -<g id="edge125" class="edge"> +<g id="edge115" class="edge"> <title>allegro&#45;&gt;SDL2</title> -<path fill="none" stroke="black" d="M484.48,-899.85C478.89,-894.02 472.71,-887.25 467.48,-880.74 445.59,-853.46 423.45,-819.87 409.17,-797.25"/> -<polygon fill="black" stroke="black" points="412,-795.19 403.73,-788.57 406.07,-798.9 412,-795.19"/> -</g> -<!-- allegro&#45;&gt;OpenSL ES --> -<g id="edge123" class="edge"> -<title>allegro&#45;&gt;OpenSL ES</title> -<path fill="none" stroke="black" d="M474.67,-902.12C437.65,-881.58 369.05,-839.62 324.48,-788.74 307.81,-769.71 294.54,-744.05 286.04,-725"/> -<polygon fill="black" stroke="black" points="289.21,-723.5 282.03,-715.71 282.78,-726.28 289.21,-723.5"/> +<path fill="none" stroke="black" d="M1854,-804.66C1854,-780.08 1854,-734.49 1854,-705.17"/> +<polygon fill="black" stroke="black" points="1857.5,-704.8 1854,-694.8 1850.5,-704.8 1857.5,-704.8"/> </g> <!-- telepathy --> -<g id="node39" class="node"> +<g id="node36" class="node"> <title>telepathy</title> -<ellipse fill="lightgrey" stroke="black" cx="1149.48" cy="-464" rx="54.69" ry="18"/> -<text text-anchor="middle" x="1149.48" y="-460.3" font-family="Times,serif" font-size="14.00">telepathy</text> +<ellipse fill="lightgrey" stroke="black" cx="759" cy="-391" rx="54.69" ry="18"/> +<text text-anchor="middle" x="759" y="-387.3" font-family="Times,serif" font-size="14.00">telepathy</text> </g> <!-- telepathy&#45;&gt;phone modem --> -<g id="edge126" class="edge"> +<g id="edge116" class="edge"> <title>telepathy&#45;&gt;phone modem</title> -<path fill="none" stroke="black" d="M1180.2,-448.96C1209.72,-435.47 1254.74,-414.9 1288.71,-399.37"/> -<polygon fill="black" stroke="black" points="1290.34,-402.48 1297.98,-395.14 1287.43,-396.11 1290.34,-402.48"/> -<text text-anchor="middle" x="1257.48" y="-416.8" font-family="Times,serif" font-size="14.00" fill="red">?</text> -</g> -<!-- telepathy&#45;&gt;? --> -<g id="edge127" class="edge"> -<title>telepathy&#45;&gt;?</title> -<path fill="none" stroke="red" d="M1101.3,-455.43C921.91,-427.21 302,-329.38 282.48,-322 281.09,-321.47 279.69,-320.87 278.31,-320.21"/> -<polygon fill="red" stroke="red" points="279.93,-317.11 269.5,-315.3 276.53,-323.23 279.93,-317.11"/> +<path fill="none" stroke="black" d="M741.65,-373.61C728.34,-361.04 709.76,-343.49 694.72,-329.29"/> +<polygon fill="black" stroke="black" points="696.9,-326.54 687.23,-322.21 692.09,-331.62 696.9,-326.54"/> +<text text-anchor="middle" x="724" y="-343.8" font-family="Times,serif" font-size="14.00" fill="red">?</text> +</g> +<!-- pcaudiolib --> +<g id="node37" class="node"> +<title>pcaudiolib</title> +<g id="a_node37"><a xlink:href="https://github.com/espeak-ng/pcaudiolib" xlink:title="pcaudiolib"> +<ellipse fill="lightgrey" stroke="black" cx="1268" cy="-676.74" rx="58.49" ry="18"/> +<text text-anchor="middle" x="1268" y="-673.04" font-family="Times,serif" font-size="14.00">pcaudiolib</text> +</a> +</g> +</g> +<!-- pcaudiolib&#45;&gt;ALSA --> +<g id="edge124" class="edge"> +<title>pcaudiolib&#45;&gt;ALSA</title> +<path fill="none" stroke="black" d="M1254.84,-659.16C1248.39,-652.12 1240.06,-644.46 1231,-639.74 1193.28,-620.08 1177.4,-635.04 1137,-621.74 1130.3,-619.53 1123.36,-616.68 1116.77,-613.68"/> +<polygon fill="black" stroke="black" points="1117.98,-610.38 1107.45,-609.23 1114.97,-616.69 1117.98,-610.38"/> +</g> +<!-- pcaudiolib&#45;&gt;OSS --> +<g id="edge125" class="edge"> +<title>pcaudiolib&#45;&gt;OSS</title> +<path fill="none" stroke="black" d="M1311.45,-664.52C1319.59,-662.52 1328.04,-660.51 1336,-658.74 1419.98,-640.08 1453.75,-668.44 1526,-621.74 1550.57,-605.86 1540.72,-585.71 1564,-568 1582.8,-553.7 1592.69,-560.18 1614,-550 1655.75,-530.06 1671.96,-530.31 1703,-496 1760.47,-432.45 1762.95,-404.52 1786,-322 1791.73,-301.49 1793.91,-277.45 1794.7,-259.38"/> +<polygon fill="black" stroke="black" points="1798.2,-259.35 1795.03,-249.24 1791.21,-259.13 1798.2,-259.35"/> +</g> +<!-- pcaudiolib&#45;&gt;PulseAudio --> +<g id="edge126" class="edge"> +<title>pcaudiolib&#45;&gt;PulseAudio</title> +<path fill="none" stroke="black" d="M1224.8,-664.58C1216.89,-662.59 1208.7,-660.58 1201,-658.74 1127.47,-641.22 1105.98,-647.72 1035,-621.74 970.46,-598.12 954.9,-588.55 898,-550 877.65,-536.21 877.28,-526.31 856,-514 842.15,-505.99 826.16,-499.36 811.12,-494.1"/> +<polygon fill="black" stroke="black" points="812,-490.71 801.41,-490.85 809.78,-497.34 812,-490.71"/> </g> </g> </svg>