Windows10应用层音频框架及模块关系图
2024-04-08
41
0
在 Windows 操作系统中,处理音频缓冲的主要组件包括以下几个:
其中各个模块的DLL依赖关系如下:
音频各个模块之间的关系图如下:
核心音频 API 包括在 Audioses.dll 和 Mmdevapi.dll 用户模式系统模块中实现的 MMDevice API、WASAPI、DeviceTopology API 和 EndpointVolume API。
- 在独占模式下,客户端可以选择以音频端点设备支持的任何音频格式打开流。
- 在共享模式下,客户端必须以音频引擎当前正在使用的混合格式(或类似于混合格式的格式)打开流。 音频引擎audiodg的输入流和来自引擎的输出混合都采用此格式。
Windows Audio Service (audiosrv.dll):
- 全称:Windows Audio Service
- 功能: Windows 音频服务负责管理系统的音频设备和流,包括音频输入和输出设备的配置、音频会话管理、音量控制等。
- 实现: 由 audiosrv.dll 实现。
- 关系: 音频服务通过 audiodg.exe 进程与音频引擎通信。它将来自应用程序的音频请求传递给音频引擎,并处理来自音频引擎的音频数据,以便与系统其他部分交互,如音频驱动程序和硬件。
Audio Engine (audiodg.exe):
- 全称:Windows Audio Device Graph Isolation
- 功能: 音频引擎是一个独立的服务进程,负责处理音频数据的传输和处理。它与硬件交互,执行实际的音频处理工作,如混音、特效处理等。WASAPI 的客户端在共享模式下打开流,则客户端会将音频数据写入终结点缓冲区,Windows 音频引擎从缓冲区读取数据。 在此模式下,客户端与其他进程中运行的其他应用程序共享音频硬件。 音频引擎audiodg会混合来自这些应用程序的流,并通过硬件播放生成的混音。
- 实现: 由 audiodg.exe 进程实现。
- 关系: 音频引擎与其他音频服务组件(如 audiosrv.dll)相互配合,它接收来自应用程序和系统的音频数据请求,并与音频驱动程序通信,管理音频设备和处理音频数据。
核心音频 API 支持 PCM 和非 PCM 流格式。 但是,音频引擎只能混合 PCM 流。 因此,只有独占模式的流才能使用非 PCM 格式。
Audio Endpoint Builder (Audioses.dll):
- 全称:Audio Session
- 功能: 音频端点构建器负责管理音频端点设备,如扬声器、麦克风等。它处理音频设备的安装、配置和连接。
- 实现: 由 Audioses.dll 实现。
- 关系: 音频端点构建器与音频服务(audiosrv.dll)和音频引擎(audiodg.exe)之间进行通信。它确保系统中的音频设备正确配置,并与音频服务协调以确保音频设备与应用程序之间的正确交互。
Audio Compression Manager (msacm32.dll):
- 全称:Microsoft ACM Audio Filter
- 功能: 音频压缩管理器提供音频压缩和解压缩的支持,以及音频编解码器的管理。
- 实现: 由 msacm32.dll 实现。
- 关系: 音频压缩管理器与应用程序、音频服务和音频驱动程序之间进行通信。它处理音频编解码器的注册和调用,以及音频数据的压缩和解压缩。
AudioEndpointBuilder.dll
AudioEndpointBuilder.dll 是 Windows 操作系统中的一个动态链接库 (DLL),它主要负责管理音频终端(Audio Endpoints)。音频终端可以是音频设备(如扬声器、耳机、麦克风等),也可以是虚拟的音频设备(如音频驱动程序创建的虚拟音频端点)。这个 DLL 的主要功能包括:
- 设备管理:AudioEndpointBuilder.dll 负责检测和管理连接到计算机的音频设备。它负责检测新插入或移除的设备,并更新系统中的音频设备列表。
- 设备连接和断开:当用户插入或移除音频设备时,AudioEndpointBuilder.dll 负责通知系统,并执行必要的操作以连接或断开设备。例如,当你插入耳机时,它负责将系统音频流路由到耳机而不是扬声器。
- 音频会话管理:该 DLL 还负责管理系统中的音频会话。音频会话是与应用程序相关联的音频流,它负责管理应用程序生成的音频数据,并将其路由到适当的音频设备。
与其他音频模块的配合方式取决于操作系统的架构和配置。一般来说,AudioEndpointBuilder.dll 会与以下组件配合工作:
- Windows Audio Service:这个服务负责系统中的所有音频操作。AudioEndpointBuilder.dll 可能与 Windows Audio Service 一起工作,以管理音频终端的连接和断开,并确保正确地路由音频流。
- Audio Device Drivers:音频设备的驱动程序负责与硬件通信,并提供与操作系统的接口。AudioEndpointBuilder.dll 可能需要与这些驱动程序配合工作,以确保正确检测和管理连接到系统的设备。
- Audio Control Panel:这是一个用户界面,允许用户配置系统中的音频设置。AudioEndpointBuilder.dll 可能需要与音频控制面板配合工作,以反映用户对音频设备的任何更改并确保正确应用这些更改。
总的来说,AudioEndpointBuilder.dll 在 Windows 音频子系统中扮演着关键的角色,确保音频设备的正确连接和管理,并协调音频流的正确路由
总述
这些组件共同工作,以提供完整的音频功能。音频引擎负责实际的音频处理任务,而音频服务、音频端点构建器和音频压缩管理器负责管理和协调音频设备、流和编解码器,以确保系统的稳定性和音频功能的正常运行。