Merge branch '1.0' of ssh://main.carlh.net/home/carl/git/libdcp into 1.0
[libdcp.git] / src / reel_asset.h
index 5207166a9e511eb41dd43d4c865de6e5d7ce2391..40eb6986f975aeb27c7b9c69527b9a0ac359cb74 100644 (file)
@@ -37,44 +37,83 @@ namespace dcp {
 
 class Content;
 
+/** @class ReelAsset
+ *  @brief An entry in a <Reel> which refers to a use of a piece of content.
+ *
+ *  This class encapsulates the XML that exists in a <Reel> to say
+ *  that a piece of content is used in this reel.  It does not
+ *  describe the content itself (but links to a Content object which does).
+ */
 class ReelAsset : public Object
 {
 public:
        ReelAsset ();
-       ReelAsset (boost::shared_ptr<Content> content, int64_t entry_point);
+       ReelAsset (boost::shared_ptr<Content> content, Fraction edit_rate, int64_t intrinsic_duration, int64_t entry_point);
        ReelAsset (boost::shared_ptr<const cxml::Node>);
 
-       Ref<Content> content () const {
+       virtual void write_to_cpl (xmlpp::Node* node, Standard standard) const;
+
+       virtual bool equals (
+               boost::shared_ptr<const ReelAsset>,
+               EqualityOptions,
+               boost::function<void (NoteType, std::string)>)
+               const {
+               
+               return false;
+       }
+
+       /** @return a Ref to our actual content */
+       Ref<Content>& content () {
                return _content;
        }
 
+       /** @return true if a KeyId is specified for this asset, implying
+        *  that its content is encrypted.
+        */
        bool encrypted () const {
                return !_key_id.empty ();
        }
 
-       std::string key_id () const {
-               return _key_id;
+       int64_t entry_point () const {
+               return _entry_point;
        }
 
-       virtual void write_to_cpl (xmlpp::Node* node, Standard standard) const;
-       virtual bool equals (boost::shared_ptr<const ReelAsset>, EqualityOptions, boost::function<void (NoteType, std::string)>) const {
-               return false;
+       int64_t duration () const {
+               return _duration;
+       }
+
+       /** @return Key ID to describe the key that encrypts this asset's;
+        *  content.
+        */
+       std::string key_id () const {
+               return _key_id;
        }
 
 protected:
+       /** @return the node name that this asset uses in the CPL's &lt;Reel&gt; node
+        *  e.g. MainPicture, MainSound etc.
+        */
        virtual std::string cpl_node_name () const = 0;
+
+       /** @return Any attribute that should be used on the asset's node in the
+        *  CPL.
+        */
        virtual std::pair<std::string, std::string> cpl_node_attribute () const;
 
+       /** Reference to the content (MXF or XML file) that this reel entry
+        *  applies to.
+        */
        Ref<Content> _content;
 
 private:
-       std::string _annotation_text;
-       Fraction _edit_rate;
-       int64_t _intrinsic_duration;
-       int64_t _entry_point;
-       int64_t _duration;
-       std::string _hash;
-       std::string _key_id;
+       
+       std::string _annotation_text; ///< The &lt;AnnotationText&gt; from the reel's entry for this asset
+       Fraction _edit_rate;          ///< The &lt;EditRate&gt; from the reel's entry for this asset
+       int64_t _intrinsic_duration;  ///< The &lt;IntrinsicDuration&gt; from the reel's entry for this asset
+       int64_t _entry_point;         ///< The &lt;EntryPoint&gt; from the reel's entry for this asset
+       int64_t _duration;            ///< The &lt;Duration&gt; from the reel's entry for this asset
+       std::string _hash;            ///< The &lt;Hash&gt; from the reel's entry for this asset
+       std::string _key_id;          ///< The &lt;KeyId&gt; from the reel's entry for this asset, or empty if there isn't one
 };
 
 }