2017-04-21 14 views
1

RemoteIOコールバックがいつバッファサイズを変更するかを判断する必要があります。 iOS 7までは、AudioSessionAddPropertyListenerを使用してセッションプロパティリスナを追加し、次にkAudioSessionProperty_PreferredHardwareIOBufferDurationというプロパティを追加できます。これは廃止されました。交換はありますか? AVAudioSessionはKVO準拠であることを意味しますが、IOBufferDurationまたはpreferredIOBufferDurationプロパティでは対応していません。AudioSessionAddPropertyListenerはIOBufferDurationのために推奨されていません

ここでの置き換えは何ですか?

答えて

2

バッファ持続時間は、既知のサンプルレートでframeCount(コールバックバッファ内のサンプル数に比例)の形式でRemoteIOコールバックに与えられます。他の通知は、このコールバック情報とは非同期であるため、実際の変更(UIメインループではなくオーディオスレッドで発生する)と比較して誤った時刻に受信される可能性があります。

しかし、オーディオコールバックは、バッファ持続時間の更新後に、他のポーリングスレッドまたはコンシューマスレッドが検出できる可視状態(グローバルまたはパラメータ構造体)を変更する可能性があります。

+0

メモリ割り当ての状況では不幸ですが、バッファサイズが増えるとスライシングが使用されると思います。 – yano

+1

最近のiOSデバイスで使用できるメモリと比較して、リアルタイムオーディオに必要なメモリ量は通常最適化する価値がありません。巨大な(ほとんど空の)円形オーディオバッファは一般的な解決策であり、スライシングは必要ありません。 – hotpaw2

関連する問題