summaryrefslogtreecommitdiff
path: root/src/cpl.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2020-08-19 16:36:09 +0200
committerCarl Hetherington <cth@carlh.net>2020-09-20 19:27:16 +0200
commitf9078ac398e0765e39f503cdc5bed406d45e0c36 (patch)
tree1de45d4abb3f85c2be4c8faa07a1c7507cd682a3 /src/cpl.cc
parent98e49fbf5e7d815654c9187db19a91bd8e575336 (diff)
Stop using XMLMetadata in CPL. It's always felt a bit clumsy, and
with the CPL metadata extension having a method like set_metadata() in CPL will be confusing.
Diffstat (limited to 'src/cpl.cc')
-rw-r--r--src/cpl.cc27
1 files changed, 15 insertions, 12 deletions
diff --git a/src/cpl.cc b/src/cpl.cc
index fe032f21..4e6bacc9 100644
--- a/src/cpl.cc
+++ b/src/cpl.cc
@@ -64,10 +64,13 @@ static string const cpl_smpte_ns = "http://www.smpte-ra.org/schemas/429-7/2006
CPL::CPL (string annotation_text, ContentKind content_kind)
/* default _content_title_text to annotation_text */
- : _content_title_text (annotation_text)
+ : _issuer ("libdcp" LIBDCP_VERSION)
+ , _creator ("libdcp" LIBDCP_VERSION)
+ , _issue_date (LocalTime().as_string())
+ , _annotation_text (annotation_text)
+ , _content_title_text (annotation_text)
, _content_kind (content_kind)
{
- _metadata.annotation_text = annotation_text;
/* default _content_version_id to a random ID and _content_version_label to
a random ID and the current time.
*/
@@ -93,10 +96,10 @@ CPL::CPL (boost::filesystem::path file)
}
_id = remove_urn_uuid (f.string_child ("Id"));
- _metadata.annotation_text = f.optional_string_child ("AnnotationText").get_value_or ("");
- _metadata.issuer = f.optional_string_child ("Issuer").get_value_or ("");
- _metadata.creator = f.optional_string_child ("Creator").get_value_or ("");
- _metadata.issue_date = f.string_child ("IssueDate");
+ _annotation_text = f.optional_string_child("AnnotationText").get_value_or("");
+ _issuer = f.optional_string_child("Issuer").get_value_or("");
+ _creator = f.optional_string_child("Creator").get_value_or("");
+ _issue_date = f.string_child ("IssueDate");
_content_title_text = f.string_child ("ContentTitleText");
_content_kind = content_kind_from_string (f.string_child ("ContentKind"));
shared_ptr<cxml::Node> content_version = f.optional_node_child ("ContentVersion");
@@ -149,10 +152,10 @@ CPL::write_xml (boost::filesystem::path file, Standard standard, shared_ptr<cons
}
root->add_child("Id")->add_child_text ("urn:uuid:" + _id);
- root->add_child("AnnotationText")->add_child_text (_metadata.annotation_text);
- 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("AnnotationText")->add_child_text (_annotation_text);
+ root->add_child("IssueDate")->add_child_text (_issue_date);
+ root->add_child("Issuer")->add_child_text (_issuer);
+ root->add_child("Creator")->add_child_text (_creator);
root->add_child("ContentTitleText")->add_child_text (_content_title_text);
root->add_child("ContentKind")->add_child_text (content_kind_to_string (_content_kind));
{
@@ -242,8 +245,8 @@ CPL::equals (shared_ptr<const Asset> other, EqualityOptions opt, NoteHandler not
return false;
}
- if (_metadata.annotation_text != other_cpl->_metadata.annotation_text && !opt.cpl_annotation_texts_can_differ) {
- string const s = "CPL: annotation texts differ: " + _metadata.annotation_text + " vs " + other_cpl->_metadata.annotation_text + "\n";
+ if (_annotation_text != other_cpl->_annotation_text && !opt.cpl_annotation_texts_can_differ) {
+ string const s = "CPL: annotation texts differ: " + _annotation_text + " vs " + other_cpl->_annotation_text + "\n";
note (DCP_ERROR, s);
return false;
}