AudioQueue захватывает и возвращает буферы разных размеров - PullRequest
2 голосов
/ 26 сентября 2011

У меня приложение на основе AudioQueue работает почти идеально. Однако у меня проблема. Когда я вызываю AudioQueueAllocateBuffer, я специально запрашиваю размер буфера 512 (поскольку я выполняю БПФ для данных). Однако, когда срабатывает обратный вызов, я обнаруживаю, что время от времени я получаю размеры буфера, которые меньше 512.

Это бесит. Является ли мое единственное решение для установки какой-либо внутренней буферизации входящих данных, чтобы сгладить эти проблемы? Почему я указываю значение в буфер выделения, а затем iPhone возвращает мне другое количество сэмплов?

Любая помощь будет принята с благодарностью, так как я собираюсь сойти с ума.

Ура!

Оскар

1 Ответ

2 голосов
/ 27 сентября 2011

Ваше решение состоит в том, чтобы настроить собственную внутреннюю буферизацию входящих аудиоданных, пока вы не буферизуете объем требуемых данных.

Размер буфера, который вы выделяете, указывает на максимальный объем данных, который может заполнить этот буфер, не минимум.API Audio Queue основан на других аудио-API iOS и может изменять свое поведение в зависимости от ряда вещей (что делает этот базовый API, аудио-сеанса или частоты дискретизации в соответствии с запросом других приложений, фонового состояния (состояний),Версия ОС, различное базовое оборудование на разных моделях устройств и т. Д.) Даже публичный аудио API самого низкого уровня (RemoteIO) изменит размер возвращаемого буфера, в зависимости.

...