如何在 Swift 3 中创建 AudioQueueInputCallback?
How to create an AudioQueueInputCallback in Swift 3?
Apples Swift3APICore Audio使用方法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
Apples Swift3APICore Audio使用方法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