Swift 3 UnsafeMutablePointer <float>迁移

时间:2016-11-18 12:41:16

标签: swift unsafemutablepointer

尝试将我的代码迁移到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

0 个答案:

没有答案