2012-01-13 35 views
0

我是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樣本)

但問題是,回調函數沒有及時呼叫,或者呼叫延遲導致聲音變得適合。我無法將數據傳遞到回調函數。

您能否建議一種將傳遞數據(樣本)同步到回調函數的方法,或者提供一些數據在樣本中傳遞的應用程序?

+1

那麼,你在回調中做了什麼?您發佈的所有內容都是一些設置代碼 - 我們無法看到可能出現的問題。 – 2012-01-13 12:43:19

+1

緩衝區有多大,即您期望SDL需要回調以便按時爲其提供服務的頻率? – unwind 2012-01-13 12:43:46

回答

0

我們需要真正的價值觀來完全回答你的問題。

你嘗試過的緩衝區大小是多少?

也意識到SDL不給你想要的東西很常見,所以請檢查實際的規格緩衝區大小。

我一直在Windows上使用SDL的二進制mingw32端口,不會給我緩衝小於一秒,無論我的要求如何。

+0

嗨, 我是SDL新手。 你可以請建議一個適當的緩衝區大小? 我想一次將1024個PCM採樣傳遞給回調函數,而不是傳遞整個wav文件。 ThnX – user1147663 2012-01-16 05:22:29

+0

這是一個合理的緩衝區大小。 – gravitron 2012-01-16 14:44:16