"Windows音频驱动"翻译系列总目录: https://blog.csdn.net/danteLiujie/article/details/102530417
目录
4. 硬件分担 (hardware offloaded) APO音效
6. Windows 音频通用驱动 (Universal Drivers)
本文简单总结了Windows 10里面有些什么新内容.
1. 功能总结
以下是Windows 10里面的新音频特性.
2. 音频低时延性能改善
音频时延是从声音生成到被听到之间的间隔. 在以下关键场景中, 做到低时延是非常重要的:
- 专业音频
- 音乐制作和混音
- 通信, 比如Skype
- VR和AR(虚拟现实和现实增强, Virtual and Augmented Reality)
- 游戏Games
设备总时延是以下组件时延的总和:
- 操作系统
- APO(Audio Processing Objects)
- 音频驱动(Audio Driver)
- 音频驱动(Audio Hardware)
Windows 10中改善了OS造成的时延. 在不更改驱动的情况下, Windows 10的应用程序的时延是4.5~16ms. 如果更新驱动来使用新的低时延DDI(Device Driver Interface, 设备驱动接口)来处理音频数据, 时延会降的更低. 如果驱动支持3ms音频buffer, 那么往返时延(roundtrip latency)大概是10ms.
音频堆栈支持多种数据包大小和动态调整数据包大小,以便根据用户的情况优化延迟和功耗之间的权衡。另外,将对流进行优先级管理,让高优先级流(例如电话)占有专用资源。
为了使音频驱动程序支持低时延,Windows 10提供了以下3个新特性:
- [必须] 声明每种模式支持的最小缓冲区大小。
- [可选,但推荐] 改善驱动程序和OS之间的数据流协作。
- [可选,但建议使用] 注册驱动程序资源(中断,线程),以便在低延迟情况下可由OS保护它们。有关更多信息,请参见低延迟音频。
3. 信号处理模式和音频分类
3.1. 信号处理模式
驱动程序声明每个设备支持的音频信号处理模式。
音频类别(由应用程序选择)映射到音频模式(由驱动程序定义)。Windows定义了七个音频信号处理模式。OEM和IHV可以确定要实施的模式。下表中汇总了这些模式。
模式 | 渲染/捕获 | 描述 |
原始(Raw) | Both | 原始模式下不应对流应用任何信号处理。 应用程序可以请求完全未经处理的原始流,并执行自己的信号处理。 |
默认(Default) | Both | 此模式定义默认的音频处理 |
电影(Movies)* | 渲染 | 电影音频播放 |
媒体(Media) * | Both | 音乐音频播放(大多数媒体流的默认设置) |
语音 (Speech)* | Capture | 人声抓取(例如: 输入到Cortana) |
通信(Communication)* | Both | VOIP渲染和捕获(例如: Skype,Lync) |
通知(Notification)* | Render | 铃声,警报,警报等 |
音频设备驱动程序需要至少支持Raw或Default模式。 支持其他模式是可选的。
为语音,电影,音乐和通讯分配了专用模式。 音频驱动程序将能够根据流类型定义不同的音频格式和处理类型。
3.2. 音频类型
下表显示了Windows 10中的音频类别。
为了通知系统音频流的使用,应用程序可以选择用特定的音频流类别标记该流。在Windows 10中,有九种音频流类别。
类别 | 描述 |
电影(Movie)* | 带有对话框的电影,视频(替换ForegroundOnlyMedia) |
媒体(Media)* | 媒体播放的默认类别(替换BackgroundCapableMedia) |
游戏聊天(Game Chat)* | 游戏内用户之间的通信(Windows 10中的新类别) |
语音(Speech)* | 语音输入(例如个人助理)和输出(例如导航应用程序)(Windows 10中的新类别) |
通讯(Communications) | VOIP,实时聊天 |
警报(Alerts) | 闹钟,铃声,通知 |
声音特效(Sound Effects) | 哔声,叮当声等 |
游戏媒体(Game Media) | 在游戏音乐中 |
游戏特效(Game Effects) | 球弹跳,汽车发动机声音,子弹等。 |
其他 | 未分类的流 |
* Windows 10的新功能.
更多信息请参考音频信号处理模式 和APO框架.
4. 硬件分担 (hardware offloaded) APO音效
Windows 10支持硬件分担APO音效。可以将APO加载到分担引脚(offload pin)的顶部。这样可以在软件和硬件中完成音频处理。另外,处理可以动态地改变。当硬件资源足够时,可以将部分或全部处理从软件APO移到DSP,然后在DSP的负载增加时移回软件APO。
有关更多信息,请参见实现硬件卸载的APO效果
5. Cortana语音激活-语音唤醒
个人助理技术Cortana首次在2013年的Microsoft BUILD开发者大会上演示。语音激活是一项使用户可以通过说出特定的短语"Hey Cortana"来在各种设备电源状态调用语音识别引擎的功能。"Hey Cortana"语音激活(VA)功能允许用户通过使用他或她的声音在他或她的活动场景(即当前在屏幕上显示的内容)中获得更好的体验(例如Cortana)。该功能适用于屏幕关闭,空闲或完全激活时的情况。如果硬件支持缓冲,则用户可以将关键字短语和命令短语链接在一起。这为用户改善了端到端的语音体验。有关更多信息,请参阅语音激活。
6. Windows 音频通用驱动 (Universal Drivers)
Windows 10支持一种驱动程序模型, 适用于PC和2合一PC (2:1’s, 译注: 同时具有平板电脑和笔记本电脑功能的便携式计算机) ,以及手机和小屏幕平板电脑. 这意味着IHV可以在一个平台上开发其驱动程序,并且该驱动程序可以在所有设备(台式机,笔记本电脑,平板电脑,电话)中使用。结果是减少了开发时间和成本。
为了开发通用音频驱动程序,请使用以下工具:
In order to develop Universal Audio Drivers, use the following tools:
- Visual Studio 2015:新的驱动程序设置允许将“目标平台”设置为“通用”以创建多平台驱动程序。
- APIValidator:这是WDK工具,用于检查驱动程序是否通用,并突出显示需要更新的调用。
- GitHub中的音频示例:sysvad和SwapAPO已转换为通用驱动程序。有关更多信息和GitHub示例代码的指针,请参见Universal Windows Drivers for Audio。
7. 音频驱动程序的资源管理
在低成本移动设备上创建良好音频体验的, 一个挑战是某些设备具有各种并发限制。例如,设备可能最多只能同时播放6个音频流,并且仅支持2个分担(offload)流。当移动设备上有正在进行的电话通话时,该设备可能仅支持2个音频流。设备正在捕获音频时,设备最多只能播放4个音频流。
Windows 10包含一种机制来表达并发约束,以确保能够播放高优先级的音频流和电话。如果系统没有足够的资源,则终止低优先级流。该机制只在电话和平板上有效, 在台式机或笔记本电脑上无效。
有关更多信息,请参见音频硬件资源管理。
8. 音频驱动的PNP 重平衡
在需要重新分配内存资源的某些PCI方案中使用PNP重新平衡。在这种情况下,某些驱动程序将被卸载(unloaded),然后在不同的内存位置重新加载,以创建可用的连续内存空间。在两种主要情况下会触发重新平衡:
- PCI热插拔:用户插入设备,并且PCI总线没有足够的资源来为新设备加载驱动程序。属于此类的设备的一些示例包括Thunderbolt,USB-C和NVME存储。在这种情况下,内存资源需要重新排列和合并(重新平衡)以支持添加的其他设备。
- PCI可调整大小的BAR:将设备驱动程序成功加载到内存后,它会请求额外的资源。比如高端图形卡和存储设备。有关更多信息,请参见为PortCls音频驱动程序实现PnP重新平衡。