我有一个 AURenderCallbackStruct 的 Objective-C 示例,我想快速完成一个。我读到这是不可能的,对吗?
谢谢。
最佳答案
您可以像下面这样在 Swift 4 中格式化回调函数。
func recordingCallback(
inRefCon:UnsafeMutableRawPointer,
ioActionFlags:UnsafeMutablePointer<AudioUnitRenderActionFlags>,
inTimeStamp:UnsafePointer<AudioTimeStamp>,
inBusNumber:UInt32,
inNumberFrames:UInt32,
ioData:UnsafeMutablePointer<AudioBufferList>?) -> OSStatus {
return noErr
}
请注意,这必须是一个全局函数并且不在一个类中。
然后您可以使用以下代码设置回调函数:
var callbackStruct = AURenderCallbackStruct()
callbackStruct.inputProc = recordingCallback
callbackStruct.inputProcRefCon = nil
status = AudioUnitSetProperty(remoteIOUnit!,
kAudioOutputUnitProperty_SetInputCallback,
kAudioUnitScope_Global,
bus1,
&callbackStruct,
UInt32(MemoryLayout<AURenderCallbackStruct>.size));
if (status != noErr) {
return status // Do something with the error
}
关于swift - Swift 中的 AURenderCallbackStruct,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29942310/