diff options
| author | jhurst <jhurst@cinecert.com> | 2009-05-19 21:51:08 +0000 |
|---|---|---|
| committer | jhurst <> | 2009-05-19 21:51:08 +0000 |
| commit | 7088ba5125e89164ccf1d4d810b819bdd2e3ccff (patch) | |
| tree | 4b19cbc2efed408c7db2faad25349f57a08d20ae | |
| parent | 8243e05863f05772b1438c291d5f2fa79a69a8b7 (diff) | |
harder than it looks
| -rwxr-xr-x | src/AS_DCP_JP2K.cpp | 4 | ||||
| -rwxr-xr-x | src/AS_DCP_MPEG2.cpp | 2 | ||||
| -rwxr-xr-x | src/AS_DCP_MXF.cpp | 1 | ||||
| -rwxr-xr-x | src/AS_DCP_PCM.cpp | 2 | ||||
| -rw-r--r-- | src/AS_DCP_TimedText.cpp | 4 | ||||
| -rwxr-xr-x | src/Dict.cpp | 75 | ||||
| -rwxr-xr-x | src/Index.cpp | 6 | ||||
| -rwxr-xr-x | src/KLV.h | 2 | ||||
| -rw-r--r-- | src/MDD.cpp | 12 | ||||
| -rwxr-xr-x | src/MDD.h | 46 | ||||
| -rwxr-xr-x | src/MXF.cpp | 13 | ||||
| -rwxr-xr-x | src/Metadata.cpp | 109 | ||||
| -rwxr-xr-x | src/h__Reader.cpp | 2 | ||||
| -rwxr-xr-x | src/h__Writer.cpp | 19 |
14 files changed, 249 insertions, 48 deletions
diff --git a/src/AS_DCP_JP2K.cpp b/src/AS_DCP_JP2K.cpp index ed8a923..009586a 100755 --- a/src/AS_DCP_JP2K.cpp +++ b/src/AS_DCP_JP2K.cpp @@ -359,6 +359,7 @@ lh__Reader::ReadFrame(ui32_t FrameNum, JP2K::FrameBuffer& FrameBuf, if ( ! m_File.IsOpen() ) return RESULT_INIT; + assert(m_Dict); return ReadEKLVFrame(FrameNum, FrameBuf, m_Dict->ul(MDD_JPEG2000Essence), Ctx, HMAC); } @@ -547,6 +548,7 @@ public: { ui32_t SequenceNum = FrameNum * 2; SequenceNum += ( phase == SP_RIGHT ) ? 2 : 1; + assert(m_Dict); result = ReadEKLVPacket(FrameNum, SequenceNum, FrameBuf, m_Dict->ul(MDD_JPEG2000Essence), Ctx, HMAC); } @@ -706,6 +708,7 @@ lh__Writer::JP2K_PDesc_to_MD(JP2K::PictureDescriptor& PDesc) // PixelLayout byte_t[PixelLayoutSize] = s_PixelLayoutXYZ // } + assert(m_Dict); if ( PDesc.StoredWidth < 2049 ) { PDescObj->PictureEssenceCoding.Set(m_Dict->ul(MDD_JP2KEssenceCompression_2K)); @@ -796,6 +799,7 @@ lh__Writer::OpenWrite(const char* filename, EssenceType_t type, ui32_t HeaderSiz ASDCP::Result_t lh__Writer::SetSourceStream(const PictureDescriptor& PDesc, const std::string& label, ASDCP::Rational LocalEditRate) { + assert(m_Dict); if ( ! m_State.Test_INIT() ) return RESULT_STATE; diff --git a/src/AS_DCP_MPEG2.cpp b/src/AS_DCP_MPEG2.cpp index 2370319..aac0ddc 100755 --- a/src/AS_DCP_MPEG2.cpp +++ b/src/AS_DCP_MPEG2.cpp @@ -252,6 +252,7 @@ ASDCP::Result_t ASDCP::MPEG2::MXFReader::h__Reader::ReadFrame(ui32_t FrameNum, FrameBuffer& FrameBuf, AESDecContext* Ctx, HMACContext* HMAC) { + assert(m_Dict); if ( ! m_File.IsOpen() ) return RESULT_INIT; @@ -453,6 +454,7 @@ ASDCP::MPEG2::MXFWriter::h__Writer::OpenWrite(const char* filename, ui32_t Heade ASDCP::Result_t ASDCP::MPEG2::MXFWriter::h__Writer::SetSourceStream(const VideoDescriptor& VDesc) { + assert(m_Dict); if ( ! m_State.Test_INIT() ) return RESULT_STATE; diff --git a/src/AS_DCP_MXF.cpp b/src/AS_DCP_MXF.cpp index 8ce4c55..7251b7d 100755 --- a/src/AS_DCP_MXF.cpp +++ b/src/AS_DCP_MXF.cpp @@ -164,6 +164,7 @@ ASDCP::Result_t ASDCP::EssenceType(const char* filename, EssenceType_t& type) { const Dictionary* m_Dict = &DefaultCompositeDict(); + assert(m_Dict); ASDCP_TEST_NULL_STR(filename); Kumu::FileReader Reader; diff --git a/src/AS_DCP_PCM.cpp b/src/AS_DCP_PCM.cpp index b709e8d..b24706f 100755 --- a/src/AS_DCP_PCM.cpp +++ b/src/AS_DCP_PCM.cpp @@ -267,6 +267,7 @@ ASDCP::PCM::MXFReader::h__Reader::ReadFrame(ui32_t FrameNum, FrameBuffer& FrameB if ( ! m_File.IsOpen() ) return RESULT_INIT; + assert(m_Dict); return ReadEKLVFrame(FrameNum, FrameBuf, m_Dict->ul(MDD_WAVEssence), Ctx, HMAC); } @@ -440,6 +441,7 @@ ASDCP::PCM::MXFWriter::h__Writer::SetSourceStream(const AudioDescriptor& ADesc) return RESULT_RAW_FORMAT; } + assert(m_Dict); m_ADesc = ADesc; Result_t result = PCM_ADesc_to_MD(m_ADesc, (WaveAudioDescriptor*)m_EssenceDescriptor); diff --git a/src/AS_DCP_TimedText.cpp b/src/AS_DCP_TimedText.cpp index 39a5c1a..c13b447 100644 --- a/src/AS_DCP_TimedText.cpp +++ b/src/AS_DCP_TimedText.cpp @@ -233,6 +233,7 @@ ASDCP::TimedText::MXFReader::h__Reader::ReadTimedTextResource(FrameBuffer& Frame if ( ! m_File.IsOpen() ) return RESULT_INIT; + assert(m_Dict); Result_t result = ReadEKLVFrame(0, FrameBuf, m_Dict->ul(MDD_TimedTextEssence), Ctx, HMAC); if( ASDCP_SUCCESS(result) ) @@ -317,6 +318,7 @@ ASDCP::TimedText::MXFReader::h__Reader::ReadAncillaryResource(const byte_t* uuid } // read the essence packet + assert(m_Dict); if( ASDCP_SUCCESS(result) ) result = ReadEKLVPacket(0, 1, FrameBuf, m_Dict->ul(MDD_GenericStream_DataElement), Ctx, HMAC); } @@ -515,6 +517,7 @@ ASDCP::TimedText::MXFWriter::h__Writer::SetSourceStream(ASDCP::TimedText::TimedT } m_EssenceStreamID = 10; + assert(m_Dict); if ( ASDCP_SUCCESS(result) ) { @@ -583,6 +586,7 @@ ASDCP::TimedText::MXFWriter::h__Writer::WriteAncillaryResource(const ASDCP::Time return RESULT_STATE; Kumu::fpos_t here = m_File.Tell(); + assert(m_Dict); // create generic stream partition header static UL GenericStream_DataElement(m_Dict->ul(MDD_GenericStream_DataElement)); diff --git a/src/Dict.cpp b/src/Dict.cpp index 0034110..b64032b 100755 --- a/src/Dict.cpp +++ b/src/Dict.cpp @@ -79,23 +79,14 @@ ASDCP::DefaultInteropDict() { s_InteropDict.Init(); - s_InteropDict.AddEntry(s_InteropDict.Type(MDD_MXFInterop_OPAtom), MDD_OPAtom); - s_InteropDict.AddEntry(s_InteropDict.Type(MDD_MXFInterop_CryptEssence), MDD_CryptEssence); - s_InteropDict.AddEntry(s_InteropDict.Type(MDD_MXFInterop_GenericDescriptor_SubDescriptors), + s_InteropDict.DeleteEntry(MDD_MXFInterop_OPAtom); + s_InteropDict.DeleteEntry(MDD_MXFInterop_CryptEssence); + s_InteropDict.DeleteEntry(MDD_MXFInterop_GenericDescriptor_SubDescriptors); + + s_InteropDict.AddEntry(s_MDD_Table[MDD_MXFInterop_OPAtom], MDD_OPAtom); + s_InteropDict.AddEntry(s_MDD_Table[MDD_MXFInterop_CryptEssence], MDD_CryptEssence); + s_InteropDict.AddEntry(s_MDD_Table[MDD_MXFInterop_GenericDescriptor_SubDescriptors], MDD_GenericDescriptor_SubDescriptors); - s_InteropDict.DeleteEntry(MDD_TimedTextWrapping); - s_InteropDict.DeleteEntry(MDD_TimedTextEssence); - s_InteropDict.DeleteEntry(MDD_TimedTextDescriptor); - s_InteropDict.DeleteEntry(MDD_TimedTextDescriptor_ResourceID); - s_InteropDict.DeleteEntry(MDD_TimedTextDescriptor_UCSEncoding); - s_InteropDict.DeleteEntry(MDD_TimedTextDescriptor_NamespaceURI); - s_InteropDict.DeleteEntry(MDD_TimedTextResourceSubDescriptor); - s_InteropDict.DeleteEntry(MDD_TimedTextResourceSubDescriptor_AncillaryResourceID); - s_InteropDict.DeleteEntry(MDD_TimedTextResourceSubDescriptor_MIMEMediaType); - s_InteropDict.DeleteEntry(MDD_TimedTextResourceSubDescriptor_EssenceStreamID); - s_InteropDict.DeleteEntry(MDD_GenericStreamPartition); - s_InteropDict.DeleteEntry(MDD_StereoscopicPictureSubDescriptor); - s_InteropDict.DeleteEntry(MDD_GenericStream_DataElement); s_InteropDictInit = true; } @@ -146,8 +137,27 @@ ASDCP::Dictionary::Init() m_md_lookup.clear(); memset(m_MDD_Table, 0, sizeof(m_MDD_Table)); - for ( ui32_t x = 0; x < ASDCP::MDD_Table_size; x++ ) - AddEntry(s_MDD_Table[x], 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_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_EssenceContainers_DEPRECATED // 85 + || x == MDD_EssenceContainerData_IndexSID_DEPRECATED // 103 + || x == MDD_EssenceContainerData_BodySID_DEPRECATED // 104 + || 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; + + AddEntry(s_MDD_Table[x], x); + } } // @@ -164,8 +174,22 @@ ASDCP::Dictionary::AddEntry(const MDDEntry& Entry, ui32_t index) result = false; } - m_md_lookup.insert(std::map<UL, ui32_t>::value_type(UL(Entry.ul), index)); - m_md_rev_lookup.insert(std::map<ui32_t, UL>::value_type(index, UL(Entry.ul))); +#ifdef MDD_AUTHORING_MODE + char buf[64]; + UL TmpUL(Entry.ul); + std::map<ASDCP::UL, ui32_t>::iterator ii = m_md_lookup.find(TmpUL); + if ( ii != m_md_lookup.end() ) + { + fprintf(stderr, "DUPE! %s (%02x, %02x) %s | (%02x, %02x) %s\n", + TmpUL.EncodeString(buf, 64), + m_MDD_Table[ii->second].tag.a, m_MDD_Table[ii->second].tag.b, + m_MDD_Table[ii->second].name, + Entry.tag.a, Entry.tag.b, Entry.name); + } +#endif + + 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_MDD_Table[index] = Entry; return result; @@ -197,6 +221,7 @@ ASDCP::Dictionary::DeleteEntry(ui32_t index) const ASDCP::MDDEntry& ASDCP::Dictionary::Type(MDD_t type_id) const { + assert(m_MDD_Table[0].name[0]); std::map<ui32_t, ASDCP::UL>::const_iterator rii = m_md_rev_lookup.find(type_id); if ( rii == m_md_rev_lookup.end() ) @@ -209,6 +234,7 @@ ASDCP::Dictionary::Type(MDD_t type_id) const const ASDCP::MDDEntry* ASDCP::Dictionary::FindUL(const byte_t* ul_buf) const { + assert(m_MDD_Table[0].name[0]); std::map<UL, ui32_t>::const_iterator i = m_md_lookup.find(UL(ul_buf)); if ( i == m_md_lookup.end() ) @@ -243,9 +269,12 @@ ASDCP::Dictionary::Dump(FILE* stream) const while ( di < MDD_Max ) { - MDDEntry TmpType = m_MDD_Table[di]; - UL TmpUL(TmpType.ul); - fprintf(stream, "%s: %s\n", TmpUL.EncodeString(str_buf, 64), TmpType.name); + if ( m_MDD_Table[di].name != 0 ) + { + UL TmpUL(m_MDD_Table[di].ul); + fprintf(stream, "%s: %s\n", TmpUL.EncodeString(str_buf, 64), m_MDD_Table[di].name); + } + di = (MDD_t)(di + 1); } } diff --git a/src/Index.cpp b/src/Index.cpp index 2449937..307e851 100755 --- a/src/Index.cpp +++ b/src/Index.cpp @@ -56,7 +56,7 @@ ASDCP::MXF::IndexTableSegment::InitFromTLVSet(TLVReader& TLVSet) if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(IndexTableSegmentBase, IndexDuration)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(IndexTableSegmentBase, EditUnitByteCount)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(IndexTableSegmentBase, IndexSID)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(IndexTableSegmentBase, BodySID)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(EssenceContainerData, BodySID)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(IndexTableSegmentBase, SliceCount)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(IndexTableSegmentBase, PosTableCount)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(IndexTableSegment, DeltaEntryArray)); @@ -74,7 +74,7 @@ ASDCP::MXF::IndexTableSegment::WriteToTLVSet(TLVWriter& TLVSet) if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(IndexTableSegmentBase, IndexDuration)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(IndexTableSegmentBase, EditUnitByteCount)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(IndexTableSegmentBase, IndexSID)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(IndexTableSegmentBase, BodySID)); + if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(EssenceContainerData, BodySID)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(IndexTableSegmentBase, SliceCount)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(IndexTableSegmentBase, PosTableCount)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(IndexTableSegment, DeltaEntryArray)); @@ -86,6 +86,7 @@ ASDCP::MXF::IndexTableSegment::WriteToTLVSet(TLVWriter& TLVSet) ASDCP::Result_t ASDCP::MXF::IndexTableSegment::InitFromBuffer(const byte_t* p, ui32_t l) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_IndexTableSegment)); return InterchangeObject::InitFromBuffer(p, l); } @@ -94,6 +95,7 @@ ASDCP::MXF::IndexTableSegment::InitFromBuffer(const byte_t* p, ui32_t l) ASDCP::Result_t ASDCP::MXF::IndexTableSegment::WriteToBuffer(ASDCP::FrameBuffer& Buffer) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_IndexTableSegment)); return InterchangeObject::WriteToBuffer(Buffer); } @@ -139,7 +139,7 @@ inline const char* ui64sz(ui64_t i, char* buf) { std::map<ASDCP::UL, ui32_t> m_md_lookup; std::map<ui32_t, ASDCP::UL> m_md_rev_lookup; - MDDEntry m_MDD_Table[ASDCP::MDD_Table_size]; + MDDEntry m_MDD_Table[(ui32_t)ASDCP::MDD_Max]; ASDCP_NO_COPY_CONSTRUCT(Dictionary); diff --git a/src/MDD.cpp b/src/MDD.cpp index 27c4cf1..92c151c 100644 --- a/src/MDD.cpp +++ b/src/MDD.cpp @@ -854,6 +854,18 @@ static const ASDCP::MDDEntry s_MDD_Table[] = { { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 272 0x06, 0x01, 0x01, 0x04, 0x06, 0x10, 0x00, 0x00 }, {0}, true, "MXFInterop_GenericDescriptor_SubDescriptors" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 273 + 0x01, 0x03, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00 }, + {0x3f, 0x07}, false, "BodySID" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 274 + 0x01, 0x03, 0x04, 0x05, 0x00, 0x00, 0x00, 0x00 }, + {0x3f, 0x06}, false, "IndexSID" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 275 + 0x01, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00 }, + {0x3b, 0x09}, false, "OperationalPattern" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 276 + 0x01, 0x02, 0x02, 0x10, 0x02, 0x01, 0x00, 0x00 }, + {0x3b, 0x0a}, false, "EssenceContainers" }, { {0}, {0}, false, 0 } }; @@ -65,11 +65,11 @@ namespace ASDCP { MDD_PartitionMetadata_FooterPartition, // 27 MDD_PartitionMetadata_HeaderByteCount, // 28 MDD_PartitionMetadata_IndexByteCount, // 29 - MDD_PartitionMetadata_IndexSID, // 30 + MDD_PartitionMetadata_IndexSID_DEPRECATED, // 30 MDD_PartitionMetadata_BodyOffset, // 31 - MDD_PartitionMetadata_BodySID, // 32 - MDD_PartitionMetadata_OperationalPattern, // 33 - MDD_PartitionMetadata_EssenceContainers, // 34 + MDD_PartitionMetadata_BodySID_DEPRECATED, // 32 + MDD_PartitionMetadata_OperationalPattern_DEPRECATED, // 33 + MDD_PartitionMetadata_EssenceContainers_DEPRECATED, // 34 MDD_OpenHeader, // 35 MDD_OpenCompleteHeader, // 36 MDD_ClosedHeader, // 37 @@ -91,8 +91,8 @@ namespace ASDCP { MDD_IndexTableSegmentBase_IndexStartPosition, // 53 MDD_IndexTableSegmentBase_IndexDuration, // 54 MDD_IndexTableSegmentBase_EditUnitByteCount, // 55 - MDD_IndexTableSegmentBase_IndexSID, // 56 - MDD_IndexTableSegmentBase_BodySID, // 57 + MDD_IndexTableSegmentBase_IndexSID_DEPRECATED, // 56 + MDD_IndexTableSegmentBase_BodySID_DEPRECATED, // 57 MDD_IndexTableSegmentBase_SliceCount, // 58 MDD_IndexTableSegmentBase_PosTableCount, // 59 MDD_IndexTableSegment, // 60 @@ -108,7 +108,7 @@ namespace ASDCP { MDD_IndexEntryArray_IndexTableSegment_SliceOffsetArray, // 70 MDD_IndexEntryArray_IndexTableSegment_PosTableArray, // 71 MDD_RandomIndexMetadata, // 72 - MDD_PartitionArray_RandomIndexMetadata_BodySID, // 73 + MDD_PartitionArray_RandomIndexMetadata_BodySID_DEPRECATED, // 73 MDD_PartitionArray_RandomIndexMetadata_ByteOffset, // 74 MDD_RandomIndexMetadata_Length, // 75 MDD_RandomIndexMetadataV10, // 76 @@ -119,8 +119,8 @@ namespace ASDCP { MDD_Preface_PrimaryPackage, // 81 MDD_Preface_Identifications, // 82 MDD_Preface_ContentStorage, // 83 - MDD_Preface_OperationalPattern, // 84 - MDD_Preface_EssenceContainers, // 85 + MDD_Preface_OperationalPattern_DEPRECATED, // 84 + MDD_Preface_EssenceContainers_DEPRECATED, // 85 MDD_Preface_DMSchemes, // 86 MDD_Identification, // 87 MDD_Identification_ThisGenerationUID, // 88 @@ -138,8 +138,8 @@ namespace ASDCP { MDD_ContentStorageKludge_V10Packages, // 100 MDD_EssenceContainerData, // 101 MDD_EssenceContainerData_LinkedPackageUID, // 102 - MDD_EssenceContainerData_IndexSID, // 103 - MDD_EssenceContainerData_BodySID, // 104 + MDD_EssenceContainerData_IndexSID_DEPRECATED, // 103 + MDD_EssenceContainerData_BodySID_DEPRECATED, // 104 MDD_GenericPackage_PackageUID, // 105 MDD_GenericPackage_Name, // 106 MDD_GenericPackage_PackageCreationDate, // 107 @@ -299,20 +299,36 @@ namespace ASDCP { MDD_TimedTextResourceSubDescriptor, // 261 MDD_TimedTextResourceSubDescriptor_AncillaryResourceID, // 262 MDD_TimedTextResourceSubDescriptor_MIMEMediaType, // 263 - MDD_TimedTextResourceSubDescriptor_EssenceStreamID, // 264 + MDD_TimedTextResourceSubDescriptor_EssenceStreamID_DEPRECATED, // 264 MDD_GenericStreamPartition, // 265 - MDD_DMSegment_DataDefinition, // 266 - MDD_DMSegment_Duration, // 267 + MDD_DMSegment_DataDefinition_DEPRECATED, // 266 + MDD_DMSegment_Duration_DEPRECATED, // 267 MDD_DMSegment_TrackIDList, // 268 MDD_StereoscopicPictureSubDescriptor, // 269 MDD_WaveAudioDescriptor_ChannelAssignment, // 270 MDD_GenericStream_DataElement, // 271 MDD_MXFInterop_GenericDescriptor_SubDescriptors, // 272 + MDD_Core_BodySID, // 273 + MDD_Core_IndexSID, // 274 + MDD_Core_OperationalPattern, // 275 + MDD_Core_EssenceContainers, // 276 + MDD_Max }; // enum MDD_t - const ui32_t MDD_Table_size = 273; + // 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; + const MDD_t MDD_EssenceContainerData_IndexSID = MDD_Core_IndexSID; + const MDD_t MDD_DMSegment_DataDefinition = MDD_StructuralComponent_DataDefinition; + const MDD_t MDD_DMSegment_Duration = MDD_StructuralComponent_Duration; + const MDD_t MDD_Preface_EssenceContainers = MDD_Core_EssenceContainers; + const MDD_t MDD_Preface_OperationalPattern = MDD_Core_OperationalPattern; + const MDD_t MDD_TimedTextResourceSubDescriptor_EssenceStreamID = MDD_Core_BodySID; + } // namespaceASDCP diff --git a/src/MXF.cpp b/src/MXF.cpp index 97d834e..9ea0150 100755 --- a/src/MXF.cpp +++ b/src/MXF.cpp @@ -113,6 +113,7 @@ ASDCP::MXF::RIP::GetPairBySID(ui32_t SID, Pair& outPair) const ASDCP::Result_t ASDCP::MXF::RIP::InitFromFile(const Kumu::FileReader& Reader) { + assert(m_Dict); Result_t result = KLVFilePacket::InitFromFile(Reader, m_Dict->ul(MDD_RandomIndexMetadata)); if ( ASDCP_SUCCESS(result) ) @@ -131,6 +132,7 @@ ASDCP::MXF::RIP::InitFromFile(const Kumu::FileReader& Reader) ASDCP::Result_t ASDCP::MXF::RIP::WriteToFile(Kumu::FileWriter& Writer) { + assert(m_Dict); ASDCP::FrameBuffer Buffer; ui32_t RIPSize = ( PairArray.size() * (sizeof(ui32_t) + sizeof(ui64_t)) ) + 4; Result_t result = Buffer.Capacity(RIPSize); @@ -435,6 +437,7 @@ ASDCP::MXF::Primer::ClearTagList() ASDCP::Result_t ASDCP::MXF::Primer::InitFromBuffer(const byte_t* p, ui32_t l) { + assert(m_Dict); Result_t result = KLVPacket::InitFromBuffer(p, l, m_Dict->ul(MDD_Primer)); if ( ASDCP_SUCCESS(result) ) @@ -475,6 +478,7 @@ ASDCP::MXF::Primer::WriteToFile(Kumu::FileWriter& Writer) ASDCP::Result_t ASDCP::MXF::Primer::WriteToBuffer(ASDCP::FrameBuffer& Buffer) { + assert(m_Dict); ASDCP::FrameBuffer LocalTagBuffer; Kumu::MemIOWriter MemWRT(Buffer.Data() + kl_length, Buffer.Capacity() - kl_length); Result_t result = LocalTagEntryBatch.Archive(&MemWRT) ? RESULT_OK : RESULT_KLV_CODING; @@ -551,6 +555,7 @@ ASDCP::MXF::Primer::TagForKey(const ASDCP::UL& Key, ASDCP::TagValue& Tag) void ASDCP::MXF::Primer::Dump(FILE* stream) { + assert(m_Dict); char identbuf[IdentBufferLen]; if ( stream == 0 ) @@ -611,6 +616,7 @@ ASDCP::MXF::Preface::WriteToTLVSet(TLVWriter& TLVSet) ASDCP::Result_t ASDCP::MXF::Preface::InitFromBuffer(const byte_t* p, ui32_t l) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_Preface)); return InterchangeObject::InitFromBuffer(p, l); } @@ -619,6 +625,7 @@ ASDCP::MXF::Preface::InitFromBuffer(const byte_t* p, ui32_t l) ASDCP::Result_t ASDCP::MXF::Preface::WriteToBuffer(ASDCP::FrameBuffer& Buffer) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_Preface)); return InterchangeObject::WriteToBuffer(Buffer); } @@ -702,6 +709,7 @@ ASDCP::MXF::OPAtomHeader::InitFromFile(const Kumu::FileReader& Reader) return result; // is it really OP-Atom? + assert(m_Dict); UL OPAtomUL(m_Dict->ul(MDD_OPAtom)); UL InteropOPAtomUL(m_Dict->ul(MDD_MXFInterop_OPAtom)); @@ -777,6 +785,7 @@ ASDCP::MXF::OPAtomHeader::InitFromPartitionBuffer(const byte_t* p, ui32_t l) ASDCP::Result_t ASDCP::MXF::OPAtomHeader::InitFromBuffer(const byte_t* p, ui32_t l) { + assert(m_Dict); Result_t result = RESULT_OK; const byte_t* end_p = p + l; @@ -798,7 +807,7 @@ ASDCP::MXF::OPAtomHeader::InitFromBuffer(const byte_t* p, ui32_t l) { delete object; } - else if ( object->IsA(m_Dict->ul(MDD_Primer)) ) + else if ( object->IsA(m_Dict->ul(MDD_Primer)) ) // TODO: only one primer should be found { delete object; result = m_Primer.InitFromBuffer(redo_p, end_p - redo_p); @@ -875,6 +884,7 @@ ASDCP::MXF::OPAtomHeader::GetSourcePackage() ASDCP::Result_t ASDCP::MXF::OPAtomHeader::WriteToFile(Kumu::FileWriter& Writer, ui32_t HeaderSize) { + assert(m_Dict); if ( m_Preface == 0 ) return RESULT_STATE; @@ -1079,6 +1089,7 @@ ASDCP::MXF::OPAtomIndexFooter::InitFromBuffer(const byte_t* p, ui32_t l) ASDCP::Result_t ASDCP::MXF::OPAtomIndexFooter::WriteToFile(Kumu::FileWriter& Writer, ui64_t duration) { + assert(m_Dict); ASDCP::FrameBuffer FooterBuffer; ui32_t footer_size = m_PacketList->m_List.size() * MaxIndexSegmentSize; // segment-count * max-segment-size Result_t result = FooterBuffer.Capacity(footer_size); diff --git a/src/Metadata.cpp b/src/Metadata.cpp index 76ae51f..fccf5a6 100755 --- a/src/Metadata.cpp +++ b/src/Metadata.cpp @@ -73,6 +73,7 @@ static InterchangeObject* StereoscopicPictureSubDescriptor_Factory(const Diction void ASDCP::MXF::Metadata_InitTypes(const Dictionary*& Dict) { + assert(Dict); SetObjectFactory(Dict->ul(MDD_Preface), Preface_Factory); SetObjectFactory(Dict->ul(MDD_IndexTableSegment), IndexTableSegment_Factory); @@ -115,6 +116,7 @@ ASDCP::MXF::Metadata_InitTypes(const Dictionary*& Dict) ASDCP::Result_t Identification::InitFromTLVSet(TLVReader& TLVSet) { + assert(m_Dict); Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ThisGenerationUID)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, CompanyName)); @@ -132,6 +134,7 @@ Identification::InitFromTLVSet(TLVReader& TLVSet) ASDCP::Result_t Identification::WriteToTLVSet(TLVWriter& TLVSet) { + assert(m_Dict); Result_t result = InterchangeObject::WriteToTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ThisGenerationUID)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, CompanyName)); @@ -171,6 +174,7 @@ Identification::Dump(FILE* stream) ASDCP::Result_t Identification::InitFromBuffer(const byte_t* p, ui32_t l) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_Identification)); return InterchangeObject::InitFromBuffer(p, l); } @@ -179,6 +183,7 @@ Identification::InitFromBuffer(const byte_t* p, ui32_t l) ASDCP::Result_t Identification::WriteToBuffer(ASDCP::FrameBuffer& Buffer) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_Identification)); return InterchangeObject::WriteToBuffer(Buffer); } @@ -190,6 +195,7 @@ Identification::WriteToBuffer(ASDCP::FrameBuffer& Buffer) ASDCP::Result_t ContentStorage::InitFromTLVSet(TLVReader& TLVSet) { + assert(m_Dict); Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(ContentStorage, Packages)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(ContentStorage, EssenceContainerData)); @@ -200,6 +206,7 @@ ContentStorage::InitFromTLVSet(TLVReader& TLVSet) ASDCP::Result_t ContentStorage::WriteToTLVSet(TLVWriter& TLVSet) { + assert(m_Dict); Result_t result = InterchangeObject::WriteToTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(ContentStorage, Packages)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(ContentStorage, EssenceContainerData)); @@ -227,6 +234,7 @@ ContentStorage::Dump(FILE* stream) ASDCP::Result_t ContentStorage::InitFromBuffer(const byte_t* p, ui32_t l) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_ContentStorage)); return InterchangeObject::InitFromBuffer(p, l); } @@ -235,6 +243,7 @@ ContentStorage::InitFromBuffer(const byte_t* p, ui32_t l) ASDCP::Result_t ContentStorage::WriteToBuffer(ASDCP::FrameBuffer& Buffer) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_ContentStorage)); return InterchangeObject::WriteToBuffer(Buffer); } @@ -246,6 +255,7 @@ ContentStorage::WriteToBuffer(ASDCP::FrameBuffer& Buffer) ASDCP::Result_t EssenceContainerData::InitFromTLVSet(TLVReader& TLVSet) { + assert(m_Dict); Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(EssenceContainerData, LinkedPackageUID)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(EssenceContainerData, IndexSID)); @@ -257,6 +267,7 @@ EssenceContainerData::InitFromTLVSet(TLVReader& TLVSet) ASDCP::Result_t EssenceContainerData::WriteToTLVSet(TLVWriter& TLVSet) { + assert(m_Dict); Result_t result = InterchangeObject::WriteToTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(EssenceContainerData, LinkedPackageUID)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(EssenceContainerData, IndexSID)); @@ -284,6 +295,7 @@ EssenceContainerData::Dump(FILE* stream) ASDCP::Result_t EssenceContainerData::InitFromBuffer(const byte_t* p, ui32_t l) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_EssenceContainerData)); return InterchangeObject::InitFromBuffer(p, l); } @@ -292,6 +304,7 @@ EssenceContainerData::InitFromBuffer(const byte_t* p, ui32_t l) ASDCP::Result_t EssenceContainerData::WriteToBuffer(ASDCP::FrameBuffer& Buffer) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_EssenceContainerData)); return InterchangeObject::WriteToBuffer(Buffer); } @@ -303,6 +316,7 @@ EssenceContainerData::WriteToBuffer(ASDCP::FrameBuffer& Buffer) ASDCP::Result_t GenericPackage::InitFromTLVSet(TLVReader& TLVSet) { + assert(m_Dict); Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageUID)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, Name)); @@ -316,6 +330,7 @@ GenericPackage::InitFromTLVSet(TLVReader& TLVSet) ASDCP::Result_t GenericPackage::WriteToTLVSet(TLVWriter& TLVSet) { + assert(m_Dict); Result_t result = InterchangeObject::WriteToTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, PackageUID)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, Name)); @@ -352,6 +367,7 @@ GenericPackage::Dump(FILE* stream) ASDCP::Result_t MaterialPackage::InitFromTLVSet(TLVReader& TLVSet) { + assert(m_Dict); Result_t result = GenericPackage::InitFromTLVSet(TLVSet); return result; } @@ -360,6 +376,7 @@ MaterialPackage::InitFromTLVSet(TLVReader& TLVSet) ASDCP::Result_t MaterialPackage::WriteToTLVSet(TLVWriter& TLVSet) { + assert(m_Dict); Result_t result = GenericPackage::WriteToTLVSet(TLVSet); return result; } @@ -381,6 +398,7 @@ MaterialPackage::Dump(FILE* stream) ASDCP::Result_t MaterialPackage::InitFromBuffer(const byte_t* p, ui32_t l) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_MaterialPackage)); return InterchangeObject::InitFromBuffer(p, l); } @@ -389,6 +407,7 @@ MaterialPackage::InitFromBuffer(const byte_t* p, ui32_t l) ASDCP::Result_t MaterialPackage::WriteToBuffer(ASDCP::FrameBuffer& Buffer) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_MaterialPackage)); return InterchangeObject::WriteToBuffer(Buffer); } @@ -400,6 +419,7 @@ MaterialPackage::WriteToBuffer(ASDCP::FrameBuffer& Buffer) ASDCP::Result_t SourcePackage::InitFromTLVSet(TLVReader& TLVSet) { + assert(m_Dict); Result_t result = GenericPackage::InitFromTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(SourcePackage, Descriptor)); return result; @@ -409,6 +429,7 @@ SourcePackage::InitFromTLVSet(TLVReader& TLVSet) ASDCP::Result_t SourcePackage::WriteToTLVSet(TLVWriter& TLVSet) { + assert(m_Dict); Result_t result = GenericPackage::WriteToTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(SourcePackage, Descriptor)); return result; @@ -432,6 +453,7 @@ SourcePackage::Dump(FILE* stream) ASDCP::Result_t SourcePackage::InitFromBuffer(const byte_t* p, ui32_t l) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_SourcePackage)); return InterchangeObject::InitFromBuffer(p, l); } @@ -440,6 +462,7 @@ SourcePackage::InitFromBuffer(const byte_t* p, ui32_t l) ASDCP::Result_t SourcePackage::WriteToBuffer(ASDCP::FrameBuffer& Buffer) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_SourcePackage)); return InterchangeObject::WriteToBuffer(Buffer); } @@ -451,6 +474,7 @@ SourcePackage::WriteToBuffer(ASDCP::FrameBuffer& Buffer) ASDCP::Result_t GenericTrack::InitFromTLVSet(TLVReader& TLVSet) { + assert(m_Dict); Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericTrack, TrackID)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericTrack, TrackNumber)); @@ -463,6 +487,7 @@ GenericTrack::InitFromTLVSet(TLVReader& TLVSet) ASDCP::Result_t GenericTrack::WriteToTLVSet(TLVWriter& TLVSet) { + assert(m_Dict); Result_t result = InterchangeObject::WriteToTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericTrack, TrackID)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericTrack, TrackNumber)); @@ -496,6 +521,7 @@ GenericTrack::Dump(FILE* stream) ASDCP::Result_t StaticTrack::InitFromTLVSet(TLVReader& TLVSet) { + assert(m_Dict); Result_t result = GenericTrack::InitFromTLVSet(TLVSet); return result; } @@ -504,6 +530,7 @@ StaticTrack::InitFromTLVSet(TLVReader& TLVSet) ASDCP::Result_t StaticTrack::WriteToTLVSet(TLVWriter& TLVSet) { + assert(m_Dict); Result_t result = GenericTrack::WriteToTLVSet(TLVSet); return result; } @@ -525,6 +552,7 @@ StaticTrack::Dump(FILE* stream) ASDCP::Result_t StaticTrack::InitFromBuffer(const byte_t* p, ui32_t l) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_StaticTrack)); return InterchangeObject::InitFromBuffer(p, l); } @@ -533,6 +561,7 @@ StaticTrack::InitFromBuffer(const byte_t* p, ui32_t l) ASDCP::Result_t StaticTrack::WriteToBuffer(ASDCP::FrameBuffer& Buffer) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_StaticTrack)); return InterchangeObject::WriteToBuffer(Buffer); } @@ -544,6 +573,7 @@ StaticTrack::WriteToBuffer(ASDCP::FrameBuffer& Buffer) ASDCP::Result_t Track::InitFromTLVSet(TLVReader& TLVSet) { + assert(m_Dict); Result_t result = GenericTrack::InitFromTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Track, EditRate)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(Track, Origin)); @@ -554,6 +584,7 @@ Track::InitFromTLVSet(TLVReader& TLVSet) ASDCP::Result_t Track::WriteToTLVSet(TLVWriter& TLVSet) { + assert(m_Dict); Result_t result = GenericTrack::WriteToTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Track, EditRate)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(Track, Origin)); @@ -579,6 +610,7 @@ Track::Dump(FILE* stream) ASDCP::Result_t Track::InitFromBuffer(const byte_t* p, ui32_t l) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_Track)); return InterchangeObject::InitFromBuffer(p, l); } @@ -587,6 +619,7 @@ Track::InitFromBuffer(const byte_t* p, ui32_t l) ASDCP::Result_t Track::WriteToBuffer(ASDCP::FrameBuffer& Buffer) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_Track)); return InterchangeObject::WriteToBuffer(Buffer); } @@ -598,6 +631,7 @@ Track::WriteToBuffer(ASDCP::FrameBuffer& Buffer) ASDCP::Result_t StructuralComponent::InitFromTLVSet(TLVReader& TLVSet) { + assert(m_Dict); Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(StructuralComponent, DataDefinition)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(StructuralComponent, Duration)); @@ -608,6 +642,7 @@ StructuralComponent::InitFromTLVSet(TLVReader& TLVSet) ASDCP::Result_t StructuralComponent::WriteToTLVSet(TLVWriter& TLVSet) { + assert(m_Dict); Result_t result = InterchangeObject::WriteToTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(StructuralComponent, DataDefinition)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(StructuralComponent, Duration)); @@ -637,6 +672,7 @@ StructuralComponent::Dump(FILE* stream) ASDCP::Result_t Sequence::InitFromTLVSet(TLVReader& TLVSet) { + assert(m_Dict); Result_t result = StructuralComponent::InitFromTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Sequence, StructuralComponents)); return result; @@ -646,6 +682,7 @@ Sequence::InitFromTLVSet(TLVReader& TLVSet) ASDCP::Result_t Sequence::WriteToTLVSet(TLVWriter& TLVSet) { + assert(m_Dict); Result_t result = StructuralComponent::WriteToTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Sequence, StructuralComponents)); return result; @@ -670,6 +707,7 @@ Sequence::Dump(FILE* stream) ASDCP::Result_t Sequence::InitFromBuffer(const byte_t* p, ui32_t l) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_Sequence)); return InterchangeObject::InitFromBuffer(p, l); } @@ -678,6 +716,7 @@ Sequence::InitFromBuffer(const byte_t* p, ui32_t l) ASDCP::Result_t Sequence::WriteToBuffer(ASDCP::FrameBuffer& Buffer) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_Sequence)); return InterchangeObject::WriteToBuffer(Buffer); } @@ -689,6 +728,7 @@ Sequence::WriteToBuffer(ASDCP::FrameBuffer& Buffer) ASDCP::Result_t SourceClip::InitFromTLVSet(TLVReader& TLVSet) { + assert(m_Dict); Result_t result = StructuralComponent::InitFromTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(SourceClip, StartPosition)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(SourceClip, SourcePackageID)); @@ -700,6 +740,7 @@ SourceClip::InitFromTLVSet(TLVReader& TLVSet) ASDCP::Result_t SourceClip::WriteToTLVSet(TLVWriter& TLVSet) { + assert(m_Dict); Result_t result = StructuralComponent::WriteToTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(SourceClip, StartPosition)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(SourceClip, SourcePackageID)); @@ -727,6 +768,7 @@ SourceClip::Dump(FILE* stream) ASDCP::Result_t SourceClip::InitFromBuffer(const byte_t* p, ui32_t l) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_SourceClip)); return InterchangeObject::InitFromBuffer(p, l); } @@ -735,6 +777,7 @@ SourceClip::InitFromBuffer(const byte_t* p, ui32_t l) ASDCP::Result_t SourceClip::WriteToBuffer(ASDCP::FrameBuffer& Buffer) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_SourceClip)); return InterchangeObject::WriteToBuffer(Buffer); } @@ -746,6 +789,7 @@ SourceClip::WriteToBuffer(ASDCP::FrameBuffer& Buffer) ASDCP::Result_t TimecodeComponent::InitFromTLVSet(TLVReader& TLVSet) { + assert(m_Dict); Result_t result = StructuralComponent::InitFromTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(TimecodeComponent, RoundedTimecodeBase)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(TimecodeComponent, StartTimecode)); @@ -757,6 +801,7 @@ TimecodeComponent::InitFromTLVSet(TLVReader& TLVSet) ASDCP::Result_t TimecodeComponent::WriteToTLVSet(TLVWriter& TLVSet) { + assert(m_Dict); Result_t result = StructuralComponent::WriteToTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(TimecodeComponent, RoundedTimecodeBase)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(TimecodeComponent, StartTimecode)); @@ -784,6 +829,7 @@ TimecodeComponent::Dump(FILE* stream) ASDCP::Result_t TimecodeComponent::InitFromBuffer(const byte_t* p, ui32_t l) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_TimecodeComponent)); return InterchangeObject::InitFromBuffer(p, l); } @@ -792,6 +838,7 @@ TimecodeComponent::InitFromBuffer(const byte_t* p, ui32_t l) ASDCP::Result_t TimecodeComponent::WriteToBuffer(ASDCP::FrameBuffer& Buffer) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_TimecodeComponent)); return InterchangeObject::WriteToBuffer(Buffer); } @@ -803,6 +850,7 @@ TimecodeComponent::WriteToBuffer(ASDCP::FrameBuffer& Buffer) ASDCP::Result_t GenericDescriptor::InitFromTLVSet(TLVReader& TLVSet) { + assert(m_Dict); Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericDescriptor, Locators)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericDescriptor, SubDescriptors)); @@ -813,6 +861,7 @@ GenericDescriptor::InitFromTLVSet(TLVReader& TLVSet) ASDCP::Result_t GenericDescriptor::WriteToTLVSet(TLVWriter& TLVSet) { + assert(m_Dict); Result_t result = InterchangeObject::WriteToTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericDescriptor, Locators)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericDescriptor, SubDescriptors)); @@ -844,6 +893,7 @@ GenericDescriptor::Dump(FILE* stream) ASDCP::Result_t FileDescriptor::InitFromTLVSet(TLVReader& TLVSet) { + assert(m_Dict); Result_t result = GenericDescriptor::InitFromTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(FileDescriptor, LinkedTrackID)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(FileDescriptor, SampleRate)); @@ -857,6 +907,7 @@ FileDescriptor::InitFromTLVSet(TLVReader& TLVSet) ASDCP::Result_t FileDescriptor::WriteToTLVSet(TLVWriter& TLVSet) { + assert(m_Dict); Result_t result = GenericDescriptor::WriteToTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(FileDescriptor, LinkedTrackID)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(FileDescriptor, SampleRate)); @@ -888,6 +939,7 @@ FileDescriptor::Dump(FILE* stream) ASDCP::Result_t FileDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_FileDescriptor)); return InterchangeObject::InitFromBuffer(p, l); } @@ -896,6 +948,7 @@ FileDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) ASDCP::Result_t FileDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_FileDescriptor)); return InterchangeObject::WriteToBuffer(Buffer); } @@ -907,6 +960,7 @@ FileDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) ASDCP::Result_t GenericSoundEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet) { + assert(m_Dict); Result_t result = FileDescriptor::InitFromTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, AudioSamplingRate)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, Locked)); @@ -921,6 +975,7 @@ GenericSoundEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet) ASDCP::Result_t GenericSoundEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet) { + assert(m_Dict); Result_t result = FileDescriptor::WriteToTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, AudioSamplingRate)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, Locked)); @@ -954,6 +1009,7 @@ GenericSoundEssenceDescriptor::Dump(FILE* stream) ASDCP::Result_t GenericSoundEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_GenericSoundEssenceDescriptor)); return InterchangeObject::InitFromBuffer(p, l); } @@ -962,6 +1018,7 @@ GenericSoundEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) ASDCP::Result_t GenericSoundEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_GenericSoundEssenceDescriptor)); return InterchangeObject::WriteToBuffer(Buffer); } @@ -973,6 +1030,7 @@ GenericSoundEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) ASDCP::Result_t WaveAudioDescriptor::InitFromTLVSet(TLVReader& TLVSet) { + assert(m_Dict); Result_t result = GenericSoundEssenceDescriptor::InitFromTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(WaveAudioDescriptor, BlockAlign)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(WaveAudioDescriptor, SequenceOffset)); @@ -985,6 +1043,7 @@ WaveAudioDescriptor::InitFromTLVSet(TLVReader& TLVSet) ASDCP::Result_t WaveAudioDescriptor::WriteToTLVSet(TLVWriter& TLVSet) { + assert(m_Dict); Result_t result = GenericSoundEssenceDescriptor::WriteToTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(WaveAudioDescriptor, BlockAlign)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(WaveAudioDescriptor, SequenceOffset)); @@ -1014,6 +1073,7 @@ WaveAudioDescriptor::Dump(FILE* stream) ASDCP::Result_t WaveAudioDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_WaveAudioDescriptor)); return InterchangeObject::InitFromBuffer(p, l); } @@ -1022,6 +1082,7 @@ WaveAudioDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) ASDCP::Result_t WaveAudioDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_WaveAudioDescriptor)); return InterchangeObject::WriteToBuffer(Buffer); } @@ -1033,6 +1094,7 @@ WaveAudioDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) ASDCP::Result_t GenericPictureEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet) { + assert(m_Dict); Result_t result = FileDescriptor::InitFromTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, FrameLayout)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, StoredWidth)); @@ -1046,6 +1108,7 @@ GenericPictureEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet) ASDCP::Result_t GenericPictureEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet) { + assert(m_Dict); Result_t result = FileDescriptor::WriteToTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, FrameLayout)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, StoredWidth)); @@ -1077,6 +1140,7 @@ GenericPictureEssenceDescriptor::Dump(FILE* stream) ASDCP::Result_t GenericPictureEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_GenericPictureEssenceDescriptor)); return InterchangeObject::InitFromBuffer(p, l); } @@ -1085,6 +1149,7 @@ GenericPictureEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) ASDCP::Result_t GenericPictureEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_GenericPictureEssenceDescriptor)); return InterchangeObject::WriteToBuffer(Buffer); } @@ -1096,6 +1161,7 @@ GenericPictureEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) ASDCP::Result_t RGBAEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet) { + assert(m_Dict); Result_t result = GenericPictureEssenceDescriptor::InitFromTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(RGBAEssenceDescriptor, ComponentMaxRef)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(RGBAEssenceDescriptor, ComponentMinRef)); @@ -1106,6 +1172,7 @@ RGBAEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet) ASDCP::Result_t RGBAEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet) { + assert(m_Dict); Result_t result = GenericPictureEssenceDescriptor::WriteToTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(RGBAEssenceDescriptor, ComponentMaxRef)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(RGBAEssenceDescriptor, ComponentMinRef)); @@ -1131,6 +1198,7 @@ RGBAEssenceDescriptor::Dump(FILE* stream) ASDCP::Result_t RGBAEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_RGBAEssenceDescriptor)); return InterchangeObject::InitFromBuffer(p, l); } @@ -1139,6 +1207,7 @@ RGBAEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) ASDCP::Result_t RGBAEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_RGBAEssenceDescriptor)); return InterchangeObject::WriteToBuffer(Buffer); } @@ -1150,6 +1219,7 @@ RGBAEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) ASDCP::Result_t JPEG2000PictureSubDescriptor::InitFromTLVSet(TLVReader& TLVSet) { + assert(m_Dict); Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Rsize)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Xsize)); @@ -1171,6 +1241,7 @@ JPEG2000PictureSubDescriptor::InitFromTLVSet(TLVReader& TLVSet) ASDCP::Result_t JPEG2000PictureSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet) { + assert(m_Dict); Result_t result = InterchangeObject::WriteToTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Rsize)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Xsize)); @@ -1218,6 +1289,7 @@ JPEG2000PictureSubDescriptor::Dump(FILE* stream) ASDCP::Result_t JPEG2000PictureSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_JPEG2000PictureSubDescriptor)); return InterchangeObject::InitFromBuffer(p, l); } @@ -1226,6 +1298,7 @@ JPEG2000PictureSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) ASDCP::Result_t JPEG2000PictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_JPEG2000PictureSubDescriptor)); return InterchangeObject::WriteToBuffer(Buffer); } @@ -1237,6 +1310,7 @@ JPEG2000PictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) ASDCP::Result_t CDCIEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet) { + assert(m_Dict); Result_t result = GenericPictureEssenceDescriptor::InitFromTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, ComponentDepth)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, HorizontalSubsampling)); @@ -1249,6 +1323,7 @@ CDCIEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet) ASDCP::Result_t CDCIEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet) { + assert(m_Dict); Result_t result = GenericPictureEssenceDescriptor::WriteToTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, ComponentDepth)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, HorizontalSubsampling)); @@ -1278,6 +1353,7 @@ CDCIEssenceDescriptor::Dump(FILE* stream) ASDCP::Result_t CDCIEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_CDCIEssenceDescriptor)); return InterchangeObject::InitFromBuffer(p, l); } @@ -1286,6 +1362,7 @@ CDCIEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) ASDCP::Result_t CDCIEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_CDCIEssenceDescriptor)); return InterchangeObject::WriteToBuffer(Buffer); } @@ -1297,6 +1374,7 @@ CDCIEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) ASDCP::Result_t MPEG2VideoDescriptor::InitFromTLVSet(TLVReader& TLVSet) { + assert(m_Dict); Result_t result = CDCIEssenceDescriptor::InitFromTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(MPEG2VideoDescriptor, CodedContentType)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(MPEG2VideoDescriptor, LowDelay)); @@ -1309,6 +1387,7 @@ MPEG2VideoDescriptor::InitFromTLVSet(TLVReader& TLVSet) ASDCP::Result_t MPEG2VideoDescriptor::WriteToTLVSet(TLVWriter& TLVSet) { + assert(m_Dict); Result_t result = CDCIEssenceDescriptor::WriteToTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(MPEG2VideoDescriptor, CodedContentType)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(MPEG2VideoDescriptor, LowDelay)); @@ -1338,6 +1417,7 @@ MPEG2VideoDescriptor::Dump(FILE* stream) ASDCP::Result_t MPEG2VideoDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_MPEG2VideoDescriptor)); return InterchangeObject::InitFromBuffer(p, l); } @@ -1346,6 +1426,7 @@ MPEG2VideoDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) ASDCP::Result_t MPEG2VideoDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_MPEG2VideoDescriptor)); return InterchangeObject::WriteToBuffer(Buffer); } @@ -1357,6 +1438,7 @@ MPEG2VideoDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) ASDCP::Result_t DMSegment::InitFromTLVSet(TLVReader& TLVSet) { + assert(m_Dict); Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DMSegment, DataDefinition)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(DMSegment, EventStartPosition)); @@ -1370,6 +1452,7 @@ DMSegment::InitFromTLVSet(TLVReader& TLVSet) ASDCP::Result_t DMSegment::WriteToTLVSet(TLVWriter& TLVSet) { + assert(m_Dict); Result_t result = InterchangeObject::WriteToTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DMSegment, DataDefinition)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(DMSegment, EventStartPosition)); @@ -1401,6 +1484,7 @@ DMSegment::Dump(FILE* stream) ASDCP::Result_t DMSegment::InitFromBuffer(const byte_t* p, ui32_t l) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_DMSegment)); return InterchangeObject::InitFromBuffer(p, l); } @@ -1409,6 +1493,7 @@ DMSegment::InitFromBuffer(const byte_t* p, ui32_t l) ASDCP::Result_t DMSegment::WriteToBuffer(ASDCP::FrameBuffer& Buffer) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_DMSegment)); return InterchangeObject::WriteToBuffer(Buffer); } @@ -1420,6 +1505,7 @@ DMSegment::WriteToBuffer(ASDCP::FrameBuffer& Buffer) ASDCP::Result_t CryptographicFramework::InitFromTLVSet(TLVReader& TLVSet) { + assert(m_Dict); Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicFramework, ContextSR)); return result; @@ -1429,6 +1515,7 @@ CryptographicFramework::InitFromTLVSet(TLVReader& TLVSet) ASDCP::Result_t CryptographicFramework::WriteToTLVSet(TLVWriter& TLVSet) { + assert(m_Dict); Result_t result = InterchangeObject::WriteToTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicFramework, ContextSR)); return result; @@ -1452,6 +1539,7 @@ CryptographicFramework::Dump(FILE* stream) ASDCP::Result_t CryptographicFramework::InitFromBuffer(const byte_t* p, ui32_t l) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_CryptographicFramework)); return InterchangeObject::InitFromBuffer(p, l); } @@ -1460,6 +1548,7 @@ CryptographicFramework::InitFromBuffer(const byte_t* p, ui32_t l) ASDCP::Result_t CryptographicFramework::WriteToBuffer(ASDCP::FrameBuffer& Buffer) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_CryptographicFramework)); return InterchangeObject::WriteToBuffer(Buffer); } @@ -1471,6 +1560,7 @@ CryptographicFramework::WriteToBuffer(ASDCP::FrameBuffer& Buffer) ASDCP::Result_t CryptographicContext::InitFromTLVSet(TLVReader& TLVSet) { + assert(m_Dict); Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, ContextID)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, SourceEssenceContainer)); @@ -1484,6 +1574,7 @@ CryptographicContext::InitFromTLVSet(TLVReader& TLVSet) ASDCP::Result_t CryptographicContext::WriteToTLVSet(TLVWriter& TLVSet) { + assert(m_Dict); Result_t result = InterchangeObject::WriteToTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, ContextID)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, SourceEssenceContainer)); @@ -1515,6 +1606,7 @@ CryptographicContext::Dump(FILE* stream) ASDCP::Result_t CryptographicContext::InitFromBuffer(const byte_t* p, ui32_t l) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_CryptographicContext)); return InterchangeObject::InitFromBuffer(p, l); } @@ -1523,6 +1615,7 @@ CryptographicContext::InitFromBuffer(const byte_t* p, ui32_t l) ASDCP::Result_t CryptographicContext::WriteToBuffer(ASDCP::FrameBuffer& Buffer) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_CryptographicContext)); return InterchangeObject::WriteToBuffer(Buffer); } @@ -1534,6 +1627,7 @@ CryptographicContext::WriteToBuffer(ASDCP::FrameBuffer& Buffer) ASDCP::Result_t GenericDataEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet) { + assert(m_Dict); Result_t result = FileDescriptor::InitFromTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericDataEssenceDescriptor, DataEssenceCoding)); return result; @@ -1543,6 +1637,7 @@ GenericDataEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet) ASDCP::Result_t GenericDataEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet) { + assert(m_Dict); Result_t result = FileDescriptor::WriteToTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericDataEssenceDescriptor, DataEssenceCoding)); return result; @@ -1566,6 +1661,7 @@ GenericDataEssenceDescriptor::Dump(FILE* stream) ASDCP::Result_t GenericDataEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_GenericDataEssenceDescriptor)); return InterchangeObject::InitFromBuffer(p, l); } @@ -1574,6 +1670,7 @@ GenericDataEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) ASDCP::Result_t GenericDataEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_GenericDataEssenceDescriptor)); return InterchangeObject::WriteToBuffer(Buffer); } @@ -1585,6 +1682,7 @@ GenericDataEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) ASDCP::Result_t TimedTextDescriptor::InitFromTLVSet(TLVReader& TLVSet) { + assert(m_Dict); Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, ResourceID)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, UCSEncoding)); @@ -1596,6 +1694,7 @@ TimedTextDescriptor::InitFromTLVSet(TLVReader& TLVSet) ASDCP::Result_t TimedTextDescriptor::WriteToTLVSet(TLVWriter& TLVSet) { + assert(m_Dict); Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, ResourceID)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, UCSEncoding)); @@ -1623,6 +1722,7 @@ TimedTextDescriptor::Dump(FILE* stream) ASDCP::Result_t TimedTextDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_TimedTextDescriptor)); return InterchangeObject::InitFromBuffer(p, l); } @@ -1631,6 +1731,7 @@ TimedTextDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) ASDCP::Result_t TimedTextDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_TimedTextDescriptor)); return InterchangeObject::WriteToBuffer(Buffer); } @@ -1642,6 +1743,7 @@ TimedTextDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) ASDCP::Result_t TimedTextResourceSubDescriptor::InitFromTLVSet(TLVReader& TLVSet) { + assert(m_Dict); Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextResourceSubDescriptor, AncillaryResourceID)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextResourceSubDescriptor, MIMEMediaType)); @@ -1653,6 +1755,7 @@ TimedTextResourceSubDescriptor::InitFromTLVSet(TLVReader& TLVSet) ASDCP::Result_t TimedTextResourceSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet) { + assert(m_Dict); Result_t result = InterchangeObject::WriteToTLVSet(TLVSet); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextResourceSubDescriptor, AncillaryResourceID)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextResourceSubDescriptor, MIMEMediaType)); @@ -1680,6 +1783,7 @@ TimedTextResourceSubDescriptor::Dump(FILE* stream) ASDCP::Result_t TimedTextResourceSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_TimedTextResourceSubDescriptor)); return InterchangeObject::InitFromBuffer(p, l); } @@ -1688,6 +1792,7 @@ TimedTextResourceSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) ASDCP::Result_t TimedTextResourceSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_TimedTextResourceSubDescriptor)); return InterchangeObject::WriteToBuffer(Buffer); } @@ -1699,6 +1804,7 @@ TimedTextResourceSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) ASDCP::Result_t StereoscopicPictureSubDescriptor::InitFromTLVSet(TLVReader& TLVSet) { + assert(m_Dict); Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); return result; } @@ -1707,6 +1813,7 @@ StereoscopicPictureSubDescriptor::InitFromTLVSet(TLVReader& TLVSet) ASDCP::Result_t StereoscopicPictureSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet) { + assert(m_Dict); Result_t result = InterchangeObject::WriteToTLVSet(TLVSet); return result; } @@ -1728,6 +1835,7 @@ StereoscopicPictureSubDescriptor::Dump(FILE* stream) ASDCP::Result_t StereoscopicPictureSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_StereoscopicPictureSubDescriptor)); return InterchangeObject::InitFromBuffer(p, l); } @@ -1736,6 +1844,7 @@ StereoscopicPictureSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) ASDCP::Result_t StereoscopicPictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) { + assert(m_Dict); m_Typeinfo = &(m_Dict->Type(MDD_StereoscopicPictureSubDescriptor)); return InterchangeObject::WriteToBuffer(Buffer); } diff --git a/src/h__Reader.cpp b/src/h__Reader.cpp index 7a1dd12..d36e1cc 100755 --- a/src/h__Reader.cpp +++ b/src/h__Reader.cpp @@ -59,6 +59,7 @@ ASDCP::h__Reader::Close() Result_t ASDCP::h__Reader::InitInfo() { + assert(m_Dict); InterchangeObject* Object; m_Info.LabelSetType = LS_MXF_UNKNOWN; @@ -214,6 +215,7 @@ ASDCP::h__Reader::ReadEKLVPacket(ui32_t FrameNum, ui32_t SequenceNum, ASDCP::Fra UL Key(Reader.Key()); ui64_t PacketLength = Reader.Length(); 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 ) diff --git a/src/h__Writer.cpp b/src/h__Writer.cpp index cb4e461..97c1ba8 100755 --- a/src/h__Writer.cpp +++ b/src/h__Writer.cpp @@ -85,6 +85,7 @@ void AddDMScrypt(Partition& HeaderPart, SourcePackage& Package, WriterInfo& Descr, const UL& WrappingUL, const Dictionary*& Dict) { + assert(Dict); // Essence Track StaticTrack* NewTrack = new StaticTrack(Dict); HeaderPart.AddChildObject(NewTrack); @@ -121,6 +122,7 @@ AddDMScrypt(Partition& HeaderPart, SourcePackage& Package, void ASDCP::h__Writer::InitHeader() { + assert(m_Dict); assert(m_EssenceDescriptor); m_HeaderPart.m_Primer.ClearTagList(); @@ -201,6 +203,7 @@ TrackSet<TimecodeComponent> CreateTimecodeTrack(OPAtomHeader& Header, PackageT& Package, const MXF::Rational& EditRate, ui32_t TCFrameRate, ui64_t TCStart, const Dictionary*& Dict) { + assert(Dict); UL TCUL(Dict->ul(MDD_TimecodeDataDef)); TrackSet<TimecodeComponent> NewTrack = CreateTrackAndSequence<PackageT, TimecodeComponent>(Header, Package, "Timecode Track", EditRate, TCUL, 1, Dict); @@ -396,6 +399,7 @@ ASDCP::h__Writer::AddEssenceDescriptor(const UL& WrappingUL) // // Essence Descriptors // + assert(m_Dict); UL GenericContainerUL(m_Dict->ul(MDD_GCMulti)); m_HeaderPart.EssenceContainers.push_back(GenericContainerUL); @@ -425,6 +429,7 @@ ASDCP::h__Writer::AddEssenceDescriptor(const UL& WrappingUL) Result_t ASDCP::h__Writer::CreateBodyPart(const MXF::Rational& EditRate, ui32_t BytesPerEditUnit) { + assert(m_Dict); Result_t result = RESULT_OK; // create a body partition if we're writing proper 429-3/OP-Atom @@ -490,6 +495,7 @@ ASDCP::h__Writer::WriteEKLVPacket(const ASDCP::FrameBuffer& FrameBuf, const byte byte_t overhead[128]; Kumu::MemIOWriter Overhead(overhead, 128); + assert(m_Dict); if ( FrameBuf.Size() == 0 ) { @@ -517,10 +523,10 @@ 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); + // 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 ui32_t ETLength = klv_cryptinfo_size + m_CtFrameBuf.Size(); @@ -616,11 +622,12 @@ ASDCP::h__Writer::WriteMXFFooter() m_HeaderPart.m_RIP.PairArray.push_back(RIP::Pair(0, here)); // Last RIP Entry m_HeaderPart.FooterPartition = here; + 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)); + // 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; |
