1

WAVEOUTCAPS 结构的Microsoft 文档列出了音频设备可以支持的多种格式:

在此处输入图像描述

我没有看到此处列出的任何 24 位变量,尽管通过我确认我的声卡能够通过调用打开 24 位输出WaveOutOpen(并通过该输出播放 24 位音频文件)。

我猜微软在某处为 18/20/24/32/48/64 位输出定义了额外的变量,但我找不到它们。我尝试在网上搜索,但没有任何结果,我尝试使用 Visual Studio 在我当前的名称空间中搜索以“WAVE_FORMAT_”开头的变量,但没有找到任何额外定义的格式。

WaveOutGetDevCap()是否可以使用该功能或​​任何类似功能在 Windows 上检查 4/18/20/24/32/48/64 位输出可用性?如果是这样,怎么做?

4

1 回答 1

1

waveOutXxx是传统的 API,一般来说,现在不应该使用。此 API 是真实音频 API之上的仿真层,不必支持waveOutXxx. 没有为较新的格式定义特定的新常量,并且它们数量众多,以至于不能为每个格式单独设置一个位。

您可以编写一个WAVEFORMATEX描述您的高位格式的结构(您通常会使用WAVEFORMATEXTENSIBLE它的变体)并根据功能检查它waveOutOpen

或者,更确切地说,使用 WASAPI 和IAudioClient::Initialize,请参阅Rendering a Stream了解详细信息以及在WAVEFORMATEX那里使用结构的方式。

于 2020-09-24T10:54:25.733 回答