如何将 macOS 音频工作组与 AudioServerPlugin 配合使用

How to use macOS audio work groups with an AudioServerPlugin

提问人:tuple_cat 提问时间:11/10/2023 更新时间:11/10/2023 访问量:26

问:

我有一个使用 DriverKit 构建的声卡的 USB 驱动程序和一个 AudioServerPlugin,它使 macOS 能够使用声卡进行音频输入和输出。

AudioServerPlugin 在使用 Apple Silicon 时工作正常,除非使用配备 M1 Max 或 M1 Pro 处理器的电脑时,会听到咔嗒声和爆裂声。我的怀疑是这与线程优先级有关。

驱动程序完成对象,以向 AudioServerPlugin 发出信号,表明 AudioServerPlugin 已准备好使用某些缓冲区。AudioServerPlugin 使用 对对象进行排队。AudioServerPlugin 有一个线程,该线程使用 completed 事件,然后从已完成的缓冲区中读取,然后将音频数据写入可用于 Core Audio 的缓冲区。OSActionOSActionIOConnectCallAsyncMethod

我已经阅读了音频工作组。我想知道我是否应该实现与此相关的东西,以及如何做到这一点。

大多数示例都是程序读取或写入设备时。例如,可以使用 查询设备的工作组。 我已将此属性添加到AudioServerPlugin中,但我看不到有人要求它。Core Audio 应该要求它,还是只是用户应用程序要求的属性?kAudioDevicePropertyIOThreadOSWorkgroup

多线程 macOS Core-Audio DriverKit

评论

0赞 Gordon Childs 11/22/2023
我很确定工作组是针对 CoreAudio 客户端(应用程序)的,而不是像您这样的 CoreAudio 插件。您需要仔细跟踪您的司机,而不会使辍学变得更糟,以找到您错过最后期限的地方。也许您的 IPC 方法 () 不够实时,共享内存缓冲区会更好?说到IPC官僚主义,当你可以有一个AudioDriverKit驱动程序来做所有事情时,为什么还要有一个ASP + DriverKit驱动程序呢?OSAction
0赞 tuple_cat 11/22/2023
Driverkit 可从 Big Sur 获得,但 AudiodriverKit 只能从 Monterey 获得,这就是我们需要 AudioServerPlugin 的原因。
0赞 Gordon Childs 11/22/2023
好的 - 也许司机偶尔会落后 - 增加有帮助吗?kAudioDevicePropertySafetyOffset

答: 暂无答案