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