logo

blog

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

linux-audio-output.dot (5299B)


  1. digraph "Linux Audio Output APIs (available code)" {
  2. node [ shape=ellipse style=filled ];
  3. label="Linux Audio Output APIs (available code)
  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. portaudio -> OSS;
  21. portaudio -> asihpi;
  22. asihpi [ shape=hexagon fillcolor=yellow ];
  23. asihpi -> "sound card" [ color=green ];
  24. // through a patch
  25. portaudio -> sndio;
  26. // https://rudd-o.com/linux-and-free-software/how-pulseaudio-works
  27. PulseAudio [ shape=octagon fillcolor=orange URL="https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules/" ];
  28. PulseAudio -> ALSA;
  29. PulseAudio -> "sound card" [ color=green ];
  30. PulseAudio -> OSS [ dir=both ];
  31. PulseAudio -> JACK;
  32. PulseAudio -> bluez;
  33. PulseAudio -> ofono;
  34. "X11 bell" -> PulseAudio;
  35. PipeWire [ shape=octagon fillcolor=orange URL="http://pipewire.org/" ];
  36. PulseAudio -> PipeWire [ dir=both ];
  37. ALSA -> PipeWire [ dir=both ];
  38. JACK -> PipeWire [ dir=both ];
  39. PipeWire -> bluez;
  40. gstreamer -> PipeWire;
  41. ofono [ shape=hexagon fillcolor=yellow ];
  42. ofono -> "phone modem" [ color=green ];
  43. bluez [ label="BlueZ" shape=hexagon fillcolor=yellow ];
  44. ALSA -> bluez;
  45. bluez -> bluetooth [ color=green ];
  46. sox [ URL="http://sox.sourceforge.net/Docs/Features" ];
  47. sox -> libao;
  48. sox -> PulseAudio [ dir=both ];
  49. sox -> ALSA;
  50. sox -> sndio;
  51. libao [ URL="https://www.xiph.org/ao/" ];
  52. libao -> OSS;
  53. libao -> ALSA;
  54. libao -> aRts;
  55. libao -> PulseAudio;
  56. libao -> ESD;
  57. libao -> NAS;
  58. libao -> RoarAudio;
  59. libao -> sndio;
  60. RoarAudio [ URL="http://roaraudio.keep-cool.org/" ];
  61. OSS -> RoarAudio;
  62. RoarAudio -> sndio;
  63. RoarAudio -> PulseAudio;
  64. RoarAudio -> ESD;
  65. RoarAudio -> aRts;
  66. // Probably incomplete, need some proper documentation
  67. ESD [ shape=octagon fillcolor=orange ];
  68. ESD -> OSS;
  69. ESD -> ALSA;
  70. libcanberra [ URL="http://git.0pointer.net/libcanberra.git/tree/src/driver-order.c" ];
  71. libcanberra -> PulseAudio;
  72. libcanberra -> OSS;
  73. libcanberra -> ALSA;
  74. libcanberra -> gstreamer;
  75. sndio [ shape=octagon fillcolor=orange URL="http://www.sndio.org/" ];
  76. sndio -> ALSA [ dir=both ];
  77. PulseAudio -> sndio;
  78. gstreamer -> sndio;
  79. OpenAL [ URL="https://www.openal-soft.org/" ];
  80. OpenAL -> PulseAudio;
  81. OpenAL -> ALSA;
  82. OpenAL -> OSS;
  83. OpenAL -> SoundIO;
  84. OpenAL -> portaudio;
  85. OpenAL -> JACK;
  86. OpenAL -> sndio;
  87. SoundIO [ URL="http://libsound.io/" ];
  88. SoundIO -> JACK;
  89. SoundIO -> PulseAudio;
  90. SoundIO -> ALSA;
  91. RtAudio [ URL="https://www.music.mcgill.ca/~gary/rtaudio/apinotes.html" ];
  92. RtAudio -> OSS [ label="OSS 4.0+" ];
  93. RtAudio -> ALSA;
  94. RtAudio -> JACK;
  95. RtAudio -> PulseAudio;
  96. // This shit is the hardest to find any documentation for
  97. JUCE -> ALSA;
  98. JUCE -> JACK;
  99. ALSA [ shape=hexagon URL="https://alsa-project.org/wiki/Asoundrc#Plugins" fillcolor=yellow ];
  100. ALSA -> "sound card" [ color=green ];
  101. ALSA -> PulseAudio;
  102. ALSA -> JACK [ dir=both ];
  103. ALSA -> aRts;
  104. OSS -> ALSA;
  105. OSS [ shape=hexagon fillcolor=yellow ];
  106. OSS -> "sound card" [ color=green fontcolor=green label="third-party drivers from opensound.com" ];
  107. // OSS -> "sound card"; Got removed in the linux kernel
  108. // https://wiki.libsdl.org/FAQUsingSDL
  109. SDL1 [ label="libSDL-1.2" URL="https://hg.libsdl.org/SDL/file/fba40d9f4a73/src/audio" ];
  110. SDL1 -> ALSA;
  111. SDL1 -> aRts;
  112. SDL1 -> ESD;
  113. SDL1 -> NAS;
  114. SDL1 -> OSS;
  115. SDL1 -> PulseAudio;
  116. SDL2 [ label="libSDL-2.0" URL="https://hg.libsdl.org/SDL/file/355a4f94a782" ];
  117. SDL2 -> ALSA;
  118. SDL2 -> aRts;
  119. SDL2 -> ESD;
  120. SDL2 -> FusionSound [ color=red ];
  121. SDL2 -> JACK;
  122. SDL2 -> NAS;
  123. // Maybe SDL2 -> "NaCL";
  124. SDL2 -> OSS;
  125. SDL2 -> PulseAudio;
  126. SDL2 -> sndio;
  127. FusionSound [ label="DirectFB/FusionSound\n[dead]" fillcolor=red ];
  128. // And then where the hell does it goes?
  129. NAS [ shape=octagon fillcolor=orange label="Network Audio System/Server" URL="http://radscan.com/nas.html" ]
  130. gstreamer -> ALSA;
  131. gstreamer -> OSS;
  132. gstreamer -> JACK;
  133. gstreamer -> PulseAudio;
  134. phonon -> gstreamer;
  135. phonon -> VLC;
  136. phonon -> PulseAudio;
  137. ClanLib [ URL="https://github.com/sphair/ClanLib/tree/master/Sources/Sound/Platform/Linux" ];
  138. ClanLib -> ALSA;
  139. ClanLib -> OSS;
  140. allegro [ URL="https://github.com/liballeg/allegro5/tree/master/addons/audio" ];
  141. allegro -> OSS;
  142. allegro -> OpenAL;
  143. allegro -> PulseAudio;
  144. allegro -> SDL1;
  145. allegro -> SDL2;
  146. telepathy -> "phone modem" [ label="?" fontcolor=red ];
  147. VLC [ URL="https://code.videolan.org/videolan/vlc/-/tree/master/modules/audio_output" ];
  148. VLC -> ALSA;
  149. VLC -> JACK;
  150. VLC -> OSS;
  151. VLC -> PulseAudio;
  152. VLC -> sndio;
  153. pcaudiolib [ URL="https://github.com/espeak-ng/pcaudiolib" ];
  154. pcaudiolib -> ALSA;
  155. pcaudiolib -> OSS;
  156. pcaudiolib -> PulseAudio;
  157. JACK [ shape=octagon fillcolor=orange URL="https://jackaudio.org/" ];
  158. JACK -> OSS;
  159. }