Thank you for that clarification. I had noticed a change in behavior since proxy was introduced and I assumed this was the reason, but didn’t want to parrot it without verification.
To the OP, the math works like this:
Source video:
1920x1080 (16:9)
Timeline resolution:
1440x1080 (4:3)
The source video will be implicitly shrunk by Shotcut to fit within the 4:3 timeline. This is default behavior that happens even without a Crop or SPR filter.
Source video resolution shrunk to fit inside the 4:3 timeline:
16/9 = 1440/x
x = 810
1440x810 (16:9 that fits within the 4:3 width, causing black bars on top/bottom)
What width would create a 4:3 ratio at a height of 810 pixels?
4/3 = x/810
x = 1080
1080x810 (after the 16:9 source is shrunk to fit within 4:3 timeline, then source itself cropped to 4:3)
How many left/right pixels need to be cropped to reach this 4:3 width?
1440 (from 1440x810 at 16:9) minus 1080 (from 1080x810 at 4:3) = 360 cropped
So crop 360 total pixels, such as 180 left and 180 right.
Basically, the math is a little complex because the crop units are not happening “directly on the source”. The crop units are in timeline resolution units. As @shotcut said, this keeps the crop amount consistent (because it’s used as a percentage against the timeline resolution) which enables the underlying video file to change resolution (such as a proxy swap). Without this, a pixel-based crop unit would cut off different amounts of the source if the source resolution changed due to proxy or any other reason.