Window 音频架构

 

本主题概述了Windows 10音频体系结构。

Windows 10音频堆栈图1

https://docs.microsoft.com/en-us/windows-hardware/drivers/audio/images/audio-windows-10-stack-diagram.png  Windows 10音频堆栈图2

此图总结了Windows 10音频堆栈的主要元素。

1. APIs

1.1. 上层APIs:

  1. 当前支持的APIs:
    1. XAML MediaElement (C#, VB, C++)
    2. HTML <audio> 和<video> tags (用于网站和Windows Web Apps)
    3. Media Foundation (C++)
    4. Windows.Media.Capture (C#, VB, C++)
  2. 历史的废弃的APIs:
    1. DirectShow
    2. DirectSound
    3. PlaySound
    4. Windows.Media.MediaControl

2.2. 底层APIs:

  1. 推荐使用的API:
    1. 面向流:
      1. WASAPI (高性能, 较复杂)
      2. XAudio2 (游戏)
      3. MIDI(音乐数字接口Musical Instrument Digital Interface))
    2. 用于枚举设备:
      1. Windows.Devices.Enumeration
  2. 不推荐使用的:
    1. MMDevice API (被Windows.Devices.Enumeration替代了)
    2. DeviceTopology API(可以操作控制音频适配器(声卡)内部, 可以遍历声卡的内部拓扑; 不依赖于端点设备模型(endpoint device model);优点是可以获得更多细节,可以操作不支持端点设备模型的设备;缺点是繁琐易出错)
    3. EndpointVolume API

2. 软件引擎

软件引擎由两个相关部分组成: 软件设备图(Audio Device Graph, audiodg.exe), 以会被前者载入音频引擎(audioeng.dll).

软件引擎的功能:

  • 混合并处理音频流。 有关音频引擎如何使用缓冲区传输音频的更多信息,请参见理解WaveRT 端口驱动器(Understanding the WaveRT Port Driver).
  • 加载音频处理对象(APO),它们是和硬件相关的音频信号处理插件。 有关APO的更多信息,请参见Windows音频处理对象(Windows Audio Processing Objects).

译注:Android的Audio Flinger相当, Android的Audio effects和APO相当.

音频服务(Audio Service, audiosrv.dll)

  • 用于配置和控制音频流
  • 实施Windows策略以进行背景音频播放,回避(译注:比如在通化时自动降低音乐音量, 参考默认回避体验)等。

音频端点生成器(Audio Endpoint Builder, audioendpointbuilder.exe)

  • 用于发现新的音频设备并创建软件音频端点

音频驱动(Audio drivers)

  • 它们遵循端口微型端口模型(对应于高级Linux声音体系结构-ALSA)
  • 允许音频堆栈渲染和捕获来自多个音频设备的音频,这些设备包括:集成扬声器和麦克风,耳机/耳机,USB设备,蓝牙设备,HDMI等

硬件

  • 音频解码器(Audio codec)
  • DSP (可选)
  • 集成扬声器, 麦克风, etc
  • 外部设备:USB音频设备,蓝牙音频设备,HDMI音频等
  • 除了APO之外,也可以在硬件中(例如,编解码器或DSP)实现信号处理

参考文献:

https://blogs.msdn.microsoft.com/iliast/2015/02/16/overview-of-the-windows-8-1-audio-stack/

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值