Windows 7 中核心音频 API 的新功能

Windows Vista 中引入了核心音频 API,它提供一组新的用户模式音频组件,客户端应用程序可以使用这些组件来呈现或捕获具有改进的音频功能的音频流。 有关此 API 集的一般概述,请参阅关于 Windows Core 音频 API

Windows 7 对核心音频 API 进行了改进。 下表总结了核心音频 API 的新功能和改进:

功能 说明
一般改进 Windows 7 中改进了以下功能:
  • 在 Windows 7 共享模式流中,以低延迟模式运行。 音频引擎以拉取模式运行,延迟显著减少。 这对于需要低音频流延迟的通信应用程序而言非常有用,以便更快地进行流式处理。
  • 将新设备添加到系统时,Windows 7 提供更好的设备角色检测。 有关详细信息,请参阅使用设备角色
  • 在 Windows 7 中,可以通过计算机扬声器从便携式媒体播放器收听音乐。 可以通过使用模拟音频电缆将便携式媒体播放器插入计算机来使用此捕获监视器功能。 过去,某些 OEM 使用硬件环回在音频驱动程序中提供此功能。 在 Windows 7 中,此功能已添加到操作系统。 由于此功能在系统中而不是驱动程序中,因此可以将其用于连接到系统的任何其他设备,例如 USB 耳机。
  • Windows 7 中增强了 HDMI 音频,为高比特率格式提供支持。 通过此改进,可以支持通过 HDMI 连接器将多通道音频和压缩的音频格式传输到音频接收器。
  • 在 Windows Vista 中,Windows Media Player 仅通过用户无法更改的默认音频设备播放音乐。 若要让 Windows Media Player 将音频呈现到特定设备,必须在“声音”控制面板中更改默认设备。 在 Windows 7 中,Windows Media Player 提供 API,使应用程序能够呈现给用户选择的任何设备,而不仅仅是默认设备。
  • 在 Windows Vista 中,如果播放音频的计算机切换到省电模式,则计算机处于锁定状态,如果用户想要中断播放,必须登录并按停止键停止播放。 在 Windows 7 中,如果计算机已锁定,仍然可以使用键盘上的 HID 控件来控制播放。
  • Windows 7 可减少任何使用 DirectSound 和 DirectShow 呈现媒体的应用程序的能耗。 此外,多媒体类计划程序服务支持故障复原音频,并在生成音频样本时使用更少电量。
通信设备(新) 在此版本中,新设备类型已添加到“声音”控制面板:“通信”设备。 此设备主要用于通信,即在计算机上拨打或接听电话。 通信应用程序可以使用核心音频组件来获取对默认通信设备的终结点的引用,并为通信目的呈现音频流。 操作系统将通信设备上打开的流视为通信流。 通信流上的 WASAPI 操作类似于任何其他音频流。 有关详细信息,请参阅使用设备角色
流衰减或音频闪避(新) 自动闪避或流衰减是 Windows 7 中的一项新功能,适用于 VoIP 和统一通信应用程序。 默认情况下,通过计算机在通信设备上接收通信流(如通话)时,操作系统会降低音频流的强度。 音量选项由用户在“声音”控制面板中设置。 Windows SDK 中添加了新的 API,使应用程序能够替换默认的闪避行为。 有关实现自定义闪避功能的详细信息,请参阅提供自定义闪避行为
流路由(新) 在 Windows 7 中,改进了核心音频 API,可将音频流从现有设备无缝传输到新的默认音频终结点。 使用核心音频 API(如 Media Foundation、DirectSound 和 WAVE API)的高级音频 API 集实现了流路由功能。 使用这些 API 集播放或捕获流的媒体应用程序使用默认实现,无需修改应用程序。 但是,如果媒体应用程序直接使用 Core Audio API,则应用程序需要提供流路由实现。 为此,应用程序必须处理已添加在默认设备连接或删除时通知 WASAPI 客户端的新事件。 有关此功能的详细信息,请参阅流路由
受保护的用户模式音频 (PUMA)(已改进) PUMA 已针对 Windows 7 进行了更新以提供以下功能:
  • 在 S/PDIF 终结点上设置串行复制管理系统 (SCMS) 位,并在高清多媒体接口 (HDMI) 终结点上设置高带宽数字内容保护 (HDCP) 位。
  • 在受保护环境 (PE) 之外启用 SCMS 和 HDMI 保护控制。
有关改进的详细信息,请参阅受保护的用户模式音频 (PUMA)
WAVEFORMATEXTENSIBLE 结构已扩展到 WAVEFORMATEXTENSIBLE_IEC61937结构(新) 在 Windows 7 中,添加了一个新结构来支持 IEC 61937 传输。 WAVEFORMATEXTENSIBLE_IEC61937 扩展了 WAVEFORMATEXTENSIBLE 结构,以存储两组音频流特征:传输前编码的音频格式以及解码后音频流的特征。 新结构显式指定非 PCM 格式的有效通道数、样本大小和数据速率。 利用此信息,应用程序可以在解压缩和播放非 PCM 流后推断其质量级别。 有关详细信息,请参阅 IEC 61937 传输的表示格式
IAudioClient::Initialize(已改进) IAudioClient::Initialize 方法已改进,以指示打开音频流时可能发生的特定错误。 新的错误代码如下:
  • AUDCLNT_E_BUFFER_SIZE_NOT_ALIGNED
  • AUDCLNT_E_BUFFER_SIZE_ERROR
  • AUDCLNT_E_INVALID_DEVICE_PERIOD
有关这些错误的详细信息,请参阅 IAudioClient::Initialize 中的“返回值”部分。
IAudioCaptureClient::GetBufferIAudioRenderClient::GetBuffer(已改进) 已改进 IAudioCaptureClient::GetBufferIAudioRenderClient::GetBuffer 方法,以返回指示未检索独占模式下的终结点缓冲区的 AUDCLNT_E_BUFFER_ERROR 错误代码。 有关详细信息,请参阅 IAudioCaptureClient::GetBufferIAudioRenderClient::GetBuffer 中的“备注”。
插孔检测功能(已改进) Windows 7 中的新接口 IKsJackDescription2 扩展了 IKsJackDescription。 通过使用新接口,音频堆栈或应用程序可以获取其他插孔信息。 这包括插孔的检测功能以及设备的格式是否已动态更改。
Windows 示例(新) 已将新示例添加到 Windows SDK 来演示核心音频 API 的使用。 有关详细信息,请参阅使用核心音频 API 的SDK 示例

 

主要新接口

以下是 Windows 7 的新接口:

关于 Windows 核心音频 API