About the Windows Core Audio APIs

   Core Audio APIs是在Windows Vistat中的一组新的用户态的音频组件,它改善了应用程序操作音频的能力。包括以下几个方面:

  • 低延迟,几乎无故障的音频流;
  • 提供了可靠性;
  • 提供了安全性;
  • 分配了特定的系统级别的规则(console、mulitimedia,comunications)给单独的音频设备。
  • 用户可以直接操作,相应的endpoint设备的软件抽象(如:扩音器,耳麦及麦克风)

   

以下的高层API是以Core Audio APIs来工作的。

  • DirectSound;
  • DirectMusic;
  • Windows mulitimedia waveXxx and mixerXxx functions
  • Media Foundation
  • Streaming Audio Renderer(SAR)

   

绝大多数的音频应用程序与以上的高层次的API交互而不是直接操作底层的Core Audio API。例如以下一些应用可能用到高等级的API:

  • 媒体播放器
  • DVD播放器
  • 游戏
  • 商用软件

通常这些应用用到DirectSound和媒体的底层函数。

 

   Core Audio API 包括:

  • Mulitmedia Device(MMDevice) API:用这些API来枚举系统中的音频设备;
  • Windows Audio Session API(WASAPI):用这些API来创建和管理来自音频设备的音频流。
  • DeviceTopology API:用这些API来直接访问声音适配器中的硬件数据通路的拓扑特性(如音量控制,复用器等)
  • EndpointVolume API: 用这些API直接访问音频设备的声音控制。这些API通常是给那些以独占模式管理音频流的应用程序。

 

   这些API提供对于设备的抽象概念,这些概念被描述成为Audio Endpoint Device。每个API包含很多COM接口。由于音频需要低延时和精确的同步,所以MMDevice、WASAPI、DeviceTopology和EndpointVolume APIs不依赖于.NET框架。

  除了vista之外其他的操作系统都不支持Core Audio API。包括:Microsoft Windows Server 2003, Windows XP, Windows ME, Windows 2000,和Windows 98。

 

  Vista中的音量控制被分为4中级别:

  • IAudioStream接口提供session每个流的音量控制;
  • methods in the IAudioStreamVolume interface;
  • IChannelIAudioVolume接口提供seesion中每个通道的音量控制。
  • ISimpleAudioVolume接口控制每一个Session的主音量。

 

   假设需要改变设备的音量大小,则需要操作IAudioEndpointVolume接口。

   例如:

// 初始化 COM :
CoInitializeEx(NULL, COINIT_MULTITHREADED)
//   获取 IMMDeviceEnumerator 设备指针:
CoCreateInstance(__uuidof(MMDeviceEnumerator), NULL,
                     CLSCTX_ALL, __uuidof(IMMDeviceEnumerator),
                     (void**)&m_pEnumerator)
// 获取 IMMDevice 指针,这是是所有 MM 设备 — 多媒体设备的根
//  其中第一个参数是指明设备的用途
n         第二个参数指明设备角色
m_pEnumerator->GetDefaultAudioEndpoint(eRender, eMultimedia, &m_pDeviceOut)
// 获取 IAudioEndpointVolume 指针:(我们需要控制系统音量所对应的对象)
m_pDeviceOut->Activate(__uuidof(IAudioEndpointVolume),CLSCTX_ALL,NULL,(void**)&m_AudioEndpointVolume)
//根据需要调用该对象的 API ,进行操作。

参考:

https://www.yuque.com/docs/share/786aeb44-fe2b-4c49-9d2a-5798285aa74c

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值