Don't import luminance of 0 from 2.14.x metadata files (part of #2130).
authorCarl Hetherington <cth@carlh.net>
Mon, 22 Nov 2021 09:52:52 +0000 (10:52 +0100)
committerCarl Hetherington <cth@carlh.net>
Mon, 22 Nov 2021 19:48:20 +0000 (20:48 +0100)
src/lib/film.cc
test/data
test/film_metadata_test.cc

index 0d277b82a0a8e92c1825eedc86dc6b08c7b3085c..64fc04f5ddbcbc4172502b443bab05ca32617857 100644 (file)
@@ -753,7 +753,9 @@ Film::read_metadata (optional<boost::filesystem::path> path)
                        _ratings.push_back (dcp::Rating("", *rating));
                }
                if (auto mastered_luminance = isdcf->optional_number_child<float>("MasteredLuminance")) {
                        _ratings.push_back (dcp::Rating("", *rating));
                }
                if (auto mastered_luminance = isdcf->optional_number_child<float>("MasteredLuminance")) {
-                       _luminance = dcp::Luminance(*mastered_luminance, dcp::Luminance::Unit::FOOT_LAMBERT);
+                       if (*mastered_luminance > 0) {
+                               _luminance = dcp::Luminance(*mastered_luminance, dcp::Luminance::Unit::FOOT_LAMBERT);
+                       }
                }
                _studio = isdcf->optional_string_child("Studio");
                _facility = isdcf->optional_string_child("Facility");
                }
                _studio = isdcf->optional_string_child("Studio");
                _facility = isdcf->optional_string_child("Facility");
index a27d0404655bfb0a32cb0a8dfb4fce69d8118a21..49b6ee6d90d9fc543e829cbe9f071970965263a0 160000 (submodule)
--- a/test/data
+++ b/test/data
@@ -1 +1 @@
-Subproject commit a27d0404655bfb0a32cb0a8dfb4fce69d8118a21
+Subproject commit 49b6ee6d90d9fc543e829cbe9f071970965263a0
index feee58dc291e5fb3ec172487f5160ffa448660f5..62cb5cf1d562f47a95868b70a3416cba03bb9e5b 100644 (file)
@@ -160,3 +160,17 @@ BOOST_AUTO_TEST_CASE (metadata_loads_from_2_14_x_3)
        BOOST_REQUIRE (film->luminance() == dcp::Luminance(14, dcp::Luminance::Unit::FOOT_LAMBERT));
 }
 
        BOOST_REQUIRE (film->luminance() == dcp::Luminance(14, dcp::Luminance::Unit::FOOT_LAMBERT));
 }
 
+
+/** Check that an empty <MasteredLuminance> tag results in the film's luminance being unset */
+BOOST_AUTO_TEST_CASE (metadata_loads_from_2_14_x_4)
+{
+       namespace fs = boost::filesystem;
+       auto dir = fs::path("build/test/metadata_loads_from_2_14_x_4");
+       fs::remove_all(dir);
+       auto film = make_shared<Film>(dir);
+       fs::copy_file("test/data/2.14.x.metadata.4.xml", dir / "metadata.xml");
+       auto notes = film->read_metadata(dir / "metadata.xml");
+
+       BOOST_REQUIRE (!film->luminance());
+}
+