iOS 10+
iPhone: 5 с и 6
Xcode: 9 +
Я записываю аудио, используя aLaw кодек с частотой дискретизации 8 кГц с размером выборки 8 бит . Я создаю AudioQueue, как это:
// create the queue
XThrowIfError(AudioQueueNewInput(
&mRecordFormat,
MyInputBufferHandler,
this /* userData */,
NULL /* run loop */,
kCFRunLoopCommonModes /* run loop mode */,
0 /* flags */,
&mQueue), "AudioQueueNewInput failed");
MyInputBufferHandler - это обратный вызов, который вызывается при каждом заполнении буфера (160 байт каждые 20 мс). Поэтому я ожидаю, что обратный вызов называется каждые 20 мс . Но при тестировании каждые 128 мс обратный вызов MyInputBufferHandler вызывается 6 раз в пакете. Пока я ожидаю, что обратный вызов будет вызываться каждые 20 мс.
Моя конфигурация записи:
mRecordFormat.mSampleRate = 8000.0; // 8 KHz
mRecordFormat.mChannelsPerFrame = 1;
mRecordFormat.mBytesPerFrame = 1;
mRecordFormat.mBitsPerChannel = 8;
mRecordFormat.mBytesPerPacket = 1;
mRecordFormat.mFramesPerPacket = 1;
Может кто-нибудь помочь мне? Почему MyInputBufferHandler вызывается каждые 128 мс, а не 20 мс? Частота дискретизации 8 кГц с буфером записи 160 байт означает, что каждые 20 мс вызывается MyInputBufferHandler, а не каждые 128 мс!