Я использую 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 на том же ноутбуке.