私は働いているAUGraph
し、再生し、私のiOSアプリのレコードのオーディオへのAudio Units API。AUGraph
が次のエラーで開始できない場合に、まれに問題が発生します。
結果= 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;
}
ここでは、ドキュメントから取得したもの:
レンダリングスレッドでのスピンまたは待機を回避するために(悪い考えです!)、AUGraphへの呼び出しの多くは次を返すことができます:kAUGraphErr_CannotDoInCurrentContext。この結果は、レンダーコールバックからAUGraph APIを呼び出した場合にのみ生成されます。これは、必要なロックがその時点で別のスレッドによって保持されていたことを意味します。この結果コードが表示された場合、通常はアクションを再試行できます-通常はNEXTレンダーサイクル(その間にロックをクリアできる)、またはその呼び出しをアプリの別のスレッドに委任できます。レンダリングスレッドをスピンしたり、スリープ状態にしたりしないでください。
この結果コードは一時的な状態にすぎず、他のスレッドによる(ロックされている)AUGraphへの呼び出しが完了するとすぐに渡されます。
私の場合、私はを開始するだけでAUGraph
、それは新しく、作成されました。ケースをデバッグするにはどうすればよいですか?ここで潜在的な問題は何ですか?
setupAudioForGraph
ますか?最初にグラフをAUGraphInitializeしましたか?