From 6c37cc1979b2a01205a888c4c98f3334685ee8dd Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sat, 23 Jan 2021 15:35:24 +0100 Subject: Tidying. --- src/dcp.h | 57 +++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 49 insertions(+), 8 deletions(-) (limited to 'src/dcp.h') diff --git a/src/dcp.h b/src/dcp.h index 7323de9a..1a8f2b3e 100644 --- a/src/dcp.h +++ b/src/dcp.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2012-2020 Carl Hetherington + Copyright (C) 2012-2021 Carl Hetherington This file is part of libdcp. @@ -31,13 +31,16 @@ files in the program, then also delete it here. */ + /** @file src/dcp.h * @brief DCP class. */ + #ifndef LIBDCP_DCP_H #define LIBDCP_DCP_H + #include "compose.hpp" #include "types.h" #include "util.h" @@ -46,20 +49,23 @@ #include "name_format.h" #include "verify.h" #include "version.h" -#include #include +#include #include #include + namespace xmlpp { class Document; class Element; } + /** @brief Namespace for everything in libdcp */ namespace dcp { + class PKL; class Content; class Reel; @@ -69,11 +75,11 @@ class DecryptedKDM; class Asset; class ReadError; + /** @class DCP - * @brief A class to create or read a DCP. + * @brief A class to create or read a DCP */ - -class DCP : public boost::noncopyable +class DCP { public: /** Construct a DCP. You can pass an existing DCP's directory @@ -85,13 +91,28 @@ public: */ explicit DCP (boost::filesystem::path directory); - /** Read the DCP's structure into this object. + DCP (DCP const&) = delete; + DCP& operator= (DCP const&) = delete; + + /** Read a DCP. This method does not do any deep checking of the DCP's validity, but + * if it comes across any bad things it will do one of two things. + * + * Errors that are so serious that they prevent the method from working will result + * in an exception being thrown. For example, a missing ASSETMAP means that the DCP + * can't be read without a lot of guesswork, so this will throw. + * + * Errors that are not fatal will be added to notes, if it's non-null. For example, + * if the DCP contains a mixture of Interop and SMPTE elements this will result + * in a note being added to the vector. + * + * For more thorough checking of a DCP's contents, see dcp::verify(). + * * @param notes List of notes that will be added to if non-0. * @param ignore_incorrect_picture_mxf_type true to try loading MXF files marked as monoscopic * as stereoscopic if the monoscopic load fails; fixes problems some 3D DCPs that (I think) * have an incorrect descriptor in their MXF. */ - void read (std::vector* notes = 0, bool ignore_incorrect_picture_mxf_type = false); + void read (std::vector* notes = nullptr, bool ignore_incorrect_picture_mxf_type = false); /** Compare this DCP with another, according to various options. * @param other DCP to compare this one to. @@ -104,20 +125,38 @@ public: void add (std::shared_ptr cpl); std::vector> cpls () const; + + /** @param ignore_unresolved true to silently ignore unresolved assets, otherwise + * an exception is thrown if they are found. + * @return All assets (including CPLs). + */ std::vector> assets (bool ignore_unresolved = false) const; bool any_encrypted () const; bool all_encrypted () const; + /** Add a KDM to decrypt this DCP. This method must be called after DCP::read() + * or the KDM you specify will be ignored. + * @param kdm KDM to use. + */ void add (DecryptedKDM const &); + /** Write all the XML files for this DCP + * @param standand INTEROP or SMPTE + * @param issuer Value for the PKL and AssetMap tags + * @param creator Value for the PKL and AssetMap tags + * @param issue_date Value for the CPL tags + * @param annotation_text Value for the CPL tags + * @param signer Signer to use + * @param name_format Name format to use for the CPL and PKL filenames + */ void write_xml ( Standard standard, std::string issuer = String::compose("libdcp %1", dcp::version), std::string creator = String::compose("libdcp %1", dcp::version), std::string issue_date = LocalTime().as_string(), std::string annotation_text = String::compose("Created by libdcp %1", dcp::version), - std::shared_ptr signer = std::shared_ptr (), + std::shared_ptr signer = std::shared_ptr(), NameFormat name_format = NameFormat("%t") ); @@ -171,6 +210,8 @@ private: boost::optional _standard; }; + } + #endif -- cgit v1.2.3