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

上一篇: SDL audio streaming callback function never triggered

下一篇: Recording an audio stream in C# from C++ ASIO library