librespot/playback/Cargo.toml
Sebastian Dröge ab562cc8d8
Update GStreamer to 0.18 and clean up (#964)
* Update GStreamer backend to 0.18
* Don't manually go through all intermediate states when shutting down the GStreamer backend; that happens automatically
* Don't initialize GStreamer twice
* Use less stringly-typed API for configuring the appsrc
* Create our own main context instead of stealing the default one; if the application somewhere else uses the default main context this would otherwise fail in interesting ways
* Create GStreamer pipeline more explicitly instead of going via strings for everything
* Add an audioresample element before the sink in case the sink doesn't support the sample rate
* Remove unnecessary `as_bytes()` call
* Use a GStreamer bus sync handler instead of spawning a new thread with a mainloop; it's only used for printing errors or when the end of the stream is reached, which can also be done as well when synchronously handling messages.
* Change `expect()` calls to proper error returns wherever possible in GStreamer backend
* Store asynchronously reported error in GStreamer backend and return them on next write
* Update MSRV to 1.56
2022-02-13 21:52:02 +01:00

66 lines
2.2 KiB
TOML

[package]
name = "librespot-playback"
version = "0.3.1"
authors = ["Sasha Hilton <sashahilton00@gmail.com>"]
description = "The audio playback logic for librespot"
license = "MIT"
repository = "https://github.com/librespot-org/librespot"
edition = "2018"
[dependencies.librespot-audio]
path = "../audio"
version = "0.3.1"
[dependencies.librespot-core]
path = "../core"
version = "0.3.1"
[dependencies.librespot-metadata]
path = "../metadata"
version = "0.3.1"
[dependencies]
byteorder = "1"
futures-util = "0.3"
log = "0.4"
parking_lot = { version = "0.11", features = ["deadlock_detection"] }
shell-words = "1.0.0"
thiserror = "1.0"
tokio = { version = "1", features = ["parking_lot", "rt", "rt-multi-thread", "sync"] }
zerocopy = "0.6"
# Backends
alsa = { version = "0.5", optional = true }
portaudio-rs = { version = "0.3", optional = true }
libpulse-binding = { version = "2", optional = true, default-features = false }
libpulse-simple-binding = { version = "2", optional = true, default-features = false }
jack = { version = "0.8", optional = true }
sdl2 = { version = "0.35", optional = true }
gst = { package = "gstreamer", version = "0.18", optional = true }
gst-app = { package = "gstreamer-app", version = "0.18", optional = true }
gst-audio = { package = "gstreamer-audio", version = "0.18", optional = true }
glib = { version = "0.15", optional = true }
# Rodio dependencies
rodio = { version = "0.15", optional = true, default-features = false }
cpal = { version = "0.13", optional = true }
# 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.8", optional = true }
# Dithering
rand = { version = "0.8", features = ["small_rng"] }
rand_distr = "0.4"
[features]
alsa-backend = ["alsa"]
portaudio-backend = ["portaudio-rs"]
pulseaudio-backend = ["libpulse-binding", "libpulse-simple-binding"]
jackaudio-backend = ["jack"]
rodio-backend = ["rodio", "cpal"]
rodiojack-backend = ["rodio", "cpal/jack"]
sdl-backend = ["sdl2"]
gstreamer-backend = ["gst", "gst-app", "gst-audio", "glib"]
passthrough-decoder = ["ogg"]