Commit graph

15 commits

Author SHA1 Message Date
Roderick van Domburg
5257be7824 Add command-line option to set F32 or S16 bit output
Usage: `--format {F32|S16}`. Default is F32.

 - Implemented for all backends, except for JACK audio which itself
 only supports 32-bit output at this time. Setting JACK audio to S16
 will panic and instruct the user to set output to F32.

 - The F32 default works fine for Rodio on macOS, but not on Raspian 10
 with Alsa as host. Therefore users on Linux systems are warned to set
 output to S16 in case of garbled sound with Rodio. This seems an issue
 with cpal incorrectly detecting the output stream format.

 - While at it, DRY up lots of code in the backends and by that virtue,
 also enable OggData passthrough on the subprocess backend.

 - I tested Rodio, ALSA, pipe and subprocess quite a bit, and call on
 others to join in and test the other backends.
2021-03-12 23:09:15 +01:00
Roderick van Domburg
f29e5212c4 High-resolution volume control and normalisation
- Store and output samples as 32-bit floats instead of 16-bit integers.
   This provides 24-25 bits of transparency, allowing for 42-48 dB of
   headroom to do volume control and normalisation without throwing
   away bits or dropping dynamic range below 96 dB CD quality.

 - Perform volume control and normalisation in 64-bit arithmetic.

 - Add a dynamic limiter with configurable threshold, attack time,
   release or decay time, and steepness for the sigmoid transfer
   function. This mimics the native Spotify limiter, offering greater
   dynamic range than the old limiter, that just reduced overall gain
   to prevent clipping.

 - Make the configurable threshold also apply to the old limiter, which
   is still available.

Resolves: librespot-org/librespot#608
2021-03-12 23:09:15 +01:00
Philippe G
34bc286d9b ogg passthrough
rename
2021-02-22 13:45:53 -08:00
ashthespy
d26590afc5
Update to Rust 2018
- Fix deprecated Error::cause warnings and missing dyn
- Reset max_width
- Add rustfmt to Travis
- Run rustfmt on full codebase
 with `cargo fmt --all`
- Add rustfmt to Travis
- Complete migration to edition 2018
- Replace try! shorthand
- Use explicit `dyn Trait`
2020-01-17 18:11:52 +01:00
Konstantin Seiler
d2d6df0e24 Run cargo fmt for my code. 2019-11-11 18:22:41 +11:00
Konstantin Seiler
6422dcef78 Refine file downloading heuristics to use data rates and ping times everywhere. 2019-11-08 00:02:53 +11:00
Konstantin Seiler
6545674a63 Merge remote-tracking branch 'origin/master' into dynamic-blocks 2019-11-02 07:15:23 +11:00
Konstantin Seiler
333fc5010c New file downloading mechanism 2019-11-02 06:46:28 +11:00
Nick Mavis
c19375c5ca Fixed nightly conflict with 2019-09-16 15:00:09 -04:00
newpavlov
1f1cd116e7 aes-ctr 2018-07-30 14:18:43 +03:00
newpavlov
e4677027d2 replace rust-crypto's hashes, HMAC and PBKDF2 2018-07-23 16:41:39 +03:00
Sasha Hilton
237ef1e4f9 Format according to rustfmt 2018-02-26 02:50:41 +01:00
awiouy
f400a894bc lewton_decoder becomes default, libvorbis_decoder optional 2018-02-08 00:24:57 +01:00
Paul Lietar
d1447d2bfb Add support for lewton as an Vorbis decoder. 2017-08-04 05:28:25 +01:00
Paul Lietar
ec8f80df75 Create new librespot-audio crate 2017-08-03 20:37:04 +01:00