summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-03-25 20:32:29 +0100
committerwm4 <wm4@nowhere>2013-09-15 02:51:19 +0200
commitaa43405020e2e710b8b431633b6750e92897c6b9 (patch)
treee3de3c8dd988e14d8a77fc9adada81821780d417
parent58cff195e7d17b348d9ddf5e472420063a9717cc (diff)
downloadmpv-aa43405020e2e710b8b431633b6750e92897c6b9.tar.bz2
mpv-aa43405020e2e710b8b431633b6750e92897c6b9.tar.xz
screenshot: make it possible to format playback time in various ways
-rw-r--r--DOCS/man/en/options.rst23
-rw-r--r--mpvcore/screenshot.c17
2 files changed, 40 insertions, 0 deletions
diff --git a/DOCS/man/en/options.rst b/DOCS/man/en/options.rst
index e1134ef864..8ed9ba8066 100644
--- a/DOCS/man/en/options.rst
+++ b/DOCS/man/en/options.rst
@@ -1880,6 +1880,29 @@
numbers would be more intuitive, but are not easily implementable
because container formats usually use time stamps for identifying
frames.)
+ ``%w{X}``
+ Specify the current playback time using the format string ``X``. The
+ nested time format string is contained within ``{`` and ``}``.
+ ``%p`` is like ``%w{%H:%M:%S}``, and ``%P`` is like ``%w{%H:%M:%S.%T}``.
+
+ Valid format specifiers:
+ ``%H``
+ hour (padded with 0 to two digits)
+ ``%h``
+ hour (not padded)
+ ``%M``
+ minutes (00-59)
+ ``%m``
+ total minutes (includes hours, unlike ``%M``)
+ ``%S``
+ seconds (00-59)
+ ``%s``
+ total seconds (includes hours and minutes)
+ ``%f``
+ like ``%s``, but as float
+ ``%T``
+ milliseconds (000-999)
+
``%tX``
Specify the current local date/time using the format ``X``. This format
specifier uses the UNIX ``strftime()`` function internally, and inserts
diff --git a/mpvcore/screenshot.c b/mpvcore/screenshot.c
index b7697e913b..0afa88182b 100644
--- a/mpvcore/screenshot.c
+++ b/mpvcore/screenshot.c
@@ -186,6 +186,23 @@ static char *create_fname(struct MPContext *mpctx, char *template,
talloc_free(t);
break;
}
+ case 'w': {
+ if (template[0] != '{')
+ goto error_exit;
+ template++;
+ char *end = strchr(template, '}');
+ if (!end)
+ goto error_exit;
+ char *fmt = talloc_strndup(res, template, end - template);
+ char *s = mp_format_time_fmt(fmt, get_current_time(mpctx));
+ if (!s)
+ goto error_exit;
+ append_filename(&res, s);
+ talloc_free(s);
+ talloc_free(fmt);
+ template = end + 1;
+ break;
+ }
case 't': {
char tfmt = *template;
if (!tfmt)