我目前正在编写一个将声音输出到3种不同音频设备的应用程序。为此,我在PC上安装了3个相同品牌的USB音频设备。我想将SDL2用作输出设备(尽管我对其他建议持开放态度)。我看了看文档,它表示为第一个参数(设备):
由SDL_GetAudioDeviceName()报告的UTF-8字符串;参见备注
现在,我编写了一个示例程序,其中仅列出了可用的设备:
#include <SDL2/SDL.h>
#include <iostream>
int main()
{
SDL_Init( SDL_INIT_EVERYTHING );
std::cout << SDL_GetError() << std::endl;
atexit( SDL_Quit );
int count = SDL_GetNumAudioDevices(0);
for (int i = 0; i < count; ++i)
{
std::cout << "Device " << i << ": " << SDL_GetAudioDeviceName(i, 0) << std::endl;
}
return 0;
}
它枚举了所有可用的设备。问题是,所有3台设备都给我相同的名称:
Device 0: Internes Audio Digital Stereo (IEC958)
Device 1: C-Media Electronics, Inc. Audio Adapter
Device 2: C-Media Electronics, Inc. Audio Adapter
Device 3: C-Media Electronics, Inc. Audio Adapter
是否可以使用其他方式(例如USB路径)作为参数或确保我可以打开所有3台设备?