Commit graph

241 commits

Author SHA1 Message Date
Daniel Romero
10f9da410e Remove code to notify spirc manager from the mixer 2017-02-03 17:11:36 +01:00
Daniel Romero
a7aba5c8e7 SoftVolumeMixer: move factor in again, otherwise i32 division always results in 0 2017-02-03 14:19:30 +01:00
Daniel Romero
44467a44d6 Call start and stop on mixer 2017-02-03 13:30:30 +01:00
Daniel Romero
5ef28bf2a5 SpircManager: Update state from player and mixer before sending info 2017-02-03 13:22:49 +01:00
Daniel Romero
ec0e81f0ae Add documentation for channel macro 2017-02-03 13:22:49 +01:00
Daniel Romero
2c187eb3ae Avoid copying the data array in the player 2017-02-03 13:22:49 +01:00
Daniel Romero
48a43f4948 Move structs which are send across threads to own module 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
2de5d10a2f SoftMixer: Change volume to AtomicUsize and pass AtomicUsize to SoftVolumeApplier 2017-02-03 13:22:49 +01:00
Daniel Romero
134239d298 Send update messages from mixer to SpircManager 2017-02-03 13:22:49 +01:00
Daniel Romero
c8ee08663d Create channel in spirc instead of in mercury and use MercuryResponseSender implemented by macro 2017-02-03 13:22:49 +01:00
Daniel Romero
37916330b4 Add macro to be able to create wrapped senders to send multiple message types to one channel 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
6df2af0ac9 Select mixer dynamically 2017-02-03 13:22:49 +01:00
Daniel Romero
464e85e285 Split mixer into Mixer and StreamEditor 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
7be9626836 spirc: Increase the number of volume steps to 64 2017-01-30 04:13:18 +00:00
Paul Lietar
d2161ff75f Use EasyBuf instead of copying buffers 2017-01-29 17:54:32 +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
f3ba3f4bd4 Update dependencies 2017-01-29 12:50:18 +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
d62a154786 Move session to tokio over fully 2017-01-20 02:40:07 +00:00
Paul Lietar
bf6be73caa Move album cover to tokio 2017-01-20 01:59:47 +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
bcbd7afb1a Change mercury 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
Paul Lietar
d27063d5da Create event loop in main 2017-01-20 01:59:46 +00:00
Paul Lietar
2a0ccc0d1d Move device id into config 2017-01-20 01:59:46 +00:00
Paul Lietar
9de55bb8cd Move ap resolve and discovery to tokio. 2017-01-20 01:59:46 +00:00
Paul Lietar
9d5e2e9fed Rewrite connection layer to use tokio 2017-01-20 01:59:46 +00:00
Mitch Bigelow
4e02ef5a6c Stop pulseaudio sink when not in use 2017-01-14 16:22:33 -05:00
Paul Lietar
aa499e0189 Get rid of main_helper 2017-01-10 16:31:12 +00:00
Paul Lietar
ae7c177823 Merge pull request #143 from SimonPersson/general_main_helper
Improve for library users
2017-01-06 17:32:28 +01:00
Simon Persson
560d4e1c4c Move get_credentials to authentication module. 2017-01-06 17:18:41 +01:00
Simon Persson
f11310581c Add standard traits to Bitrate. 2017-01-06 17:09:57 +01:00
Simon Persson
1f32efce83 Revert "Make main_helper useful with values not from getopts."
This reverts commit b4c7e8e057.
2017-01-06 17:06:14 +01:00
Simon Persson
b828e4d528 Improve log strings and never log to stdout. 2017-01-06 15:21:44 +01:00
Simon Persson
28aed0d18b Give Bitrate copy semantics.
For such a simple type, which will likely never change
to be un-copyable, it's nicer to have copy semantics.
2017-01-06 12:56:34 +01:00
Simon Persson
b4c7e8e057 Make main_helper useful with values not from getopts.
Applications that gets these values from config file
shouldn't have to reinvent the wheel.
2017-01-06 12:50:44 +01:00
Paul Lietar
e254bb7291 Remove support for Facebook authentication. 2017-01-05 14:40:33 +01:00
Paul Lietar
7ba3d766c0 Reduce log verbosity by default.
Fixes #141
2017-01-05 14:25:14 +01:00
Paul Lietar
d0a84d7915 Print password prompt on stderr. 2017-01-05 14:24:22 +01:00
Paul Lietar
baf2b65d7b Use rustls rather than openssl 2016-12-31 14:49:04 +01:00
Paul Lietar
8831dea166 Add missing file :( 2016-12-31 13:24:18 +01:00
Paul Lietar
9c3541c41b Change the stdout backend to work with arbitrary files. 2016-12-31 13:17:06 +01:00
Paul Lietar
512304c6c3 Merge remote-tracking branch 'badaix/master' 2016-12-31 13:04:14 +01:00
Jörg Krause
64b8b5f91a Don't panic on error InitialFileHeadersCorrupt 2016-12-31 12:56:09 +01:00
Paul Lietar
8544faf75d Only use syntex on modules that need it.
Also updated dependencies.

Fixes #133 and #138
2016-12-31 12:51:44 +01:00
Paul Lietar
7fd8503f45 Use the fallback AP when apresolve fails.
This matches the desktop client’s behaviour.

Fixes #136
2016-12-30 12:02:00 +01:00
badaix
383e0e9ae8 added stdout-backend 2016-11-22 15:31:59 +01:00
Paul Lietar
880a266625 Merge pull request #117 from joerg-krause/feature/onstart
Add --on{start,stop} command line option
2016-11-19 22:14:05 +00:00
Jörg Krause
c1e570f48d Say goodbye when terminating
When librespot is terminated while a session is active it will now send
a goodbye message, so that the Spotify client unregisters the device
from its list.

Closes: #114
2016-09-20 21:00:01 +02: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
Paul Lietar
445171a46a Add ALSA backend
Closes: #63
2016-08-27 20:14:11 +02:00
Paul Lietar
253dfb7c88 Merge pull request #107 from joerg-krause/fix/close-stream-on-stop
close stream on stop
2016-08-27 01:25:48 -07:00
Jörg Krause
0716643ae3 Fix out of bounds panic
Selecting a librespot device with the Spotify desktop client causes a
crash if the playlist is empty.

Take into account the case where an empty list of tracks is received. In
this case notify the desktop client, so it will accept the device and
turn the status bar green.

Closes: #71
2016-08-23 23:49:19 +02:00
herrernst
ceb375f37e close stream on stop 2016-08-03 21:48:25 +02:00
Paul Lietar
7632fa4712 Merge pull request #93 from serprex/master
Replace time with std::time
2016-07-31 17:40:37 -07:00
Alain Boyer
82af7a3d71 Specify suggested_latency from device info.
- Update portaudio dependency.
- Pass default_high_output_latency to ensure robust playback.
- This is the same behavior as when previously using Stream::open_default().
2016-07-23 01:39:41 +03:00
Demur Rumed
674146f52a Replace time with std::time 2016-07-17 03:25:29 +00:00
Paul Lietar
1396f9729a Allow specifying an output device. 2016-07-06 10:54:46 +01:00
Paul Lietar
4cca541339 Remove the need for a application key. 2016-07-06 08:37:41 +01:00
Paul Lietar
b25585a41b Use a pure rust mDNS responder instead of relying on Avahi / dns-sd.
Fixes #33, #70
2016-07-06 02:36:01 +01:00
Paul Lietar
decce02373 Be a bit less verbose 2016-07-06 02:29:50 +01:00
Paul Lietar
24471eef9b Use serde for json serialization. 2016-07-06 02:29:38 +01:00
Paul Lietar
e688914082 Fix some unused import warnings. 2016-07-06 01:36:46 +01:00
Paul Lietar
4d277e5b75 stream: refactor into a reactor pattern. 2016-05-09 12:22:51 +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
c76b7b472f Workaround weird parsing bug 2016-05-04 09:56:23 +01:00
Paul Lietar
dde613e0a0 player: skip unavailable tracks rather than crash
Fixes #74
2016-05-04 09:11:27 +01:00
Paul Lietar
a42752af2f Update dependencies. 2016-04-24 15:40:05 +01:00
Paul Lietar
f50fca02ae player: Add seek_at command for precise seeking 2016-04-24 14:48:15 +01:00
Paul Lietar
8c0a37357d Fix static app key with syntex 2016-04-24 14:47:52 +01:00
Paul Lietar
a36325a46a Add a main helper to make it easier to use librespot. 2016-04-24 13:29:26 +01:00
Paul Lietar
edb8a6a766 Cleanup authentication logic 2016-04-24 12:15:53 +01:00
Paul Lietar
c47a1b7ec9 Remove support for password in environment variable.
This is less useful now that saved credentials work.
2016-04-24 09:56:05 +01:00
Paul Lietar
f8cd09e5be Use is_err rather than pattern matching. 2016-04-24 09:54:56 +01:00
Paul Lietar
8bbed4c162 Remove unused eprintln macro and hex dump function. 2016-04-24 09:50:55 +01:00
Marcus Thiesen
b0ea636179 Replace some more println with log 2016-04-23 13:35:00 +02: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
Marcus Thiesen
11e62d56d8 Use usize for pointer size 2016-03-21 10:13:28 +01:00
Marcus Thiesen
5ca2c35dbc Pulseaudio backend 2016-03-21 09:39:58 +01:00
Paul Lietar
968a39a131 Make audio backend configurable at run time. 2016-03-20 16:16:20 +00:00
Paul Lietar
e6dd77fc02 Add missing file from previous commit. 2016-03-20 14:00:59 +00:00
Paul Lietar
01fa099cda Reenable Facebook authentication. 2016-03-20 13:55:20 +00:00
Paul Lietar
b051bfcc5b Disable Facebook authentication for now.
It got broken when moving to the authentication subdirectory.
2016-03-17 03:45:57 +00:00
Paul Lietar
230c891df0 Print librespot version on startup. 2016-03-17 03:31:57 +00:00
Paul Lietar
0770f6ce61 Move authentication to a different directory, and make discover use hyper. 2016-03-17 03:28:28 +00:00
Paul Lietar
85903a0da5 Split cache handling to separate module.
Use it for audio keys and album covers as well.
2016-03-16 04:20:42 +00:00
Paul Lietar
a7559787df facebook: Use a random, OS-assigned port instead of hardcoded 8001. 2016-03-16 00:38:05 +00:00
Paul Lietar
4b4bc2f4e1 Add Facebook based login. 2016-03-16 00:05:05 +00:00
Paul Lietar
4d712efb48 Support downloading Album Covers. 2016-03-15 00:14:30 +00:00