此查询与 Portaudio 框架有关。在我问这个问题之前有一点背景知识:我正在开发 PortAudio 中的一个应用程序,以通过多声道(=8)设备输出音频。但是,我正在使用的设备并没有将自己暴露为单个 8 通道设备,而是在我的设备列表中显示为 4 个立体声设备。在寻找处理此问题的方法时,我了解到 PortAudio 中的 WinMME 支持多种设备。
现在,我浏览了相应的头文件(“pa_win_wmme.h”)并遵循了目前的建议。但是在调用 PA_OpenStream() 后,我得到了“无效设备”错误(错误号 -9996)。在上面提到的头文件中,他们实际上已经指定了在配置多个设备时使用的正确参数以避免此错误,但尽管遵循它们,我仍然得到错误。所以我想知道是否有人遇到过类似的问题,以及我是否错过/错误地配置了任何东西。
我在下面粘贴所需的代码片段以供参考:
PaStreamParameters outputParameters;
PaWinMmeStreamInfo wmmeStreamInfo;
PaWinMmeDeviceAndChannelCount wmmeDeviceAndNumChannels;**
...
...
outputParameters.device = paUseHostApiSpecificDeviceSpecification;
outputParameters.channelCount = 8;
outputParameters.sampleFormat = paFloat32; /* 32 bit floating point processing */
outputParameters.hostApiSpecificStreamInfo = NULL;
wmmeStreamInfo.size = sizeof(PaWinMmeStreamInfo);
wmmeStreamInfo.hostApiType = paMME;
wmmeStreamInfo.version = 1;
wmmeStreamInfo.flags = paWinMmeUseMultipleDevices;
wmmeDeviceAndNumChannels.channelCount = 2;
wmmeDeviceAndNumChannels.device = 3;
wmmeStreamInfo.devices = &wmmeDeviceAndNumChannels;
wmmeStreamInfo.deviceCount = 4;
outputParameters.hostApiSpecificStreamInfo = &wmmeStreamInfo;
设备id = 3 是通过
Pa_GetHostApiInfo( Pa_HostApiTypeIdToHostApiIndex( paMME ) )->defaultOutputDevice
我希望我已经把查询说得够清楚了。如果需要,将很乐意提供更多详细信息。
谢谢。