Commit graph

70 commits

Author SHA1 Message Date
Thomas Bächler
4cda8affcd Handle audio sink errors in the player
Failing to open or write to the audio sink is not necessarily a fatal and permanent error.
When the audio sink fails, the player now tries to restart the sink periodically.
2017-12-18 00:56:37 +01:00
Thomas Bächler
f250179fed Join the player thread when the player is dropped 2017-12-17 23:46:52 +01:00
Paul Lietar
d1447d2bfb Add support for lewton as an Vorbis decoder. 2017-08-04 05:28:25 +01:00
Paul Lietar
ec8f80df75 Create new librespot-audio crate 2017-08-03 20:37:04 +01:00
Paul Lietar
bf60f6e7ab Create new librespot-core crate 2017-08-03 19:58:44 +01:00
Paul Lietar
d59f3eff81 Remove AudioFileManager and MetadataManager since they are stateless. 2017-08-03 19:37:21 +01:00
Paul Lietar
72070b6ce0 Allow device type to be chosen.
Fix #187
2017-08-03 19:31:15 +01:00
Paul Lietar
7ae919b1f7 Skip song if it fails to load 2017-04-29 15:18:16 +01:00
Paul Lietar
d940ed161a Allow switching user accounts at runtime
Fixes #130
2017-02-22 04:18:27 +00:00
Paul Lietar
2708aa4fef Merge remote-tracking branch 'origin/master' 2017-02-21 22:46:19 +00:00
Paul Lietar
5974cf7f24 Fixes for PR #148 2017-02-21 21:49:45 +00:00
Paul Lietar
19b06ae5fb Update dependencies.
Rust 1.15 is now required.
2017-02-09 01:27:52 +00:00
Daniel Romero
2c187eb3ae Avoid copying the data array in the player 2017-02-03 13:22:49 +01:00
Daniel Romero
da537b57f4 AudioFilter: Modify fn modify_stream(&self, data: &mut [i16]); 2017-02-03 13:22:49 +01:00
Daniel Romero
e547a0c3da Changes code review 2017-02-03 13:22:49 +01:00
Daniel Romero
636de3fe71 Use stream_editor in player 2017-02-03 13:22:49 +01:00
Daniel Romero
59398b3cee Remove mixer from Player and add it to SpircManager 2017-02-03 13:22:49 +01:00
Daniel Romero
347bf05dbe Refactored to have apply_volume in a specifix mixer 2017-02-03 13:22:49 +01:00
Paul Lietar
9873eaf2a0 Better handling of shutdown 2017-01-31 08:21:30 +00:00
Paul Lietar
bbc438d9b2 Clippy run 2017-01-29 17:20:12 +00:00
Paul Lietar
17482c236a Stop caching audio keys, reenable audio file cache 2017-01-29 15:36:39 +00:00
Paul Lietar
8aeb266a2d Refactor player and spirc 2017-01-29 15:02:12 +00:00
Paul Lietar
0da9020ad3 Store DeviceState directly into SpircTask 2017-01-20 14:44:13 +00:00
Paul Lietar
bcedfefaa9 Move spirc to tokio 2017-01-20 13:28:13 +00:00
Paul Lietar
379c90c0b2 Move audio_file and channels to tokio 2017-01-20 01:59:47 +00:00
Paul Lietar
05118b40f8 Move MetadataManager to use tokio 2017-01-20 01:59:47 +00:00
Paul Lietar
855a7e87a7 Move AudioKeyManager to tokio 2017-01-20 01:59:47 +00:00
Simon Persson
b828e4d528 Improve log strings and never log to stdout. 2017-01-06 15:21:44 +01:00
Paul Lietar
7ba3d766c0 Reduce log verbosity by default.
Fixes #141
2017-01-05 14:25:14 +01:00
Jörg Krause
64b8b5f91a Don't panic on error InitialFileHeadersCorrupt 2016-12-31 12:56:09 +01:00
Jörg Krause
1d3c387fed Add --on{start,stop} command line option
The --onstart and --onstop command line options can be used to run a
program when the audio playback is about to begin or has ended.

Note, that librespot needs executions rights to run the program.
Furthermore, the full path needs to be specified, e.g.
`/usr/bin/logger`. Executable scripts must begin with a shebang, e.g.
`#!/bin/sh`.
2016-09-08 20:52:21 +02:00
herrernst
ceb375f37e close stream on stop 2016-08-03 21:48:25 +02:00
Paul Lietar
decce02373 Be a bit less verbose 2016-07-06 02:29:50 +01:00
Paul Lietar
ed14c3469b track: Use a linear map to store files by format. 2016-05-04 10:03:46 +01:00
Paul Lietar
dde613e0a0 player: skip unavailable tracks rather than crash
Fixes #74
2016-05-04 09:11:27 +01:00
Paul Lietar
f50fca02ae player: Add seek_at command for precise seeking 2016-04-24 14:48:15 +01:00
Tor Arne Vestbø
e08ed545ee Use log crate instead of println
Allows more granular control over what gets logged to the console.
2016-04-23 13:35:00 +02:00
Paul Lietar
b8b0f9c36e Fix seconds to milliseconds conversion in vorbis_time_tell_ms. 2016-04-23 00:09:19 +01:00
Paul Lietar
968a39a131 Make audio backend configurable at run time. 2016-03-20 16:16:20 +00:00
Paul Lietar
9274a6bfb3 Refactor audio output to make it more modular.
This makes the player less hard coded to portaudio, and easier to
experiment with different backends.
2016-03-14 00:49:21 +00:00
Paul Lietar
60db12ee9e Add missing semicolon.
Somehow syntex allows this, so it was missed in the previous commit.
2016-03-13 15:23:56 +00:00
Paul Lietar
ac5b34927f Support using tremor instead of libvorbis for audio decoding.
Tremor is a fixed point / integer only Vorbis decoder.
This should improve playback performances on embedded platforms lacking
hardware floating point support.
2016-03-13 15:15:15 +00:00
Paul Lietar
de357e63c9 player: Update the position on pause/play events. 2016-02-24 00:36:19 +00:00
Paul Lietar
c700315b30 Fix a deadlock between SpircManager and Player.
The player was invoking its observers with the state locked, and the
SpircManager’s registered observer would try to lock it again.

Instead, the observers are invoked with a cloned state, and the SpircManager
avoids locking the state again.
2016-02-22 05:41:37 +00:00
Paul Lietar
526c54702b Set the default volume to 100%, and add a fast path to volume control. 2016-02-05 20:54:47 +00:00
Paul Lietar
7a1db5f5a9 Encapsulate the session data and configuration. 2016-01-26 22:34:57 +00:00
Paul Lietar
8fed885595 Reorganize the spirc/player interaction.
Updates are now sent through a callback mechanism rather than a channel.
2016-01-20 15:52:50 +00:00
Paul Lietar
463ce97661 Remove the SpircDelegate abstraction 2016-01-20 14:11:49 +00:00
Paul Lietar
303121032d Store the volume as a u16 2016-01-20 13:55:36 +00:00
Erik
4310162b88 Fixed the multiple volume vars and the calculation is a bit simplified. 2016-01-15 01:12:08 +01:00