我试图找出独占模式下特定音频设备支持哪种输出格式。 为此,我使用IAudioClient-> IsFormatSupported(),根据文档应该可以使用它。 不幸的是,除了默认的2声道,44.1khz音频外,几乎我尝试传递的每种格式都会返回AUDCLNT_E_UNSUPPORTED_FORMAT。
如果我实际上尝试初始化音频客户端,则有些格式成功,但在IsFormatSupported()中失败。
只是尝试初始化每种格式都不是一种选择,因为这可能会导致停止来自其他应用程序的音频。
是否有其他人看到此行为或知道是否有其他方法可以找到特定音频设备支持的格式?
答案 0 :(得分:1)
我也看到过这种行为。 IsFormatSupported似乎只会接受标记为“支持”的内容。在Windows中的播放设备设置中,但是初始化似乎实际上最终会询问驱动程序是否确实可能。
在我的具体情况下,我有一个Xoxar HDAV1.3设置使用HDMI作为输出。始终有两个播放设备:扬声器和S / PDIF直通设备。例如,如果我尝试为S / PDIF播放设备请求6个频道,IsFormatSupported将拒绝它(理论上,S / PDIF仅支持2,并且我在设置中可以看到所有这些),但是调用Initialize会成功并运行(毕竟它会输出HDMI,支持6个通道)。谈论误导设备名称!
我担心没有切实可行的方法来解决这个问题。