を使用して、Audio Unit Framework
Mac OS X で VOIP アプリを開発しています。私のプログラムには 2 つのオーディオ ユニットがあり、1 つは入力専用の AUHAL で、もう 1 つはデフォルトの出力ユニットです。
を使用しinput-only AUHAL
てオーディオをキャプチャします。サンプル レートが の場合44.1khz
、AUHAL のコールバックでは、の値はinNumberFrames
です512
。これは、プログラムが512 frames
各呼び出しからオーディオ データを取得することを意味しますAudioUnitRender
。inNumberFrames
また、の値default output unit's callback
も です512
。この場合、すべて問題ありません。
しかし、 と の両方でサンプル レート (8khz) を変更するinput-only AUHAL
と default output unit
、プログラムが正しく動作しません。
出力ユニットの callback の値は、出力デバイスが各呼び出しからの音声データを必要とすることを意味するようにinNumberFrames
なりましたが、 の値はコールバックに残ります。と のフレーム数が一致しませんでした。93
93 frames
inNumberFrames
512
AUHAL's
AUHAL
output unit
AUHAL I/O buffer size
を使用してマニュアルを変更AudioUnitSetProperty
し、エラーの少ない単純な式を使用してこの問題を解決できます。AUHAL
しかし、I/O バッファ サイズを自動的に調整する方法があるかどうかを知りたいdefault output unit
ですか?</p>
感謝と敬意