Технические вопросы и ответы QA1715

AVAudioSession - Audio Session APIs & The Remote IO Render Proc.

Q: Я могу использовать методы AVAudioSession, методы get свойства или C базировали AudioSession APIs, такой как AudioSessionGetProperty для запросов для Текущей Аппаратной Частоты дискретизации в Удаленном обратном вызове рендеринга I/O?

A: Нет, Вы никогда не должны делать этого. Весь Аудио APIs Сеанса может блокировать и поэтому не должен использоваться ни по какой причине в логике рендеринга Удаленного Аудиоустройства I/O.

Обратный вызов рендеринга вызывают от потока в реальном времени и должен возвратиться в определенном интервале. Вызов APIs, который может потенциально блокировать, занимает много времени или занимает некоторое неопределенное количество времени, неблагоприятно произведет щелчки порождения процесса рендеринга, пропуски или хуже.

Нужно избежать операций, таких как синхронный файловый ввод-вывод, сеть I/O, любые выделения памяти, любой обмен сообщениями Objective C (который может привести к приостанавливаемому потоку), и конечно APIs, который может блокировать поток рендеринга. Также обратите внимание на то, что большая часть взаимодействия с Базовыми объектами Основы может быть проблематичной из-за моста между Базовой Основой и время выполнения Objective C.



История версии документа


ДатаПримечания
04.10.2013

Обновленный для AVAudioSession

14.05.2012

Новый документ, подтверждающий точку зрения, что весь Аудио Сеанс APIs никогда не должен использоваться в логике рендеринга Удаленного аудиоустройства IO.