Commit graph

299 commits

Author SHA1 Message Date
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