Interop CPLs don't have MainPictureStoredArea (#2452). v1.8.58
authorCarl Hetherington <cth@carlh.net>
Mon, 13 Feb 2023 14:17:26 +0000 (15:17 +0100)
committerCarl Hetherington <cth@carlh.net>
Mon, 13 Feb 2023 14:17:26 +0000 (15:17 +0100)
src/cpl.cc
test/cpl_test.cc

index d73def9f5a2770b87302148f0baa3d11e1a2fb1b..e050c8851fe451ef8f8b314080f44f2b60bef41a 100644 (file)
@@ -297,10 +297,12 @@ CPL::read_composition_metadata_asset (cxml::ConstNodePtr node)
                _main_sound_sample_rate = raw_convert<int>(sr_bits[0]);
        }
 
-       _main_picture_stored_area = dcp::Size (
-               node->node_child("MainPictureStoredArea")->number_child<int>("Width"),
-               node->node_child("MainPictureStoredArea")->number_child<int>("Height")
-               );
+       if (_standard == dcp::Standard::SMPTE) {
+               _main_picture_stored_area = dcp::Size (
+                       node->node_child("MainPictureStoredArea")->number_child<int>("Width"),
+                       node->node_child("MainPictureStoredArea")->number_child<int>("Height")
+                       );
+       }
 
        _main_picture_active_area = dcp::Size (
                node->node_child("MainPictureActiveArea")->number_child<int>("Width"),
index cc51c12c2cc201990b9ee1d9c2522c30ee33b747..25b3306bda0ebaaffed03cd80c30de5950312584 100644 (file)
@@ -69,3 +69,10 @@ BOOST_AUTO_TEST_CASE(cpl_content_kind_test3)
 }
 
 
+BOOST_AUTO_TEST_CASE(interop_cpl_with_metadata_test)
+{
+       dcp::CPL cpl(private_test / "CPL_f383c150-5021-4110-9aae-64da6c1ffbdb.xml");
+       /* The main thing is that the CPL read doesn't throw, but let's just check one thing for luck */
+       BOOST_CHECK_EQUAL(cpl.annotation_text().get_value_or(""), "EyeLeader2sec_XSN_F-133_XX-XX_MOS_4K_20230124_EYE_IOP_OV");
+}
+