我需要确定我的RemoteIO回调何时改变缓冲区大小。在iOS 7之前,我们可以使用AudioSessionAddPropertyListener
添加会话属性侦听器,然后使用属性kAudioSessionProperty_PreferredHardwareIOBufferDuration
。现在已弃用。有替代品吗? AVAudioSession
符合KVO标准,但不适用于IOBufferDuration
或preferredIOBufferDuration
属性。
这里有什么替代品?
答案 0 :(得分:2)
缓冲持续时间以已知采样率的frameCount(与回调缓冲区中的样本数成比例)的形式提供给RemoteIO回调。任何其他通知对于此回调信息都是异步的,因此可能在错误的时间与实际更改(在音频线程中发生,而不是在UI主运行循环中)接收。
但是你的音频回调可能会改变一些可见状态(全局或参数结构),在缓冲持续时间更新后,任何其他轮询线程或消费者线程都可以找到它。