Lcchy
52438b1cc2
Use rodio for jackaudio backend
2021-02-09 17:45:21 +01:00
Sasha Hilton
b72485cf46
Merge pull request #593 from Johannesd3/fix-issue-591
2021-02-09 13:54:47 +00:00
johannesd3
2f660f74ec
Small refactor
2021-02-09 09:15:55 +01:00
Sasha Hilton
24486c8c83
Merge pull request #573 from librespot-org/album-normalisation
...
Add option to choose between track or album normalisation gain
2021-02-05 04:19:09 +00:00
johannesd3
f67ceb5f6d
Small refactoring
2021-02-02 02:19:15 +01:00
johannesd3
3446864838
Handle corrupt cache files ( #591 )
2021-02-02 02:18:58 +01:00
Sasha Hilton
5e4e574f78
Bump alsa version in playback crate, remove duplicate dependency
2021-01-31 02:50:20 +00:00
Johannesd3
ed20f357dc
Fix playback in pulseaudio backend ( #577 )
...
* Fix playback in pulseaudio backend
* Add comment regarding safety
2021-01-29 02:01:38 +00:00
johannesd3
fe37186804
Make librespot_playback work
2021-01-25 09:04:33 +01:00
johannesd3
0895f17f8a
Migrated playback crate to futures 0.3
2021-01-25 09:04:33 +01:00
Sasha Hilton
37a5796a86
Add option to choose between track or album normalisation gain, default album.
2021-01-21 19:16:05 +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
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
120bd88326
fix alignment causing format check failure
2020-12-13 17:51:43 +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
Lyndon Brown
cea63e57a4
use actual feature names rather than crate names for conditional compilation
2020-12-13 17:46:40 +00:00
Sasha Hilton
aba1a6ee59
Merge pull request #546 from maxthiel/send-preload-event
...
Add a preload event to warn about new track coming soon
2020-12-13 17:31:20 +00:00
maxthiel
2f7bf54076
Add a preload event to warn about new track coming soon
2020-12-10 21:17:41 +00:00
Will Stott
8ff1dc24bd
Quick minimal hack to get latest rodio working.
2020-12-02 19:45:46 +00:00
Lyndon Brown
4708e0a2bf
cargo toml formatting fix
...
for consistency
2020-11-26 19:31:51 +00:00
Lyndon Brown
f87cbd6fde
add missing repo links to sub-crate cargo toml files
...
such that links are available from their crates.io pages to the project repo.
2020-11-26 19:30:37 +00:00
Sasha Hilton
45f4276d68
Update version numbers to 0.1.3
2020-07-29 16:23:41 +01:00
ashthespy
9e7180feb4
Use mixer's mute switch if possible
2020-07-29 15:59:45 +01:00
ashthespy
46328810cb
Make alsamixer
less verbose
2020-07-29 15:59:45 +01:00
ashthespy
527a4ccbe2
Better alsamixer
volume mapping for hardware mixers
2020-07-29 15:59:45 +01:00
ashthespy
3dfad7f788
Implement mapped volume for alsa mixer
2020-07-29 15:59:45 +01:00
Sasha Hilton
732bb1ce82
Merge branch 'dev' into gst1.0-2020
2020-07-25 02:52:21 +01:00
Sasha Hilton
6eabf4a75c
Merge pull request #449 from kaymes/blocking_sink_events
...
Add blocking SinkActive|SinkInactive events
2020-07-24 03:07:38 +01:00
Sasha Hilton
43ab7fcedb
Merge pull request #474 from ashthespy/skip_unplayable
...
Skip unplayable tracks instead of stopping
2020-07-24 03:05:57 +01:00
Sasha Hilton
db634cd248
Merge pull request #493 from sniperrifle2004/alsa-backend-better-buffering
...
Alsa backend better buffering
2020-07-24 03:04:54 +01:00
Sasha Hilton
68949da7c2
Update version numbers to 0.1.2
2020-07-22 16:53:52 +01:00
sniperrifle2004
1e5d98b8fd
Actually store the period_size
2020-06-17 03:53:20 +02:00
sniperrifle2004
82e54dfaba
Rewrite buffer around the actual period size
...
This prevents over or underestimating of the period.
While it is unlikely, with comparitively small period
sizes overestimating can cause buffer underruns and
underestimating causes more writes than necessary.
It also properly accounts for the number of channels,
which I had overlooked.
2020-06-17 03:34:46 +02:00
sniperrifle2004
a68dfa0287
On stop write any chunk(s) left in the period buffer
...
That should prevent a possible sudden stop
2020-06-14 07:22:23 +02:00
sniperrifle2004
cbe3c98fa1
Clear buffer when the sink is stopped
2020-06-14 06:15:53 +02:00
sniperrifle2004
64081a12bb
Introduce a buffer for a full period
...
Writing to the pcm more often than necessary is
just a waste of resources and depending
on the pcm it can have quite an impact
on performance. The pcm expects full periods
anyway.
2020-06-14 06:15:45 +02:00
sniperrifle2004
aaef07e819
Introduce an appropriate period for the desired buffer
2020-06-14 06:15:25 +02:00
Sean McNamara
29fd5da971
Merge branch 'dev' of https://github.com/librespot-org/librespot into gst1.0-2020
2020-05-27 21:31:11 -04:00
ashthespy
172cb945c4
Merge branch 'dev' of https://github.com/librespot-org/librespot into skip_unplayable
2020-05-13 12:19:33 +02:00
ashthespy
14709b9f8d
Let spirc handle unavailable tracks
2020-05-13 11:49:26 +02:00
Anton Voyl
0aa9bc60e3
Merge pull request #452 from kaymes/improved_events
...
Add more data to player events and fire more of them
2020-05-11 08:57:18 +02:00
Sean McNamara
5d57ac773b
Fix PR feedback
2020-05-10 16:26:01 -04:00
ashthespy
902440925d
Handle unplayable tracks during prefetch
2020-05-10 14:31:43 +02:00
ashthespy
b63199743a
Skip unplayable tracks instead of stopping
2020-05-09 13:59:28 +02:00
Sean McNamara
0e6beaf8c7
Merge https://github.com/librespot-org/librespot into gst1.0-2020
2020-05-07 13:12:39 -04:00
kaymes
9fe82ef781
Enable pulseaudio device names ( #450 )
...
Fixes #207
2020-04-25 13:27:21 +02:00
Sean McNamara
e7093cb0bc
gstreamer-backend: rustfmt.
2020-04-06 23:54:05 -04:00
Sean McNamara
1e9a52bd6e
Fix auto disposal of pipeline that needs to stay in struct
2020-04-06 23:34:20 -04:00
Sean McNamara
f192bd1079
gstreamer-1.0 backend: Version updates and squelch warnings
2020-04-06 23:29:29 -04:00
Sean McNamara
a55b226716
Merge https://github.com/librespot-org/librespot into gst1.0-2020
2020-04-06 21:06:26 -04:00
Konstantin Seiler
223b8d611e
Roll back the meta data processing.
2020-03-20 17:31:18 +11:00
Konstantin Seiler
c9117542eb
Refactor TrackMetaData in the player and add the metadata to the player events.
...
Fire more events in the --onevent script and set more variables.
2020-03-12 23:01:45 +11:00
Konstantin Seiler
d4d55254b0
address merge conflict
2020-03-10 23:53:58 +11:00
Konstantin Seiler
667e559340
Merge remote-tracking branch 'origin/dev' into blocking_sink_events
2020-03-10 23:52:20 +11:00
Konstantin Seiler
6f28b0486f
Emit blocking sink events
2020-03-10 23:26:01 +11:00
Ash
ef27b4bce3
Disable gapless playback via runtime flag ( #444 )
...
* Enable gapless playback via runtime flag
* Set gapless playback as default, use `--disable-gapless` to turn it off
* Ensure sink restarts b/w tracks when gapless is disabled
2020-03-10 13:00:57 +01:00
Sean McNamara
ac0df7e11f
Merge https://github.com/librespot-org/librespot into gst1.0-2020
2020-02-14 19:01:42 -05:00
Konstantin Seiler
873f86bb96
Cancel preload requests to free bandwidth when repeating the same track.
2020-02-07 23:54:09 +11:00
Konstantin Seiler
18d1181bf5
Clean up some code
...
Ensure the player events are emitted correctly.
Only call the external script on events we want to notify about.
Stop sink when loading to pause.
cargo fmt
2020-02-03 18:58:44 +11:00
Konstantin Seiler
ead794f4fd
Correct notifications when loading the same track again.
2020-02-03 14:31:15 +11:00
Konstantin Seiler
499824a6ba
rust fmt
2020-02-03 11:57:09 +11:00
Konstantin Seiler
981b76bace
Keep the sink open
...
Fix typo
2020-02-03 10:11:27 +11:00
Konstantin Seiler
6fed8d0413
Make preloading work.
2020-02-03 09:15:56 +11:00
Konstantin Seiler
349e182d41
Smarter handling of preloading and loading of tracks that are already loaded.
2020-02-03 09:15:48 +11:00
Konstantin Seiler
8756341201
Remove debug message
2020-02-02 11:12:17 +11:00
Konstantin Seiler
9eef690a22
Some clean up
2020-02-02 11:08:46 +11:00
Konstantin Seiler
5784b4652c
Prepare for gapless play.
...
- change communication between player and spirc to use player events channel.
- enhance player events channel
- have spirc send loading messages to Spotify
- enable preloading of tracks in the player
2020-02-01 08:41:11 +11:00
Sasha Hilton
6daa2acd0a
Update version numbers to 0.1.1
2020-01-30 02:39:41 +01:00
Sasha Hilton
83140bea88
Merge pull request #427 from kaymes/connection-lost-crash
...
Gracefully handle lost network connections
2020-01-30 02:04:37 +01:00
Sasha Hilton
e9c3357e41
Run cargo fmt
2020-01-24 02:26:16 +01:00
misuzu
b8617f54a9
Added subprocess audio backend
2020-01-24 02:35:48 +02:00
Sasha Hilton
cdcb919c08
Merge branch 'dev' into connection-lost-crash
2020-01-24 01:02:40 +01:00
Konstantin Seiler
04b52d7878
Have player handle Mercury errors while loading tracks.
2020-01-23 01:15:30 +11:00
marcelbuesing
c9147d31ab
Turn child crates into rust 2018 edition
2020-01-17 20:54:05 +01:00
marcelbuesing
38d82f2dc2
Rerun rustfmt on full codebase
2020-01-17 18:47:30 +01: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
Sean McNamara
d30ffcd1c0
Mostly fix play/pause/stop behavior. Pause is latent.
2019-12-25 17:51:22 -05:00
Sean McNamara
664c76b201
Fix playback on track change. Pause/resume is still weird.
2019-12-25 16:36:30 -05:00
Sean McNamara
ed04c049cc
Working proof of concept with up to date gstreamer bindings and Rust 2018.
2019-12-25 12:19:48 -05:00
Sean McNamara
6707389732
Forward port plietar's WIP gstreamer backend.
2019-12-25 06:19:12 -05:00
Konstantin Seiler
d2d6df0e24
Run cargo fmt for my code.
2019-11-11 18:22:41 +11:00
Konstantin Seiler
e75021b213
Merge remote-tracking branch 'origin/dev' into dynamic-blocks-kdev
2019-11-08 09:23:30 +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
Sasha Hilton
4e1bf7a0db
Add version numbers for all librespot crates
2019-11-06 16:59:40 +01:00
Sasha Hilton
394320c7b7
Add description and license to Cargo.toml for each crate
2019-11-06 16:50:26 +01:00
Konstantin Seiler
c50fc9885a
Adapt code for the new bitrate selection via alternatives.
2019-11-06 08:16:01 +11:00
Konstantin Seiler
9b069effb2
Merge remote-tracking branch 'origin/dev' into dynamic-blocks
...
Adapt code for the aternative bitrate selection.
2019-11-06 08:10:41 +11:00
Konstantin Seiler
1fcacf78cd
Merge branch 'dynamic-blocks' into comments
2019-11-02 09:22:35 +11:00
Konstantin Seiler
5ad6446616
remove compiler warning
2019-11-02 09:22:07 +11:00
Konstantin Seiler
6545674a63
Merge remote-tracking branch 'origin/master' into dynamic-blocks
2019-11-02 07:15:23 +11:00
Konstantin Seiler
bf47ca7033
some debug messages
2019-11-02 06:48:18 +11:00
Konstantin Seiler
333fc5010c
New file downloading mechanism
2019-11-02 06:46:28 +11:00
ashthespy
8eb51e9b55
Streamline and refactor Podcast support,
...
<Metadata>
Add publisher to `Show`
Add `ALLOWED` to `PassthroughEnum`
2019-10-30 11:33:17 +01:00
ashthespy
0cb7a3f7c8
WIP: Podcast support
2019-10-30 11:33:17 +01:00
Andrew Burgess
5937e4fb6e
📌 fix: lock rodio to v0.9
2019-10-08 22:53:21 -07:00
Nick Mavis
c19375c5ca
Fixed nightly conflict with
2019-09-16 15:00:09 -04:00
George Hahn
6e280b3c88
Upgrade dependencies
2019-07-17 22:08:15 -05:00
Sasha Hilton
6c4311fe72
Merge pull request #283 from matikij/sdl-backend
...
add SDL backend based on sdl2 crate
2019-04-12 05:43:52 +02:00
Mateusz Kijowski
18a6746ac0
Remove unnecessary comments, fix typo
2019-03-22 02:05:30 +01:00
Mateusz Kijowski
52c5b18825
add SDL backend based on sdl2 crate
2019-03-22 02:05:30 +01:00
ashthespy
9cb2f49d52
Switch alsa
to crates.io
2019-03-22 00:01:13 +01:00
ashthespy
8fd0caf583
Explicitly set start_threshold
and pretty print devices
2019-03-22 00:00:58 +01:00
ashthespy
cc6c9b2dc4
More alsa
stragglers
2019-03-22 00:00:58 +01:00
ashthespy
a80bf86a2b
Clean up alsa stragglers and typos
2019-03-22 00:00:58 +01:00
ashthespy
0e1147077c
Add run time option flags for AlsaMixer
...
Add `Cargo.lock` for Travis
2019-03-22 00:00:57 +01:00
ashthespy
99106c5ae3
Rework alsa
hw and mixer parameters
2019-03-22 00:00:14 +01:00
ashthespy
08cfb1516d
Switch to latest alsa-rs
crate
2019-03-22 00:00:14 +01:00
ashthespy
a67048c3d7
Add initial support for alsamixer
2019-03-22 00:00:14 +01:00
Will Stott
99703a268f
Warn when there's a Rodio failure accessing a default device formats.
2019-03-20 13:24:08 +00:00
Will Stott
5ceb4db9b8
Improve formatting and macro usage in devices list.
2019-03-20 13:24:08 +00:00
Will Stott
587aa9c711
Simple block of playback thread based on buffer size.
2019-03-20 13:24:07 +00:00
Will Stott
49fd48b42a
Sink.play is not the opposite of Sink.stop in Rodio
2019-03-20 13:24:07 +00:00
Will Stott
2c2bfc52ac
Cpal -> Rodio
...
Doesn't work that well.
2019-03-20 13:24:03 +00:00
Will Stott
1eb5b7d127
Turns out I don't have an appropriate output device.
2019-03-20 13:16:29 +00:00
Will Stott
ac9423d9d9
cpal backend builds. Panics building output stream on my system.
2019-03-20 13:16:29 +00:00
Will Stott
891298171c
Initial untested VecDeque concept.
2019-03-20 13:16:29 +00:00
Konstantin Seiler
43dcc6b55b
Remove deft over debug message.
2019-03-10 11:46:25 +11:00
Konstantin Seiler
43959ee788
Commit missing ;
2019-03-09 20:07:45 +11:00
Konstantin Seiler
2e492e4d44
Speed up playback by avoiding unnecessary seek when playing from the beginning of a file.
2019-03-09 19:30:27 +11:00
Konstantin Seiler
a3c63b4e05
Speed up loading of files by requesting file and key in parallel.
2019-03-09 19:29:47 +11:00
Harold
00e89343fb
Formatting
2018-07-03 13:08:42 +02:00
Brice
d40c0f50db
Cache volume across restarts ( #220 )
...
* create Volume struct for use with Cache
* add "volume" file to Cache
* load cached volume on start, intial overrides cached overrides default
* amend volume_to_mixer function to cache the volume on every change
* pass cache to Spirc and SpircTask so volume_to_mixer has access
* rustfmt changes
* revert volume_to_mixer function and Spirc/SpircTask cache variable
* Volume implements Copy, pass by value instead of reference
* clamp volume to 100 if cached value exceeds limit
* convert Volume to u16 internally, use float and round to convert hex->dec
* convert initial_volume and ConnectConfig.volume to u16 as well
* add cache_volume function to SpircTask
* remove conversion to/from percentage on cached volume
* consolidate device.set_volume, mixer.set_volume, and caching
* streamline intial volume logic
2018-05-17 03:15:17 +02:00
StopMotionCuber
21f1ccfb5a
Fixed Jackaudio compiling ( #222 )
2018-05-15 20:33:58 +02:00
Reinier Balt
ab70e6ec40
run rustfmt --all
2018-04-25 19:29:50 +02:00
Reinier Balt
2aea0e8fe6
do not panic on connection reset
2018-04-21 17:46:29 +02:00
Johan Anderholm
612978908f
Reformat according to new rustfmt rules
2018-03-24 08:45:43 +00:00
Thomas Bächler
0c18aa51ad
playback: pulseaudio: Panic in write if data is empty
2018-03-20 14:14:44 +01:00
Thomas Bächler
014533a583
playback: Only send a packet to the audio backend if it isn't empty
...
The lewton decoder sometimes delivers empty packets, especially after skipping inside a
track or switching tracks. This caused the pulseaudio backend to fail since it expects
a non-empty packet. There is no need to handle empty packets in the audio backend, so
we can skip them entirely.
2018-03-20 14:14:44 +01:00
Sasha Hilton
f830322e14
Fix spotify URI logging
2018-02-28 13:35:31 +01:00
Sasha Hilton
cbc4ee7554
Add to_base62 method
2018-02-28 13:29:24 +01:00
Sasha Hilton
a7334b6c23
Add to_base62 method
2018-02-28 13:28:57 +01:00
Sasha Hilton
237ef1e4f9
Format according to rustfmt
2018-02-26 02:50:41 +01:00
Sasha Hilton
bde157fad7
Merge branch 'master' into events-on-prev-next
2018-02-24 20:16:28 +01:00
Sasha Hilton
542ec9d3b5
Minor style changes to normalisation code
2018-02-24 16:30:24 +01:00
Simon Persson
8c3f587f30
Assignment instead of mem::repalce()
2018-02-24 10:50:48 +01:00
Sasha Hilton
127f8b7bab
Add constant for readability
2018-02-23 20:52:28 +01:00
Sasha Hilton
fc6c414e71
[ci skip] Correct spelling
2018-02-23 20:33:58 +01:00
Simon Persson
1518459048
Minor fixes after review.
2018-02-23 20:16:03 +01:00
Sasha Hilton
f8db550e5e
Add volume normalisation support
2018-02-23 20:08:20 +01:00
Simon Persson
9ff6fe900c
Don't log messages when sending player events over channel.
2018-02-20 23:31:33 +01:00
Simon Persson
93af49aadf
Send player event messages over futures aware channel.
2018-02-20 23:12:29 +01:00
Simon Persson
081a282e12
Removed unreachable cases.
2018-02-20 22:09:53 +01:00
Simon Persson
ef48afbf41
Simplify match with if let.
2018-02-20 22:05:05 +01:00
Simon Persson
3e2e6d63f7
Send Changed event after song change even if we stop playback.
2018-02-20 22:03:21 +01:00
Simon Persson
0a6825ba61
Add playing_to_end_of_track method to PlayerState.
2018-02-20 21:58:02 +01:00
Simon Persson
1b943d069f
Move PlayerEvent into player.
2018-02-20 21:57:42 +01:00
Simon Persson
b0ee03112f
First attempt at a better playback event system.
2018-02-16 00:16:38 +01:00
Simon Persson
77bea07c4f
Run onstart/onstop when a new song is loaded
2018-02-14 23:39:44 +01:00
awiouy
4c2b641cad
core API: move spotify_id to lib.rs
2018-02-13 07:57:28 +01:00
awiouy
191caca518
core API: move Bitrate and PlayerConfig from core to playback
2018-02-11 23:55:41 +01:00
awiouy
a35edc6af4
core API: move run_program to player.rs
2018-02-10 17:58:15 +01:00
awiouy
496a802248
core API: move subfile.rs to player.rs
2018-02-10 17:58:15 +01:00
Sasha Hilton
930bc3f841
Remove default option iin playback/Cargo.toml
2018-02-10 01:44:26 +01:00
Sasha Hilton
1fb65354b0
Move audio backends into seperate crate
2018-02-09 02:05:50 +01:00