gpt4 book ai didi

ios - 如何在 Swift 中使用 CoreAudio API

转载 作者:可可西里 更新时间:2023-11-01 00:18:16 26 4
gpt4 key购买 nike

我正在将我的流媒体音频引擎迁移到 swift。我发现很难快速使用 C 音频 API。

我在使用 AudioFileStreamOpen api 时遇到问题,它需要 2 个 C 函数作为参数。我不知道如何快速使用此 API。

AudioFileStreamOpen(self as UnsafePointer<()>, propertyProc, packetProc, kAudioFileMP3Type, audioStreamId)

我已经为这个 API 定义了如下回调方法。但是我遇到了编译错误。

func propertyProc(inClientData: UnsafePointer<()>,inFileStreamId: AudioFileStreamID,inPropertyId: AudioFileStreamPropertyID,ioFlags: UnsafePointer<UInt32>) -> Void {
.....
}

func packetProc(inClientData: UnsafePointer<()>,inNumberOfBytes: UInt32,inNumberOfPackets: UInt32, ConstUnsafePointer<()>, inPacketDescriptions: UnsafePointer<AudioStreamPacketDescription>) -> Void {
.....
}

感谢任何帮助快速正确定义此 C API

Compilation error

最佳答案

您不能(目前)使用需要来自纯 Swift 代码的 C 回调指针的 API。根据 devforums.apple.com Swift 论坛中的回复,当前的 beta 4 语言实现不支持使用 C 函数指针调用 Swift 函数或方法

更新:以上答案自 Swift 2.0 起已过时

一种替代方法是将一些小的 trampoline C 回调函数放在一个 Objective C 文件中,它可以与 Swift 互操作,并让这些 C 函数依次调用可以在 Swift 代码中的 block 或闭包。使用 Swift 闭包配置 C 回调,然后将这些 C 回调传递给 CoreAudio 函数。

关于ios - 如何在 Swift 中使用 CoreAudio API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25057161/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com