Quais são os problemas entre o PulseAudio e o Wine?

4

Eu tenho lido vários problemas por muito tempo sobre vinho e pulseaudio no Ubuntu, mas nunca entendi claramente. Quais são os problemas ou parecem ser os problemas relacionados ao vinho eo uso por padrão de pulseaudio em relação ao som em jogos executados via vinho. Isso afeta toda uma gama de usuários que usam o Ubuntu, mas ainda querem poder jogar jogos específicos para Windows.

    
por Luis Alvarado 30.12.2011 / 19:56

1 resposta

13

Última atualização: O Wine 1.7.55 adiciona suporte adequado ao PulseAudio.

Não há muito problema em todos esses dias.

O que você está descrevendo foi anos atrás.

Os aplicativos em Wine só sabem como falar com uma pilha de som do Windows, assim como com a maioria dos outros subsistemas do Windows, o Wine fornece isso. O problema vem de nossa pilha de sons ter mudado significativamente na última década.

Era uma vez ...

... nós só temos OSS e ALSA. Eles fornecem interfaces previsíveis, mas não são fáceis de codificar. Levou as idades do vinho para chegar a um ponto "apenas funciona" com o seu apoio ALSA. O diagrama de pilha foi bem simples:

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

O principal problema com o ALSA é notoriamente meticuloso se você quiser que mais de uma coisa seja tocada de uma só vez. Aplicativos podem acidentalmente bloqueá-lo de outros.

Então o PulseAudio ficou popular.

De repente, todos os desktops tinham essa coisa chamada PulseAudio. Foi outra camada entre aplicativos e ALSA para permitir que muitos aplicativos façam ruído de uma só vez e adicionem recursos como som pela rede.

Mas o Wine ainda só sabia como falar com a ALSA, e agora havia essa coisa do PulseAudio fazendo isso desde a inicialização. O áudio do Wine teve que ser canalizado através de uma camada de compatibilidade com o ALSA para o PulseAudio e depois voltar para o ALSA. A pilha mostra quão horrível isso parece:

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

Além disso, a camada de emulação do ALSA (fornecida pelo PulseAudio) não foi ótima. Ele suportaria alguns canais e algumas opções de gravação, mas nem de perto o ALSA que o próprio PulseAudio estava no topo.

O problema percebido sempre foi "culpa dos outros caras"

O áudio no Wine não funcionou. Em retrospecto, é fácil ver onde o problema realmente estava, mas havia três opiniões na época que fizeram do Wine um verdadeiro campo de batalha:

  • Usuários clamavam para que os desenvolvedores do Wine adicionassem um driver nativo do PulseAudio.

  • Os desenvolvedores de vinhos não viram por que deveriam gastar outra idade (e estamos falando de meses e meses de tempo de desenvolvedor) interagindo com outro áudio camada quando o viram como problema do PulseAudio por não fornecer uma interface ALSA funcional. Aos olhos deles, as pessoas poderiam usar apenas pasuspender para obter PA para liberar o ALSA de nível inferior para manipulação direta.

  • Os desenvolvedores do PulseAudio também sugeriram que o Wine exibisse o dedo coletivo e apenas adicione um driver PA. Dezenas de outras aplicações tiveram, então porque não puderam? E toda vez que eu perguntava, a camada do PulseAudio ALSA estava boa, sem bugs e eram apenas os erros dos desenvolvedores do Wine que eram o problema.

  • Um usuário escreveu um driver PulseAudio hackeado que falou diretamente com o Pulseaudio e fez a própria conversão de áudio bitmap. Outros usuários adoraram porque, apesar de seus hacks, ele frequentemente "apenas funcionava", mas os desenvolvedores do Wine o odiavam porque era outro grande ramo de código a ser mantido, e era um hack.

E então as coisas melhoraram.

Todo mundo deu um pouco.

  • Os usuários pararam de reclamar tanto.

  • Vinho refatorou o uso da abordagem do Windows Vista e do Windows 7 ao som. Eles chamam isso de MMDevAPI. Você pode ler tudo sobre o MMDevAPI aqui . Isso elimina uma tonelada de código de som e simplifica as configurações. Ainda usa o ALSA embora.

  • O PulseAudio corrigiu bugs para permitir que o Wine funcionasse melhor.

  • O desenvolvimento do WinePulse cessou quando o MMDevAPI começou a mostrar que estava funcionando.

E embora possa parecer, duvido que não seja o fim desta história. Existem projetos suportados comercialmente, como OpenAL e GStreamer, que podem realmente simplificar a pilha de sons do Wine, além de fornecer recursos extras.

Mas anos depois, o Wine 1.7.55 adicionou o suporte principal ao PulseAudio ...

Eu venho escrevendo este post há anos e esta é talvez a coisa mais estranha ainda. Depois de abandonar o desenvolvimento do driver PA, parece que alguém voltou a isso e transformou em algo real.

Mais do que isso, foi puxado para a versão principal do Wine .

Em um prefixo estabelecido, basta executar wine regedit e alterar HKCU\Software\Wine\Drivers\Audio de alsa para pulse . Tudo, incluindo o som surround, parece funcionar. Aqui está a pilha agora:

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

É melhor que a camada de compatibilidade com ALSA? Eu ainda não tenho certeza. Eu tentei o que eu pensei que eram alguns dos jogos de buggier e eles ainda pulam um pouco.

Funciona, o que é o principal ... mas também o wrapper da ALSA.

    
por Oli 30.12.2011 / 21:19