Commit Graph

3032 Commits

Author SHA1 Message Date
ejurgensen
245ce1d4e4 [player] Allow starting playback with no outputs 2017-02-08 22:31:47 +01:00
ejurgensen
1f15fb1993 [pipe] Refactor pipe input, hopefully into a more thread safe version 2017-02-08 22:29:37 +01:00
ejurgensen
e6793b4779 [player] Add player_playback_start_byid() function, will be needed for pipe input 2017-02-08 22:29:37 +01:00
ejurgensen
f27fb53caf [input] Rename player source ->xcode to ->input_ctx, because any input may use it, not just transcode 2017-02-08 22:29:37 +01:00
ejurgensen
a183463bb2 [spotify] Try to avoid image load callbacks from Spotify after timeouts,
since the artwork struct may have become invalid
2017-02-07 23:23:39 +01:00
ejurgensen
3a7ed96895 [misc] Adding missing header for non-Posix timer platforms 2017-02-07 23:22:38 +01:00
chme
1f4e474671 [spotify] Retrieve playlist tracks based on user country (#352)
This avoids adding unplayable items to the library and due to the active
track relinking should make additional tracks playable by linking to a
playable version of the track.
2017-02-05 13:56:12 +01:00
ejurgensen
18fe8fe0ef [pipe] Temporary "fix" for threading issues 2017-02-05 00:11:21 +01:00
chme
9680fa093a [db] Fix mpd command 'delete' removing to many items
Previously db_queue_delete_bypos iterated over the items and called
delete for each item. The delete also adjusted the pos/shuffle_pos
values for the remaining items. 

A delete of pos = 0 resulted therefor in:
- fetch item with pos = 0
- delete item at pos
- update remaining items to pos = pos - 1
- fetch item with pos = 0 (returns the new item at pos 0)
- delete item at pos
- ...
2017-02-04 08:37:58 +01:00
chme
d293356d8b [db] Extract function to fix queue position values 2017-02-04 08:37:58 +01:00
chme
1c8263224e [db] Fix incorrect query for db_queue_delete_bypos 2017-02-04 08:37:58 +01:00
chme
bd4e379f15 [dacp] Fix requests for cue_play with command = "play" 2017-02-04 08:35:02 +01:00
chme
4e4e91d4a2 [player] Add log messages in case playback_start_item returns -1 2017-02-04 08:35:02 +01:00
ejurgensen
9d8dbaffe1 [db] Fix typo (closes #347) 2017-02-01 18:56:34 +01:00
ejurgensen
bbb3322ddc [spotify] Flush audio buffer on playback stop - and since we are
flushing from another thread we use evbuffer_enable_locking() which
in turn adds a requirement for libevent_pthreads to be present
2017-01-30 22:50:02 +01:00
ejurgensen
f7018dc659 [player] Skip/remove unplayable tracks in queue instead of aborting 2017-01-29 22:07:51 +01:00
ejurgensen
b44ae55c1d Some scan-build fixing up 2017-01-28 22:37:56 +01:00
ejurgensen
12567d8e93 [pipe] Make Shairport metadata parser work with incomplete reads from pipe 2017-01-28 22:20:35 +01:00
ejurgensen
41c5ef1474 [compat] Suppress warnings about unused functions 2017-01-28 22:20:35 +01:00
ejurgensen
b6f969d96e [pipe/mxml] Add compability with older versions of mxml 2017-01-28 22:20:35 +01:00
ejurgensen
97aa544945 [library] Move library update trigger to new library module 2017-01-28 22:20:35 +01:00
ejurgensen
dc84294348 [input/pipe] Parse basic Shairport metadata using mxml 2017-01-28 22:19:51 +01:00
ejurgensen
ea874154b2 [input/file_http] Use swap_pointers to transfer ownership of metadata 2017-01-27 22:36:00 +01:00
ejurgensen
67d0504700 [input] Let input_metadata_free zero metadata like the other free functions 2017-01-27 22:36:00 +01:00
ejurgensen
c975cf4474 [misc] Set output of safe_xxx to 0 also in error cases (for safety) 2017-01-27 22:36:00 +01:00
ejurgensen
ab06a9fd7d [player] Update info about player.c 2017-01-27 22:36:00 +01:00
ejurgensen
ae1f2d75d3 [pipe] Prepare reading and parsing Shairport metadata pipes 2017-01-27 22:36:00 +01:00
ejurgensen
8b5cac0538 [file/http/input] Implement metadata handling through input interface 2017-01-27 22:36:00 +01:00
ejurgensen
0b9b008a1a [player] Try to consolidate metadata handling + use input interface 2017-01-27 22:36:00 +01:00
ejurgensen
7b6a7b65b3 [input] Add interface for getting metadata from input modules 2017-01-27 22:36:00 +01:00
ejurgensen
2696b27972 [artwork] Let the artwork handler for streams use queue->artwork_url instead of calling the player, which was messy 2017-01-27 22:36:00 +01:00
ejurgensen
4d4a4ffd70 [db] Remove special icy update function, add db_queue_update_item()
- we will use the latter generalised form from now on, even though it is perhaps a tad slower
2017-01-27 22:36:00 +01:00
ejurgensen
e92152cadb [db] Upgrade db to 19.03: Add artwork_url column to queue table 2017-01-27 22:36:00 +01:00
ejurgensen
40d50d693b [misc] Add small function to swap pointers 2017-01-27 22:36:00 +01:00
ejurgensen
ee32b9cb70 [pipe] Reset pipes when required + prepare for metadata pipes 2017-01-27 22:36:00 +01:00
ejurgensen
90f37b75ce [player] Fix it so source_read() returns silence and not an error until source_check stops playback 2017-01-27 22:36:00 +01:00
ejurgensen
9fb62441d2 [pipe] Use worker thread instead of filescanner for watching pipes 2017-01-27 22:36:00 +01:00
ejurgensen
061beaf272 [worker] Make sure worker accepts NULL-arguments 2017-01-27 22:35:16 +01:00
ejurgensen
7f7207bb87 [pipe] Pipe input interface (wip) 2017-01-27 22:35:15 +01:00
ejurgensen
acc67338a1 [input] Add a buffer full callback for the player 2017-01-27 22:35:15 +01:00
ejurgensen
aa8edeead4 [player] Add suspend/resume on underrun + misc fixing up 2017-01-27 22:35:15 +01:00
ejurgensen
18918ce489 [db] Rename db_file_save_seek -> db_file_seek_update 2017-01-27 22:35:15 +01:00
ejurgensen
6af8fa07b4 [spotify] Use timespec_reltoabs instead of internal mk_reltime 2017-01-27 22:35:15 +01:00
ejurgensen
6db4e40119 [misc] Add function to add a relative time to current clock 2017-01-27 22:34:15 +01:00
ejurgensen
9aede45a12 [pipe] Add a pipe input with autostart capabilities 2017-01-27 22:30:47 +01:00
ejurgensen
938e197fa4 [player] Refactor read/write
- remove read skip which is obsolete when input has own thread and cannot block
- simplify code
- fix while loop that could loop infinitely
2017-01-27 22:29:08 +01:00
ejurgensen
1258481202 [listener] Rename LISTENER_PLAYLIST to LISTENER_QUEUE 2017-01-27 22:25:32 +01:00
ejurgensen
60daf03f66 [cache/scan] Let notifications from db.c about library updates go through
filescanner/listener instead of directly to the cache
2017-01-27 22:25:32 +01:00
ejurgensen
79639c73ed [input] Add Spotify input module 2017-01-27 22:08:56 +01:00
ejurgensen
c92ebf9dfb [player] Fix problem where player_playback_cb triggers after playback stop 2017-01-27 22:01:24 +01:00
ejurgensen
3e24f857fa [input] Add input interface to player - WIP 2017-01-27 22:01:24 +01:00
ejurgensen
c50b038397 [misc] Move STOB and BTOS macros to misc.h 2017-01-27 22:01:24 +01:00
ejurgensen
171a75375b [outputs] Fix for (unlikely) situation where all outputs have no init() 2017-01-27 22:01:24 +01:00
ejurgensen
41aa530fd3 [http] Add support for http post in the libevent client (required for scrobbling) 2017-01-25 22:52:11 +01:00
ejurgensen
db4068f046 [artwork] Hardcode destination pixel format for png rescaling since
avcode_find_best_pix_fmt_of_list() does not live up to its name
(fixes issue #345)
2017-01-25 21:02:41 +01:00
ejurgensen
084de7811e [raop] Fix missing uint64 cast, which since commit fdd85cc was giving too short song lengths 2017-01-23 23:41:10 +01:00
sshambar
bc4b046897 [logger] Add missing include (#342) 2017-01-23 08:41:23 +01:00
ejurgensen
36d9051a91 [misc] Fixup coding style 2017-01-22 23:47:45 +01:00
ejurgensen
5dc8eea4c2 [main] Re-include pthread.h that was removed in pr #334, needs to be
here because it is used by the gcrypt macro
2017-01-22 23:35:38 +01:00
Scott Shambarger
836320518b Merge branch 'master' into fixosx 2017-01-21 13:04:38 -05:00
Scott Shambarger
a837389ac5 Minor change: remove unused include, init variable. 2017-01-21 08:51:51 -08:00
Scott Shambarger
6f7355dfce Merge branch 'fixthreads' into fixosx 2017-01-21 10:38:47 -05:00
sshambar
b128271656 Merge branch 'master' into fixthreads 2017-01-21 10:27:26 -05:00
Scott Shambarger
8e3797ec43 [threads] Update mutex/cond functions to use new CHECK_ERR macros
Added various macros to check return values and log any errors and abort
if the call fails.
Updated logging to handle early errors before logging initialized.
2017-01-21 07:11:20 -08:00
chme
e092a9ff3e [spotify] Respect settings for 'artist_override' and 'album_override' (#340)
when scanning spotify through the web api

The goal is to reduce the artist/album cluttering that happens because
of the users spotify playlists. If 'artist_override' is true, all tracks
not in a saved album are treated as part of a compilation giving them
the configured album-artist (e. g. "Various artists"). I
'album_override' is true, tracks not in a saved album will use the
playlistname as albumname.
2017-01-21 10:17:33 +01:00
chme
6163269832 [dacp/db] Fix issue found with scan-build
- Result of operation is garbage or undefined in dacp_reply_cue_play
- Uninitialized argument value in dacp_reply_playqueuecontents
- Uninitialized argument value in queue_fetch_byposrelativetoitem
2017-01-20 19:00:11 +01:00
chme
4e869f6fda [dacp] Fix indentation 2017-01-20 19:00:11 +01:00
chme
dea5c50b67 [player] Fix memleaks found with scan-build 2017-01-20 19:00:11 +01:00
chme
825236c8bb [spotify_webapi] Fix memory leaks 2017-01-20 19:00:11 +01:00
chme
a4180a5902 [spotify] Increase log level for skipping playlists during scan 2017-01-18 20:32:02 +01:00
chme
e8d6b17784 fix indentation 2017-01-18 20:28:56 +01:00
chme
77086c9b82 [library] Check for init/deinit functions in library source 2017-01-18 20:12:14 +01:00
Scott Shambarger
9c50429abc [dnssd] Reworked resolve to use timeout, fixed network order on port 2017-01-17 01:36:03 -05:00
Scott Shambarger
879d9a80aa [osx] Remove incorrect calculations for timer_getoverrun 2017-01-14 23:29:07 -05:00
chme
00efed7988 [filescanner] Fix scanning of fifos 2017-01-14 13:59:14 +01:00
Scott Shambarger
bb68d59a6e [osx] Added missing timer/clock functions, support Bonjour mDNS on OSX
Added configure checks needed to detect missing functions on OSX
Added compat clock functions using clock_get_time on OSX
Added compat timer functions using clock_gettime and setitimer on OSX
Added byteswap functions on OSX
2017-01-14 00:56:43 -05:00
Scott Shambarger
b54d94fda6 [threads] Added missing initializers, check errors on mutex/cond calls 2017-01-13 17:32:59 -05:00
chme
a15923c377 [spotify] Fix for expired spotify access token and some cleanup 2017-01-13 19:20:24 +01:00
chme
528614909c [filescanner/library] Move filescanner to subfolder 2017-01-13 19:02:47 +01:00
chme
9c9c583b81 [library] move declaration scan_metadata_ffmpeg back to filescanner.h 2017-01-13 18:56:37 +01:00
chme
2cfb4b6a28 [spotify] Simplify parsing of artist/album-artist name
forked-daapd does not support a 1:n relationship between tracks and
artists. Just take the first artist the spotify web api returns
(libspotify does also return only one artist, so this should not
introduce a regression).
2017-01-13 18:56:37 +01:00
chme
03c5ecd690 [spotify] Split into smaller db transactions (do not keep an open
transaction between requests)
2017-01-13 18:56:37 +01:00
chme
f632789f8b [spotify] Set missing values for year, artwork, type, codectype,
description and improve logging
2017-01-13 18:56:37 +01:00
chme
ab3582dd69 [spotify_webapi] Cleanup: remove unused functions 2017-01-13 18:56:37 +01:00
chme
66bbcf0576 [spotify] Ignore playlist updates with missing uri 2017-01-13 18:56:37 +01:00
chme
8ee3ef5b15 [filescanner] Trigger library-scan on .init-rescan / .full-rescan 2017-01-13 18:56:37 +01:00
chme
510d38c059 [library/filescanner/spotify] Rework full-rescan logic 2017-01-13 18:56:37 +01:00
chme
4e60626749 [db] Add missing purge of directories in db_purge_all 2017-01-13 18:56:37 +01:00
chme
65ce902e3c [db_init] Set admint.value to VARCHAR(255)
Only a cosmetic change to avoid future confusion. sqlite3 ignores the
number of chars given to VARCHAR (see https://sqlite.org/faq.html#q9 ),
a db upgrade is therefor not necessary.
2017-01-13 18:56:37 +01:00
chme
99945fa576 [spotify] Rescan of single playlists if update trigger received from
libspotify (Readds "spotify:savedtracks" playlist to avoid deletion of
saved tracks)
2017-01-13 18:56:37 +01:00
chme
adac1d3b5f [spotify] Trigger scan after retrieving a valid access token from the
webinterface

Library now offers the function "library_exec_async". This allows
library sources to offer functions that will be executed in
the library thread. Useful to allow partial scans of only one source.
2017-01-13 18:56:37 +01:00
chme
ae1a45bacc [library/spotify] Implement rescan in spotify.c and purge old files
after rescan
2017-01-13 18:56:37 +01:00
chme
0bea83cafa [spotify] Scan saved albums and playlist using the spotify web api 2017-01-13 18:56:37 +01:00
chme
1672b67040 [library/filescanner] Move purging of old content to library; Remove
ping for spotify files in filescanner (not needed, either they get
updated through the init-scan or purged)
2017-01-13 18:56:37 +01:00
chme
263edaa8b3 [misc] Helper function safe_strdup (NULL safe strdup) 2017-01-13 18:56:37 +01:00
chme
4bd42dda41 [spotify] Remove loading saved tracks from the webapi (will be readded
later)
2017-01-13 18:56:37 +01:00
chme
1a85257fb3 [spotify] Extract function for preparing directories 2017-01-13 18:56:37 +01:00
chme
5efadb6fc2 [spotify_webapi] Add separate file for accessing the web api 2017-01-13 18:56:37 +01:00
chme
56ce3f9cba [library/filescanner/spotify] Add library source abstraction and new
"library" thread

- Implement filescanner as a library_source
- Add library source implementation for spotify
- Move process_media_info to library with small adjustments:
  - Remove dependency to F_SCAN_TYPE defines
  - Pass data_kind as parameter
  - Pass media_kind and compilation as parameter if a source forces a
specific value for these
- Move declaration of scan_ffmpeg to library; add
library_add_playlist_info to library
2017-01-13 18:56:37 +01:00
ejurgensen
785ff21045 Merge pull request #328 from sshambar/fixconfig
Updated configure/makefiles related to Issue #327
2017-01-12 22:41:47 +01:00