gpt4 book ai didi

windows - WASAPI:即使 IAudioClient->IsFormatSupported 以相同的格式失败,IAudioClient->Initialize 也会成功

转载 作者:可可西里 更新时间:2023-11-01 10:39:25 26 4
gpt4 key购买 nike

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

如果我真的尝试初始化 audioclient,有一些格式成功了,但在 IsFormatSupported() 中失败了。

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

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

最佳答案

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

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

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

关于windows - WASAPI:即使 IAudioClient->IsFormatSupported 以相同的格式失败,IAudioClient->Initialize 也会成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7665865/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com