diff options
| author | Carl Hetherington <cth@carlh.net> | 2020-08-19 16:36:09 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2020-09-20 19:27:16 +0200 |
| commit | f9078ac398e0765e39f503cdc5bed406d45e0c36 (patch) | |
| tree | 1de45d4abb3f85c2be4c8faa07a1c7507cd682a3 /src | |
| parent | 98e49fbf5e7d815654c9187db19a91bd8e575336 (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')
| -rw-r--r-- | src/cpl.cc | 27 | ||||
| -rw-r--r-- | src/cpl.h | 30 |
2 files changed, 33 insertions, 24 deletions
@@ -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; } @@ -42,7 +42,6 @@ #include "certificate.h" #include "key.h" #include "asset.h" -#include "metadata.h" #include <boost/shared_ptr.hpp> #include <boost/function.hpp> #include <boost/optional.hpp> @@ -53,7 +52,6 @@ namespace dcp { class ReelMXF; class Reel; -class XMLMetadata; class MXFMetadata; class CertificateChain; class DecryptedKDM; @@ -78,11 +76,23 @@ public: /** @return contents of the <AnnotationText> node */ std::string annotation_text () const { - return _metadata.annotation_text; + return _annotation_text; + } + + void set_issuer (std::string issuer) { + _issuer = issuer; + } + + void set_creator (std::string creator) { + _creator = creator; + } + + void set_issue_date (std::string issue_date) { + _issue_date = issue_date; } void set_annotation_text (std::string at) { - _metadata.annotation_text = at; + _annotation_text = at; } /** @return contents of the <ContentTitleText> node */ @@ -123,10 +133,6 @@ public: bool encrypted () const; - void set_metadata (XMLMetadata m) { - _metadata = m; - } - void write_xml ( boost::filesystem::path file, Standard standard, @@ -160,10 +166,10 @@ protected: std::string pkl_type (Standard standard) const; private: - /** <Issuer>, <Creator>, <IssueDate> and <AnnotationText>. - * These are grouped because they occur together in a few places. - */ - XMLMetadata _metadata; + std::string _issuer; + std::string _creator; + std::string _issue_date; + std::string _annotation_text; std::string _content_title_text; ///< <ContentTitleText> ContentKind _content_kind; ///< <ContentKind> std::string _content_version_id; ///< <Id> in <ContentVersion> |
