From 2eb21ef30c37fb1ac6ab3c6485f0e65daa7a8fdf Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Wed, 28 Nov 2012 09:01:00 +0000 Subject: Fix #33295: Shifted movie strip when rendering <100% resolution for strip with complex transform That was kind of a regression since fix for #32091: Crop and offset coordinates changes proxy render settings on image strips, which is now fixed in other way. Namely Offset/Crop values are filling in 100% scene resolution values, but getting scaled to proxy / scene percentage values. --- source/blender/blenkernel/intern/sequencer.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'source/blender') diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index e023a3e20ae..1c94d18fc05 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -1835,6 +1835,8 @@ static ImBuf *input_preprocess(SeqRenderData context, Sequence *seq, float cfra, StripCrop c = {0}; StripTransform t = {0}; int sx, sy, dx, dy; + double xscale = 1.0; + double yscale = 1.0; if (is_proxy_image) { double f = seq_rendersize_to_scale_factor(context.preview_render_size); @@ -1851,6 +1853,17 @@ static ImBuf *input_preprocess(SeqRenderData context, Sequence *seq, float cfra, t = *seq->strip->transform; } + xscale = context.scene->r.xsch ? ((float) context.rectx / (float) context.scene->r.xsch) : 1.0; + yscale = context.scene->r.ysch ? ((float) context.recty / (float) context.scene->r.ysch) : 1.0; + + xscale /= (float) context.rectx / ibuf->x; + yscale /= (float) context.recty / ibuf->y; + + c.left *= xscale; c.right *= xscale; + c.top *= yscale; c.bottom *= yscale; + + t.xofs *= xscale; t.yofs *= yscale; + sx = ibuf->x - c.left - c.right; sy = ibuf->y - c.top - c.bottom; dx = sx; -- cgit v1.2.3