A modern, network-enabled music player platform built on Rockbox technology. rockboxd.tsiry-sandratraina.com
rust deno navidrome airplay libadwaita zig mpris snapcast mpd rockbox audio subsonic

feat(playback): configurable audio output (cpal, stdout, fifo, unix, tcp) master

rockbox-playback previously always opened the default cpal device. Add an `OutputConfig` on `PlayerConfig` so the engine's stereo-i16 ring can be drained by any of several backends: - Cpal — system audio device (default; now behind a default-on `cpal` feature) - Stdout — raw S16LE on fd 1, pipeable to ffplay et al. - Fifo — raw S16LE into a named FIFO (opened O_RDWR so readers never EOF) - Unix — raw S16LE over a Unix socket (listen or connect) - Tcp — raw S16LE over TCP (listen or connect) Every non-cpal backend runs a writer thread that mirrors the cpal callback's fade/balance semantics and paces the stream to real time with a monotonic clock, so a consumer that doesn't clock the stream itself still plays at the correct speed. `OutputConfig` parses from compact strings (`stdout`, `fifo:/path`, `tcp:host:port`, `tcp-connect:host:port`, ...). Making cpal optional lets a headless build drop the audio-device dep entirely (default output then becomes Stdout). Wiring: - PlayerConfig.output + PlayerConfigBuilder::output(...) - FFI: new rb_player_new_with_output(spec, ...) (existing ctors ABI-stable) - examples/play.rs: --output <spec>, all logs routed to stderr so stdout stays a clean PCM stream Bumps rockbox-playback 0.4.2 -> 0.5.0.


+711 -90
8 changed files