【问题标题】:Windows Waveform Functions - WAVEOUTCAPS for bitdepths other than 8 and 16Windows 波形函数 - 8 和 16 以外的位深度的 WAVEOUTCAPS
【发布时间】:2021-01-07 04:12:43
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: audio waveout


    【解决方案1】:

    waveOutXxx 是传统的 API,一般来说,现在不应该使用。此 API 是 real 音频 API 之上的模拟层,不必支持 waveOutXxx 时不存在的 24 位场景。没有为较新的格式定义特定的新常量,而且它们数量众多,无法为每个格式单独设置一个位。

    您可以编写一个描述您的高位格式的WAVEFORMATEX 结构(您通常会使用它的WAVEFORMATEXTENSIBLE 变体)并对照waveOutOpen 函数检查它。

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

    【讨论】:

      猜你喜欢
      • 2011-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-11
      • 2011-01-30
      • 1970-01-01
      相关资源
      最近更新 更多