// SPDX-License-Identifier: MIT // // EmulationStation Desktop Edition // AudioManager.h // // Low-level audio functions (using SDL2). // #ifndef ES_CORE_AUDIO_MANAGER_H #define ES_CORE_AUDIO_MANAGER_H #include #include #include class Sound; class AudioManager { public: virtual ~AudioManager(); static std::shared_ptr& getInstance(); void init(); void deinit(); void registerSound(std::shared_ptr& sound); void unregisterSound(std::shared_ptr& sound); void play(); void stop(); // Used for streaming audio from videos. void processStream(const void *samples, unsigned count); bool getHasAudioDevice() { return sHasAudioDevice; }; static SDL_AudioDeviceID sAudioDevice; static SDL_AudioSpec sAudioFormat; private: AudioManager(); static void mixAudio(void* unused, Uint8* stream, int len); static void mixAudio2(void* unused, Uint8* stream, int len); static SDL_AudioStream* sConversionStream; static std::vector> sSoundVector; static std::shared_ptr sInstance; static bool sHasAudioDevice; }; #endif // ES_CORE_AUDIO_MANAGER_H