OpenAL-Soft 无效枚举错误 AL_FORMAT_STEREO_FLOAT32

Posted

技术标签:

【中文标题】OpenAL-Soft 无效枚举错误 AL_FORMAT_STEREO_FLOAT32【英文标题】:OpenAL-Soft invalid enum error AL_FORMAT_STEREO_FLOAT32 【发布时间】:2016-10-30 09:38:28 【问题描述】:

我正在尝试播放每个样本格式为 32 位的 wav 文件。当我尝试生成 OpenAL 数据缓冲区并将其 AL_FORMAT_STEREO_FLOAT32 作为格式类型的参数时,我收到 OpenAL 错误代码 40962,我认为这意味着枚举无效。

为什么会这样?

这是我在 OpenAL 中生成缓冲区的方式。

alBufferData(buffer, AL_FORMAT_STEREO_FLOAT32, fWavDataIn, wavHeader.subChunk2Size, wavHeader.sampleRate);

每个样本 8 位和 16 位与 AL_FORMAT_STEREO16 和 AL_FORMAT_STEREO8 一起工作得很好。但是 AL_FORMAT_STEREO_FLOAT32 不起作用。为什么?

【问题讨论】:

您的帖子中缺少一些内容。首先,您到底想知道什么(一个明确提出的问题)。没有它,我们只能猜测你想要什么。接下来我们绝对必须知道你已经做了哪些努力,这意味着,我们绝对必须看到以简洁的方式准确再现问题的源代码。所谓的 MCVE:***.com/help/mcve 对此感到抱歉。我编辑了我的帖子。我试图理解为什么 openal 不会生成每个样本 32 位的缓冲区。 8和16工作得很好。不过不是 32 岁。 您在哪里找到了这种格式? al.h中好像没有定义。 我正在使用 OpenAL-Soft ext 文件。看来我可能需要改用“AL_STEREO32F_SOFT”。但这仍然行不通。 github.com/kcat/openal-soft/blob/master/include/AL/alext.h 你可以查看头文件 /usr/include/AL/al.h 看到它只提到了 8 位和 16 位格式 【参考方案1】:

AL_FORMAT_STEREO_FLOAT32 不是 OpenAL 的原生功能。在使用浮点数之前,您应该在 alGetString( AL_EXTENSIONS ) 中检查“AL EXT Float32”。

【讨论】:

以上是关于OpenAL-Soft 无效枚举错误 AL_FORMAT_STEREO_FLOAT32的主要内容,如果未能解决你的问题,请参考以下文章

如何修复“枚举约束失败”?

Typescript 枚举作为参数类型允许无效值

使用 gradle 包装器构建 Kotlin 枚举类中的无效方法声明

leetcode打卡--301. 删除无效的括号(预处理的暴力枚举)

在 MATLAB 中本地定义枚举和常量

将单个枚举值传递给 WCF 服务时,protobuf-net 引发有关无效线路类型的异常