概念

Core Audioimage.png

Core Audio的特性

image.png

Core Audio类关系图

image.png

Core Audio APIs

MMDevice API
客户端发现音频终端设备,枚举出所有可使用的音频设备属性以及确定其功能,并为这些设备创建驱动程序实例。是最基本的 Core Audio API,服务于其他3个 APIs。
WASAPI
客户端应用程序可以管理应用程序和音频终端设备之间音频数据的流。
DeviceTopology API
客户端可以遍历音频适配器设备和音频终端设备的内部拓扑,并单步执行将设备链接到另一台设备的连接。通过 DeviceTopology API 中的接口和方法,客户端程序可直接沿着音频适配器 (audio adapters) 的硬件设备里的数据通道进入布局特征(例如,沿着音频终端设备的数据路径上进行音量控制) 。
EndpointVolume API
客户端可以控制和监视音频终端设备的音量级别。

Shared Mode 共享模式

共享模式与旧的 KMixer 模式有一些相似之处。在共享模式下,应用程序写入传递给系统音频引擎的缓冲区。音频引擎负责将所有应用程序的音频混合在一起并将混合发送到音频驱动程序。与 KMixer 一样,这会引入延迟。音频引擎有时不仅需要转换音频数据,而且还必须混合来自多个共享模式应用程序的数据。这需要时间,通常是几毫秒。在大多数情况下,这种延迟是无法察觉的。

Exclusive Mode 独占模式

独享是微软对专业音频世界的回应。独占模式的应用程序具有对硬件的独占访问权限,音频数据直接从应用程序传输到驱动程序再到硬件。独占模式的流媒体完全绕过了 Windows 音频引擎。它有效地锁定了所有的应用程序,相比于共享模式,独占模式音频的一个明显优势是,随着音频引擎的退出,它所带来的延迟被完全消除了。
但是独占模式流媒体的最大缺点是,对音频格式没有多少灵活性。只能使用音频适配器原生支持的格式。如果需要进行数据格式转换,应用程序将需要手动完成。值得指出的是,独占模式的流媒体实际上并不保证对应用程序可用。它是用户可配置的。用户可以为一个给定的音频适配器完全禁用独占模式音频。

音频设备种类

image.png

音频终端设备

image.png

音频适配设备

image.png

音频设备示意图

image.png

学习资料

Windows Core Audio 音频开发技术指南
https://zhuanlan.zhihu.com/p/381842003