Windows 7 音频设备控制

 

 

 

 

Windows 7 音频设备控制

 

 

 

       Windows 7系统使用Windows NT 6内核,同样使用NT6内核的还有Windows Vista、Windows 8、Windows server 2008等系统。本文主要介绍音频的输入(Input)、输出(Output)设备的选择,音量的控制等内容。

下图所示是播放(Render)设备,可以控制音响、耳机等设备的播放音量,右边是扬声器的音量调节。

 

 

下图所示是录音(Capture)设备,可以控制话筒等设备的输入音量,右边是麦克风的音量设置。

 

 

 

下图所示是合成器,可以控制应用程序播放音量。

 

 

 

 

Core Audio APIs简介

 

         WindowsNT 6系统音频系统相比之前的系统有很大的变化,产生了一套新的底层APICore Audio APIs。该低层API为高层API(Media Foundation(将要取代DirectShow等高层API))提供服务。

 

 

1. 相比之前版本的API有如下优势

 

1.具有低延时、故障恢复能力的音频流。

2.提高可靠性 (将很多音频函数从核心态移到了用户态)

3.提高了安全性(在安全的,低优先级别的线程处理被保护的音频内容)

4.为单独的音频设备分配了特定的系统级别的规则 (console, multimedia, communications)

5.用户可以直接操作相应音频终端设备(Audio Endpoint Devices如:扬声器、耳机、麦克风、CD播放器)的软件抽象。

 

 

2. Core Audio APIs在系统中的位置

 

 

 

 

3. Core Audio APIs的组成

 

1. Multimedia Device(MMDevice) API

API用于枚举系统中的音频终端设备(Audio Endpoint Devices)。告诉音频客户端程序有哪些音频终端设备以及它们的性能,并且为这些设备创建驱动实例(driver instances)。是最基本的Core Audio API,为其他三个API提供服务。

 

主要接口:

IMMDeviceEnumerator用来列举音频终端设备。

IMMDevice代表一个音频设备(audio device)

IMMEndpoint代表一个音频终端设备(audio endpoint device),只有一个方法GetDataFlow,用来识别一个音频终端设备是一个输出设备(rendering device)还是一个输入设备(capture device)

IMMDeviceCollection代表一个音频终端设备的集合。

 

2. EndpointVolume API

使客户端程序能够操作音频终端设备。

 

主要接口:

IAudioEndpointVolume用于控制音频终端设备的音量、静音。

 

 

3. Windows Audio Session API(WASAPI)

使客户端程序能够管理介于程序和音频终端设备之间的音频数据。如应用程序本身的音量。

 

主要接口:

ISimpleAudioVolume代表控制来往音频终端设备的音频流的音量。

 

 

4. DeviceTopology API

客户端程序使用这个API可直接沿着音频适配器(audio adapters)的硬件设备里的数据通道进入布局特征。是最底层的音频API,可以通过适配器设备(adapter devices)的布局来查看和管理设备中的音频控制。

 

音频适配器设备(audioadapter device)内部是由很多Part组成。主要包括亚单位(Subunit)和连接头(Connector)。亚单位主要分为:音量控制(Vol)、静音控制(Mute)、多路器(MUX)等。连接头(Con)是一个连接的两端。

 

 

 

 

Core Audio APIs的使用

 

1. 音频终端设备(AudioEndpoint Device)音量、静音控制

 

比如控制声音对话框下播放选项卡中的扬声器等,录制选项卡中的麦克风立体声混音

步骤:

1.得到IMMDeviceEnumerator接口。

2.遍历音频终端设备得到IMMDeviceCollection接口。

3.根据IMMDeviceCollection得到每个设备的IPropertyStore接口,从而分辨并搜索到指定的设备IMMDevice接口。

4.IMMDevice接口激活音量、静音控制接口IAudioEndpointVolume。

 

 

2. 音频适配器设备亚单位(Subunit)的音量、静音控制

 

比如控制声音对话框下播放选项卡中的扬声器下的“CD音频麦克风“Fornt Pink In”等的控制。

步骤:

1.得到IMMDeviceEnumerator接口。

2.遍历音频终端设备得到IMMDeviceCollection接口。

3.根据IMMDeviceCollection得到每个设备的IPropertyStore接口,从而分辨并搜索到指定的设备IMMDevice接口。

4.根据IMMDevice接口和连接器接口IConnector得到音频终端设备所对应的设备适配器(adapter device)的布局接口IDeviceTopology。

5.根据IDeviceTopology接口得到指定的部分(Part)。

6.最后用得到的部分(Part)接口IPart激活音量控制接口IAudioVolumeLevel和静音控制接口IAudioMute。

 

 

3. 会话(Session)音量、静音控制

 

比如音量合成器中应用程序的音量。

步骤:

1.得到IMMDeviceEnumerator接口。

2.根据IMMDeviceEnumerator得到默认设备的IMMDevice接口。

3.得到音频会话接口IAudioSessionManager

4.IAudioSessionManager接口得到IAudioSessionControl接口,该接口用来设置会话(Session)参数。

5.设置好了参数之后,在由IAudioSessionManager接口得到音频会话的音量、静音控制接口ISimpleAudioVolume,从而可以控制程序的音量、静音。

 

 

 

 

 

参考资料

 

http://msdn.microsoft.com/en-us/library/windows/desktop/dd370802(v=vs.85).aspx

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值