Я працюю з AUGraph
API Audio Units для відтворення та запису аудіо в моєму додатку iOS. Тепер у мене є рідкісна проблема, коли запит 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. Цей результат генерується лише при виклику API AUGraph з його зворотного виклику візуалізації. Це означає, що замок, який він вимагав, утримувався в той час іншою ниткою . Якщо ви побачите цей результат результату, то, як правило, можна спробувати дію ще раз - як правило, це наступний цикл відтворення NEXT (тому тим часом замок може бути очищений), або ви можете делегувати цей виклик іншому потоку у вашій програмі. Ви не повинні обертати або спати нитку відтворення.
Цей код результату є лише тимчасовим станом, який перейде, як тільки виклик вашого іншого потоку до AUGraph (який має блокування) завершиться.
У моєму випадку я тільки починаю AUGraph
, це нове і тільки що створене. Як я можу налагодити цю справу і що може бути потенційним питанням тут?
setupAudioForGraph
? Ви спочатку AUGraphІніціалізували графік?