web-dev-qa-db-ja.com

PulseAudioとWineの間の問題は何ですか

Ubuntuのワインとpulseaudioに関するいくつかの問題を長い間読んでいますが、はっきりと理解することはありませんでした。ワインと、ワインを介して実行されるゲームの音に関するデフォルトでのpulseaudioの使用に関連する問題、または問題と思われるもの。これは、Ubuntuを使用しているが特定のWindowsゲームをプレイできるようにしたいすべてのユーザーに影響します。

4
Luis Alvarado

最新アップデート:Wine 1.7.55は適切なPulseAudioサポートを追加します。

最近はそれほど問題はありません。

あなたが説明しているのは何年も前のことです。

Wineのアプリケーションは、Windowsサウンドスタックと通信する方法のみを知っているため、他のほとんどのWindowsサブシステムと同様に、Wineはこれを提供します。この問題は、過去10年間でサウンドスタックが大きく変化したことに起因しています。

昔々...

... OSSとALSAしかありませんでした。予測可能なインターフェイスを提供しますが、コーディングするのは簡単ではありません。 ALSAのサポートにより、Wineの年齢が「ジャストワークス」ポイントに到達するのに時間がかかりました。スタック図は非常にシンプルでした:

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

ALSAの主な問題は、一度に複数のゲームをプレイしたい場合、それが悪名高いことです。アプリケーションが他のアプリケーションから誤ってロックする可能性があります。

その後、PulseAudioが人気を博しました。

突然、すべてのデスクトップにPulseAudioと呼ばれるものがありました。多くのアプリケーションが一度にノイズを発生させ、Sound-over-Networkなどの機能を追加できるようにするのは、別のレイヤーbetweenアプリケーションとALSAでした。

しかし、WineはまだALSAとの会話方法しか知らなかったので、PulseAudioが起動してすぐにそれを妨害していました。 Wineのオーディオはthrough ALSA互換性レイヤーをPulseAudioにパイプしてから、ALSAに戻す必要がありました。スタックは、これがどれほどひどいものかを示しています。

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

さらに、ALSAエミュレーションレイヤー(PulseAudioが提供)はあまり良くありませんでした。いくつかのチャンネルといくつかの録音オプションをサポートしますが、PulseAudio自体が乗っているALSAほど近くはありません。

知覚問題は常に「他の人のせい」でした

Wineのオーディオが機能しませんでした。後知恵を使えば、問題が実際にどこにあったのかを簡単に確認できますが、当時、Wineを本当の戦場にした3つの意見がありました。

  • UsersWine開発者がネイティブPulseAudioドライバーを追加するように求められました。

  • ワイン開発者は、なぜ費やす必要があるのか​​分からなかったanother age(そして、開発者の数ヶ月と数ヶ月を話している)動作しているALSAインターフェースを提供しないためのPulseAudioの問題としてそれを見ると、さらに別のオーディオレイヤーとのインターフェース。彼らの目では、人々はpasuspenderを使用してPAに直接操作するために低レベルのALSAをリリースさせることができます。

  • PulseAudioの開発者は、Wineが集団の指を抜いて、just 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サポートを追加しました...

私は長年この投稿を書いてきましたが、これはおそらく最も奇妙なことでしょう。 PAドライバーの開発をやめた後、誰かがこれに戻って実際の何かに変えたようです。

それ以上に、それは Wineのメインラインバージョンに引き込まれた です。

確立されたプレフィックスで、wine regeditを実行し、HKCU\Software\Wine\Drivers\AudioalsaからPulseに変更します。サラウンドサウンドを含むすべてseemsが動作します。ここにスタックがあります:

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

ALSA互換性レイヤーよりも優れていますか?まだわかりません。バグだらけのゲームだと思ったものを試してみましたが、まだ少しスキップされています。

それは動作しますが、これが主なことです...しかし、最終的にはALSAラッパーも動作しました。

13
Oli