Windows音频体系UAA
+ -

Windows10应用层音频框架及模块关系图

2024-04-08 16 0

在 Windows 操作系统中,处理音频缓冲的主要组件包括以下几个:
其中各个模块的DLL依赖关系如下:
音频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 音频子系统中扮演着关键的角色,确保音频设备的正确连接和管理,并协调音频流的正确路由

总述

这些组件共同工作,以提供完整的音频功能。音频引擎负责实际的音频处理任务,而音频服务、音频端点构建器和音频压缩管理器负责管理和协调音频设备、流和编解码器,以确保系统的稳定性和音频功能的正常运行。

0 篇笔记 写笔记

获取默认的音频设备属性getDefaultDevice
使用COREAPI获取默认音频属性wstring DeviceAPOInfo::getDefaultDevice(bool input, int role){ wstring result; IMMDeviceEnumerator* enumerator = NULL; ......
Windows音频音擎audiodg与APO关系
APO与其他音频过滤框架(如VST)的区别在于,APO是Windows音频引擎使用的过滤框架。VST:Virtual Studio TechnologyWindows音频引擎是Windows音频堆栈的核心组件。它的作用是在单个应用程序音频流和硬件音频设备之间架起桥梁。因此,它可以处理各种任务......
使用WASAPI随机打开默认麦克风并录音
// mictest.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include #include #include #inc......
自动挂机麦克风录音测试
要则试麦克风重复打开关闭的功能,如果手动也太麻烦了。为了让打开关闭的时间更随机一点,使用WASAPI做了这么一个小功能。#include #include #include #inc......
OBS模块WASAPI的其中OBS_DECLARE_MODULE和OBS_MODULE_USE_DEFAULT_LOCALE
OBS插件模块WASAPI用于实现Windows音频的。其源文件目录位于:obs-studio-masterpluginswin-wasapi源文件有:CMakeLists.txtdata //资源文件目录enum-wasapi.cppenum-wasapi.hppplugin-m......
OSB-WASAPI插件obs_module_load函数
obs_module_load是OBS插件模块必须实现的函数,其对应于结构体obs_module中load函数指针: bool (*load)(void); //函数名必须为obs_module_loadWASAPI的插件函数代码如下:bool obs_module_load(void){......
Windows10应用层音频框架及模块关系图
在 Windows 操作系统中,处理音频缓冲的主要组件包括以下几个:其中各个模块的DLL依赖关系如下:音频各个模块之间的关系图如下: 核心音频 API 包括在 Audioses.dll 和 Mmdevapi.dll 用户模式系统模块中实现的 MMDevice API、WASAPI、DeviceTo......
作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!