Pile audio Linux

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

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

Les différentes API et services et leur rôles

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

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

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

Articles connexes

Sous-systèmes son

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

Serveurs de sons

Bibliothèques logicielles de manipulation de sons

Divers

Liens externes

  • Portail GNU/Linux
  • Portail des logiciels libres
  • Portail de l’informatique
  • Portail de la musique
Cet article est issu de Wikipedia. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.