From 2f2643b6ddc36d6efcf4d41913ec4f711750e9c4 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Tue, 26 Jan 2021 21:52:21 +0100 Subject: Rename ReelMXF -> ReelFileAsset. --- src/cpl.cc | 52 ++++++--------- src/cpl.h | 8 +-- src/dcp.cc | 4 +- src/decrypted_kdm.cc | 8 +-- src/decrypted_kdm.h | 4 +- src/reel_atmos_asset.cc | 4 +- src/reel_atmos_asset.h | 4 +- src/reel_closed_caption_asset.cc | 4 +- src/reel_closed_caption_asset.h | 4 +- src/reel_file_asset.cc | 101 +++++++++++++++++++++++++++++ src/reel_file_asset.h | 137 +++++++++++++++++++++++++++++++++++++++ src/reel_mxf.cc | 101 ----------------------------- src/reel_mxf.h | 137 --------------------------------------- src/reel_picture_asset.cc | 4 +- src/reel_picture_asset.h | 4 +- src/reel_sound_asset.cc | 4 +- src/reel_sound_asset.h | 4 +- src/reel_subtitle_asset.cc | 4 +- src/reel_subtitle_asset.h | 4 +- src/verify.cc | 30 ++++----- src/wscript | 2 +- 21 files changed, 306 insertions(+), 318 deletions(-) create mode 100644 src/reel_file_asset.cc create mode 100644 src/reel_file_asset.h delete mode 100644 src/reel_mxf.cc delete mode 100644 src/reel_mxf.h (limited to 'src') diff --git a/src/cpl.cc b/src/cpl.cc index 5f8d8955..c528af31 100644 --- a/src/cpl.cc +++ b/src/cpl.cc @@ -491,55 +491,43 @@ CPL::maybe_write_composition_metadata_asset (xmlpp::Element* node) const } -vector> -CPL::reel_mxfs () +template +void +add_file_assets (vector>& assets, vector> reels) { - vector> c; - - for (auto i: _reels) { + for (auto i: reels) { if (i->main_picture ()) { - c.push_back (i->main_picture()); + assets.push_back (i->main_picture()); } if (i->main_sound ()) { - c.push_back (i->main_sound()); + assets.push_back (i->main_sound()); } if (i->main_subtitle ()) { - c.push_back (i->main_subtitle()); + assets.push_back (i->main_subtitle()); } for (auto j: i->closed_captions()) { - c.push_back (j); + assets.push_back (j); } if (i->atmos ()) { - c.push_back (i->atmos()); + assets.push_back (i->atmos()); } } +} + +vector> +CPL::reel_file_assets () +{ + vector> c; + add_file_assets (c, _reels); return c; } -vector> -CPL::reel_mxfs () const +vector> +CPL::reel_file_assets () const { - vector> c; - - for (auto i: _reels) { - if (i->main_picture ()) { - c.push_back (i->main_picture()); - } - if (i->main_sound ()) { - c.push_back (i->main_sound()); - } - if (i->main_subtitle ()) { - c.push_back (i->main_subtitle()); - } - for (auto j: i->closed_captions()) { - c.push_back (j); - } - if (i->atmos ()) { - c.push_back (i->atmos()); - } - } - + vector> c; + add_file_assets (c, _reels); return c; } diff --git a/src/cpl.h b/src/cpl.h index 78d3d907..72818fb1 100644 --- a/src/cpl.h +++ b/src/cpl.h @@ -59,7 +59,7 @@ struct verify_invalid_language3; namespace dcp { -class ReelMXF; +class ReelFileAsset; class Reel; class MXFMetadata; class CertificateChain; @@ -99,9 +99,9 @@ public: return _reels; } - /** @return the ReelMXFs in this CPL in all reels */ - std::vector> reel_mxfs () const; - std::vector> reel_mxfs (); + /** @return the ReelFileAssets in this CPL in all reels */ + std::vector> reel_file_assets () const; + std::vector> reel_file_assets (); /** @return true if we have any encrypted content */ bool any_encrypted () const; diff --git a/src/dcp.cc b/src/dcp.cc index 9ccc6eef..df1d531b 100644 --- a/src/dcp.cc +++ b/src/dcp.cc @@ -261,7 +261,7 @@ DCP::read (vector* notes, bool ignore_incorrect_picture_m /* While we've got the ASSETMAP lets look and see if this DCP refers to things that are not in its ASSETMAP */ if (notes) { for (auto i: cpls()) { - for (auto j: i->reel_mxfs()) { + for (auto j: i->reel_file_assets()) { if (!j->asset_ref().resolved() && paths.find(j->asset_ref().id()) == paths.end()) { notes->push_back (VerificationNote(VerificationNote::Type::WARNING, VerificationNote::Code::EXTERNAL_ASSET, j->asset_ref().id())); } @@ -519,7 +519,7 @@ DCP::assets (bool ignore_unresolved) const vector> assets; for (auto i: cpls()) { assets.push_back (i); - for (auto j: i->reel_mxfs()) { + for (auto j: i->reel_file_assets()) { if (ignore_unresolved && !j->asset_ref().resolved()) { continue; } diff --git a/src/decrypted_kdm.cc b/src/decrypted_kdm.cc index 174efb1b..e734d407 100644 --- a/src/decrypted_kdm.cc +++ b/src/decrypted_kdm.cc @@ -40,7 +40,7 @@ #include "decrypted_kdm.h" #include "decrypted_kdm_key.h" #include "encrypted_kdm.h" -#include "reel_mxf.h" +#include "reel_file_asset.h" #include "reel_asset.h" #include "util.h" #include "exceptions.h" @@ -251,7 +251,7 @@ DecryptedKDM::DecryptedKDM ( DecryptedKDM::DecryptedKDM ( string cpl_id, - map, Key> keys, + map, Key> keys, LocalTime not_valid_before, LocalTime not_valid_after, string annotation_text, @@ -264,7 +264,7 @@ DecryptedKDM::DecryptedKDM ( , _content_title_text (content_title_text) , _issue_date (issue_date) { - for (map, Key>::const_iterator i = keys.begin(); i != keys.end(); ++i) { + for (map, Key>::const_iterator i = keys.begin(); i != keys.end(); ++i) { add_key (i->first->key_type(), i->first->key_id().get(), i->second, cpl_id, Standard::SMPTE); } } @@ -287,7 +287,7 @@ DecryptedKDM::DecryptedKDM ( { /* Create DecryptedKDMKey objects for each encryptable asset */ bool did_one = false; - for (auto i: cpl->reel_mxfs()) { + for (auto i: cpl->reel_file_assets()) { if (i->key_id()) { add_key (i->key_type(), i->key_id().get(), key, cpl->id(), Standard::SMPTE); did_one = true; diff --git a/src/decrypted_kdm.h b/src/decrypted_kdm.h index 7bc9a217..6bdd9fcd 100644 --- a/src/decrypted_kdm.h +++ b/src/decrypted_kdm.h @@ -60,7 +60,7 @@ class DecryptedKDMKey; class EncryptedKDM; class CertificateChain; class CPL; -class ReelMXF; +class ReelFileAsset; /** @class DecryptedKDM @@ -99,7 +99,7 @@ public: */ DecryptedKDM ( std::string cpl_id, - std::map, Key> keys, + std::map, Key> keys, LocalTime not_valid_before, LocalTime not_valid_after, std::string annotation_text, diff --git a/src/reel_atmos_asset.cc b/src/reel_atmos_asset.cc index d9e290a9..760e4211 100644 --- a/src/reel_atmos_asset.cc +++ b/src/reel_atmos_asset.cc @@ -52,7 +52,7 @@ using namespace dcp; ReelAtmosAsset::ReelAtmosAsset (std::shared_ptr asset, int64_t entry_point) : ReelAsset (asset->id(), asset->edit_rate(), asset->intrinsic_duration(), entry_point) - , ReelMXF (asset, asset->key_id()) + , ReelFileAsset (asset, asset->key_id()) { } @@ -60,7 +60,7 @@ ReelAtmosAsset::ReelAtmosAsset (std::shared_ptr asset, int64_t entry ReelAtmosAsset::ReelAtmosAsset (std::shared_ptr node) : ReelAsset (node) - , ReelMXF (node) + , ReelFileAsset (node) { node->ignore_child ("DataType"); node->done (); diff --git a/src/reel_atmos_asset.h b/src/reel_atmos_asset.h index 0477504c..d9f4a8e3 100644 --- a/src/reel_atmos_asset.h +++ b/src/reel_atmos_asset.h @@ -43,7 +43,7 @@ #include "reel_asset.h" #include "atmos_asset.h" -#include "reel_mxf.h" +#include "reel_file_asset.h" namespace dcp { @@ -55,7 +55,7 @@ class AtmosAsset; /** @class ReelAtmosAsset * @brief Part of a Reel's description which refers to a Atmos MXF */ -class ReelAtmosAsset : public ReelAsset, public ReelMXF +class ReelAtmosAsset : public ReelAsset, public ReelFileAsset { public: ReelAtmosAsset (std::shared_ptr asset, int64_t entry_point); diff --git a/src/reel_closed_caption_asset.cc b/src/reel_closed_caption_asset.cc index 3369fdd9..a57a0670 100644 --- a/src/reel_closed_caption_asset.cc +++ b/src/reel_closed_caption_asset.cc @@ -55,7 +55,7 @@ using namespace dcp; ReelClosedCaptionAsset::ReelClosedCaptionAsset (std::shared_ptr asset, Fraction edit_rate, int64_t intrinsic_duration, int64_t entry_point) : ReelAsset (asset->id(), edit_rate, intrinsic_duration, entry_point) - , ReelMXF (asset, dynamic_pointer_cast(asset) ? dynamic_pointer_cast(asset)->key_id() : optional()) + , ReelFileAsset (asset, dynamic_pointer_cast(asset) ? dynamic_pointer_cast(asset)->key_id() : optional()) { } @@ -63,7 +63,7 @@ ReelClosedCaptionAsset::ReelClosedCaptionAsset (std::shared_ptr a ReelClosedCaptionAsset::ReelClosedCaptionAsset (std::shared_ptr node) : ReelAsset (node) - , ReelMXF (node) + , ReelFileAsset (node) { _language = node->optional_string_child ("Language"); node->done (); diff --git a/src/reel_closed_caption_asset.h b/src/reel_closed_caption_asset.h index 0aad8740..12fc5e66 100644 --- a/src/reel_closed_caption_asset.h +++ b/src/reel_closed_caption_asset.h @@ -44,7 +44,7 @@ #include "language_tag.h" #include "subtitle_asset.h" #include "reel_asset.h" -#include "reel_mxf.h" +#include "reel_file_asset.h" struct verify_invalid_language2; @@ -59,7 +59,7 @@ class SubtitleAsset; /** @class ReelClosedCaptionAsset * @brief Part of a Reel's description which refers to a closed caption XML/MXF file */ -class ReelClosedCaptionAsset : public ReelAsset, public ReelMXF +class ReelClosedCaptionAsset : public ReelAsset, public ReelFileAsset { public: ReelClosedCaptionAsset (std::shared_ptr asset, Fraction edit_rate, int64_t instrinsic_duration, int64_t entry_point); diff --git a/src/reel_file_asset.cc b/src/reel_file_asset.cc new file mode 100644 index 00000000..40cff83f --- /dev/null +++ b/src/reel_file_asset.cc @@ -0,0 +1,101 @@ +/* + Copyright (C) 2012-2021 Carl Hetherington + + This file is part of libdcp. + + libdcp is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + libdcp is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with libdcp. If not, see . + + In addition, as a special exception, the copyright holders give + permission to link the code of portions of this program with the + OpenSSL library under certain conditions as described in each + individual source file, and distribute linked combinations + including the two. + + You must obey the GNU General Public License in all respects + for all of the code used other than OpenSSL. If you modify + file(s) with this exception, you may extend this exception to your + version of the file(s), but you are not obligated to do so. If you + do not wish to do so, delete this exception statement from your + version. If you delete this exception statement from all source + files in the program, then also delete it here. +*/ + + +/** @file src/reel_mxf.cc + * @brief ReelFileAsset class + */ + + +#include "reel_file_asset.h" +#include "util.h" +#include "mxf.h" +#include "dcp_assert.h" +#include +#include + + +using std::string; +using std::shared_ptr; +using boost::optional; +using namespace dcp; + + +ReelFileAsset::ReelFileAsset (shared_ptr asset, optional key_id) + : _asset_ref (asset) + , _key_id (key_id) + , _hash (asset->hash()) +{ + +} + + +ReelFileAsset::ReelFileAsset (shared_ptr node) + : _asset_ref (remove_urn_uuid(node->string_child("Id"))) + , _key_id (node->optional_string_child ("KeyId")) + , _hash (node->optional_string_child ("Hash")) +{ + if (_key_id) { + _key_id = remove_urn_uuid (*_key_id); + } +} + + +bool +ReelFileAsset::mxf_equals (shared_ptr other, EqualityOptions opt, NoteHandler note) const +{ + if (_hash != other->_hash) { + if (!opt.reel_hashes_can_differ) { + note (NoteType::ERROR, "Reel: hashes differ"); + return false; + } else { + note (NoteType::NOTE, "Reel: hashes differ"); + } + } + + if (_asset_ref.resolved() && other->_asset_ref.resolved()) { + return _asset_ref->equals (other->_asset_ref.asset(), opt, note); + } + + return true; +} + + +void +ReelFileAsset::write_to_cpl_mxf (xmlpp::Node* node) const +{ + if (key_id ()) { + auto hash = find_child (node, "Hash"); + node->add_child_before(hash, "KeyId")->add_child_text("urn:uuid:" + key_id().get()); + } +} diff --git a/src/reel_file_asset.h b/src/reel_file_asset.h new file mode 100644 index 00000000..9cf02e21 --- /dev/null +++ b/src/reel_file_asset.h @@ -0,0 +1,137 @@ +/* + Copyright (C) 2012-2021 Carl Hetherington + + This file is part of libdcp. + + libdcp is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + libdcp is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with libdcp. If not, see . + + In addition, as a special exception, the copyright holders give + permission to link the code of portions of this program with the + OpenSSL library under certain conditions as described in each + individual source file, and distribute linked combinations + including the two. + + You must obey the GNU General Public License in all respects + for all of the code used other than OpenSSL. If you modify + file(s) with this exception, you may extend this exception to your + version of the file(s), but you are not obligated to do so. If you + do not wish to do so, delete this exception statement from your + version. If you delete this exception statement from all source + files in the program, then also delete it here. +*/ + + +/** @file src/reel_file_asset.h + * @brief ReelFileAsset class + */ + + +#ifndef LIBDCP_REEL_MXF_H +#define LIBDCP_REEL_MXF_H + + +#include "ref.h" +#include +#include +#include + + +namespace cxml { + class Node; +} + + +namespace dcp { + + +/** @class ReelFileAsset + * @brief Part of a Reel's description which refers to an asset which can be encrypted + */ +class ReelFileAsset +{ +public: + explicit ReelFileAsset (std::shared_ptr asset, boost::optional key_id); + explicit ReelFileAsset (std::shared_ptr); + virtual ~ReelFileAsset () {} + + /** @return the 4-character key type for this MXF (MDIK, MDAK, etc.) */ + virtual std::string key_type () const = 0; + + /** @return a Ref to our actual asset */ + Ref const & asset_ref () const { + return _asset_ref; + } + + /** @return a Ref to our actual asset */ + Ref & asset_ref () { + return _asset_ref; + } + + /** @return the asset's hash, if this ReelFileAsset has been created from one, + * otherwise the hash written to the CPL for this asset (if present). + */ + boost::optional hash () const { + return _hash; + } + + void set_hash (std::string h) { + _hash = h; + } + + /** @return true if a KeyId is specified for this asset, implying + * that its content is encrypted. + */ + bool encrypted () const { + return static_cast(_key_id); + } + + /** @return Key ID to describe the key that encrypts this asset's + * content, if there is one. + */ + boost::optional key_id () const { + return _key_id; + } + + bool mxf_equals (std::shared_ptr other, EqualityOptions opt, NoteHandler note) const; + +protected: + + template + std::shared_ptr asset_of_type () const { + return std::dynamic_pointer_cast (_asset_ref.asset ()); + } + + template + std::shared_ptr asset_of_type () { + return std::dynamic_pointer_cast (_asset_ref.asset ()); + } + + void write_to_cpl_mxf (xmlpp::Node* node) const; + + /** Reference to the asset (MXF or XML file) that this reel entry + * applies to. + */ + Ref _asset_ref; + +private: + boost::optional _key_id; ///< The <KeyId> from the reel's entry for this asset, if there is one + /** Either our asset's computed hash or the hash read in from the CPL, if it's present */ + boost::optional _hash; +}; + + +} + + +#endif diff --git a/src/reel_mxf.cc b/src/reel_mxf.cc deleted file mode 100644 index 1e7d9474..00000000 --- a/src/reel_mxf.cc +++ /dev/null @@ -1,101 +0,0 @@ -/* - Copyright (C) 2012-2021 Carl Hetherington - - This file is part of libdcp. - - libdcp is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - libdcp is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with libdcp. If not, see . - - In addition, as a special exception, the copyright holders give - permission to link the code of portions of this program with the - OpenSSL library under certain conditions as described in each - individual source file, and distribute linked combinations - including the two. - - You must obey the GNU General Public License in all respects - for all of the code used other than OpenSSL. If you modify - file(s) with this exception, you may extend this exception to your - version of the file(s), but you are not obligated to do so. If you - do not wish to do so, delete this exception statement from your - version. If you delete this exception statement from all source - files in the program, then also delete it here. -*/ - - -/** @file src/reel_mxf.cc - * @brief ReelMXF class - */ - - -#include "reel_mxf.h" -#include "util.h" -#include "mxf.h" -#include "dcp_assert.h" -#include -#include - - -using std::string; -using std::shared_ptr; -using boost::optional; -using namespace dcp; - - -ReelMXF::ReelMXF (shared_ptr asset, optional key_id) - : _asset_ref (asset) - , _key_id (key_id) - , _hash (asset->hash()) -{ - -} - - -ReelMXF::ReelMXF (shared_ptr node) - : _asset_ref (remove_urn_uuid(node->string_child("Id"))) - , _key_id (node->optional_string_child ("KeyId")) - , _hash (node->optional_string_child ("Hash")) -{ - if (_key_id) { - _key_id = remove_urn_uuid (*_key_id); - } -} - - -bool -ReelMXF::mxf_equals (shared_ptr other, EqualityOptions opt, NoteHandler note) const -{ - if (_hash != other->_hash) { - if (!opt.reel_hashes_can_differ) { - note (NoteType::ERROR, "Reel: hashes differ"); - return false; - } else { - note (NoteType::NOTE, "Reel: hashes differ"); - } - } - - if (_asset_ref.resolved() && other->_asset_ref.resolved()) { - return _asset_ref->equals (other->_asset_ref.asset(), opt, note); - } - - return true; -} - - -void -ReelMXF::write_to_cpl_mxf (xmlpp::Node* node) const -{ - if (key_id ()) { - auto hash = find_child (node, "Hash"); - node->add_child_before(hash, "KeyId")->add_child_text("urn:uuid:" + key_id().get()); - } -} diff --git a/src/reel_mxf.h b/src/reel_mxf.h deleted file mode 100644 index 099ddfeb..00000000 --- a/src/reel_mxf.h +++ /dev/null @@ -1,137 +0,0 @@ -/* - Copyright (C) 2012-2021 Carl Hetherington - - This file is part of libdcp. - - libdcp is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - libdcp is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with libdcp. If not, see . - - In addition, as a special exception, the copyright holders give - permission to link the code of portions of this program with the - OpenSSL library under certain conditions as described in each - individual source file, and distribute linked combinations - including the two. - - You must obey the GNU General Public License in all respects - for all of the code used other than OpenSSL. If you modify - file(s) with this exception, you may extend this exception to your - version of the file(s), but you are not obligated to do so. If you - do not wish to do so, delete this exception statement from your - version. If you delete this exception statement from all source - files in the program, then also delete it here. -*/ - - -/** @file src/reel_mxf.h - * @brief ReelMXF class - */ - - -#ifndef LIBDCP_REEL_MXF_H -#define LIBDCP_REEL_MXF_H - - -#include "ref.h" -#include -#include -#include - - -namespace cxml { - class Node; -} - - -namespace dcp { - - -/** @class ReelMXF - * @brief Part of a Reel's description which refers to an asset which can be encrypted - */ -class ReelMXF -{ -public: - explicit ReelMXF (std::shared_ptr asset, boost::optional key_id); - explicit ReelMXF (std::shared_ptr); - virtual ~ReelMXF () {} - - /** @return the 4-character key type for this MXF (MDIK, MDAK, etc.) */ - virtual std::string key_type () const = 0; - - /** @return a Ref to our actual asset */ - Ref const & asset_ref () const { - return _asset_ref; - } - - /** @return a Ref to our actual asset */ - Ref & asset_ref () { - return _asset_ref; - } - - /** @return the asset's hash, if this ReelMXF has been created from one, - * otherwise the hash written to the CPL for this asset (if present). - */ - boost::optional hash () const { - return _hash; - } - - void set_hash (std::string h) { - _hash = h; - } - - /** @return true if a KeyId is specified for this asset, implying - * that its content is encrypted. - */ - bool encrypted () const { - return static_cast(_key_id); - } - - /** @return Key ID to describe the key that encrypts this asset's - * content, if there is one. - */ - boost::optional key_id () const { - return _key_id; - } - - bool mxf_equals (std::shared_ptr other, EqualityOptions opt, NoteHandler note) const; - -protected: - - template - std::shared_ptr asset_of_type () const { - return std::dynamic_pointer_cast (_asset_ref.asset ()); - } - - template - std::shared_ptr asset_of_type () { - return std::dynamic_pointer_cast (_asset_ref.asset ()); - } - - void write_to_cpl_mxf (xmlpp::Node* node) const; - - /** Reference to the asset (MXF or XML file) that this reel entry - * applies to. - */ - Ref _asset_ref; - -private: - boost::optional _key_id; ///< The <KeyId> from the reel's entry for this asset, if there is one - /** Either our asset's computed hash or the hash read in from the CPL, if it's present */ - boost::optional _hash; -}; - - -} - - -#endif diff --git a/src/reel_picture_asset.cc b/src/reel_picture_asset.cc index 8cdb9f44..6e1c5311 100644 --- a/src/reel_picture_asset.cc +++ b/src/reel_picture_asset.cc @@ -58,7 +58,7 @@ using namespace dcp; ReelPictureAsset::ReelPictureAsset (shared_ptr asset, int64_t entry_point) : ReelAsset (asset->id(), asset->edit_rate(), asset->intrinsic_duration(), entry_point) - , ReelMXF (asset, asset->key_id()) + , ReelFileAsset (asset, asset->key_id()) , _frame_rate (asset->frame_rate ()) , _screen_aspect_ratio (asset->screen_aspect_ratio ()) { @@ -68,7 +68,7 @@ ReelPictureAsset::ReelPictureAsset (shared_ptr asset, int64_t entr ReelPictureAsset::ReelPictureAsset (shared_ptr node) : ReelAsset (node) - , ReelMXF (node) + , ReelFileAsset (node) { _frame_rate = Fraction (node->string_child ("FrameRate")); try { diff --git a/src/reel_picture_asset.h b/src/reel_picture_asset.h index 12c23717..961cde9c 100644 --- a/src/reel_picture_asset.h +++ b/src/reel_picture_asset.h @@ -41,7 +41,7 @@ #define LIBDCP_REEL_PICTURE_ASSET_H -#include "reel_mxf.h" +#include "reel_file_asset.h" #include "reel_asset.h" #include "picture_asset.h" @@ -52,7 +52,7 @@ namespace dcp { /** @class ReelPictureAsset * @brief Part of a Reel's description which refers to a picture asset */ -class ReelPictureAsset : public ReelAsset, public ReelMXF +class ReelPictureAsset : public ReelAsset, public ReelFileAsset { public: ReelPictureAsset (std::shared_ptr asset, int64_t entry_point); diff --git a/src/reel_sound_asset.cc b/src/reel_sound_asset.cc index d3cc41d1..539ce7b7 100644 --- a/src/reel_sound_asset.cc +++ b/src/reel_sound_asset.cc @@ -50,7 +50,7 @@ using namespace dcp; ReelSoundAsset::ReelSoundAsset (shared_ptr asset, int64_t entry_point) : ReelAsset (asset->id(), asset->edit_rate(), asset->intrinsic_duration(), entry_point) - , ReelMXF (asset, asset->key_id()) + , ReelFileAsset (asset, asset->key_id()) { } @@ -58,7 +58,7 @@ ReelSoundAsset::ReelSoundAsset (shared_ptr asset, int64_t entry_poin ReelSoundAsset::ReelSoundAsset (shared_ptr node) : ReelAsset (node) - , ReelMXF (node) + , ReelFileAsset (node) { node->ignore_child ("Language"); node->done (); diff --git a/src/reel_sound_asset.h b/src/reel_sound_asset.h index 931bbc1e..e6143f11 100644 --- a/src/reel_sound_asset.h +++ b/src/reel_sound_asset.h @@ -37,7 +37,7 @@ */ -#include "reel_mxf.h" +#include "reel_file_asset.h" #include "reel_asset.h" #include "sound_asset.h" #include @@ -50,7 +50,7 @@ namespace dcp { /** @class ReelSoundAsset * @brief Part of a Reel's description which refers to a sound asset */ -class ReelSoundAsset : public ReelAsset, public ReelMXF +class ReelSoundAsset : public ReelAsset, public ReelFileAsset { public: ReelSoundAsset (std::shared_ptr content, int64_t entry_point); diff --git a/src/reel_subtitle_asset.cc b/src/reel_subtitle_asset.cc index 3a531962..e75b918a 100644 --- a/src/reel_subtitle_asset.cc +++ b/src/reel_subtitle_asset.cc @@ -53,7 +53,7 @@ using namespace dcp; ReelSubtitleAsset::ReelSubtitleAsset (std::shared_ptr asset, Fraction edit_rate, int64_t intrinsic_duration, int64_t entry_point) : ReelAsset (asset->id(), edit_rate, intrinsic_duration, entry_point) - , ReelMXF (asset, dynamic_pointer_cast(asset) ? dynamic_pointer_cast(asset)->key_id() : optional()) + , ReelFileAsset (asset, dynamic_pointer_cast(asset) ? dynamic_pointer_cast(asset)->key_id() : optional()) { } @@ -61,7 +61,7 @@ ReelSubtitleAsset::ReelSubtitleAsset (std::shared_ptr asset, Frac ReelSubtitleAsset::ReelSubtitleAsset (std::shared_ptr node) : ReelAsset (node) - , ReelMXF (node) + , ReelFileAsset (node) { _language = node->optional_string_child("Language"); node->done (); diff --git a/src/reel_subtitle_asset.h b/src/reel_subtitle_asset.h index 93124140..67b0f844 100644 --- a/src/reel_subtitle_asset.h +++ b/src/reel_subtitle_asset.h @@ -43,7 +43,7 @@ #include "language_tag.h" #include "reel_asset.h" -#include "reel_mxf.h" +#include "reel_file_asset.h" #include "subtitle_asset.h" @@ -59,7 +59,7 @@ class SubtitleAsset; /** @class ReelSubtitleAsset * @brief Part of a Reel's description which refers to a subtitle XML/MXF file */ -class ReelSubtitleAsset : public ReelAsset, public ReelMXF +class ReelSubtitleAsset : public ReelAsset, public ReelFileAsset { public: ReelSubtitleAsset (std::shared_ptr asset, Fraction edit_rate, int64_t intrinsic_duration, int64_t entry_point); diff --git a/src/verify.cc b/src/verify.cc index 3cb61bad..e45c381e 100644 --- a/src/verify.cc +++ b/src/verify.cc @@ -376,19 +376,19 @@ enum class VerifyAssetResult { static VerifyAssetResult -verify_asset (shared_ptr dcp, shared_ptr reel_mxf, function progress) +verify_asset (shared_ptr dcp, shared_ptr reel_file_asset, function progress) { - auto const actual_hash = reel_mxf->asset_ref()->hash(progress); + auto const actual_hash = reel_file_asset->asset_ref()->hash(progress); auto pkls = dcp->pkls(); /* We've read this DCP in so it must have at least one PKL */ DCP_ASSERT (!pkls.empty()); - auto asset = reel_mxf->asset_ref().asset(); + auto asset = reel_file_asset->asset_ref().asset(); optional pkl_hash; for (auto i: pkls) { - pkl_hash = i->hash (reel_mxf->asset_ref()->id()); + pkl_hash = i->hash (reel_file_asset->asset_ref()->id()); if (pkl_hash) { break; } @@ -396,7 +396,7 @@ verify_asset (shared_ptr dcp, shared_ptr reel_mxf, fun DCP_ASSERT (pkl_hash); - auto cpl_hash = reel_mxf->hash(); + auto cpl_hash = reel_file_asset->hash(); if (cpl_hash && *cpl_hash != *pkl_hash) { return VerifyAssetResult::CPL_PKL_DIFFER; } @@ -443,9 +443,9 @@ biggest_frame_size (shared_ptr frame) template optional -verify_picture_asset_type (shared_ptr reel_mxf, function progress) +verify_picture_asset_type (shared_ptr reel_file_asset, function progress) { - auto asset = dynamic_pointer_cast(reel_mxf->asset_ref().asset()); + auto asset = dynamic_pointer_cast(reel_file_asset->asset_ref().asset()); if (!asset) { return optional(); } @@ -472,11 +472,11 @@ verify_picture_asset_type (shared_ptr reel_mxf, function reel_mxf, function progress) +verify_picture_asset (shared_ptr reel_file_asset, function progress) { - auto r = verify_picture_asset_type(reel_mxf, progress); + auto r = verify_picture_asset_type(reel_file_asset, progress); if (!r) { - r = verify_picture_asset_type(reel_mxf, progress); + r = verify_picture_asset_type(reel_file_asset, progress); } DCP_ASSERT (r); @@ -1022,11 +1022,11 @@ pkl_has_encrypted_assets (shared_ptr dcp, shared_ptr pkl) { vector encrypted; for (auto i: dcp->cpls()) { - for (auto j: i->reel_mxfs()) { + for (auto j: i->reel_file_assets()) { if (j->asset_ref().resolved()) { /* It's a bit surprising / broken but Interop subtitle assets are represented - * in reels by ReelSubtitleAsset which inherits ReelMXF, so it's possible for - * ReelMXFs to have assets which are not MXFs. + * in reels by ReelSubtitleAsset which inherits ReelFileAsset, so it's possible for + * ReelFileAssets to have assets which are not MXFs. */ if (auto asset = dynamic_pointer_cast(j->asset_ref().asset())) { if (asset->encrypted()) { @@ -1166,8 +1166,8 @@ dcp::verify ( if ((i->intrinsic_duration() * i->edit_rate().denominator / i->edit_rate().numerator) < 1) { notes.push_back ({VerificationNote::Type::ERROR, VerificationNote::Code::INVALID_INTRINSIC_DURATION, i->id()}); } - auto mxf = dynamic_pointer_cast(i); - if (mxf && !mxf->hash()) { + auto file_asset = dynamic_pointer_cast(i); + if (file_asset && !file_asset->hash()) { notes.push_back ({VerificationNote::Type::BV21_ERROR, VerificationNote::Code::MISSING_HASH, i->id()}); } } diff --git a/src/wscript b/src/wscript index 4366dca7..025a7d4d 100644 --- a/src/wscript +++ b/src/wscript @@ -82,8 +82,8 @@ def build(bld): reel_asset.cc reel_atmos_asset.cc reel_closed_caption_asset.cc + reel_file_asset.cc reel_mono_picture_asset.cc - reel_mxf.cc reel_picture_asset.cc reel_markers_asset.cc reel_sound_asset.cc -- cgit v1.2.3