summaryrefslogtreecommitdiff
path: root/src/mxf.h
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2014-01-17 22:16:05 +0000
committerCarl Hetherington <cth@carlh.net>2014-01-17 22:16:05 +0000
commit9fd79fb05fa47833ed431d83d73fd6d9a4a9f774 (patch)
treece80b7905738eb342536f48ebb1712ad0f47ab1f /src/mxf.h
parentf389d903e967f44a5d6eed60df48bd5a89994bb2 (diff)
Asset -> MXF in some cases.
Diffstat (limited to 'src/mxf.h')
-rw-r--r--src/mxf.h126
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