summaryrefslogtreecommitdiff
path: root/src
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
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')
-rw-r--r--src/cpl.cc27
-rw-r--r--src/cpl.h30
2 files changed, 33 insertions, 24 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;
}
diff --git a/src/cpl.h b/src/cpl.h
index 80951088..eebb3aaf 100644
--- a/src/cpl.h
+++ b/src/cpl.h
@@ -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 &lt;AnnotationText&gt; 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 &lt;ContentTitleText&gt; 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:
- /** &lt;Issuer&gt;, &lt;Creator&gt;, &lt;IssueDate&gt; and &lt;AnnotationText&gt.
- * 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; ///< &lt;ContentTitleText&gt;
ContentKind _content_kind; ///< &lt;ContentKind&gt;
std::string _content_version_id; ///< &lt;Id&gt; in &lt;ContentVersion&gt;