summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2015-06-05 18:41:44 +0100
committerCarl Hetherington <cth@carlh.net>2015-06-05 18:41:44 +0100
commit26c7fc71df9a6207696323e6f62b2020da2a9435 (patch)
tree543ce72f72a9bf21527e41071a6304d903e3f7e0 /src
parentca6a4a18769e57dfe2c6896c87db1566e9ecda0d (diff)
Make ReelEncryptableAsset like MXF.
Diffstat (limited to 'src')
-rw-r--r--src/decrypted_kdm.cc12
-rw-r--r--src/reel_encryptable_asset.cc16
-rw-r--r--src/reel_encryptable_asset.h20
-rw-r--r--src/reel_picture_asset.cc6
-rw-r--r--src/reel_picture_asset.h3
-rw-r--r--src/reel_sound_asset.cc6
-rw-r--r--src/reel_sound_asset.h3
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);