AudioToolbox之AudioQueue.h(二)Creating and Disposing of Audio Queues

来源:互联网 发布:php new soapclient 编辑:程序博客网 时间:2024/05/21 08:52

创建音频队列时,参数较多,使用的时候要特别小心。

1,AudioQueueNewOutPut

函数功能:创建一个播放音频队列对象。

函数原型:

 OSStatus AudioQueueNewOutput (
   const AudioStreamBasicDescription   *inFormat,
   AudioQueueOutputCallback            inCallbackProc,
   void                                *inUserData,
   CFRunLoopRef                        inCallbackRunLoop,
   CFStringRef                         inCallbackRunLoopMode,
   UInt32                              inFlags,
   AudioQueueRef                       *outAQ
);
参数解析:

inFormat:从它的类型上,我们可知,它需要的是基本的流信息。对于一个已经存在的流文件,一般通过AudioFileGetProperty的方法(属性ID是kAudioFilePropertyDataFormat)来获取。

inCallbackProc:音频队列输出(播放)时的回调函数。回调函数是设计还是挺有技巧的,需要多体会demo中的使用。

inUserData:是inCallbackProc的使用者,通常是inCallbackProc的第一个参数。

inCallbackRunLoop:指定回调函数执行的事件循环。一般使用:CFRunLoopGetCurrent(),当设置为NULL时,这个时间循环插入到其中一个音频队列的内部线程中。

inCallbackRunLoopMode:回调函数执行时的模式,一般不关注这个参数,通常设置为:kCFRunLoopCommonModes

inFlags:保留参数,必须设置为0.

outAQ:新创建的音频队列对象。(出来的时候,队列里面就有数据了)


使用实例:苹果官方的speakHere、AQOfflinRenderTest等都有。


2,AudioQueueNewInPut

函数功能:创建一个录音音频队列对象。

和AudioQueueNewOutPut很类似,参数的使用也基本一致,区别仅仅是:AudioQueueNewOutPut创建的是播放队列,而AudioQueueNewInPut创建的是录音队列。


3,AudioQueueDispose

函数功能:销毁(处理)一个音频队列。

参数原型:

 OSStatus AudioQueueDispose (
   AudioQueueRef inAQ,
   Boolean inImmediate
);

参数解析:

inAQ:想要销毁的音频队列。

inImmdiate:是否马上销毁音频队列。


原创粉丝点击