AudioUnitRender收到错误kAudioUnitErr_CannotDoInCurrentContext(-10863)

时间:2017-01-24 09:06:28

标签: ios audiounit

我想在耳机插入iOS设备时直接将录制的音频播放到扬声器。

我所做的是在AudioUnitRender func中调用AURenderCallback,以便将音频数据写入AudioBuffer结构。

如果未设置“IO缓冲区持续时间”或将其设置为0.020秒,则效果很好。如果通过调用setPreferredIOBufferDuration将“IO缓冲持续时间”设置为较小的值(0.005等),AudioUnitRender()将返回错误:

  

kAudioUnitErr_CannotDoInCurrentContext(-10863)。

任何人都可以帮忙弄清楚为什么以及如何解决它?感谢

2 个答案:

答案 0 :(得分:1)

只是想补充一点,更改输出范围采样率以使其与我正在使用的OSx kAudioUnitSubType_HALOutput音频单元的输入的输入范围采样率相匹配,为我解决了此错误

答案 1 :(得分:0)

缓冲区已满,因此请等待后续渲染过程或使用更大的缓冲区。

AudioToolbox,AudioUnit和AUGraph使用了相同的错误代码,但仅为AUGraph记录。

  

为了避免在渲染线程中旋转或等待(一个坏主意!),很多   对AUGraph的调用可以返回:   kAUGraphErr_CannotDoInCurrentContext。仅生成此结果   当您从其渲染回调中调用AUGraph API时。这意味着   它需要的锁是在那个时候由另一个线程保持的。如果   你看到这个结果代码,你通常可以再次尝试行动 -   通常是NEXT渲染周期(所以锁定的时间也是如此)   已清除),或者您可以将该调用委托给您应用中的另一个线程。   你不应该旋转或暂停渲染线程。

https://developer.apple.com/reference/audiotoolbox/kaugrapherr_cannotdoincurrentcontext