lavfi/drawtext: add support for printing frame numbers

Fix trac ticket #1949.
pull/8/head
Stefano Sabatini 12 years ago
parent dcbf72836c
commit eb87b340e8
  1. 3
      doc/filters.texi
  2. 2
      libavfilter/version.h
  3. 11
      libavfilter/vf_drawtext.c

@ -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 @@
#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,
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 {
{ "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,

Loading…
Cancel
Save