1

を使用して、Audio Unit FrameworkMac OS X で VOIP アプリを開発しています。私のプログラムには 2 つのオーディオ ユニットがあり、1 つは入力専用の AUHAL で、もう 1 つはデフォルトの出力ユニットです。

を使用しinput-only AUHALてオーディオをキャプチャします。サンプル レートが の場合44.1khz、AUHAL のコールバックでは、の値はinNumberFramesです512。これは、プログラムが512 frames各呼び出しからオーディオ データを取得することを意味しますAudioUnitRenderinNumberFramesまた、の値default output unit's callbackも です512。この場合、すべて問題ありません。

しかし、 と の両方でサンプル レート (8khz) を変更するinput-only AUHALdefault output unit、プログラムが正しく動作しません。

出力ユニットの callback の値は、出力デバイスが各呼び出しからの音声データを必要とすることを意味するようにinNumberFramesなりましたが、 の値はコールバックに残ります。と のフレーム数が一致しませんでした。9393 framesinNumberFrames512AUHAL'sAUHALoutput unit

AUHAL I/O buffer sizeを使用してマニュアルを変更AudioUnitSetPropertyし、エラーの少ない単純な式を使用してこの問題を解決できます。AUHALしかし、I/O バッファ サイズを自動的に調整する方法があるかどうかを知りたいdefault output unitですか?</p>

感謝と敬意

4

0 に答える 0