On 10 Dec 2021, at 3:47, zhilizhao(赵志立) wrote:
On Dec 10, 2021, at 3:11 AM, Thilo Borgmann <thilo.borgm...@mail.de>
wrote:
Hi,
add %{localtime_ms}, %{gmtime_ms} functions to the drawtext filter.
Same as %{localtime}/%{gmtime} but with additional millisecond part.
sorry for delay, second version including review remarks:
-get timing once
-also add gmtime_ms instead of just localtime_ms
+ if (tag == 'M' || tag == 'm') {
+ char ms[5] = {0};
+ int64_t dnow = (unow - ((int64_t)now) * 1000000) / 1000;
+ snprintf(ms, 5, ".%03d", (int)dnow);
+ av_bprint_append_data(bp, ms, 4);
+ }
How about
av_bprintf(&bp, ".%03d", (int)(unow % 1000000) / 1000);
Makes way too much sense. I need holidays…
Attached v3.
Thanks!
-Thilo
From fd34d1434e2243a881c24f6db4cc0db92289f4bb Mon Sep 17 00:00:00 2001
From: Thilo Borgmann <thilo.borgm...@mail.de>
Date: Fri, 10 Dec 2021 12:34:23 +0100
Subject: [PATCH v3] lavfi/drawtext: Add localtime_ms for millisecond precision
Suggested-By: ffm...@fb.com
---
doc/filters.texi | 8 ++++++++
libavfilter/vf_drawtext.c | 12 ++++++++++--
2 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/doc/filters.texi b/doc/filters.texi
index 78faf76..db75632 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -10949,10 +10949,18 @@ It can be used to add padding with zeros from the
left.
The time at which the filter is running, expressed in UTC.
It can accept an argument: a strftime() format string.
+@item gmtime_ms
+Same as @code{gmtime} but with millisecond precision.
+It can accept an argument: a strftime() format string.
+
@item localtime
The time at which the filter is running, expressed in the local time zone.
It can accept an argument: a strftime() format string.
+@item localtime_ms
+Same as @code{localtime} but with millisecond precision.
+It can accept an argument: a strftime() format string.
+
@item metadata
Frame metadata. Takes one or two arguments.
diff --git a/libavfilter/vf_drawtext.c b/libavfilter/vf_drawtext.c
index 382d589..36c9103 100644
--- a/libavfilter/vf_drawtext.c
+++ b/libavfilter/vf_drawtext.c
@@ -1045,15 +1045,21 @@ static int func_strftime(AVFilterContext *ctx, AVBPrint
*bp,
char *fct, unsigned argc, char **argv, int tag)
{
const char *fmt = argc ? argv[0] : "%Y-%m-%d %H:%M:%S";
+ int64_t unow;
time_t now;
struct tm tm;
- time(&now);
- if (tag == 'L')
+ unow = av_gettime();
+ now = unow / 1000000;
+ if (tag == 'L' || tag == 'm')
localtime_r(&now, &tm);
else
tm = *gmtime_r(&now, &tm);
av_bprint_strftime(bp, fmt, &tm);
+
+ if (tag == 'M' || tag == 'm') {
+ av_bprintf(&bp, ".%03d", (int)(unow % 1000000) / 1000);
+ }
return 0;
}
@@ -1152,7 +1158,9 @@ static const struct drawtext_function {
{ "pict_type", 0, 0, 0, func_pict_type },
{ "pts", 0, 3, 0, func_pts },
{ "gmtime", 0, 1, 'G', func_strftime },
+ { "gmtime_ms", 0, 1, 'M', func_strftime },
{ "localtime", 0, 1, 'L', func_strftime },
+ { "localtime_ms", 0, 1, 'm', func_strftime },
{ "frame_num", 0, 0, 0, func_frame_num },
{ "n", 0, 0, 0, func_frame_num },
{ "metadata", 1, 2, 0, func_metadata },
--
1.8.3.2
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".