mirror of
https://github.com/librespot-org/librespot.git
synced 2024-12-28 17:21:52 +00:00
9ff33980d6
* More meaningful error messages * Use F32 if a user requests F64 (F64 is not supported by PulseAudio) * Move all code that can fail to `start` where errors can be returned to prevent panics * Use drain in `stop`
3.9 KiB
3.9 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning since v0.2.0.
Unreleased
Added
- [discovery] The crate
librespot-discovery
for discovery in LAN was created. Its functionality was previously part oflibrespot-connect
. - [playback] Add support for dithering with
--dither
for lower requantization error (breaking) - [playback] Add
--volume-range
option to set dB range and controllog
andcubic
volume control curves - [playback]
alsamixer
: support for querying dB range from Alsa softvol - [playback] Add
--format F64
(supported by Alsa and GStreamer only)
Changed
- [audio, playback] Moved
VorbisDecoder
,VorbisError
,AudioPacket
,PassthroughDecoder
,PassthroughError
,AudioError
,AudioDecoder
and theconvert
module fromlibrespot-audio
tolibrespot-playback
. The underlying cratesvorbis
,librespot-tremor
,lewton
andogg
should be used directly. (breaking) - [audio, playback] Use
Duration
for time constants and functions (breaking) - [connect, playback] Moved volume controls from
librespot-connect
tolibrespot-playback
crate - [connect] Synchronize player volume with mixer volume on playback
- [playback] Store and pass samples in 64-bit floating point
- [playback] Make cubic volume control available to all mixers with
--volume-ctrl cubic
- [playback] Normalize volumes to
[0.0..1.0]
instead of[0..65535]
for greater precision and performance (breaking) - [playback]
alsamixer
: complete rewrite (breaking) - [playback]
alsamixer
: query card dB range for thelog
volume control unless specified otherwise - [playback]
alsamixer
: use--device
name for--mixer-card
unless specified otherwise - [playback]
player
: consider errors insink.start
,sink.stop
andsink.write
fatal andexit(1)
(breaking) - [playback]
player
: makeconvert
anddecoder
public so you can implement your ownSink
Deprecated
- [connect] The
discovery
module was deprecated in favor of thelibrespot-discovery
crate
Removed
- [connect] Removed no-op mixer started/stopped logic (breaking)
- [playback] Removed
with-vorbis
andwith-tremor
features - [playback]
alsamixer
: removed--mixer-linear-volume
option; use--volume-ctrl linear
instead
Fixed
- [connect] Fix step size on volume up/down events
- [playback] Incorrect
PlayerConfig::default().normalisation_threshold
caused distortion when using dynamic volume normalisation downstream - [playback] Fix
log
andcubic
volume controls to be mute at zero volume - [playback] Fix
S24_3
format on big-endian systems - [playback]
alsamixer
: makecubic
consistent between cards that report minimum volume as mute, and cards that report some dB value - [playback]
alsamixer
: make--volume-ctrl {linear|log}
work as expected - [playback]
alsa
,gstreamer
,pulseaudio
: always output in native endianness - [playback]
alsa
: revert buffer size to ~500 ms - [playback]
alsa
,pipe
,pulseaudio
: better error handling