Remove ReelEncryptableAsset and tidy up a bit.
[libdcp.git] / src / reel_asset.h
index daf2220a8dd1bc51aed230dc39867dc5679486e9..ab06434ebe5f2f14774def1dc267e4afad623128 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2014-2015 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2014-2021 Carl Hetherington <cth@carlh.net>
 
     This file is part of libdcp.
 
     files in the program, then also delete it here.
 */
 
+
 /** @file  src/reel_asset.h
- *  @brief ReelAsset class.
+ *  @brief ReelAsset class
  */
 
+
 #ifndef LIBDCP_REEL_ASSET_H
 #define LIBDCP_REEL_ASSET_H
 
+
 #include "object.h"
 #include "util.h"
 #include "ref.h"
 #include <memory>
 
+
 namespace cxml {
        class Node;
 }
 
+
 namespace xmlpp {
        class Node;
 }
 
+
 namespace dcp {
 
+
 class Asset;
 
+
 /** @class ReelAsset
  *  @brief An entry in a &lt;Reel&gt; which refers to a use of a piece of content.
  *
@@ -65,10 +73,21 @@ class Asset;
 class ReelAsset : public Object
 {
 public:
+       /** Construct a ReelAsset
+        *  @param id ID of this ReelAsset (which is that of the MXF, if there is one)
+        *  @param edit_rate Edit rate for the asset
+        *  @param intrinsic_duration Intrinsic duration of this asset
+        *  @param entry_point Entry point to use in that asset
+        */
        ReelAsset (std::string id, Fraction edit_rate, int64_t intrinsic_duration, int64_t entry_point);
+
        explicit ReelAsset (std::shared_ptr<const cxml::Node>);
 
-       virtual xmlpp::Node* write_to_cpl (xmlpp::Node* node, Standard standard) const = 0;
+       virtual xmlpp::Node* write_to_cpl (xmlpp::Node* node, Standard standard) const;
+
+       virtual bool encryptable () const {
+               return false;
+       }
 
        Fraction edit_rate () const {
                return _edit_rate;
@@ -98,6 +117,7 @@ public:
                return _duration;
        }
 
+       /** @return <Duration>, or <IntrinsicDuration> - <EntryPoint> if <Duration> is not present */
        int64_t actual_duration () const;
 
        std::string annotation_text () const {
@@ -121,11 +141,9 @@ protected:
        virtual std::pair<std::string, std::string> cpl_node_attribute (Standard) const;
 
        /** @return Any namespace that should be used on the asset's node in the CPL */
-       virtual std::pair<std::string, std::string> cpl_node_namespace (Standard) const;
+       virtual std::pair<std::string, std::string> cpl_node_namespace () const;
 
-       xmlpp::Node* write_to_cpl_asset (xmlpp::Node* node, Standard standard, boost::optional<std::string> hash) const;
-
-       int64_t _intrinsic_duration;           ///< The &lt;IntrinsicDuration&gt; from the reel's entry for this asset
+       int64_t _intrinsic_duration = 0;       ///< The &lt;IntrinsicDuration&gt; from the reel's entry for this asset
        boost::optional<int64_t> _duration;    ///< The &lt;Duration&gt; from the reel's entry for this asset, if present
 
 private:
@@ -134,6 +152,8 @@ private:
        boost::optional<int64_t> _entry_point; ///< The &lt;EntryPoint&gt; from the reel's entry for this asset
 };
 
+
 }
 
+
 #endif