mirror of
https://github.com/librespot-org/librespot.git
synced 2024-12-18 17:11:53 +00:00
7921f23927
- Switch from `lewton` to `Symphonia`. This is a pure Rust demuxer and decoder in active development that supports a wide range of formats, including Ogg Vorbis, MP3, AAC and FLAC for future HiFi support. At the moment only Ogg Vorbis and MP3 are enabled; all AAC files are DRM-protected. - Bump MSRV to 1.51, required for `Symphonia`. - Filter out all files whose format is not specified. - Not all episodes seem to be encrypted. If we can't get an audio key, try and see if we can play the file without decryption. - After seeking, report the actual position instead of the target. - Remove the 0xa7 bytes offset from `Subfile`, `Symphonia` does not balk at Spotify's custom Ogg packet before it. This also simplifies handling of formats other than Ogg Vorbis. - When there is no next track to load, signal the UI that the player has stopped. Before, the player would get stuck in an infinite reloading loop when there was only one track in the queue and that track could not be loaded.
64 lines
2.1 KiB
TOML
64 lines
2.1 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.4"
|
|
futures-executor = "0.3"
|
|
futures-util = { version = "0.3", default_features = false, features = ["alloc"] }
|
|
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 = { version = "0.3" }
|
|
|
|
# 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.7", optional = true }
|
|
sdl2 = { version = "0.34.3", optional = true }
|
|
gstreamer = { version = "0.16", optional = true }
|
|
gstreamer-app = { version = "0.16", optional = true }
|
|
glib = { version = "0.10", optional = true }
|
|
|
|
# Rodio dependencies
|
|
rodio = { version = "0.14", optional = true, default-features = false }
|
|
cpal = { version = "0.13", optional = true }
|
|
|
|
# Container and audio decoder
|
|
symphonia = { version = "0.4", default-features = false, features = ["mp3", "ogg", "vorbis"] }
|
|
|
|
# Legacy Ogg container decoder for the passthrough decoder
|
|
ogg = "0.8"
|
|
|
|
# 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 = ["gstreamer", "gstreamer-app", "glib"]
|