我是 SDL 新手。 我正在使用SDL开发一个媒体播放器,现在遇到一个问题,音频回调函数有时没有及时调用,导致音频有点断断续续。
我使用这样的代码来打开音频设备:
wanted_spec.xxx = xxx;
wanted_spec.callback = audio_callback; //audio_callback is my audio callback function
SDL_OpenAudio(&wanted_spec, &spec);
我的操作系统是Windows XP。
你知道这件事吗?有人可以建议如何以 0 延迟同步数据馈送到回调函数。
我的问题是,我不想通过 SDL_LoadWAV 提供整个 wav 文件,而是想传递 PCM 样本(可能是 1024 个样本)。(设计是这样的,我将获得 PCM 样本)
但问题是,回调函数没有及时调用或者调用延迟,导致声音断断续续。我无法将数据同步传递给回调函数。
您能否建议一种将数据(样本)同步传递到回调函数的方法,或者提供一些在样本中传递数据的应用程序?
最佳答案
我们需要真正的值(value)观来充分回答您的问题。
您尝试的缓冲区大小是多少?
还要认识到,SDL 无法提供您想要的内容是很常见的,因此请检查实际的规范缓冲区大小是多少。
我一直在 Windows 上使用 SDL 的二进制 mingw32 端口,无论我请求什么,它都不会为我提供小于一秒的缓冲区。
关于c++ - SDL - 音频回调函数有时没有及时调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8850508/