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);
m_md_lookup.insert(std::map<UL, ui32_t>::value_type(TmpUL, index));
m_md_rev_lookup.insert(std::map<ui32_t, UL>::value_type(index, TmpUL));
+ m_md_sym_lookup.insert(std::map<std::string, ui32_t>::value_type(Entry.name, index));
m_MDD_Table[index] = Entry;
return result;
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;
}
}
- return &m_MDD_Table[(*i).second];
+ return &m_MDD_Table[i->second];
+}
+
+//
+const ASDCP::MDDEntry*
+ASDCP::Dictionary::FindSymbol(const std::string& str) const
+{
+ assert(m_MDD_Table[0].name[0]);
+ std::map<std::string, ui32_t>::const_iterator i = m_md_sym_lookup.find(str);
+
+ if ( i == m_md_sym_lookup.end() )
+ {
+ Kumu::DefaultLogSink().Warn("UL Dictionary: unknown symbol: %s\n", str.c_str());
+ return 0;
+ }
+
+ return &m_MDD_Table[i->second];
}
//