В последнее время я работаю над очень специфическим проектом для iOS, и мои исследования привели меня к почти окончательному коду.Я решил все крайние трудности, с которыми сталкивался до сих пор, но в этом у меня нет ни малейшего понятия (ни о причине, ни о возможности ее решения).
Я настроил свойаудио очередь (частота дискретизации 44100, формат LinearPCM, 16 бит на канал, 2 байта на кадр, 1 канал на кадр ...) и начать запись звука с 12 аудио буферами.Однако после каждых 4 обратных вызовов, похоже, возникает задержка.
Ситуация следующая: первые 4 обратных вызова вызываются с интервалом, равным примерно 2 мс.Однако между 4-м и 5-м задержка составляет около 60 мс.То же самое происходит между 8-м и 9-м, 12-м и 13-м и далее ...
Кажется, существует связь между байтами на кадр и моментом задержки.Я знаю это, потому что если я изменяю до 4 байтов на кадр, у меня начинается задержка между 8-м и 9-м, затем между 16-м и 17-м, 24-м и 25-м ... Тем не менее, похоже, что нетлюбая связь между моментом задержки и количеством буферов.
Функция обратного вызова выполняет только две вещи: сохраняет аудиоданные (inBuffer-> mAudioData) в массиве, который может использовать мой класс;и вызовите другой AudioQueueEnqueueBuffer, чтобы поместить текущий буфер обратно в очередь.
Кто-нибудь уже проходил эту проблему?Кто-нибудь знает, по крайней мере, что может быть причиной этого?
Заранее спасибо.