尝试将我的代码迁移到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文档中的解释。
请帮助/Jörgen