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];
+}
+
+
//------------------------------------------------------------------------------------------
//
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);
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];
}
{
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;
}
}
const char* name;
};
+ const MDDEntry& MXFInterop_OPAtom_Entry();
+ const MDDEntry& SMPTE_390_OPAtom_Entry();
+
//
class Dictionary
{
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;
// 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
{
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;
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 )
{
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
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;