Прямые звонки в Audio Unit вместо обратных вызовов iOS
Есть ли прямые вызовы к аудиоустройству, чтобы мне не приходилось зависеть от системных обратных вызовов-входов и обратных вызовов рендеринга (я могу имитировать это с помощью таймера). Например, как есть AudioUnitRender для извлечения данных из аудиоустройства, есть ли другой API для передачи данных в аудиоустройство?
2 ответа
Хотя я не знаю о конкретном вызове push-like в CoreAudio API, вы легко можете сделать это, выполнив обработку DSP в отдельной функции C, которая принимает переданные в нее буферы с плавающей запятой. Таким образом, обратный вызов рендеринга может выполнить тяжелую работу, и вы также можете вызвать функцию вручную, если вам нужно выполнить обработку на основе push.
Поведение аудиоустройств - модель притяжения. Выходной запрос данных для воспроизведения и, если он есть, то он воспроизводится.
Обычный способ начать запись - это вызвать Render в выходном обратном вызове. Рендер получит вам данные с рекордера, которые можно воспроизвести, или просто сохранит записанные данные в другом месте и настроит проигрыватель на воспроизведение тишины.