URL: https://linuxfr.org/news/sortie-de-pulseaudio-2-0 Title: Sortie de PulseAudio 2.0 Authors: FluffyHamster Anonyme, bubar🦥, Benoît, baud123, PierreLM, liberforce, claudex, solsTiCe, Enjolras, patrick_g, Nils Ratusznik, Nÿco, _PhiX_, Benoît Sibaud, Strash, moi1392 et Bruno Michel Date: 2012年03月16日T14:06:18+01:00 License: CC By-SA Tags: pulseaudio et lennart_poettering Score: 64 [PulseAudio](http://www.freedesktop.org/wiki/Software/PulseAudio) est un serveur de son multiplate-forme en réseau, publié sous licence [LGPL 2.1](http://www.gnu.org/licenses/lgpl-2.1.html). Son développement a été commencé par Lennart Poettering, ce développeur est aujourd'hui reconnu pour ses nombreuses contributions à l'écosystème Linux, même si celles-ci ne font pas toujours l'unanimité. Le rôle principal d'un serveur PulseAudio au sein d'un système d'exploitation est d'effectuer le [mixage des différents canaux audio](http://fr.wikipedia.org/wiki/Mixage_audio) en provenance des diverses applications et sources d'entrée, puis leur lecture sur des périphériques audio tels que des cartes sons locales ou distantes.  Merci à solstice, patrick_g, liberforce, Nils Ratusznik, PierreLM, moi1392, tankey, Bruno, Xavier Claude, Strash, Benoît et Enjolras pour avoir participé à la rédaction de cet article. ---- [À propos de PulseAudio](http://www.freedesktop.org/wiki/Software/PulseAudio/About) [PulseAudio sur Wikipédia](http://fr.wikipedia.org/wiki/PulseAudio) ["When PulseAudio and when not" une reflexion sur PA vs Jack par Lennart Poettering](http://0pointer.de/blog/projects/when-pa-and-when-not.html) ["Conception of PulseAudio" Un fils de discussion sur la vision du projet par le public](http://lists.freedesktop.org/archives/pulseaudio-discuss/2012-April/013295.html) [L'annonce de la version 2.0](http://www.freedesktop.org/wiki/Software/PulseAudio/Notes/2.0) ---- # État des lieux # ## Principales caractéristiques ## * Mixage des différents flux audio, avec contrôle du volume par application * Routage des flux audio, avec par exemple la lecture d'un micro d'une carte son sur la sortie d'une autre carte son * Transparence réseau, permettant à une application de lire un flux audio sur une machine distante * Abstraction logicielle, de par la possibilité de jouer des flux en provenance de multiples API audio au travers d'adaptateurs ALSA, OSS, aRTS, Jack... * Abstraction matérielle grâce à l'utilisation des pilotes audio ALSA ## Rappel des fonctionnalités ## * Contrôle du volume sonore par application * Combinaison de multiples cartes son en une seule * Auto-détection des périphériques (exemple : carte son USB, oreillette bluetooth) * Mode « pass through » pour les sorties sur HDMI ou S/PDIF * Diffusion de flux audio en A2DP, DLNA, RTP * Réception de flux à partir de serveurs PulseAudio, AirTunes ou de flux RTP * Synchronisation de multiples flux de lecture, notamment au travers d'un réseau * Gestion précise de la latence pour la lecture ou l'enregistrement * Conversion d'échantillon intégrée, possibilités de ré-échantillonnage * Architecture de greffons extensible avec gestion de modules pouvant être chargés dynamiquement * Architecture mémoire « zero-copy » pour la gestion des ressources lorsqu'aucun ré-échantillonnage n'est nécessaire  ## PulseAudio ou pas ? PulseAudio a été conçu dans l'optique d'une utilisation sur un ordinateur de bureau. Les problématiques spécifiques à cet usage sont un environnement matériel changeant (ajout / suppression de périphérique audio « à chaud »), un contrôle par application du volume et de la sortie audio, une utilisation CPU et mémoire réduite tout en gardant une latence adaptée à la situation, et une gestion de l'énergie efficace. Ce n'est pas un remplaçant d'[ALSA](http://fr.wikipedia.org/wiki/ALSA "Définition Wikipédia"), dont il utilise la pile de pilotes pour accéder au matériel audio, ainsi qu'une partie de ses bibliothèques pour communiquer avec certaines applications. ALSA dispose bien d'un mixeur nommé [Dmix](http://fr.wikipedia.org/wiki/Dmix "Définition Wikipédia"), mais ses fonctionnalités sont terriblement limitées. Pas de gestion dynamique des périphériques audio, de transparence réseau... Ce n'est pas non plus un concurrent de [JACK](http://fr.wikipedia.org/wiki/JACK_Audio_Connection_Kit "Définition Wikipédia"), car ces deux projets évoluent dans des environnements aux contraintes diamétralement opposées. PulseAudio s'occupant des problématiques complexes rencontrées sur un ordinateur personnel dit _« de bureau »_ (politique de routage, mise à disposition aisée des ressources matérielles et réseau...) tandis que Jack s'occupe uniquement de routage et propose cela en très faible latence si nécessaire, avec contrôle complet mais manuel. Jack et PulseAudio ne sont donc pas concurrents, mais complémentaires en termes de réponse aux besoins. En outre, depuis peu, PA et JACK peuvent travailler de concert sur un même système pour répondre à certaines problématiques. JACK prend le pas dans la gestion audio, et lance PA en tant qu'un de ses clients. Ceci permet, par exemple, de gérer des applications incompatibles avec JACK en redirigeant le trafic vers PA. Pour plus de détails sur la relation entre les deux projets [Lennart a écrit un article](http://0pointer.de/blog/projects/when-pa-and-when-not.html) sur le sujet. ## Architecture ## On peut voir sur ce schéma que PulseAudio fait la liaison entre les applications et les pilotes audio ALSA. Il fonctionne en espace utilisateur et un processus est lancé par utilisateur.  # PulseAudio v2.0 # ## Principales nouveautés ## **Abandon du support de ESD** ([Enlightened Sound Daemon](http://fr.wikipedia.org/wiki/en:Enlightened_Sound_Daemon "Définition Wikipédia")) au profit d'une approche plus native. PulseAudio pouvait jusqu’à présent être utilisé comme remplaçant « clé en main » d'ESD, et bénéficier instantanément de la compatibilité avec les applications GNOME et Enlightenment. Avec la disparition de ce module, les applications devront utiliser exclusivement les connecteurs natifs tels que la libpulse ou libpulse alsa. **Travail sur ORC** [The Oil Runtime Compiler](http://code.entropywave.com/orc/) est une bibliothèque qui fournit un [compilateur à la volée](http://fr.wikipedia.org/wiki/compilateur à la volée "Définition Wikipédia") ainsi qu'un langage permettant d'écrire d'une manière générique du code optimisé pour SIMD. ORC est utilisé dans diverses parties de PulseAudio pour améliorer les performances CPU lors des opérations les plus coûteuses, telles le ré-échantillonnage ou le mixage. **Amélioration de la qualité de la lecture sur des périphériques A2DP** Les appareils bluetooth comme les téléphones ou ordinateurs portables peuvent diffuser un flux audio au travers du protocole [A2DP](http://fr.wikipedia.org/wiki/A2DP "Définition Wikipédia"). Une amélioration de la qualité de diffusion est à noter grâce au travail effectué. **Amélioration de la qualité du module de suppression d'écho** Cette fonctionnalité est notamment utilisée lors de la lecture sur un périphérique d'entrée tel qu'un micro lors d'une conversation vocale. PulseAudio a amélioré la suppression d’écho grâce à une fonctionnalité de la bibliothèque [WebRTC AudioProcessing](http://freedesktop.org/software/pulseaudio/webrtc-audio-processing/), qui est une nouvelle dépendance de la version 2.0. **Détection des prises jack utilisées** PulseAudio avec un noyau linux récent peut maintenant détecter les matériels (micros, écouteurs enceintes...) connectés sur les prises jack d'un périphérique. Cela permet une meilleure sélection automatique des canaux des cartes sons à utiliser par défaut, ou encore par exemple le changement de canal si une nouvelle paire d'écouteurs est branchée. En outre, les niveaux peuvent désormais être réglés séparément pour chacune des sorties jack. À l'avenir, il est prévu de permettre de configurer simplement des sorties multi-canaux. **Meilleure sélection du taux d’échantillonnage** Jusqu’à présent PulseAudio initialisait chaque périphérique audio en utilisant un taux d’échantillonnage fixe (en général 44100 Hz ou 48000 Hz) puis ré-échantillonnait tous les flux qui ne correspondaient pas à ce taux. Dorénavant, PulseAudio pourra changer dynamiquement le taux d’échantillonnage d'un périphérique si celui-ci le gère, pour mieux correspondre aux taux des différents fluxs joués, évitant ou réduisant ainsi les opérations de ré-échantillonnage auparavant nécessaires. Cette fonction devrait apporter des économies d'énergie et de cycles CPU. * La prise en charge du noyau HURD fonctionne à nouveau * Gestion des sorties audio Surround virtuelles * Gestion des sorties audio Xen para-virtualisées ## Changement dans le cycle des sorties ## Après plusieurs années de versions 0.9.xx au rythme de parution très irrégulier, la version 1.0 de PulseAudio a été publiée en septembre 2011, suivie un mois plus tard par la version 1.1. À cette occasion le format de numérotation des versions a évolué. Elles sont désormais numérotées X.Y, où X est incrémenté pour une version apportant des changements significatifs, et Y pour des correctifs. En outre, il a été décidé de produire des versions majeures à un rythme plus régulier, avec un objectif de 4 mois (le cycle de la 2.0 a duré 6 mois), pour satisfaire les distributions qui utilisent maintenant massivement PulseAudio. ## Changements à venir ## * Ré-échantillonnage avec SSE3 * Plus de fonctionnalités basées sur la détection des prises Jack