summaryrefslogtreecommitdiff
path: root/libavfilter/vf_drawtext.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-04-23 03:27:42 +0200
committerMichael Niedermayer <michaelni@gmx.at>2013-04-23 03:35:28 +0200
commita9a537b154aaa48bc8154b2c4472f01eb9750784 (patch)
treef9f73d22570945d0bca6a0682e9798d5faf6f183 /libavfilter/vf_drawtext.c
parent15d2f26998909ffd7d2779946df9d8e0c07efbcf (diff)
avfilter/drawtext: add pict_type support
Fixes Ticket2470 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavfilter/vf_drawtext.c')
-rw-r--r--libavfilter/vf_drawtext.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/libavfilter/vf_drawtext.c b/libavfilter/vf_drawtext.c
index c404fa53c5..ef5bb03be4 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",