第一次使用SDL_PauseAudio(0)
取消SDL音频时,在使用SDL_OpenAudio()
进行初始化后,我会立即获得一次点击。
我已经尝试通过确保声音的振幅从零开始上升而在我的音频回调中处理这个问题(实际上现在我只是使用正弦波,相位从0开始,因此波形自然地从零开始并且斜坡上升)但这没有帮助。
在调用SDL_OpenAudio()
和SDL_PauseAudio(0)
以防止此次点击之间,我应该做些什么吗?我很难在文档中找到任何内容。
答案 0 :(得分:1)
我解决了这个问题 - 没有什么特别针对SDL。问题出在我的回调代码中。
问题是我已经从使用无符号16位int格式转换为带符号16bit int。在我的回调中,我将音频计算为double,然后在输出时转换为int格式。 当转换为无符号时,涉及向我的(-1.0到1.0范围)信号添加1.0以使其全部为正而不是以0为中心。我只是忘记在切换到有符号音频时删除+1.0 - 实际上我的信号有一个DC偏移,导致init / close上的不连续。
如果没有我的帖子回调和初始化代码,那么任何人都不可能猜到 - 我认为我的回调代码很好,这是一个库使用问题。