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的主要内容,如果未能解决你的问题,请参考以下文章
使用 gradle 包装器构建 Kotlin 枚举类中的无效方法声明