Какие проблемы между PulseAudio и Wine

Я давно прочитал несколько проблем о вине и pulseaudio в Ubuntu, но никогда не понимал этого ясно. Каковы проблемы или, кажется, проблемы, связанные с вином и использованием по умолчанию pulseaudio в отношении звука в играх, выполняемых с помощью Wine. Это затрагивает целый ряд пользователей, которые используют Ubuntu, но хотят иметь возможность играть в определенные игры для Windows.

4
задан 30 December 2011 в 22:56

1 ответ

Последнее обновление: В Wine 1.7.55 добавлена ​​надлежащая поддержка PulseAudio.

Во все эти дни нет большой проблемы.

То, что вы описываете, было много лет назад.

Приложения под Wine знают только, как общаться со звуковым стеком Windows, так что, как и в большинстве других подсистем Windows, Wine обеспечивает это. Проблема заключается в том, что наш звуковой стек значительно изменился за последнее десятилетие.

Давным-давно ...

... у нас были только OSS и ALSA. Они предоставляют предсказуемые интерфейсы, но их нелегко кодировать. Винным возрастам потребовалось «просто поработать» с их поддержкой ALSA. Диаграмма стеков была довольно простой:

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

Основная проблема с ALSA - это общеизвестно привередливая, если вы хотите, чтобы одновременно играли более одной вещи. Приложения могут случайно заблокировать его от других.

Затем PulseAudio стал популярным.

Внезапно на каждом рабочем столе появилась эта вещь под названием PulseAudio. Это был еще один уровень между приложениями и ALSA, который позволял многим приложениям одновременно создавать шум и добавлять такие функции, как звук по сети.

Но Wine все еще знал, как разговаривать с ALSA, и теперь была эта штука PulseAudio, которая связывала его прямо с загрузки. Аудио вина должно было быть передано через слой совместимости ALSA в PulseAudio, а затем обратно в ALSA. Стек показывает, насколько ужасно это выглядит:

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

Кроме того, слой эмуляции ALSA (предоставленный PulseAudio) не был отличным. Он будет поддерживать пару каналов и несколько опций записи, но далеко не так сильно, как ALSA, над которым сидел сам PulseAudio.

Воспринимаемая проблема всегда была «ошибкой других парней»

Аудио в Wine не работало. Оглядываясь назад, легко увидеть, где на самом деле была проблема, но в то время было три мнения, которые сделали Wine настоящим полем битвы:

  • Пользователи требовали, чтобы разработчики Wine добавить собственный драйвер PulseAudio.

  • Разработчики вин не понимали, почему они должны потратить еще один возраст (а мы говорим о месяцах и месяцах времени разработчиков), взаимодействуя с еще одним звуковым слоем, когда они считают, что проблема PulseAudio в том, что он не предоставляет работающий интерфейс ALSA. В их глазах люди могли просто использовать pasuspender, чтобы заставить ПА высвобождать низкоуровневую АЛСА для прямой манипуляции.

  • Разработчики PulseAudio также предложили, чтобы Wine вытащил их коллективный палец и просто добавил драйвер PA. Десятки других приложений были, так почему они не могли? И каждый раз, когда я спрашивал, слой PulseAudio ALSA был в порядке, без ошибок, и проблема заключалась только в собственных ошибках разработчиков Wine.

  • Пользователь написал взломанный драйвер PulseAudio , который напрямую общался с Pulseaudio и выполнял само преобразование растрового звука. Другие пользователи любили его, потому что, несмотря на его хаки, он часто "просто работал", но разработчики Wine ненавидели его, потому что это была другая большая ветвь кода, которую нужно поддерживать, и это был хак.

А потом все стало лучше.

Все дали немного.

  • Пользователи перестали так жаловаться.

  • Wine реорганизован для использования подхода Windows Vista и Windows 7 к звуку. Они называют это MMDevAPI. Вы можете прочитать все о MMDevAPI здесь . Это убирает тонну звукового кода и упрощает настройки. Тем не менее, он все еще использует ALSA.

  • В PulseAudio исправлены ошибки, позволяющие Wine работать лучше.

  • Разработка WinePulse прекратилась, когда MMDevAPI начал показывать, что он работает.

И хотя может показаться, что это так, я сомневаюсь, что это не конец этой истории. Есть коммерчески поддерживаемые проекты, такие как OpenAL и GStreamer, которые действительно могут упростить звуковой стек Wine, а также предоставить дополнительные функции.

Но спустя годы, в Wine 1.7.55 была добавлена ​​поддержка PulseAudio в магистрали ...

1149 Я писал этот пост годами, и это, пожалуй, самая странная вещь. После прекращения разработки драйвера PA, кажется, кто-то вернулся к этому и превратил его во что-то реальное.

Более того, он втянулся в основную версию Wine .

В установленном префиксе просто запустите wine regedit и измените HKCU\Software\Wine\Drivers\Audio с alsa на pulse. Все, включая объемный звук , кажется, работает. Вот этот стек:

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

Это лучше, чем уровень совместимости ALSA? Я все еще не уверен. Я попробовал то, что, как мне показалось, было некоторыми из шумных игр, и они все еще немного пропускают.

Это работает, хотя, что является главным ... но так же, как и обертка ALSA в конце.

0
ответ дан 30 December 2011 в 22:56

Другие вопросы по тегам:

Похожие вопросы: