Rename ReelFileAsset -> ReelEncryptableAsset
authorCarl Hetherington <cth@carlh.net>
Sat, 10 Apr 2021 21:54:31 +0000 (23:54 +0200)
committerCarl Hetherington <cth@carlh.net>
Sat, 10 Apr 2021 21:54:31 +0000 (23:54 +0200)
20 files changed:
src/cpl.cc
src/cpl.h
src/decrypted_kdm.cc
src/decrypted_kdm.h
src/reel_atmos_asset.cc
src/reel_atmos_asset.h
src/reel_closed_caption_asset.cc
src/reel_closed_caption_asset.h
src/reel_encryptable_asset.cc [new file with mode: 0644]
src/reel_encryptable_asset.h [new file with mode: 0644]
src/reel_file_asset.cc [deleted file]
src/reel_file_asset.h [deleted file]
src/reel_picture_asset.cc
src/reel_picture_asset.h
src/reel_sound_asset.cc
src/reel_sound_asset.h
src/reel_subtitle_asset.cc
src/reel_subtitle_asset.h
src/verify.cc
src/wscript

index c528af31ebb763796db993bac48efd62839cad7b..b18197559324b58a0d3bbdf1561c0262e65988da 100644 (file)
@@ -515,18 +515,18 @@ add_file_assets (vector<shared_ptr<T>>& assets, vector<shared_ptr<Reel>> reels)
 }
 
 
-vector<shared_ptr<ReelFileAsset>>
+vector<shared_ptr<ReelEncryptableAsset>>
 CPL::reel_file_assets ()
 {
-       vector<shared_ptr<ReelFileAsset>> c;
+       vector<shared_ptr<ReelEncryptableAsset>> c;
        add_file_assets (c, _reels);
        return c;
 }
 
-vector<shared_ptr<const ReelFileAsset>>
+vector<shared_ptr<const ReelEncryptableAsset>>
 CPL::reel_file_assets () const
 {
-       vector<shared_ptr<const ReelFileAsset>> c;
+       vector<shared_ptr<const ReelEncryptableAsset>> c;
        add_file_assets (c, _reels);
        return c;
 }
index 72818fb14d98418f61a48c07f0865fb46edbef04..586beb818336e4b2810518cd16003d16747e428e 100644 (file)
--- a/src/cpl.h
+++ b/src/cpl.h
@@ -59,7 +59,7 @@ struct verify_invalid_language3;
 namespace dcp {
 
 
-class ReelFileAsset;
+class ReelEncryptableAsset;
 class Reel;
 class MXFMetadata;
 class CertificateChain;
@@ -99,9 +99,9 @@ public:
                return _reels;
        }
 
-       /** @return the ReelFileAssets in this CPL in all reels */
-       std::vector<std::shared_ptr<const ReelFileAsset>> reel_file_assets () const;
-       std::vector<std::shared_ptr<ReelFileAsset>> reel_file_assets ();
+       /** @return the ReelEncryptableAssets in this CPL in all reels */
+       std::vector<std::shared_ptr<const ReelEncryptableAsset>> reel_file_assets () const;
+       std::vector<std::shared_ptr<ReelEncryptableAsset>> reel_file_assets ();
 
        /** @return true if we have any encrypted content */
        bool any_encrypted () const;
index e734d407503f6114765a2cec6ef7ec28db20bf2d..9a9f2c2268bb1cd9a769321df83baee16c286f0d 100644 (file)
@@ -40,7 +40,7 @@
 #include "decrypted_kdm.h"
 #include "decrypted_kdm_key.h"
 #include "encrypted_kdm.h"
-#include "reel_file_asset.h"
+#include "reel_encryptable_asset.h"
 #include "reel_asset.h"
 #include "util.h"
 #include "exceptions.h"
@@ -251,7 +251,7 @@ DecryptedKDM::DecryptedKDM (
 
 DecryptedKDM::DecryptedKDM (
        string cpl_id,
-       map<shared_ptr<const ReelFileAsset>, Key> keys,
+       map<shared_ptr<const ReelEncryptableAsset>, 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<shared_ptr<const ReelFileAsset>, Key>::const_iterator i = keys.begin(); i != keys.end(); ++i) {
+       for (map<shared_ptr<const ReelEncryptableAsset>, 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);
        }
 }
index 6bdd9fcd459006226af62d57985286d21e6fbb2f..16b0acbab0fc4280939239960b82f4d36d6cece0 100644 (file)
@@ -60,7 +60,7 @@ class DecryptedKDMKey;
 class EncryptedKDM;
 class CertificateChain;
 class CPL;
-class ReelFileAsset;
+class ReelEncryptableAsset;
 
 
 /** @class DecryptedKDM
@@ -99,7 +99,7 @@ public:
         */
        DecryptedKDM (
                std::string cpl_id,
-               std::map<std::shared_ptr<const ReelFileAsset>, Key> keys,
+               std::map<std::shared_ptr<const ReelEncryptableAsset>, Key> keys,
                LocalTime not_valid_before,
                LocalTime not_valid_after,
                std::string annotation_text,
index 760e4211f6e3ca00307359564e1c1640be73c460..dca434d2c0e143c89e40206a0a009e7bf91ab665 100644 (file)
@@ -52,7 +52,7 @@ using namespace dcp;
 
 ReelAtmosAsset::ReelAtmosAsset (std::shared_ptr<AtmosAsset> asset, int64_t entry_point)
        : ReelAsset (asset->id(), asset->edit_rate(), asset->intrinsic_duration(), entry_point)
-       , ReelFileAsset (asset, asset->key_id())
+       , ReelEncryptableAsset (asset, asset->key_id())
 {
 
 }
@@ -60,7 +60,7 @@ ReelAtmosAsset::ReelAtmosAsset (std::shared_ptr<AtmosAsset> asset, int64_t entry
 
 ReelAtmosAsset::ReelAtmosAsset (std::shared_ptr<const cxml::Node> node)
        : ReelAsset (node)
-       , ReelFileAsset (node)
+       , ReelEncryptableAsset (node)
 {
        node->ignore_child ("DataType");
        node->done ();
index d9f4a8e31556ca50311d30ac8ccf385d9a0ec772..51af48fd64ed52c9c0b04ee2f25b31a95117e438 100644 (file)
@@ -43,7 +43,7 @@
 
 #include "reel_asset.h"
 #include "atmos_asset.h"
-#include "reel_file_asset.h"
+#include "reel_encryptable_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 ReelFileAsset
+class ReelAtmosAsset : public ReelAsset, public ReelEncryptableAsset
 {
 public:
        ReelAtmosAsset (std::shared_ptr<AtmosAsset> asset, int64_t entry_point);
index 1cb97cb01c64df8a34498c249baf0b0622620c8e..2bc5f3e063167b9701be32b1d5d7ab66f3ff55e8 100644 (file)
@@ -55,7 +55,7 @@ using namespace dcp;
 
 ReelClosedCaptionAsset::ReelClosedCaptionAsset (std::shared_ptr<SubtitleAsset> asset, Fraction edit_rate, int64_t intrinsic_duration, int64_t entry_point)
        : ReelAsset (asset->id(), edit_rate, intrinsic_duration, entry_point)
-       , ReelFileAsset (asset, dynamic_pointer_cast<SMPTESubtitleAsset>(asset) ? dynamic_pointer_cast<SMPTESubtitleAsset>(asset)->key_id() : optional<string>())
+       , ReelEncryptableAsset (asset, dynamic_pointer_cast<SMPTESubtitleAsset>(asset) ? dynamic_pointer_cast<SMPTESubtitleAsset>(asset)->key_id() : optional<string>())
 {
 
 }
@@ -63,7 +63,7 @@ ReelClosedCaptionAsset::ReelClosedCaptionAsset (std::shared_ptr<SubtitleAsset> a
 
 ReelClosedCaptionAsset::ReelClosedCaptionAsset (std::shared_ptr<const cxml::Node> node)
        : ReelAsset (node)
-       , ReelFileAsset (node)
+       , ReelEncryptableAsset (node)
 {
        _language = node->optional_string_child ("Language");
        node->done ();
index 12fc5e66a0aa28f22455caa9a076fe5b5ebd3a78..2c943f7fe01527f895387049e1d57024826b4c81 100644 (file)
@@ -44,7 +44,7 @@
 #include "language_tag.h"
 #include "subtitle_asset.h"
 #include "reel_asset.h"
-#include "reel_file_asset.h"
+#include "reel_encryptable_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 ReelFileAsset
+class ReelClosedCaptionAsset : public ReelAsset, public ReelEncryptableAsset
 {
 public:
        ReelClosedCaptionAsset (std::shared_ptr<SubtitleAsset> asset, Fraction edit_rate, int64_t instrinsic_duration, int64_t entry_point);
diff --git a/src/reel_encryptable_asset.cc b/src/reel_encryptable_asset.cc
new file mode 100644 (file)
index 0000000..73f589d
--- /dev/null
@@ -0,0 +1,101 @@
+/*
+    Copyright (C) 2012-2021 Carl Hetherington <cth@carlh.net>
+
+    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 <http://www.gnu.org/licenses/>.
+
+    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_encryptable_asset.cc
+ *  @brief ReelEncryptableAsset class
+ */
+
+
+#include "reel_encryptable_asset.h"
+#include "util.h"
+#include "mxf.h"
+#include "dcp_assert.h"
+#include <libcxml/cxml.h>
+#include <libxml++/libxml++.h>
+
+
+using std::string;
+using std::shared_ptr;
+using boost::optional;
+using namespace dcp;
+
+
+ReelEncryptableAsset::ReelEncryptableAsset (shared_ptr<Asset> asset, optional<string> key_id)
+       : _asset_ref (asset)
+       , _key_id (key_id)
+       , _hash (asset->hash())
+{
+
+}
+
+
+ReelEncryptableAsset::ReelEncryptableAsset (shared_ptr<const cxml::Node> 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
+ReelEncryptableAsset::mxf_equals (shared_ptr<const ReelEncryptableAsset> 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
+ReelEncryptableAsset::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_encryptable_asset.h b/src/reel_encryptable_asset.h
new file mode 100644 (file)
index 0000000..56a697c
--- /dev/null
@@ -0,0 +1,137 @@
+/*
+    Copyright (C) 2012-2021 Carl Hetherington <cth@carlh.net>
+
+    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 <http://www.gnu.org/licenses/>.
+
+    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_encryptable_asset.h
+ *  @brief ReelEncryptableAsset class
+ */
+
+
+#ifndef LIBDCP_REEL_ENCRYPTABLE_ASSET_H
+#define LIBDCP_REEL_ENCRYPTABLE_ASSET_H
+
+
+#include "ref.h"
+#include <boost/optional.hpp>
+#include <memory>
+#include <string>
+
+
+namespace cxml {
+       class Node;
+}
+
+
+namespace dcp {
+
+
+/** @class ReelEncryptableAsset
+ *  @brief Part of a Reel's description which refers to an asset which can be encrypted
+ */
+class ReelEncryptableAsset
+{
+public:
+       explicit ReelEncryptableAsset (std::shared_ptr<Asset> asset, boost::optional<std::string> key_id);
+       explicit ReelEncryptableAsset (std::shared_ptr<const cxml::Node>);
+       virtual ~ReelEncryptableAsset () {}
+
+       /** @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 ReelEncryptableAsset has been created from one,
+        *  otherwise the hash written to the CPL for this asset (if present).
+        */
+       boost::optional<std::string> 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<bool>(_key_id);
+       }
+
+       /** @return Key ID to describe the key that encrypts this asset's
+        *  content, if there is one.
+        */
+       boost::optional<std::string> key_id () const {
+               return _key_id;
+       }
+
+       bool mxf_equals (std::shared_ptr<const ReelEncryptableAsset> other, EqualityOptions opt, NoteHandler note) const;
+
+protected:
+
+       template <class T>
+       std::shared_ptr<T> asset_of_type () const {
+               return std::dynamic_pointer_cast<T> (_asset_ref.asset ());
+       }
+
+       template <class T>
+       std::shared_ptr<T> asset_of_type () {
+               return std::dynamic_pointer_cast<T> (_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<std::string> _key_id; ///< The &lt;KeyId&gt; 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<std::string> _hash;
+};
+
+
+}
+
+
+#endif
diff --git a/src/reel_file_asset.cc b/src/reel_file_asset.cc
deleted file mode 100644 (file)
index 40cff83..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
-    Copyright (C) 2012-2021 Carl Hetherington <cth@carlh.net>
-
-    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 <http://www.gnu.org/licenses/>.
-
-    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 <libcxml/cxml.h>
-#include <libxml++/libxml++.h>
-
-
-using std::string;
-using std::shared_ptr;
-using boost::optional;
-using namespace dcp;
-
-
-ReelFileAsset::ReelFileAsset (shared_ptr<Asset> asset, optional<string> key_id)
-       : _asset_ref (asset)
-       , _key_id (key_id)
-       , _hash (asset->hash())
-{
-
-}
-
-
-ReelFileAsset::ReelFileAsset (shared_ptr<const cxml::Node> 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<const ReelFileAsset> 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
deleted file mode 100644 (file)
index 9cf02e2..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
-    Copyright (C) 2012-2021 Carl Hetherington <cth@carlh.net>
-
-    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 <http://www.gnu.org/licenses/>.
-
-    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 <boost/optional.hpp>
-#include <memory>
-#include <string>
-
-
-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> asset, boost::optional<std::string> key_id);
-       explicit ReelFileAsset (std::shared_ptr<const cxml::Node>);
-       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<std::string> 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<bool>(_key_id);
-       }
-
-       /** @return Key ID to describe the key that encrypts this asset's
-        *  content, if there is one.
-        */
-       boost::optional<std::string> key_id () const {
-               return _key_id;
-       }
-
-       bool mxf_equals (std::shared_ptr<const ReelFileAsset> other, EqualityOptions opt, NoteHandler note) const;
-
-protected:
-
-       template <class T>
-       std::shared_ptr<T> asset_of_type () const {
-               return std::dynamic_pointer_cast<T> (_asset_ref.asset ());
-       }
-
-       template <class T>
-       std::shared_ptr<T> asset_of_type () {
-               return std::dynamic_pointer_cast<T> (_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<std::string> _key_id; ///< The &lt;KeyId&gt; 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<std::string> _hash;
-};
-
-
-}
-
-
-#endif
index 6e1c53116df4a97bb305a191ac3f752c4eba2a87..8a8b52197899e991bb679b50759457d798c080bc 100644 (file)
@@ -58,7 +58,7 @@ using namespace dcp;
 
 ReelPictureAsset::ReelPictureAsset (shared_ptr<PictureAsset> asset, int64_t entry_point)
        : ReelAsset (asset->id(), asset->edit_rate(), asset->intrinsic_duration(), entry_point)
-       , ReelFileAsset (asset, asset->key_id())
+       , ReelEncryptableAsset (asset, asset->key_id())
        , _frame_rate (asset->frame_rate ())
        , _screen_aspect_ratio (asset->screen_aspect_ratio ())
 {
@@ -68,7 +68,7 @@ ReelPictureAsset::ReelPictureAsset (shared_ptr<PictureAsset> asset, int64_t entr
 
 ReelPictureAsset::ReelPictureAsset (shared_ptr<const cxml::Node> node)
        : ReelAsset (node)
-       , ReelFileAsset (node)
+       , ReelEncryptableAsset (node)
 {
        _frame_rate = Fraction (node->string_child ("FrameRate"));
        try {
index 961cde9cee3024415601c6d87d17726ed88271d9..3b65abd245ddc375dc0088a6fa70e3dd38b861ae 100644 (file)
@@ -41,7 +41,7 @@
 #define LIBDCP_REEL_PICTURE_ASSET_H
 
 
-#include "reel_file_asset.h"
+#include "reel_encryptable_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 ReelFileAsset
+class ReelPictureAsset : public ReelAsset, public ReelEncryptableAsset
 {
 public:
        ReelPictureAsset (std::shared_ptr<PictureAsset> asset, int64_t entry_point);
index 539ce7b72477188e38265a36cbd276187442a512..73fc7f4e6278dc41a29b46f4769fa86a2c64b287 100644 (file)
@@ -50,7 +50,7 @@ using namespace dcp;
 
 ReelSoundAsset::ReelSoundAsset (shared_ptr<SoundAsset> asset, int64_t entry_point)
        : ReelAsset (asset->id(), asset->edit_rate(), asset->intrinsic_duration(), entry_point)
-       , ReelFileAsset (asset, asset->key_id())
+       , ReelEncryptableAsset (asset, asset->key_id())
 {
 
 }
@@ -58,7 +58,7 @@ ReelSoundAsset::ReelSoundAsset (shared_ptr<SoundAsset> asset, int64_t entry_poin
 
 ReelSoundAsset::ReelSoundAsset (shared_ptr<const cxml::Node> node)
        : ReelAsset (node)
-       , ReelFileAsset (node)
+       , ReelEncryptableAsset (node)
 {
        node->ignore_child ("Language");
        node->done ();
index e6143f11a87d26ecfa3004f4d25b5873640d53ad..3048fd03a83e46d24e8503c51b2c6bd8c614e3c6 100644 (file)
@@ -37,7 +37,7 @@
  */
 
 
-#include "reel_file_asset.h"
+#include "reel_encryptable_asset.h"
 #include "reel_asset.h"
 #include "sound_asset.h"
 #include <memory>
@@ -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 ReelFileAsset
+class ReelSoundAsset : public ReelAsset, public ReelEncryptableAsset
 {
 public:
        ReelSoundAsset (std::shared_ptr<dcp::SoundAsset> content, int64_t entry_point);
index e75b918afc8d01de9b866c8a821c3f917cdb42e8..7636782f94b9b6fbf8d5a29dacb67cc9f5d067cb 100644 (file)
@@ -53,7 +53,7 @@ using namespace dcp;
 
 ReelSubtitleAsset::ReelSubtitleAsset (std::shared_ptr<SubtitleAsset> asset, Fraction edit_rate, int64_t intrinsic_duration, int64_t entry_point)
        : ReelAsset (asset->id(), edit_rate, intrinsic_duration, entry_point)
-       , ReelFileAsset (asset, dynamic_pointer_cast<SMPTESubtitleAsset>(asset) ? dynamic_pointer_cast<SMPTESubtitleAsset>(asset)->key_id() : optional<string>())
+       , ReelEncryptableAsset (asset, dynamic_pointer_cast<SMPTESubtitleAsset>(asset) ? dynamic_pointer_cast<SMPTESubtitleAsset>(asset)->key_id() : optional<string>())
 {
 
 }
@@ -61,7 +61,7 @@ ReelSubtitleAsset::ReelSubtitleAsset (std::shared_ptr<SubtitleAsset> asset, Frac
 
 ReelSubtitleAsset::ReelSubtitleAsset (std::shared_ptr<const cxml::Node> node)
        : ReelAsset (node)
-       , ReelFileAsset (node)
+       , ReelEncryptableAsset (node)
 {
        _language = node->optional_string_child("Language");
        node->done ();
index 67b0f8440956b5adf2448ff0bdf4923ae586ed8f..8126547734ec512493b837b36709a6b20bba4554 100644 (file)
@@ -43,7 +43,7 @@
 
 #include "language_tag.h"
 #include "reel_asset.h"
-#include "reel_file_asset.h"
+#include "reel_encryptable_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 ReelFileAsset
+class ReelSubtitleAsset : public ReelAsset, public ReelEncryptableAsset
 {
 public:
        ReelSubtitleAsset (std::shared_ptr<SubtitleAsset> asset, Fraction edit_rate, int64_t intrinsic_duration, int64_t entry_point);
index ce79bc2e1aa64380888aeeb125b9c5cd48f0032f..e27f6f3606c256fe7437d28131ad15aaca91ea92 100644 (file)
@@ -377,7 +377,7 @@ enum class VerifyAssetResult {
 
 
 static VerifyAssetResult
-verify_asset (shared_ptr<const DCP> dcp, shared_ptr<const ReelFileAsset> reel_file_asset, function<void (float)> progress)
+verify_asset (shared_ptr<const DCP> dcp, shared_ptr<const ReelEncryptableAsset> reel_file_asset, function<void (float)> progress)
 {
        auto const actual_hash = reel_file_asset->asset_ref()->hash(progress);
 
@@ -422,7 +422,7 @@ verify_language_tag (string tag, vector<VerificationNote>& notes)
 
 
 static void
-verify_picture_asset (shared_ptr<const ReelFileAsset> reel_file_asset, boost::filesystem::path file, vector<VerificationNote>& notes, function<void (float)> progress)
+verify_picture_asset (shared_ptr<const ReelEncryptableAsset> reel_file_asset, boost::filesystem::path file, vector<VerificationNote>& notes, function<void (float)> progress)
 {
        int biggest_frame = 0;
        auto asset = dynamic_pointer_cast<PictureAsset>(reel_file_asset->asset_ref().asset());
@@ -1081,8 +1081,8 @@ pkl_has_encrypted_assets (shared_ptr<DCP> dcp, shared_ptr<PKL> pkl)
                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 ReelFileAsset, so it's possible for
-                                * ReelFileAssets to have assets which are not MXFs.
+                                * in reels by ReelSubtitleAsset which inherits ReelEncryptableAsset, so it's possible for
+                                * ReelEncryptableAssets to have assets which are not MXFs.
                                 */
                                if (auto asset = dynamic_pointer_cast<MXF>(j->asset_ref().asset())) {
                                        if (asset->encrypted()) {
@@ -1233,7 +1233,7 @@ 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 file_asset = dynamic_pointer_cast<ReelFileAsset>(i);
+                                       auto file_asset = dynamic_pointer_cast<ReelEncryptableAsset>(i);
                                        if (file_asset && !file_asset->hash()) {
                                                notes.push_back ({VerificationNote::Type::BV21_ERROR, VerificationNote::Code::MISSING_HASH, i->id()});
                                        }
index c5729b93fd2f48d5a95a4ce585b60106dea5151f..0143667d37cda77c65338a2ca56f9a2db90441e1 100644 (file)
@@ -82,7 +82,7 @@ def build(bld):
              reel_asset.cc
              reel_atmos_asset.cc
              reel_closed_caption_asset.cc
-             reel_file_asset.cc
+             reel_encryptable_asset.cc
              reel_mono_picture_asset.cc
              reel_picture_asset.cc
              reel_markers_asset.cc
@@ -169,7 +169,7 @@ def build(bld):
               reel_asset.h
               reel_atmos_asset.h
               reel_closed_caption_asset.h
-              reel_file_asset.h
+              reel_encryptable_asset.h
               reel_markers_asset.h
               reel_mono_picture_asset.h
               reel_picture_asset.h