From: Carl Hetherington Date: Mon, 2 Jan 2023 14:29:51 +0000 (+0100) Subject: Fix errors when a custom size is given which is larger than the container (#2404). X-Git-Tag: v2.16.39~10 X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=commitdiff_plain;h=6cda037324ccaf7a8df142d037fa88520fb80f35 Fix errors when a custom size is given which is larger than the container (#2404). --- diff --git a/src/lib/video_content.cc b/src/lib/video_content.cc index c10a94f43..9b39ff01b 100644 --- a/src/lib/video_content.cc +++ b/src/lib/video_content.cc @@ -650,7 +650,10 @@ VideoContent::scaled_size (dcp::Size film_container) } if (_custom_size) { - return *_custom_size; + if (_custom_size->width <= film_container.width && _custom_size->height <= film_container.height) { + return *_custom_size; + } + return fit_ratio_within(_custom_size->ratio(), film_container); } auto size = size_after_crop (); diff --git a/test/scaling_test.cc b/test/scaling_test.cc index 9a3424506..11b8ae1b7 100644 --- a/test/scaling_test.cc +++ b/test/scaling_test.cc @@ -25,6 +25,7 @@ */ +#include "lib/content_factory.h" #include "lib/dcp_content_type.h" #include "lib/film.h" #include "lib/image_content.h" @@ -93,3 +94,21 @@ BOOST_AUTO_TEST_CASE (scaling_test) /* S: scope image in a scope container */ scaling_test_for (film, imc, 2.38695, "239", "239"); } + + +BOOST_AUTO_TEST_CASE(assertion_failure_when_scaling) +{ + auto content = content_factory("test/data/flat_red.png"); + auto film = new_test_film2("assertion_failure_when_scaling", content); + + content[0]->video->set_custom_size(dcp::Size{3996, 2180}); + film->set_resolution(Resolution::FOUR_K); + + make_and_verify_dcp ( + film, + { + dcp::VerificationNote::Code::MISSING_FFMC_IN_FEATURE, + dcp::VerificationNote::Code::MISSING_FFEC_IN_FEATURE + }); +} +