Windows音频会话API(WASAPI)使客户端应用程序能够管理音频数据流应用程序和音频端点设备。头文件音频客户端。h和音频政策。定义WASAPI接口。
每个音频流都是音频会话的成员。通过会话抽象,WASAPI客户机可以将音频流标识为一组相关音频流的成员。该系统可以管理所有的将会话中的流作为单个单元。
音频引擎是用户模式音频组件,应用程序通过它共享对音频的访问终端设备。音频引擎在端点缓冲区和端点设备之间传输音频数据。到通过渲染端点设备播放音频流时,应用程序会定期将音频数据写入渲染端点缓冲区。音频引擎混合来自各种应用程序的流。录音流,应用程序定期从捕获端点读取音频数据缓冲器。
WASAPI由几个接口组成。第一个是IAudioClient接口。访问WASAPI接口,客户端首先通过调用参数iid设置为refid iid_IAudioClient的IMMDevice::Activate方法。客户端调用IAudioClient::Initialize方法初始化端点设备上的流。初始化流之后客户端可以通过调用IAudioClient::GetService方法来获取对其他WASAPI接口的引用。
WASAPI中的许多方法返回错误代码AUDCLNT_E_DEVICE_INVALIDATED,如果音频端点客户端应用程序正在使用的设备无效。通常,应用程序可以从该错误中恢复。
WASAPI实现了以下接口。
接口 | 描述 |
IAudioCaptureClient | 使客户端能够从捕获端点读取输入数据缓冲器 |
IAudioClient | 使客户端能够创建和初始化音频流在音频应用程序和音频引擎或音频端点设备的硬件缓冲区。 |
IAudioClock | 使客户端能够监视流的数据速率和流中的当前位置。 |
IAudioRenderClient | 使客户端能够将输出数据写入渲染端点缓冲器 |
IAudioSessionControl | 使客户端能够配置音频会话和监视会话中的事件。 |
IAudioSessionManager | 使客户端能够访问会话控件和卷跨进程和进程特定音频的控件会话。 |
IAudioStreamVolume | 使客户端能够控制和监视音频流中的所有频道。 |
IChannelAudioVolume | 使客户端能够控制所有服务器的卷级别流所属的音频会话中的频道。 |
ISimpleAudioVolume | 使客户端能够控制服务器的主卷级别音频会话。 |