m_md_lookup.clear();
memset(m_MDD_Table, 0, sizeof(m_MDD_Table));
- for ( ui32_t x = 0; x < (ui32_t)ASDCP::MDD_Max; x++ )
+ for ( ui32_t x = 0; x < (ui32_t)ASDCP::MDD_Max; ++x )
{
if ( x == MDD_PartitionMetadata_IndexSID_DEPRECATED // 30
|| x == MDD_PartitionMetadata_BodySID_DEPRECATED // 32
+ || x == MDD_PartitionMetadata_OperationalPattern_DEPRECATED // 33
|| x == MDD_PartitionMetadata_EssenceContainers_DEPRECATED // 34
|| x == MDD_IndexTableSegmentBase_IndexSID_DEPRECATED // 56
|| x == MDD_IndexTableSegmentBase_BodySID_DEPRECATED // 57
|| x == MDD_PartitionArray_RandomIndexMetadata_BodySID_DEPRECATED // 73
+ || x == MDD_Preface_OperationalPattern_DEPRECATED // 84
|| x == MDD_Preface_EssenceContainers_DEPRECATED // 85
|| x == MDD_EssenceContainerData_IndexSID_DEPRECATED // 103
|| x == MDD_EssenceContainerData_BodySID_DEPRECATED // 104
+ || x == MDD_TimedTextResourceSubDescriptor_EssenceStreamID_DEPRECATED // 264
|| x == MDD_DMSegment_DataDefinition_DEPRECATED // 266
|| x == MDD_DMSegment_Duration_DEPRECATED // 267
- || x == MDD_PartitionMetadata_OperationalPattern_DEPRECATED // 33
- || x == MDD_Preface_OperationalPattern_DEPRECATED // 84
- || x == MDD_TimedTextResourceSubDescriptor_EssenceStreamID_DEPRECATED // 264
)
continue;
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;
}
}
- 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];
}
//