AudioQueueInputCallback

AudioQueueInputCallback

在applesswift3api核心音频中,使用AudioQueueNewInput(...)方法创建一个新的录制音频队列对象。
inCallbackProc的一个参数是AudioQueueInputCallback类型。有关AudioQueueNewInput函数的完整声明,请参见this
AudioQueueInputCallback本身的声明如下:

typealias AudioQueueInputCallback = (UnsafeMutableRawPointer?, AudioQueueRef, AudioQueueBufferRef, UnsafePointer<AudioTimeStamp>, UInt32, UnsafePointer<AudioStreamPacketDescription>?) -> Void

我想创建一个函数,它可以安全地传递到AudioQueueNewInput函数中。我试过的是这样的:
func audioQueueInputCallback(inUserData: UnsafeMutableRawPointer?,
                           inQueue: AudioQueueRef,
                           inBuffer: AudioQueueBuffer,
                           inStartTime: UnsafePointer<AudioTimeStamp>,
                           inNumPackets: UInt32,
                           inPacketDesc: UnsafePointer<AudioStreamPacketDescription>?) {
   // Handle stuff
}

遗憾的是,Xcode似乎无法将我的函数转换为AudioQueueInputCallback类型。我错过了什么?

最佳答案

回调函数的第三个参数应该是AudioQueueBufferRef,而不是AudioQueueBuffer。
见:https://developer.apple.com/reference/audiotoolbox/audioqueuebufferref

10-06 06:07