[FFmpeg-devel] [PATCH v2] lavfi/drawtext: Add localtime_ms for millisecond precision
Thilo Borgmann
thilo.borgmann at mail.de
Sun Dec 12 17:27:18 EET 2021
On 11 Dec 2021, at 23:17, Andreas Rheinhardt wrote:
> Thilo Borgmann:
>>
>>
>> On 10 Dec 2021, at 17:46, Michael Niedermayer wrote:
>>
>>> On Fri, Dec 10, 2021 at 12:36:21PM +0100, Thilo Borgmann wrote:
>>>>
>>>>
>>>> On 10 Dec 2021, at 3:47, zhilizhao(赵志立) wrote:
>>>>
>>>>>> On Dec 10, 2021, at 3:11 AM, Thilo Borgmann
>>>>>> <thilo.borgmann at 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
>>>
>>>> doc/filters.texi | 8 ++++++++
>>>> libavfilter/vf_drawtext.c | 12 ++++++++++--
>>>> 2 files changed, 18 insertions(+), 2 deletions(-)
>>>> 87d34e4106b829d42c5e57c847c28bed08bf3a81
>>>> v3-0001-lavfi-drawtext-Add-localtime_ms-for-millisecond-p.patch
>>>> From fd34d1434e2243a881c24f6db4cc0db92289f4bb Mon Sep 17 00:00:00
>>>> 2001
>>>> From: Thilo Borgmann <thilo.borgmann at mail.de>
>>>> Date: Fri, 10 Dec 2021 12:34:23 +0100
>>>> Subject: [PATCH v3] lavfi/drawtext: Add localtime_ms for
>>>> millisecond
>>>> precision
>>>
>>> Iam missining something here as it doesnt build
>>>
>>> AR libavdevice/libavdevice.a
>>> CC libavfilter/vf_drawtext.o
>>> libavfilter/vf_drawtext.c: In function ‘func_strftime’:
>>> libavfilter/vf_drawtext.c:1052:12: error: implicit declaration of
>>> function ‘av_gettime’; did you mean ‘av_get_token’?
>>> [-Werror=implicit-function-declaration]
>>> unow = av_gettime();
>>> ^~~~~~~~~~
>>> av_get_token
>>> libavfilter/vf_drawtext.c:1061:20: warning: passing argument 1 of
>>> ‘av_bprintf’ from incompatible pointer type
>>> [-Wincompatible-pointer-types]
>>> av_bprintf(&bp, ".%03d", (int)(unow % 1000000) /
>>> 1000);
>>> ^
>>> In file included from libavfilter/vf_drawtext.c:47:0:
>>> ./libavutil/bprint.h:127:6: note: expected ‘AVBPrint * {aka struct
>>> AVBPrint *}’ but argument is of type ‘AVBPrint ** {aka struct
>>> AVBPrint
>>> **}’
>>> void av_bprintf(AVBPrint *buf, const char *fmt, ...)
>>> av_printf_format(2, 3);
>>> ^~~~~~~~~~
>>> cc1: some warnings being treated as errors
>>> ffbuild/common.mak:70: recipe for target 'libavfilter/vf_drawtext.o'
>>> failed
>>> make: *** [libavfilter/vf_drawtext.o] Error 1
>>
>> Works for me on OSX.
>>
>> av_gettime() is in lavu/time.c which gets included via
>> lavu/time_internal.h….
>>
>
> av_gettime() is public and resides in lavu/time.h, not
> lavu/time_internal.h; the latter does not include the former in any
> way.
Ups, <time.h> was it…
> But compat/os2threads.h and compat/w32pthreads.h include lavu/time.h.
> Maybe you have it from the former? It doesn't work here (Ubuntu 21.10)
> either.
Retested and I got no clue how this appeared to be working for me
yesterday - sorry.
v4 attached, including lavu/time.h and fixed pointer type warning.
Thanks!
-Thilo
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: v4-0001-lavfi-drawtext-Add-localtime_ms-for-millisecond-p.patch
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20211212/a82c425d/attachment.ksh>
More information about the ffmpeg-devel
mailing list