From f0da8453ae94aec630ad5b3395d6bc882ef0ae57 Mon Sep 17 00:00:00 2001 From: Yoni Rabkin Date: Wed, 13 Oct 2021 09:53:48 -0400 Subject: * doc/emms.texinfo: comment on emms-x-url patch by Yuchen Pei --- doc/emms.texinfo | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/doc/emms.texinfo b/doc/emms.texinfo index b018d99..d3e30cf 100644 --- a/doc/emms.texinfo +++ b/doc/emms.texinfo @@ -545,10 +545,14 @@ A source for multiple directory trees - either @var{dir}, or the value of @var{emms-source-file-default-directory}. @end defun @defun emms-play-url url -A source for an @var{url} - for example, for streaming. +A source for an @var{url} - for example, for streaming over http, +playing over sftp, or playing local files (with the ``file://'' +scheme). @end defun @defun emms-add-url url -A source for an @var{url} - for example, for streaming. +A source for an @var{url} - for example, for streaming over http, +playing over sftp, or playing local files (with the ``file://'' +scheme). @end defun @defun emms-play-playlist playlist A source for the M3u or PLS playlist format from the file @var{playlist}. -- cgit v1.2.3 From 12f7d295a3add2362d80132144d9ca8ea026f64c Mon Sep 17 00:00:00 2001 From: Mike Kazantsev Date: Tue, 19 Oct 2021 21:57:37 +0500 Subject: * emms-player-mpv.el: simplify current track duration updates by observing the property --- emms-player-mpv.el | 37 ++++++++++--------------------------- 1 file changed, 10 insertions(+), 27 deletions(-) diff --git a/emms-player-mpv.el b/emms-player-mpv.el index 2659d55..53b25b4 100644 --- a/emms-player-mpv.el +++ b/emms-player-mpv.el @@ -689,7 +689,8 @@ Called before `emms-player-mpv-event-functions' and does same thing as these hoo (defun emms-player-mpv-info-meta-connect-func () "Hook function for `emms-player-mpv-event-connect-hook' to update metadata from mpv." - (emms-player-mpv-observe-property 'metadata)) + (emms-player-mpv-observe-property 'metadata) + (emms-player-mpv-observe-property 'duration)) (defun emms-player-mpv-info-meta-event-func (json-data) "Hook function for `emms-player-mpv-event-functions' to update metadata from mpv." @@ -737,32 +738,14 @@ Called before `emms-player-mpv-event-functions' and does same thing as these hoo (defun emms-player-mpv-info-duration-event-func (json-data) "Hook function for `emms-player-mpv-event-functions' to update track duration from mpv." (when - (string= (alist-get 'event json-data) - "playback-restart") - (emms-player-mpv-info-duration-check))) - -(defun emms-player-mpv-info-duration-check () - "Check whether current mpv track has reliable duration info and request it." - (emms-player-mpv-ipc-req-send '(get_property stream-end) - (lambda (pts-end err) - (if err - (unless (and (stringp err) - (string= err "property unavailable")) - (emms-player-mpv-ipc-req-error-printer pts-end err)) - (when pts-end - (emms-player-mpv-ipc-req-send '(get_property duration) - #'emms-player-mpv-info-duration-handler)))))) - -(defun emms-player-mpv-info-duration-handler (duration err) - "Duration property request handler to update it for current emms track." - (if err - (emms-player-mpv-debug-msg "duration-req-error: %s" err) - ;; Duration can be nil or 0 for network streams, depending on version/stream - (when (and (numberp duration) - (> duration 0)) - (let - ((duration (round duration)) - (track (emms-playlist-current-selected-track))) + (and + (string= (alist-get 'event json-data) "property-change") + (string= (alist-get 'name json-data) "duration")) + (let + ((duration (alist-get 'data json-data)) + (track (emms-playlist-current-selected-track))) + (when (and track (numberp duration) (> duration 0)) + (setq duration (round duration)) (emms-track-set track 'info-playing-time duration) (emms-track-set track 'info-playing-time-min (/ duration 60)) (emms-track-set track 'info-playing-time-sec (% duration 60)))))) -- cgit v1.2.3 From ea6728d31c2dabb5c8c5e2cb6652fd6da2127384 Mon Sep 17 00:00:00 2001 From: Mike Kazantsev Date: Tue, 19 Oct 2021 22:39:57 +0500 Subject: * emms-player-mpv.el: update emms playback position and pause state from mpv pause/restart events --- emms-player-mpv.el | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/emms-player-mpv.el b/emms-player-mpv.el index 53b25b4..7bf8a8c 100644 --- a/emms-player-mpv.el +++ b/emms-player-mpv.el @@ -60,6 +60,7 @@ (require 'emms) (require 'emms-player-simple) +(require 'emms-playing-time) (require 'json) (require 'cl-lib) @@ -655,6 +656,12 @@ potential duplication if used for same properties from different functions." (emms-player-mpv-debug-msg "idle-check (stopped=%s)" emms-player-mpv-stopped) (unless emms-player-mpv-stopped (emms-player-stopped))) +(defun emms-player-mpv-event-playing-time-sync () + "Request and update `emms-playing-time' after playback seek/restart or unpause." + (emms-player-mpv-ipc-req-send '(get_property time-pos) + #'(lambda (pos err) + (unless err (emms-playing-time-set pos))))) + (defun emms-player-mpv-event-handler (json-data) "Handler for supported mpv events, including property changes. Called before `emms-player-mpv-event-functions' and does same thing as these hooks." @@ -665,7 +672,15 @@ Called before `emms-player-mpv-event-functions' and does same thing as these hoo ;; and don't correspond to actual playback state. (unless (emms-player-mpv-proc-playing-p) (emms-player-mpv-proc-playing t) - (emms-player-started emms-player-mpv))) + (emms-player-started emms-player-mpv)) + (emms-player-mpv-event-playing-time-sync)) + ("pause" + (setq emms-player-paused-p t) + (run-hooks 'emms-player-paused-hook)) + ("unpause" + (emms-player-mpv-event-playing-time-sync) + (setq emms-player-paused-p nil) + (run-hooks 'emms-player-paused-hook)) ("end-file" (when (emms-player-mpv-proc-playing-p) (emms-player-mpv-proc-playing nil) -- cgit v1.2.3 From 0657a1facdf39464a0049e2abaec850da5057854 Mon Sep 17 00:00:00 2001 From: Mike Kazantsev Date: Wed, 20 Oct 2021 01:04:11 +0500 Subject: * emms-player-mpv.el: fix calling emms-player-paused-hook twice on pause/unpause from emms --- emms-player-mpv.el | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/emms-player-mpv.el b/emms-player-mpv.el index 7bf8a8c..e4a8ceb 100644 --- a/emms-player-mpv.el +++ b/emms-player-mpv.el @@ -675,12 +675,14 @@ Called before `emms-player-mpv-event-functions' and does same thing as these hoo (emms-player-started emms-player-mpv)) (emms-player-mpv-event-playing-time-sync)) ("pause" - (setq emms-player-paused-p t) - (run-hooks 'emms-player-paused-hook)) + (unless emms-player-paused-p + (setq emms-player-paused-p t) + (run-hooks 'emms-player-paused-hook))) ("unpause" (emms-player-mpv-event-playing-time-sync) - (setq emms-player-paused-p nil) - (run-hooks 'emms-player-paused-hook)) + (when emms-player-paused-p + (setq emms-player-paused-p nil) + (run-hooks 'emms-player-paused-hook))) ("end-file" (when (emms-player-mpv-proc-playing-p) (emms-player-mpv-proc-playing nil) -- cgit v1.2.3