|
|
|
@ -123,12 +123,17 @@ static int config_input(AVFilterLink *inlink) |
|
|
|
|
NULL, NULL, NULL, NULL, NULL, 0, ctx)) < 0) |
|
|
|
|
goto eval_fail; |
|
|
|
|
s->h = var_values[VAR_OUT_H] = var_values[VAR_OH] = res; |
|
|
|
|
if (!s->h) |
|
|
|
|
var_values[VAR_OUT_H] = var_values[VAR_OH] = s->h = inlink->h; |
|
|
|
|
|
|
|
|
|
/* evaluate the width again, as it may depend on the evaluated output height */ |
|
|
|
|
if ((ret = av_expr_parse_and_eval(&res, (expr = s->w_expr), |
|
|
|
|
var_names, var_values, |
|
|
|
|
NULL, NULL, NULL, NULL, NULL, 0, ctx)) < 0) |
|
|
|
|
goto eval_fail; |
|
|
|
|
s->w = var_values[VAR_OUT_W] = var_values[VAR_OW] = res; |
|
|
|
|
if (!s->w) |
|
|
|
|
var_values[VAR_OUT_W] = var_values[VAR_OW] = s->w = inlink->w; |
|
|
|
|
|
|
|
|
|
/* evaluate x and y */ |
|
|
|
|
av_expr_parse_and_eval(&res, (expr = s->x_expr), |
|
|
|
@ -153,11 +158,6 @@ static int config_input(AVFilterLink *inlink) |
|
|
|
|
return AVERROR(EINVAL); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!s->w) |
|
|
|
|
s->w = inlink->w; |
|
|
|
|
if (!s->h) |
|
|
|
|
s->h = inlink->h; |
|
|
|
|
|
|
|
|
|
s->w = ff_draw_round_to_sub(&s->draw, 0, -1, s->w); |
|
|
|
|
s->h = ff_draw_round_to_sub(&s->draw, 1, -1, s->h); |
|
|
|
|
s->x = ff_draw_round_to_sub(&s->draw, 0, -1, s->x); |
|
|
|
|