View Bug Details

IDProjectCategoryView StatusLast Update
0001669DCP-o-maticFeaturespublic2021-01-08 00:47
ReporterCarsten Assigned Tocarl  
Status closedResolutionfixed 
PlatformMacOSOS XOS Version10.12
Product Version2.14.x 
Target Version2.16.0 
Summary0001669: Revise 'Scale To' options and defaults

Now that Scale To: 'No Stretch' and 'No Scale' has been fixed to work with non-square pixels accurately, I found the use of 'No Stretch' much better suited for general scaling to container dimensions than the existing fixed presets. I noticed that it is much easier now to scale non-standard aspect ratios without introducing any skew/distortion, including cropping. So much easier, that I would actually opt for removing ALL existing fixed aspect ratios (from e.g. 1.19 to 2.39), and leave only three options:

No Stretch
No Scale
custom (custom will allow to enter a specific aspect ratio numerically, or using up/down buttons).

I think these three options, in combination with preview and cropping, will allow to scale all types of content properly and with a much lower risc of introducing skew. The No Stretch option will always maintain the right aspect ratio of the image, so only the size is altered.
For footage that is incorrectly flagged or has unknown non-square pixel aspect ratios, the custom option should fix all possible issues.

In addition to this major change, I also opt for the introduction of an automatic container selection (with override, of cause).
The container should be chosen automatically based on source content, and based on the ISDCF container recommendations.
e.g. if any source dimension is larger than can be mapped to a 2k container, choose a 4k container.

ISDCF recommended practice for aspect ratios under 1.85 (such as academy aperture 1.33) is to pillar box in a flat package. For aspect ratio from 1.85 to 2.30 letter box in a flat package. For aspect ratios above 2.30 letter box in a scope package.

This automatic container selection should be an installation default and can be selected in DCP default prefs (same as 'ScaleTo: Guess from content' is now). If someone wants to override automatic container selection, allow to choose flat or scope in prefs (never allow full container to be a default choice).

The ScaleTo default in the future should be 'No Strech'. Currently, I believe the 'Guess from content' chooses the closest preset aspect ratio - which will skew a lot of content not matching standard dimensions. 'No Stretch' should precisely match at least all content that is correctly flagged (square pixel AND non-square pixel, with and without pillar/letterboxing).
'No Scale' could be chosen automatically for content that matches 2k/4k flat/scope/full container resolution down to the single pixel.
So to assure people that absolutely no scaling will take place.

From my workshops and email and forum conversations, I understand that scaling and aspect ratio is the most complicated single issue to explain for DCP conversions. I think these new options will get rid of most of these problems.

In order to make scaling even easier, the crop input boxes for L/R and T/B could be 'linked' (add a 'link/unlink' button between them), to allow quick symmetrical cropping from left/right and top/bottom. I know letterboxes and pillarboxes are not always perfectly symmetric, but, you can quickly crop symmetrical to a coarse result, then 'unlink' for individual side correction. See my GUI simulation below. Clicking on any of the up/down arrows will increase or decrease the linked value by the same amount.

I am sure that this new scheme will immediately be understood by existing and new users. I also think that this way we could get rid of those nasty 'fill container vertically/horizontally' on the menu, which I always hated.

We could also automatically check/show 'outline content' for all content not matching any of the standard containers - that is, all content that will most likely need adjustments.

  • Carsten
Estimated weeks required
Estimated work requiredUndecided


related to 0001678 closedcarl Please add custom "Scale to" pixel dimensions 



2019-11-10 20:13



2019-11-29 15:35

administrator   ~0003610

I'm not sure that even "no scale" really has any use in this arrangement, does it? When would you select it over 'no stretch' (other than for reassurance, which I think could/should be provided in some other way).


2020-05-09 21:05

administrator   ~0003813

Last edited: 2020-05-11 00:45


Relationship between content scaling and DCP container might be complicated here. I guess video scaling is always worked out on-demand based on DCP container. For example

  1. new project
  2. add some video; this triggers calculation of best DCP container.
  3. add some more video; this doesn't do anything, but it will do whatever's best for the container.
  4. remove all video and add some more; trigger calculation again.
  5. user sets DCP container before 1st video added; this needs to disable recalculation.

So there needs to be a flag which is set when the DCP container is changed and is never again unset in that project. Then a trigger on video added; if it's the first video, and the DCP container-set flag hasn't been tripped, calculate the best container.

Vague plan:

  1. add ScaleFactors and replace VideoContentScale with that in VideoContent
    • scale_and_crop_to_fit_{width,height} go so callers need to be removed (done inscaling-rework)
    • loading from XML needs to do something intelligent; so far it writes to _legacy_* but these need to be converted somehow to _custom_scale as they are not being saved as metadata (done in scaling-rework)
  2. remove Config::default_scale_to() (done in scaling-rework)


2020-05-10 00:57

administrator   ~0003814

Last edited: 2020-05-11 23:32

scaling-rework seems complete; running CI.


2020-05-12 19:39

administrator   ~0003816

Merged to v2.15.x in 4edc14c8b1410e24f68b510cc14409b96c0338a3

Thank you Carsten!

Bug History

Date Modified Username Field Change
2019-11-10 20:13 Carsten New Bug
2019-11-10 20:13 Carsten File Added: Bildschirmfoto 2019-11-09 um 18.44.02.png
2019-11-10 20:18 Carsten Description Updated
2019-11-10 20:18 Carsten Estimated work required => Undecided
2019-11-10 20:20 Carsten Description Updated
2019-11-10 20:21 Carsten Description Updated
2019-11-10 20:22 Carsten Description Updated
2019-11-10 20:45 Carsten Description Updated
2019-11-10 20:50 Carsten Description Updated
2019-11-10 20:51 Carsten Description Updated
2019-11-10 20:52 Carsten Description Updated
2019-11-10 20:53 Carsten Description Updated
2019-11-24 23:24 carl Relationship added related to 0001678
2019-11-27 16:12 carl Tag Attached: workflow
2019-11-27 16:13 carl Summary revise 'Scale To' options and defaults => Revise 'Scale To' options and defaults
2019-11-29 15:35 carl Assigned To => carl
2019-11-29 15:35 carl Status new => feedback
2019-11-29 15:35 carl Note Added: 0003610
2020-05-09 21:05 carl Note Added: 0003813
2020-05-09 21:05 carl Note Edited: 0003813
2020-05-09 21:09 carl Note Edited: 0003813
2020-05-09 21:10 carl Note Edited: 0003813
2020-05-09 21:12 carl Note Edited: 0003813
2020-05-09 23:07 carl Note Edited: 0003813
2020-05-10 00:17 carl Note Edited: 0003813
2020-05-10 00:57 carl Note Added: 0003814
2020-05-10 19:46 carl Note Edited: 0003814
2020-05-10 21:50 carl Note Edited: 0003814
2020-05-10 22:19 carl Note Edited: 0003814
2020-05-10 23:42 carl Note Edited: 0003814
2020-05-10 23:42 carl Note Edited: 0003814
2020-05-11 00:45 carl Note Edited: 0003813
2020-05-11 00:48 carl Note Edited: 0003814
2020-05-11 00:48 carl Note Edited: 0003814
2020-05-11 00:53 carl Note Edited: 0003814
2020-05-11 00:54 carl Note Edited: 0003814
2020-05-11 00:55 carl Note Edited: 0003814
2020-05-11 01:01 carl Note Edited: 0003814
2020-05-11 01:03 carl Note Edited: 0003814
2020-05-11 21:43 carl Note Edited: 0003814
2020-05-11 23:31 carl Note Edited: 0003814
2020-05-11 23:32 carl Note Edited: 0003814
2020-05-12 19:39 carl Status feedback => resolved
2020-05-12 19:39 carl Resolution open => fixed
2020-05-12 19:39 carl Note Added: 0003816
2021-01-08 00:47 carl Status resolved => closed