logo

blog

My website can't be that messy, right? git clone https://hacktivis.me/git/blog.git

linux-audio-output-current.dot (4213B)


  1. digraph "Linux Audio Output APIs (current-only)" {
  2. node [ shape=ellipse style=filled ];
  3. label="Linux Audio Output APIs (current-only)
  4. CC-BY 4.0 © 2020-2021 Haelwenn (lanodan) Monnier
  5. https://hacktivis.me/articles/linux-audio-output";
  6. labelURL="https://hacktivis.me/articles/linux-audio-output"
  7. subgraph cluster_legend {
  8. label="Legend"
  9. server [ shape=octagon fillcolor=orange ];
  10. driver [ shape=hexagon fillcolor=yellow ];
  11. hardware [ shape=box fillcolor=cyan ];
  12. }
  13. { rank=same "sound card" "phone modem" bluetooth }
  14. "sound card" [ shape=box fillcolor=cyan ];
  15. "phone modem" [ shape=box fillcolor=cyan ];
  16. bluetooth [ shape=box fillcolor=cyan ];
  17. portaudio [ URL="https://app.assembla.com/spaces/portaudio/git/source/master/src/hostapi/" ];
  18. portaudio -> ALSA;
  19. portaudio -> JACK;
  20. // through a patch
  21. portaudio -> sndio;
  22. // https://rudd-o.com/linux-and-free-software/how-pulseaudio-works
  23. PulseAudio [ shape=octagon fillcolor=orange URL="https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules/" ];
  24. PulseAudio -> ALSA;
  25. PulseAudio -> "sound card" [ color=green ];
  26. PulseAudio -> JACK;
  27. PulseAudio -> bluez;
  28. PulseAudio -> ofono;
  29. "X11 bell" -> PulseAudio;
  30. PipeWire [ shape=octagon fillcolor=orange URL="http://pipewire.org/" ];
  31. PulseAudio -> PipeWire [ dir=both ];
  32. ALSA -> PipeWire [ dir=both ];
  33. JACK -> PipeWire [ dir=both ];
  34. PipeWire -> bluez;
  35. gstreamer -> PipeWire;
  36. ofono [ shape=hexagon fillcolor=yellow ];
  37. ofono -> "phone modem" [ color=green ];
  38. bluez [ label="BlueZ" shape=hexagon fillcolor=yellow ];
  39. ALSA -> bluez;
  40. bluez -> bluetooth [ color=green ];
  41. sox [ URL="http://sox.sourceforge.net/Docs/Features" ];
  42. sox -> libao;
  43. sox -> PulseAudio [ dir=both ];
  44. sox -> ALSA;
  45. sox -> sndio;
  46. libao [ URL="https://www.xiph.org/ao/" ];
  47. libao -> ALSA;
  48. libao -> PulseAudio;
  49. libao -> NAS;
  50. libao -> RoarAudio;
  51. libao -> sndio;
  52. RoarAudio [ URL="http://roaraudio.keep-cool.org/" ];
  53. RoarAudio -> sndio;
  54. RoarAudio -> PulseAudio;
  55. // Probably incomplete, need some proper documentation
  56. libcanberra [ URL="http://git.0pointer.net/libcanberra.git/tree/src/driver-order.c" ];
  57. libcanberra -> PulseAudio;
  58. libcanberra -> ALSA;
  59. libcanberra -> gstreamer;
  60. sndio [ shape=octagon fillcolor=orange URL="http://www.sndio.org/" ];
  61. sndio -> ALSA [ dir=both ];
  62. PulseAudio -> sndio;
  63. gstreamer -> sndio;
  64. OpenAL [ URL="https://www.openal-soft.org/" ];
  65. OpenAL -> PulseAudio;
  66. OpenAL -> ALSA;
  67. OpenAL -> SoundIO;
  68. OpenAL -> portaudio;
  69. OpenAL -> JACK;
  70. OpenAL -> sndio;
  71. SoundIO [ URL="http://libsound.io/" ];
  72. SoundIO -> JACK;
  73. SoundIO -> PulseAudio;
  74. SoundIO -> ALSA;
  75. RtAudio [ URL="https://www.music.mcgill.ca/~gary/rtaudio/apinotes.html" ];
  76. RtAudio -> ALSA;
  77. RtAudio -> JACK;
  78. RtAudio -> PulseAudio;
  79. // This shit is the hardest to find any documentation for
  80. JUCE -> ALSA;
  81. JUCE -> JACK;
  82. ALSA [ shape=hexagon URL="https://alsa-project.org/wiki/Asoundrc#Plugins" fillcolor=yellow ];
  83. ALSA -> "sound card" [ color=green ];
  84. ALSA -> PulseAudio;
  85. ALSA -> JACK [ dir=both ];
  86. // https://wiki.libsdl.org/FAQUsingSDL
  87. SDL2 [ label="libSDL-2.0" URL="https://hg.libsdl.org/SDL/file/355a4f94a782" ];
  88. SDL2 -> ALSA;
  89. SDL2 -> JACK;
  90. SDL2 -> NAS;
  91. // Maybe SDL2 -> "NaCL";
  92. SDL2 -> PulseAudio;
  93. SDL2 -> sndio;
  94. // And then where the hell does it goes?
  95. NAS [ shape=octagon fillcolor=orange label="Network Audio System/Server" URL="http://radscan.com/nas.html" ]
  96. gstreamer -> ALSA;
  97. gstreamer -> JACK;
  98. gstreamer -> PulseAudio;
  99. phonon -> gstreamer;
  100. phonon -> VLC;
  101. phonon -> PulseAudio;
  102. ClanLib [ URL="https://github.com/sphair/ClanLib/tree/master/Sources/Sound/Platform/Linux" ];
  103. ClanLib -> ALSA;
  104. allegro [ URL="https://github.com/liballeg/allegro5/tree/master/addons/audio" ];
  105. allegro -> OpenAL;
  106. allegro -> PulseAudio;
  107. allegro -> SDL2;
  108. telepathy -> "phone modem" [ label="?" fontcolor=red ];
  109. VLC [ URL="https://code.videolan.org/videolan/vlc/-/tree/master/modules/audio_output" ];
  110. VLC -> ALSA;
  111. VLC -> JACK;
  112. VLC -> PulseAudio;
  113. VLC -> sndio;
  114. pcaudiolib [ URL="https://github.com/espeak-ng/pcaudiolib" ];
  115. pcaudiolib -> ALSA;
  116. pcaudiolib -> PulseAudio;
  117. JACK [ shape=octagon fillcolor=orange URL="https://jackaudio.org/" ];
  118. }