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
+37
View File
@@ -0,0 +1,37 @@
#include "../include/PlayerLocal.h"
#include "../include/Player.h"
void Player::play () { PE_.startPlayback(); }
void Player::stop () { PE_.stopPlayback(); }
void PlayerLocal::next() {
unsigned int nextTrack = ++currentTrack_;
PE_.uninitDecoder();
loadFile( queue_.at( ++currentTrack_));
PE_.startPlayback();
}
void PlayerLocal::previous() {
unsigned int previousTrack = --currentTrack_;
PE_.uninitDecoder();
loadFile( queue_.at( --currentTrack_));
PE_.startPlayback();
}
ma_uint64 Player::getPlayheadPosition () { return PE_.getPosition(); };
void PlayerLocal::loadFile ( Track track ) {
const char *fp = track.filePath;
PE_.initDecoder ( fp );
}
void PlayerLocal::addToQueue( Track& track ) {
queue_.push_back( track );
}
void::PlayerLocal::playQueue() {
for ( Track track : queue_ ) {
loadFile( track );
play();
++currentTrack_;
}
}