Commit Graph

230 Commits

Author SHA1 Message Date
chme 064dfef2de [player] cleanup metadata_trigger
metadata_trigger is always called for the current streaming item and
source_open makes sure that the stream_start and output_start values are
set correctly
2015-10-04 08:05:36 +02:00
chme 64698eb3a4 [player] Some minor cleanup (error handling, comments) 2015-10-04 08:05:36 +02:00
chme a06424a701 [mpd] Expose queue-item-id instead of dbmfi-id in mpd commands
[player] Reshuffle on end of playlist and repeat mode is "repeat all"
2015-10-04 07:59:58 +02:00
chme cb2805800b [player] Fix segfault if pause requested in the last two seconds of the
last item in the playqueue (cur_streaming is already NULL)
2015-10-04 07:59:58 +02:00
chme 2b037b67d9 [player] Combine stream_stop and stream_cleanup into one function 2015-10-04 07:59:58 +02:00
chme e44a160b9a [player] Improve error handling 2015-10-04 07:59:58 +02:00
chme 4595a2f4a6 [player] Add missing metadata trigger on item change (after eof) 2015-10-04 07:59:58 +02:00
chme c8a61015fc [dacp] Fix playing of radio streams after queue refactoring 2015-10-04 07:59:58 +02:00
chme 58069e67f8 [player/spotify] adjust spotify integration to refactoring of player 2015-10-04 07:59:58 +02:00
chme e1147c00a1 [player] Refactor player to better fit the queue refactor 2015-10-04 07:59:58 +02:00
chme 1f53d7ab1a [queue] Refactor queue handling
Decouple the playing/streaming item from the queue. Move all queue
related functions to seperate file queue.h/c.
Introduce internal item "head" to make iterating over the play-queue and
shuffle-queue easier.
2015-10-04 07:59:57 +02:00
chme 10d7097f98 [player] rename "queue_*"-functions to "playerqueue_*" (avoid naming
conflicts with later introduced separate queue file
2015-10-04 07:57:39 +02:00
chme 1fbedaa54f [player] Refactor queue_get 2015-10-04 07:57:38 +02:00
chme f0a6a48599 [player] Refactor queue_remove functions 2015-10-04 07:57:38 +02:00
chme 1812848ee1 Move client protocol specific make_queue functions out of player.c/h 2015-10-04 07:57:38 +02:00
ejurgensen 4db6318a82 Fix issue where volume gets set to -1 on startup of raop devices 2015-09-27 15:24:04 +02:00
ejurgensen 68912efa1f Enable resuming playback from saved position for certain media kinds (eg audiobooks) 2015-08-04 22:33:32 +02:00
ejurgensen d870b97142 Remove LastFM thread now that it can run from the worker thread 2015-06-27 23:24:07 +02:00
ejurgensen 4fffc057b6 Change queue_remove() to fix segfault because source_head/shuffle_head could become invalid, and to protect against invalid input in general (ref issue #160).
Also try to failsafe source_position() and implement next_ps() all around.
2015-06-08 00:21:49 +02:00
ejurgensen 79cdfebf34 Merge pull request #150 from chme/mpdidle
Add support for mpd idle command
2015-05-21 22:31:03 +02:00
chme 3886ec6638 Add version number for playlist (queue)
This is necessary to return a valid playlist id for mpd status command.
2015-05-09 07:46:33 +02:00
chme aa4a12cabe add events for playlist (queue), volume, speaker, options
(random/shuffle) changes
2015-05-09 07:46:33 +02:00
chme d2c7c87191 use listener logic to send dacp update requests 2015-05-09 07:46:33 +02:00
chme 36499f4997 [player] added some source code comments 2015-05-09 07:46:33 +02:00
chme 600e48842f [mpd] idle command 2015-05-09 07:46:33 +02:00
chme fb92040d4b expose generic player_queue_make function 2015-05-09 07:35:15 +02:00
chme 3832692929 move setting query_params.sort out of generic queue make function 2015-05-09 07:35:14 +02:00
chme 3a495a3d48 move setting query_params.idx_type out of generic queue make function 2015-05-09 07:35:14 +02:00
chme d19fbe5ed7 fix first item is not shuffled 2015-05-05 18:44:02 +02:00
chme 659f9c09bb Use enum values for data_kind and media_kind 2015-04-23 11:34:44 +02:00
ejurgensen 8a0994860f Ignore empty ICY StreamTitles 2015-04-12 18:15:06 +02:00
ejurgensen 99cda05dab Remove player metadata event timer (use the existing instead) 2015-04-11 20:30:31 +02:00
ejurgensen 0397b824a5 Fixup (select between cur_playing and cur_streaming) 2015-04-09 22:33:23 +02:00
ejurgensen e72447954a Some cleaning up of ICY artwork retrieval 2015-04-09 22:22:42 +02:00
ejurgensen f1931bfc1a Abandon raop_metadata_arg, and defer metadata time setting 2015-04-09 21:04:35 +02:00
ejurgensen ad81e05ab4 Better thread safety by making sure that the raop globals are only accessed through the player thread 2015-04-07 23:35:56 +02:00
ejurgensen e49c941a00 Add a worker thread to support async tasks from the player thread
(and maybe others later)
2015-03-31 23:05:24 +02:00
ejurgensen b8d8df132b Support for remote m3u playlists (ref pr #79) 2015-03-20 23:40:42 +01:00
ejurgensen 6221e24f1b Support for live ICY metadata for streams (incl. artwork) 2015-03-14 21:42:53 +01:00
chme 4a1bff500a [mpd] fixes for commands noidle, list (handle special case with second
argument 'album'), addid (sql error if virtual path contains
character ') and fix error messages in various commands
2015-03-10 22:12:33 +01:00
ejurgensen 1a0d2ef59b Reduce log severity 2015-02-28 15:16:19 +01:00
chme 1923e7b67d silence compiler warning in player.c "warning: ignoring return value of
‘read’ ..."
2015-02-28 08:00:10 +01:00
chme 63a480d5fc refactor playback_start, added comments to clarify the use of
item_range, renamed some variables (avoid using "song")
2015-02-14 22:39:51 +01:00
chme 830054bd71 Initial support for mpd protocol 2015-02-14 08:50:18 +01:00
chme 07b4d6b6a9 first song not shuffled 2015-02-01 10:51:43 +01:00
ejurgensen b1903e4551 Always try to start AirPlay when laudio fails (issue #86) 2015-01-16 23:18:21 +01:00
ejurgensen a3a689573f Better define in player.c 2014-09-28 22:14:30 +02:00
ejurgensen 1ffbfd8c45 Proper update to libevent 2 in player.c 2014-09-28 22:09:22 +02:00
ejurgensen 965df4fdfc Delete event after disarming timer (maybe not necessary, but for safety) 2014-09-28 15:30:52 +02:00
ejurgensen cf5b702460 Fix malplaced declaration 2014-09-27 23:12:18 +02:00
ejurgensen 4078542eb4 Forgot an include 2014-09-27 23:08:43 +02:00
ejurgensen 861635eb4d timer_delete() instead of close() for FreeBSD timer 2014-09-27 23:05:22 +02:00
ejurgensen 65110a9f39 Fix FreeBSD sound timing problems 2014-09-27 22:59:19 +02:00
ejurgensen 27e7148405 Use STOB() in player.c since it is defined right in player.h 2014-09-19 22:14:31 +02:00
ejurgensen f543b768ac Merge pull request #41 from chme/skipprev
rfc: Change behavior of skip to previous song
2014-09-12 21:45:15 +02:00
ejurgensen 6d8e4c67aa Support for LastFM scrobbling (issue #19) 2014-08-15 23:36:54 +02:00
chme 05e6402dc6 Fix skip to next song while the last song in Up Next is playing
(introduced in a6c2a25)
2014-08-02 07:25:18 +02:00
chme a6c2a25642 If reshuffling with repeat all songs in queue active, set shuffle-head
to current playing song. Previously the shuffle-head was set to the next
song after the current, therefor the UpNext-queue appeared empty after
adding new songs to the queue.
2014-07-25 18:51:34 +02:00
chme 87b415b0d4 Fix segfault on reshuffling one item 2014-07-25 18:25:20 +02:00
chme 5065c3e4a0 Use query parameter if queuefilter parameter is unkown 2014-07-19 08:45:40 +02:00
chme 4d79a85780 Change behavior of skip to previous song to start the current song from
the beginning, if it is playing for more than 3 seconds
2014-07-17 20:14:21 +02:00
chme fe2abfd123 clear queue on playback abort 2014-07-17 20:12:19 +02:00
chme 9527e06f71 reshuffle only songs in the UpNext queue 2014-07-17 20:12:19 +02:00
chme a4fbeed81e Added comments to queue_clear and queue_empty 2014-05-29 09:45:04 +02:00
chme b7cb0da2c2 Modifications to the playqueue-clear command:
- do not stop playback when clearing the UpNext queue
- clear history, if mode=0x68697374 ("hist")
2014-05-24 07:34:59 +02:00
ejurgensen 8468f55910 Honor the "ek" (encryption) flag for RAOP_DEV_OTHER + slight rewrite of raop_device_cb 2014-05-18 17:19:50 +02:00
chme a1b09903c0 - Fix crash when calling add-next and cur_playing/cur_streaming are NULL
- Append songs after cur_streaming
2014-05-17 14:13:18 +02:00
ejurgensen 44c3dba3d9 queue_remove was removing wrong item 2014-05-06 22:55:59 +02:00
ejurgensen 305c1a141c Indentation 2014-05-04 22:36:37 +02:00
chme 7e43a42c88 Remove dead code: playback_next_bh and playback_prev_bh are only called
during playback_pause. In playback_pause "cur_playing" is always set to
NULL so that in playback_next_bh and playback_prev_bh only the
else-clause can become true.
2014-05-04 05:45:53 +02:00
chme 8036a5a6d3 fixes for playqueue-contents 2014-05-03 20:16:51 +02:00
chme 5f307c7ce1 Added support for playqueue-contents with negativ span value (returns the previously played songs) 2014-05-03 20:16:51 +02:00
ejurgensen 20539c0c08 Remove unused variable in queue_next_add 2014-04-30 23:33:42 +02:00
chme eab4c1c3d2 Fix "play next" command - the queue was not circular anymore due the
missing setting of pl_prev of the next song and start the shuffle-queue
with ps_shuffle
2014-04-23 20:44:40 +02:00
ejurgensen 8eb6b46ed2 Adjustments to queue_move/queue_remove, mostly for consistency 2014-04-21 21:21:40 +02:00
chme 01cc83f819 respect coding convention and changed log level 2014-04-20 06:43:01 +02:00
chme 32c3b57fcd added support for the playqueueedit add next command 2014-04-19 09:12:58 +02:00
chme 475a2f4e8f added support for the playqueueedit remove command 2014-04-19 08:35:07 +02:00
chme c3c2c421d2 added support for the playqueueedit move command 2014-04-19 08:09:32 +02:00
ejurgensen 365c5a3bc9 Only queue the rest of the album on quirky query 2014-04-18 22:39:17 +02:00
ejurgensen 6062ca014b Make the player able to stream from pipes 2014-03-31 13:10:18 +02:00
ejurgensen 9efc97d702 Add support for query-modifier=containers in DACP playqueue-edit 2014-03-31 01:53:46 +02:00
ejurgensen 708b76ce1e Play only a single item when playspec has item-spec (Podcasts/Audiobooks) 2014-03-21 23:38:14 +01:00
ejurgensen 3f1edc0082 Oops 2014-03-18 11:35:47 +01:00
ejurgensen 9484c43601 Prevent notify_main_thread from mucking with SPOTIFY_EVENT before an
event has been processed
2014-03-18 11:31:48 +01:00
ejurgensen 59b6462ba6 Small logging change 2014-03-18 10:01:06 +01:00
ejurgensen 7ed6cc98c3 Add support for Spotify (squashed commit), and:
- Try to not return items which a client can't play
    - Remove inotify subscription to IN_MODIFY and IN_CREATE
    - Fix crash on unknown codec type in transcode.c
    - Probably added some new bugs...
2014-03-11 23:20:29 +01:00
ejurgensen 190f91114e Support songartistid (asri) in group requests and queuefilter=artist
- credit misenhower of wp8remote.com
2014-02-21 20:39:57 +01:00
ejurgensen 23a7e82a1f Add support for max volume for AirPlay devices (raop) 2014-02-09 16:07:00 +01:00
ejurgensen 258163e6ce hi-res timer commit broke FreeBSD. This attempts to go back to the
old code for FreeBSD.
2014-02-08 22:59:07 +01:00
ejurgensen 01f290cc2a Replace AirTunes with AirPlay in doc and log messages 2014-02-07 22:10:40 +01:00
Anthony Doko 949cf3808d Add support for embedded platforms that don't have high-res timers. 2014-02-05 18:11:10 -08:00
ejurgensen 4842751527 Reduce log level verbosity when no real error (eg no md field) 2014-02-03 21:54:46 +01:00
ejurgensen ae51922f57 Try to autoselect a non-selected raop device if no valid output was
selected. This should make life easier for users of Remote on iPhone
where speakers can only be selected after playback has started (I
think...)
2014-01-13 23:24:45 +01:00
ejurgensen 7079e524b6 Fix bug where dbmfi is referenced after being freed 2014-01-05 22:56:44 +01:00
ejurgensen a42377991d Use songartistid instead of album_artist for playlist query 2014-01-05 14:20:42 +01:00
ejurgensen 161338752c Support for genre tag in dacp playqueue-edit queuefilter 2013-12-02 22:19:12 +01:00
ejurgensen c360bdd5bd Also account for playqueue-edit?...queuefilter=album:(null) 2013-11-23 23:05:13 +01:00
ejurgensen 1199a459ac Obey device "md" (metadata) tag - credit @couteau
- original patch https://gist.github.com/couteau/7532531
2013-11-23 11:25:30 +01:00
ejurgensen 9760a43ccf Add support for mode 2 (shuffle) in playqueue-edit and -contents 2013-11-22 22:05:55 +01:00