Pile audio Linux

Un article de Wikipédia, l'encyclopédie libre.

La pile audio Linux (Linux audio stack ou Linux sound stack) désigne l’ensemble des composants logiciels qui interviennent dans le processus sonore d’une distribution Linux.

Présentation générale[modifier | modifier le code]

La pile audio de Linux se présente de la façon suivante, avec les composants des couches supérieures appelant des fonctions des composants des couches inférieures :

Détail des composants et relations[modifier | modifier le code]

Les différentes API et services et leur rôles[modifier | modifier le code]

La première interface de programmation (API) unifiée pour gérer les processeurs sonores sous UniX est OSS (de l'anglais : Open Sound System, signifiant système sonore ouvert). Elle a été ensuite complémentée par un système plus évolué, ALSA (de l'anglais : Advanced Linux Sound Architecture architecture sonore avancée de Linux), puis, pour les périphériques Firewire, FFADO (en) (de l'anglais : Free FireWire Audio Drivers signifiant Pilotes audio libre FireWire) : ce sont eux qui communiquent directement avec le matériel.

PortAudio, une bibliothèque sonore multiplateforme qui fut utilisée par un grand nombre d'applications (dont Audacity[1] ou VLC, qui remplace par PulseAudio en 2012[2]) jusqu'aux début des années 2010, elle dépend de libsnd pour produire du son, et a été remplacé progressivement par PulseAudio, ou par son backend PulseAudio. Son développement s'est arrêté en 2011.

Enlightened Sound Daemon (en), développé initialement pour le bureau Enlightenment, est venu apporter la possibilité de mixer plusieurs sources audio.

Simple DirectMedia Layer (SDL), d'abord développé pour les jeux vidéos afin d'avoir un accès relativement bas niveaux aux périphériques via une API plus haut niveau, pouvant également être utilisé pour tout type d'application multimédia.

JACK (de l'anglais : JACK Audio Connection Kit, signifiant, Kit de connxion audio JACK) est une API orientée vers l'audio professionnel à faible latence, utilisée pour la production de musique, il permet également de mixer l'audio. Il passe également par les API ALSA, OSS pour la communication avec puces et cartes sonores et FFADO avec les périphériques sonores en FireWire.

PulseAudio a ensuite été créé, reprenant les principes ESD pour le mixage audio, et généralisé l'unification et le mixage de l'audio en environnement de bureau ou pour les jeux et applications multimédia. Il est chargé de mixer le son, et de communiquer avec les entrées/sorties via les API ALSA ou OSS.

L'API GStreamer est quant à elle dédiée aux flux multimédia, permettant d'encoder/décoder audio et vidéo est venu s'ajouter.

OpenAL, à l'origine développée pour Microsoft Windows, est une API sonore 3D, devenu un standard multiplateforme, à l'image de l'API graphique 3D OpenGL (à l'origine développé pour IRIX, le système UNIX de Silicon Graphics) ou de son successeur Vulkan. Il permet de spatialiser le son, comme le font OpenGL et Vulkan pour l'image.

Libao est une api multiplateforme, développée par Xiph.org de 2003 à 2014, permettant d'envoyer des flux sonores vers les API de sons des différents système.

Phonon peut intervenir et ajouter une couche d’abstraction en se situant entre une application KDE et une bibliothèque multimédia (par exemple : GStreamer).

PulseAudio et JACK ont tous les deux développé des ponts entre les services pour permettre d'utiliser simultanément les deux services, mais leur manipulation reste complexe pour l'utilisateur. Il est nécessaire d'avoir un gestionnaire de session différents pour chacun d'eux pour faire fonctionner le pontage.

Unification avec Pipewire[modifier | modifier le code]

PipeWire, en cours de développement (en ), a pour but d'unifier l'API multimédia GStreamer avec les deux API audio, Jack et PulseAudio, et de les remplacer à terme. Cette bibliothèque reprend les principes de ces différents services et bibliothèque. Elle permet de mixer différentes entrée et sorties, audio et vidéo, indépendamment de leurs caractéristiques techniques, et d'avoir une API unifiée pour les applications. Elle intègre à la fois une API et une ABI, compatibles avec ces 3 bibliothèques, afin de permettre aux applications de continuer à fonctionner. Durant la phase de transition, elle retransmet à ces services les fonctionnalités qui ne lui sont pas encore intégrées, en prévision de leurs remplacements.

Notes et références[modifier | modifier le code]

  1. (en) « Audacity PortAudio v19 », sur Audacityteam.org
  2. « PortAudio », sur wiki.videolan.org

Articles connexes[modifier | modifier le code]

Sous-systèmes son[modifier | modifier le code]

  • ALSA (Advanced Linux Sound Architecture)
  • FFADO (en) (Free FireWire Audio Drivers)
  • OSS (Open Sound System)

Serveurs de sons[modifier | modifier le code]

Bibliothèques logicielles de manipulation de sons[modifier | modifier le code]

Divers[modifier | modifier le code]

Liens externes[modifier | modifier le code]