我正在用SDL2录制我的麦克风。 不知何故,大约2秒后调用callback。 我希望它立即被调用。
如果我为我的扬声器创build一个callback,它会立即被调用。
这是一个MWE,我得到延迟:
#include <SDL2/SDL.h> void cb(void *userdata, Uint8 *stream, int len) { printf("Callback at %u\n", SDL_GetTicks()); } int main() { SDL_Init(SDL_INIT_AUDIO); SDL_AudioDeviceID dev; SDL_AudioSpec want, have; SDL_zero(want); want.freq = 44100; want.format = AUDIO_S16SYS; want.channels = 1; want.samples = 1024; want.callback = cb; dev = SDL_OpenAudioDevice(SDL_GetAudioDeviceName(0, 1), 1, &want, &have, 0); if (have.format != want.format) { SDL_Log("We didn't get the wanted format."); return 1; } SDL_PauseAudioDevice(dev, 0); if (dev == 0) { SDL_Log("Failed to open audio: %s", SDL_GetError()); return 1; } printf("Started at %u\n", SDL_GetTicks()); SDL_Delay(5000); SDL_CloseAudioDevice(dev); }
我的输出是
21点开始
在2001年callback
在2001年callback
在2001年callback
等等。
我也将want.freq
和want.samples
更改为更小的数字,没有任何效果。