SDL音频流回调功能从未触发
我正在尝试为我的C ++应用程序通过mingw32环境使用SDL传输音频。 从我的理解来看,这是一件相当简单的事情:
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: %sn", SDL_GetError());
getchar();
exit(1);
}
SDL_PauseAudio(0);
}
.
.
.
extern "C" void audioStep(void* unused, Uint8* stream, int len)
{
// Do stuff.
}
我遇到的问题是audioStep
似乎永远不会被调用。 在运行SDL_Init
之前,使用initAudio
调用SDL_INIT_EVERYTHING
。 然后图形完全初始化( SDL_SetVideoMode
等),然后用上面的代码初始化音频系统。
有没有可能我在没有音频支持的情况下编译SDL? (有没有办法检查音频是否启用或者是否使用某种空音频设备?)
我在SDL.NET中有工作代码,所以这可能会有所帮助。 我发现我必须打开一个视频窗口:
SdlDotNet.Graphics.Video.SetVideoMode(1, 1);
SdlDotNet.Audio.Mixer.OpenAudio(stream);
// BUG: close (or hide) it
SdlDotNet.Graphics.Video.Close();
否则,它不会正确初始化。
为什么@ audioStep @应该被调用,如果你从来没有播放声音? 没有什么可做的。
使用SDL声音
链接地址: http://www.djcxy.com/p/33855.html