aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBela Bodecs <bodecsb@vivanet.hu>2016-01-19 20:22:06 +0100
committerMichael Niedermayer <michael@niedermayer.cc>2016-01-19 23:30:36 +0100
commitcc83177db4e08bb11908a8a8387859e2e8fcb162 (patch)
tree819ae1c1c7fe3cb417d98fb893d9ff1767156e24
parentff8c2c41030289b4a6ea6d547c91c90bc8484f26 (diff)
downloadffmpeg-cc83177db4e08bb11908a8a8387859e2e8fcb162.tar.gz
vf_overlay: handles expression evaluation of frame size change in frame-by-frame evalutaion mode
vf_overlay video filter accepts expressions in its parameters. In 'frame-by-frame' evaluation mode it recalculates them regularly, but incoming video frame size changes did not reflect in their values. So if you used width or height of any source videos in expressions as parameters, they stayed on their initial values. This patch corrects this bug. Signed-off-by: Bela Bodecs <bodecsb@vivanet.hu> Reviewed-by: Paul B Mahol <onemda@gmail.com Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-rw-r--r--libavfilter/vf_overlay.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/libavfilter/vf_overlay.c b/libavfilter/vf_overlay.c
index 7457820526..3eac7f07fc 100644
--- a/libavfilter/vf_overlay.c
+++ b/libavfilter/vf_overlay.c
@@ -599,6 +599,11 @@ static AVFrame *do_blend(AVFilterContext *ctx, AVFrame *mainpic,
NAN : mainpic->pts * av_q2d(inlink->time_base);
s->var_values[VAR_POS] = pos == -1 ? NAN : pos;
+ s->var_values[VAR_OVERLAY_W] = s->var_values[VAR_OW] = second->width;
+ s->var_values[VAR_OVERLAY_H] = s->var_values[VAR_OH] = second->height;
+ s->var_values[VAR_MAIN_W ] = s->var_values[VAR_MW] = mainpic->width;
+ s->var_values[VAR_MAIN_H ] = s->var_values[VAR_MH] = mainpic->height;
+
eval_expr(ctx);
av_log(ctx, AV_LOG_DEBUG, "n:%f t:%f pos:%f x:%f xi:%d y:%f yi:%d\n",
s->var_values[VAR_N], s->var_values[VAR_T], s->var_values[VAR_POS],