linux-audio-output.dot (5299B)
- digraph "Linux Audio Output APIs (available code)" {
- node [ shape=ellipse style=filled ];
- label="Linux Audio Output APIs (available code)
- CC-BY 4.0 © 2020-2021 Haelwenn (lanodan) Monnier
- https://hacktivis.me/articles/linux-audio-output";
- labelURL="https://hacktivis.me/articles/linux-audio-output"
- subgraph cluster_legend {
- label="Legend"
- server [ shape=octagon fillcolor=orange ];
- driver [ shape=hexagon fillcolor=yellow ];
- hardware [ shape=box fillcolor=cyan ];
- }
- { rank=same "sound card" "phone modem" bluetooth }
- "sound card" [ shape=box fillcolor=cyan ];
- "phone modem" [ shape=box fillcolor=cyan ];
- bluetooth [ shape=box fillcolor=cyan ];
- portaudio [ URL="https://app.assembla.com/spaces/portaudio/git/source/master/src/hostapi/" ];
- portaudio -> ALSA;
- portaudio -> JACK;
- portaudio -> OSS;
- portaudio -> asihpi;
- asihpi [ shape=hexagon fillcolor=yellow ];
- asihpi -> "sound card" [ color=green ];
- // through a patch
- portaudio -> sndio;
- // https://rudd-o.com/linux-and-free-software/how-pulseaudio-works
- PulseAudio [ shape=octagon fillcolor=orange URL="https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules/" ];
- PulseAudio -> ALSA;
- PulseAudio -> "sound card" [ color=green ];
- PulseAudio -> OSS [ dir=both ];
- PulseAudio -> JACK;
- PulseAudio -> bluez;
- PulseAudio -> ofono;
- "X11 bell" -> PulseAudio;
- PipeWire [ shape=octagon fillcolor=orange URL="http://pipewire.org/" ];
- PulseAudio -> PipeWire [ dir=both ];
- ALSA -> PipeWire [ dir=both ];
- JACK -> PipeWire [ dir=both ];
- PipeWire -> bluez;
- gstreamer -> PipeWire;
- ofono [ shape=hexagon fillcolor=yellow ];
- ofono -> "phone modem" [ color=green ];
- bluez [ label="BlueZ" shape=hexagon fillcolor=yellow ];
- ALSA -> bluez;
- bluez -> bluetooth [ color=green ];
- sox [ URL="http://sox.sourceforge.net/Docs/Features" ];
- sox -> libao;
- sox -> PulseAudio [ dir=both ];
- sox -> ALSA;
- sox -> sndio;
- libao [ URL="https://www.xiph.org/ao/" ];
- libao -> OSS;
- libao -> ALSA;
- libao -> aRts;
- libao -> PulseAudio;
- libao -> ESD;
- libao -> NAS;
- libao -> RoarAudio;
- libao -> sndio;
- RoarAudio [ URL="http://roaraudio.keep-cool.org/" ];
- OSS -> RoarAudio;
- RoarAudio -> sndio;
- RoarAudio -> PulseAudio;
- RoarAudio -> ESD;
- RoarAudio -> aRts;
- // Probably incomplete, need some proper documentation
- ESD [ shape=octagon fillcolor=orange ];
- ESD -> OSS;
- ESD -> ALSA;
- libcanberra [ URL="http://git.0pointer.net/libcanberra.git/tree/src/driver-order.c" ];
- libcanberra -> PulseAudio;
- libcanberra -> OSS;
- libcanberra -> ALSA;
- libcanberra -> gstreamer;
- sndio [ shape=octagon fillcolor=orange URL="http://www.sndio.org/" ];
- sndio -> ALSA [ dir=both ];
- PulseAudio -> sndio;
- gstreamer -> sndio;
- OpenAL [ URL="https://www.openal-soft.org/" ];
- OpenAL -> PulseAudio;
- OpenAL -> ALSA;
- OpenAL -> OSS;
- OpenAL -> SoundIO;
- OpenAL -> portaudio;
- OpenAL -> JACK;
- OpenAL -> sndio;
- SoundIO [ URL="http://libsound.io/" ];
- SoundIO -> JACK;
- SoundIO -> PulseAudio;
- SoundIO -> ALSA;
- RtAudio [ URL="https://www.music.mcgill.ca/~gary/rtaudio/apinotes.html" ];
- RtAudio -> OSS [ label="OSS 4.0+" ];
- RtAudio -> ALSA;
- RtAudio -> JACK;
- RtAudio -> PulseAudio;
- // This shit is the hardest to find any documentation for
- JUCE -> ALSA;
- JUCE -> JACK;
- ALSA [ shape=hexagon URL="https://alsa-project.org/wiki/Asoundrc#Plugins" fillcolor=yellow ];
- ALSA -> "sound card" [ color=green ];
- ALSA -> PulseAudio;
- ALSA -> JACK [ dir=both ];
- ALSA -> aRts;
- OSS -> ALSA;
- OSS [ shape=hexagon fillcolor=yellow ];
- OSS -> "sound card" [ color=green fontcolor=green label="third-party drivers from opensound.com" ];
- // OSS -> "sound card"; Got removed in the linux kernel
- // https://wiki.libsdl.org/FAQUsingSDL
- SDL1 [ label="libSDL-1.2" URL="https://hg.libsdl.org/SDL/file/fba40d9f4a73/src/audio" ];
- SDL1 -> ALSA;
- SDL1 -> aRts;
- SDL1 -> ESD;
- SDL1 -> NAS;
- SDL1 -> OSS;
- SDL1 -> PulseAudio;
- SDL2 [ label="libSDL-2.0" URL="https://hg.libsdl.org/SDL/file/355a4f94a782" ];
- SDL2 -> ALSA;
- SDL2 -> aRts;
- SDL2 -> ESD;
- SDL2 -> FusionSound [ color=red ];
- SDL2 -> JACK;
- SDL2 -> NAS;
- // Maybe SDL2 -> "NaCL";
- SDL2 -> OSS;
- SDL2 -> PulseAudio;
- SDL2 -> sndio;
- FusionSound [ label="DirectFB/FusionSound\n[dead]" fillcolor=red ];
- // And then where the hell does it goes?
- NAS [ shape=octagon fillcolor=orange label="Network Audio System/Server" URL="http://radscan.com/nas.html" ]
- gstreamer -> ALSA;
- gstreamer -> OSS;
- 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;
- ClanLib -> OSS;
- allegro [ URL="https://github.com/liballeg/allegro5/tree/master/addons/audio" ];
- allegro -> OSS;
- allegro -> OpenAL;
- allegro -> PulseAudio;
- allegro -> SDL1;
- allegro -> SDL2;
- telepathy -> "phone modem" [ label="?" fontcolor=red ];
- VLC [ URL="https://code.videolan.org/videolan/vlc/-/tree/master/modules/audio_output" ];
- VLC -> ALSA;
- VLC -> JACK;
- VLC -> OSS;
- VLC -> PulseAudio;
- VLC -> sndio;
- pcaudiolib [ URL="https://github.com/espeak-ng/pcaudiolib" ];
- pcaudiolib -> ALSA;
- pcaudiolib -> OSS;
- pcaudiolib -> PulseAudio;
- JACK [ shape=octagon fillcolor=orange URL="https://jackaudio.org/" ];
- JACK -> OSS;
- }