#pragma once #include #include #include #include #include #include #include struct SDL_AudioStream; class TitleSound final: public QObject { public: explicit TitleSound(QObject* parent = nullptr); ~TitleSound() override; void SetTitle(const QString& base); private: struct Sound { std::vector pcm; int channels = 0; int rate = 0; }; static Sound Decode(const QByteArray& data, const QPromise& promise); void Stop(); QThreadPool m_decode_pool; QFutureWatcher m_decode; QString m_base; SDL_AudioStream* m_stream = nullptr; bool m_audio_initialized = false; };