diff options
| author | Carl Hetherington <cth@carlh.net> | 2016-01-04 14:45:31 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2016-01-04 14:45:31 +0000 |
| commit | e18e48ce04852c5418099a9f1e4c6928eb03cbd7 (patch) | |
| tree | 916c7f7594e6b0da74162366545d36976f7171c3 /src/cpl.h | |
| parent | 59e8364fd9390d3285e15a5491c7b1876fe9696b (diff) | |
Make specific DCP CPL class.
Diffstat (limited to 'src/cpl.h')
| -rw-r--r-- | src/cpl.h | 120 |
1 files changed, 12 insertions, 108 deletions
@@ -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 <AnnotationText> node */ - std::string annotation_text () const { - return _annotation_text; - } - - /** @return contents of the <ContentTitleText> node */ - std::string content_title_text () const { - return _content_title_text; - } - - /** @return contents of the <Id> node within <ContentVersion> */ - void set_content_version_id (std::string id) { - _content_version_id = id; - } - - /** @return contents of the <LabelText> node within <ContentVersion> */ - 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; ///< <AnnotationText> - /** <Issuer>, <Creator> and <IssueDate>. These are grouped - * because they occur together in a few places. - */ - XMLMetadata _metadata; - std::string _content_title_text; ///< <ContentTitleText> - ContentKind _content_kind; ///< <ContentKind> - std::string _content_version_id; ///< <Id> in <ContentVersion> - std::string _content_version_label_text; ///< <LabelText> in <ContentVersion> - 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 +}; |
