gpt4 book ai didi

c++ - openAL - alBufferData 和 AL_INVALID_VALUE

转载 作者:行者123 更新时间:2023-12-03 06:52:38 27 4
gpt4 key购买 nike

我有个问题。当我缓冲数据时,我得到 40963 错误,意思是 AL_INVALID_VALUE。程序员指南 (http://connect.creativelabs.com/openal/Documentation/OpenAL_Programmers_Guide.pdf) 说数据为空、正在使用的缓冲区或大小参数无效。

我知道数据不为空,并且缓冲区未在使用中。
但是“大小参数无效”的真正含义是什么?比如我要缓冲的每个数据包是20ms,数据大小是320,我的速率是8000khz。

谢谢

最佳答案

我在 java JOAL 和 found this in another post 中遇到了这个问题.我的代码如下:

 ALut.alutLoadWAVFile(Sound.class.getResourceAsStream("/sound/sound.wav"), format, data, size, freq, loop);
if (al.alGetError() != AL.AL_NO_ERROR) {
System.err.println("Error in load.");
return AL.AL_FALSE;
}
al.alBufferData(buffer[0], format[0], data[0], size[0], freq[0]);
if (al.alGetError() != AL.AL_NO_ERROR) {
System.err.println("Error in alBufferData.");
System.err.println(buffer[0]);
System.err.println(format[0]);
System.err.println(data[0]);
System.err.println(size[0]);
System.err.println(freq[0]);

return AL.AL_FALSE;
}
return AL.AL_TRUE;
它打印了这个:
Error in alBufferData.
1
4355
java.nio.DirectByteBuffer[pos=0 lim=507538 cap=507904]
507538
44100
所以我尝试了以下方法:
      return AL.AL_FALSE;
}
//Size needs to be adjusted to a multiple of 8
size[0] -= size[0]%8;

al.alBufferData(buffer[0], format[0], data[0], size[0], freq[0]);
这对我有用,但在你的情况下,大小是 4 和 8 的倍数。缓冲数据可能有一个最小大小,所以制作更大的数据包并调整它们的大小是可行的。

关于c++ - openAL - alBufferData 和 AL_INVALID_VALUE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5910583/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com