URL: https://linuxfr.org/news/pulseaudio-6-0-et-7-0 Title: PulseAudio 6.0 et 7.0 Authors: ariasuni Lucas, ʭ ☯ , BAud, M5oul, patrick_g, jlh, palm123, François, Storm, Benoît Sibaud, Julien.D et Frédéric LIETART Date: 2015年09月25日T00:18:07+02:00 License: CC By-SA Tags: pulseaudio, son et audio Score: 57 Pulseaudio est un serveur de sons sous licence libre, multiplateforme (GNU/Linux, BSD, Solaris, Mac OS, ainsi que Windows) et capable de fonctionner à travers le réseau. Il dispose de fonctionnalités avancées : il permet le contrôle du volume par application, peut être scripté, dispose de possibilités de ré-échantillonnage, etc. La suite de la dépêche évoque les nouveautés introduites dans les versions 6.0 (février 2015) et 7.0 (septembre 2015). ---- [Site de PulseAudio](https://wiki.freedesktop.org/www/Software/PulseAudio/) [Annonce de la version 6.0](http://www.freedesktop.org/wiki/Software/PulseAudio/Notes/6.0/) [Annonce de la version 7.0](http://www.freedesktop.org/wiki/Software/PulseAudio/Notes/7.0/) ---- # PulseAudio 6.0 Cette version contient un bon nombre d’améliorations mineures, de corrections de bugs et de mises à jour d’[i18n](https://fr.wikipedia.org/wiki/Internationalisation_%28informatique%29) ## Prise en charge des profils Bluetooth HSP/HFP avec BlueZ 5 PulseAudio prend en charge les profils Bluetooth HPS (casque audio) via le _backend_ natif et HFP (kit mains-libres) via le _backend_ oFono, grâce à BlueZ 5. Seul l’un est actif mais ce n’est pas gênant car la plupart des appareils gèrent à la fois HPS et HFP. Cependant, chaque _backend_ a ses limitations. Le natif ne gère pas le « rôle casque audio », ce qui signifie que connecter un PC à un téléphone mobile pour que le PC se comporte comme casque n’est pas pris en charge. À l’inverse, le _backend_ oFono ne permet pas d’utiliser le téléphone mobile comme casque audio pour le PC. De plus, le contrôle du volume n’est pas aussi bien géré qu’il pourrait l’être (PulseAudio n’informe pas l’appareil connecté de son volume donc les deux gèrent leur volume indépendamment). Comme les deux _backends_ ne se chevauchent pas, ils pourraient être activés en même temps. Cependant, il n’y pour l’instant pas de consensus sur le fait que ça soit la voie à suivre ou non. Pour le moment, on ne peut activer cette fonctionnalité qu’en appliquant un patch à PulseAudio. ## Prise en charge de l’activation par socket systemd PulseAudio gère dorénavant l’activation par _socket_ systemd. Cependant cela fonctionne uniquement pour les _sockets_ Unix ; la prise en charge pour TCP arrivera plus tard. PulseAudio est fourni avec un fichier _socket_ tout prêt pour démarrer l’instance utilisateur, mais ce n’est pas conseillé de l’activer car cela empêchera PulseAudio d’accéder au bus de session D-Bus, cassant de nombreuses fonctionnalités qui dépendent de cet accès. C’est prévu que, dans le futur, systemd soit capable de remplacer le bus de session avec un bus utilisateur, et à ce moment-là cette fonctionnalité sera utilisable à grande échelle. ## Améliorations de performance PulseAudio transfère depuis longtemps les données entre clients et serveur par SHM (_shared memory_, mémoire partagée), tandis que les métadonnées des paquets étaient envoyées par une _socket_ Unix. Depuis la version 3.6, il gère également le transfert des métadonnées par deux _ringbuffers_ SHM, un dans chaque direction. Pour signaler l’arrivée d’un nouveau paquet, PulseAudio utilise des `eventfd`s. (Il y a aussi un couche d’optimisation au-dessous d’`eventfd` qui essaie d’éviter d’y écrire si personne n’attend). Ce n’est pas tant pour éviter les copies de mémoire que pour éviter les appels systèmes. Ce nouveau mécanisme est appelé `srbchannel` pour _Shared RingBuffer channel_ (canal de _ringbuffer_ partagé). Quelques bancs d’essais non-scientifiques montrent que cela peut économiser de 10 à 25 % de puissance CPU dans des cas de faible latence, la moitié côté client. Cette fonctionnalité n’est pas activée par défaut dans cette version à cause de bugs non résolus, mais [elle est activée par défaut dans la version suivante](https://linuxfr.org/news/pulseaudio-6-0-et-7-0#le-m%C3%A9canisme-dipc-srbchannel-activ%C3%A9-par-d%C3%A9faut). La réaffectation des canaux a été optimisée en remplaçant l’implémentation générique avec du code spécialisé pour certain cas (les implémentations sont faites à la fois en C et en ARM NEON). Une implémentation ARM NEON a été ajoutée pour le cas spécial où l’on mélange deux flux 16 bits quand ceux-ci ont 1, 2 ou 4 canaux. ```module-combine-sink``` gère maintenant le mode latence dynamique, de telle sorte que les applications nécessitant une faible latence fonctionnent correctement avec un sink combiné. ## Meilleure gestion des profils multicanaux et 2.1 Quelques cartes sons multicanaux, incluant des cartes gérées par le nouveau pilote FireWire d’ALSA (ajouté dans le noyau Linux 3.16) et quelques cartes USB peuvent seulement être ouvertes en mode multicanal, par exemple 14 sorties et 10 entrées. Si toutes les tentatives d’ouverture de la carte échouent, PulseAudio fait une dernière tentative où le pilote peut choisir le nombre de canaux librement. Ces voies sont considérées en connexion par défaut. La gestion de l’audio 7.1 pour l’HDMI a été ajoutée. ALSA 1.0.28 apporte une meilleure gestion des profils surround 2.1. PulseAudio prend dorénavant cette nouvelle syntaxe (surround21:card) quand elle est disponible. ## Outils L'utilitaire `pactl` peut dorénavant définir un volume différent pour chaque canal d’un périphérique ou d’un flux. ## Instances multiples de connecteurs et sources JACK Auparavant, il n’était pas possible de charger deux instances de `module-jack-sink` et `module-jack-source`. Cette limitation entièrement artificielle n’avait pas de sens, elle a donc été supprimée. ## Nouvel argument pour `module-switch-on-connect` L’option `module-switch-on-connect` accepte un nouvel argument booléen : `only_from_unavailable`. Si la propriété est à faux (valeur par défaut), le comportement est le même qu’avant (utiliser le nouveau périphérique à la place du précédent sans condition), sinon le changement se fait uniquement si le périphérique par défaut était auparavant indisponible. # PulseAudio 7.0 ## Synthèse de la voie LFE avec filtre passe-bas Quand les haut-parleurs ont un caisson de basse, il est souvent préférable de créer le son LFE quand le contenu originel n'a pas de voie séparée LFE. Précédemment PulseAudio le faisait en mélangeant la moyenne de toutes les autres pistes, mais il est souvent mieux de filtrer toutes les fréquences hautes qui partent vers le caisson de basses. C'est maintenant le cas, et activé par défaut. La valeur par défaut de `enable-lfe-remixing` dans `deamon.conf` a été changée de vrai à faux, et une nouvelle option `lfe-crossover-freq` permet de configurer la fréquence du _crossover_ (mettre à zéro pour désactiver, et `enable-lfe-remixing` pour utiliser l’ancien algorithme). ## Nouveaux ré-échantillonneurs basés sur libsoxr Trois nouveaux ré-échantillonneurs basés sur `libsoxr` sont disponibles : `soxr-mq`, `soxr-hq` et `soxr-vhq`. D'un point de vue de qualité, ils devraient tous être parfaits (pas de distorsion audible), mais les versions `hq` et `vhq` peuvent être utilisées si une qualité _encore plus parfaite_ est désirée. Les développeurs de `libsoxr` recommandent la version `hq` pour des profondeurs allant jusque 16 bits, et la version `vhq` pour des profondeurs plus hautes (les traitements internes se font avec une plus grande précision dans la version `vhq`). L’affirmation que même la version `mq` est _parfaite_ se base sur les mesures effectuées par Alexander E. Patrakov en utilisant un modèle psychoacoustique afin de déterminer si les distorsions produites sont effectivement audibles (et elles ne le sont pas). Le modèle utilisé est décrit dans cet article : http://www.mp3-tech.org/programmer/docs/6_Heusdens.pdf Les version `mq` et `hq` ont de meilleures performances que `speex-float-l` (le ré-échantillonneur actuellement utilisé par défaut). `soxr-mq` serait le ré-échantillonneur par défaut s’il n’avait pas un inconvénient majeur : les ré-échantillonneurs introduisent une latence supplémentaire jusqu'à environ 20 ms, voire même plus dans certains rares cas. Plus de discussions sur les qualités et défauts de ces nouveaux ré-échantillonneurs sur le fil de cette liste : http://thread.gmane.org/gmane.comp.audio.pulseaudio.general/22158 Voici quelques résultats de bancs d'essai : http://lastique.github.io/src_test/ ## Activation par socket pour TCP La version précédente a introduit la prise en charge de l’activation par socket systemd pour les sockets unix. Cete prise en charge a été étendue aux sockets TCP dans cette version, ce qui permet à PulseAudio d’être démarré sur les serveurs _headless_ par exemple. ## Le mécanisme d’IPC « srbchannel » activé par défaut [Le mécanisme d’IPC « srbchannel »](#am%C3%A9liorations-de-performance) ajouté dans la version précédente était trop défaillant. Cela n’est plus le cas et il est maintenant activé par défaut. ## Détection de jack plus flexible lors de l’utilisation d’UCM Les systèmes qui utilisent l’UCM (_use case manager_, gestionnaire de cas d’usages) d’ALSA pour décrire le matériel peuvent dorénavant configurer le kcontrol du jack pour un périphérique utilisant la valeur `JackControl`. Auparavant, PulseAudio essayait de le détecter seul, ce qui ne fonctionnait pas toujours correctement. De plus, la valeur `JackHWMute` pour les périphériques UCM est maintenant gérée, permettant à PulseAudio de comprendre que la connexion d’un jack sur une sortie rend indisponible une autre sortie. ## Quitter dû à SIGTERM n’est plus considéré comme une défaillance Quand PulseAudio reçoit un signal SIGTERM, le processus se termine en renvoyant `0`. Auparavant il renvoyait `1`, signalant une défaillance, ce qui n’avait pas de sens. Si vous avez par exemples des scripts ou services systemd qui s’occupent de la valeur de retour, ils nécessitent peut-être quelques modifications. ## Meilleure gestion de la Creative SoundBlaster Omni Surround 5.1 La carte son USB « Creative SoundBlaster Omni Surround 5.1 » configure son périphérique ALSA pour le microphone d’une façon que PulseAudio ne sait gérer avec sa configuration par défaut. La carte a dorénavant son propre fichier de configuration pour faire fonctionner le microphone.