/*
- 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 <Reel> which refers to a use of a piece of content.
*
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;
return _duration;
}
+ /** @return <Duration>, or <IntrinsicDuration> - <EntryPoint> if <Duration> is not present */
int64_t actual_duration () const;
std::string annotation_text () const {
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 <IntrinsicDuration> from the reel's entry for this asset
+ int64_t _intrinsic_duration = 0; ///< The <IntrinsicDuration> from the reel's entry for this asset
boost::optional<int64_t> _duration; ///< The <Duration> from the reel's entry for this asset, if present
private:
boost::optional<int64_t> _entry_point; ///< The <EntryPoint> from the reel's entry for this asset
};
+
}
+
#endif