X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavfilter%2Fvf_drawbox.c;h=799d07ead4f4e75c4abe7dd3ff25c221b929dbd3;hb=cde6e328de214ffe8387641cdc1e433a2c2150f3;hp=115df884e134e82c2710d06b7c73950ea8d9ed0e;hpb=5c17377e28e818d3074a608d42821d66f1d26e8d;p=ffmpeg diff --git a/libavfilter/vf_drawbox.c b/libavfilter/vf_drawbox.c index 115df884e13..799d07ead4f 100644 --- a/libavfilter/vf_drawbox.c +++ b/libavfilter/vf_drawbox.c @@ -47,6 +47,7 @@ static const char *const var_names[] = { "h", ///< height of the rendered box "w", ///< width of the rendered box "t", + "max", NULL }; @@ -63,6 +64,7 @@ enum var_name { VAR_H, VAR_W, VAR_T, + VAR_MAX, VARS_NB }; @@ -142,30 +144,35 @@ static int config_input(AVFilterLink *inlink) for (i = 0; i <= NUM_EXPR_EVALS; i++) { /* evaluate expressions, fail on last iteration */ + var_values[VAR_MAX] = inlink->w; if ((ret = av_expr_parse_and_eval(&res, (expr = s->x_expr), var_names, var_values, NULL, NULL, NULL, NULL, NULL, 0, ctx)) < 0 && i == NUM_EXPR_EVALS) goto fail; s->x = var_values[VAR_X] = res; + var_values[VAR_MAX] = inlink->h; if ((ret = av_expr_parse_and_eval(&res, (expr = s->y_expr), var_names, var_values, NULL, NULL, NULL, NULL, NULL, 0, ctx)) < 0 && i == NUM_EXPR_EVALS) goto fail; s->y = var_values[VAR_Y] = res; + var_values[VAR_MAX] = inlink->w - s->x; if ((ret = av_expr_parse_and_eval(&res, (expr = s->w_expr), var_names, var_values, NULL, NULL, NULL, NULL, NULL, 0, ctx)) < 0 && i == NUM_EXPR_EVALS) goto fail; s->w = var_values[VAR_W] = res; + var_values[VAR_MAX] = inlink->h - s->y; if ((ret = av_expr_parse_and_eval(&res, (expr = s->h_expr), var_names, var_values, NULL, NULL, NULL, NULL, NULL, 0, ctx)) < 0 && i == NUM_EXPR_EVALS) goto fail; s->h = var_values[VAR_H] = res; + var_values[VAR_MAX] = INT_MAX; if ((ret = av_expr_parse_and_eval(&res, (expr = s->t_expr), var_names, var_values, NULL, NULL, NULL, NULL, NULL, 0, ctx)) < 0 && i == NUM_EXPR_EVALS)