да, его возможные, вам необходимо установить настройки звуковых сообщений Соответственно,
В основном размер звуковых сообщений Буфер, должен быть установлен на 40мс, так что было бы вокруг,
int AQRecorder::ComputeRecordBufferSize(const AudioStreamBasicDescription *format, float seconds)
{
int packets, frames, bytes = 0;
try {
frames = (int)ceil(seconds * format->mSampleRate);
if (format->mBytesPerFrame > 0)
bytes = frames * format->mBytesPerFrame;
else {
UInt32 maxPacketSize;
if (format->mBytesPerPacket > 0)
maxPacketSize = format->mBytesPerPacket; // constant packet size
else {
UInt32 propertySize = sizeof(maxPacketSize);
XThrowIfError(AudioQueueGetProperty(mQueue, kAudioQueueProperty_MaximumOutputPacketSize, &maxPacketSize,
&propertySize), "couldn't get queue's maximum output packet size");
}
if (format->mFramesPerPacket > 0)
packets = frames/format->mFramesPerPacket;
else
packets = frames; // worst-case scenario: 1 frame in a packet
if (packets == 0) // sanity check
packets = 1;
bytes = packets * maxPacketSize;
}
} catch (CAXException e) {
char buf[256];
return 0;
}
return bytes;
}
и установить формат,
void AQRecorder::SetupAudioFormat(UInt32 inFormatID)
{
AudioStreamBasicDescription sRecordFormat;
FillOutASBDForLPCM (sRecordFormat,
SAMPLING_RATE,
1,
8*BYTES_PER_PACKET,
8*BYTES_PER_PACKET,
false,
false
);
memset(&mRecordFormat, 0, sizeof(mRecordFormat));
mRecordFormat.SetFrom(sRecordFormat);
}
для моего случая, значения этих макросов,
#define SAMPLING_RATE 16000
#define kNumberRecordBuffers 3
#define BYTES_PER_PACKET 2
Hi Rohan, Спасибо за ваш ответ, Я изменил проект, и он работает на моем конце. Поскольку я новичок в этой области, как я могу убедиться, что он работает с частотой кадров 40 мс в пакете? Спасибо, Pravin – Pravin
Рамка AudioQueue, выдает обратный вызов, когда заполненный буфер заполнен, поэтому минимальный интервал будет равен 40 мс ... – Amitg2k12
Спасибо Рохан, не могли бы вы дать мне идею (формулу) около 40 мс аудиокадры на пакет вычисление в отношении Макросов/Определить, т. е. SAMPLING_RATE, kNumberRecordBuffers, BYTES_PER_PACKET – Pravin