试图将我的代码迁移到 Swift 3,但我似乎无法解决这个问题。需要一些帮助!
我有这个音频缓冲区和一个指向它的通道数据的指针......就像这样
var buffer: AVAudioPCMBuffer
var bufPtrs = [UnsafeMutablePointer<Float>]()
for index in 0..<outputChannelCount {
let channelPtr = buffer.floatChannelData?[index]
bufPtrs.append(channelPtr!)
}
现在我需要将此指针交给一个 C 库函数,该函数会进行一些重采样。
这个函数需要一个指向 UInt8 元素数组的 UInt8 指针,像这样......
func swr_convert(_ s: OpaquePointer!,
_ out: UnsafeMutablePointer<UnsafeMutablePointer<UInt8>?>!,
_ out_count: Int32,
_ in: UnsafeMutablePointer<UnsafePointer<UInt8>?>!,
_ in_count: Int32) -> Int32
在 Swift 3 之前,我刚刚成功使用了这段代码。
numSamplesDecoded = swr_convert(audioPlayer.swrContext!,
UnsafeMutablePointer(bufPtrs),
frame.memory.nb_samples,
UnsafeMutablePointer(frame.memory.extended_data),
frame.memory.nb_samples)
但这在 Swift 3 中不起作用。
如何在 Swift 3 中引用这块内存以便 C 库函数接受它?
我真的不明白 Swift 3 文档中的解释。
请帮助/约根