2


0

オーディオ出力が途切れる原因は何ですか?

非常に一般的なソフトウェアバグがあり、約1秒間のオーディオが数回連続して再生され、一種のスタッターが発生します。 これは、ビデオゲームをプレイするときに最もよく気づきます。 これはアーキテクチャ固有のものではないことを知っています。コンソール、古いPCで発生し、Windows 7を起動した5分前に発生しました。

私の質問は、この矛盾の根本的な原因は何ですか? このタイプの矛盾は、コンピューティングの他の部分に影響しますか? たとえば、モデムが途切れた場合、送信が破損します。

2 Answer


9


サウンドは通常、http://en.wikipedia.org/wiki/Circular_buffer [circular buffer]を使用して出力され、ハードウェアとドライバーによって処理されます。 そうすれば、0.02ミリ秒ごとに1つのサンプルを出力する必要はありませんが、一度にもっと多くのことを行うことができます。 また、ゲームが常に新しいロジックをデコードするために中断することなく、ゲームロジックを実行するのにより多くの時間を費やすことができます。 ゲームがゲームロジックの反復の実行を終了し、ゲームの状態が更新され、グラフィックが再描画されると、ゲームはさらにサンプルをデコードできます。

問題は、すぐに終了しない場合に発生します。これは、必要な作業が突然増えたため、または他のプロセスがCPU時間を奪いすぎたためです。 バッファがいっぱいになっていない場合、サウンドカードはバッファからの読み取りを続行します。バッファされたサンプルをすべて読み取ると、次のサンプルは既に再生されたものになります。 これにより、小さなループが発生します。


2


推測として、オーディオバッファが十分に速く更新されていないため、バッファ内の古いデータを単純に再生しているだけだと思われます。

そうは言っても、ここの誰かがそれよりもっと深く掘り下げることができると思うと思います。 :-)