wunderlist webapp sesiĆ³n log iniciar ingresar google faq ios audiounit audiotoolbox

ios - webapp - Recibir kAUGraphErr_CannotDoInCurrentContext cuando se llama a AUGraphStart para reproducir



wunderlist webapp (1)

Estoy trabajando con AUGraph y Audio Units API para reproducir y grabar audio en mi aplicación iOS. Ahora tengo un problema poco frecuente cuando un AUGraph no puede comenzar con el siguiente error:

resultado = kAUGraphErr_CannotDoInCurrentContext (-10863)

El error ocurrió de manera impredecible cuando intentamos llamar a AUGraphStart que está configurado para la reproducción de audio:

(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; }

Aquí lo que obtenemos de la documentación:

Para evitar girar o esperar en el hilo de renderizado (¡una mala idea!), Muchas de las llamadas a AUGraph pueden regresar: kAUGraphErr_CannotDoInCurrentContext. Este resultado solo se genera cuando llama a una API de AUGraph desde su devolución de llamada de representación. Significa que el bloqueo que requería estaba retenido en ese momento por otro hilo . Si ve este código de resultado, generalmente puede intentar la acción nuevamente, generalmente el siguiente ciclo de renderizado (por lo tanto, mientras tanto, se puede borrar el bloqueo), o puede delegar esa llamada a otro hilo en su aplicación. No debe girar o poner a dormir el hilo de renderizado.

Este código de resultado es solo un estado transitorio, que pasará tan pronto como se complete la llamada de su otro hilo a AUGraph (que tiene el bloqueo).

En mi caso, acabo de comenzar el AUGraph , es nuevo y recién creado. ¿Cómo puedo depurar el caso y cuál podría ser el problema potencial aquí?


Puedes hacer algo con CSS o SQLite. Esta es la razón por

OSStatus result = AUGraphStart(au_play_graph); if (noErr != result) { print_error("AUGraphStart", result); playing = NO; } return playing;

}

Intente simplemente manipular este código, hay un problema con los booleanos en su código ...