From 98c9ade9853a9c413534ef243174d65f3f7506fa Mon Sep 17 00:00:00 2001 From: Luca Barbato Date: Sat, 1 Aug 2015 11:22:11 +0200 Subject: drawtext: Move the strftime expansion in a separate function Signed-off-by: Luca Barbato --- libavfilter/vf_drawtext.c | 46 +++++++++++++++++++++++++++++----------------- 1 file changed, 29 insertions(+), 17 deletions(-) (limited to 'libavfilter') diff --git a/libavfilter/vf_drawtext.c b/libavfilter/vf_drawtext.c index a4d25c245d..e36cfa2c00 100644 --- a/libavfilter/vf_drawtext.c +++ b/libavfilter/vf_drawtext.c @@ -521,28 +521,15 @@ static inline int is_newline(uint32_t c) return c == '\n' || c == '\r' || c == '\f' || c == '\v'; } -static int dtext_prepare_text(AVFilterContext *ctx) +static int expand_strftime(DrawTextContext *s) { - DrawTextContext *s = ctx->priv; - uint32_t code = 0, prev_code = 0; - int x = 0, y = 0, i = 0, ret; - int text_height, baseline; - char *text = s->text; - uint8_t *p; - int str_w = 0, len; - int y_min = 32000, y_max = -32000; - FT_Vector delta; - Glyph *glyph = NULL, *prev_glyph = NULL; - Glyph dummy = { 0 }; - int width = ctx->inputs[0]->w; - int height = ctx->inputs[0]->h; - time_t now = time(0); struct tm ltime; + time_t now = time(0); uint8_t *buf = s->expanded_text; int buf_size = s->expanded_text_size; if (!buf) - buf_size = 2*strlen(s->text)+1; + buf_size = 2 * strlen(s->text) + 1; localtime_r(&now, <ime); @@ -555,9 +542,34 @@ static int dtext_prepare_text(AVFilterContext *ctx) if (!buf) return AVERROR(ENOMEM); - text = s->expanded_text = buf; + s->expanded_text = buf; s->expanded_text_size = buf_size; + return 0; +} + +static int dtext_prepare_text(AVFilterContext *ctx) +{ + DrawTextContext *s = ctx->priv; + uint32_t code = 0, prev_code = 0; + int x = 0, y = 0, i = 0, ret; + int text_height, baseline; + char *text; + uint8_t *p; + int str_w = 0, len; + int y_min = 32000, y_max = -32000; + FT_Vector delta; + Glyph *glyph = NULL, *prev_glyph = NULL; + Glyph dummy = { 0 }; + int width = ctx->inputs[0]->w; + int height = ctx->inputs[0]->h; + + ret = expand_strftime(s); + if (ret < 0) + return ret; + + text = s->expanded_text ? s->expanded_text : s->text; + if ((len = strlen(text)) > s->nb_positions) { FT_Vector *p = av_realloc(s->positions, len * sizeof(*s->positions)); -- cgit v1.2.3