UL dict final
authorjhurst <jhurst@cinecert.com>
Wed, 20 May 2009 04:37:31 +0000 (04:37 +0000)
committerjhurst <>
Wed, 20 May 2009 04:37:31 +0000 (04:37 +0000)
src/Dict.cpp
src/KLV.h
src/MDD.h
src/MXF.cpp
src/h__Reader.cpp
src/h__Writer.cpp

index 3853e22f7b09840987ccb7444c8d0b732dd49d15..d50a836dc06e4743dc0d4a7054958722ec2424c2 100755 (executable)
@@ -124,6 +124,19 @@ ASDCP::DefaultSMPTEDict()
   return s_SMPTEDict;
 }
 
+//
+const ASDCP::MDDEntry&
+ASDCP::MXFInterop_OPAtom_Entry() {
+  return s_MDD_Table[MDD_MXFInterop_OPAtom];
+}
+
+//
+const ASDCP::MDDEntry&
+ASDCP::SMPTE_390_OPAtom_Entry() {
+  return s_MDD_Table[MDD_OPAtom];
+}
+
+
 //------------------------------------------------------------------------------------------
 //
 
@@ -164,6 +177,12 @@ ASDCP::Dictionary::Init()
 bool
 ASDCP::Dictionary::AddEntry(const MDDEntry& Entry, ui32_t index)
 {
+  if ( index >= (ui32_t)MDD_Max )
+    {
+      Kumu::DefaultLogSink().Warn("UL Dictionary: index exceeds maximum: %d\n", index);
+      return false;
+    }
+
   bool result = true;
   // is this index already there?
   std::map<ui32_t, ASDCP::UL>::iterator rii = m_md_rev_lookup.find(index);
@@ -226,7 +245,7 @@ ASDCP::Dictionary::Type(MDD_t type_id) const
   std::map<ui32_t, ASDCP::UL>::const_iterator rii = m_md_rev_lookup.find(type_id);
 
   if ( rii == m_md_rev_lookup.end() )
-    Kumu::DefaultLogSink().Warn("Unknown UL type_id: %d\n", type_id);
+    Kumu::DefaultLogSink().Warn("UL Dictionary: unknown UL type_id: %d\n", type_id);
 
   return m_MDD_Table[type_id];
 }
@@ -250,7 +269,7 @@ ASDCP::Dictionary::FindUL(const byte_t* ul_buf) const
        {
          char buf[64];
          UL TmpUL(ul_buf);
-         Kumu::DefaultLogSink().Warn("Unknown UL: %s\n", TmpUL.EncodeString(buf, 64));
+         Kumu::DefaultLogSink().Warn("UL Dictionary: unknown UL: %s\n", TmpUL.EncodeString(buf, 64));
          return 0;
        }
     }
index 86c5a815c6d35e6585fc15e882037d1b9b53bb5c..68d5a3cf7b5c36a98e9c427b7f3f37f1927f6711 100755 (executable)
--- a/src/KLV.h
+++ b/src/KLV.h
@@ -134,6 +134,9 @@ inline const char* ui64sz(ui64_t i, char* buf)
     const char*   name;
   };
 
+  const MDDEntry& MXFInterop_OPAtom_Entry();
+  const MDDEntry& SMPTE_390_OPAtom_Entry();
+
   //
   class Dictionary
     {
index b8dd101c0d255acc3fa23ffdd6645bcaa7b2a6ff..0d252fe331a83d355e8e9dae12a48064cd33db24 100755 (executable)
--- a/src/MDD.h
+++ b/src/MDD.h
@@ -312,13 +312,9 @@ namespace ASDCP {
        MDD_Core_IndexSID, // 274
        MDD_Core_OperationalPattern, // 275
        MDD_Core_EssenceContainers, // 276
-
        MDD_Max
     }; // enum MDD_t
 
-    //    const ui32_t MDD_Table_size = (ui32_t)MDD_Max;
-
     //
     const MDD_t MDD_EssenceContainerData_BodySID = MDD_Core_BodySID;
     const MDD_t MDD_IndexTableSegmentBase_IndexSID = MDD_Core_IndexSID;
index 9ea0150db4f669bc70615cbbb92301ea88b6ce0c..952de7e7e3360fd1a54e249fadd224e923e0a84e 100755 (executable)
@@ -710,8 +710,8 @@ ASDCP::MXF::OPAtomHeader::InitFromFile(const Kumu::FileReader& Reader)
 
   // is it really OP-Atom?
   assert(m_Dict);
-  UL OPAtomUL(m_Dict->ul(MDD_OPAtom));
-  UL InteropOPAtomUL(m_Dict->ul(MDD_MXFInterop_OPAtom));
+  UL OPAtomUL(SMPTE_390_OPAtom_Entry().ul);
+  UL InteropOPAtomUL(MXFInterop_OPAtom_Entry().ul);
 
   if ( OperationalPattern == OPAtomUL ) // SMPTE
     {
index d36e1cc680102e70b4a2b5b06e937b0fe5b3b7d4..6d74b9d9e7a042e3a8bcca1652481e8002dea3ba 100755 (executable)
@@ -63,8 +63,8 @@ ASDCP::h__Reader::InitInfo()
   InterchangeObject* Object;
 
   m_Info.LabelSetType = LS_MXF_UNKNOWN;
-  UL OPAtomUL(m_Dict->ul(MDD_OPAtom));
-  UL Interop_OPAtomUL(m_Dict->ul(MDD_MXFInterop_OPAtom));
+  UL OPAtomUL(SMPTE_390_OPAtom_Entry().ul);
+  UL Interop_OPAtomUL(MXFInterop_OPAtom_Entry().ul);
 
   if ( m_HeaderPart.OperationalPattern == Interop_OPAtomUL )
     m_Info.LabelSetType = LS_MXF_INTEROP;
@@ -217,8 +217,7 @@ ASDCP::h__Reader::ReadEKLVPacket(ui32_t FrameNum, ui32_t SequenceNum, ASDCP::Fra
   m_LastPosition = m_LastPosition + Reader.KLLength() + PacketLength;
   assert(m_Dict);
 
-  if ( memcmp(Key.Value(), m_Dict->ul(MDD_CryptEssence), Key.Size() - 1) == 0  // ignore the stream numbers
-       || memcmp(Key.Value(), m_Dict->ul(MDD_MXFInterop_CryptEssence), Key.Size() - 1) == 0 )
+  if ( memcmp(Key.Value(), m_Dict->ul(MDD_CryptEssence), Key.Size() - 1) == 0 )  // ignore the stream numbers
     {
       if ( ! m_Info.EncryptedEssence )
        {
index 97c1ba8afc85d601d71dbb8fc393f22b378d0279..69873b65fb59611eff9b62c702e4be0bc20b0044 100755 (executable)
@@ -523,9 +523,6 @@ ASDCP::h__Writer::WriteEKLVPacket(const ASDCP::FrameBuffer& FrameBuf, const byte
 
       if ( ASDCP_SUCCESS(result) )
        { // write UL
-         //      if ( m_Info.LabelSetType == LS_MXF_INTEROP )
-         //        Overhead.WriteRaw(m_Dict->ul(MDD_MXFInterop_CryptEssence), SMPTE_UL_LENGTH);
-         //      else
          Overhead.WriteRaw(m_Dict->ul(MDD_CryptEssence), SMPTE_UL_LENGTH);
 
          // construct encrypted triplet header
@@ -625,10 +622,6 @@ ASDCP::h__Writer::WriteMXFFooter()
   assert(m_Dict);
   // re-label the partition
   UL OPAtomUL(m_Dict->ul(MDD_OPAtom));
-
-  //  if ( m_Info.LabelSetType == LS_MXF_INTEROP )
-  //    OPAtomUL.Set(m_Dict->ul(MDD_MXFInterop_OPAtom));
-  
   m_HeaderPart.OperationalPattern = OPAtomUL;
   m_HeaderPart.m_Preface->OperationalPattern = m_HeaderPart.OperationalPattern;