1

コードを 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 のドキュメントの説明がよくわかりません。

助けてください / ヨルゲン

4

0 に答える 0