Посмотрите на пример SpeakHere.Эта строка содержит аудиоданные:
OSStatus result = AudioFileReadPackets(THIS->GetAudioFileID(), false, &numBytes, inCompleteAQBuffer->mPacketDescriptions, THIS->GetCurrentPacket(), &nPackets,
inCompleteAQBuffer->mAudioData);
Таким образом, вместо вызова AudioFileReadPackets
, вы можете просто использовать memcpy для копирования в буфер записанных данных.Или, альтернативно, подайте на воспроизведение AudioQueue
указатель на буфер аудиоданных.Когда воспроизведение продолжается, продвиньте указатель mCurrentPacket
через буфер.
Для записи вы сделаете что-то очень похожее.Вместо записи в файл вы будете записывать в буфер в памяти.Сначала вам нужно выделить это с malloc
.Затем ваш входящий AudioQueue
захватывает записанные данные, вы копируете эти данные в буфер.По мере копирования дополнительных данных вы перемещаете записывающую головку или mCurrentPacket
в новое положение.