Неожиданное поведение с обратным вызовом AudioQueueServices во время записи аудио - PullRequest
1 голос
/ 26 марта 2010

Я записываю непрерывный поток данных, используя AudioQueueServices. Насколько я понимаю, обратный вызов будет вызываться только тогда, когда буфер заполняется данными. На практике первый обратный вызов имеет полный буфер, второй обратный вызов заполнен на 3/4, третий обратный вызов заполнен, четвертый заполнен на 3/4 и т. Д. Эти буферы состоят из 8000 пакетов (запись звука 8 кГц), поэтому я должен каждый раз возвращать 1 сек. Звука на обратный вызов. Я подтвердил, что мой размер буфера аудио-очереди правильный (и в некоторой степени подтверждается поведением). Что я делаю неправильно? Должен ли я что-то делать в AudioQueueNewInput с другим RunLoop? Я пытался, но, похоже, это ничего не изменило ...

Кстати, если я запускаю в отладчике, каждый обратный вызов заполнен 8000 выборками - что заставляет меня думать, что это потоковая / временная вещь.

1 Ответ

0 голосов
/ 31 марта 2010

Очевидно, из обсуждения с другими - и отсутствия ответов, это поведение является таким, как задумано (или нарушено, но вряд ли будет исправлено), даже если оно неправильно документировано. Обходной путь - надлежащим образом буферизовать ваши выборки в обратном вызове и не ожидать, что буфер будет заполнен. Это совсем не проблема, если вы просто записываете данные в файл, но если вы собираетесь работать с блоками аудиоданных одинакового размера при обратном вызове, вам придется убедиться в этой согласованности самостоятельно.

...