vf_drawtext: do not reset "n" variable to 0 in case the filter is reinited
authorStefano Sabatini <stefasab@gmail.com>
Fri, 23 Sep 2011 13:37:47 +0000 (15:37 +0200)
committerStefano Sabatini <stefasab@gmail.com>
Sun, 25 Sep 2011 20:47:51 +0000 (22:47 +0200)
libavfilter/vf_drawtext.c

index bebe0d1..8dda2d9 100644 (file)
@@ -96,6 +96,7 @@ enum var_name {
 
 typedef struct {
     const AVClass *class;
+    int reinit;                     ///< tells if the filter is being reinited
     uint8_t *fontfile;              ///< font to be used
     uint8_t *text;                  ///< text to be drawn
     uint8_t *expanded_text;         ///< used to contain the strftime()-expanded text
@@ -469,7 +470,8 @@ static int config_input(AVFilterLink *inlink)
     dtext->var_values[VAR_VSUB]  = 1<<pix_desc->log2_chroma_h;
     dtext->var_values[VAR_X]     = NAN;
     dtext->var_values[VAR_Y]     = NAN;
-    dtext->var_values[VAR_N]     = 0;
+    if (!dtext->reinit)
+        dtext->var_values[VAR_N] = 0;
     dtext->var_values[VAR_T]     = NAN;
 
     if ((ret = av_expr_parse(&dtext->x_pexpr, dtext->x_expr, var_names,
@@ -483,9 +485,12 @@ static int config_input(AVFilterLink *inlink)
 
 static int command(AVFilterContext *ctx, const char *cmd, const char *arg, char *res, int res_len, int flags)
 {
+    DrawTextContext *dtext = ctx->priv;
+
     if(!strcmp(cmd, "reinit")){
         int ret;
         uninit(ctx);
+        dtext->reinit = 1;
         if((ret=init(ctx, arg, NULL)) < 0)
             return ret;
         return config_input(ctx->inputs[0]);