2026-03-22 01:56:16 +08:00
|
|
|
# WASAPIBackend
|
|
|
|
|
|
|
|
|
|
**命名空间**: `XCEngine::Audio::WASAPI`
|
|
|
|
|
|
|
|
|
|
**类型**: `class`
|
|
|
|
|
|
2026-03-26 01:54:45 +08:00
|
|
|
**头文件**: `XCEngine/Audio/WindowsAudioBackend.h`
|
2026-03-22 01:56:16 +08:00
|
|
|
|
|
|
|
|
**描述**: Windows Audio Session API (WASAPI) 音频后端实现。
|
|
|
|
|
|
|
|
|
|
## 概述
|
|
|
|
|
|
|
|
|
|
WASAPIBackend 是基于 Windows WASAPI 的音频后端实现,通过 Windows MultiMedia API (waveXxx 函数) 提供音频输出能力。它运行在单独的音频线程上,使用双缓冲区交换机制实现流畅的音频播放,支持设备枚举、音量控制和静音管理。
|
|
|
|
|
|
|
|
|
|
## 公共方法
|
|
|
|
|
|
|
|
|
|
| 方法 | 描述 |
|
|
|
|
|
|------|------|
|
2026-03-26 01:53:04 +08:00
|
|
|
| `Initialize` | 初始化 WASAPI 后端 |
|
|
|
|
|
| `Shutdown` | 关闭 WASAPI 后端 |
|
|
|
|
|
| `GetDeviceName` | 获取当前设备名称 |
|
|
|
|
|
| `GetAvailableDevices` | 获取可用设备列表 |
|
|
|
|
|
| `SetDevice` | 设置音频设备 |
|
|
|
|
|
| `GetMasterVolume` | 获取主音量 |
|
|
|
|
|
| `SetMasterVolume` | 设置主音量 |
|
|
|
|
|
| `IsMuted` | 检查静音状态 |
|
|
|
|
|
| `SetMuted` | 设置静音状态 |
|
|
|
|
|
| `Start` | 启动音频处理 |
|
|
|
|
|
| `Stop` | 停止音频处理 |
|
|
|
|
|
| `Suspend` | 暂停音频处理 |
|
|
|
|
|
| `Resume` | 恢复音频处理 |
|
|
|
|
|
| `ProcessAudio` | 处理音频数据 |
|
|
|
|
|
| `IsRunning` | 检查是否正在运行 |
|
|
|
|
|
| `GetConfig` | 获取配置信息 |
|
2026-03-22 01:56:16 +08:00
|
|
|
|
|
|
|
|
## 使用示例
|
|
|
|
|
|
|
|
|
|
```cpp
|
|
|
|
|
#include <XCEngine/Audio/AudioSystem.h>
|
2026-03-26 01:54:45 +08:00
|
|
|
#include <XCEngine/Audio/WindowsAudioBackend.h>
|
2026-03-22 01:56:16 +08:00
|
|
|
|
|
|
|
|
using namespace XCEngine::Audio;
|
|
|
|
|
|
|
|
|
|
void SetupAudioWithWASAPI() {
|
|
|
|
|
AudioSystem::Get().SetBackend(std::make_unique<WASAPI::WASAPIBackend>());
|
|
|
|
|
|
|
|
|
|
AudioConfig config;
|
|
|
|
|
config.sampleRate = 48000;
|
|
|
|
|
config.channels = 2;
|
|
|
|
|
|
|
|
|
|
AudioSystem::Get().Initialize(config);
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 相关文档
|
|
|
|
|
|
|
|
|
|
- [Audio 模块总览](../audio.md) - Audio 模块总览
|
|
|
|
|
- [IAudioBackend](../i-audio-backend/i-audio-backend.md) - 音频后端接口
|