#pragma once #include "playback_backend.hpp" #include #include "file_backend.hpp" class SDLMixerXBackend : public PlaybackBackend { Mix_Music *music; Mix_CommonMixer_t mixer; File *file; bool initial = false; double length; public: inline std::string get_id() override { return "sdl_mixer_x"; } inline std::string get_name() override { return "SDL Mixer X"; } std::optional get_max_samples() override; inline double get_length() override { return length; } inline uint64_t get_length_samples() override { return time_to_samples(get_length()); } void seek(double position) override; inline void seek_samples(uint64_t position) override { seek(samples_to_time(position)); } double get_position_time() override; inline uint64_t get_position_samples() override { return time_to_samples(get_position_time()); } void load(const char *filename) override; void switch_stream(int idx) override; void cleanup() override; size_t render(void *buf, size_t maxlen) override; void add_licenses() override; SDLMixerXBackend(); ~SDLMixerXBackend() override; };