AUAudioUnit和AudioUnit有啥区别

Posted

技术标签:

【中文标题】AUAudioUnit和AudioUnit有啥区别【英文标题】:What is the difference between AUAudioUnit and AudioUnitAUAudioUnit和AudioUnit有什么区别 【发布时间】:2017-06-02 08:57:40 【问题描述】:

我看到了关于 Core Audio 的 WDC 2016 conference,并从 29 分钟 Doug Wyatt 开始谈论实时音频。因为我正在开发一个高性能的音频应用程序,所以我需要这样做。

但我注意到他使用了AUAudioUnit,但在我的 C 应用程序中(我更喜欢使用 C/C++ 进行音频代码,我遵循Chris Adamson advices)。

所以我有 3 个问题:

AudioUnit 和 AUAudioUnit 有什么区别? 据我所知,我阅读了An audio unit is of type AudioComponentInstance as defined in AudioComponent.h,而 AUAudioUnit 将是它的包装类。

为什么我不能在 C/C++ 项目中使用 AUAudioUnit?它只是一个 Swift 的东西吗?

如果是,我应该继续使用 C/C++ 开发我的音频单元图和节点,还是应该切换到 Swift 类 AUAudiounit

【问题讨论】:

【参考方案1】:

1) 我认为描述 AUAudioUnit 和 AudioUnit 之间区别的最佳方式是 AUAudioUnit 是一个 Objective-C 类,而 AudioUnit 是一组 (C/C++) API,它们共同充当 AudioUnit 框架。 (顺便说一句,AudioUnit 现在是 AudioToolbox 框架的一部分)

2) AUAudioUnit 是一个 Objective-C 类。我不知道是否可以从 C/C++ 链接到 objc,但如果是这样,那将不是很容易做到。根据您的潜在问题,可能甚至不是最好的办法。

3) 这实际上取决于您打算如何处理您的应用程序。 CoreAudio & AudioToolBox 框架中有很多 C/C++ API,包括 AudioComponent.h。因此,如果这就是您正在寻找的内容,您可以直接在您的 C/C++ 应用程序中完美地使用它。

直接查看 CoreAudio 和 AudioToolbox 标头对我很有帮助。里面有很多有用的信息。

【讨论】:

以上是关于AUAudioUnit和AudioUnit有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

AUAudioUnit & AudioUnitGetProperty、AudioUnitSetProperty

在自定义 AUAudioUnit 中查找爆裂声和爆裂声的原因

如何创建实现多个音频单元的 AUAudioUnit?

iOS 上的低延迟音频输出问题(又名如何击败 AUAudioUnit sampleRate、maximumFramesToRender 和 ioBufferDuration 提交)

AUAudioUnit无法播放背景错误代码561145187中的音频

AudioUnit - 在 Swift 中控制左声道和右声道输出