入力デバイスからオーディオ ストリームを読み取り、NAudio を使用して出力デバイスに送信するプログラムを実装しています。そのために、入力ストリームWaveIn
とそのDataAvailable
イベントを使用してデータを取得します。データを書き込むために、 を使用しようとしていますWaveOut
。これは、 の実装を使用する必要があることも意味しますIWaveProvider
。私のニーズに合わせてそれを実装することは、キューを使用して非常に簡単に思えます。ただし、キューが空でRead()
メソッドが呼び出されるとどうなるでしょうか。ドキュメントでこれについて何も見つかりませんでした。私が持っていると思うオプション:
- 一部のデータが利用可能になるまで、メソッドはブロックする必要があります。
- メソッドはすぐに 0 を返します。これは、現在利用できるデータがないことを示します。
- バッファーをゼロで埋めます。
オプション 1 または 2 を使用することを考えていましたが、オプション 3 を使用するBufferedWaveProvider
(および内部WaveInProvider
で使用する ) を見つけました。BufferedWaveProvider
問題は、その権利を推測したか、オプション 3 を使用する必要があるかということです。オプション 1 または 2 を使用するとどうなりますか? それはうまくいきますか?