前面两篇文章中,我们学习了音频队列的控制、创建和销毁。现在,我们要进入到这个队列内部,进行更深层次的操作,那么,我们首先需要了解的是:如何管理队列的缓存。
1,AudioQueueAllocateBuffer
函数功能:请求音频队列对象来分配一个音频队列缓存。
函数原型:
2,AudioQueueEnqueueBuffer
函数功能:给录音或者回放音频队列的缓存中添加一个缓存数据。
函数原型:
OSStatus AudioQueueEnqueueBuffer (
AudioQueueRef inAQ,
AudioQueueBufferRef inBuffer,
UInt32 inNumPacketDescs,
const AudioStreamPacketDescription *inPacketDescs
);
参数解析:
inAQ:音频队列缓存的拥有者。
inBuffer:将要被加进缓存队列的音频队列缓存。(感觉很拗口)
inNumPacketDescs:inBuffer中音频数据包的个数。在以下三种情况下,这个值应该设为0:
---播放的音频有固定的 bit速率。
---音频队列是录音队列时
---当这个缓存是由AudioQueueAllocateBufferWithPacketDescription分配,并重新如队列时。(不明白继续往后研究)