#pragma once #include "../include/Metadata.h" #include "../include/miniaudio.h" #include #include #include using Queue = std::vector; class Player { public: virtual ~Player() = delete; virtual void initPlayer(); void loadFile() const; // Transport Control virtual void play() const; virtual void stop() const; virtual void pause() const; virtual void previous() const; virtual void next() const; virtual void getPlayheadPosition() const; virtual void setPlayheadPosition() const; // get Metadat virtual std::string& getArtist() const; virtual std::string& getTitle() const; virtual std::string& getAlbum() const; virtual unsigned int getTrackNr() const; // Player Queue Queue getQueue() const; Queue clearQueue(); Queue addToQueue( Track& track ); Queue rempveFromQueue( Track& track ); Queue shuffleQueue(); private: std::string artist_; std::string title_; std::string album_; std::string trackNr_; std::string filePath_; Queue queue_; unsigned int samplerate_ = 48000; unsigned int channels_ = 2; }; class PlayerLocal : public Player { public: virtual void initPlayer() override; virtual ma_engine_config configureEngine() override; const virtual unsigned int getSamplerate() const; };