VISTA、Win Server 2008、Win7 等系统音频系统底层API
来源:互联网 发布:sql server 2005 x64 编辑:程序博客网 时间:2024/05/16 09:53
VISTA、Win Server 2008、Win7 等系统音频系统底层API
Core Audio APIs的优势:
Windows Vista、Windows 7、Windows server 2008等系统音频系统相比之前的系统有很大的变化,产生了一套新的底层API即Core Audio APIs。该低层API为高层API( 如Media Foundation(将要取代DirectShow等高层API)等 )提供服务。相比之前版本的API有如下优势:
1. 具有低延时、故障恢复能力的音频流。
2. 提高可靠性 ( 将很多音频函数从核心态移到了用户态 )
3. 提高了安全性 (在安全的,低优先级别的线程处理被保护的音频内容)
4. 为单独的音频设备分配了特定的系统级别的规则 (console, multimedia, communications) 。
5. 用户可以直接操作相应音频终端设备(Audio Endpoint Devices 如:扬声器、耳机、麦克风、CD播放器)的软件抽象。
Core Audio APIs在系统中的位置:
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)的布局来查看和管理设备中的音频控制。下图为DeviceTopology API的作用范围
音频适配器设备(audio adapter device)内部是由很多Part组成。主要包括亚单位(Subunit)和连接头(Connector)。亚单位主要分为:音量控制(Vol)、静音控制(Mute)、多路器(MUX)等。连接头(Con)是一个连接的两端。
Core Audio APIs的使用:
<1> 音频终端设备(Audio Endpoint 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://kanglovepei.spaces.live.com/blog/cns!861E0583566CFC59!266.entry
- VISTA、Win Server 2008、Win7 等系统音频系统底层API
- VISTA、Win Server 2008、Win7 等系统音频系统底层API
- VISTA、Win Server 2008、Win7 等系统音频系统底层API
- VISTA、Win Server 2008、Win7 等系统音频系统底层API
- Windows 7、Windows Server 2008等系统音频系统底层API
- Windows 7、Windows Server 2008等系统音频系统底层API
- Windows 7、Windows Server 2008等系统音频系统底层API[转]
- Win7音频系统底层API
- 系统音频系统底层API[转]
- 最新配置电脑安装Win7、win server 2008R2等老系统的方法
- VISTA(Win7) 无线API
- Win Vista 系统也中标?
- 服务器系统时间导致Win7无法访问Win Server 2003
- 强制在VISTA,WIN7,XP当中安装SQL server 2000服务器等版本
- windowns server 2008 R2激活工具(含win7、vista)
- win server 2008(win7 x64)下安装apache+php+mysql
- Windows 8/8.1 Key_Windows 8.1|Windows 8|Windows 7|Windows Vista|Office 2013|Office 2010|Win Server 2012|Win Server 2008|Vista|各版
- Windows Vista/Windows 2008 Server新增API一览
- java IO操作 (读写、追加、删除、移动、复制等)
- 【学习点滴-VIM】简明Vim练级攻略
- 一次关于Waiting for table metadata lock的处理
- ASIHTTPRequest 详解
- UVa 10037 - Bridge
- VISTA、Win Server 2008、Win7 等系统音频系统底层API
- C++性能之内联函数
- XML的SAX解析器创建
- table布局 height=100%无效分析
- centos下面安装mysql
- You have tried to change the API from what has been previously approved.
- 计算几何求公式
- iPhone操作队列 VS Java线程池
- C/C++ 文件输入输出