2017-12-08 10 views
0

これはタイミングに関してはかなり「特徴点」の問題であるためcallbackmをレンダリング...時間差分)とRemoteIO

私は物事を行うにはiOS版のRemoteIOオーディオユニットを使用しています。 AudioOutputUnitStart()を呼び出した後で、ユニットが "on"になっていると、レンダリングコールバックが下流のユニットに引き込まれます。私が推測することを許可する:

可能性1:システムは、独自のレンダリングコールバックのリズムがあります。次のレンダリングコールバックは右AudioOutputUnitStart(の実行後に発生)、それは

可能性2になります。 AudioOutputUnitStart()を呼び出した後、次のレンダリングコールバックがシステムの「次の」ティックの1つを捕捉してそこから開始します

1または2?または3がありますか?前もって感謝します!

答えて

1

オーディオレイテンシは、特定のデバイスモデル、オーディオセッションとオプション、要求されたサンプルレートとバッファサイズ、およびその他のオーディオ(バックグラウンドまたは最近閉じたアプリケーション)が最近再生されたかどうか、システム。内蔵のオーディオアンプ回路(など)の電源を入れる必要があるかどうか、または電源をオンにしているかどうかは、最大の違いがあります。特定のサンプルレートを要求すると、OSリサンプリングとミキサーコードによって潜在的に必要とされるバッファリングのため余分な時間がかかるようです。

おそらく(2)または(3)です。

RemoteIOを使用するときのレイテンシを最小限に抑える最も良い方法は、オーディオセッションの設定で非常に短いバッファ(1~6mS)を要求し、オーディオセッションとオーディオユニットを事前に開始することです(アプリケーションの起動時、等)、その後、音が必要になるまで、コールバックバッファをゼロで埋める(または記録されたコールバックデータを破棄する)。