对于IOBufferDuration,不推荐使用AudioSessionAddPropertyListener

时间:2017-04-21 23:12:04

标签: ios core-audio avaudiosession

我需要确定我的RemoteIO回调何时改变缓冲区大小。在iOS 7之前,我们可以使用AudioSessionAddPropertyListener添加会话属性侦听器,然后使用属性kAudioSessionProperty_PreferredHardwareIOBufferDuration。现在已弃用。有替代品吗? AVAudioSession符合KVO标准,但不适用于IOBufferDurationpreferredIOBufferDuration属性。

这里有什么替代品?

1 个答案:

答案 0 :(得分:2)

缓冲持续时间以已知采样率的frameCount(与回调缓冲区中的样本数成比例)的形式提供给RemoteIO回调。任何其他通知对于此回调信息都是异步的,因此可能在错误的时间与实际更改(在音频线程中发生,而不是在UI主运行循环中)接收。

但是你的音频回调可能会改变一些可见状态(全局或参数结构),在缓冲持续时间更新后,任何其他轮询线程或消费者线程都可以找到它。