summaryrefslogtreecommitdiff
path: root/src/cpl.h
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2016-01-04 14:45:31 +0000
committerCarl Hetherington <cth@carlh.net>2016-01-04 14:45:31 +0000
commite18e48ce04852c5418099a9f1e4c6928eb03cbd7 (patch)
tree916c7f7594e6b0da74162366545d36976f7171c3 /src/cpl.h
parent59e8364fd9390d3285e15a5491c7b1876fe9696b (diff)
Make specific DCP CPL class.
Diffstat (limited to 'src/cpl.h')
-rw-r--r--src/cpl.h120
1 files changed, 12 insertions, 108 deletions
diff --git a/src/cpl.h b/src/cpl.h
index b616aeaa..69b16368 100644
--- a/src/cpl.h
+++ b/src/cpl.h
@@ -1,7 +1,7 @@
/*
- Copyright (C) 2014 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2012-2016 Carl Hetherington <cth@carlh.net>
- This program is free software; you -can redistribute it and/or modify
+ 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.
@@ -17,121 +17,25 @@
*/
-/** @file src/cpl.h
- * @brief CPL class.
- */
-
-#ifndef LIBDCP_CPL_H
-#define LIBDCP_CPL_H
-
-#include "types.h"
-#include "certificate.h"
-#include "key.h"
#include "asset.h"
-#include "metadata.h"
-#include <libxml++/libxml++.h>
-#include <boost/shared_ptr.hpp>
-#include <boost/function.hpp>
-#include <boost/optional.hpp>
-#include <boost/filesystem.hpp>
-#include <list>
-namespace dcp {
+namespace dcp
+{
-class ReelAsset;
-class Reel;
-class XMLMetadata;
-class MXFMetadata;
-class CertificateChain;
class DecryptedKDM;
-/** @class CPL
- * @brief A Composition Playlist.
- */
class CPL : public Asset
{
public:
- CPL (std::string annotation_text, ContentKind content_kind);
+ CPL ();
CPL (boost::filesystem::path file);
- bool equals (
- boost::shared_ptr<const Asset> other,
- EqualityOptions options,
- NoteHandler note
- ) const;
-
- void add (boost::shared_ptr<Reel> reel);
- void add (DecryptedKDM const &);
-
- /** @return contents of the &lt;AnnotationText&gt; node */
- std::string annotation_text () const {
- return _annotation_text;
- }
-
- /** @return contents of the &lt;ContentTitleText&gt; node */
- std::string content_title_text () const {
- return _content_title_text;
- }
-
- /** @return contents of the &lt;Id&gt; node within &lt;ContentVersion&gt; */
- void set_content_version_id (std::string id) {
- _content_version_id = id;
- }
-
- /** @return contents of the &lt;LabelText&gt; node within &lt;ContentVersion&gt; */
- void set_content_version_label_text (std::string text) {
- _content_version_label_text = text;
- }
-
- /** @return the type of the content, used by media servers
- * to categorise things (e.g. feature, trailer, etc.)
- */
- ContentKind content_kind () const {
- return _content_kind;
- }
-
- /** @return the reels in this CPL */
- std::list<boost::shared_ptr<Reel> > reels () const {
- return _reels;
- }
-
- /** @return the ReelAssets in this CPL in all reels.
- */
- std::list<boost::shared_ptr<const ReelAsset> > reel_assets () const;
-
- bool encrypted () const;
-
- void set_metadata (XMLMetadata m) {
- _metadata = m;
- }
-
- void write_xml (
- boost::filesystem::path file,
- Standard standard,
- boost::shared_ptr<const CertificateChain>
- ) const;
-
- void resolve_refs (std::list<boost::shared_ptr<Asset> >);
-
- int64_t duration () const;
-
-protected:
- /** @return type string for PKLs for this asset */
- std::string pkl_type (Standard standard) const;
-
-private:
- std::string _annotation_text; ///< &lt;AnnotationText&gt;
- /** &lt;Issuer&gt;, &lt;Creator&gt; and &lt;IssueDate&gt;. These are grouped
- * because they occur together in a few places.
- */
- XMLMetadata _metadata;
- std::string _content_title_text; ///< &lt;ContentTitleText&gt;
- ContentKind _content_kind; ///< &lt;ContentKind&gt;
- std::string _content_version_id; ///< &lt;Id&gt; in &lt;ContentVersion&gt;
- std::string _content_version_label_text; ///< &lt;LabelText&gt; in &lt;ContentVersion&gt;
- std::list<boost::shared_ptr<Reel> > _reels;
+ virtual void resolve_refs (std::list<boost::shared_ptr<Asset> >) = 0;
+ virtual int64_t duration () const = 0;
+ virtual bool encrypted () const = 0;
+ virtual void add (DecryptedKDM const &) = 0;
+ /** @return string to use for AnnotationText in a PKL */
+ virtual std::string pkl_annotation () const = 0;
};
-}
-
-#endif
+};