Merge branch '1.0' of git.carlh.net:git/libdcp into 1.0
[libdcp.git] / src / mxf.h
index 525ac701c1b0542d13dfc57b63cc8da35a08f49b..f0ad4bd837cf2671312a6194a9467f195ae271b7 100644 (file)
--- a/src/mxf.h
+++ b/src/mxf.h
@@ -30,6 +30,10 @@ namespace ASDCP {
        class AESDecContext;
 }
 
+/* Undefine some stuff that the OS X 10.5 SDK defines */
+#undef Key
+#undef set_key
+
 namespace dcp
 {
 
@@ -45,13 +49,10 @@ public:
        MXF (boost::filesystem::path file);
        ~MXF ();
 
-       /** @return the 4-character key type for this MXF (MDIK, MDAK, etc.) */
-       virtual std::string key_type () const = 0;
-       
        bool equals (
-               boost::shared_ptr<const Content> other,
+               boost::shared_ptr<const Asset> other,
                EqualityOptions opt,
-               boost::function<void (NoteType, std::string)> note
+               NoteHandler note
                ) const;
 
        /** Fill in a ADSCP::WriteInfo struct.
@@ -101,13 +102,29 @@ public:
                return _metadata;
        }
 
-protected:
-       std::string pkl_type () const {
-               return "application/x-smpte-mxf";
+       Fraction edit_rate () const {
+               return _edit_rate;
+       }
+
+       /** @return The total length of this content in video frames.
+        *  The amount of content presented may be less than this.
+        */
+       int64_t intrinsic_duration () const {
+               return _intrinsic_duration;
        }
        
+protected:
+       friend class MXFWriter;
+
+       std::string pkl_type (Standard standard) const;
        void read_writer_info (ASDCP::WriterInfo const &);
        
+       Fraction _edit_rate;
+       /** The total length of this content in video frames.  The amount of
+        *  content presented may be less than this.
+        */
+       int64_t _intrinsic_duration;
+       
        ASDCP::AESEncContext* _encryption_context;
        ASDCP::AESDecContext* _decryption_context;
        /** ID of the key used for encryption/decryption, or an empty string */