diff options
-rw-r--r-- | DOCS/man/en/options.rst | 2 | ||||
-rwxr-xr-x | TOOLS/mpv_identify.sh | 2 | ||||
-rw-r--r-- | core/mp_core.h | 1 | ||||
-rw-r--r-- | core/mplayer.c | 14 |
4 files changed, 11 insertions, 8 deletions
diff --git a/DOCS/man/en/options.rst b/DOCS/man/en/options.rst index 6651e97a67..91078b2424 100644 --- a/DOCS/man/en/options.rst +++ b/DOCS/man/en/options.rst @@ -1455,7 +1455,7 @@ *WARNING*: works with the deprecated ``mp_http://`` protocol only. --playing-msg=<string> - Print out a string before starting playback. The string is expanded for + Print out a string after starting playback. The string is expanded for properties, e.g. ``--playing-msg=file: ${filename}`` will print the string ``file:`` followed by a space and the currently played filename. diff --git a/TOOLS/mpv_identify.sh b/TOOLS/mpv_identify.sh index cd006c5db5..34c67a18a1 100755 --- a/TOOLS/mpv_identify.sh +++ b/TOOLS/mpv_identify.sh @@ -100,7 +100,7 @@ for __midentify__key in $__midentify__allprops; do eval unset $__midentify__nextprefix$__midentify__key done -__midentify__output=`mpv --playing-msg="$__midentify__propstr" --vo=null --ao=null --frames=0 "$@"` +__midentify__output=`mpv --playing-msg="$__midentify__propstr" --vo=null --ao=null --frames=1 "$@"` __midentify__fileindex=0 __midentify__prefix= while :; do diff --git a/core/mp_core.h b/core/mp_core.h index 8e76160a08..206ad030c9 100644 --- a/core/mp_core.h +++ b/core/mp_core.h @@ -255,6 +255,7 @@ typedef struct MPContext { int step_frames; // Counted down each frame, stop playback if 0 is reached. (-1 = disable) int max_frames; + bool playing_msg_shown; bool paused_for_cache; diff --git a/core/mplayer.c b/core/mplayer.c index ed8505251a..1a79213bdc 100644 --- a/core/mplayer.c +++ b/core/mplayer.c @@ -3397,6 +3397,13 @@ static void run_playloop(struct MPContext *mpctx) update_subtitles(mpctx, a_pos); } + if (opts->playing_msg && !mpctx->playing_msg_shown && new_frame_shown) { + mpctx->playing_msg_shown = true; + char *msg = mp_property_expand_string(mpctx, opts->playing_msg); + mp_msg(MSGT_CPLAYER, MSGL_INFO, "%s\n", msg); + talloc_free(msg); + } + /* It's possible for the user to simultaneously switch both audio * and video streams to "disabled" at runtime. Handle this by waiting * rather than immediately stopping playback due to EOF. @@ -4013,12 +4020,6 @@ goto_enable_cache: ; goto terminate_playback; } - if (opts->playing_msg) { - char *msg = mp_property_expand_string(mpctx, opts->playing_msg); - mp_msg(MSGT_CPLAYER, MSGL_INFO, "%s\n", msg); - talloc_free(msg); - } - // Disable the term OSD in verbose mode if (verbose) opts->term_osd = 0; @@ -4079,6 +4080,7 @@ goto_enable_cache: ; mpctx->step_frames = 0; mpctx->total_avsync_change = 0; mpctx->last_chapter_seek = -2; + mpctx->playing_msg_shown = false; // If there's a timeline force an absolute seek to initialize state double startpos = rel_time_to_abs(mpctx, opts->play_start, -1); |