[FFmpeg-cvslog] avfilter/drawtext: add pict_type support

Michael Niedermayer git at videolan.org
Tue Apr 23 03:37:30 CEST 2013


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Tue Apr 23 03:27:42 2013 +0200| [a9a537b154aaa48bc8154b2c4472f01eb9750784] | committer: Michael Niedermayer

avfilter/drawtext: add pict_type support

Fixes Ticket2470

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=a9a537b154aaa48bc8154b2c4472f01eb9750784
---

 doc/filters.texi          |    3 +++
 libavfilter/vf_drawtext.c |   14 ++++++++++++++
 2 files changed, 17 insertions(+)

diff --git a/doc/filters.texi b/doc/filters.texi
index 5847c75..21a3c0f 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -3030,6 +3030,9 @@ It can accept an argument: a strftime() format string.
 @item n, frame_num
 The frame number, starting from 0.
 
+ at item pict_type
+A 1 character description of the current picture type.
+
 @item pts
 The timestamp of the current frame, in seconds, with microsecond accuracy.
 
diff --git a/libavfilter/vf_drawtext.c b/libavfilter/vf_drawtext.c
index c404fa5..ef5bb03 100644
--- a/libavfilter/vf_drawtext.c
+++ b/libavfilter/vf_drawtext.c
@@ -72,6 +72,7 @@ static const char *const var_names[] = {
     "text_w", "tw",           ///< width  of the rendered text
     "x",
     "y",
+    "pict_type",
     NULL
 };
 
@@ -108,6 +109,7 @@ enum var_name {
     VAR_TEXT_W, VAR_TW,
     VAR_X,
     VAR_Y,
+    VAR_PICT_TYPE,
     VAR_VARS_NB
 };
 
@@ -608,6 +610,15 @@ static int command(AVFilterContext *ctx, const char *cmd, const char *arg, char
     return AVERROR(ENOSYS);
 }
 
+static int func_pict_type(AVFilterContext *ctx, AVBPrint *bp,
+                          char *fct, unsigned argc, char **argv, int tag)
+{
+    DrawTextContext *dtext = ctx->priv;
+
+    av_bprintf(bp, "%c", av_get_picture_type_char(dtext->var_values[VAR_PICT_TYPE]));
+    return 0;
+}
+
 static int func_pts(AVFilterContext *ctx, AVBPrint *bp,
                     char *fct, unsigned argc, char **argv, int tag)
 {
@@ -677,6 +688,7 @@ static const struct drawtext_function {
 } functions[] = {
     { "expr",      1, 1, 0,   func_eval_expr },
     { "e",         1, 1, 0,   func_eval_expr },
+    { "pict_type", 0, 0, 0,   func_pict_type },
     { "pts",       0, 0, 0,   func_pts      },
     { "gmtime",    0, 1, 'G', func_strftime },
     { "localtime", 0, 1, 'L', func_strftime },
@@ -987,6 +999,8 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
     dtext->var_values[VAR_T] = frame->pts == AV_NOPTS_VALUE ?
         NAN : frame->pts * av_q2d(inlink->time_base);
 
+    dtext->var_values[VAR_PICT_TYPE] = frame->pict_type;
+
     draw_text(ctx, frame, frame->width, frame->height);
 
     av_log(ctx, AV_LOG_DEBUG, "n:%d t:%f text_w:%d text_h:%d x:%d y:%d\n",



More information about the ffmpeg-cvslog mailing list