SDL Audio abspielen läuft, aber es kommt kein Ton
-
Hallo,
ich versuche via SDL eine .wav Datei abzuspielen. Ich bin dabei folgendermaßen vorgeganen:
int err_main(std::string_view msg) { std::cerr << msg << '\n'; return -1; } struct AudioData { Uint8* pos; Uint32 len; }; void MyAudioCallback(void* userdata, Uint8* stream, int streamLen) { auto audio = reinterpret_cast<AudioData*>(userdata); if (!audio->len) return; auto len = std::min(static_cast<Uint32>(streamLen), audio->len); SDL_memcpy(stream, audio->pos, len); audio->pos += len; audio->len -= len; } int main(int argc, char** argv) { SDL_Init(SDL_INIT_AUDIO); const char* path{ "testClip.wav" }; SDL_AudioSpec wavSpec; Uint8* wavStart; Uint32 wavLen; if (!SDL_LoadWAV(path, &wavSpec, &wavStart, &wavLen)) return err_main("Unable to load audio"); AudioData audio{ wavStart, wavLen }; wavSpec.callback = MyAudioCallback; wavSpec.userdata = &audio; auto device = SDL_OpenAudioDevice(nullptr, 0, &wavSpec, nullptr, SDL_AUDIO_ALLOW_ANY_CHANGE); if (!device) return err_main("Error opening audio device"); SDL_PauseAudioDevice(device, 0); while (audio.len > 0) SDL_Delay(100); SDL_CloseAudioDevice(device); SDL_FreeWAV(wavStart); SDL_Quit(); return 0; }
Wenn ich einfach SDL_OpenAudio (ohne -Device) verwende wird die Datei abgespielt:
SDL_OpenAudio(&wavSpec, nullptr); SDL_PauseAudio(0);
Hat jemand eine Idee, warum das Programm zwar die Datei abspielen zu scheint, jedoch nichts aus meinem Lautsprecher kommt? Mit Kopfhörern habe ich es auch schon versucht.
LG