2 Copyright (c) 2005-2006, John Hurst
5 Redistribution and use in source and binary forms, with or without
6 modification, are permitted provided that the following conditions
8 1. Redistributions of source code must retain the above copyright
9 notice, this list of conditions and the following disclaimer.
10 2. Redistributions in binary form must reproduce the above copyright
11 notice, this list of conditions and the following disclaimer in the
12 documentation and/or other materials provided with the distribution.
13 3. The name of the author may not be used to endorse or promote products
14 derived from this software without specific prior written permission.
16 THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18 OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19 IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25 THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 /*! \file Metadata.cpp
29 \brief AS-DCP library, MXF Metadata Sets implementation
36 #include "hex_utils.h"
39 //------------------------------------------------------------------------------------------
45 FLT_IndexTableSegment,
53 FLT_TimecodeComponent,
55 FLT_GenericSoundEssenceDescriptor,
56 FLT_WaveAudioDescriptor,
57 FLT_GenericPictureEssenceDescriptor,
58 FLT_RGBAEssenceDescriptor,
59 FLT_JPEG2000PictureSubDescriptor,
60 FLT_CDCIEssenceDescriptor,
61 FLT_MPEG2VideoDescriptor,
62 FLT_CryptographicFramework,
63 FLT_CryptographicContext,
67 typedef std::map<ASDCP::UL, FLT_t>::iterator FLi_t;
69 class FactoryList : public std::map<ASDCP::UL, FLT_t>
78 ASDCP::AutoMutex BlockLock(m_Lock);
82 FLi_t Find(const byte_t* label) {
83 ASDCP::AutoMutex BlockLock(m_Lock);
88 ASDCP::AutoMutex BlockLock(m_Lock);
95 static FactoryList s_FactoryList;
98 ASDCP::MXF::InterchangeObject*
99 ASDCP::MXF::CreateObject(const byte_t* label)
104 if ( s_FactoryList.empty() )
106 s_FactoryList.insert(FactoryList::value_type(s_MDD_Table[MDDindex_Preface].ul, FLT_Preface));
107 s_FactoryList.insert(FactoryList::value_type(s_MDD_Table[MDDindex_IndexTableSegment].ul, FLT_IndexTableSegment));
108 s_FactoryList.insert(FactoryList::value_type(s_MDD_Table[MDDindex_Identification].ul, FLT_Identification));
109 s_FactoryList.insert(FactoryList::value_type(s_MDD_Table[MDDindex_ContentStorage].ul, FLT_ContentStorage));
110 s_FactoryList.insert(FactoryList::value_type(s_MDD_Table[MDDindex_MaterialPackage].ul, FLT_MaterialPackage));
111 s_FactoryList.insert(FactoryList::value_type(s_MDD_Table[MDDindex_SourcePackage].ul, FLT_SourcePackage));
112 s_FactoryList.insert(FactoryList::value_type(s_MDD_Table[MDDindex_Track].ul, FLT_Track));
113 s_FactoryList.insert(FactoryList::value_type(s_MDD_Table[MDDindex_Sequence].ul, FLT_Sequence));
114 s_FactoryList.insert(FactoryList::value_type(s_MDD_Table[MDDindex_SourceClip].ul, FLT_SourceClip));
115 s_FactoryList.insert(FactoryList::value_type(s_MDD_Table[MDDindex_TimecodeComponent].ul, FLT_TimecodeComponent));
116 s_FactoryList.insert(FactoryList::value_type(s_MDD_Table[MDDindex_FileDescriptor].ul, FLT_FileDescriptor));
117 s_FactoryList.insert(FactoryList::value_type(s_MDD_Table[MDDindex_GenericSoundEssenceDescriptor].ul, FLT_GenericSoundEssenceDescriptor));
118 s_FactoryList.insert(FactoryList::value_type(s_MDD_Table[MDDindex_WaveAudioDescriptor].ul, FLT_WaveAudioDescriptor));
119 s_FactoryList.insert(FactoryList::value_type(s_MDD_Table[MDDindex_GenericPictureEssenceDescriptor].ul, FLT_GenericPictureEssenceDescriptor));
120 s_FactoryList.insert(FactoryList::value_type(s_MDD_Table[MDDindex_RGBAEssenceDescriptor].ul, FLT_RGBAEssenceDescriptor));
121 s_FactoryList.insert(FactoryList::value_type(s_MDD_Table[MDDindex_JPEG2000PictureSubDescriptor].ul, FLT_JPEG2000PictureSubDescriptor));
122 s_FactoryList.insert(FactoryList::value_type(s_MDD_Table[MDDindex_CDCIEssenceDescriptor].ul, FLT_CDCIEssenceDescriptor));
123 s_FactoryList.insert(FactoryList::value_type(s_MDD_Table[MDDindex_MPEG2VideoDescriptor].ul, FLT_MPEG2VideoDescriptor));
124 s_FactoryList.insert(FactoryList::value_type(s_MDD_Table[MDDindex_CryptographicFramework].ul, FLT_CryptographicFramework));
125 s_FactoryList.insert(FactoryList::value_type(s_MDD_Table[MDDindex_CryptographicContext].ul, FLT_CryptographicContext));
128 FLi_t i = s_FactoryList.find(label);
130 if ( i == s_FactoryList.end() )
131 return new InterchangeObject;
135 case FLT_Preface: return new Preface;
136 case FLT_IndexTableSegment: return new IndexTableSegment;
137 case FLT_Identification: return new Identification;
138 case FLT_ContentStorage: return new ContentStorage;
139 case FLT_MaterialPackage: return new MaterialPackage;
140 case FLT_SourcePackage: return new SourcePackage;
141 case FLT_Track: return new Track;
142 case FLT_Sequence: return new Sequence;
143 case FLT_SourceClip: return new SourceClip;
144 case FLT_TimecodeComponent: return new TimecodeComponent;
145 case FLT_FileDescriptor: return new FileDescriptor;
146 case FLT_GenericSoundEssenceDescriptor: return new GenericSoundEssenceDescriptor;
147 case FLT_WaveAudioDescriptor: return new WaveAudioDescriptor;
148 case FLT_GenericPictureEssenceDescriptor: return new GenericPictureEssenceDescriptor;
149 case FLT_RGBAEssenceDescriptor: return new RGBAEssenceDescriptor;
150 case FLT_JPEG2000PictureSubDescriptor: return new JPEG2000PictureSubDescriptor;
151 case FLT_CDCIEssenceDescriptor: return new CDCIEssenceDescriptor;
152 case FLT_MPEG2VideoDescriptor: return new MPEG2VideoDescriptor;
153 case FLT_CryptographicFramework: return new CryptographicFramework;
154 case FLT_CryptographicContext: return new CryptographicContext;
157 return new InterchangeObject;
161 //------------------------------------------------------------------------------------------
166 //------------------------------------------------------------------------------------------
171 ASDCP::MXF::Identification::InitFromTLVSet(TLVReader& TLVSet)
173 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
174 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ThisGenerationUID));
175 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, CompanyName));
176 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ProductName));
177 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(Identification, ProductVersion));
178 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, VersionString));
179 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ProductUID));
180 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ModificationDate));
181 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(Identification, ToolkitVersion));
182 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, Platform));
188 ASDCP::MXF::Identification::Dump(FILE* stream)
190 char identbuf[IdentBufferLen];
196 InterchangeObject::Dump(stream);
197 fprintf(stream, " %22s = %s\n", "ThisGenerationUID", ThisGenerationUID.ToString(identbuf));
198 fprintf(stream, " %22s = %s\n", "CompanyName", CompanyName.ToString(identbuf));
199 fprintf(stream, " %22s = %s\n", "ProductName", ProductName.ToString(identbuf));
200 fprintf(stream, " %22s = %d\n", "ProductVersion", ProductVersion);
201 fprintf(stream, " %22s = %s\n", "VersionString", VersionString.ToString(identbuf));
202 fprintf(stream, " %22s = %s\n", "ProductUID", ProductUID.ToString(identbuf));
203 fprintf(stream, " %22s = %s\n", "ModificationDate", ModificationDate.ToString(identbuf));
204 fprintf(stream, " %22s = %d\n", "ToolkitVersion", ToolkitVersion);
205 fprintf(stream, " %22s = %s\n", "Platform", Platform.ToString(identbuf));
210 ASDCP::MXF::Identification::InitFromBuffer(const byte_t* p, ui32_t l)
214 Result_t result = KLVPacket::InitFromBuffer(p, l, s_MDD_Table[MDDindex_Identification].ul);
216 if ( ASDCP_SUCCESS(result) )
218 TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup);
219 result = InitFromTLVSet(MemRDR);
227 ASDCP::MXF::Identification::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
229 return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_Identification].ul, 0);
232 //------------------------------------------------------------------------------------------
237 ASDCP::MXF::ContentStorage::InitFromTLVSet(TLVReader& TLVSet)
239 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
240 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(ContentStorage, Packages));
241 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(ContentStorage, EssenceContainerData));
247 ASDCP::MXF::ContentStorage::Dump(FILE* stream)
249 char identbuf[IdentBufferLen];
255 InterchangeObject::Dump(stream);
256 fprintf(stream, " %s:\n", "Packages");
257 Packages.Dump(stream);
258 fprintf(stream, " %s:\n", "EssenceContainerData");
259 EssenceContainerData.Dump(stream);
264 ASDCP::MXF::ContentStorage::InitFromBuffer(const byte_t* p, ui32_t l)
268 Result_t result = KLVPacket::InitFromBuffer(p, l, s_MDD_Table[MDDindex_ContentStorage].ul);
270 if ( ASDCP_SUCCESS(result) )
272 TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup);
273 result = InitFromTLVSet(MemRDR);
281 ASDCP::MXF::ContentStorage::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
283 return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_ContentStorage].ul, 0);
286 //------------------------------------------------------------------------------------------
291 ASDCP::MXF::GenericPackage::InitFromTLVSet(TLVReader& TLVSet)
293 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
294 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageUID));
295 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, Name));
296 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageCreationDate));
297 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageModifiedDate));
298 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, Tracks));
304 ASDCP::MXF::GenericPackage::Dump(FILE* stream)
306 char identbuf[IdentBufferLen];
312 InterchangeObject::Dump(stream);
313 fprintf(stream, " %22s = %s\n", "PackageUID", PackageUID.ToString(identbuf));
314 fprintf(stream, " %22s = %s\n", "Name", Name.ToString(identbuf));
315 fprintf(stream, " %22s = %s\n", "PackageCreationDate", PackageCreationDate.ToString(identbuf));
316 fprintf(stream, " %22s = %s\n", "PackageModifiedDate", PackageModifiedDate.ToString(identbuf));
317 fprintf(stream, " %s:\n", "Tracks");
322 //------------------------------------------------------------------------------------------
327 ASDCP::MXF::MaterialPackage::InitFromTLVSet(TLVReader& TLVSet)
329 Result_t result = GenericPackage::InitFromTLVSet(TLVSet);
335 ASDCP::MXF::MaterialPackage::Dump(FILE* stream)
337 char identbuf[IdentBufferLen];
343 GenericPackage::Dump(stream);
348 ASDCP::MXF::MaterialPackage::InitFromBuffer(const byte_t* p, ui32_t l)
352 Result_t result = KLVPacket::InitFromBuffer(p, l, s_MDD_Table[MDDindex_MaterialPackage].ul);
354 if ( ASDCP_SUCCESS(result) )
356 TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup);
357 result = InitFromTLVSet(MemRDR);
365 ASDCP::MXF::MaterialPackage::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
367 return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_MaterialPackage].ul, 0);
370 //------------------------------------------------------------------------------------------
375 ASDCP::MXF::SourcePackage::InitFromTLVSet(TLVReader& TLVSet)
377 Result_t result = GenericPackage::InitFromTLVSet(TLVSet);
383 ASDCP::MXF::SourcePackage::Dump(FILE* stream)
385 char identbuf[IdentBufferLen];
391 GenericPackage::Dump(stream);
396 ASDCP::MXF::SourcePackage::InitFromBuffer(const byte_t* p, ui32_t l)
400 Result_t result = KLVPacket::InitFromBuffer(p, l, s_MDD_Table[MDDindex_SourcePackage].ul);
402 if ( ASDCP_SUCCESS(result) )
404 TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup);
405 result = InitFromTLVSet(MemRDR);
413 ASDCP::MXF::SourcePackage::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
415 return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_SourcePackage].ul, 0);
418 //------------------------------------------------------------------------------------------
423 ASDCP::MXF::GenericTrack::InitFromTLVSet(TLVReader& TLVSet)
425 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
426 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericTrack, TrackID));
427 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericTrack, TrackNumber));
428 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericTrack, TrackName));
429 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericTrack, Sequence));
435 ASDCP::MXF::GenericTrack::Dump(FILE* stream)
437 char identbuf[IdentBufferLen];
443 InterchangeObject::Dump(stream);
444 fprintf(stream, " %22s = %d\n", "TrackID", TrackID);
445 fprintf(stream, " %22s = %d\n", "TrackNumber", TrackNumber);
446 fprintf(stream, " %22s = %s\n", "TrackName", TrackName.ToString(identbuf));
447 fprintf(stream, " %22s = %s\n", "Sequence", Sequence.ToString(identbuf));
451 //------------------------------------------------------------------------------------------
456 ASDCP::MXF::Track::InitFromTLVSet(TLVReader& TLVSet)
458 Result_t result = GenericTrack::InitFromTLVSet(TLVSet);
459 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Track, EditRate));
460 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(Track, Origin));
466 ASDCP::MXF::Track::Dump(FILE* stream)
468 char identbuf[IdentBufferLen];
474 GenericTrack::Dump(stream);
475 fprintf(stream, " %22s = %s\n", "EditRate", EditRate.ToString(identbuf));
476 fprintf(stream, " %22s = %s\n", "Origin", i64sz(Origin, identbuf));
481 ASDCP::MXF::Track::InitFromBuffer(const byte_t* p, ui32_t l)
485 Result_t result = KLVPacket::InitFromBuffer(p, l, s_MDD_Table[MDDindex_Track].ul);
487 if ( ASDCP_SUCCESS(result) )
489 TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup);
490 result = InitFromTLVSet(MemRDR);
498 ASDCP::MXF::Track::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
500 return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_Track].ul, 0);
503 //------------------------------------------------------------------------------------------
504 // StructuralComponent
508 ASDCP::MXF::StructuralComponent::InitFromTLVSet(TLVReader& TLVSet)
510 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
511 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(StructuralComponent, DataDefinition));
512 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(StructuralComponent, Duration));
518 ASDCP::MXF::StructuralComponent::Dump(FILE* stream)
520 char identbuf[IdentBufferLen];
526 InterchangeObject::Dump(stream);
527 fprintf(stream, " %22s = %s\n", "DataDefinition", DataDefinition.ToString(identbuf));
528 fprintf(stream, " %22s = %s\n", "Duration", i64sz(Duration, identbuf));
532 //------------------------------------------------------------------------------------------
537 ASDCP::MXF::Sequence::InitFromTLVSet(TLVReader& TLVSet)
539 Result_t result = StructuralComponent::InitFromTLVSet(TLVSet);
540 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Sequence, StructuralComponents));
546 ASDCP::MXF::Sequence::Dump(FILE* stream)
548 char identbuf[IdentBufferLen];
554 StructuralComponent::Dump(stream);
555 fprintf(stream, " %s:\n", "StructuralComponents");
556 StructuralComponents.Dump(stream);
561 ASDCP::MXF::Sequence::InitFromBuffer(const byte_t* p, ui32_t l)
565 Result_t result = KLVPacket::InitFromBuffer(p, l, s_MDD_Table[MDDindex_Sequence].ul);
567 if ( ASDCP_SUCCESS(result) )
569 TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup);
570 result = InitFromTLVSet(MemRDR);
578 ASDCP::MXF::Sequence::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
580 return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_Sequence].ul, 0);
583 //------------------------------------------------------------------------------------------
588 ASDCP::MXF::SourceClip::InitFromTLVSet(TLVReader& TLVSet)
590 Result_t result = StructuralComponent::InitFromTLVSet(TLVSet);
591 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(SourceClip, StartPosition));
592 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(SourceClip, SourcePackageID));
593 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(SourceClip, SourceTrackID));
599 ASDCP::MXF::SourceClip::Dump(FILE* stream)
601 char identbuf[IdentBufferLen];
607 StructuralComponent::Dump(stream);
608 fprintf(stream, " %22s = %s\n", "StartPosition", i64sz(StartPosition, identbuf));
609 fprintf(stream, " %22s = %s\n", "SourcePackageID", SourcePackageID.ToString(identbuf));
610 fprintf(stream, " %22s = %d\n", "SourceTrackID", SourceTrackID);
615 ASDCP::MXF::SourceClip::InitFromBuffer(const byte_t* p, ui32_t l)
619 Result_t result = KLVPacket::InitFromBuffer(p, l, s_MDD_Table[MDDindex_SourceClip].ul);
621 if ( ASDCP_SUCCESS(result) )
623 TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup);
624 result = InitFromTLVSet(MemRDR);
632 ASDCP::MXF::SourceClip::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
634 return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_SourceClip].ul, 0);
637 //------------------------------------------------------------------------------------------
642 ASDCP::MXF::TimecodeComponent::InitFromTLVSet(TLVReader& TLVSet)
644 Result_t result = StructuralComponent::InitFromTLVSet(TLVSet);
645 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(TimecodeComponent, RoundedTimecodeBase));
646 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(TimecodeComponent, StartTimecode));
647 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(TimecodeComponent, DropFrame));
653 ASDCP::MXF::TimecodeComponent::Dump(FILE* stream)
655 char identbuf[IdentBufferLen];
661 StructuralComponent::Dump(stream);
662 fprintf(stream, " %22s = %d\n", "RoundedTimecodeBase", RoundedTimecodeBase);
663 fprintf(stream, " %22s = %s\n", "StartTimecode", i64sz(StartTimecode, identbuf));
664 fprintf(stream, " %22s = %d\n", "DropFrame", DropFrame);
669 ASDCP::MXF::TimecodeComponent::InitFromBuffer(const byte_t* p, ui32_t l)
673 Result_t result = KLVPacket::InitFromBuffer(p, l, s_MDD_Table[MDDindex_TimecodeComponent].ul);
675 if ( ASDCP_SUCCESS(result) )
677 TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup);
678 result = InitFromTLVSet(MemRDR);
686 ASDCP::MXF::TimecodeComponent::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
688 return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_TimecodeComponent].ul, 0);
691 //------------------------------------------------------------------------------------------
696 ASDCP::MXF::GenericDescriptor::InitFromTLVSet(TLVReader& TLVSet)
698 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
699 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericDescriptor, Locators));
700 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericDescriptor, SubDescriptors));
706 ASDCP::MXF::GenericDescriptor::Dump(FILE* stream)
708 char identbuf[IdentBufferLen];
714 InterchangeObject::Dump(stream);
715 fprintf(stream, " %s:\n", "Locators");
716 Locators.Dump(stream);
717 fprintf(stream, " %s:\n", "SubDescriptors");
718 SubDescriptors.Dump(stream);
722 //------------------------------------------------------------------------------------------
727 ASDCP::MXF::FileDescriptor::InitFromTLVSet(TLVReader& TLVSet)
729 Result_t result = GenericDescriptor::InitFromTLVSet(TLVSet);
730 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(FileDescriptor, LinkedTrackID));
731 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(FileDescriptor, SampleRate));
732 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(FileDescriptor, ContainerDuration));
733 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(FileDescriptor, EssenceContainer));
734 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(FileDescriptor, Codec));
740 ASDCP::MXF::FileDescriptor::Dump(FILE* stream)
742 char identbuf[IdentBufferLen];
748 GenericDescriptor::Dump(stream);
749 fprintf(stream, " %22s = %d\n", "LinkedTrackID", LinkedTrackID);
750 fprintf(stream, " %22s = %s\n", "SampleRate", SampleRate.ToString(identbuf));
751 fprintf(stream, " %22s = %s\n", "ContainerDuration", i64sz(ContainerDuration, identbuf));
752 fprintf(stream, " %22s = %s\n", "EssenceContainer", EssenceContainer.ToString(identbuf));
753 fprintf(stream, " %22s = %s\n", "Codec", Codec.ToString(identbuf));
758 ASDCP::MXF::FileDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
762 Result_t result = KLVPacket::InitFromBuffer(p, l, s_MDD_Table[MDDindex_FileDescriptor].ul);
764 if ( ASDCP_SUCCESS(result) )
766 TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup);
767 result = InitFromTLVSet(MemRDR);
775 ASDCP::MXF::FileDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
777 return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_FileDescriptor].ul, 0);
780 //------------------------------------------------------------------------------------------
781 // GenericSoundEssenceDescriptor
785 ASDCP::MXF::GenericSoundEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
787 Result_t result = FileDescriptor::InitFromTLVSet(TLVSet);
788 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, AudioSamplingRate));
789 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, Locked));
790 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, AudioRefLevel));
791 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, ElectroSpatialFormulation));
792 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, ChannelCount));
793 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, QuantizationBits));
794 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, DialNorm));
795 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, SoundEssenceCompression));
801 ASDCP::MXF::GenericSoundEssenceDescriptor::Dump(FILE* stream)
803 char identbuf[IdentBufferLen];
809 FileDescriptor::Dump(stream);
810 fprintf(stream, " %22s = %s\n", "AudioSamplingRate", AudioSamplingRate.ToString(identbuf));
811 fprintf(stream, " %22s = %d\n", "Locked", Locked);
812 fprintf(stream, " %22s = %d\n", "AudioRefLevel", AudioRefLevel);
813 fprintf(stream, " %22s = %d\n", "ElectroSpatialFormulation", ElectroSpatialFormulation);
814 fprintf(stream, " %22s = %d\n", "ChannelCount", ChannelCount);
815 fprintf(stream, " %22s = %d\n", "QuantizationBits", QuantizationBits);
816 fprintf(stream, " %22s = %d\n", "DialNorm", DialNorm);
817 fprintf(stream, " %22s = %s\n", "SoundEssenceCompression", SoundEssenceCompression.ToString(identbuf));
822 ASDCP::MXF::GenericSoundEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
826 Result_t result = KLVPacket::InitFromBuffer(p, l, s_MDD_Table[MDDindex_GenericSoundEssenceDescriptor].ul);
828 if ( ASDCP_SUCCESS(result) )
830 TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup);
831 result = InitFromTLVSet(MemRDR);
839 ASDCP::MXF::GenericSoundEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
841 return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_GenericSoundEssenceDescriptor].ul, 0);
844 //------------------------------------------------------------------------------------------
845 // WaveAudioDescriptor
849 ASDCP::MXF::WaveAudioDescriptor::InitFromTLVSet(TLVReader& TLVSet)
851 Result_t result = GenericSoundEssenceDescriptor::InitFromTLVSet(TLVSet);
852 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(WaveAudioDescriptor, BlockAlign));
853 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(WaveAudioDescriptor, SequenceOffset));
854 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(WaveAudioDescriptor, AvgBps));
860 ASDCP::MXF::WaveAudioDescriptor::Dump(FILE* stream)
862 char identbuf[IdentBufferLen];
868 GenericSoundEssenceDescriptor::Dump(stream);
869 fprintf(stream, " %22s = %d\n", "BlockAlign", BlockAlign);
870 fprintf(stream, " %22s = %d\n", "SequenceOffset", SequenceOffset);
871 fprintf(stream, " %22s = %d\n", "AvgBps", AvgBps);
876 ASDCP::MXF::WaveAudioDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
880 Result_t result = KLVPacket::InitFromBuffer(p, l, s_MDD_Table[MDDindex_WaveAudioDescriptor].ul);
882 if ( ASDCP_SUCCESS(result) )
884 TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup);
885 result = InitFromTLVSet(MemRDR);
893 ASDCP::MXF::WaveAudioDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
895 return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_WaveAudioDescriptor].ul, 0);
898 //------------------------------------------------------------------------------------------
899 // GenericPictureEssenceDescriptor
903 ASDCP::MXF::GenericPictureEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
905 Result_t result = FileDescriptor::InitFromTLVSet(TLVSet);
906 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, FrameLayout));
907 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, StoredWidth));
908 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, StoredHeight));
909 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, DisplayWidth));
910 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, DisplayHeight));
911 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, AspectRatio));
912 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, Gamma));
913 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, PictureEssenceCoding));
919 ASDCP::MXF::GenericPictureEssenceDescriptor::Dump(FILE* stream)
921 char identbuf[IdentBufferLen];
927 FileDescriptor::Dump(stream);
928 fprintf(stream, " %22s = %d\n", "FrameLayout", FrameLayout);
929 fprintf(stream, " %22s = %d\n", "StoredWidth", StoredWidth);
930 fprintf(stream, " %22s = %d\n", "StoredHeight", StoredHeight);
931 fprintf(stream, " %22s = %d\n", "DisplayWidth", DisplayWidth);
932 fprintf(stream, " %22s = %d\n", "DisplayHeight", DisplayHeight);
933 fprintf(stream, " %22s = %s\n", "AspectRatio", AspectRatio.ToString(identbuf));
934 fprintf(stream, " %22s = %s\n", "Gamma", Gamma.ToString(identbuf));
935 fprintf(stream, " %22s = %s\n", "PictureEssenceCoding", PictureEssenceCoding.ToString(identbuf));
940 ASDCP::MXF::GenericPictureEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
944 Result_t result = KLVPacket::InitFromBuffer(p, l, s_MDD_Table[MDDindex_GenericPictureEssenceDescriptor].ul);
946 if ( ASDCP_SUCCESS(result) )
948 TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup);
949 result = InitFromTLVSet(MemRDR);
957 ASDCP::MXF::GenericPictureEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
959 return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_GenericPictureEssenceDescriptor].ul, 0);
962 //------------------------------------------------------------------------------------------
963 // RGBAEssenceDescriptor
967 ASDCP::MXF::RGBAEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
969 Result_t result = GenericPictureEssenceDescriptor::InitFromTLVSet(TLVSet);
970 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(RGBAEssenceDescriptor, ComponentMaxRef));
971 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(RGBAEssenceDescriptor, ComponentMinRef));
972 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(RGBAEssenceDescriptor, PixelLayout));
978 ASDCP::MXF::RGBAEssenceDescriptor::Dump(FILE* stream)
980 char identbuf[IdentBufferLen];
986 GenericPictureEssenceDescriptor::Dump(stream);
987 fprintf(stream, " %22s = %d\n", "ComponentMaxRef", ComponentMaxRef);
988 fprintf(stream, " %22s = %d\n", "ComponentMinRef", ComponentMinRef);
989 fprintf(stream, " %22s = %s\n", "PixelLayout", PixelLayout.ToString(identbuf));
994 ASDCP::MXF::RGBAEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
998 Result_t result = KLVPacket::InitFromBuffer(p, l, s_MDD_Table[MDDindex_RGBAEssenceDescriptor].ul);
1000 if ( ASDCP_SUCCESS(result) )
1002 TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup);
1003 result = InitFromTLVSet(MemRDR);
1011 ASDCP::MXF::RGBAEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1013 return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_RGBAEssenceDescriptor].ul, 0);
1016 //------------------------------------------------------------------------------------------
1017 // JPEG2000PictureSubDescriptor
1021 ASDCP::MXF::JPEG2000PictureSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1023 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
1024 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Rsize));
1025 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Xsize));
1026 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Ysize));
1027 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XOsize));
1028 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YOsize));
1029 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XTsize));
1030 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YTsize));
1031 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XTOsize));
1032 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YTOsize));
1033 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Csize));
1034 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, PictureComponentSizing));
1035 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, CodingStyleDefault));
1036 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, QuantizationDefault));
1042 ASDCP::MXF::JPEG2000PictureSubDescriptor::Dump(FILE* stream)
1044 char identbuf[IdentBufferLen];
1050 InterchangeObject::Dump(stream);
1051 fprintf(stream, " %22s = %d\n", "Rsize", Rsize);
1052 fprintf(stream, " %22s = %d\n", "Xsize", Xsize);
1053 fprintf(stream, " %22s = %d\n", "Ysize", Ysize);
1054 fprintf(stream, " %22s = %d\n", "XOsize", XOsize);
1055 fprintf(stream, " %22s = %d\n", "YOsize", YOsize);
1056 fprintf(stream, " %22s = %d\n", "XTsize", XTsize);
1057 fprintf(stream, " %22s = %d\n", "YTsize", YTsize);
1058 fprintf(stream, " %22s = %d\n", "XTOsize", XTOsize);
1059 fprintf(stream, " %22s = %d\n", "YTOsize", YTOsize);
1060 fprintf(stream, " %22s = %d\n", "Csize", Csize);
1061 fprintf(stream, " %22s = %s\n", "PictureComponentSizing", PictureComponentSizing.ToString(identbuf));
1062 fprintf(stream, " %22s = %s\n", "CodingStyleDefault", CodingStyleDefault.ToString(identbuf));
1063 fprintf(stream, " %22s = %s\n", "QuantizationDefault", QuantizationDefault.ToString(identbuf));
1068 ASDCP::MXF::JPEG2000PictureSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1072 Result_t result = KLVPacket::InitFromBuffer(p, l, s_MDD_Table[MDDindex_JPEG2000PictureSubDescriptor].ul);
1074 if ( ASDCP_SUCCESS(result) )
1076 TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup);
1077 result = InitFromTLVSet(MemRDR);
1085 ASDCP::MXF::JPEG2000PictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1087 return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_JPEG2000PictureSubDescriptor].ul, 0);
1090 //------------------------------------------------------------------------------------------
1091 // CDCIEssenceDescriptor
1095 ASDCP::MXF::CDCIEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1097 Result_t result = GenericPictureEssenceDescriptor::InitFromTLVSet(TLVSet);
1098 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, ComponentDepth));
1099 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, HorizontalSubsampling));
1100 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, VerticalSubsampling));
1101 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(CDCIEssenceDescriptor, ColorSiting));
1102 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(CDCIEssenceDescriptor, ReversedByteOrder));
1103 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, BlackRefLevel));
1104 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, WhiteReflevel));
1105 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, ColorRange));
1111 ASDCP::MXF::CDCIEssenceDescriptor::Dump(FILE* stream)
1113 char identbuf[IdentBufferLen];
1119 GenericPictureEssenceDescriptor::Dump(stream);
1120 fprintf(stream, " %22s = %d\n", "ComponentDepth", ComponentDepth);
1121 fprintf(stream, " %22s = %d\n", "HorizontalSubsampling", HorizontalSubsampling);
1122 fprintf(stream, " %22s = %d\n", "VerticalSubsampling", VerticalSubsampling);
1123 fprintf(stream, " %22s = %d\n", "ColorSiting", ColorSiting);
1124 fprintf(stream, " %22s = %d\n", "ReversedByteOrder", ReversedByteOrder);
1125 fprintf(stream, " %22s = %d\n", "BlackRefLevel", BlackRefLevel);
1126 fprintf(stream, " %22s = %d\n", "WhiteReflevel", WhiteReflevel);
1127 fprintf(stream, " %22s = %d\n", "ColorRange", ColorRange);
1132 ASDCP::MXF::CDCIEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1136 Result_t result = KLVPacket::InitFromBuffer(p, l, s_MDD_Table[MDDindex_CDCIEssenceDescriptor].ul);
1138 if ( ASDCP_SUCCESS(result) )
1140 TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup);
1141 result = InitFromTLVSet(MemRDR);
1149 ASDCP::MXF::CDCIEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1151 return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_CDCIEssenceDescriptor].ul, 0);
1154 //------------------------------------------------------------------------------------------
1155 // MPEG2VideoDescriptor
1159 ASDCP::MXF::MPEG2VideoDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1161 Result_t result = CDCIEssenceDescriptor::InitFromTLVSet(TLVSet);
1162 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(MPEG2VideoDescriptor, CodedContentType));
1163 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(MPEG2VideoDescriptor, LowDelay));
1164 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(MPEG2VideoDescriptor, BitRate));
1165 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(MPEG2VideoDescriptor, ProfileAndLevel));
1171 ASDCP::MXF::MPEG2VideoDescriptor::Dump(FILE* stream)
1173 char identbuf[IdentBufferLen];
1179 CDCIEssenceDescriptor::Dump(stream);
1180 fprintf(stream, " %22s = %d\n", "CodedContentType", CodedContentType);
1181 fprintf(stream, " %22s = %d\n", "LowDelay", LowDelay);
1182 fprintf(stream, " %22s = %d\n", "BitRate", BitRate);
1183 fprintf(stream, " %22s = %d\n", "ProfileAndLevel", ProfileAndLevel);
1188 ASDCP::MXF::MPEG2VideoDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1192 Result_t result = KLVPacket::InitFromBuffer(p, l, s_MDD_Table[MDDindex_MPEG2VideoDescriptor].ul);
1194 if ( ASDCP_SUCCESS(result) )
1196 TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup);
1197 result = InitFromTLVSet(MemRDR);
1205 ASDCP::MXF::MPEG2VideoDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1207 return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_MPEG2VideoDescriptor].ul, 0);
1210 //------------------------------------------------------------------------------------------
1211 // CryptographicFramework
1215 ASDCP::MXF::CryptographicFramework::InitFromTLVSet(TLVReader& TLVSet)
1217 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
1218 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicFramework, ContextSR));
1224 ASDCP::MXF::CryptographicFramework::Dump(FILE* stream)
1226 char identbuf[IdentBufferLen];
1232 InterchangeObject::Dump(stream);
1233 fprintf(stream, " %22s = %s\n", "ContextSR", ContextSR.ToString(identbuf));
1238 ASDCP::MXF::CryptographicFramework::InitFromBuffer(const byte_t* p, ui32_t l)
1242 Result_t result = KLVPacket::InitFromBuffer(p, l, s_MDD_Table[MDDindex_CryptographicFramework].ul);
1244 if ( ASDCP_SUCCESS(result) )
1246 TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup);
1247 result = InitFromTLVSet(MemRDR);
1255 ASDCP::MXF::CryptographicFramework::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1257 return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_CryptographicFramework].ul, 0);
1260 //------------------------------------------------------------------------------------------
1261 // CryptographicContext
1265 ASDCP::MXF::CryptographicContext::InitFromTLVSet(TLVReader& TLVSet)
1267 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
1268 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, ContextID));
1269 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, SourceEssenceContainer));
1270 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, CipherAlgorithm));
1271 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, MICAlgorithm));
1272 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, CryptographicKeyID));
1278 ASDCP::MXF::CryptographicContext::Dump(FILE* stream)
1280 char identbuf[IdentBufferLen];
1286 InterchangeObject::Dump(stream);
1287 fprintf(stream, " %22s = %s\n", "ContextID", ContextID.ToString(identbuf));
1288 fprintf(stream, " %22s = %s\n", "SourceEssenceContainer", SourceEssenceContainer.ToString(identbuf));
1289 fprintf(stream, " %22s = %s\n", "CipherAlgorithm", CipherAlgorithm.ToString(identbuf));
1290 fprintf(stream, " %22s = %s\n", "MICAlgorithm", MICAlgorithm.ToString(identbuf));
1291 fprintf(stream, " %22s = %s\n", "CryptographicKeyID", CryptographicKeyID.ToString(identbuf));
1296 ASDCP::MXF::CryptographicContext::InitFromBuffer(const byte_t* p, ui32_t l)
1300 Result_t result = KLVPacket::InitFromBuffer(p, l, s_MDD_Table[MDDindex_CryptographicContext].ul);
1302 if ( ASDCP_SUCCESS(result) )
1304 TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup);
1305 result = InitFromTLVSet(MemRDR);
1313 ASDCP::MXF::CryptographicContext::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1315 return WriteKLToBuffer(Buffer, s_MDD_Table[MDDindex_CryptographicContext].ul, 0);