Headless Rust gRPC daemon to drive Bluetooth, HLS/DASH playback, and snapcast/shairport-sync/squeezelite on Raspberry Pi audio rigs.
1//! Standalone HLS / DASH audio player with pluggable PCM sinks.
2//!
3//! URL (.m3u8 / .mpd)
4//! → manifest parser (m3u8-rs / dash-mpd)
5//! → segment fetcher (reqwest, concurrent prefetch)
6//! → demux + decode (symphonia: fMP4 / TS → AAC → S16LE PCM)
7//! → AudioSink (cpal / stdout / pipe)
8//!
9//! Lifted from rockbox-zig/crates/hls and rewired to a trait-based output so
10//! the gRPC layer can pick `cpal | stdout | pipe` per-stream at runtime.
11
12#[cfg(target_os = "linux")]
13mod alsa_sink;
14#[cfg(not(target_os = "linux"))]
15mod cpal_sink;
16mod decoder;
17mod demux;
18mod fetcher;
19mod manifest;
20mod output;
21mod player;
22mod sink;
23mod sources;
24
25pub use manifest::{is_hls_or_dash_url, ManifestKind};
26pub use player::{
27 pause, play, resume, set_volume, status, stop, volume, PlayConfig, PlaybackSource,
28 PlayerState, Status,
29};
30pub use sink::{AudioOutput, AudioSink};
31pub use sources::{spotify_start, spotify_stop, LibrespotConfig};