硬件卸载 APO 效果

在 Windows 10 版本 1511 及更高版本中,支持卸载音频处理对象 (APO)。 使用硬件卸载 ADO 时,除了可能的性能增强功能外,还可实现显著节能。

在硬件卸载播放期间可以加载两种类型的 APO。

  1. 卸载流效果 (OSFX)
  2. 卸载模式效果 (OMFX)

硬件卸载的 APO 效果概述

硬件卸载音频处理和硬件卸载 APO

在 Windows 8 中,音频引擎经过重新设计,可用于已卸载到独立于但已连接到计算机主音频系统的硬件设备中的音频流。 这称为硬件卸载。 有关详细信息,请参阅硬件卸载的音频的处理

硬件卸载功能主要用于具有较大缓冲区大小的低能耗方案。 例如,在支持系统的低功率音频 (LPA) 播放期间,音频缓冲区大小或周期性可能设置为 1 秒,以便 CPU 不会频繁唤醒以处理小缓冲区(例如每 10 毫秒)。

实现硬件卸载的 APO 以及硬件卸载的音频处理可最大程度地提高电源效率。

下图显示了音频处理对象体系结构。 关系图右侧显示了一个应用程序,该应用程序与硬件卸载的 OSFX 和 OMFX 效果通信。

Diagram showing audio driver architecture with application communicating to hardware offloaded OSFX and OMFX effects, drivers, and audio hardware.

实现硬件卸载的 APO 效果

硬件卸载的 APO 必须遵循音频处理对象体系结构实现音频处理对象中所述的相同基本要求和设计原则。

支持的音频格式实现准则

对于硬件卸载的 APO,必须针对受支持的音频格式提供一些额外的注意事项。

每个 APO 都会实现 IAudioProcessingObject::IsInputFormatSupported 方法,该方法在音频图生成过程中用于确定输出音频格式以及是否需要任何格式转换。

HRESULT IsInputFormatSupported(
  [in, optional]  IAudioMediaType *pOppositeFormat,
  [in, optional]  IAudioMediaType *pRequestedInputFormat,
  [out, optional] IAudioMediaType **ppSupportedInputFormat
);

卸载呈现终结点可以支持多种格式,包括主机/系统引脚呈现支持的默认格式。 卸载 APO 应支持所有这些格式,以便呈现流(使用支持的格式)无需执行任何其他格式转换。

卸载 SFX 可以实现格式转换并接受更广泛的格式。 例如,如果卸载 SFX 提供耳机虚拟化(即将 5.1 声道音频转换为立体声),则应为此方法中的相应输入/输出对返回 S_OK。

卸载 SFX 应查看卸载引脚支持的格式并同时支持/扩展这些功能。

卸载 MFX 无法更改输入流的格式,但仍需要支持卸载终结点提供的各种格式,并消除任何不必要的格式转换。

在卸载引脚中呈现期间,该引脚上只有一个流处于活动状态,因此不会混合流。 因此,不需要在流级别和模式级别处理音频。 因此,音频效果可能不需要同时作为流效果和模式效果启用。 卸载的终结点将支持更多流,并且根据系统的处理体系结构,卸载处理可能需要纳入 SFX/MFX 中。

INF 文件条目

实现以下 INF 文件条目,以定义将在卸载播放期间加载的效果。 INF 文件属性键指示音频终结点生成器将卸载的 APO 的 CLSID 设置为效果属性存储。 此信息用于生成音频图,该图将用于通知高级应用哪些效果已实施。

属性键 GUID
PKEY_FX_Offload_StreamEffectClsid {D04E05A6-594B-4FB6-A80D-01AF5EED7D1D},11
PKEY_FX_Offload_ModeEffectClsid {D04E05A6-594B-4FB6-A80D-01AF5EED7D1D},12
PKEY_SFX_Offload_ProcessingModes_Supported_For_Streaming {D3993A3F-99C2-4402-B5EC-A92A0367664B},11
PKEY_MFX_Offload_ProcessingModes_Supported_For_Streaming {D3993A3F-99C2-4402-B5EC-A92A0367664B},12

实现音频处理对象
Windows 音频处理对象