Update copyright date.
[asdcplib.git] / src / MXF.h
index a38b6dbcdd05b332f13e9b45e2324fe1a0d6e379..f3c244907af75ba2fe6a7b70fa53b015b5e0c2a2 100755 (executable)
--- a/src/MXF.h
+++ b/src/MXF.h
@@ -40,6 +40,16 @@ namespace ASDCP
     {
       class InterchangeObject;
 
+      //
+      typedef ASDCP::MXF::InterchangeObject* (*MXFObjectFactory_t)();
+
+      //
+      void SetObjectFactory(UL label, MXFObjectFactory_t factory);
+
+      //
+      InterchangeObject* CreateObject(const byte_t* label);
+
+
       // seek an open file handle to the start of the RIP KLV packet
       Result_t SeekToRIP(const Kumu::FileReader&);
       
@@ -89,6 +99,7 @@ namespace ASDCP
          virtual ~RIP() {}
          virtual Result_t InitFromFile(const Kumu::FileReader& Reader);
          virtual Result_t WriteToFile(Kumu::FileWriter& Writer);
+         virtual Result_t GetPairBySID(ui32_t, Pair&) const;
          virtual void     Dump(FILE* = 0);
        };
 
@@ -200,9 +211,6 @@ namespace ASDCP
          virtual void     Dump(FILE* stream = 0);
        };
 
-      //
-      InterchangeObject* CreateObject(const byte_t* label);
-
       //
       class Preface : public InterchangeObject
        {
@@ -259,6 +267,9 @@ namespace ASDCP
              i8_t               KeyFrameOffset;
              ui8_t              Flags;
              ui64_t             StreamOffset;
+
+             // if you use these, you will need to change CBRIndexEntriesPerSegment in MXF.cpp
+             // to a more suitable value
              //              std::list<ui32_t>  SliceOffset;
              //              Array<Rational>    PosTable;
 
@@ -290,7 +301,6 @@ namespace ASDCP
 
       //---------------------------------------------------------------------------------
       //
-      class h__PacketList; // See MXF.cpp
       class Identification;
       class SourcePackage;
 
@@ -311,7 +321,9 @@ namespace ASDCP
          virtual Result_t InitFromFile(const Kumu::FileReader& Reader);
          virtual Result_t WriteToFile(Kumu::FileWriter& Writer, ui32_t HeaderLength = 16384);
          virtual void     Dump(FILE* = 0);
+         virtual Result_t GetMDObjectByID(const UUID&, InterchangeObject** = 0);
          virtual Result_t GetMDObjectByType(const byte_t*, InterchangeObject** = 0);
+         virtual Result_t GetMDObjectsByType(const byte_t* ObjectID, std::list<InterchangeObject*>& ObjectList);
          Identification*  GetIdentification();
          SourcePackage*   GetSourcePackage();
        };
@@ -336,7 +348,7 @@ namespace ASDCP
          virtual Result_t WriteToFile(Kumu::FileWriter& Writer, ui64_t duration);
          virtual void     Dump(FILE* = 0);
 
-         virtual Result_t Lookup(ui32_t frame_num, IndexTableSegment::IndexEntry&);
+         virtual Result_t Lookup(ui32_t frame_num, IndexTableSegment::IndexEntry&) const;
          virtual void     PushIndexEntry(const IndexTableSegment::IndexEntry&);
          virtual void     SetIndexParamsCBR(IPrimerLookup* lookup, ui32_t size, const Rational& Rate);
          virtual void     SetIndexParamsVBR(IPrimerLookup* lookup, const Rational& Rate, Kumu::fpos_t offset);