X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fasset.h;h=3dffa9abc3becc84b126d7ddeaf1dcfe64873711;hb=ad3d9f8bbe623f87e440bd6a5a12520361a7661f;hp=492f16be822e0a9f7125d7368dd8f31ad401ae67;hpb=72b72371d9dbfc96bb7d2fa5b687205a08dddccc;p=libdcp.git diff --git a/src/asset.h b/src/asset.h index 492f16be..3dffa9ab 100644 --- a/src/asset.h +++ b/src/asset.h @@ -27,12 +27,18 @@ #include #include #include +#include +#include #include "types.h" namespace ASDCP { class WriterInfo; } +namespace xmlpp { + class Element; +} + namespace libdcp { @@ -47,35 +53,72 @@ public: * @param directory Directory where our XML or MXF file is. * @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 bool equals (boost::shared_ptr other, EqualityOptions opt, std::list& notes) 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 */