web-dev-qa-db-fra.com

Quels sont les problèmes entre PulseAudio et Wine

J'ai lu plusieurs problèmes sur le vin et le pulseaudio dans Ubuntu depuis longtemps, mais je ne l'ai jamais compris clairement. Quels sont les problèmes ou semblent être les problèmes liés au vin et à l'utilisation par défaut de pulseaudio en ce qui concerne le son dans les jeux exécutés via le vin. Cela concerne toute une gamme d'utilisateurs qui utilisent Ubuntu mais souhaitent tout de même pouvoir jouer à des jeux Windows spécifiques.

4
Luis Alvarado

Dernière mise à jour: Wine 1.7.55 ajoute le support PulseAudio approprié.

Il n'y a pas beaucoup de problème du tout ces jours-ci.

Ce que vous décrivez était il y a des années.

Les applications sous Wine savent seulement comment communiquer avec une pile de sons Windows. C'est ce que Wine fournit avec la plupart des autres sous-systèmes Windows. Le problème vient de notre pile sonore qui a beaucoup changé au cours de la dernière décennie.

Il était une fois...

... nous n'avions que l'OSS et ALSA. Ils fournissent des interfaces prévisibles, mais ils ne sont pas faciles à coder. Il a fallu des siècles à Wine pour parvenir à un point "de travaux" avec le soutien d’ALSA. Le diagramme de pile était assez simple:

Hardware → ALSA → Wine/Win32-api → Windows app

Le principal problème avec ALSA est que c'est particulièrement difficile si vous voulez jouer plus d'une chose à la fois. Les applications pourraient accidentellement le verrouiller des autres.

Ensuite, PulseAudio est devenu populaire.

Soudainement, tous les ordinateurs de bureau avaient cette chose appelée PulseAudio. C’était une autre couche entre les applications et ALSA afin de permettre à de nombreuses applications de créer du bruit en même temps et d’ajouter des fonctionnalités telles que le son sur réseau.

Mais Wine ne savait toujours que parler à ALSA et il y avait maintenant ce truc PulseAudio qui le monopolisait depuis le début. Le son de Wine devait être transféré à travers un calque de compatibilité ALSA dans PulseAudio, puis être redirigé vers ALSA. La pile montre à quel point cela a l'air horrible:

Hardware → ALSA → PulseAudio → ALSA emulator → Wine/Win32 → Windows app

De plus, la couche d'émulation ALSA (fournie par PulseAudio) n'était pas géniale. Il prend en charge deux canaux et quelques options d’enregistrement, mais pas autant que l’ALSA sur lequel PulseAudio est assis.

Le problème perçu était toujours "la faute des autres gars"

Audio dans Wine ne fonctionnait pas. Avec le recul, il est facile de voir où se situe réellement le problème, mais à l'époque, trois opinions avaient fait de Wine un véritable champ de bataille:

  • Les utilisateurs ont demandé aux développeurs Wine d'ajouter un pilote PulseAudio natif.

  • Les développeurs de vin n'ont pas compris pourquoi ils devraient dépenser un autre âge (et nous parlons de mois et mois de temps passé par les développeurs) s’interfaçant avec une autre couche audio alors qu’ils considéraient que c’était le problème de PulseAudio pour ne pas fournir une interface ALSA fonctionnelle. À leurs yeux, les gens pourraient simplement utiliser pasuspender pour que PA libère l'ALSA de niveau inférieur aux fins de manipulation directe.

  • Les développeurs de PulseAudio ont également suggéré que Wine retire leur doigt collectif et ajoute simplement un pilote PA. Des dizaines d'autres applications existaient, alors pourquoi ne le pourraient-elles pas? Et chaque fois que je demandais, la couche PulseAudio ALSA était correcte, sans bugs et c’était juste les propres bugs des développeurs Wine qui étaient le problème.

  • Un utilisateur a écrit un pilote PulseAudio piraté qui a parlé directement à Pulseaudio et a effectué la conversion audio bitmap elle-même. D'autres utilisateurs l'ont adoré, car malgré ses piratages, il "travaillait souvent", mais les développeurs de Wine le détestaient car il s'agissait d'une autre grande branche de code à maintenir, et c'était un piratage.

Et puis les choses se sont améliorées.

Tout le monde a donné un peu.

  • Les utilisateurs ont cessé de se plaindre autant.

  • Wine refactored pour utiliser l'approche sonore de Windows Vista et Windows 7. Ils appellent cela MMDevAPI. Vous pouvez lisez tout sur MMDevAPI ici . Cela supprime une tonne de code sonore et simplifie les réglages. Il utilise toujours ALSA cependant.

  • PulseAudio a corrigé des bugs pour permettre à Wine de mieux fonctionner.

  • Le développement de WinePulse a cessé lorsque MMDevAPI a commencé à montrer que cela fonctionnait.

Et bien que cela puisse paraître, je doute que ce ne soit pas la fin de cette histoire. Il existe des projets pris en charge commercialement, tels que OpenAL et GStreamer, qui pourraient réellement simplifier la pile de sons de Wine et fournir des fonctionnalités supplémentaires.

Mais quelques années plus tard, Wine 1.7.55 a ajouté le support principal de PulseAudio ...

J'écris ce billet depuis des années et c'est peut-être la chose la plus étrange à ce jour. Après avoir abandonné le développement du pilote PA, il semble que quelqu'un y soit retourné pour le transformer en quelque chose de réel.

Plus que cela, il a été intégré à la version principale de Wine .

Dans un préfixe établi, exécutez simplement wine regedit et modifiez HKCU\Software\Wine\Drivers\Audio de alsa en Pulse. Tout - y compris le son surround - semble fonctionner. Voici la pile maintenant:

Hardware → ALSA → PulseAudio → Wine/Win32-api → Windows app

Est-ce mieux que la couche de compatibilité ALSA? Je suis encore incertain. J'ai essayé ce que je pensais être certains des jeux de buggier et ils sautent encore un peu.

Cela fonctionne bien, ce qui est la principale chose ...

13
Oli