diff options
| author | Carl Hetherington <cth@carlh.net> | 2014-01-17 22:16:05 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2014-01-17 22:16:05 +0000 |
| commit | 9fd79fb05fa47833ed431d83d73fd6d9a4a9f774 (patch) | |
| tree | ce80b7905738eb342536f48ebb1712ad0f47ab1f /src/mxf.h | |
| parent | f389d903e967f44a5d6eed60df48bd5a89994bb2 (diff) | |
Asset -> MXF in some cases.
Diffstat (limited to 'src/mxf.h')
| -rw-r--r-- | src/mxf.h | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/src/mxf.h b/src/mxf.h new file mode 100644 index 00000000..3e9e6666 --- /dev/null +++ b/src/mxf.h @@ -0,0 +1,126 @@ +/* + Copyright (C) 2012 Carl Hetherington <cth@carlh.net> + + 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. + +*/ + +#ifndef LIBDCP_MXF_ASSET_H +#define LIBDCP_MXF_ASSET_H + +#include <boost/signals2.hpp> +#include "content_asset.h" +#include "key.h" +#include "metadata.h" + +namespace ASDCP { + class AESEncContext; + class AESDecContext; +} + +namespace dcp +{ + +class MXFMetadata; + +/** @class MXF + * @brief Parent class for classes which represent MXF files. + */ +class MXF : public ContentAsset +{ +public: + /** Construct an MXF. + * This class will not write anything to disk in this constructor, but subclasses may. + * + * @param directory Directory where MXF file is. + * @param file_name Name of MXF file. + */ + MXF (boost::filesystem::path directory, boost::filesystem::path file_name); + + ~MXF (); + + virtual bool equals (boost::shared_ptr<const ContentAsset> other, EqualityOptions opt, boost::function<void (NoteType, std::string)> note) const; + virtual void write_to_cpl (xmlpp::Element *) const; + virtual std::string key_type () const = 0; + + /** Fill in a ADSCP::WriteInfo struct. + * @param w struct to fill in. + */ + void fill_writer_info (ASDCP::WriterInfo* w); + + void set_progress (boost::signals2::signal<void (float)>* progress) { + _progress = progress; + } + + bool encrypted () const { + return !_key_id.empty (); + } + + void set_key_id (std::string i) { + _key_id = i; + } + + std::string key_id () const { + return _key_id; + } + + void set_key (Key); + + boost::optional<Key> key () const { + return _key; + } + + ASDCP::AESEncContext* encryption_context () const { + return _encryption_context; + } + + void set_metadata (MXFMetadata m) { + _metadata = m; + } + + MXFMetadata metadata () const { + return _metadata; + } + + /** Set whether or not the asset should be written in Interop mode. + * @param i true to use interop. + */ + void set_interop (bool i) { + _interop = i; + } + + bool interop () const { + return _interop; + } + +protected: + virtual std::string cpl_node_name () const = 0; + virtual std::pair<std::string, std::string> cpl_node_attribute () const { + return std::make_pair ("", ""); + } + + /** Signal to emit to report progress, or 0 */ + boost::signals2::signal<void (float)>* _progress; + ASDCP::AESEncContext* _encryption_context; + ASDCP::AESDecContext* _decryption_context; + std::string _key_id; + boost::optional<Key> _key; + MXFMetadata _metadata; + bool _interop; +}; + +} + +#endif |
