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

被折叠的 条评论
为什么被折叠?



