diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/cpl.cc | 6 | ||||
| -rw-r--r-- | src/cpl.h | 4 |
2 files changed, 8 insertions, 2 deletions
@@ -237,6 +237,8 @@ CPL::write_xml (boost::filesystem::path file, shared_ptr<const CertificateChain> 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"); @@ -337,14 +339,14 @@ CPL::maybe_write_composition_metadata_asset (xmlpp::Element* node) const 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) { @@ -323,6 +323,10 @@ private: 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; |
