mirror of https://git.ffmpeg.org/ffmpeg.git
vf_pad: fix x, y option expression evaluation
Calculation of x an y based on width and height did not work when width == 0 or height == 0. "0" substitutes the input width and height, but did so too late for x, y expression evaluation. Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
This commit is contained in:
parent
e2854e731f
commit
2ec112f71c
|
@ -167,12 +167,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),
|
||||
|
@ -197,11 +202,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 &= ~((1 << s->hsub) - 1);
|
||||
s->h &= ~((1 << s->vsub) - 1);
|
||||
s->x &= ~((1 << s->hsub) - 1);
|
||||
|
|
Loading…
Reference in New Issue