2016-01-23 92 views
1

我第一次用SDL_PauseAudio(0)取消暫停SDL音頻,在初始化後立即使用SDL_OpenAudio()我總是點擊一下。點擊聲音取消暫停SDL2音頻

我試着在我的音頻回調中處理這個問題,確保聲音的振幅從零增加(實際上現在我只是使用正弦波,相位從0開始,所以波形式從零開始自然而然地上升),但這沒有幫助。

在撥打SDL_OpenAudio()SDL_PauseAudio(0)以避免此點擊之間有什麼特別的我應該做的嗎?我一直在努力在文檔中找到任何東西。

回答

1

我解決了這個問題 - 沒有具體到SDL。問題出現在我的回調代碼中。

問題是我已經從無符號16位int格式轉換爲帶符號16位整型。在我的回調中,我將音頻計算爲double,然後在輸出上轉換爲int格式。 轉換爲無符號時,包括在我的(-1.0至1.0範圍)信號中添加1.0,使其全部爲正而不是以0爲中心。我只是在切換到有符號音頻時忘記刪除+1.0 - 實際上,我的信號有一個直流偏移,導致初始/關閉不連續。

沒有我發佈的回調和初始化代碼,幾乎沒有人有機會猜到 - 我認爲我的回調代碼很好,這是一個庫使用問題。