c++ - SDL - 音频回调函数有时没有及时调用

标签 c++ c audio sdl

我是 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/

相关文章:

c - C 中的变量存储在内存的什么位置?

c++ - 是否可以定义另一个预处理器指令?

c - 将 void*(*)(void*) 类型转换为 void(*)(void)

windows - WASAPI:即使 IAudioClient->IsFormatSupported 以相同的格式失败,IAudioClient->Initialize 也会成功

java - 用Java读取wav文件的问题

c++ - 为什么我的 do 循环运行了几次并且不要求输入?

c++ - "BUG: scheduling while atomic?"的可能原因有哪些

c++ - 反向特征查找?

html - Shoutcast 流媒体和 HTML5 音频播放器

c++ - 如何检测 win32 上的数据卡连接和断开事件?