Win32音频API endpointVolume接口返回错误的通道计数

Win32 Audio API endpointVolume interface returning wrong channel count

本文关键字:通道 错误 返回 音频 API endpointVolume 接口 Win32      更新时间:2023-10-16

我有一个使用win32音频API的声音应用程序。问题是当我调用:

  endpointVolume->getChannelCount(&count);

它返回2个通道(但在windows中启用了6个通道)。我知道它们都是有效的,因为我得到了扬声器的输出,我也检查了峰值:

  IAudioMeterInformation->getMeteringChannelCount()

得到6个通道,峰值大于0。所以有输出。有人知道为什么会这样吗?这是一个bug还是一个编码糟糕的驱动程序?我能通过其他方式得到音量值吗?

我在msdn上发现了一个链接,上面有一个人描述了一个类似的问题,总结一下,下面是你应该做的:

  1. 使用QueryHardwareSupport检查设备的卷是否来自驱动程序或APO。
  2. 通知微软这个bug(即使他们可能不会做任何事情)。
  3. 玩弄你使用的api,看看是否可以修复它(随机函数调用等…)。
  4. 假设这不起作用,使用另一个api来获取通道数。
  5. 如果所有这些都失败了,买一个不同的声卡,因为那一个显然不能正常工作。

如果您准备自己的缓冲区来播放音频,您可以自己获取音量。如果您愿意,我将粘贴一些代码来完成此操作…