私はWindowsマルチメディアAPIを使用して、ウェーブオーディオ(waveInOpen
と友人)を記録し処理しています。少数のバッファをラウンドロビン方式で使用したいと思います。WindowsのWAVEオーディオ入力でバッファを再利用できますか?
私は、デバイスにバッファを追加する前にwaveInPrepareHeader
を使用し、ウェーブデバイスが "アプリケーションにバッファを返す"後、割り当てを解除する前にwaveInUnprepareHeader
と呼ぶことになっていることを知っています。
私の質問は、バッファを再利用するために準備をして再準備する必要がありますか?または、以前に使用したバッファをデバイスに戻すだけでもかまいませんか?
また、私はこれをどのスレッドで行うのですか?私はオーディオシステムに属しているワーカースレッドで呼び出されるようなコールバック関数を使用しています。コールバック中にwaveInUnprepareHeader
、waveInPrepareHeader
、およびwaveInAddBuffer
にそのスレッドを呼び出すことはできますか?
ありがとうございました。コールバック中にwaveInUnprepareを呼び出そうとすると、waveInResetの間に問題が発生するようです。デッドロックが発生します。 –
はい、waveInReset(およびwaveOutReset)のデッドロックは苦痛で、使用しているサウンドカードドライバによって異なります。 –