Commit graph

304 commits

Author SHA1 Message Date
Roderick van Domburg
bb3dd64c87
Implement dithering (#694)
Dithering lowers digital-to-analog conversion ("requantization") error, linearizing output, lowering distortion and replacing it with a constant, fixed noise level, which is more pleasant to the ear than the distortion.

Guidance:

- On S24, S24_3 and S24, the default is to use triangular dithering. Depending on personal preference you may use Gaussian dithering instead; it's not as good objectively, but it may be preferred subjectively if you are looking for a more "analog" sound akin to tape hiss.

- Advanced users who know that they have a DAC without noise shaping have a third option: high-passed dithering, which is like triangular dithering except that it moves dithering noise up in frequency where it is less audible. Note: 99% of DACs are of delta-sigma design with noise shaping, so unless you have a multibit / R2R DAC, or otherwise know what you are doing, this is not for you.

- Don't dither or shape noise on S32 or F32. On F32 it's not supported anyway (there are no integer conversions and so no rounding errors) and on S32 the noise level is so far down that it is simply inaudible even after volume normalisation and control.

New command line option:

--dither DITHER Specify the dither algorithm to use - [none, gpdf,
                tpdf, tpdf_hp]. Defaults to 'tpdf' for formats S16
                S24, S24_3 and 'none' for other formats.

Notes:

This PR also features some opportunistic improvements. Worthy of mention are:
- matching reference Vorbis sample conversion techniques for lower noise
- a cleanup of the convert API
2021-05-26 21:19:17 +02:00
Roderick van Domburg
d8ec98015c
Merge pull request #673 from Johannesd3/discovery-crate
Create separate discovery crate
2021-05-26 20:21:43 +02:00
johannesd3
1ade02b7ad
Add basic websocket support 2021-05-26 16:51:13 +02:00
Roderick van Domburg
a590b778de
Bump jack and Rodio crates 2021-05-25 22:35:35 +02:00
johannesd3
9b6ba49026
Add "discovery" compat layer to "connect" 2021-05-19 21:09:38 +02:00
johannesd3
a7f9e0a20b
Add an error type to librespot_discovery 2021-05-19 21:05:20 +02:00
johannesd3
1ec5dd21fa
Add discovery example 2021-05-19 21:05:20 +02:00
Johannesd3
ebea5397b9
Add librespot-discovery crate 2021-05-19 21:05:19 +02:00
dependabot[bot]
3134e1a0c5 Bump sha-1 from 0.9.5 to 0.9.6
Bumps [sha-1](https://github.com/RustCrypto/hashes) from 0.9.5 to 0.9.6.
- [Release notes](https://github.com/RustCrypto/hashes/releases)
- [Commits](https://github.com/RustCrypto/hashes/compare/sha-1-v0.9.5...sha-1-v0.9.6)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-12 17:12:11 +02:00
dependabot[bot]
48c5a82071 Bump futures-executor from 0.3.14 to 0.3.15
Bumps [futures-executor](https://github.com/rust-lang/futures-rs) from 0.3.14 to 0.3.15.
- [Release notes](https://github.com/rust-lang/futures-rs/releases)
- [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.14...0.3.15)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-12 17:11:36 +02:00
johannesd3
555274b5af
Move decoder to playback crate 2021-05-11 20:36:53 +02:00
dependabot[bot]
255f0c6ccf Bump js-sys from 0.3.50 to 0.3.51
Bumps [js-sys](https://github.com/rustwasm/wasm-bindgen) from 0.3.50 to 0.3.51.
- [Release notes](https://github.com/rustwasm/wasm-bindgen/releases)
- [Changelog](https://github.com/rustwasm/wasm-bindgen/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rustwasm/wasm-bindgen/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-11 13:43:09 +02:00
dependabot[bot]
b7d1199068 Bump wasm-bindgen from 0.2.73 to 0.2.74
Bumps [wasm-bindgen](https://github.com/rustwasm/wasm-bindgen) from 0.2.73 to 0.2.74.
- [Release notes](https://github.com/rustwasm/wasm-bindgen/releases)
- [Changelog](https://github.com/rustwasm/wasm-bindgen/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rustwasm/wasm-bindgen/compare/0.2.73...0.2.74)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-11 13:42:36 +02:00
dependabot[bot]
fce91f4e61
Bump jack from 0.6.6 to 0.7.0 (#720) 2021-05-09 21:03:25 +00:00
dependabot[bot]
539e9669a4
Merge pull request #717 from librespot-org/dependabot/cargo/url-2.2.2 2021-05-09 08:11:10 +00:00
johannesd3
85aa4eed89
Bump url and update Cargo.lock 2021-05-09 09:53:20 +02:00
dependabot[bot]
91a60ccac7
Bump sha-1 from 0.9.4 to 0.9.5 (#725) 2021-05-08 22:46:35 +00:00
johannesd3
1c62af9160
Unpin protobuf version 2021-05-08 22:09:37 +02:00
Sasha Hilton
59683d7965 Update Cargo.lock 2021-05-04 13:27:57 +01:00
johannesd3
17b04c4b6e
Remove libc dep 2021-05-01 13:00:30 +02:00
johannesd3
9d55f9aa5f
Update Cargo.lock 2021-05-01 12:59:28 +02:00
johannesd3
1681574846
Bump hmac and pbkdf2 2021-05-01 10:53:14 +02:00
johannesd3
6077a1ef4e
Remove unused block-modes dep 2021-05-01 10:41:39 +02:00
johannesd3
e355d4a4f1
Add cache-size-limit command line argument 2021-04-21 11:29:32 +02:00
johannesd3
e9dc9cd839
Add size limit to cache 2021-04-21 11:29:08 +02:00
johannesd3
26c127c2ec Merge branch 'dev' into tokio_migration 2021-04-10 12:59:47 +02:00
johannesd3
e688e7e886 Almost eliminate util module 2021-04-10 12:50:30 +02:00
johannesd3
9378ae5b6f Bump num-bigint dependency 2021-04-09 22:39:51 +02:00
johannesd3
7ddb1a20bb Reuse librespot-core's Diffie Hellman in discovery 2021-04-09 22:39:47 +02:00
Roderick van Domburg
222f9bbd01 Bump playback crates to the latest supporting Rust 1.41.1
For Rodio, this fixes garbled sound on some but not all Alsa hosts.
2021-04-09 20:01:21 +02:00
johannesd3
f5274f5ada Merge branch 'dev' into tokio_migration 2021-04-09 10:39:06 +02:00
Ash
d4dfd4890f
Merge pull request #674 from Johannesd3/proxy-support
[Tokio migration] Add back hyper-proxy
2021-03-29 21:00:18 +02:00
Roderick van Domburg
bfca1ec15e Minor code improvements and crates bump 2021-03-27 21:13:14 +01:00
johannesd3
95fedf5357 Add back hyper-proxy 2021-03-27 15:36:33 +01:00
ThouCheese
ec1ec59b8a update examples
Re-add default impl to SessionConfig and make Credentials::with_password generic over Into<String>

add docs for Credential

reintroduce old Default impl for SessionConfig

use the third argument for the track-to-play rather than a testing id
2021-03-24 01:14:44 +01:00
Roderick van Domburg
001d3ca1cf Bump Alsa, cpal and GStreamer crates 2021-03-19 22:28:55 +01:00
Roderick van Domburg
770ea15498 Add support for S24 and S24_3 output formats 2021-03-17 00:00:27 +01:00
johannesd3
f22b41956f Update url crate to 2.1 2021-02-23 22:22:53 +01:00
johannesd3
18179e73ec Remove unused dependencies and fix feature flags 2021-02-23 22:22:53 +01:00
johannesd3
59c556635e Clean up librespot-connect dependencies 2021-02-23 22:22:53 +01:00
johannesd3
d064ffc670 Use tokio channels and fix compilation errors 2021-02-23 22:22:53 +01:00
johannesd3
27f308b82f Replace error_chain by thiserror 2021-02-23 22:22:52 +01:00
johannesd3
5aeb733ad9 Clean up dependencies in librespot-playback
* Use futures-util instead of futures
* Use tokio channels instead of futures channels
* Removed "extern crate"s
2021-02-23 22:22:52 +01:00
johannesd3
5c42d2e879 Clean up dependencies in librespot-audio
* Remove unused deps
* Use futures-util instead of futures
* Replace futures channels by tokio channels
* Remove unnecessary pin_project
* Reordered "use" statements
2021-02-23 22:22:52 +01:00
johannesd3
746e6c863e Put lewton behind feature flag 2021-02-23 22:22:52 +01:00
johannesd3
a6ed6857d2 Clean up dependencies in librespot-metadata
* Replaced LinearMap by HashMap
* Removed unnecessary dependencies
* Removed "extern crate"s
2021-02-23 22:22:52 +01:00
johannesd3
10827bd6a8 Clean up dependencies of librespot-core
* Use sub-crates of future
* Remove unnecessary pin-project
* Removed unused crates and features
* Replace futures channels by tokio channels
* Use serde's "derive" feature flag instead of serde_derive
2021-02-23 22:22:51 +01:00
johannesd3
8cff10e983 Put apresolve behind feature flag 2021-02-23 22:22:51 +01:00
johannesd3
9253be7bc9 Small refactor of librespot-core
* Remove default impl for `SessionConfig`
* Move util mod to single file
* Restore privacy of mods
* Move `fn get_credentials` to application
* Remove `extern crate` statements
2021-02-23 22:22:51 +01:00
johannesd3
c0942f14e8 Restore rodiojack support
Probably more simple than the previous approach which
doubles the code: Instead of implementing the `Open` trait,
we simply use custom SinkBuilder, one for the default host,
and one for the "jack" host.
2021-02-23 22:22:51 +01:00
johannesd3
678d1777fd Merge branch 'dev' into tokio_migration 2021-02-23 22:22:49 +01:00
johannesd3
1fc5267a71 Revert "Merge pull request #548 from Lcchy/rodiojack-backend"
This reverts commit f483075b2c, reversing
changes made to ea8ece36d9.
2021-02-23 22:20:58 +01:00
Johannes Dertmann
58bd339e90 Restore MSRV to 1.41 2021-02-23 09:36:57 +01:00
Sasha Hilton
e8204c970e
Merge pull request #569 from philippe44/passthrough-v3
Allow pipeline writer to spit out Ogg directly, including when seeking
2021-02-23 00:16:01 +00:00
Philippe G
34bc286d9b ogg passthrough
rename
2021-02-22 13:45:53 -08:00
Sasha Hilton
d8c1b491c4 Merge branch 'master' into dev 2021-02-22 00:57:45 +00:00
Sasha Hilton
d4b36b2398 Bump cargo.lock 2021-02-22 00:48:14 +00:00
Sasha Hilton
4e1c24d98d
Merge pull request #602 from Johannesd3/bumb_crypto_crates
Bump crypto crates
2021-02-21 23:29:00 +00:00
Will Stott
89ad7a44a6 Update Cargo.lock 2021-02-21 19:01:31 +00:00
johannesd3
220061e158 Migrate application to tokio 1.0 2021-02-21 17:05:36 +01:00
johannesd3
daf7ecd23a Migrate librespot-connect to tokio 1.0 2021-02-21 14:09:31 +01:00
Sasha Hilton
7f705ed148 Merge branch 'master' into dev 2021-02-20 23:31:04 +00:00
Sasha Hilton
91dc14794c Update Cargo.lock 2021-02-20 23:23:44 +00:00
Sasha Hilton
4e0f5e46a5 Add skip-merge and dry-run options to publish script. Update Cargo.lock. 2021-02-20 22:59:35 +00:00
johannesd3
34733baa75 Bump crypto crates 2021-02-13 19:10:57 +01:00
johannesd3
b2f1be4374 Make RodioSink Send and improve error handling 2021-02-12 19:34:28 +01:00
johannesd3
872fab62d8 Merge branch 'dev' into tokio_migration 2021-02-10 21:51:33 +01:00
Lcchy
52438b1cc2 Use rodio for jackaudio backend 2021-02-09 17:45:21 +01:00
Sasha Hilton
4990351dba
Merge pull request #585 from ericonr/patch-1 2021-02-02 01:10:27 +00:00
Sasha Hilton
5e4e574f78 Bump alsa version in playback crate, remove duplicate dependency 2021-01-31 02:50:20 +00:00
Sasha Hilton
4a97108c8c Update librespot-tremor Cargo.lock dependency 2021-01-31 01:38:56 +00:00
johannesd3
bb44b99c92 Use proxytunnel in apresolve
Implementing the tower_service::Service trait for a newly created
ProxyTunnel struct, so it can be used as connector in hyper.
2021-01-30 14:45:31 +01:00
johannesd3
a45fe85c27 Enable logging in test 2021-01-30 13:53:44 +01:00
johannesd3
78614c9d7a Bump lewton to 0.10 2021-01-29 11:25:09 +01:00
johannesd3
07514c9dcc Add proxy support to apresolve 2021-01-25 20:55:49 +01:00
johannesd3
91d7d0422b Preparing main crate for testing 2021-01-25 09:04:47 +01:00
Lyndon Brown
e114558e28 bump rpassword dependency further (v4 to v5)
not sure from brief look at commit log why they jumped to v5, did not care
to dig into it; compiles fine with v5.
2020-12-14 11:53:54 +00:00
Lyndon Brown
a01e0ddaca bump rpassword (v3 to v4)
they just bumped their `winapi` dependency.
2020-12-14 11:53:54 +00:00
Lyndon Brown
e0b7ce8ecd bump env_logger dependency (v0.6 to v0.8)
seems to compile fine.
2020-12-14 11:53:54 +00:00
Lyndon Brown
bda91339b3 bump hex dependency (v0.3 to v0.4)
very little changed, compile fine after.
2020-12-14 11:53:54 +00:00
Lyndon Brown
4fbbe44ab8 bump base64 dependency (v0.10 to v0.13)
very little changed, compiles fine after.
2020-12-14 11:53:54 +00:00
Lyndon Brown
0460429380 bump num-bigint dependency (v0.2 to v0.3)
compiles fine after version change; version changes seem to be very minimal.
2020-12-14 11:53:54 +00:00
Lyndon Brown
8ea200088c bump sdl2 dependency (v0.32 to v0.34)
doesn't seem to have any compatibility issues - compiled cleanly with sdl2
feature after version bump.
2020-12-14 11:53:54 +00:00
Lyndon Brown
3ba05845d2 upgrade jack dependency from v0.5 to v0.6
A bunch of stuff got moved around; means of constructing audio output port
changed.

I simply used the commits, mostly from [1], to their examples to figure
out how to address the errors that resulted from compiling after the
version bump. It compiles cleanly again now.

[1]: https://github.com/RustAudio/rust-jack/pull/89
2020-12-14 11:53:54 +00:00
Lyndon Brown
594de54bec bump zerocopy dependency
doesn't seem to have any compatibility issues.
2020-12-14 11:53:54 +00:00
Lyndon Brown
21b2110da2 bump glib and gstreamer dependency versions
(needed to be done together)

there was no changelog for gstreamer and far too many commits to check
compatibility, but compiling with the gstreamer backend feature works fine
with these new versions.
2020-12-14 11:53:54 +00:00
Lyndon Brown
bc973d02dc bump uuid dependency from 0.7 to 0.8
seems compatible
2020-12-14 11:53:54 +00:00
Lyndon Brown
2f809ea6e1 bump shell-words dependency to v1.0.0
nothing has changed, as noted here:
ae583f7a19
2020-12-14 11:53:54 +00:00
Lyndon Brown
0411e69548 convert PulseAudio backend to use the available binding crates
rather than the raw 'sys' layer.
2020-12-13 17:51:41 +00:00
Lyndon Brown
28061dffe2 upgrade to newer PulseAudio crate dependency
requires adding dependency on libpulse-simple-sys since the PulseAudio
simple components were moved to their own crate (the original version
did not stick to the one crate per one system library rule).

this fixes the licensing compatibility issue discussed in #539 ([1])
(the original v0.0.0 was LGPL-3.0 licensed, while v1.11 onwards are
'MIT OR Apache-2.0').

[1]: https://github.com/librespot-org/librespot/issues/539
2020-12-13 17:50:23 +00:00
Will Stott
8ff1dc24bd Quick minimal hack to get latest rodio working. 2020-12-02 19:45:46 +00:00
Will Stott
dfef2cb433 Bump libmdns to 0.2.7 hopefully fixes: #520 2020-10-05 18:32:25 +01:00
Sasha Hilton
1cd69ab028 Update Cargo.lock 2020-07-29 16:40:24 +01:00
Sasha Hilton
4886d4eed2
Merge pull request #504 from librespot-org/build-fixes
General fixes to protobuf bindings, depreciation warnings and publish.sh
2020-07-27 00:17:38 +01:00
Sasha Hilton
16462b34e2 Accidentally bumped protobuf version 2020-07-25 04:50:58 +01:00
Sasha Hilton
e97911e3cf Generate proto bindings in OUT_DIR, remove precompiled bindings 2020-07-25 04:43:01 +01:00
Sasha Hilton
a45695c9d3 Merge dev to current branch, fix Cargo.lock error 2020-07-25 02:52:37 +01:00
Sasha Hilton
e1c33422a1 Update Cargo.lock & Add notes on todo in publish.sh 2020-07-22 17:10:30 +01:00
Sasha Hilton
258db6ba42 Downgrade vorbis lib due to upstream issue 2020-07-22 16:23:44 +01:00
Sasha Hilton
4e4557da8d Update Cargo.lock and travis compiler version to 1.40.0 2020-07-22 15:26:08 +01:00