Я использую Audio Unit Framework
разработать приложение VOIP на Mac OS X. В моей программе есть два аудиоустройства, одно — только для входа AUHAL, другое — по умолчанию.
Я использую input-only AUHAL
захватывать аудио. Когда частота дискретизации 44.1khz
в обратном вызове AUHAL значение inNumberFrames
является 512
что означает, что моя программа получит 512 frames
аудиоданные от каждого звонка AudioUnitRender
, И значение inNumberFrames
в default output unit's callback
это также 512
. В этом случае все хорошо.
Но когда я меняю частоту дискретизации (8 кГц) как на input-only AUHAL
а также default output unit
моя программа не работает должным образом.
Потому что в обратном вызове модуля вывода значение inNumberFrames
стал 93
что означает, что выходное устройство нужно 93 frames
аудиоданные от каждого звонка, но значение inNumberFrames
оставаться 512
в AUHAL's
Перезвоните. Количество кадров не совпадает между AUHAL
и output unit
,
Я могу изменить AUHAL I/O buffer size
Руководство с помощью AudioUnitSetProperty
и решить эту проблему, используя простую формулу с небольшой ошибкой. Но я хочу знать, есть ли какой-то способ сделать AUHAL
настроить размер буфера ввода / вывода автоматически, как default output unit
делать ?
Спасибо & что касается
Задача ещё не решена.
Других решений пока нет …