auto metadata = asset_list->optional_node_child("CompositionMetadataAsset");
if (metadata) {
read_composition_metadata_asset (metadata);
+ _read_composition_metadata = true;
}
}
return _standard;
}
+ /** @return true iff this CPL was read from a file and it contained
+ * a CompositionMetadataAsset node.
+ */
+ bool read_composition_metadata() const {
+ return _read_composition_metadata;
+ }
+
static std::string static_pkl_type (Standard standard);
protected:
/* See note for _release_territory above */
std::vector<std::string> _additional_subtitle_languages;
boost::optional<std::string> _sign_language_video_language;
+ bool _read_composition_metadata = false;
std::vector<std::shared_ptr<Reel>> _reels;
notes.push_back ({VerificationNote::Type::BV21_ERROR, VerificationNote::Code::INVALID_CLOSED_CAPTION_LINE_LENGTH});
}
- if (!cpl->full_content_title_text()) {
- /* Since FullContentTitleText is assumed always to exist if there's a CompositionMetadataAsset we
- * can use it as a proxy for CompositionMetadataAsset's existence.
- */
+ if (!cpl->read_composition_metadata()) {
notes.push_back ({VerificationNote::Type::BV21_ERROR, VerificationNote::Code::MISSING_CPL_METADATA, cpl->id(), cpl->file().get()});
} else if (!cpl->version_number()) {
notes.push_back ({VerificationNote::Type::BV21_ERROR, VerificationNote::Code::MISSING_CPL_METADATA_VERSION_NUMBER, cpl->id(), cpl->file().get()});