Commit graph

224 commits

Author SHA1 Message Date
loblik
adeb22b2f3 add support for jack audio connection kit
This is initial support for JACK. It creates ports at startup and
keeps it connected while librespot is running. So when librespot
playback is stoped it writes silence (zeroes).

It uses jack crate (rust-jack) which needs libjack. To compile in
jack support use --features jackaudio-backend. And run librespot
with --backend jackaudio.
2017-10-05 21:06:51 +02: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
a51b562487 Create new librespot-metadata crate 2017-08-03 20:11:17 +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
Fabian Zaremba
910974e5e2 Change system_information_string according to request from Spotify (#218)
Spotify requested us to use a system_information_string that looks like
librespot_[short sha]_[random 8 characters build id]
2017-07-17 14:31:06 +02:00
michaelherger
67deb07250 Add --disable-audio-cache startup parameter (#204)
Disable caching of downloaded audio files at runtime. Comes in handy when running librespot on a small device with SD card or other small storage.
2017-06-30 07:43:11 +01:00
Paul Liétar
d09f469aad Merge pull request #189 from jsopenrb/patch-1
Some tracks might have several `allowed` fields, librespot assumes that all fields must match, otherwise track cannot be played.

This change collects all `allowed` and `forbidden` lists, then does the final check on whole lists at once.
2017-06-10 21:13:07 +01:00
Paul Lietar
29d5f794d6 Make Librespot Connect Again ! 2017-06-04 08:56:31 +01:00
Evgeny S
96c199e95a Update metadata.rs
Turns out unreleased tracks can have no forbidden and allowed lists at all, take care of that.
2017-06-03 22:30:04 +03:00
Evgeny S
8bd9174370 Update metadata.rs
Properly check forbidden and allowed lists, skip tracks where allowed list is set but is empty.
2017-06-03 19:55:30 +03:00
Evgeny S
4a17a15a82 Fix #173 (a track cannot be played with librespot)
Some tracks might have several `allowed` fields, librespot assumes that all fields must match, otherwise track cannot be played.
This change collects all `allowed` and `forbidden` lists, then does the final check on whole lists at once.
2017-06-01 13:04:22 +03:00
Paul Lietar
6f24e3b731 Add support for new mercury subscription protocol.
Fixes #185
2017-05-15 23:47:34 +01:00
Paul Lietar
7c237c77df Change Connect mercury URL 2017-05-15 21:55:49 +01:00
Paul Lietar
ba51b8f236 Add more mercury debug 2017-05-15 21:54:43 +01:00
Paul Lietar
28232b5a52 Add keymaster API 2017-05-10 16:26:48 +01:00
Paul Lietar
7ae919b1f7 Skip song if it fails to load 2017-04-29 15:18:16 +01:00
Paul Lietar
ded43122a2 Allow deprecated items.
Tokio has moved lots of stuff from tokio-core::io to tokio-io.
2017-04-29 12:56:15 +01:00
Johan Anderholm
e60cdeafca hyper::Url -> hyper::Uri, portaudio -> portaudio-rs
hyper::Url is replaced by hyper::Uri in recent hyper versions.

portaudio was renamed to portaudio-rs and added to cargo.io
2017-04-29 13:06:29 +02:00
Paul Lietar
294a7821d6 Add simple playback example. 2017-04-28 23:24:55 +01:00
Jörg Krause
14da5c8f17 spirc: add more commands
Add play, playpause, pause, prev, next, volumeup, and volumedown.

volume up/down is realized in 16 steps.
2017-03-27 08:22:38 +02:00
Paul Lietar
6a0657fec6 Fix compiling error 2017-02-22 15:32:18 +00:00
Paul Lietar
188958710f Download shannon dependency from crates.io 2017-02-22 14:48:41 +00:00
Paul Lietar
b8e4febb8e main: Fix cache setup 2017-02-22 14:28:09 +00:00
Paul Lietar
d940ed161a Allow switching user accounts at runtime
Fixes #130
2017-02-22 04:18:27 +00:00
Paul Lietar
2853e2230b Force shutdown on second ^C 2017-02-21 23:25:04 +00:00
Paul Lietar
2708aa4fef Merge remote-tracking branch 'origin/master' 2017-02-21 22:46:19 +00:00
Paul Lietar
58b1625445 Use function types instead of closures for backend builders. 2017-02-21 22:05:31 +00:00
Paul Lietar
5974cf7f24 Fixes for PR #148 2017-02-21 21:49:45 +00:00
Paul Lietar
6f1871d822 Merge remote-tracking branch 'origin/master' 2017-02-09 01:33:52 +00:00
Paul Lietar
64f9283b67 Fix Clippy warnings 2017-02-09 01:32:18 +00:00
Paul Lietar
19b06ae5fb Update dependencies.
Rust 1.15 is now required.
2017-02-09 01:27:52 +00:00
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