diff options
| author | Carl Hetherington <cth@carlh.net> | 2015-06-05 18:41:44 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2015-06-05 18:41:44 +0100 |
| commit | 26c7fc71df9a6207696323e6f62b2020da2a9435 (patch) | |
| tree | 543ce72f72a9bf21527e41071a6304d903e3f7e0 /src | |
| parent | ca6a4a18769e57dfe2c6896c87db1566e9ecda0d (diff) | |
Make ReelEncryptableAsset like MXF.
Diffstat (limited to 'src')
| -rw-r--r-- | src/decrypted_kdm.cc | 12 | ||||
| -rw-r--r-- | src/reel_encryptable_asset.cc | 16 | ||||
| -rw-r--r-- | src/reel_encryptable_asset.h | 20 | ||||
| -rw-r--r-- | src/reel_picture_asset.cc | 6 | ||||
| -rw-r--r-- | src/reel_picture_asset.h | 3 | ||||
| -rw-r--r-- | src/reel_sound_asset.cc | 6 | ||||
| -rw-r--r-- | src/reel_sound_asset.h | 3 |
7 files changed, 32 insertions, 34 deletions
diff --git a/src/decrypted_kdm.cc b/src/decrypted_kdm.cc index d3b2d322..c72afc6d 100644 --- a/src/decrypted_kdm.cc +++ b/src/decrypted_kdm.cc @@ -21,6 +21,7 @@ #include "decrypted_kdm_key.h" #include "encrypted_kdm.h" #include "reel_encryptable_asset.h" +#include "reel_asset.h" #include "util.h" #include "exceptions.h" #include "cpl.h" @@ -199,12 +200,13 @@ DecryptedKDM::DecryptedKDM ( { /* Create DecryptedKDMKey objects for each encryptable asset */ BOOST_FOREACH(shared_ptr<const ReelAsset> i, cpl->reel_assets ()) { - shared_ptr<const ReelEncryptableAsset> asset = boost::dynamic_pointer_cast<const ReelEncryptableAsset> (i); - if (asset) { - if (!asset->key_id ()) { - throw NotEncryptedError (asset->id()); + shared_ptr<const ReelEncryptableAsset> mxf = boost::dynamic_pointer_cast<const ReelEncryptableAsset> (i); + shared_ptr<const ReelAsset> asset = boost::dynamic_pointer_cast<const ReelAsset> (i); + if (asset && mxf) { + if (!mxf->key_id ()) { + throw NotEncryptedError (asset->id ()); } - _keys.push_back (DecryptedKDMKey (asset->key_type(), asset->key_id().get(), key, cpl->id ())); + _keys.push_back (DecryptedKDMKey (mxf->key_type(), mxf->key_id().get(), key, cpl->id ())); } } } diff --git a/src/reel_encryptable_asset.cc b/src/reel_encryptable_asset.cc index f3bd7c66..373dd85c 100644 --- a/src/reel_encryptable_asset.cc +++ b/src/reel_encryptable_asset.cc @@ -28,24 +28,14 @@ using boost::shared_ptr; using boost::optional; using namespace dcp; -ReelEncryptableAsset::ReelEncryptableAsset () - : ReelAsset () -{ - -} - -ReelEncryptableAsset::ReelEncryptableAsset ( - shared_ptr<Asset> asset, optional<string> key_id, Fraction edit_rate, int64_t intrinsic_duration, int64_t entry_point - ) - : ReelAsset (asset, edit_rate, intrinsic_duration, entry_point) - , _key_id (key_id) +ReelEncryptableAsset::ReelEncryptableAsset (optional<string> key_id) + : _key_id (key_id) { } ReelEncryptableAsset::ReelEncryptableAsset (shared_ptr<const cxml::Node> node) - : ReelAsset (node) - , _key_id (node->optional_string_child ("KeyId")) + : _key_id (node->optional_string_child ("KeyId")) { if (_key_id && _key_id.get().length() > 9) { _key_id = _key_id.get().substr (9); diff --git a/src/reel_encryptable_asset.h b/src/reel_encryptable_asset.h index b1c3eb16..60c8ecff 100644 --- a/src/reel_encryptable_asset.h +++ b/src/reel_encryptable_asset.h @@ -24,24 +24,24 @@ #ifndef LIBDCP_REEL_ENCRYPTABLE_ASSET_H #define LIBDCP_REEL_ENCRYPTABLE_ASSET_H -#include "reel_asset.h" +#include <boost/optional.hpp> +#include <boost/shared_ptr.hpp> +#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 ReelAsset +class ReelEncryptableAsset { public: - ReelEncryptableAsset (); - ReelEncryptableAsset ( - boost::shared_ptr<Asset> asset, - boost::optional<std::string> key_id, - Fraction edit_rate, - int64_t intrinsic_duration, - int64_t entry_point - ); + ReelEncryptableAsset () {} + ReelEncryptableAsset (boost::optional<std::string> key_id); ReelEncryptableAsset (boost::shared_ptr<const cxml::Node>); /** @return the 4-character key type for this MXF (MDIK, MDAK, etc.) */ diff --git a/src/reel_picture_asset.cc b/src/reel_picture_asset.cc index 92a51839..86630e13 100644 --- a/src/reel_picture_asset.cc +++ b/src/reel_picture_asset.cc @@ -44,7 +44,8 @@ ReelPictureAsset::ReelPictureAsset () } ReelPictureAsset::ReelPictureAsset (shared_ptr<PictureAsset> asset, int64_t entry_point) - : ReelEncryptableAsset (asset, asset->key_id(), asset->edit_rate(), asset->intrinsic_duration(), entry_point) + : ReelAsset (asset, asset->edit_rate(), asset->intrinsic_duration(), entry_point) + , ReelEncryptableAsset (asset->key_id()) , _frame_rate (asset->frame_rate ()) , _screen_aspect_ratio (asset->screen_aspect_ratio ()) { @@ -52,7 +53,8 @@ ReelPictureAsset::ReelPictureAsset (shared_ptr<PictureAsset> asset, int64_t entr } ReelPictureAsset::ReelPictureAsset (shared_ptr<const cxml::Node> node) - : ReelEncryptableAsset (node) + : ReelAsset (node) + , ReelEncryptableAsset (node) { _frame_rate = Fraction (node->string_child ("FrameRate")); try { diff --git a/src/reel_picture_asset.h b/src/reel_picture_asset.h index 98615c72..2acbc282 100644 --- a/src/reel_picture_asset.h +++ b/src/reel_picture_asset.h @@ -25,6 +25,7 @@ #define LIBDCP_REEL_PICTURE_ASSET_H #include "reel_encryptable_asset.h" +#include "reel_asset.h" #include "picture_asset.h" namespace dcp { @@ -32,7 +33,7 @@ namespace dcp { /** @class ReelPictureAsset * @brief Part of a Reel's description which refers to a picture asset. */ -class ReelPictureAsset : public ReelEncryptableAsset +class ReelPictureAsset : public ReelAsset, public ReelEncryptableAsset { public: ReelPictureAsset (); diff --git a/src/reel_sound_asset.cc b/src/reel_sound_asset.cc index 49049e5f..ce26a502 100644 --- a/src/reel_sound_asset.cc +++ b/src/reel_sound_asset.cc @@ -31,13 +31,15 @@ using boost::shared_ptr; using namespace dcp; ReelSoundAsset::ReelSoundAsset (shared_ptr<SoundAsset> asset, int64_t entry_point) - : ReelEncryptableAsset (asset, asset->key_id(), asset->edit_rate(), asset->intrinsic_duration(), entry_point) + : ReelAsset (asset, asset->edit_rate(), asset->intrinsic_duration(), entry_point) + , ReelEncryptableAsset (asset->key_id()) { } ReelSoundAsset::ReelSoundAsset (shared_ptr<const cxml::Node> node) - : ReelEncryptableAsset (node) + : ReelAsset (node) + , ReelEncryptableAsset (node) { node->ignore_child ("Language"); node->done (); diff --git a/src/reel_sound_asset.h b/src/reel_sound_asset.h index 9902faa4..5cea3208 100644 --- a/src/reel_sound_asset.h +++ b/src/reel_sound_asset.h @@ -22,6 +22,7 @@ */ #include "reel_encryptable_asset.h" +#include "reel_asset.h" #include "sound_asset.h" #include <boost/shared_ptr.hpp> #include <string> @@ -31,7 +32,7 @@ namespace dcp { /** @class ReelSoundAsset * @brief Part of a Reel's description which refers to a sound MXF. */ -class ReelSoundAsset : public ReelEncryptableAsset +class ReelSoundAsset : public ReelAsset, public ReelEncryptableAsset { public: ReelSoundAsset (boost::shared_ptr<dcp::SoundAsset> content, int64_t entry_point); |
