我正在尝试通过 mingw32 环境为使用 SDL 的 C++ 应用程序流式传输音频。据我了解,这是一件相当简单的事情:
extern "C" void audioStep(void* unused, Uint8* stream, int len);
void initAudio()
{
SDL_AudioSpec* fmt;
fmt = (SDL_AudioSpec*)malloc(sizeof(SDL_AudioSpec));
fmt->freq = 22050;
fmt->format = AUDIO_S16;
fmt->channels = 1;
fmt->samples = 8192;
fmt->callback = audioStep;
fmt->userdata = NULL;
SDL_AudioSpec obFmt;
if (SDL_OpenAudio(fmt, &obFmt) < 0)
{
fprintf(stderr, "Unable to open audio: %s\n", SDL_GetError());
getchar();
exit(1);
}
SDL_PauseAudio(0);
}
.
.
.
extern "C" void audioStep(void* unused, Uint8* stream, int len)
{
// Do stuff.
}
我遇到的问题是audioStep
似乎从来没有被调用过。在initAudio
运行之前SDL_Init
使用SDL_INIT_EVERYTHING
. 然后完全初始化图形(SDL_SetVideoMode
等等),然后使用上面的代码初始化音频系统。
有没有可能我在没有音频支持的情况下编译了 SDL?(有没有办法检查音频是否启用或者它是否使用某种空音频设备?)