feat: seeking support and Last.fm scrobbling
Seeking: - Rust player: seek_requested/seek_target_secs atomics on PlayerStatus - Decoder loop checks for seek each iteration, calls format.seek() and resets decoder - New qobuz_backend_seek C FFI + QobuzBackend::seek(quint64) - Progress slider onProgressReleased now seeks to the dragged position Last.fm: - LastFmScrobbler: now-playing + scrobble (50% or 240s threshold, min 30s) - API signature follows Last.fm spec (sorted params, md5) - Settings dialog: API key/secret, username/password, Connect button with status - AppSettings: lastfm/enabled, api_key, api_secret, session_key - Scrobbler wired to trackChanged, positionChanged, trackFinished in MainWindow Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -62,6 +62,7 @@ void qobuz_backend_pause(QobuzBackendOpaque *backend);
|
||||
void qobuz_backend_resume(QobuzBackendOpaque *backend);
|
||||
void qobuz_backend_stop(QobuzBackendOpaque *backend);
|
||||
void qobuz_backend_set_volume(QobuzBackendOpaque *backend, uint8_t volume);
|
||||
void qobuz_backend_seek(QobuzBackendOpaque *backend, uint64_t position_secs);
|
||||
uint64_t qobuz_backend_get_position(const QobuzBackendOpaque *backend);
|
||||
uint64_t qobuz_backend_get_duration(const QobuzBackendOpaque *backend);
|
||||
uint8_t qobuz_backend_get_volume(const QobuzBackendOpaque *backend);
|
||||
|
||||
Reference in New Issue
Block a user