コードを 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 では機能しません。
Cライブラリ関数がそれを受け入れるように、Swift 3でこのメモリのチャンクを参照するにはどうすればよいですか?
Swift 3 のドキュメントの説明がよくわかりません。
助けてください / ヨルゲン