Файл реализации AudioToolBox AudioConverterFillComplexBuffer отсутствует

Я использую рендеринг звука в реальном времени с помощью Audio Unit RemoteIO, и мне нужно выполнить преобразование частоты дискретизации, чтобы убедиться, что мой рендеринг имеет ту же частоту дискретизации, что и спецификация оборудования. Например. в iPhone 12 частота дискретизации составляет 48 кГц, а в iPhone 8 — 44,1 кГц.

Чтобы сделать это преобразование частоты дискретизации, я использую метод AudioConverterFillComplexBuffer. Однако есть одна загвоздка. Чтобы убедиться, что я не получаю никаких недоработок, я хотел бы проверить исходный код методов AudioConverterFillComplexBuffer, чтобы увидеть, выполняется ли выделение памяти с помощью ключевого слова new. Требуется, чтобы, поскольку mem alloc блокирует, он никогда не должен использоваться внутри удаленного обратного вызова ввода-вывода.

Есть ли способ получить доступ к функции AudioConverterFillComplexBuffer из исходного кода AudioToolBox? В xcode я вижу только заголовок.


person cs guy    schedule 15.07.2021    source источник


Ответы (1)


Реализация является частной для Apple, но и AudioConverterFillComplexBuffer, и сторона C++ AudioConverter используются непосредственно IOPrcs, поэтому не должно возникнуть проблем с вызовом этой функции из контекста реального времени.

Вот скриншот блока рендеринга AVAudioSourceNode: стек вызовов

person sbooth    schedule 21.07.2021