Commit graph

180 commits

Author SHA1 Message Date
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
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
6422dcef78 Refine file downloading heuristics to use data rates and ping times everywhere. 2019-11-08 00:02:53 +11: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
Nick Mavis
c19375c5ca Fixed nightly conflict with 2019-09-16 15:00:09 -04: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
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
1fb65354b0 Move audio backends into seperate crate 2018-02-09 02:05:50 +01:00