Windows音频管理--第一篇 初识Core Audio API

一、前言

        最近由于公司项目需要实现Windows PC端的音频采集播放功能,本人先前的工作重点都是集中在linux或者MCU直接控制Codec;对于windows上如何发现实现录音和播放功能完全没经验,故硬着头皮开始调查研究。

二、入门

        做过linux上的录音播放软件的朋友应该都知道在linux上采用ALSA作为音频接口,实现录音和播放功能只需要打开对应的PCM设备进行读写即可(其中最重要的操作是配置alsa设备,这个属于驱动工程的内容),那在windows上如何实现呢?

        带着这样的疑问,我们开始找资料,既然是查windows音频相关的内容还是直接在MSDN上进行查找来得踏实靠谱。

        根据MSDN上的文档介绍,从windows vista开始使用Core Audio API接口,并在Window 7中进行大量改进。

Core Audio APIs - Win32 apps | Microsoft Learn

                Core Audio API也是DirectSound、DirectMusic、Windows multimedia waveXxx以及mixXxx、Media Foundation的核心。

 

        从Win7开始,Core Audio API做了大量改进,其中流/会话管理API的添加让APP可以有更多的控制。 

   Core Audio API提供了访问音频端点设备(如头戴式耳机和麦克风)的方法。

        什么是音频端点(audio endpoint device)? 

        个人的理解:物理设备录音/播放功能的软件实现,反映的是硬件设备的逻辑实现。但是并不是说音频端点就是物理设备的抽象,高级应用中我们可以自己构造一个虚拟设备端点。 

        下图是我自己PC上的播放设备端点列表

        

        设备端点支持的音频格式:

      

        可以看到支持32/44.1/48KHz的采样率,16/24位量化深度,最大支持双通道。 

  下图是录音端点列表 

 

下面我们正式开始Windows音频应用开发的学习之旅 

      为什么我选用Core Audio API呢?

About the Windows Core Audio APIs - Win32 apps | Microsoft Learn

  • 低延迟
  • 高可靠(很多音频功能从内核模式移动到用户模式)
  • 更安全(受保护的内容的处理是在一个安全的低特权的进程中处理)
  • 音频设备可以赋予不同的系统角色(console、multimedia、communications)
  • 对被开发者直接操作的音频端点设备进行软件抽象

什么叫Audio Endpoint Devices?

在windows上面音频设备的术语叫audio endpoint device(端点设备)

 图中的端点设备有扬声器、麦克风、AUX音频输入。

我们在代码中操作的就是这些设备的类对象或者类接口,从而实现我们需要的录音、播放功能。

上图介绍了windows上音频架构,虽然图中只是描述下行流(播放),其实上行流也是类似,只是方向变了。

windows对音频设备支持独占访问和共享访问。其中独占访问是指如果当前设备被打开,其他进程或者客户端无法再次打开它;共享模式就是客户多个进程同时访问,也就是图中的Audio Engine,可以简单的理解为就是这个模块承担了混音器的角色,在后面的博文中会针对共享模式进行更加详细的描述。

其他介绍可以参考User-Mode Audio Components - Win32 apps | Microsoft Learn

此处特别需要说明一下,共享模式在某些场景中特别有用,例如回声消除。

本篇作为扫盲贴,暂且介绍这么多,请关注后续博文。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值