Я использую AudioComponentInstance audioUnit для записи микрофона на iOS, Liniar PCM с различными частотами выборки (настраивается из приложения). Странная часть, она отлично работает для 11025, 22050 и 44100, но не работает на 8000. Она не дает никакой ошибки или чего-то еще, я просто ничего не получаю в обратном вызове. Кроме того, протестирован с 9600 и он не работает.iOS Захват микрофона LPCM не работает для частоты дискретизации 8 кГц
Кто-нибудь знает причину этого? я начинаю сеанс с
status = AudioUnitInitialize(audioUnit);
status = AudioOutputUnitStart(audioUnit);
В случае необходимости я могу предоставить больше (все) код, но я не думаю, что это связано с кодом.
UPDATE
После некоторого более тестирования я обнаружил, что размер буфера я использую в функции обратного вызова для записи была проблема. В функции обратного вызова я называю
status = AudioUnitRender([instance audioUnit],
ioActionFlags,
inTimeStamp,
inBusNumber,
inNumberFrames,
entry->bufferList);
Кажется inNumberFrames составляет 186 или 185, и я создал буфер 128. Но теперь он стил неудачу 4 из 5 раз со статусом -50. Я устанавливаю размер буфера 256, 512, 186, но поведение такое же. Результатом является то, что запись искажается, поскольку кадры теряются.