Make ReelAsset the parent of ReelFileAsset.
authorCarl Hetherington <cth@carlh.net>
Mon, 12 Apr 2021 23:38:56 +0000 (01:38 +0200)
committerCarl Hetherington <cth@carlh.net>
Mon, 12 Apr 2021 23:38:56 +0000 (01:38 +0200)
12 files changed:
src/reel_atmos_asset.cc
src/reel_atmos_asset.h
src/reel_closed_caption_asset.cc
src/reel_closed_caption_asset.h
src/reel_file_asset.cc
src/reel_file_asset.h
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

index 32ebbcf53d12eb376b5f1d3e99909cfdca42a476..b17dceca48446e82bd416e3bc689817711b6266f 100644 (file)
@@ -51,8 +51,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)
+       : ReelFileAsset (asset, asset->id(), asset->edit_rate(), asset->intrinsic_duration(), entry_point)
        , ReelEncryptableAsset (asset->key_id())
 {
 
@@ -60,8 +59,7 @@ ReelAtmosAsset::ReelAtmosAsset (std::shared_ptr<AtmosAsset> asset, int64_t entry
 
 
 ReelAtmosAsset::ReelAtmosAsset (std::shared_ptr<const cxml::Node> node)
-       : ReelAsset (node)
-       , ReelFileAsset (node)
+       : ReelFileAsset (node)
        , ReelEncryptableAsset (node)
 {
        node->ignore_child ("DataType");
index 6f452c3a208f7e7d1a80414a315554dbd1a08ffa..8aaf6a592f32833246a0feeb7238568b02959eb0 100644 (file)
@@ -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, public ReelEncryptableAsset
+class ReelAtmosAsset : public ReelFileAsset, public ReelEncryptableAsset
 {
 public:
        ReelAtmosAsset (std::shared_ptr<AtmosAsset> asset, int64_t entry_point);
index a29d6e3730eda6c94033b251102003e6987f8ca5..4ba6fe0c3386c5091590ca7d2e039afa5be94f5b 100644 (file)
@@ -54,16 +54,14 @@ 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)
+       : ReelFileAsset (asset, asset->id(), edit_rate, intrinsic_duration, entry_point)
 {
 
 }
 
 
 ReelClosedCaptionAsset::ReelClosedCaptionAsset (std::shared_ptr<const cxml::Node> node)
-       : ReelAsset (node)
-       , ReelFileAsset (node)
+       : ReelFileAsset (node)
 {
        _language = node->optional_string_child ("Language");
 }
index 44ae83f3226e30b4defab566af77da2de1203ef2..a1f3b6ecbd7efb44beb17203f3d8cf5454c8eca4 100644 (file)
@@ -56,7 +56,7 @@ namespace dcp {
 /** @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 ReelFileAsset
 {
 public:
        ReelClosedCaptionAsset (std::shared_ptr<SubtitleAsset> asset, Fraction edit_rate, int64_t instrinsic_duration, int64_t entry_point);
index a55e084e874e948ad3803a131d34eb1abd426a3b..85bf9de71b80e6a96a30a88ab4547f26cda90bf3 100644 (file)
@@ -45,8 +45,9 @@ using std::shared_ptr;
 using namespace dcp;
 
 
-ReelFileAsset::ReelFileAsset (shared_ptr<Asset> asset)
-       : _asset_ref (asset)
+ReelFileAsset::ReelFileAsset (shared_ptr<Asset> asset, std::string id, Fraction edit_rate, int64_t intrinsic_duration, int64_t entry_point)
+       : ReelAsset (id, edit_rate, intrinsic_duration, entry_point)
+       , _asset_ref (asset)
        , _hash (asset->hash())
 {
 
@@ -54,7 +55,8 @@ ReelFileAsset::ReelFileAsset (shared_ptr<Asset> asset)
 
 
 ReelFileAsset::ReelFileAsset (shared_ptr<const cxml::Node> node)
-       : _asset_ref (remove_urn_uuid(node->string_child("Id")))
+       : ReelAsset (node)
+       , _asset_ref (remove_urn_uuid(node->string_child("Id")))
        , _hash (node->optional_string_child ("Hash"))
 {
 
index 070a3e0f5c552d9f7f0abeae712788a4bb1ebbf2..042f94b4852b5572ed9d31347d96d189e4042145 100644 (file)
@@ -41,6 +41,7 @@
 #define LIBDCP_REEL_FILE_ASSET_H
 
 
+#include "reel_asset.h"
 #include "ref.h"
 #include <boost/optional.hpp>
 #include <string>
 namespace dcp {
 
 
-class ReelFileAsset
+class ReelFileAsset : public ReelAsset
 {
 public:
-       explicit ReelFileAsset (std::shared_ptr<Asset> asset);
+       ReelFileAsset (std::shared_ptr<Asset> asset, std::string id, Fraction edit_rate, int64_t intrinsic_duration, int64_t entry_point);
        explicit ReelFileAsset (std::shared_ptr<const cxml::Node> node);
 
        /** @return a Ref to our actual asset */
@@ -82,12 +83,12 @@ protected:
 
        template <class T>
        std::shared_ptr<T> asset_of_type () const {
-               return std::dynamic_pointer_cast<T> (_asset_ref.asset ());
+               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 ());
+               return std::dynamic_pointer_cast<T>(_asset_ref.asset());
        }
 
        /** Reference to the asset (MXF or XML file) that this reel entry
index 8b4390039cf6f8694871969aca51c55e8abc3b69..ddc6a802eb9017bf5a297109b3322ebe9b00d9de 100644 (file)
@@ -57,8 +57,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)
+       : ReelFileAsset (asset, asset->id(), asset->edit_rate(), asset->intrinsic_duration(), entry_point)
        , ReelEncryptableAsset (asset->key_id())
        , _frame_rate (asset->frame_rate ())
        , _screen_aspect_ratio (asset->screen_aspect_ratio ())
@@ -68,8 +67,7 @@ ReelPictureAsset::ReelPictureAsset (shared_ptr<PictureAsset> asset, int64_t entr
 
 
 ReelPictureAsset::ReelPictureAsset (shared_ptr<const cxml::Node> node)
-       : ReelAsset (node)
-       , ReelFileAsset (node)
+       : ReelFileAsset (node)
        , ReelEncryptableAsset (node)
 {
        _frame_rate = Fraction (node->string_child ("FrameRate"));
index 3d98b09d7ddbd35f74bfd39de75c587f9d564264..6eb01bc9e36df5ed8150978e6e76293b01d3f70c 100644 (file)
@@ -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, public ReelEncryptableAsset
+class ReelPictureAsset : public ReelFileAsset, public ReelEncryptableAsset
 {
 public:
        ReelPictureAsset (std::shared_ptr<PictureAsset> asset, int64_t entry_point);
index 7ca2b2da014e032f2b17022c1e9a91bfb4b24280..9cf672dffe184fc18536fb6ddecdbfaeff0dae50 100644 (file)
@@ -49,8 +49,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)
+       : ReelFileAsset (asset, asset->id(), asset->edit_rate(), asset->intrinsic_duration(), entry_point)
        , ReelEncryptableAsset (asset->key_id())
 {
 
@@ -58,8 +57,7 @@ ReelSoundAsset::ReelSoundAsset (shared_ptr<SoundAsset> asset, int64_t entry_poin
 
 
 ReelSoundAsset::ReelSoundAsset (shared_ptr<const cxml::Node> node)
-       : ReelAsset (node)
-       , ReelFileAsset (node)
+       : ReelFileAsset (node)
        , ReelEncryptableAsset (node)
 {
        node->ignore_child ("Language");
index c5619ad9655e1d05195b40f541c88aae8c7f9c4c..bf686ec9fcf62281a535483008520971f60d4d6e 100644 (file)
@@ -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, public ReelEncryptableAsset
+class ReelSoundAsset : public ReelFileAsset, public ReelEncryptableAsset
 {
 public:
        ReelSoundAsset (std::shared_ptr<dcp::SoundAsset> content, int64_t entry_point);
index 0981d1c02c3e21f63f5f96de9aab0f2de05b05cc..9c683caad63e6c4cef5dc1bfd23e957232c7fadf 100644 (file)
@@ -52,16 +52,14 @@ 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)
+       : ReelFileAsset (asset, asset->id(), edit_rate, intrinsic_duration, entry_point)
 {
 
 }
 
 
 ReelSubtitleAsset::ReelSubtitleAsset (std::shared_ptr<const cxml::Node> node)
-       : ReelAsset (node)
-       , ReelFileAsset (node)
+       : ReelFileAsset (node)
 {
        _language = node->optional_string_child("Language");
 }
index ad1ea6cda0d8262c8c7e44f11a25807a09d117a6..fd4c5cd19a632e0d4a250b91b444145dae2216f2 100644 (file)
@@ -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 ReelFileAsset
 {
 public:
        ReelSubtitleAsset (std::shared_ptr<SubtitleAsset> asset, Fraction edit_rate, int64_t intrinsic_duration, int64_t entry_point);