Add Database and refactor player/playback

Add Database class with SQLite fetch/fetchAlbum methods. Refactor
PlaybackEngine (data callback, seek, getPosition, decoder lifecycle)
and Player API (PlaybackEngine member, queue handling, PlayerLocal).
Update Metadata::Track fields to include artist/title/album/trackNr/length.
This commit is contained in:
2026-06-20 15:19:34 +02:00
parent 2130d95ed5
commit 80bffc0fdd
11 changed files with 315 additions and 104 deletions
+20 -16
View File
@@ -6,35 +6,39 @@
#include <memory>
struct PlaybackState {
ma_decoder decoder{};
std::atomic<bool> finished{ false };
ma_decoder decoder {};
std::atomic<bool> finished { false };
};
class PlaybackEngine {
public:
PlaybackEngine();
~PlaybackEngine();
public:
PlaybackEngine ();
~PlaybackEngine ();
static void data_callback( ma_device* pDevice, void* pOutput, const void*, ma_uint32 frameCount );
void configureDevice();
void configureDecoder();
void initDevice();
void initDecoder( const char* filePath );
static void data_callback ( ma_device *pDevice, void *pOutput, const void *, ma_uint32 frameCount );
void configureDevice ();
void configureDecoder ();
void initDevice ();
void initDecoder ( const char *filePath );
void uninitDecoder();
void startPlayback();
void stopPlayback();
void pausePlayback() { stopPlayback(); };
int isFinished() const;
void startPlayback ();
void stopPlayback ();
void pausePlayback () { stopPlayback(); };
void seek ( ma_uint64 frame );
int isFinished () const;
private:
ma_uint64 getPosition ();
private:
ma_device device_;
ma_format format_;
unsigned int channels_;
unsigned int sampleRate_;
PlaybackState state;
//config
ma_uint64 cursor_;
// config
ma_decoder_config decoderConfig;
ma_device_config deviceConfig;
};