/* Copyright (C) 2012-2016 Carl Hetherington This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /** @file src/dc_package.h * @brief DCP Package class. */ #ifndef LIBDCP_DC_PACKAGE_H #define LIBDCP_DC_PACKAGE_H #include "types.h" #include "certificate.h" #include "metadata.h" #include "package.h" #include #include #include #include namespace xmlpp { class Document; class Element; } /** @brief Namespace for everything in libdcp */ namespace dcp { class XMLMetadata; class Asset; namespace dc { class Content; class Reel; class CPL; class CertificateChain; class DecryptedKDM; class DCPReadError; /** @class Package * @brief A class to create or read a DCP. */ class Package : public dcp::Package { public: /** Construct a DCP package. You can pass an existing DCP's directory * as the parameter; alternatively, directory will be created * if it does not exist. Note that if you pass an existing DCP * into this constructor it will not be read until you call ::read(). * * @param directory Directory containing the DCP's files. */ Package (boost::filesystem::path directory); /** Compare this DCP with another, according to various options. * @param other DCP to compare this one to. * @param options Options to define what "equality" means. * @param note Functor to handle notes made by the equality operation. * @return true if the DCPs are equal according to EqualityOptions, otherwise false. */ bool equals (Package const & other, EqualityOptions options, NoteHandler note) const; std::list > assets () const; bool encrypted () const; void add_kdm (DecryptedKDM const &); void write_xml ( dcp::Standard standard, dcp::XMLMetadata metadata = dcp::XMLMetadata (), boost::shared_ptr signer = boost::shared_ptr () ); void resolve_refs (std::list > assets); private: boost::shared_ptr xml_asset_factory (boost::filesystem::path file, std::string root) const; boost::shared_ptr mxf_asset_factory (boost::filesystem::path file) const; std::string pkl_annotation_text () const; }; } } #endif