【发布时间】:2019-04-20 04:29:03
【问题描述】:
我使用 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 后开始出现此问题。
【问题讨论】: