Tweak interop / SMPTE to pass dcp_inspect.
authorCarl Hetherington <cth@carlh.net>
Sun, 25 Aug 2013 16:18:11 +0000 (17:18 +0100)
committerCarl Hetherington <cth@carlh.net>
Sun, 25 Aug 2013 16:18:11 +0000 (17:18 +0100)
src/cpl.cc
src/dcp.cc
src/picture_asset.cc
src/picture_asset.h
src/reel.cc
src/reel.h

index 7c28fc255670fc91706235fb67e6a4d0c35f4dec..8d8f6a00df7e11e74b6cd572af353a3df6d8186a 100644 (file)
@@ -218,6 +218,7 @@ CPL::write_xml (bool interop, XMLMetadata const & metadata, shared_ptr<Encryptio
        root->add_child("Id")->add_child_text ("urn:uuid:" + _id);
        root->add_child("AnnotationText")->add_child_text (_name);
        root->add_child("IssueDate")->add_child_text (metadata.issue_date);
+       root->add_child("Issuer")->add_child_text (metadata.issuer);
        root->add_child("Creator")->add_child_text (metadata.creator);
        root->add_child("ContentTitleText")->add_child_text (_name);
        root->add_child("ContentKind")->add_child_text (content_kind_to_string (_content_kind));
@@ -231,7 +232,7 @@ CPL::write_xml (bool interop, XMLMetadata const & metadata, shared_ptr<Encryptio
        xmlpp::Node* reel_list = root->add_child ("ReelList");
        
        for (list<shared_ptr<Reel> >::const_iterator i = _reels.begin(); i != _reels.end(); ++i) {
-               (*i)->write_to_cpl (reel_list);
+               (*i)->write_to_cpl (reel_list, interop);
        }
 
        if (crypt) {
index 30a3c3a430150cbc32e3ac7ff7a28af0e2921ccf..a69a5198efcecd24bbec8831e783d4daf1f274b3 100644 (file)
@@ -154,10 +154,19 @@ DCP::write_assetmap (string pkl_uuid, int pkl_length, bool interop, XMLMetadata
        }
 
        root->add_child("Id")->add_child_text ("urn:uuid:" + make_uuid());
-       root->add_child("Creator")->add_child_text (metadata.creator);
-       root->add_child("VolumeCount")->add_child_text ("1");
-       root->add_child("IssueDate")->add_child_text (metadata.issue_date);
-       root->add_child("Issuer")->add_child_text (metadata.issuer);
+       root->add_child("AnnotationText")->add_child_text ("Created by " + metadata.creator);
+       if (interop) {
+               root->add_child("VolumeCount")->add_child_text ("1");
+               root->add_child("IssueDate")->add_child_text (metadata.issue_date);
+               root->add_child("Issuer")->add_child_text (metadata.issuer);
+               root->add_child("Creator")->add_child_text (metadata.creator);
+       } else {
+               root->add_child("Creator")->add_child_text (metadata.creator);
+               root->add_child("VolumeCount")->add_child_text ("1");
+               root->add_child("IssueDate")->add_child_text (metadata.issue_date);
+               root->add_child("Issuer")->add_child_text (metadata.issuer);
+       }
+               
        xmlpp::Node* asset_list = root->add_child ("AssetList");
 
        xmlpp::Node* asset = asset_list->add_child ("Asset");
index c3a674306352c02268dd9161e91685a48b055088..e1c1f86c8460bfb46d0c15822cbd29fb9e8444b5 100644 (file)
@@ -92,7 +92,7 @@ StereoPictureAsset::edit_rate_factor () const
 }
 
 void
-PictureAsset::write_to_cpl (xmlpp::Node* node) const
+PictureAsset::write_to_cpl (xmlpp::Node* node, bool interop) const
 {
        MXFAsset::write_to_cpl (node);
        
@@ -105,7 +105,11 @@ PictureAsset::write_to_cpl (xmlpp::Node* node) const
        assert (i != c.end ());
 
        (*i)->add_child ("FrameRate")->add_child_text (lexical_cast<string> (_edit_rate * edit_rate_factor ()) + " 1");
-       (*i)->add_child ("ScreenAspectRatio")->add_child_text (lexical_cast<string> (_size.width) + " " + lexical_cast<string> (_size.height));
+       if (interop) {
+               (*i)->add_child ("ScreenAspectRatio")->add_child_text (lexical_cast<string> (float (_size.width) / _size.height));
+       } else {
+               (*i)->add_child ("ScreenAspectRatio")->add_child_text (lexical_cast<string> (_size.width) + " " + lexical_cast<string> (_size.height));
+       }
 }
 
 bool
index e99b1f0ce1777072593ee6b14c10efa041f35673..d9f2fe6901b65ace36a5e83f3326a57fc8d57dab 100644 (file)
@@ -81,7 +81,7 @@ public:
                return _size;
        }
 
-       void write_to_cpl (xmlpp::Node *) const;
+       void write_to_cpl (xmlpp::Node *, bool) const;
 
 protected:     
 
index c8ea54ebca5be8a915857877d6328a00541c3243..d039f95b2b93974d9ceded487ac2bc7c82a90a54 100644 (file)
@@ -32,14 +32,14 @@ using boost::shared_ptr;
 using namespace libdcp;
 
 void
-Reel::write_to_cpl (xmlpp::Node* node) const
+Reel::write_to_cpl (xmlpp::Node* node, bool interop) const
 {
        xmlpp::Node* reel = node->add_child ("Reel");
        reel->add_child("Id")->add_child_text ("urn:uuid:" + make_uuid());
        xmlpp::Node* asset_list = reel->add_child ("AssetList");
        
        if (_main_picture) {
-               _main_picture->write_to_cpl (asset_list);
+               _main_picture->write_to_cpl (asset_list, interop);
        }
 
        if (_main_sound) {
index b4a69f78b74bfa2f23c01a03e31d17535b43466d..916c01930f14304c424ce49530beb6e26d9dc4b3 100644 (file)
@@ -63,7 +63,7 @@ public:
                return _main_subtitle;
        }
 
-       void write_to_cpl (xmlpp::Node *) const;
+       void write_to_cpl (xmlpp::Node *, bool) const;
 
        bool encrypted () const;