feat(qbz-player): Phase 6.5 - export full Player module

Reorganize qbz-player to export the complete Player struct with all
playback functionality.

Changes:
- Restructure: mod.rs -> player/mod.rs with submodules
- Add rodio, serde, reqwest, qbz-qobuz dependencies
- Export Player, SharedState, PlaybackState, PlaybackEvent
- Export streaming types (BufferedMediaSource, etc.)

The Player module is now fully available from qbz-player crate.
Full workspace and src-tauri compile successfully.
This commit is contained in:
vicrodh committed 2026-02-14 15:38:53 -06:00
1 parent 0238b1c559
commit 71f8d09c41
5 files changed
+27 -20

No files matched your search

+9 -3
View File
@@ -8,6 +8,10 @@ description = "Playback engine and queue management for QBZ"
[dependencies] [dependencies]
qbz-models = { path = "../qbz-models" } qbz-models = { path = "../qbz-models" }
qbz-audio = { path = "../qbz-audio" } qbz-audio = { path = "../qbz-audio" }
qbz-qobuz = { path = "../qbz-qobuz" }
# Serialization
serde = { workspace = true }
# Async # Async
tokio = { workspace = true } tokio = { workspace = true }
@@ -27,6 +31,8 @@ rand = "0.8"
# Audio decoding # Audio decoding
symphonia = { workspace = true } symphonia = { workspace = true }
# Vendored audio libraries (will be copied in Phase 3) # Vendored audio libraries (same as qbz-audio)
# rodio = { path = "./vendor/rodio", features = ["symphonia-all"] } rodio = { path = "../../src-tauri/vendor/rodio", features = ["symphonia-all"] }
# cpal = { path = "./vendor/cpal" }
# HTTP client for streaming
reqwest = { workspace = true }
+17 -17
View File
@@ -2,8 +2,8 @@
//! //!
//! This crate provides: //! This crate provides:
//! - QueueManager: Track queue management with shuffle/repeat //! - QueueManager: Track queue management with shuffle/repeat
//! - Player: Main playback control (TODO: Phase 3b) //! - Player: Main playback engine
//! - StreamingSource: HTTP audio streaming (TODO: Phase 3b) //! - StreamingSource: HTTP audio streaming
//! //!
//! # Architecture //! # Architecture
//! //!
@@ -23,26 +23,26 @@
//! //!
//! # Usage //! # Usage
//! //!
//! ```rust //! ```rust,ignore
//! use qbz_player::QueueManager; //! use qbz_player::{Player, QueueManager};
//! use qbz_models::QueueTrack; //! use qbz_audio::{AudioSettings, AudioDiagnostic};
//! //!
//! let player = Player::new(None, AudioSettings::default(), None, AudioDiagnostic::new());
//! let queue = QueueManager::new(); //! let queue = QueueManager::new();
//! // queue.add_track(track);
//! // queue.next();
//! ``` //! ```
pub mod queue; pub mod queue;
pub mod player;
// Re-export main types // Re-export main types
pub use queue::QueueManager; pub use queue::QueueManager;
pub use player::{
// TODO: Phase 3b - Extract player module Player,
// The player module has complex dependencies on: SharedState,
// - QobuzClient (for streaming URLs) PlaybackState,
// - Audio backend (for playback) PlaybackEvent,
// - Config system (for audio settings) BufferedMediaSource,
// - Visualizer BufferWriter,
// StreamingConfig,
// These need to be abstracted via traits before extraction. IncrementalStreamingSource,
// For now, the player remains in qbz-nix/src-tauri. };
@@ -37,6 +37,7 @@ use symphonia::core::probe::Hint;
use symphonia::default::{get_codecs, get_probe}; use symphonia::default::{get_codecs, get_probe};
use qbz_models::Quality; use qbz_models::Quality;
use qbz_qobuz::QobuzClient;
use qbz_audio::{ use qbz_audio::{
AudioBackendType, AudioDiagnostic, BackendConfig, BackendManager, DiagnosticSource, AudioBackendType, AudioDiagnostic, BackendConfig, BackendManager, DiagnosticSource,
extract_replaygain, calculate_gain_factor, db_to_linear, extract_replaygain, calculate_gain_factor, db_to_linear,