CRI ADX  Last Updated: 2024-07-17 10:48 p
选择音频输出设备

示例目录

/cri/pc/samples/criatomex/select_device

示例描述

在应用程序中选择音频设备示例。
Atom运行库的输出音频从初始化时在CriAtomExAsrConfig::sound_renderer_type 中设置的声音渲染器中输出。
(如果没有更改预设设置,则从CRIATOM_SOUND_RENDERER_NATIVE中输出。)
在PC环境中,CRIATOM_SOUND_RENDERER_NATIVE分配给Windows的预设播放设备。
因此,使用预设设置初始化程序库时,应用程序中播放的所有音频都将从预设设备输出。
(如果用户更改Windows设置并更改了预设音频设备,则将从更改的设备输出音频。)
也可以忽略Windows预设设备,从应用程序中显式指定输出目标设备。
具体来说,可以在应用程序中执行::criAtom_SetDeviceId_WASAPI函数,为CRIATOM_SOUND_RENDERER_NATIVE分配任意设备。
具体处理代码的示例如下。
main()
{
/* 为CRIATOM_SOUND_RENDERER_NATIVE 分配指定设备 */
CRIATOM_SOUND_RENDERER_NATIVE, device_info[app_obj->selected_device].id);
}
@ CRIATOM_SOUND_RENDERER_NATIVE
Definition: cri_le_atom.h:812
void criAtom_SetDeviceId_WASAPI(CriAtomSoundRendererType type, LPCWSTR device_id)
Set sound device


可以使用::criAtom_EnumAudioEndpoints_WASAPI函数进行音频设备的枚举。
( 可以通过执行::criAtom_EnumAudioEndpoints_WASAPI函数,每次检测到设备时通过回调接收信息。)
main()
{
/* 枚举音频设备 */
criAtom_EnumAudioEndpoints_WASAPI(user_endpoint_callback, NULL);
}
/* 检测设备时调用的回调 */
static void CRIAPI user_endpoint_callback(void *object, IMMDevice *device)
{
/* 获取设备ID */
hr = device->GetId(&device_id);
/* 保存设备ID */
wcscpy_s(device_info[num_devices].id, MAX_DEVICE_ID_LENGTH, device_id);
/* 释放设备ID区域 */
CoTaskMemFree(device_id);
}
CriSint32 criAtom_EnumAudioEndpoints_WASAPI(CriAtomAudioEndpointCbFunc_WASAPI callback, void *object)
Enumerate audio endpoints