如何解决我应该如何使用AudioFileStreamOpen Xcode 12
我有一个解析器类来播放音频文件,它可以在Xcode 11(swift 4.2)上运行,最近更新为Xcode 12,仅这部分代码不起作用(swift 4.2)。 Image
错误:
Cannot convert value of type '(UnsafeMutableRawPointer,UInt32,UnsafeRawPointer,UnsafeMutablePointer<AudioStreamPacketDescription>) -> ()' to expected argument type 'AudioFileStream_PacketsProc' (aka '@convention(c) (UnsafeMutableRawPointer,Optional<UnsafeMutablePointer<AudioStreamPacketDescription>>) -> ()')
此方法:
func ParserPacketCallback(_ context: UnsafeMutableRawPointer,_ byteCount: UInt32,_ packetCount: UInt32,_ data: UnsafeRawPointer,_ packetDescriptions: UnsafeMutablePointer<AudioStreamPacketDescription>) {
let parser = Unmanaged<Parser>.fromOpaque(context).takeUnretainedValue()
let packetDescriptionsOrNil: UnsafeMutablePointer<AudioStreamPacketDescription>? = packetDescriptions
let isCompressed = packetDescriptionsOrNil != nil
/// At this point we should definitely have a data format
guard let dataFormat = parser.dataFormat else {
return
}
/// Iterate through the packets and store the data appropriately
if isCompressed {
for i in 0 ..< Int(packetCount) {
let packetDescription = packetDescriptions[i]
let packetStart = Int(packetDescription.mStartOffset)
let packetSize = Int(packetDescription.mDataByteSize)
let packetData = Data(bytes: data.advanced(by: packetStart),count: packetSize)
parser.packets.append((packetData,packetDescription))
}
} else {
let format = dataFormat.streamDescription.pointee
let bytesPerPacket = Int(format.mBytesPerPacket)
for i in 0 ..< Int(packetCount) {
let packetStart = i * bytesPerPacket
let packetSize = bytesPerPacket
let packetData = Data(bytes: data.advanced(by: packetStart),nil))
}
}}
您能帮我解决吗?) 谢谢。
解决方法
您应该将packetDescriptions更改为可选的
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。