[FFmpeg-cvslog] avfilter/drawtext: present 'hms' formatted 'pts' in 24h format
Vishwanath Dixit
git at videolan.org
Mon Jun 4 09:54:16 EEST 2018
ffmpeg | branch: master | Vishwanath Dixit <vdixit at akamai.com> | Mon May 7 19:04:42 2018 +0530| [37abfe8c2dd9d222534d5b6929fb7ffda9fa5b15] | committer: Karthick Jeyapal
avfilter/drawtext: present 'hms' formatted 'pts' in 24h format
HMS is formatted as HH:MM:SS.mmm, but, HH part is not limited to
24 hours. For example, the the drawn text may look like this:
243029:20:30.342. To present the timestamp in more readable and
user friendly format, this patch provides an additional option
to limit the hour part in the range 0-23.
Note: Actually the above required format can be obtained with
format options 'localtime' and 'gmtime', but, milliseconds part
is not supported in those formats.
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=37abfe8c2dd9d222534d5b6929fb7ffda9fa5b15
---
doc/filters.texi | 4 ++++
libavfilter/vf_drawtext.c | 8 ++++++++
2 files changed, 12 insertions(+)
diff --git a/doc/filters.texi b/doc/filters.texi
index cbb06afbfd..9f8fb74090 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -8257,6 +8257,10 @@ local time zone time.
The second argument is an offset added to the timestamp.
+If the format is set to @code{hms}, a third argument @code{24HH} may be
+supplied to present the hour part of the formatted timestamp in 24h format
+(00-23).
+
If the format is set to @code{localtime} or @code{gmtime},
a third argument may be supplied: a strftime() format string.
By default, @var{YYYY-MM-DD HH:MM:SS} format will be used.
diff --git a/libavfilter/vf_drawtext.c b/libavfilter/vf_drawtext.c
index e8905a40d3..3affa736c7 100644
--- a/libavfilter/vf_drawtext.c
+++ b/libavfilter/vf_drawtext.c
@@ -916,6 +916,14 @@ static int func_pts(AVFilterContext *ctx, AVBPrint *bp,
sign = '-';
ms = -ms;
}
+ if (argc >= 3) {
+ if (!strcmp(argv[2], "24HH")) {
+ ms %= 24 * 60 * 60 * 1000;
+ } else {
+ av_log(ctx, AV_LOG_ERROR, "Invalid argument '%s'\n", argv[2]);
+ return AVERROR(EINVAL);
+ }
+ }
av_bprintf(bp, "%c%02d:%02d:%02d.%03d", sign,
(int)(ms / (60 * 60 * 1000)),
(int)(ms / (60 * 1000)) % 60,
More information about the ffmpeg-cvslog
mailing list