I think 2D transform processing in VSE has some kind of a design issues. In general as far as I understand the image (and movie) strip processing is evaluated on every stirp and that causes:
- the image is cropped based on the previous strip process.
- the image is filtered on every separated strip process.
Example for scenario 1.
I load an image which is bigger than the format size (format is 19201080 and the image is 20482048). So it is obviously cropped to the format size:
The image can be transformed anywhere and it will be cropped to the format according to.
But if I apply a transform effect strip for whatever reason the image remain cropped based on the previous state:
The VSE scene seems like this:
And there is no option to disable this behaviour.
Example for scenario 2.
Same image is scaled down to 0.2.
Then a transform effect strip is applied with scale up to 17. There result seems like this:
But (obviously) if don’t use an extra transform effect strip instead I concatenate the two transform values (scale 0.5; scale 17 = scale 8.5) the result seems like this:
But we can’t ban transform effect strips. There are a lot of situation when they are needed.
The same issues are with the meta strips, because they are also introduce a new 2D image processing.
There is a good description of this problem in connection with the compositing software Nuke:
Concatenation of transforms in Nuke
So as far as I see the 2D transformation processing (in VSE) should be concatenated and the process flow should be something like this:
{img transform (image strip for eg.) → image transform (effect strip for eg.) → image transform (meta strip for eg. ) → etc.} → transform concatenation → evaluate the bounding box of the image (with an option to keep the whole image outside of the format or crop the pixels outside) → crop the image base on the scene format → filtering
That kind of design would help to keep the original image quality as much as possible but also would help to decrease the cost image processing.
What do you think?