简体   繁体   English

UnsafePointer的问题 <DSPComplex> 在将aurioTouch转换为Swift 3时

[英]Issues with UnsafePointer<DSPComplex> while converting aurioTouch to Swift 3

I am trying to convert aurioTouch sample code FFTHelper class into Swift 3 for a generating a spectrogram in an iOS app using Swift 3. I am facing issues with UnsafePointer as I am unable to initialise a variable of this type. 我正在尝试将aurioTouch示例代码FFTHelper类转换为Swift 3,以便在使用Swift 3的iOS应用中生成频谱图。由于无法初始化此类型的变量,因此我面临UnsafePointer的问题。 Getting error similar to: 'init' is unavailable: use 'withMemoryRebound....'. 出现类似于“ init”的错误,不可用:使用“ withMemoryRebound ....”。

I tried using withMemoryRebound.. but it is still failing.. This is valid in Swift 2.2 but not in Swift 3 var inAudioData: UnsafePointer = UnsafePointer (buffer.floatChannelData!.pointee); 我尝试使用withMemoryRebound ..但仍然失败。.在Swift 2.2中有效,但在Swift 3中无效。var inAudioData:UnsafePointer = UnsafePointer(buffer.floatChannelData!.pointee);

buffer is a AVAudioPCMBuffer with audio data. buffer是带有音频数据的AVAudioPCMBuffer。

Please help in converting the above line into in to Swift 3. 请帮助将上述行转换为Swift 3。

Even though the vDSP_fft_zip() routine in the iOS Accelerate framework asks for parameters of type UnsafePointer< DSPSplitComplex >, Swift 3 allows using regular Swift arrays of Floats inside the DSPSplitComplex type. 即使iOS Accelerate框架中的vDSP_fft_zip()例程要求输入UnsafePointer <DSPSplitComplex>类型的参数,Swift 3仍允许在DSPSplitComplex类型内部使用常规的Swift浮点数组。

var dataReal      = [Float](repeating: 0.0, count: dataLen)
var dataImaginary = [Float](repeating: 0.0, count: dataLen)
// ... fill the real Float array with your data or audio samples ....
var myComplexData : DSPSplitComplex?
myComplexData = DSPSplitComplex(realp: &dataReal, imagp: &dataImaginary)
vDSP_fft_zip(fftSetup!, &myComplexData!, 1, logLen, Int32(FFT_FORWARD))  

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM