003 - windows api - Device Roles

windows的音频接口之前没接触过,今天先翻译一个简短的文章,介绍音频设备的角色(role)。原文链接:Device Role。
【003 - windows api - Device Roles】译文:
如果一个系统有两个或者多个音频渲染终端设备,其中一个设备或许最适合播放某种音频内容,另一个设备或许最适合播放另一种音频内容。比如,系统有两个音频渲染设备,用户或许会选择其中一个设备来播放音乐,选择另一个设备来播放系统通知声音。
相似地,如果一个系统有两个或者多个音频获取终端设备,其中一个设备或许最合适捕获某种音频内容,而另一个设备或许更适合捕获另一种音频内容。举个例子,如果一个系统有两个音频获取设备,用户可能会选取一个设备录制现场音乐,使用另一个来进行语音命令。
音频设备有三种角色,Console、Communications 和 Multimedia。下面的描述了被ERole 枚举中三个常量eConsole, eCommunications 和 eMultimedia定义的角色。

  1. eConsole:负责和电脑进行交互,例如,在游戏和系统通知时会作为渲染设备,在语音命令时作为音频获取设备。
  2. eCommunications:负责和其他人进行语音交流,例如,在聊天和语音通话时作为音频渲染和音频捕获设备。
  3. eMultimedia: 负责播放或者录制音频声音,例如,在看电影或者听音乐的时候作为音频渲染设备,在记录解说或者现场音乐作为音频获取设备。
一个特定的音频获取或者渲染设备,可能会被标记为上面提到的三个角色中的一个、两个或者全部,甚至什么也不标记。任何时候,上面的三个角色只会被指定给一个(仅且一个)音频获取设备和一个(仅且一个)音频渲染设备。也就是说,对音频获取设备的角色绑定和对音频渲染设备的角色绑定相互独立,两者没什么关系。
一个应用可以通过单个音频渲染终端设备播放它的所有输出流,通过单个音频获取设备捕获所有的输入流。或者应用可以选择一部分输出流在某个音频渲染设备播放,剩下的输出流在另一个音频渲染设备播放。相似地,应用可以选择在一个音频捕获设备获取部分输入流,在另一个音频获取设备上获取其他输入流。也就是说,应用可以根据每个流的具体情况选择相应角色最合适的音频设备。
举个例子,网络语音应用可以将包含来电通知的输出流指定给角色为eConsole的音频输出设备。
ps:测试的时候HDMI设备角色会被赋值eCommunications,不知道为什么。

    推荐阅读