动态格式更改

动态格式更改是 Windows 7 及更高版本中的 Windows 操作系统中的一项功能,它允许动态更改在音频应用程序和音频适配器之间流式传输音频数据时使用的格式。 动态格式更改可适应高清多媒体接口 (HDMI) 设备中的音频流式处理行为。 本主题概述了动态格式更改,并介绍了其工作原理。

以下列表显示了使用动态格式更改的方案。

  • HDMI 设备提供新功能。 当 HDMI 设备流式传输音频和/或视频数据时,用于音频和视频传输的总 HDMI 带宽是固定的,并且在容量分配方面优先考虑视频信号。 这意味着,如果 HDMI 显示设备连接到计算机并更改显示分辨率,这会影响用于将音频数据传输到计算机的剩余带宽大小。

    例如,假设最初配置 HDMI 设备时将数据格式设置为具有特定显示模式的 192 KHz、16 位立体声。 更改为其他显示模式时,用于流式处理音频数据的剩余带宽可能不足以满足 192 KHz 格式。 因此,设备驱动程序会通知已连接计算机的音频服务显示模式的更改,这会导致音频驱动程序和音频服务重新协商音频数据格式。 如果无法在剩余带宽内流式传输当前选定的 192 KHz 格式,则选择新格式。 有关格式协商过程的详细信息,请参阅格式协商

    在另一个与 HDMI 相关的动态格式更改方案中,音频设备被拔出,并插入了支持 HDMI 的新设备。 HDMI 设备的设备驱动程序会生成格式更改事件,音频服务会与设备驱动程序重新协商音频数据格式。

  • 某些独立音频设备提供硬件控件,用户可以使用这些控件来更改音频数据格式。 在此方案中,用户灰操作环绕声音放大器上的控制旋钮,例如,选择音频数据格式。 如果存在连接到独立音频设备的计算机,则这种新选择的数据格式会使已连接计算机上的音频驱动程序重新协商数据格式,并可能会更改它。

  • 控制面板中“声音”小程序的第三方 UI 提供启用或禁用系统效果的选项。 开发自己的系统效果音频处理对象 (sAPO) 时,你还可以为控制面板中的“声音”小程序提供自定义 UI。 此自定义 UI 可以包括对“声音”小程序的“增强”选项卡和/或“高级”选项卡的修改。 在此方案中,用户在“增强”选项卡中选中一个复选框,以启用或禁用需要更改音频数据格式的全局系统效果 (GFX) 功能。 用户所做的选择会导致 HDMI 驱动程序生成格式更改事件。 音频服务会接收有关此事件的通知,并与音频驱动程序重新协商以选择音频数据的新格式。

为了支持符合 HDMI 和 IEC61937 的压缩音频格式,如 Dolby Digital 和数字影院声 (DTS),Windows 7 及更高版本的 Windows 操作系统提供了一组新的子类型 GUID,供内核流式处理 (KS) 属性和结构使用。 国际电工委员会 (IEC) 标准 IEC 61937 适用于传输非线性 PCM 编码位流的数字音频接口。 有关子类型 GUID 的详细信息,请参阅 Ksmedia.h 中的 KSDATAFORMAT_SUBTYPE_IEC61937_Xxx GUID。

注意当音频终结点生成器收到动态格式更改通知,并且设备驱动程序不支持建议的数据格式时,终结点生成器随后将重新计算新的默认设备数据格式。

如果重新设计的音频驱动程序现在支持新格式,它可以强制终结点生成器选择新格式作为设备的默认格式。 若要强制将新格式转换为设备的默认格式,音频驱动程序必须使其收到的有关旧格式的格式支持查询失败。 失败的格式支持查询会触发格式更改通知,终结点生成器随后会计算设备的新默认格式。