2

我试图找出特定音频设备在独占模式下支持哪些输出格式。为此,我正在使用 IAudioClient->IsFormatSupported(),根据文档,它应该可以用于此目的。不幸的是,它为我尝试传递的几乎所有格式返回 AUDCLNT_E_UNSUPPORTED_FORMAT,但默认的 2 通道 44​​.1khz 音频除外。

如果我真的尝试初始化音频客户端,那么有些格式会成功,但在 IsFormatSupported() 中失败了。

仅仅尝试初始化每种格式不是一个选项,因为这可能会导致停止来自其他应用程序的音频。

有没有其他人看到过这种行为或知道是否有另一种方法可以找到特定音频设备支持的格式?

4

1 回答 1

1

我也看到了这种行为。似乎 IsFormatSupported 只会接受在 Windows 的播放设备设置中标记为“支持”的内容,但 Initialize 似乎实际上最终会询问驱动程序是否确实可能。

在我的具体情况下,我有一个 Xoxar HDAV1.3 设置以使用 HDMI 作为输出。两个播放设备始终可用:扬声器和 S/PDIF 直通设备。例如,如果我尝试为 S/PDIF 播放设备请求 6 个通道,IsFormatSupported 将拒绝它(理论上,S/PDIF 仅支持 2 个,这就是我在设置中看到的所有内容),但调用 Initialize 会成功并工作(毕竟它会输出 HDMI,支持 6 个通道)。谈论误导性设备名称!

恐怕没有真正实用的方法来解决这个问题。

于 2012-06-02T07:42:38.070 回答