X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fasset.h;h=3dffa9abc3becc84b126d7ddeaf1dcfe64873711;hb=ad3d9f8bbe623f87e440bd6a5a12520361a7661f;hp=eab24d28339e5b4ac15361679fe30e49dad7753a;hpb=5c29a3586ea262abcc8829bf267d38d8a5a84d9b;p=libdcp.git diff --git a/src/asset.h b/src/asset.h index eab24d28..3dffa9ab 100644 --- a/src/asset.h +++ b/src/asset.h @@ -25,14 +25,20 @@ #define LIBDCP_ASSET_H #include +#include #include -#include +#include +#include #include "types.h" namespace ASDCP { class WriterInfo; } +namespace xmlpp { + class Element; +} + namespace libdcp { @@ -45,37 +51,74 @@ class Asset public: /** Construct an Asset. * @param directory Directory where our XML or MXF file is. - * @param file_name Name of our file within directory. + * @param file_name Name of our file within directory, or empty to make one up based on UUID. */ - Asset (std::string directory, std::string file_name); + Asset (std::string directory, std::string file_name = "", int edit_rate = 0, int intrinsic_duration = 0); - /** Write details of the asset to a CPL stream. - * @param s Stream. + virtual ~Asset() {} + + /** Write details of the asset to a CPL AssetList node. + * @param p Parent node. */ - virtual void write_to_cpl (std::ostream& s) const = 0; + virtual void write_to_cpl (xmlpp::Node *) const = 0; - /** Write details of the asset to a PKL stream. - * @param s Stream. + /** Write details of the asset to a PKL AssetList node. + * @param p Parent node. */ - void write_to_pkl (std::ostream& s) const; + void write_to_pkl (xmlpp::Node *) const; /** Write details of the asset to a ASSETMAP stream. * @param s Stream. */ - void write_to_assetmap (std::ostream& s) const; + void write_to_assetmap (xmlpp::Node *) const; std::string uuid () const { return _uuid; } - virtual std::list equals (boost::shared_ptr other, EqualityOptions opt) const = 0; + boost::filesystem::path path () const; + + void set_directory (std::string d) { + _directory = d; + } + + void set_file_name (std::string f) { + _file_name = f; + } + + int entry_point () const { + return _entry_point; + } + + int duration () const { + return _duration; + } + + int intrinsic_duration () const { + return _intrinsic_duration; + } + + int edit_rate () const { + return _edit_rate; + } + + void set_entry_point (int e) { + _entry_point = e; + } + + void set_duration (int d) { + _duration = d; + } + + void set_intrinsic_duration (int d) { + _intrinsic_duration = d; + } + + virtual bool equals (boost::shared_ptr other, EqualityOptions opt, boost::function) const; protected: - friend class PictureAsset; - friend class SoundAsset; std::string digest () const; - boost::filesystem::path path () const; /** Directory that our MXF or XML file is in */ std::string _directory; @@ -83,6 +126,14 @@ protected: std::string _file_name; /** Our UUID */ std::string _uuid; + /** The edit rate; this is normally equal to the number of video frames per second */ + int _edit_rate; + /** Start point to present in frames */ + int _entry_point; + /** Total length in frames */ + int _intrinsic_duration; + /** Length to present in frames */ + int _duration; private: /** Digest of our MXF or XML file */