Windows 10:针对音频驱动程序的新增功能
Windows 10:针对音频驱动程序的新增功能
本文详细介绍了Windows 10系统中针对音频驱动程序的新增功能,包括低延迟音频改进、信号处理模式和音频类别、硬件卸载APO效果、Cortana语音激活、Windows音频通用驱动程序、音频驱动程序的资源管理和PNP重新平衡等功能。内容专业且深入,适合对音频驱动程序开发感兴趣的读者。
功能概述
以下是Windows 10中的新音频功能。
低延迟音频改进
音频延迟是创建声音的时间和听到声音的时间之间的延迟。对于以下几个关键方案,低音频延迟非常重要:
- 专业音频
- 音乐创作和混合
- Skype等通信
- 虚拟现实与增强现实
- 游戏
设备的总延迟是以下组件的延迟之和:
- 操作系统
- 音频处理对象
- 音频驱动程序
- 音频硬件
在Windows 10中,已完成减少OS中的延迟的工作。如果没有驱动程序更改,Windows 10中的应用程序将经历4.5-16毫秒的较低延迟。此外,如果驱动程序已更新,现可利用使用小型缓冲区处理音频数据的新低延迟DDI,则延迟将减少更多。如果驱动程序支持3ms音频缓冲区,则往返延迟约为10毫秒。
音频堆栈支持多个数据包大小和动态数据包大小调整,以便根据用户的场景优化延迟和电源之间的权衡。此外,将确定流的优先级,以便确保高优先级流(例如电话呼叫)具有专用资源。
为了使音频驱动程序支持低延迟,Windows 10提供以下3项新功能:
- [必需]声明每个模式下支持的最小缓冲区大小。
- [可选,但建议]改进驱动程序和OS之间的数据流协调。
- [可选,但建议]注册驱动程序资源(中断、线程),以便在低延迟方案中受OS保护。有关详细信息,请参阅低延迟音频。
信号处理模式
驱动程序会为每个设备声明支持的音频信号处理模式。音频类别(由应用程序选择)映射到音频模式(由驱动程序定义)。Windows定义了七种音频信号处理模式。OEM和IHV可以确定要实现的模式。下方所示的表中汇总了这些模式。
模型 | 呈现/捕获 | 说明 |
---|---|---|
原始 | 推送、请求和匿名 | 原始模式指定不应对流应用任何信号处理。应用程序可以请求完全未触及的原始流并执行其自己的信号处理。 |
默认 | 推送、请求和匿名 | 此模式定义默认音频处理。 |
电影* | 呈现 | 电影音频播放 |
媒体* | 推送、请求和匿名 | 音乐音频播放(大多数媒体流的默认值) |
语音* | Capture | 人声捕获(例如Cortana的输入) |
通信* | 推送、请求和匿名 | VOIP呈现和捕获(例如Skype、Lync) |
通知* | 呈现 | 铃声、闹钟、警报等。 |
音频设备驱动程序至少需要支持原始模式或默认模式。支持其他模式是可选的。语音、电影、音乐和通信的专用模式。音频驱动程序将能够根据流类型定义不同类型的音频格式和处理。
音频类别
下表显示了Windows 10中的音频类别。为了通知系统音频流的使用情况,应用程序可以选择使用特定的音频流类别标记该流。在Windows 10中,有9个音频流类别。
类别 | 说明 |
---|---|
电影* | 电影,带对话框的视频(替换ForegroundOnlyMedia) |
媒体* | 媒体播放的默认类别(替换BackgroundCapableMedia) |
游戏聊天* | 用户之间的游戏内通信(Windows 10中的新类别) |
语音* | 语音输入(例如个人助手)和输出(例如导航应用)(Windows 10中的新类别) |
通信 | VOIP,实时聊天 |
警报 | 警报、铃声、通知 |
声音效果 | 蜂鸣声、叮当声等 |
游戏媒体 | 游戏内音乐 |
游戏效果 | 球弹跳、汽车引擎声、子弹等。 |
其他 | 未分类流 |
*Windows 10中的新增功能。有关详细信息,请参阅音频信号处理模式和音频处理对象体系结构。
硬件卸载APO效果
Windows 10支持硬件卸载APO效果。可以在卸载引脚顶部加载APO。这样就可以在软件和硬件中完成音频处理。此外,处理还可以动态更改。当有足够的硬件资源时,可以将部分或全部处理都从软件APO移到DSP,然后在DSP中的负载增加时将其移回软件APO。有关详细信息,请参阅实现硬件卸载APO效果。
Cortana语音激活 - 语音唤醒
Cortana这项个人助手技术于2013年在Microsoft BUILD开发人员大会上首次面世。语音激活是一项功能,让用户可通过说出特定短语“你好小娜”,从各种设备电源状态调用语音识别引擎。利用“你好小娜”语音激活(VA)功能,用户可使用其语音在活动上下文(即当前在屏幕上的内容)之外快速参与体验(例如Cortana)。该功能专为屏幕关闭、空闲或完全处于活动状态的场景设计。如果硬件支持缓冲,则用户可以将关键短语和命令短语链接在一起。这可改善用户的端到端语音唤醒体验。有关详细信息,请参阅语音激活。
Windows音频通用驱动程序
Windows 10支持一种适用于电脑、2:1和Windows 10版手机和小屏幕平板电脑的驱动程序模型。这意味着IHV可以在一个平台中开发其驱动程序,而该驱动程序将适用于所有设备(台式机、笔记本电脑、平板电脑、手机)。结果是缩短开发时间和降低开发成本。
若要开发通用音频驱动程序,请使用以下工具:
- Visual Studio 2015:新的驱动程序设置允许将“目标平台”设置为“通用”,以创建多平台驱动程序。
- APIValidator:这是一个WDK工具,可用于检查驱动程序是否通用,并突出显示需要更新的调用。
- GitHub中的音频示例:已将sysvad和SwapAPO转换为通用驱动程序。有关详细信息和指向GitHub示例代码的指针,请参阅音频的通用Windows驱动程序。
音频驱动程序的资源管理
在低成本移动设备上打造良好音频体验的一个挑战是,有些设备具有各种并发性约束。例如,设备可能只能同时播放最多6个音频流,并且仅支持2个卸载流。当移动设备上有活动电话呼叫时,设备可能仅支持2个音频流。当设备在捕获音频时,设备最多只能播放4个音频流。
Windows 10包含一种机制,用于表达并发性约束,以确保高优先级音频流和移动电话呼叫能够播放。如果系统没有足够的资源,则会终止低优先级流。此机制仅适用于手机和平板电脑,而不适用于台式机或笔记本电脑。有关详细信息,请参阅音频硬件资源管理。
音频驱动程序的PNP重新平衡
PNP重新平衡用于某些需要重新分配内存资源的PCI方案中。在这种情况下,会卸载一些驱动程序,然后在不同的内存位置重新加载这些应用程序,以便创建可用连续内存空间。可以在两个主要场景中触发重新平衡:
- PCI热插拔:用户插入设备,PCI总线没有足够的资源来加载新设备的驱动程序。属于此类别的一些设备示例包括Thunderbolt、USB-C和NVME存储。在此场景中,内存资源需要重新排列和合并(重新平衡),以支持要添加的其他设备。
- PCI可调整大小的BAR:成功将设备驱动程序加载到内存中后,它会请求其他资源。一些设备示例包括高端显卡和存储设备。有关详细信息,请参阅为PortCls音频驱动程序实现PNP重新平衡。