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:
+20
-16
@@ -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;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user