summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/video_content.cc5
-rw-r--r--test/scaling_test.cc19
2 files changed, 23 insertions, 1 deletions
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
+ });
+}
+