Независимо от размера буферов, которые я предоставляю, обратный вызов, предоставленный AudioQueueNewInput, происходит примерно в один и тот же интервал времени.
Например:
Если у вас есть 0,05 секундные буферы и вы записываете со скоростью 44k, обратный вызов сначала вызывается примерно за 0,09 секунды, а затем сразу же происходит второй вызов (0,001 секунды). Затем вы снова ждете ~ 0,09 секунды. Если ваш размер буфера был 0,025. Вы бы подождали 0,09 секунды и почти мгновенно увидели бы еще 3 буфера.
Изменение частоты дискретизации увеличивает задержку.
Запись 16-битного звука 8k приводит к задержке в 0,5 секунды между переполнением буфера.
Так что я подозреваю, что за кулисами используется буфер на 8000 байт. Когда он заполнен, мой обратный вызов запускается с заданными буферами, пока не будет очищен.
Я хочу записать 16k 16-битное аудио с минимально возможной задержкой. Учитывая вышеизложенное, я всегда вижу около четверти секунды задержки. Есть ли способ уменьшить время ожидания? Есть ли свойство аудио сеанса для установки размера внутреннего буфера? Я пробовал kAudioSessionProperty_PreferredHardwareIOBufferDuration, но, похоже, это не помогает.
спасибо!