Commit graph

1505 commits

Author SHA1 Message Date
Roderick van Domburg
9385dc840f
Merge pull request #1014 from JasonLG1979/improve-subprocess-backend
Improve the subprocess backend
2022-07-18 22:21:12 +02:00
Roderick van Domburg
80020616fc
Merge pull request #1020 from JasonLG1979/improve-pipe-backend
Improve pipe backend
2022-07-18 22:11:17 +02:00
JasonLG1979
2532687cc6 Improve pipe backend
* Implement stop
* Better error handling
2022-06-30 21:57:23 -05:00
Jason Gray
9b2490e4e1
Merge branch 'librespot-org:dev' into improve-subprocess-backend 2022-06-30 21:33:47 -05:00
Roderick van Domburg
179cedaebe
Merge pull request #1015 from JasonLG1979/fix-v-with-equal
Fix --opt=value line argument logging
2022-06-25 09:29:10 +02:00
JasonLG1979
0db17973a1 Fix --opt=value line argument logging
Fixes https://github.com/librespot-org/librespot/issues/1011
2022-06-25 00:17:36 -05:00
Roderick van Domburg
cbba7abd38
Merge pull request #1013 from JasonLG1979/minor-alsa-tweaks
Minor alsa backend tweaks
2022-06-24 23:17:43 +02:00
JasonLG1979
0d4367fca2 Improve the subprocess backend
Better error handling.

Move the checking of the shell command to start so a proper error can be thrown if it's None.

Use write instead of write_all for finer grained error handling and the ability to attempt a restart on write errors.

Use try_wait to skip flushing and killing the process if it's already dead.

Stop the player on shutdown to *mostly* prevent write errors from spamming the logs during shutdown. Previously Ctrl+c always resulted in a write error.
2022-06-20 17:19:31 -05:00
JasonLG1979
5a10a963ff Minor alsa backend tweaks
Silence a clippy warning and we don't need `std::cmp::min` when `usize` already has `min`.
2022-06-18 09:08:04 -05:00
Roderick van Domburg
95dc9f8411
Merge pull request #1009 from JasonLG1979/fix-fixed
Fix fixed volume with hardware mixer
2022-06-10 23:45:36 +02:00
JasonLG1979
e4deb5ddcd Fix fixed volume with hardware mixer.
fixes https://github.com/librespot-org/librespot/issues/1008
2022-06-09 16:34:42 -05:00
Roderick van Domburg
fc1e74574a
Update changelog 2022-05-23 22:21:56 +02:00
Roderick van Domburg
88e64bd884
Update Cargo.lock 2022-05-23 21:43:16 +02:00
Roderick van Domburg
15aea747fd
Fix updating lockfile 2022-05-23 21:42:13 +02:00
Roderick van Domburg
fb12820f73
Merge pull request #1007 from JasonLG1979/bump2
Bump dependencies
2022-05-23 21:07:14 +02:00
JasonLG1979
79b92bbe7a Update changelog and such 2022-05-23 13:42:38 -05:00
Jason Gray
a433f2b911
update MSRV 2022-05-23 13:40:00 -05:00
JasonLG1979
0b7508a2bf Update deps round 2 2022-05-23 13:17:18 -05:00
Roderick van Domburg
a92cb96f2a
Merge pull request #1006 from JasonLG1979/bump-deps
Bump dependencies
2022-05-23 19:31:45 +02:00
JasonLG1979
c03d3ad102 Bump deps
This bumps deps that don't need major code refactoring or MSRV bumps.
2022-05-23 10:19:54 -05:00
Roderick van Domburg
5568c70cd1
Prepare for new developments 2022-05-21 22:52:39 +02:00
Roderick van Domburg
d596b16e5a
Expand publishing documentation 2022-05-21 22:52:06 +02:00
Roderick van Domburg
8ad5a78bf6
Add repository URL 2022-05-21 22:51:30 +02:00
Roderick van Domburg
dff19377fa
Update version numbers to 0.4.0 2022-05-21 22:31:15 +02:00
Roderick van Domburg
310b3cca81
Prepare for 0.4.0 release 2022-05-21 22:14:18 +02:00
Roderick van Domburg
2e8d145bc9
Merge pull request #1004 from roderickvd/update-crates
Update crates
2022-05-21 22:07:48 +02:00
Roderick van Domburg
b08502c801
Update crates 2022-05-21 21:51:37 +02:00
Roderick van Domburg
3e80eebf7a
Merge pull request #1003 from roderickvd/fix-clippy-lints
Fix clippy lints
2022-05-21 21:48:51 +02:00
Roderick van Domburg
2a3e248bba
Fix clippy lints 2022-05-21 21:36:56 +02:00
Roderick van Domburg
89347cdcef
Merge pull request #1002 from roderickvd/fix-arm-ci
Fix CI on ARM
2022-05-21 21:27:13 +02:00
Roderick van Domburg
cf25c2aa36
Fix CI on ARM 2022-05-21 21:06:29 +02:00
Sean McNamara
3d298768b3
Backport #964 GStreamer backend cleanup (#979) 2022-05-21 20:55:55 +02:00
Louis Seubert
6c2491b9a3
adding callback for reusable credentials (#983)
This allows more control over how the credentials are saved to the cache
2022-05-20 12:53:44 +02:00
Roderick van Domburg
1efda79787
Merge pull request #995 from bmwiedemann/dev
Allow to override build_id with SOURCE_DATE_EPOCH
2022-05-20 11:39:34 +02:00
Roderick van Domburg
be9a393b2a
Merge pull request #997 from WhyNotHugo/avoid-unwrap-disco
Avoid crash when Avahi is not available
2022-05-20 11:19:36 +02:00
Roderick van Domburg
6097d5313e
Merge pull request #998 from WhyNotHugo/bump-msrv
Bump MSRV to 1.53
2022-05-20 11:09:26 +02:00
Bernhard M. Wiedemann
9de1f38e92 Allow to override build_id with SOURCE_DATE_EPOCH
in order to make builds reproducible.
See https://reproducible-builds.org/ for why this is good
and https://reproducible-builds.org/specs/source-date-epoch/
for the definition of this variable.

This PR was done while working on reproducible builds for openSUSE.
2022-05-20 10:29:42 +02:00
Hugo Osvaldo Barrera
4fd7ac24ce Bump MSRV to 1.53
See: https://github.com/librespot-org/librespot/pull/997
2022-05-20 08:57:21 +02:00
Hugo Osvaldo Barrera
c4af90f5fe Avoid crashing when Avahi is not available
When librespot is built with Avahi turned on, it will crash if Avahi is
later not available at runtime.

This change avoids it crashing hard when Avahi is not available;
librespot will merely warn of the issue.

This affects some distribution packages too, where the maintainer might
prefer leaving Avahi support enabled, but many setups don't (or can't)
run Avahi.

Co-authored-by: Nick Steel <nick@nsteel.co.uk>
2022-05-20 08:39:20 +02:00
Jason Gray
7efc62b9ca
Remove the volume sample iteration (#986)
Move volume calculations out of their own separate samples iteration and into the normalisation iteration
2022-05-19 22:23:14 +02:00
Roderick van Domburg
70de5752dc
Merge pull request #1000 from Gnarflord/dev
Bump libmdns to 0.7
2022-05-19 22:03:48 +02:00
Gnarflord
10c9a0f8ea
Use libmdns 0.7 to avoid packet 47 error 2022-05-19 18:37:21 +02:00
Roderick van Domburg
650d41b020
Merge pull request #976 from JasonLG1979/pulseaudio-name
Set the PulseAudio name to match librespot's device name
2022-03-19 22:49:26 +01:00
JasonLG1979
e0e23c9167 Use the librespot name arg for the app name in the PulseAudio backend
This sets the name displayed by PulseAudio to Librespot - Instance Name if a name is given otherwise Librespot (the default name).

This also sets the correct "role" as per the docs:

https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/Developer/Clients/ApplicationProperties/

PA_PROP_MEDIA_ROLE

"This is a property of the actual streamed data, not so much the application"

Roles are used for policies, things like automatically muting a music player when a call comes in and whatnot.

For bonus points this also sets PULSE_PROP_application.icon_name to audio-x-generic so that we get a nice icon in the PulseAudio settings by our name instead of a missing icon placeholder.
2022-03-19 15:09:26 -05:00
Jason Gray
616809b64c
Quantum-realm level normalisation optimization (#965)
This saves up to 1-2% CPU useage on a PI 4 depending on how much normalisation is actually being done.

* We don't need to test against EPSILON. The factor will never be over 1.0 in basic normalisation mode.
* Don't check the normalisation mode EVERY sample.
* Do as little math as possible by simplfiying all equations as much as possible (while still retaining the textbook equations in comments).
* Misc cleanup
2022-02-13 22:50:32 +01:00
Roderick van Domburg
cb194cfd3b
Merge pull request #966 from michaelherger/fix-params-printout
Only log runtime argument if it starts with a dash "-"
2022-02-13 20:48:36 +01:00
Michael Herger
6f6d330bce Only log runtime argument if it starts with a dash "-"
When there's a value that corresponds to an argument name used in the same command line, the logging of the arguments gets confused and logs the matching argument, but without the leading dash:

```
% target/debug/librespot -n c --verbose -c /path/to/my/cache
[2022-02-07T22:32:25Z INFO  librespot] librespot 0.3.1 55ced49 (Built on 2022-02-07, Build ID: qaEB8kEW, Profile: debug)
[2022-02-07T22:32:25Z TRACE librespot] Command line argument(s):
[2022-02-07T22:32:25Z TRACE librespot] 		-n "c"
[2022-02-07T22:32:25Z TRACE librespot] 		c "/path/to/my/cache"
[2022-02-07T22:32:25Z TRACE librespot] 		--verbose
[2022-02-07T22:32:25Z TRACE librespot] 		-c "/path/to/my/cache"
```

Here we're using the literal `c` as the device name, and the `-c` argument. Thus the `c /path/to/my/cache` is logged in addition to `-c /path...`.

After checking whether the key has a leading dash, this issue is gone:

```
% target/debug/librespot -n c --verbose -c /path/to/my/cache
[2022-02-07T22:32:41Z INFO  librespot] librespot 0.3.1 55ced49 (Built on 2022-02-07, Build ID: qaEB8kEW, Profile: debug)
[2022-02-07T22:32:41Z TRACE librespot] Command line argument(s):
[2022-02-07T22:32:41Z TRACE librespot] 		-n "c"
[2022-02-07T22:32:41Z TRACE librespot] 		--verbose
[2022-02-07T22:32:41Z TRACE librespot] 		-c "/path/to/my/cache"
```
2022-02-07 23:37:29 +01:00
Roderick van Domburg
c49415c3fb
Merge pull request #960 from JasonLG1979/fix-shuffle
Prevent shuffle crash
2022-02-03 09:36:09 +01:00
JasonLG1979
d54f3982a0 update changelog 2022-02-01 17:48:13 -06:00
JasonLG1979
edb98d5c1d Prevent shuffle crash
fixes https://github.com/librespot-org/librespot/issues/959
2022-01-31 18:31:09 -06:00