[package] name = "audio-player" version.workspace = true edition.workspace = true # The one axis worth a flag: Ogg-Opus decoding pulls symphonia *and* # `symphonia-adapter-libopus`. Everything else in this crate (HLS, the # windowed-HTTP source, the spectrum tap) shares its dependencies with # code that always ships, so gating it would buy nothing # (architecture/build-features.md D6/D7/D8). [features] default = ["opus", "opus-bundled"] opus = ["dep:symphonia", "dep:symphonia-adapter-libopus"] # Where libopus comes from (architecture/build-features.md D12). On (the # default) compiles it from the vendored source, which needs cmake and a C # compiler but nothing installed. Off links the system libopus instead, so a # packaged build can use the distribution's copy: `--no-default-features # --features opus`. The weak `?/` is load-bearing — it must not pull the # optional adapter in by itself, or `opus-bundled` would silently re-enable # `opus`. opus-bundled = ["symphonia-adapter-libopus?/bundled"] [dependencies] anyhow.workspace = true bytes.workspace = true flume.workspace = true futures.workspace = true reqwest.workspace = true rodio.workspace = true stream-download.workspace = true symphonia = { workspace = true, optional = true } symphonia-adapter-libopus = { workspace = true, optional = true } thiserror.workspace = true tokio = { workspace = true, features = ["rt", "rt-multi-thread"] } tracing.workspace = true url.workspace = true [dev-dependencies] tokio = { workspace = true, features = ["full"] }