mirror of
https://github.com/sle118/squeezelite-esp32.git
synced 2025-12-06 11:36:59 +03:00
51 lines
1.3 KiB
C++
51 lines
1.3 KiB
C++
#ifndef PLAYER_H
|
|
#define PLAYER_H
|
|
|
|
#include <vector>
|
|
#include <string>
|
|
#include <functional>
|
|
#include <atomic>
|
|
#include <mutex>
|
|
|
|
#include "Utils.h"
|
|
#include "MercuryManager.h"
|
|
#include "TrackReference.h"
|
|
#include "Session.h"
|
|
#include "SpotifyTrack.h"
|
|
#include "AudioSink.h"
|
|
#include <mutex>
|
|
#include "Queue.h"
|
|
#include "Task.h"
|
|
|
|
class Player : public bell::Task {
|
|
private:
|
|
std::shared_ptr<MercuryManager> manager;
|
|
std::shared_ptr<SpotifyTrack> currentTrack = nullptr;
|
|
std::shared_ptr<AudioSink> audioSink;
|
|
std::mutex loadTrackMutex;
|
|
// @TODO: Use some actual structure here
|
|
bell::Queue<std::shared_ptr<SpotifyTrack>> trackQueue;
|
|
void runTask();
|
|
|
|
public:
|
|
Player(std::shared_ptr<MercuryManager> manager, std::shared_ptr<AudioSink> audioSink);
|
|
std::function<void()> endOfFileCallback;
|
|
int volume = 255;
|
|
uint32_t logVolume;
|
|
std::atomic<bool> isRunning = false;
|
|
trackChangedCallback trackChanged;
|
|
std::mutex runningMutex;
|
|
|
|
void setVolume(uint32_t volume);
|
|
void handleLoad(std::shared_ptr<TrackReference> track, std::function<void()> &trackLoadedCallback, uint32_t position_ms, bool isPaused);
|
|
void pause();
|
|
void cancelCurrentTrack();
|
|
void seekMs(size_t positionMs);
|
|
void feedPCM(uint8_t *data, size_t len);
|
|
void play();
|
|
void stop();
|
|
|
|
};
|
|
|
|
#endif
|