[package] name = "librespot-playback" version.workspace = true rust-version.workspace = true authors = ["Sasha Hilton "] license.workspace = true description = "The audio playback logic for librespot" repository.workspace = true edition.workspace = true [features] # Refer to the workspace Cargo.toml for the list of features default = ["rodio-backend", "native-tls"] # Audio backends alsa-backend = ["dep:alsa"] gstreamer-backend = [ "dep:gstreamer", "dep:gstreamer-app", "dep:gstreamer-audio", ] jackaudio-backend = ["dep:jack"] portaudio-backend = ["dep:portaudio-rs"] pulseaudio-backend = ["dep:libpulse-binding", "dep:libpulse-simple-binding"] rodio-backend = ["dep:cpal", "dep:rodio"] rodiojack-backend = ["dep:rodio", "cpal/jack"] sdl-backend = ["dep:sdl2"] # Audio processing features passthrough-decoder = ["dep:ogg"] # TLS backend propagation native-tls = [ "librespot-core/native-tls", "librespot-audio/native-tls", "librespot-metadata/native-tls", ] rustls-tls-native-roots = [ "librespot-core/rustls-tls-native-roots", "librespot-audio/rustls-tls-native-roots", "librespot-metadata/rustls-tls-native-roots", ] rustls-tls-webpki-roots = [ "librespot-core/rustls-tls-webpki-roots", "librespot-audio/rustls-tls-webpki-roots", "librespot-metadata/rustls-tls-webpki-roots", ] [dependencies] librespot-audio.workspace = true librespot-core.workspace = true librespot-metadata.workspace = true portable-atomic = "1" futures-util = "0.3" log = "0.4" parking_lot = { version = "0.12", features = ["deadlock_detection"] } shell-words = "1.1" thiserror = "2" tokio = { version = "1", features = [ "parking_lot", "rt", "rt-multi-thread", "sync", ] } zerocopy = { version = "0.8", features = ["derive"] } # Backends alsa = { version = "0.9", optional = true } jack = { version = "0.13", optional = true } portaudio-rs = { version = "0.3", optional = true } sdl2 = { version = "0.38", optional = true } # GStreamer dependencies gstreamer = { version = "0.24", optional = true } gstreamer-app = { version = "0.24", optional = true } gstreamer-audio = { version = "0.24", optional = true } # PulseAudio dependencies libpulse-binding = { version = "2", optional = true, default-features = false } libpulse-simple-binding = { version = "2", optional = true, default-features = false } # Rodio dependencies cpal = { version = "0.16", optional = true } rodio = { version = "0.21", optional = true, default-features = false, features = [ "playback", ] } # Container and audio decoder symphonia = { version = "0.5", default-features = false, features = [ "mp3", "ogg", "vorbis", ] } # Legacy Ogg container decoder for the passthrough decoder ogg = { version = "0.9", optional = true } # Dithering rand = { version = "0.9", features = ["small_rng"] } rand_distr = "0.5"