Commit eb87b340 authored by Stefano Sabatini's avatar Stefano Sabatini

lavfi/drawtext: add support for printing frame numbers

Fix trac ticket #1949.
parent dcbf7283
...@@ -2083,6 +2083,9 @@ It can accept an argument: a strftime() format string. ...@@ -2083,6 +2083,9 @@ It can accept an argument: a strftime() format string.
The time at which the filter is running, expressed in the local time zone. The time at which the filter is running, expressed in the local time zone.
It can accept an argument: a strftime() format string. It can accept an argument: a strftime() format string.
@item n, frame_num
The frame number, starting from 0.
@item pts @item pts
The timestamp of the current frame, in seconds, with microsecond accuracy. The timestamp of the current frame, in seconds, with microsecond accuracy.
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
#define LIBAVFILTER_VERSION_MAJOR 3 #define LIBAVFILTER_VERSION_MAJOR 3
#define LIBAVFILTER_VERSION_MINOR 23 #define LIBAVFILTER_VERSION_MINOR 23
#define LIBAVFILTER_VERSION_MICRO 101 #define LIBAVFILTER_VERSION_MICRO 102
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
LIBAVFILTER_VERSION_MINOR, \ LIBAVFILTER_VERSION_MINOR, \
......
...@@ -611,6 +611,15 @@ static int func_pts(AVFilterContext *ctx, AVBPrint *bp, ...@@ -611,6 +611,15 @@ static int func_pts(AVFilterContext *ctx, AVBPrint *bp,
return 0; return 0;
} }
static int func_frame_num(AVFilterContext *ctx, AVBPrint *bp,
char *fct, unsigned argc, char **argv, int tag)
{
DrawTextContext *dtext = ctx->priv;
av_bprintf(bp, "%d", (int)dtext->var_values[VAR_N]);
return 0;
}
#if !HAVE_LOCALTIME_R #if !HAVE_LOCALTIME_R
static void localtime_r(const time_t *t, struct tm *tm) static void localtime_r(const time_t *t, struct tm *tm)
{ {
...@@ -643,6 +652,8 @@ static const struct drawtext_function { ...@@ -643,6 +652,8 @@ static const struct drawtext_function {
{ "pts", 0, 0, 0, func_pts }, { "pts", 0, 0, 0, func_pts },
{ "gmtime", 0, 1, 'G', func_strftime }, { "gmtime", 0, 1, 'G', func_strftime },
{ "localtime", 0, 1, 'L', func_strftime }, { "localtime", 0, 1, 'L', func_strftime },
{ "frame_num", 0, 0, 0, func_frame_num },
{ "n", 0, 0, 0, func_frame_num },
}; };
static int eval_function(AVFilterContext *ctx, AVBPrint *bp, char *fct, static int eval_function(AVFilterContext *ctx, AVBPrint *bp, char *fct,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment