Ubuntuのワインとpulseaudioに関するいくつかの問題を長い間読んでいますが、はっきりと理解することはありませんでした。ワインと、ワインを介して実行されるゲームの音に関するデフォルトでのpulseaudioの使用に関連する問題、または問題と思われるもの。これは、Ubuntuを使用しているが特定のWindowsゲームをプレイできるようにしたいすべてのユーザーに影響します。
最新アップデート:Wine 1.7.55は適切なPulseAudioサポートを追加します。
最近はそれほど問題はありません。
あなたが説明しているのは何年も前のことです。
Wineのアプリケーションは、Windowsサウンドスタックと通信する方法のみを知っているため、他のほとんどのWindowsサブシステムと同様に、Wineはこれを提供します。この問題は、過去10年間でサウンドスタックが大きく変化したことに起因しています。
... OSSとALSAしかありませんでした。予測可能なインターフェイスを提供しますが、コーディングするのは簡単ではありません。 ALSAのサポートにより、Wineの年齢が「ジャストワークス」ポイントに到達するのに時間がかかりました。スタック図は非常にシンプルでした:
Hardware → ALSA → Wine/Win32-api → Windows app
ALSAの主な問題は、一度に複数のゲームをプレイしたい場合、それが悪名高いことです。アプリケーションが他のアプリケーションから誤ってロックする可能性があります。
突然、すべてのデスクトップに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のサウンドスタックを本当に単純化するだけでなく、追加の機能を提供します。
私は長年この投稿を書いてきましたが、これはおそらく最も奇妙なことでしょう。 PAドライバーの開発をやめた後、誰かがこれに戻って実際の何かに変えたようです。
それ以上に、それは Wineのメインラインバージョンに引き込まれた です。
確立されたプレフィックスで、wine regedit
を実行し、HKCU\Software\Wine\Drivers\Audio
をalsa
からPulse
に変更します。サラウンドサウンドを含むすべてseemsが動作します。ここにスタックがあります:
Hardware → ALSA → PulseAudio → Wine/Win32-api → Windows app
ALSA互換性レイヤーよりも優れていますか?まだわかりません。バグだらけのゲームだと思ったものを試してみましたが、まだ少しスキップされています。
それは動作しますが、これが主なことです...しかし、最終的にはALSAラッパーも動作しました。