summaryrefslogtreecommitdiff
path: root/libavfilter
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 /libavfilter
parentff8c2c41030289b4a6ea6d547c91c90bc8484f26 (diff)
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>
Diffstat (limited to 'libavfilter')
-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],