[英]Why the buffer provided by SDL2, for audio samples, is not big enough?
我使用 SDL2 創建具有以下格式的聲音:
freq = 32 * 1500;
format = AUDIO_F32SYS;
channels = 1;
samples = 1500;
我希望回調中的長度參數為 6000 ( 1 * sizeof(float) * 1500
) 但它是 3000。
我試圖減少樣本數量,使用 2 個通道,但始終提供的緩沖區是需要的一半。
這是我打開音頻設備的方式:
SDL_AudioSpec want, have;
SDL_zero(want);
want.freq = 32 * 1500;
want.format = AUDIO_F32SYS;
want.channels = 1;
want.samples = 1500;
want.callback = ::PlayDing;
want.userdata = this;
m_Audio = SDL_OpenAudioDevice(nullptr, 0, &want, &have, SDL_AUDIO_ALLOW_ANY_CHANGE);
// want == have here
所有want
和have
領域都是平等的。
在我在同一台筆記本電腦上從 Ubuntu 切換到 Debian 后,這個問題開始發生。
我有一個錯誤的假設,即每次調用回調時,它都應該填充samples
數量的音頻數據。
callback 需要提供的樣本數量應該在 callback 內部根據length / sizeof(float)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.