Commit Graph

246 Commits

Author SHA1 Message Date
ejurgensen 62eb1a067d [player] Rename ticks to overrun and safeguard against decreasing from 0 2016-02-11 20:02:17 +01:00
ejurgensen 5f5a138c77 [player] Fix for player getting ahead of network streams (issue #218)
Issue caused stuttering after a few hours. This fix will check if
the player is getting behind the playback timer. Apparently, we
sometimes get samples at a rate slightly below 44100 from network
streams, and then we end up consuming too quickly. This introduces
a way of reducing consumption if that happens.
2016-02-11 08:29:29 +01:00
chme b2d2e9286f [mpd] implement range support for 'delete' command 2015-11-22 12:06:01 +01:00
chme 8fc8d08b42 [player] Add missing notification of playlist changes after removing an
item from the playlist
2015-11-21 14:23:06 +01:00
ejurgensen 316af87189 Merge pull request #193 from chme/mpd
[mpd] Add support for moveid and close command
2015-10-31 11:31:27 +01:00
chme 1c409846d5 [player/queue] Add player commands to move queue-items by item-id 2015-10-31 07:56:50 +01:00
chme 94895b8eed [player] if source is not pausable (http-streams or pipe) abort playback
on pause command 

This restores the behaviour before the queue/player-refactoring.
2015-10-25 09:00:47 +01:00
ejurgensen 3e80e5c517 [transcode] Don't pass error to player on eof + some comments and cleaning 2015-10-22 22:09:19 +02:00
ejurgensen 9853b8f9bd Merge pull request #188 from chme/playerfixes
Playerfixes
2015-10-19 22:15:43 +02:00
chme 7592462571 [player] Fix segfault if reading from source failed for all queue items 2015-10-19 21:33:43 +02:00
ejurgensen 55104015e0 Full removal of libevent 1 legacy code. Also drop pipe() in FreeBSD, since pipe2 is available now. 2015-10-19 21:15:29 +02:00
ejurgensen 2a610812a5 Refactor transcode.c so it can actually transcode + use new capability to support mp3 streaming.
Also includes the skeleton for perhaps supporting video in the future. Adds more fine-grained
ffmpeg/libav compability checks. Dependency on libavresample/libswresample exchanged with
dependency on libavfilter, which seems more versatile.
2015-10-09 23:58:27 +02:00
chme 199b765a7d [player] Store item-ids in history to allow start of playback from the
previously played items in dacp
2015-10-04 08:05:37 +02:00
chme b19a7280b9 [player] remove unused player_queue struct 2015-10-04 08:05:37 +02:00
chme fbce3a7d57 [player] Confusing naming of ids cleaned up 2015-10-04 08:05:37 +02:00
chme ba3385b0ec [queue] Remove queue_info and queue_item_info structs 2015-10-04 08:05:37 +02:00
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