[FFmpeg-cvslog] vf_pad: fix x, y option expression evaluation
John Stebbins
git at videolan.org
Tue Nov 10 18:14:47 CET 2015
ffmpeg | branch: master | John Stebbins <stebbins at jetheaddev.com> | Sun Oct 25 11:36:10 2015 -0700| [2ec112f71cd03ccab1b6f9a00d29199a57bcc7a5] | committer: Luca Barbato
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 at gentoo.org>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=2ec112f71cd03ccab1b6f9a00d29199a57bcc7a5
---
libavfilter/vf_pad.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/libavfilter/vf_pad.c b/libavfilter/vf_pad.c
index 634af4c..cddd2a6 100644
--- a/libavfilter/vf_pad.c
+++ b/libavfilter/vf_pad.c
@@ -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);
More information about the ffmpeg-cvslog
mailing list