Commit Graph

113 Commits

Author SHA1 Message Date
ejurgensen 0ca02687bd [spotify] Remove old libspotify integration
No longer works, libspotify has been sunset by Spotify
2022-05-25 22:49:35 +02:00
ejurgensen 92279ef33d [library] Move clear_queue_on_stop_disable cfg option to library section
Resolves #1430
2022-03-17 22:44:06 +01:00
whatdoineed2do/Ray 8f722faaf2 [outputs] new output: RCP/Roku/SoundBridge devices
Roku SoundBridge devices can be treated as dumb speakers; they offer a
texted based protocol, RCP, that allows the server to request the Roku
device to connect to the server's stream.mp3 and provides ability to
control volume

Roku devices appear as speakers automatically via mDNS announcements on
the server _roku-rcp._tcp
2022-02-05 21:59:00 +00:00
whatdoineed2do/Ray 8f9356ff11 [http,conf] allow user to request no ssl peer verification
This solves for the case where hosted RSS podcasts have self signed or
expired certs:  using default (verify peer) in these instances results
in 'SSL peer certificate or SSH remote key was not OK'
2021-12-18 17:00:05 +00:00
ejurgensen 6f0fef6179 [spotify] Reintroduce libspotify support, change spotifyc to librespot-c
Select use of either libspotify or librespot-c as streaming backend via config
option.

librespot-c (renamed/improved spotifyc) impl has the following:
- sync interface
- seek support
- honor bitrate config, set client and thread name
- use web access token with "streaming" scope for login
- fix issue with podcast playback

Also say goodbye to file-based Spotify login.
2021-05-31 23:24:58 +02:00
ejurgensen c423f3af91 [cfg] Add websocket_interface option 2021-03-31 23:55:25 +02:00
ejurgensen 7871d71a9c [misc] Add utility network functions, incl configurable addr binding
Also make misc.c/h a bit less messy.
2021-03-31 23:55:25 +02:00
ejurgensen 4e122303a1 [conf] Add speaker level option to disable AirPlay 1 2021-01-10 16:42:08 +01:00
ejurgensen 14756c0d59 [outputs] Add nickname option for Airplay/Chromecast speakers (issue #1145) 2020-12-15 21:45:58 +01:00
ejurgensen d5f5e312ab [cast] Add config option for max_volume, like for Airplay 2020-11-18 23:13:00 +01:00
ejurgensen 23be5aa749 [config] Name change to avoid overlapping/hiding global variable "cfg"
credit lgtm.com
2020-08-10 22:29:02 +02:00
whatdoineed2do/Ray d567bd004a [db,conf,json] new backup endpoint 2020-07-24 20:07:42 +02:00
ejurgensen a71444d3e1 [player] Limit auto reconnection + add option for user override
With this commit auto reconnection per default will only be done for ATV4s and
HomePods. Reconnection is not always desirable, for instance if the device cuts
the connection because it is busy with something else, ref. issue #934.

The commit also adds an option to override auto reconnection, thus either
enabling it for other devices or disabling it for affected devices.
2020-07-24 00:10:26 +02:00
ejurgensen 360e46683b [input] Add a simple input for testing timing 2020-05-12 22:25:38 +02:00
ejurgensen de1b1c3805 [cfg] Remove hardcoding of strings for unknown album etc
Now configurable, since we don't have real localisation
2020-05-11 17:02:14 +02:00
ejurgensen 778d6f4999 [config] Change speaker_autoselect default to no
The changes in commit 6612899 mean that we now do more to maintain selection of
a user selected speaker, even if it fails or is powered off for a while. Thus
this option is no longer relevant.

The option was also never very good for people with many speakers.
2020-05-04 17:41:57 +02:00
Nigel Hannam 5d6c8d7b5b [raop] Fix spelling mistakes 2020-04-11 22:44:41 +01:00
Nigel Hannam 5f3103fae7 [raop] Move config into new airplay_shared block 2020-04-11 22:30:27 +01:00
Nigel Hannam 19d1d4f67b [raop] Allow configuration of raop control and timing ports 2020-04-08 21:16:00 +01:00
ejurgensen afa1a07a42 [artwork] Fix handling of cache + enable online srcs via config
* Don't save artwork for permanent items (file + Spotify) to the stash. The
  stash is only for short term artwork.
* If a request comes with a different max_w/max then search the online source
  again.
* Make artwork requests thread-safe by mutex protecting the search history.
* Add config option
2020-02-23 20:30:35 +01:00
ejurgensen d94cf3f07f [scan] Add option to let m3u tags override ICY metadata (issue #891) 2020-02-08 10:55:15 +01:00
ejurgensen 4e1e5efedc [alsa] Changes to commit 0cb4e0b: multiple devices 2020-01-03 19:02:39 +01:00
whatdoineed2do/Ray 0cb4e0b862 [outputs/conf] New multiple 'alsa' sections split from 'audio' 2020-01-02 23:51:59 +01:00
whatdoineed2do/Ray c2ba1fdb63 [streaming,conf,xcode] review fixes 2019-09-22 22:58:32 +02:00
whatdoineed2do/Ray 008e11bfb8 [streaming] review: remove bps/channels from cfg, undoc icy_metaint cfg option 2019-09-22 22:58:32 +02:00
whatdoineed2do/Ray 8762891145 [streaming] configurable icy_metaint 2019-09-22 22:58:32 +02:00
whatdoineed2do/Ray f5c3eb0c14 [streaming] refactor for sperate in/out streaming qualities and configurable streaming params 2019-09-22 22:58:32 +02:00
whatdoineed2do/Ray 554799ebc3 [streaming/xcode] configurable MP3 streaming bitrate 2019-09-22 22:58:32 +02:00
ejurgensen 78373af201 [cast] Add a simple delay to stream to a have little bit of sync
Since it is unknown how to do real sync on Chromecast, this commit instead adds
a primitive delay to the stream, so that it is at least somewhat closer to
Airplay/local audio.

Also some cleanup of unused stuff.
2019-08-23 19:45:17 +02:00
chme 94af51f19b [conf/logger] Log error message from libconfuse in forked-daapd log 2019-06-15 12:21:27 +02:00
chme 7853f80269 [conf] Readd old config options in mpd section as deprecated 2019-06-15 12:21:27 +02:00
whatdoineed2do/Ray d28f7f43b7 [jsonapi,mpd,conf] save playlist via JSON api
- new endpoint api/queue/save?name= to .m3u via library_save()
- refact for common cfg for playlist save options
2019-05-30 07:23:04 +02:00
ejurgensen dc65cb5b76 [alsa] Make sync and sync evaluation period configurable 2019-04-09 21:45:16 +02:00
ejurgensen 02cd65a992 [alsa] New resample-based sync correction 2019-04-08 00:50:20 +02:00
ejurgensen 143708368c [alsa] Fix sync check
Sync correction still not implemented
2019-03-18 23:06:08 +01:00
ejurgensen 9182597605 [input/xcode] Write to input buffer with the sources native sample rate/format
Still WIP at this point since the player and output can't use the use improved
quality yet, and because rtptimes etc. are likely incorrect
2019-03-18 23:06:08 +01:00
ejurgensen cb49554608 [raop] Fix forgotten include of conffile.c in commit 18acb73 (fixes #688) 2019-02-07 21:14:13 +01:00
ejurgensen 741825d086 [cast] Add option to exclude speakers (closes #659) 2019-01-09 20:26:31 +01:00
Don Cross 07e46d75c8 [alsa] Made resync period configurable 1..20 seconds, with default=10. (#604)
The unconfigurable resync period of 10 seconds was not frequent
enough to keep my own ALSA device in sync with the AirPlay stream.
Now the period is configurable.  The default is still at 10
seconds, to prevent any change in behavior unless opted in by
the user.

Currently the adjustment causes a tiny "click" distortion in the
ALSA output, so it is better to make the check as infrequent as
possible, while still being frequent enough to stay in sync
over lengthy sessions of playback.

Added source_sample_rate, target_sample_rate to alsa_session.
This is a first step toward rendering ALSA at a different
sampling rate than the AirPlay stream, so that (a) we will
be able to dynamically adjust the ALSA sampling rate for an
improved sync algorithm, and (b) later, a more generalized
resampling algorithm can accommodate very different hardware
sampling rates like 22050 Hz or 48000 Hz.

Reworked alsa_session_free() so that it can be used to
tear down a partially initialized alsa_session if an
error occurs in the middle of alsa_session_make().
This simplifies the error handling logic in alsa_session_make().
This refactoring will be helpful later when resampling is added,
because more data structures will be dynamically allocated
during initialization.

Signed-off-by: Don Cross <cosinekitty@gmail.com>
2018-10-14 20:40:36 +02:00
chme f84e67ed5e [db/conf] Add automatic calculation of ratings based on played/skipped
If activated in the configuration file, rating is updated after playing
or skipping a song. The calculation is based on how it is done in the
mpdstats plugin for beets
(https://beets.readthedocs.io/en/latest/plugins/mpdstats.html).
2018-09-16 08:46:16 +02:00
ejurgensen ab1ded35e4 [config] Make user_agent configurable + don't use ffmpeg default (ref issue #562) 2018-08-12 19:49:23 +02:00
chme 56f4b32ef3 Add option to enable memory-mapped I/O 2017-12-26 08:06:38 +01:00
ejurgensen 3d5aeda7aa [httpd] Implement "trusted_networks" option
Some clients aren't really capable of authenticating + some users probably
don't want to enter a password for the web interface. This option allows
clients on for instance the local network to connect without authentication.
2017-11-12 21:29:57 +01:00
ejurgensen eff9e6ebeb [httpd] Add promiscuous mode option, i.e. no auth requirements
For people who want to avoid the web login, or want to get around pairing
problems. This is also added because commit #e59a1a1 means that all
Remotes are now subject to auth, not just those with a user-agent name that
starts with "Remote".
2017-11-11 22:20:09 +01:00
Wolfgang Scherer 16fa1e77b2 [scan] Configuration option to follow symlinks 2017-11-09 01:16:44 +01:00
Wolfgang Scherer 540d771648 [pulseaudio] allow specification of pulseaudio server 2017-11-05 19:33:14 +01:00
chme 42b644020d [conf] Add "websocket_port" to config file 2017-09-15 07:04:18 +02:00
chme 8f49a6fb45 [mpd/conf] Add config option to enable modifying stored playlists 2017-08-12 10:16:07 +02:00
chme dc3f9443e7 [mpd/conf] Add support for stored playlist commands (add/save/delete)
This also introduces a new config option to define a default playlist
folder. The default playlist folder is used by forked-daapd if the
playlist is not a full virtual path (simpifies creation of playlists
with mpd clients).
2017-08-09 21:41:32 +02:00
ejurgensen 81a93bbec1 [player] Add config option high_resolution_clock 2017-06-26 23:32:24 +02:00