Commit graph

390 commits

Author SHA1 Message Date
Roderick van Domburg b94879de62 Fix GStreamer buffer pool size [ref #660 review] 2021-03-18 20:51:53 +01:00
Roderick van Domburg 770ea15498 Add support for S24 and S24_3 output formats 2021-03-17 00:00:27 +01:00
Roderick van Domburg 9dcaeee6d4 Default to S16 output 2021-03-16 20:22:00 +01:00
Roderick van Domburg 309e26456e Rename steepness to knee 2021-03-14 14:28:16 +01:00
Roderick van Domburg 5f26a745d7 Add support for S32 output format
While at it, add a small tweak when converting "silent" samples
from float to integer. This ensures 0.0 converts to 0 and vice
versa.
2021-03-13 23:43:24 +01:00
Roderick van Domburg a4ef174fd0 Fix Alsa backend for 64-bit systems 2021-03-12 23:50:17 +01:00
Roderick van Domburg 5257be7824 Add command-line option to set F32 or S16 bit output
Usage: `--format {F32|S16}`. Default is F32.

 - Implemented for all backends, except for JACK audio which itself
 only supports 32-bit output at this time. Setting JACK audio to S16
 will panic and instruct the user to set output to F32.

 - The F32 default works fine for Rodio on macOS, but not on Raspian 10
 with Alsa as host. Therefore users on Linux systems are warned to set
 output to S16 in case of garbled sound with Rodio. This seems an issue
 with cpal incorrectly detecting the output stream format.

 - While at it, DRY up lots of code in the backends and by that virtue,
 also enable OggData passthrough on the subprocess backend.

 - I tested Rodio, ALSA, pipe and subprocess quite a bit, and call on
 others to join in and test the other backends.
2021-03-12 23:09:15 +01:00
Roderick van Domburg 1672eb87ab Fix build on Rust < 1.50.0 2021-03-12 23:09:15 +01:00
Roderick van Domburg f29e5212c4 High-resolution volume control and normalisation
- Store and output samples as 32-bit floats instead of 16-bit integers.
   This provides 24-25 bits of transparency, allowing for 42-48 dB of
   headroom to do volume control and normalisation without throwing
   away bits or dropping dynamic range below 96 dB CD quality.

 - Perform volume control and normalisation in 64-bit arithmetic.

 - Add a dynamic limiter with configurable threshold, attack time,
   release or decay time, and steepness for the sigmoid transfer
   function. This mimics the native Spotify limiter, offering greater
   dynamic range than the old limiter, that just reduced overall gain
   to prevent clipping.

 - Make the configurable threshold also apply to the old limiter, which
   is still available.

Resolves: librespot-org/librespot#608
2021-03-12 23:09:15 +01:00
johannesd3 059b9029de Remove redundant field names 2021-03-10 22:41:46 +01:00
johannesd3 5616004dbe Fix many clippy lints
...and other small improvements
2021-03-10 22:41:44 +01:00
Evan Cameron 6a33eb4efa
minor cleanup 2021-02-28 21:54:19 -05:00
johannesd3 18179e73ec Remove unused dependencies and fix feature flags 2021-02-23 22:22:53 +01:00
johannesd3 45f42acb82 Refactor 'find_available_alternatives' 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 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
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 b7c3609c7b Update version numbers to 0.1.6 2021-02-22 00:37:28 +00:00
johannesd3 007e653f3d Restore original blocking player behaviour 2021-02-21 17:04:44 +01:00
Sasha Hilton 7f705ed148 Merge branch 'master' into dev 2021-02-20 23:31:04 +00:00
Sasha Hilton 2c110ca256 Update version numbers to 0.1.5 2021-02-20 23:05:56 +00:00
johannesd3 b77f0a18ce Fix formatting 2021-02-13 10:29:00 +01:00
johannesd3 689415a6f1 Improved error handling in rodio backend 2021-02-12 19:34:40 +01:00
johannesd3 b2f1be4374 Make RodioSink Send and improve error handling 2021-02-12 19:34:28 +01:00
johannesd3 2f05ddfbc2 Fix bugs in player 2021-02-12 18:19:04 +01:00
johannesd3 872fab62d8 Merge branch 'dev' into tokio_migration 2021-02-10 21:51:33 +01:00
Sasha Hilton 59f87dcb37 Amend conditional compilation to fail on unsupported systems 2021-02-10 01:44:05 +00:00
Sasha Hilton aad4dba8a8 Merge branch 'dev' into rodiojack-backend 2021-02-10 01:07:02 +00:00
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