如何将 UnsafeMutablePointer<AudioBufferList> 转换为 Swift 中的 AudioBuffer?

How to convert UnsafeMutablePointer<AudioBufferList> to AudioBuffer in Swift?

我有一个 AURenderCallbackStruct 设置了一个音频单元。在回调中,我将音频数据作为 ioData: UnsafeMutablePointer<AudioBufferList> 获取。检查下面的代码。

func renderCallback(inRefCon: UnsafeMutablePointer<Void>, ioActionFlag: UnsafeMutablePointer<AudioUnitRenderActionFlags>, inTimeStamp: UnsafePointer<AudioTimeStamp>, inBufferNumber: UInt32, inNumberFrames: UInt32, ioData: UnsafeMutablePointer<AudioBufferList>) -> OSStatus {

    // How can i get AudioBuffer from iodate here ?

    return noErr
}

如何从这里的 ioDate 得到 AudioBuffer?请建议...

N.B。我正在使用 swift 2.2

只需使用任何 UnsafeMutablePointer<> 中的 memory 属性 即可访问其原始内存。所以你的代码应该看起来像这样。

var audioBufferListPtr = UnsafeMutableAudioBufferListPointer(ioData).unsafeMutablePointer.memory
for i in 0 ..< Int(inBufferNumber) {
    var buffer: AudioBuffer = audioBufferListPtr.mBuffers
}

N.B。 Swift 是一种快速发展的语言。所以这段代码将来可能会改变。