Package: libsdl2-dev Version: 2.32.0+dfsg-1 Forwarded: https://github.com/libsdl-org/SDL/issues/9706
As in <URL: https://github.com/libsdl-org/SDL/issues/9706 >, I discovered this problem when trying to use whisper.cpp, and thanks to the example program provided there, I can confirm that the issue is with SDL 2. This is the test program: #include <SDL2/SDL.h> #include <iostream> const int SAMPLE_RATE = 16000; const int NUM_CHANNELS = 1; const int BUFFER_SIZE = 1024; const int RECORDING_TIME = 2000; // 2 seconds in milliseconds int callbackCount = 0; // Audio callback function void audioCallback(void* userdata, Uint8* stream, int len) { // Do nothing with the audio data, just count the callback invocations callbackCount++; } int main() { if (SDL_Init(SDL_INIT_AUDIO) < 0) { std::cerr << "SDL initialization failed: " << SDL_GetError() << std::endl; return 1; } SDL_AudioSpec wantedSpec; SDL_zero(wantedSpec); wantedSpec.freq = SAMPLE_RATE; wantedSpec.format = AUDIO_F32; wantedSpec.channels = NUM_CHANNELS; wantedSpec.samples = BUFFER_SIZE; wantedSpec.callback = audioCallback; SDL_AudioSpec obtainedSpec; SDL_zero(obtainedSpec); // Open the default audio capture device SDL_AudioDeviceID audioDevice = SDL_OpenAudioDevice(NULL, 1, &wantedSpec, &obtainedSpec, 0); if (audioDevice == 0) { std::cerr << "Failed to open audio: " << SDL_GetError() << std::endl; SDL_Quit(); return 1; } // Start recording SDL_PauseAudioDevice(audioDevice, 0); // Wait for recording time SDL_Delay(RECORDING_TIME); // Stop recording SDL_PauseAudioDevice(audioDevice, 1); // Close the audio device SDL_CloseAudioDevice(audioDevice); // Print out the number of callback invocations std::cout << "Callback invoked " << callbackCount << " times." << std::endl; SDL_Quit(); return !callbackCount; } Tested using "g++ -o test test.cpp -lSDL2", and producing the following output with pulseaudio: %./test Callback invoked 0 times. % Here are some alternative results: % SDL_AUDIODRIVER=alsa ./test Callback invoked 35 times. % SDL_AUDIODRIVER=pipewire ./test [W][26087.476267] pw.conf | [ conf.c: 1214 try_load_conf()] can't load config client.conf: No such file or directory [E][26087.476293] pw.conf | [ conf.c: 1243 pw_conf_load_conf_for_context()] can't load config client.conf: No such file or directory SDL initialization failed: Pipewire: Failed to create hotplug detection context (2) % -- Happy hacking Petter Reinholdtsen

