音频终结点设备
术语 终结点设备 是指位于应用程序程序发起或终止的数据路径的一端的硬件设备。 音频终结点设备的示例包括扬声器、耳机、麦克风和 CD 播放器。 沿着数据路径移动的音频数据可能会在应用程序和终结点设备之间遍历许多软件和硬件组件。 尽管这些组件对于终结点设备的作至关重要,但它们往往对用户不可见。 用户更有可能在直接作的终结点设备方面进行思考,而不是从终结点设备插入的音频适配器上的设备或处理流入和传出这些适配器的音频流的软件组件而言。
为了避免与终结点设备混淆,本文档将音频适配器上的设备称为 适配器设备。
下图显示了音频终结点设备与适配器设备有何不同。
示例
在上图中,下面是终结点设备的示例:
- 扬声器
- 麦克风
- 辅助输入设备
下面是适配器设备的示例:
- 波形输出设备(包含数字到模拟转换器)
- 输出控制设备(包含音量和静音控件)
- 波形输入设备(包含模拟到数字转换器)
- 输入控制设备(包含音量控制和多路复用器)
通常,音频应用程序的用户界面是指音频终结点设备,而不是适配器设备。 Windows Vista 通过直接支持终结点设备抽象来简化用户友好应用程序的设计。
某些终结点设备可能会永久连接到适配器设备。 例如,计算机可能包含集成到系统机箱中的内部设备,例如 CD 播放器、麦克风或扬声器。 通常,用户不会以物理方式删除这些终结点设备。
其他终结点设备可能通过音频插孔连接到音频适配器。 用户插入并拔出这些外部设备。 例如,音频终结点设备(如外部麦克风或耳机)位于电缆的一端,另一端插入适配器设备上的插孔。
适配器通过支持即插即用(PnP)的系统总线(通常是 PCI 或 PCI Express)或外部总线(USB 或 IEEE 1394)与系统处理器通信。 在设备枚举期间,即插即用管理器标识音频适配器中的设备,并注册这些设备,使其可供作系统和应用程序使用。
与适配器与外部总线(如 USB 或 IEEE 1394 总线)之间的连接不同,终结点设备和适配器设备之间的连接不支持 PnP 设备检测。 但是,某些音频适配器支持 插孔状态检测:当插入插孔或从插孔中删除插孔时,硬件将生成中断,以通知适配器驱动程序硬件配置中的更改。 Windows Vista 中的终结点管理器可以利用此硬件功能通知应用程序随时存在哪些终结点设备。 这样,终结点管理器的作类似于即插即用管理器的作,该管理器跟踪系统中存在的适配器设备。
在 Windows Vista 中,音频系统跟踪终结点设备和适配器设备。 终结点管理器注册终结点设备,即插即用管理器注册适配器设备。 注册终结点设备使用户友好型应用程序能够更轻松地引用用户直接作的终结点设备,而不是引用可能隐藏在计算机机箱中的适配器设备。 作系统报告的终结点设备在配置具有插孔状态检测的音频硬件配置中忠实地跟踪动态更改。 当终结点设备保持插入状态时,系统会枚举该设备。 当用户拔出终结点设备时,系统将停止枚举它。
在早期版本的 Windows(包括 Windows 98、Windows Me、Windows 2000 和 Windows XP)中,系统仅向应用程序显式提供 PnP 设备。 因此,应用程序必须推断终结点设备是否存在。 缺少对终结点设备的显式支持的作系统强制客户端应用程序自行执行更多工作。 例如,音频捕获应用程序必须执行以下步骤才能从外部麦克风启用捕获:
- 枚举以前由 PnP 管理器注册的所有音频捕获设备(这些是适配器设备)。
- 选择捕获设备后,通过调用 waveInOpen 函数或使用 DirectSoundCapture 或 DirectShow API 在设备上打开捕获流。
- 调用 mixerOpen 函数,并使用其他 mixerXxx 函数查找与步骤 2 中打开的捕获设备对应的MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE行。 这是一个受过教育的猜测。
- 从麦克风中取消阻止数据路径。 如果数据路径包含静音节点,则客户端必须禁用来自麦克风的信号静音。 如果捕获设备包含用于从多个输入中进行选择的多路复用器,则客户端必须选择麦克风输入。
此过程容易出错,因为执行这些作的软件在遇到其设计器未预测或未测试的硬件配置时可能会失败。
在支持终结点设备的 Windows Vista 中,连接到同一终结点设备的过程要简单得多:
- 从终结点设备的集合中选择麦克风。
- 在该麦克风上激活音频捕获接口。
作系统执行标识和启用终结点设备所需的所有工作。 例如,如果麦克风中的数据路径包含多路复用器,则系统会自动选择多路复用器中的麦克风输入。
如果应用程序(而不是实现自己的终结点识别算法)可以将标识终结点设备的任务降级到作系统,则音频子系统的行为更可靠且具有确定性。 软件供应商不再需要验证其终结点识别算法是否适用于所有可用的音频硬件设备和配置,它们只需依赖作系统进行终结点标识。 同样,硬件供应商不再需要验证每个相关的客户端应用程序是否可以轻松识别连接到其音频适配器的任何终结点设备,它们只需验证作系统是否可以识别连接到其音频适配器的终结点设备。
以下主题提供有关音频终结点设备的其他信息:
相关主题