Files
qbz/crates/qbz-player/Cargo.toml
T
vicrodh d6b4d43043 feat(player): DSD playback engines - PCM conversion, DoP and native DSD
Conversion rides the existing play_streaming path as an exact-size
88.2 kHz/24-bit WAV. DoP and native DSD (Phases 2-3) get a dedicated
direct engine: additive S32/DSD_U32 ALSA stream constructors and a
verbatim i32 write path (no f32, no gain), a writer thread that feeds
0x69 DSD silence on pause and pads stream teardown, and a source queue
for gapless DSD. AudioSettings gains dsd_mode (convert|dop|native,
default convert). Delivery resolves per track: user mode + ALSA direct
backend + stereo + rate support, everything else converts. Seek is
ignored in direct modes and the pause suspend path is gated off there.

cc
2026-07-03 17:56:38 -06:00

42 lines
911 B
TOML

[package]
name = "qbz-player"
version.workspace = true
edition.workspace = true
license.workspace = true
description = "Playback engine and queue management for QBZ"
[dependencies]
qbz-models = { path = "../qbz-models" }
qbz-audio = { path = "../qbz-audio" }
qbz-qobuz = { path = "../qbz-qobuz" }
qbz-cmaf = { path = "../qbz-cmaf" }
qbz-dsd = { path = "../qbz-dsd" }
qbz-cache = { path = "../qbz-cache" }
# Serialization
serde = { workspace = true }
# Async
tokio = { workspace = true }
async-trait = { workspace = true }
futures-util = { workspace = true }
tokio-stream = { workspace = true }
# Logging
log = { workspace = true }
# Error handling
thiserror = { workspace = true }
# Random (for shuffle)
rand = "0.9"
# Audio decoding
symphonia = { workspace = true }
# Audio playback
rodio = { version = "0.22", features = ["symphonia-all"] }
# HTTP client for streaming
reqwest = { workspace = true }