在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