X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fcpl.h;h=95bcd03fb8d9ee217ee0b32f8da97806bf851b4f;hb=127c14300f1d2df9fc2b9dd4ffb5218ea6a717c3;hp=0abff749bdc0ef8966feb2136c7182460838e31c;hpb=af87bfc82beee0b0600558c84c3843dfd5a252f6;p=libdcp.git diff --git a/src/cpl.h b/src/cpl.h index 0abff749..95bcd03f 100644 --- a/src/cpl.h +++ b/src/cpl.h @@ -17,26 +17,40 @@ */ +#ifndef LIBDCP_CPL_H +#define LIBDCP_CPL_H + #include #include #include +#include +#include +#include #include "types.h" +#include "certificates.h" namespace libdcp { -class AssetMap; +namespace parse { + class AssetMap; + class AssetMapAsset; +} + class Asset; class Reel; class XMLMetadata; - +class MXFMetadata; +class Encryption; +class KDM; + /** @brief A CPL within a DCP */ class CPL { public: CPL (std::string directory, std::string name, ContentKind content_kind, int length, int frames_per_second); - CPL (std::string directory, std::string file, boost::shared_ptr asset_map, bool require_mxfs = true); + CPL (std::string directory, std::string file, std::list asset_maps, bool require_mxfs = true); - void add_reel (boost::shared_ptr reel); + void add_reel (boost::shared_ptr reel); /** @return the length in frames */ int length () const { @@ -50,7 +64,7 @@ public: return _content_kind; } - std::list > reels () const { + std::list > reels () const { return _reels; } @@ -67,14 +81,35 @@ public: } std::list > assets () const; + + bool encrypted () const; + + std::string id () const { + return _id; + } bool equals (CPL const & other, EqualityOptions options, boost::function note) const; - void write_xml (XMLMetadata const &) const; - void write_to_assetmap (std::ostream& s) const; - void write_to_pkl (std::ostream& s) const; + void write_xml (bool, XMLMetadata const &, boost::shared_ptr) const; + void write_to_assetmap (xmlpp::Node *) const; + void write_to_pkl (xmlpp::Node *) const; + + boost::shared_ptr make_kdm ( + CertificateChain const &, + std::string const &, + boost::shared_ptr, + boost::posix_time::ptime from, + boost::posix_time::ptime until, + bool, + MXFMetadata const &, + XMLMetadata const & + ) const; + + void add_kdm (KDM const &); private: + std::pair > asset_from_id (std::list, std::string id) const; + std::string _directory; /** the name of the DCP */ std::string _name; @@ -85,12 +120,14 @@ private: /** frames per second */ int _fps; /** reels */ - std::list > _reels; + std::list > _reels; /** our UUID */ - std::string _uuid; + std::string _id; /** a SHA1 digest of our XML */ mutable std::string _digest; }; } + +#endif