# Reframe Desk > Cropping 16:9 down to 9:16 throws away two thirds of the width. This computes the crop window, > places it over every subject with the edge clamp applied, and says whether they are still inside > it - in source pixels, before the render. Five lanes over one source-and-subjects sheet, plus a > free browser-side geometry engine. URL: https://reframe-desk.skillsafe.ai/ API: https://reframe-desk.skillsafe.ai/api.html Derived from louisedesadeleer/clipify (https://github.com/louisedesadeleer/clipify), MIT: its Step 4a crop arithmetic and its pitfalls list. Not affiliated with or endorsed by louisedesadeleer. ## The arithmetic ```text strip width = source_height * target_aspect 1080 * 9/16 = 608 ideal x = subject_centre_x - strip/2 actual x = clamp(ideal, 0, source_width - strip) ``` Whichever of width or height binds. 9:16 out of 1920x1080 is a 608x1080 window; 2.39:1 out of the same source is 1920x803 and binds on width instead. ## What it checks, and one thing it deliberately does not Given its own window, a subject smaller than that window is ALWAYS inside it - the clamp pulls the window toward them, never away. So there is no per-subject containment check, because a check that cannot fail reads as coverage it does not provide. A subject falls outside only when one window serves several of them: a centre crop with two people, or a single crop standing in for a pan. That is where the containment test lives. The union width settles it - subjects spanning more than the window is wide cannot all be held by any x, which is the arithmetic reason to pan or split rather than a preference. ## What the reframe costs 608 source pixels into a 1080-wide delivery is a 1.78x upscale. Real softness, visible on a phone, unrecoverable downstream. The only fixes are a higher-resolution source or a wider crop. A 4K source has a trap: coordinates measured on a 1080p proxy are half size, and every window computed from them lands wrong while looking reasonable. ## Motion - Dwell: a turn under 1s is an interjection, not a hand-over. Short turns merge into the one before, which changes the pan count - the timeline that runs is not the one that was written. - Rate: past 0.5 pans a second the picture strobes. Lengthen the dwell, do not speed the transition. - A pan shorter than 15% of the strip is invisible as a move and visible as a hiccup. - Fixed regions assume a static camera; scene cuts inside a clip break that assumption. ## Before you render Audio detection finds the sound of an event, not whether the camera caught it. Sample one frame per cut point and look at it. Drop the moment if the subject is bent down, off-frame, behind an obstacle, or if there is a thumb on the lens. ## The lanes - `plan` - which of pan, split and centre crop this shot can take, decided on the union width - `check` - every window placed and clamped, every subject tested, the sheet rewritten - `pan` - two x positions, the merged timeline, and the crop expression - `split` - stacked tiles, a different shape from the full window and checked separately - `verify` - the frames to sample before rendering and what to look for ## What it does not do It does not decode video, detect faces or render anything. It takes boxes you measured and does the arithmetic on them, so it is only as good as those boxes.