Ale*_*akh 114 audiotoolbox audiounit ios
我正在使用AUGraph
Audio Units API在我的iOS应用中播放和录制音频.现在,当一个AUGraph
无法启动以下错误时,我遇到了一个罕见的问题:
result = kAUGraphErr_CannotDoInCurrentContext(-10863)
当我们尝试调用AUGraphStart
为音频播放设置的时间时,错误发生了不可预测的错误:
(BOOL)startRendering
{
if (playing) {
return YES;
}
playing = YES;
if (NO == [self setupAudioForGraph:&au_play_graph playout:YES]) {
print_error("Failed to create play AUGraph",0);
playing = NO;
return NO;
}
//result = kAUGraphErr_CannotDoInCurrentContext (-10863)
OSStatus result = AUGraphStart(au_play_graph);
if (noErr != result) {
print_error("AUGraphStart", result);
playing = NO;
}
return playing;
}
Run Code Online (Sandbox Code Playgroud)
这是我们从文档中得到的:
为了避免在渲染线程中旋转或等待(一个坏主意!),许多对AUGraph的调用都可以返回:kAUGraphErr_CannotDoInCurrentContext.仅当从其渲染回调调用AUGraph API时才会生成此结果.这意味着它所需的锁在那时由另一个线程保持.如果您看到此结果代码,通常可以再次尝试操作 - 通常是NEXT渲染周期(因此同时可以清除锁定),或者您可以将该调用委托给应用程序中的另一个线程.你不应该旋转或暂停渲染线程.
此结果代码只是一种暂时状态,只要您的其他线程对AUGraph(具有锁定)的调用完成,它就会通过.
在我的情况下,我只是开始AUGraph
,它是新的,刚刚创建.如何调试案例以及可能存在的潜在问题?
小智 1
您可以使用 CSS 或 SQLite 制作一些东西。这就是为什么
OSStatus result = AUGraphStart(au_play_graph);
if (noErr != result) {
print_error("AUGraphStart", result);
playing = NO;
}
return playing;
Run Code Online (Sandbox Code Playgroud)
}
尝试操作此代码,您的代码中的布尔值有问题......
归档时间: |
|
查看次数: |
1627 次 |
最近记录: |