void Mix_PauseMusic() { AM_debugPrintLn(__func__); if (gMusic != nullptr) { gMusic->pause(); } }
void Mix_ResumeMusic() { AM_debugPrintLn(__func__); if (gMusic != nullptr and gMusic->isPaused()) { gMusic->resume(); } }
void Mix_RewindMusic() { AM_debugPrintLn(__func__); if (gMusic != nullptr) { gMusic->rewind(); } }
Mix_Music* Mix_LoadMUS_RW(SDL_RWops* rw) { AM_debugPrintLn(__func__); auto strm = new Aulib::Stream(rw, Aulib::Decoder::decoderFor(rw), std::make_unique<Aulib::ResamplerSpeex>(), false); strm->open(); return (Mix_Music*)strm; }
int Mix_PlayingMusic() { AM_debugPrintLn(__func__); if (gMusic != nullptr) { return static_cast<int>(gMusic->isPlaying()); } return 0; }
Mix_Music* Mix_LoadMUS(const char* file) { AM_debugPrintLn(__func__); auto strm = new Aulib::Stream(file, Aulib::Decoder::decoderFor(file), std::make_unique<Aulib::ResamplerSpeex>()); strm->open(); return (Mix_Music*)strm; }
int Mix_HaltMusic() { AM_debugPrintLn(__func__); if (gMusic != nullptr) { gMusic->stop(); gMusic = nullptr; } return 0; }
void Mix_FreeMusic(Mix_Music* music) { AM_debugPrintLn(__func__); auto* strm = (Aulib::Stream*)music; if (gMusic == strm) { gMusic = nullptr; } delete strm; }
Mix_Music* Mix_LoadMUSType_RW(SDL_RWops* rw, Mix_MusicType type, int freesrc) { AM_debugPrintLn(__func__ << " type: " << type); auto decoder = std::unique_ptr<Aulib::Decoder>(nullptr); switch (type) { case MUS_WAV: case MUS_FLAC: decoder = std::make_unique<Aulib::DecoderSndfile>(); break; case MUS_MOD: case MUS_MODPLUG: decoder = std::make_unique<Aulib::DecoderModplug>(); break; case MUS_MID: decoder = std::make_unique<Aulib::DecoderFluidsynth>(); break; case MUS_OGG: decoder = std::make_unique<Aulib::DecoderVorbis>(); break; case MUS_MP3: case MUS_MP3_MAD: decoder = std::make_unique<Aulib::DecoderMpg123>(); break; default: AM_debugPrintLn("NO DECODER FOUND"); return nullptr; } auto strm = new Aulib::Stream(rw, std::move(decoder), std::make_unique<Aulib::ResamplerSpeex>(), freesrc != 0); strm->open(); return (Mix_Music*)strm; }
int Mix_VolumeMusic(int volume) { AM_debugPrintLn(__func__); int prevVol = gMusicVolume * MIX_MAX_VOLUME; volume = std::min(std::max(-1, volume), MIX_MAX_VOLUME); if (volume >= 0) { gMusicVolume = (float)volume / (float)MIX_MAX_VOLUME; if (gMusic != nullptr) { gMusic->setVolume(gMusicVolume); } } return prevVol; }
int Mix_PlayMusic(Mix_Music* music, int loops) { AM_debugPrintLn(__func__); if (gMusic != nullptr) { gMusic->stop(); gMusic = nullptr; } if (loops == 0) { return 0; } gMusic = (Aulib::Stream*)music; gMusic->setVolume(gMusicVolume); return static_cast<int>(gMusic->play(loops == -1 ? 0 : loops)); }
void Mix_HookMusicFinished(void (*music_finished)()) { AM_debugPrintLn(__func__); if (music_finished == nullptr) { if (gMusic != nullptr) { gMusic->unsetFinishCallback(); } gMusicFinishHook = nullptr; } else { gMusicFinishHook = music_finished; if (gMusic != nullptr) { gMusic->setFinishCallback(musicFinishHookWrapper); } } }
int Mix_EachSoundFont(int (*/*function*/)(const char*, void*), void* /*data*/) { AM_debugPrintLn(__func__); return 0; }
const char* Mix_GetSoundFonts() { AM_debugPrintLn(__func__); return nullptr; }
int Mix_SetSoundFonts(const char* /*paths*/) { AM_debugPrintLn(__func__); return 0; }
int Mix_GetSynchroValue() { AM_debugPrintLn(__func__); return -1; }
int Mix_SetSynchroValue(int /*value*/) { AM_debugPrintLn(__func__); return -1; }
int Mix_SetMusicCMD(const char* /*command*/) { AM_debugPrintLn(__func__); return -1; }
void* Mix_GetMusicHookData() { AM_debugPrintLn(__func__); return nullptr; }
int Mix_SetMusicPosition(double /*position*/) { AM_debugPrintLn(__func__); return -1; }
void Mix_HookMusic(void (*/*mix_func*/)(void*, Uint8*, int), void* /*arg*/) { AM_debugPrintLn(__func__); }
int Mix_FadeInMusic(Mix_Music* music, int loops, int /*ms*/) { AM_debugPrintLn(__func__); return Mix_PlayMusic(music, loops); }
Mix_Fading Mix_FadingMusic() { AM_debugPrintLn(__func__); return MIX_NO_FADING; }
int Mix_FadeOutMusic(int /*ms*/) { AM_debugPrintLn(__func__); return 0; }
int Mix_FadeInMusicPos(Mix_Music* /*music*/, int /*loops*/, int /*ms*/, double /*position*/) { AM_debugPrintLn(__func__); return 0; }
const char* Mix_GetMusicDecoder(int /*index*/) { AM_debugPrintLn(__func__); return nullptr; }
Mix_MusicType Mix_GetMusicType(const Mix_Music* /*music*/) { AM_debugPrintLn(__func__); return MUS_NONE; }
int Mix_GetNumMusicDecoders() { AM_debugPrintLn(__func__); return 0; }
Aulib::AudioStream::AudioStream(const char* filename, AudioDecoder* decoder, AudioResampler* resampler) : AudioStream(SDL_RWFromFile(filename, "rb"), decoder, resampler, true) { AM_debugPrintLn(d->fRWops); }