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 | |
| 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.
| -rw-r--r-- | src/cpl.cc | 27 | ||||
| -rw-r--r-- | src/cpl.h | 30 | ||||
| -rw-r--r-- | test/dcp_test.cc | 10 | ||||
| -rw-r--r-- | test/encryption_test.cc | 5 | ||||
| -rw-r--r-- | test/write_subtitle_test.cc | 5 |
5 files changed, 49 insertions, 28 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> diff --git a/test/dcp_test.cc b/test/dcp_test.cc index 4ac924e0..30c5ca30 100644 --- a/test/dcp_test.cc +++ b/test/dcp_test.cc @@ -92,7 +92,10 @@ BOOST_AUTO_TEST_CASE (dcp_test2) shared_ptr<dcp::CPL> cpl (new dcp::CPL ("A Test DCP", dcp::FEATURE)); cpl->set_content_version_id ("urn:uri:81fb54df-e1bf-4647-8788-ea7ba154375b_2012-07-17T04:45:18+00:00"); cpl->set_content_version_label_text ("81fb54df-e1bf-4647-8788-ea7ba154375b_2012-07-17T04:45:18+00:00"); - cpl->set_metadata (xml_meta); + cpl->set_issuer (xml_meta.issuer); + cpl->set_creator (xml_meta.creator); + cpl->set_issue_date (xml_meta.issue_date); + cpl->set_annotation_text (xml_meta.annotation_text); shared_ptr<dcp::StereoPictureAsset> mp (new dcp::StereoPictureAsset (dcp::Fraction (24, 1), dcp::SMPTE)); mp->set_metadata (mxf_meta); @@ -193,7 +196,10 @@ BOOST_AUTO_TEST_CASE (dcp_test5) shared_ptr<dcp::CPL> cpl (new dcp::CPL ("A Test DCP", dcp::FEATURE)); cpl->set_content_version_id ("urn:uri:81fb54df-e1bf-4647-8788-ea7ba154375b_2012-07-17T04:45:18+00:00"); cpl->set_content_version_label_text ("81fb54df-e1bf-4647-8788-ea7ba154375b_2012-07-17T04:45:18+00:00"); - cpl->set_metadata (xml_meta); + cpl->set_issuer (xml_meta.issuer); + cpl->set_creator (xml_meta.creator); + cpl->set_issue_date (xml_meta.issue_date); + cpl->set_annotation_text (xml_meta.annotation_text); shared_ptr<dcp::MonoPictureAsset> mp (new dcp::MonoPictureAsset (dcp::Fraction (24, 1), dcp::SMPTE)); mp->set_metadata (mxf_meta); diff --git a/test/encryption_test.cc b/test/encryption_test.cc index 2af80270..4b9e525e 100644 --- a/test/encryption_test.cc +++ b/test/encryption_test.cc @@ -133,7 +133,10 @@ BOOST_AUTO_TEST_CASE (encryption_test) ))); cpl->set_content_version_id ("urn:uri:81fb54df-e1bf-4647-8788-ea7ba154375b_2012-07-17T04:45:18+00:00"); cpl->set_content_version_label_text ("81fb54df-e1bf-4647-8788-ea7ba154375b_2012-07-17T04:45:18+00:00"); - cpl->set_metadata (xml_metadata); + cpl->set_issuer (xml_metadata.issuer); + cpl->set_creator (xml_metadata.creator); + cpl->set_issue_date (xml_metadata.issue_date); + cpl->set_annotation_text (xml_metadata.annotation_text); d.add (cpl); diff --git a/test/write_subtitle_test.cc b/test/write_subtitle_test.cc index dd51d919..266a1039 100644 --- a/test/write_subtitle_test.cc +++ b/test/write_subtitle_test.cc @@ -369,7 +369,10 @@ BOOST_AUTO_TEST_CASE (write_interop_subtitle_test3) shared_ptr<dcp::CPL> cpl (new dcp::CPL ("My film", dcp::FEATURE)); cpl->add (reel); - cpl->set_metadata (xml_meta); + cpl->set_issuer (xml_meta.issuer); + cpl->set_creator (xml_meta.creator); + cpl->set_issue_date (xml_meta.issue_date); + cpl->set_annotation_text (xml_meta.annotation_text); cpl->set_content_version_label_text ("foo"); dcp::DCP dcp ("build/test/write_interop_subtitle_test3"); |
