Windows 波形函数 - 用于 8 和 16 以外的位深度的 WAVEOUTCAPS
Windows Waveform Functions - WAVEOUTCAPS for bitdepths other than 8 and 16
WAVEOUTCAPS 结构的 Microsoft documentation 列出了音频设备可以支持的多种格式:
我没有看到这里列出任何 24 位变量,虽然我已经确认我的声卡能够通过调用 WaveOutOpen
打开 24 位输出(并通过播放 24 位音频文件那个输出)。
我猜微软在某处为 18/20/24/32/48/64 位输出定义了额外的变量,但我找不到它们。我尝试在网上搜索但没有任何结果,我尝试使用 Visual Studio 搜索我当前名称 space 中以“WAVE_FORMAT_”开头的变量,但没有找到任何额外定义的变量这样的格式。
是否可以使用函数 WaveOutGetDevCap()
或任何类似函数检查 Windows 上的 4/18/20/24/32/48/64 位输出可用性?如果是,怎么做?
waveOutXxx
是 legacy API 你,一般来说,现在不应该被使用。此 API 是 real 音频 API 之上的仿真层,不必支持 [=] 时不存在的 24 位场景10=]。没有为较新的格式定义特定的新常量,而且它们太多了,不可能每个都有一个单独的位。
您可以编写一个 WAVEFORMATEX
结构来描述您的高位数格式(您通常会使用它的 WAVEFORMATEXTENSIBLE
变体)并根据 waveOutOpen
函数检查它。
或者,更确切地说,使用 WASAPI 和 IAudioClient::Initialize
,请参阅 Rendering a Stream 了解详细信息以及那里使用 WAVEFORMATEX
结构的方式。
WAVEOUTCAPS 结构的 Microsoft documentation 列出了音频设备可以支持的多种格式:
我没有看到这里列出任何 24 位变量,虽然我已经确认我的声卡能够通过调用 WaveOutOpen
打开 24 位输出(并通过播放 24 位音频文件那个输出)。
我猜微软在某处为 18/20/24/32/48/64 位输出定义了额外的变量,但我找不到它们。我尝试在网上搜索但没有任何结果,我尝试使用 Visual Studio 搜索我当前名称 space 中以“WAVE_FORMAT_”开头的变量,但没有找到任何额外定义的变量这样的格式。
是否可以使用函数 WaveOutGetDevCap()
或任何类似函数检查 Windows 上的 4/18/20/24/32/48/64 位输出可用性?如果是,怎么做?
waveOutXxx
是 legacy API 你,一般来说,现在不应该被使用。此 API 是 real 音频 API 之上的仿真层,不必支持 [=] 时不存在的 24 位场景10=]。没有为较新的格式定义特定的新常量,而且它们太多了,不可能每个都有一个单独的位。
您可以编写一个 WAVEFORMATEX
结构来描述您的高位数格式(您通常会使用它的 WAVEFORMATEXTENSIBLE
变体)并根据 waveOutOpen
函数检查它。
或者,更确切地说,使用 WASAPI 和 IAudioClient::Initialize
,请参阅 Rendering a Stream 了解详细信息以及那里使用 WAVEFORMATEX
结构的方式。