AUGraph означает, что больше нет звуковых обратных вызовов?
У меня есть приложение со сложным обратным вызовом рендеринга, которое, я сомневаюсь, может сделать с AVAudioEngine.
В любом случае использовать мой обратный вызов рендеринга AUGraph (с несколькими шинами) с AVAudioEngine?
Любой пример кода?
2 ответа
Аудиоустройство API не является устаревшим, только AUGraph, который предположительно построен на его основе.
Установите соединения, используя AudioUnitSetProperty с kAudioUnitProperty_MakeConnection
со структурой AudioUnitConnection.
Запустите и остановите выходной блок с помощью AudioOutputUnitStart и AudioOutputUnitStop.
Установите обратный вызов рендеринга, используя AudioUnitSetProperty и kAudioUnitProperty_SetRenderCallback
с AURenderCallbackStruct
На самом деле AUGraph дает не так много, кроме небольшой бухгалтерии и более простого синтаксиса соединения.
Подкласс AUAudio Unit V3 (не рекомендуется) по- прежнему может возвращать AUInternalRenderBlock, который поддерживает обратные вызовы рендеринга звука. Затем AVAudioEngine API может подключить эти аудиоустройства (например, к узлам микшера). Функции визуализации Audio Unit V3 по-прежнему позволяют использовать короткие (буферы с менее чем 500 выборками) синтез и анализ звука практически в реальном времени на iOS.
Смотрите пример моего приложения V3 AU на GitHub (смешанный Swift и Objective C): https://github.com/hotpaw2/auv3test5