diff options
| author | Carl Hetherington <cth@carlh.net> | 2021-06-02 00:33:01 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2021-06-02 00:33:01 +0200 |
| commit | 3c59d07d90e85355e320ed6d30efa30242ed6c31 (patch) | |
| tree | c7ce8819deeda9afbba5a75726e425d8b5f3e705 /src | |
| parent | dd672d926e3b88cbe42b0778fda397d9e858b592 (diff) | |
Pass through CompositionMetadataAsset correctly.
We weren't saving Id, and were not quite handling FullContentText
correctly.
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; |
