所以,我正在构建一个线程化的 IMA ADPCM 解码器,将音频数据流式传输到 OpenAL (简短描述见下文),但我遇到了一些麻烦。
我的问题之一是有时我对 alBufferData 的调用:
alBufferData(*bufferID, format, pcmData, sizeInBytes, bitRate);
AL_INVALID_VALUE
即使在检查它们看起来的参数时也会返回,例如,像这样:
bufferID='109770616', format='AL_FORMAT_STEREO16', dataPtr='109754188', sizeInBytes='8164'
任何线索,有人吗?发生这种情况时,实际播放的声音会有点口吃,并且错误通常会连续发生约 10 次(在相同的声音上)。当我重复启动相同的声音时,通常也会发生这种情况(例如,当用 LMG 短时间射击时……;))
流式解码器模块的快速简化之旅
如何播放声音:
- 触发声音播放。
- 一个 bufferSize 的音频被解码,其余的被排队等待进一步解码。
- 触发 OpenAL 开始播放声音。
解码/流式循环
- 对于排队等待解码的每个声音,解码 bufferSize 值的音频。
- 解码后的音频被添加到具有适当 bufferID 的 alBuffer(参见上面的调用)中。