Support file:// URI-style file specifiers in asset map.
[libdcp.git] / src / content.h
index 75e39a010b92f65868cba970bf6e0bb5125dd8da..2059c8f54a9380339b675aaf16b00ee51472f8e7 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2012 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2012-2014 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
 
 */
 
+/** @file  src/content.h
+ *  @brief Content class.
+ */
+
 #ifndef LIBDCP_CONTENT_H
 #define LIBDCP_CONTENT_H
 
-#include <string>
-#include <list>
-#include <boost/filesystem.hpp>
-#include <boost/function.hpp>
-#include <libxml++/libxml++.h>
 #include "types.h"
 #include "asset.h"
+#include <libxml++/libxml++.h>
+#include <boost/filesystem.hpp>
+#include <boost/function.hpp>
+#include <string>
+#include <list>
 
 namespace ASDCP {
        class WriterInfo;
@@ -48,65 +52,30 @@ class Content : public Asset
 {
 public:
        Content (boost::filesystem::path file);
-       Content (int edit_rate);
-
+       Content (Fraction edit_rate);
        virtual ~Content () {}
 
-       /** Write details of the asset to a PKL AssetList node.
-        *  @param p Parent node.
-        */
-       void write_to_pkl (xmlpp::Node *) const;
-
-       /** Write details of the asset to a ASSETMAP stream.
-        *  @param s Stream.
-        */
-       void write_to_assetmap (xmlpp::Node *) const;
-
-       boost::filesystem::path file () const {
-               return _file;
-       }
-
-       void set_file (boost::filesystem::path file) {
-               _file = file;
-       }
+       bool equals (
+               boost::shared_ptr<const Content> other,
+               EqualityOptions opt,
+               boost::function<void (NoteType, std::string)>
+               ) const;
 
-       int edit_rate () const {
+       Fraction edit_rate () const {
                return _edit_rate;
        }
 
-       void set_edit_rate (int r) {
-               _edit_rate = r;
-       }
-
-       void set_entry_point (int64_t p) {
-               _entry_point = p;
-       }
-
        int64_t intrinsic_duration () const {
                return _intrinsic_duration;
        }
 
-       void set_intrinsic_duration (int64_t d) {
-               _intrinsic_duration = d;
-       }
-
-       int64_t duration () const {
-               return _duration;
-       }
-
-       void set_duration (int64_t d) {
-               _duration = d;
-       }
-
-       virtual bool equals (boost::shared_ptr<const Content> other, EqualityOptions opt, boost::function<void (NoteType, std::string)>) const;
-
 protected:
-       boost::filesystem::path _file;
-       /** The edit rate; this is normally equal to the number of video frames per second */
-       int _edit_rate;
-       int64_t _entry_point;
+       friend class MXFWriter;
+
+       virtual std::string asdcp_kind () const = 0;
+       
+       Fraction _edit_rate;
        int64_t _intrinsic_duration;
-       int64_t _duration;
 };
 
 }