void
CPL::read_composition_metadata_asset (cxml::ConstNodePtr node)
{
+ _cpl_metadata_id = remove_urn_uuid(node->string_child("Id"));
+
auto fctt = node->node_child("FullContentTitleText");
_full_content_title_text = fctt->content();
_full_content_title_text_language = fctt->optional_string_attribute("language");
auto meta = node->add_child("meta:CompositionMetadataAsset");
meta->set_namespace_declaration (cpl_metadata_ns, "meta");
- meta->add_child("Id")->add_child_text("urn:uuid:" + make_uuid());
+ meta->add_child("Id")->add_child_text("urn:uuid:" + _cpl_metadata_id);
auto mp = _reels.front()->main_picture();
meta->add_child("EditRate")->add_child_text(mp->edit_rate().as_string());
meta->add_child("IntrinsicDuration")->add_child_text(raw_convert<string>(mp->intrinsic_duration()));
auto fctt = meta->add_child("FullContentTitleText", "meta");
- if (_full_content_title_text) {
+ if (_full_content_title_text && !_full_content_title_text->empty()) {
fctt->add_child_text (*_full_content_title_text);
}
if (_full_content_title_text_language) {
ContentKind _content_kind; ///< <ContentKind>
std::vector<ContentVersion> _content_versions;
std::vector<Rating> _ratings;
+ /** ID for CompositionMetadataAsset tag; either a random one, ready for writing a new tag,
+ * or the one read in from the existing CPL.
+ */
+ std::string _cpl_metadata_id = make_uuid();
/** Human-readable name of the composition, without any metadata (i.e. no -FTR-EN-XX- etc.) */
boost::optional<std::string> _full_content_title_text;
boost::optional<std::string> _full_content_title_text_language;
}
+BOOST_AUTO_TEST_CASE (check_cpls_unchanged_after_combine)
+{
+ boost::filesystem::path in = "build/test/combine_one_dcp_with_composition_metadata_in";
+ boost::filesystem::path out = "build/test/combine_one_dcp_with_composition_metadata_out";
+ auto dcp = make_simple (in);
+ dcp->write_xml ();
+
+ dcp::combine ({in}, out);
+
+ BOOST_REQUIRE_EQUAL (dcp->cpls().size(), 1U);
+ auto cpl = dcp->cpls()[0]->file();
+ BOOST_REQUIRE (cpl);
+ check_file (*cpl, out / cpl->filename());
+}
+
+
/* XXX: same CPL names */
/* XXX: Interop PNG subs */