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 const ui32_t kl_length = ASDCP::SMPTE_UL_LENGTH + ASDCP::MXF_BER_LENGTH;
38 //------------------------------------------------------------------------------------------
44 FLT_IndexTableSegment,
47 FLT_EssenceContainerData,
54 FLT_TimecodeComponent,
56 FLT_GenericSoundEssenceDescriptor,
57 FLT_WaveAudioDescriptor,
58 FLT_GenericPictureEssenceDescriptor,
59 FLT_RGBAEssenceDescriptor,
60 FLT_JPEG2000PictureSubDescriptor,
61 FLT_CDCIEssenceDescriptor,
62 FLT_MPEG2VideoDescriptor,
64 FLT_CryptographicFramework,
65 FLT_CryptographicContext,
69 typedef std::map<ASDCP::UL, FLT_t>::iterator FLi_t;
71 class FactoryList : public std::map<ASDCP::UL, FLT_t>
80 Kumu::AutoMutex BlockLock(m_Lock);
84 FLi_t Find(const byte_t* label) {
85 Kumu::AutoMutex BlockLock(m_Lock);
90 Kumu::AutoMutex BlockLock(m_Lock);
97 static FactoryList s_FactoryList;
100 ASDCP::MXF::InterchangeObject*
101 ASDCP::MXF::CreateObject(const byte_t* label)
106 if ( s_FactoryList.empty() )
108 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_Preface), FLT_Preface));
109 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_IndexTableSegment), FLT_IndexTableSegment));
110 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_Identification), FLT_Identification));
111 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_ContentStorage), FLT_ContentStorage));
112 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_EssenceContainerData), FLT_EssenceContainerData));
113 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_MaterialPackage), FLT_MaterialPackage));
114 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_SourcePackage), FLT_SourcePackage));
115 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_StaticTrack), FLT_StaticTrack));
116 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_Track), FLT_Track));
117 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_Sequence), FLT_Sequence));
118 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_SourceClip), FLT_SourceClip));
119 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_TimecodeComponent), FLT_TimecodeComponent));
120 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_FileDescriptor), FLT_FileDescriptor));
121 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_GenericSoundEssenceDescriptor), FLT_GenericSoundEssenceDescriptor));
122 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_WaveAudioDescriptor), FLT_WaveAudioDescriptor));
123 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_GenericPictureEssenceDescriptor), FLT_GenericPictureEssenceDescriptor));
124 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_RGBAEssenceDescriptor), FLT_RGBAEssenceDescriptor));
125 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_JPEG2000PictureSubDescriptor), FLT_JPEG2000PictureSubDescriptor));
126 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_CDCIEssenceDescriptor), FLT_CDCIEssenceDescriptor));
127 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_MPEG2VideoDescriptor), FLT_MPEG2VideoDescriptor));
128 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_DMSegment), FLT_DMSegment));
129 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_CryptographicFramework), FLT_CryptographicFramework));
130 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_CryptographicContext), FLT_CryptographicContext));
133 FLi_t i = s_FactoryList.find(label);
135 if ( i == s_FactoryList.end() )
136 return new InterchangeObject;
140 case FLT_Preface: return new Preface;
141 case FLT_IndexTableSegment: return new IndexTableSegment;
142 case FLT_Identification: return new Identification;
143 case FLT_ContentStorage: return new ContentStorage;
144 case FLT_EssenceContainerData: return new EssenceContainerData;
145 case FLT_MaterialPackage: return new MaterialPackage;
146 case FLT_SourcePackage: return new SourcePackage;
147 case FLT_StaticTrack: return new StaticTrack;
148 case FLT_Track: return new Track;
149 case FLT_Sequence: return new Sequence;
150 case FLT_SourceClip: return new SourceClip;
151 case FLT_TimecodeComponent: return new TimecodeComponent;
152 case FLT_FileDescriptor: return new FileDescriptor;
153 case FLT_GenericSoundEssenceDescriptor: return new GenericSoundEssenceDescriptor;
154 case FLT_WaveAudioDescriptor: return new WaveAudioDescriptor;
155 case FLT_GenericPictureEssenceDescriptor: return new GenericPictureEssenceDescriptor;
156 case FLT_RGBAEssenceDescriptor: return new RGBAEssenceDescriptor;
157 case FLT_JPEG2000PictureSubDescriptor: return new JPEG2000PictureSubDescriptor;
158 case FLT_CDCIEssenceDescriptor: return new CDCIEssenceDescriptor;
159 case FLT_MPEG2VideoDescriptor: return new MPEG2VideoDescriptor;
160 case FLT_DMSegment: return new DMSegment;
161 case FLT_CryptographicFramework: return new CryptographicFramework;
162 case FLT_CryptographicContext: return new CryptographicContext;
169 //------------------------------------------------------------------------------------------
174 //------------------------------------------------------------------------------------------
179 ASDCP::MXF::Identification::InitFromTLVSet(TLVReader& TLVSet)
181 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
182 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ThisGenerationUID));
183 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, CompanyName));
184 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ProductName));
185 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ProductVersion));
186 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, VersionString));
187 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ProductUID));
188 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ModificationDate));
189 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ToolkitVersion));
190 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, Platform));
196 ASDCP::MXF::Identification::WriteToTLVSet(TLVWriter& TLVSet)
198 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
199 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ThisGenerationUID));
200 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, CompanyName));
201 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ProductName));
202 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ProductVersion));
203 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, VersionString));
204 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ProductUID));
205 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ModificationDate));
206 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ToolkitVersion));
207 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, Platform));
213 ASDCP::MXF::Identification::Dump(FILE* stream)
215 char identbuf[IdentBufferLen];
221 InterchangeObject::Dump(stream);
222 fprintf(stream, " %22s = %s\n", "ThisGenerationUID", ThisGenerationUID.EncodeString(identbuf, IdentBufferLen));
223 fprintf(stream, " %22s = %s\n", "CompanyName", CompanyName.EncodeString(identbuf, IdentBufferLen));
224 fprintf(stream, " %22s = %s\n", "ProductName", ProductName.EncodeString(identbuf, IdentBufferLen));
225 fprintf(stream, " %22s = %s\n", "ProductVersion", ProductVersion.EncodeString(identbuf, IdentBufferLen));
226 fprintf(stream, " %22s = %s\n", "VersionString", VersionString.EncodeString(identbuf, IdentBufferLen));
227 fprintf(stream, " %22s = %s\n", "ProductUID", ProductUID.EncodeString(identbuf, IdentBufferLen));
228 fprintf(stream, " %22s = %s\n", "ModificationDate", ModificationDate.EncodeString(identbuf, IdentBufferLen));
229 fprintf(stream, " %22s = %s\n", "ToolkitVersion", ToolkitVersion.EncodeString(identbuf, IdentBufferLen));
230 fprintf(stream, " %22s = %s\n", "Platform", Platform.EncodeString(identbuf, IdentBufferLen));
235 ASDCP::MXF::Identification::InitFromBuffer(const byte_t* p, ui32_t l)
237 m_Typeinfo = &Dict::Type(MDD_Identification);
238 return InterchangeObject::InitFromBuffer(p, l);
243 ASDCP::MXF::Identification::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
245 m_Typeinfo = &Dict::Type(MDD_Identification);
246 return InterchangeObject::WriteToBuffer(Buffer);
249 //------------------------------------------------------------------------------------------
254 ASDCP::MXF::ContentStorage::InitFromTLVSet(TLVReader& TLVSet)
256 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
257 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(ContentStorage, Packages));
258 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(ContentStorage, EssenceContainerData));
264 ASDCP::MXF::ContentStorage::WriteToTLVSet(TLVWriter& TLVSet)
266 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
267 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(ContentStorage, Packages));
268 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(ContentStorage, EssenceContainerData));
274 ASDCP::MXF::ContentStorage::Dump(FILE* stream)
276 char identbuf[IdentBufferLen];
282 InterchangeObject::Dump(stream);
283 fprintf(stream, " %22s:\n", "Packages");
284 Packages.Dump(stream);
285 fprintf(stream, " %22s:\n", "EssenceContainerData");
286 EssenceContainerData.Dump(stream);
291 ASDCP::MXF::ContentStorage::InitFromBuffer(const byte_t* p, ui32_t l)
293 m_Typeinfo = &Dict::Type(MDD_ContentStorage);
294 return InterchangeObject::InitFromBuffer(p, l);
299 ASDCP::MXF::ContentStorage::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
301 m_Typeinfo = &Dict::Type(MDD_ContentStorage);
302 return InterchangeObject::WriteToBuffer(Buffer);
305 //------------------------------------------------------------------------------------------
306 // EssenceContainerData
310 ASDCP::MXF::EssenceContainerData::InitFromTLVSet(TLVReader& TLVSet)
312 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
313 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(EssenceContainerData, LinkedPackageUID));
314 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(EssenceContainerData, IndexSID));
315 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(EssenceContainerData, BodySID));
321 ASDCP::MXF::EssenceContainerData::WriteToTLVSet(TLVWriter& TLVSet)
323 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
324 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(EssenceContainerData, LinkedPackageUID));
325 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(EssenceContainerData, IndexSID));
326 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(EssenceContainerData, BodySID));
332 ASDCP::MXF::EssenceContainerData::Dump(FILE* stream)
334 char identbuf[IdentBufferLen];
340 InterchangeObject::Dump(stream);
341 fprintf(stream, " %22s = %s\n", "LinkedPackageUID", LinkedPackageUID.EncodeString(identbuf, IdentBufferLen));
342 fprintf(stream, " %22s = %d\n", "IndexSID", IndexSID);
343 fprintf(stream, " %22s = %d\n", "BodySID", BodySID);
348 ASDCP::MXF::EssenceContainerData::InitFromBuffer(const byte_t* p, ui32_t l)
350 m_Typeinfo = &Dict::Type(MDD_EssenceContainerData);
351 return InterchangeObject::InitFromBuffer(p, l);
356 ASDCP::MXF::EssenceContainerData::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
358 m_Typeinfo = &Dict::Type(MDD_EssenceContainerData);
359 return InterchangeObject::WriteToBuffer(Buffer);
362 //------------------------------------------------------------------------------------------
367 ASDCP::MXF::GenericPackage::InitFromTLVSet(TLVReader& TLVSet)
369 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
370 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageUID));
371 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, Name));
372 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageCreationDate));
373 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageModifiedDate));
374 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, Tracks));
380 ASDCP::MXF::GenericPackage::WriteToTLVSet(TLVWriter& TLVSet)
382 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
383 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, PackageUID));
384 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, Name));
385 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, PackageCreationDate));
386 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, PackageModifiedDate));
387 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, Tracks));
393 ASDCP::MXF::GenericPackage::Dump(FILE* stream)
395 char identbuf[IdentBufferLen];
401 InterchangeObject::Dump(stream);
402 fprintf(stream, " %22s = %s\n", "PackageUID", PackageUID.EncodeString(identbuf, IdentBufferLen));
403 fprintf(stream, " %22s = %s\n", "Name", Name.EncodeString(identbuf, IdentBufferLen));
404 fprintf(stream, " %22s = %s\n", "PackageCreationDate", PackageCreationDate.EncodeString(identbuf, IdentBufferLen));
405 fprintf(stream, " %22s = %s\n", "PackageModifiedDate", PackageModifiedDate.EncodeString(identbuf, IdentBufferLen));
406 fprintf(stream, " %22s:\n", "Tracks");
411 //------------------------------------------------------------------------------------------
416 ASDCP::MXF::MaterialPackage::InitFromTLVSet(TLVReader& TLVSet)
418 Result_t result = GenericPackage::InitFromTLVSet(TLVSet);
424 ASDCP::MXF::MaterialPackage::WriteToTLVSet(TLVWriter& TLVSet)
426 Result_t result = GenericPackage::WriteToTLVSet(TLVSet);
432 ASDCP::MXF::MaterialPackage::Dump(FILE* stream)
434 char identbuf[IdentBufferLen];
440 GenericPackage::Dump(stream);
445 ASDCP::MXF::MaterialPackage::InitFromBuffer(const byte_t* p, ui32_t l)
447 m_Typeinfo = &Dict::Type(MDD_MaterialPackage);
448 return InterchangeObject::InitFromBuffer(p, l);
453 ASDCP::MXF::MaterialPackage::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
455 m_Typeinfo = &Dict::Type(MDD_MaterialPackage);
456 return InterchangeObject::WriteToBuffer(Buffer);
459 //------------------------------------------------------------------------------------------
464 ASDCP::MXF::SourcePackage::InitFromTLVSet(TLVReader& TLVSet)
466 Result_t result = GenericPackage::InitFromTLVSet(TLVSet);
467 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(SourcePackage, Descriptor));
473 ASDCP::MXF::SourcePackage::WriteToTLVSet(TLVWriter& TLVSet)
475 Result_t result = GenericPackage::WriteToTLVSet(TLVSet);
476 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(SourcePackage, Descriptor));
482 ASDCP::MXF::SourcePackage::Dump(FILE* stream)
484 char identbuf[IdentBufferLen];
490 GenericPackage::Dump(stream);
491 fprintf(stream, " %22s = %s\n", "Descriptor", Descriptor.EncodeString(identbuf, IdentBufferLen));
496 ASDCP::MXF::SourcePackage::InitFromBuffer(const byte_t* p, ui32_t l)
498 m_Typeinfo = &Dict::Type(MDD_SourcePackage);
499 return InterchangeObject::InitFromBuffer(p, l);
504 ASDCP::MXF::SourcePackage::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
506 m_Typeinfo = &Dict::Type(MDD_SourcePackage);
507 return InterchangeObject::WriteToBuffer(Buffer);
510 //------------------------------------------------------------------------------------------
515 ASDCP::MXF::GenericTrack::InitFromTLVSet(TLVReader& TLVSet)
517 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
518 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericTrack, TrackID));
519 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericTrack, TrackNumber));
520 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericTrack, TrackName));
521 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericTrack, Sequence));
527 ASDCP::MXF::GenericTrack::WriteToTLVSet(TLVWriter& TLVSet)
529 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
530 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericTrack, TrackID));
531 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericTrack, TrackNumber));
532 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericTrack, TrackName));
533 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericTrack, Sequence));
539 ASDCP::MXF::GenericTrack::Dump(FILE* stream)
541 char identbuf[IdentBufferLen];
547 InterchangeObject::Dump(stream);
548 fprintf(stream, " %22s = %d\n", "TrackID", TrackID);
549 fprintf(stream, " %22s = %d\n", "TrackNumber", TrackNumber);
550 fprintf(stream, " %22s = %s\n", "TrackName", TrackName.EncodeString(identbuf, IdentBufferLen));
551 fprintf(stream, " %22s = %s\n", "Sequence", Sequence.EncodeString(identbuf, IdentBufferLen));
555 //------------------------------------------------------------------------------------------
560 ASDCP::MXF::StaticTrack::InitFromTLVSet(TLVReader& TLVSet)
562 Result_t result = GenericTrack::InitFromTLVSet(TLVSet);
568 ASDCP::MXF::StaticTrack::WriteToTLVSet(TLVWriter& TLVSet)
570 Result_t result = GenericTrack::WriteToTLVSet(TLVSet);
576 ASDCP::MXF::StaticTrack::Dump(FILE* stream)
578 char identbuf[IdentBufferLen];
584 GenericTrack::Dump(stream);
589 ASDCP::MXF::StaticTrack::InitFromBuffer(const byte_t* p, ui32_t l)
591 m_Typeinfo = &Dict::Type(MDD_StaticTrack);
592 return InterchangeObject::InitFromBuffer(p, l);
597 ASDCP::MXF::StaticTrack::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
599 m_Typeinfo = &Dict::Type(MDD_StaticTrack);
600 return InterchangeObject::WriteToBuffer(Buffer);
603 //------------------------------------------------------------------------------------------
608 ASDCP::MXF::Track::InitFromTLVSet(TLVReader& TLVSet)
610 Result_t result = GenericTrack::InitFromTLVSet(TLVSet);
611 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Track, EditRate));
612 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(Track, Origin));
618 ASDCP::MXF::Track::WriteToTLVSet(TLVWriter& TLVSet)
620 Result_t result = GenericTrack::WriteToTLVSet(TLVSet);
621 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Track, EditRate));
622 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(Track, Origin));
628 ASDCP::MXF::Track::Dump(FILE* stream)
630 char identbuf[IdentBufferLen];
636 GenericTrack::Dump(stream);
637 fprintf(stream, " %22s = %s\n", "EditRate", EditRate.EncodeString(identbuf, IdentBufferLen));
638 fprintf(stream, " %22s = %s\n", "Origin", i64sz(Origin, identbuf));
643 ASDCP::MXF::Track::InitFromBuffer(const byte_t* p, ui32_t l)
645 m_Typeinfo = &Dict::Type(MDD_Track);
646 return InterchangeObject::InitFromBuffer(p, l);
651 ASDCP::MXF::Track::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
653 m_Typeinfo = &Dict::Type(MDD_Track);
654 return InterchangeObject::WriteToBuffer(Buffer);
657 //------------------------------------------------------------------------------------------
658 // StructuralComponent
662 ASDCP::MXF::StructuralComponent::InitFromTLVSet(TLVReader& TLVSet)
664 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
665 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(StructuralComponent, DataDefinition));
666 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(StructuralComponent, Duration));
672 ASDCP::MXF::StructuralComponent::WriteToTLVSet(TLVWriter& TLVSet)
674 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
675 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(StructuralComponent, DataDefinition));
676 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(StructuralComponent, Duration));
682 ASDCP::MXF::StructuralComponent::Dump(FILE* stream)
684 char identbuf[IdentBufferLen];
690 InterchangeObject::Dump(stream);
691 fprintf(stream, " %22s = %s\n", "DataDefinition", DataDefinition.EncodeString(identbuf, IdentBufferLen));
692 fprintf(stream, " %22s = %s\n", "Duration", i64sz(Duration, identbuf));
696 //------------------------------------------------------------------------------------------
701 ASDCP::MXF::Sequence::InitFromTLVSet(TLVReader& TLVSet)
703 Result_t result = StructuralComponent::InitFromTLVSet(TLVSet);
704 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Sequence, StructuralComponents));
710 ASDCP::MXF::Sequence::WriteToTLVSet(TLVWriter& TLVSet)
712 Result_t result = StructuralComponent::WriteToTLVSet(TLVSet);
713 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Sequence, StructuralComponents));
719 ASDCP::MXF::Sequence::Dump(FILE* stream)
721 char identbuf[IdentBufferLen];
727 StructuralComponent::Dump(stream);
728 fprintf(stream, " %22s:\n", "StructuralComponents");
729 StructuralComponents.Dump(stream);
734 ASDCP::MXF::Sequence::InitFromBuffer(const byte_t* p, ui32_t l)
736 m_Typeinfo = &Dict::Type(MDD_Sequence);
737 return InterchangeObject::InitFromBuffer(p, l);
742 ASDCP::MXF::Sequence::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
744 m_Typeinfo = &Dict::Type(MDD_Sequence);
745 return InterchangeObject::WriteToBuffer(Buffer);
748 //------------------------------------------------------------------------------------------
753 ASDCP::MXF::SourceClip::InitFromTLVSet(TLVReader& TLVSet)
755 Result_t result = StructuralComponent::InitFromTLVSet(TLVSet);
756 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(SourceClip, StartPosition));
757 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(SourceClip, SourcePackageID));
758 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(SourceClip, SourceTrackID));
764 ASDCP::MXF::SourceClip::WriteToTLVSet(TLVWriter& TLVSet)
766 Result_t result = StructuralComponent::WriteToTLVSet(TLVSet);
767 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(SourceClip, StartPosition));
768 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(SourceClip, SourcePackageID));
769 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(SourceClip, SourceTrackID));
775 ASDCP::MXF::SourceClip::Dump(FILE* stream)
777 char identbuf[IdentBufferLen];
783 StructuralComponent::Dump(stream);
784 fprintf(stream, " %22s = %s\n", "StartPosition", i64sz(StartPosition, identbuf));
785 fprintf(stream, " %22s = %s\n", "SourcePackageID", SourcePackageID.EncodeString(identbuf, IdentBufferLen));
786 fprintf(stream, " %22s = %d\n", "SourceTrackID", SourceTrackID);
791 ASDCP::MXF::SourceClip::InitFromBuffer(const byte_t* p, ui32_t l)
793 m_Typeinfo = &Dict::Type(MDD_SourceClip);
794 return InterchangeObject::InitFromBuffer(p, l);
799 ASDCP::MXF::SourceClip::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
801 m_Typeinfo = &Dict::Type(MDD_SourceClip);
802 return InterchangeObject::WriteToBuffer(Buffer);
805 //------------------------------------------------------------------------------------------
810 ASDCP::MXF::TimecodeComponent::InitFromTLVSet(TLVReader& TLVSet)
812 Result_t result = StructuralComponent::InitFromTLVSet(TLVSet);
813 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(TimecodeComponent, RoundedTimecodeBase));
814 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(TimecodeComponent, StartTimecode));
815 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(TimecodeComponent, DropFrame));
821 ASDCP::MXF::TimecodeComponent::WriteToTLVSet(TLVWriter& TLVSet)
823 Result_t result = StructuralComponent::WriteToTLVSet(TLVSet);
824 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(TimecodeComponent, RoundedTimecodeBase));
825 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(TimecodeComponent, StartTimecode));
826 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(TimecodeComponent, DropFrame));
832 ASDCP::MXF::TimecodeComponent::Dump(FILE* stream)
834 char identbuf[IdentBufferLen];
840 StructuralComponent::Dump(stream);
841 fprintf(stream, " %22s = %d\n", "RoundedTimecodeBase", RoundedTimecodeBase);
842 fprintf(stream, " %22s = %s\n", "StartTimecode", i64sz(StartTimecode, identbuf));
843 fprintf(stream, " %22s = %d\n", "DropFrame", DropFrame);
848 ASDCP::MXF::TimecodeComponent::InitFromBuffer(const byte_t* p, ui32_t l)
850 m_Typeinfo = &Dict::Type(MDD_TimecodeComponent);
851 return InterchangeObject::InitFromBuffer(p, l);
856 ASDCP::MXF::TimecodeComponent::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
858 m_Typeinfo = &Dict::Type(MDD_TimecodeComponent);
859 return InterchangeObject::WriteToBuffer(Buffer);
862 //------------------------------------------------------------------------------------------
867 ASDCP::MXF::GenericDescriptor::InitFromTLVSet(TLVReader& TLVSet)
869 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
870 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericDescriptor, Locators));
871 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericDescriptor, SubDescriptors));
877 ASDCP::MXF::GenericDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
879 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
880 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericDescriptor, Locators));
881 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericDescriptor, SubDescriptors));
887 ASDCP::MXF::GenericDescriptor::Dump(FILE* stream)
889 char identbuf[IdentBufferLen];
895 InterchangeObject::Dump(stream);
896 fprintf(stream, " %22s:\n", "Locators");
897 Locators.Dump(stream);
898 fprintf(stream, " %22s:\n", "SubDescriptors");
899 SubDescriptors.Dump(stream);
903 //------------------------------------------------------------------------------------------
908 ASDCP::MXF::FileDescriptor::InitFromTLVSet(TLVReader& TLVSet)
910 Result_t result = GenericDescriptor::InitFromTLVSet(TLVSet);
911 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(FileDescriptor, LinkedTrackID));
912 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(FileDescriptor, SampleRate));
913 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(FileDescriptor, ContainerDuration));
914 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(FileDescriptor, EssenceContainer));
915 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(FileDescriptor, Codec));
921 ASDCP::MXF::FileDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
923 Result_t result = GenericDescriptor::WriteToTLVSet(TLVSet);
924 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(FileDescriptor, LinkedTrackID));
925 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(FileDescriptor, SampleRate));
926 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(FileDescriptor, ContainerDuration));
927 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(FileDescriptor, EssenceContainer));
928 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(FileDescriptor, Codec));
934 ASDCP::MXF::FileDescriptor::Dump(FILE* stream)
936 char identbuf[IdentBufferLen];
942 GenericDescriptor::Dump(stream);
943 fprintf(stream, " %22s = %d\n", "LinkedTrackID", LinkedTrackID);
944 fprintf(stream, " %22s = %s\n", "SampleRate", SampleRate.EncodeString(identbuf, IdentBufferLen));
945 fprintf(stream, " %22s = %s\n", "ContainerDuration", i64sz(ContainerDuration, identbuf));
946 fprintf(stream, " %22s = %s\n", "EssenceContainer", EssenceContainer.EncodeString(identbuf, IdentBufferLen));
947 fprintf(stream, " %22s = %s\n", "Codec", Codec.EncodeString(identbuf, IdentBufferLen));
952 ASDCP::MXF::FileDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
954 m_Typeinfo = &Dict::Type(MDD_FileDescriptor);
955 return InterchangeObject::InitFromBuffer(p, l);
960 ASDCP::MXF::FileDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
962 m_Typeinfo = &Dict::Type(MDD_FileDescriptor);
963 return InterchangeObject::WriteToBuffer(Buffer);
966 //------------------------------------------------------------------------------------------
967 // GenericSoundEssenceDescriptor
971 ASDCP::MXF::GenericSoundEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
973 Result_t result = FileDescriptor::InitFromTLVSet(TLVSet);
974 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, AudioSamplingRate));
975 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, Locked));
976 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, AudioRefLevel));
977 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, ChannelCount));
978 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, QuantizationBits));
979 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, DialNorm));
985 ASDCP::MXF::GenericSoundEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
987 Result_t result = FileDescriptor::WriteToTLVSet(TLVSet);
988 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, AudioSamplingRate));
989 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, Locked));
990 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, AudioRefLevel));
991 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, ChannelCount));
992 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, QuantizationBits));
993 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, DialNorm));
999 ASDCP::MXF::GenericSoundEssenceDescriptor::Dump(FILE* stream)
1001 char identbuf[IdentBufferLen];
1007 FileDescriptor::Dump(stream);
1008 fprintf(stream, " %22s = %s\n", "AudioSamplingRate", AudioSamplingRate.EncodeString(identbuf, IdentBufferLen));
1009 fprintf(stream, " %22s = %d\n", "Locked", Locked);
1010 fprintf(stream, " %22s = %d\n", "AudioRefLevel", AudioRefLevel);
1011 fprintf(stream, " %22s = %d\n", "ChannelCount", ChannelCount);
1012 fprintf(stream, " %22s = %d\n", "QuantizationBits", QuantizationBits);
1013 fprintf(stream, " %22s = %d\n", "DialNorm", DialNorm);
1018 ASDCP::MXF::GenericSoundEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1020 m_Typeinfo = &Dict::Type(MDD_GenericSoundEssenceDescriptor);
1021 return InterchangeObject::InitFromBuffer(p, l);
1026 ASDCP::MXF::GenericSoundEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1028 m_Typeinfo = &Dict::Type(MDD_GenericSoundEssenceDescriptor);
1029 return InterchangeObject::WriteToBuffer(Buffer);
1032 //------------------------------------------------------------------------------------------
1033 // WaveAudioDescriptor
1037 ASDCP::MXF::WaveAudioDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1039 Result_t result = GenericSoundEssenceDescriptor::InitFromTLVSet(TLVSet);
1040 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(WaveAudioDescriptor, BlockAlign));
1041 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(WaveAudioDescriptor, SequenceOffset));
1042 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(WaveAudioDescriptor, AvgBps));
1048 ASDCP::MXF::WaveAudioDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1050 Result_t result = GenericSoundEssenceDescriptor::WriteToTLVSet(TLVSet);
1051 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(WaveAudioDescriptor, BlockAlign));
1052 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(WaveAudioDescriptor, SequenceOffset));
1053 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(WaveAudioDescriptor, AvgBps));
1059 ASDCP::MXF::WaveAudioDescriptor::Dump(FILE* stream)
1061 char identbuf[IdentBufferLen];
1067 GenericSoundEssenceDescriptor::Dump(stream);
1068 fprintf(stream, " %22s = %d\n", "BlockAlign", BlockAlign);
1069 fprintf(stream, " %22s = %d\n", "SequenceOffset", SequenceOffset);
1070 fprintf(stream, " %22s = %d\n", "AvgBps", AvgBps);
1075 ASDCP::MXF::WaveAudioDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1077 m_Typeinfo = &Dict::Type(MDD_WaveAudioDescriptor);
1078 return InterchangeObject::InitFromBuffer(p, l);
1083 ASDCP::MXF::WaveAudioDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1085 m_Typeinfo = &Dict::Type(MDD_WaveAudioDescriptor);
1086 return InterchangeObject::WriteToBuffer(Buffer);
1089 //------------------------------------------------------------------------------------------
1090 // GenericPictureEssenceDescriptor
1094 ASDCP::MXF::GenericPictureEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1096 Result_t result = FileDescriptor::InitFromTLVSet(TLVSet);
1097 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, FrameLayout));
1098 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, StoredWidth));
1099 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, StoredHeight));
1100 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, AspectRatio));
1106 ASDCP::MXF::GenericPictureEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1108 Result_t result = FileDescriptor::WriteToTLVSet(TLVSet);
1109 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, FrameLayout));
1110 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, StoredWidth));
1111 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, StoredHeight));
1112 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, AspectRatio));
1118 ASDCP::MXF::GenericPictureEssenceDescriptor::Dump(FILE* stream)
1120 char identbuf[IdentBufferLen];
1126 FileDescriptor::Dump(stream);
1127 fprintf(stream, " %22s = %d\n", "FrameLayout", FrameLayout);
1128 fprintf(stream, " %22s = %d\n", "StoredWidth", StoredWidth);
1129 fprintf(stream, " %22s = %d\n", "StoredHeight", StoredHeight);
1130 fprintf(stream, " %22s = %s\n", "AspectRatio", AspectRatio.EncodeString(identbuf, IdentBufferLen));
1135 ASDCP::MXF::GenericPictureEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1137 m_Typeinfo = &Dict::Type(MDD_GenericPictureEssenceDescriptor);
1138 return InterchangeObject::InitFromBuffer(p, l);
1143 ASDCP::MXF::GenericPictureEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1145 m_Typeinfo = &Dict::Type(MDD_GenericPictureEssenceDescriptor);
1146 return InterchangeObject::WriteToBuffer(Buffer);
1149 //------------------------------------------------------------------------------------------
1150 // RGBAEssenceDescriptor
1154 ASDCP::MXF::RGBAEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1156 Result_t result = GenericPictureEssenceDescriptor::InitFromTLVSet(TLVSet);
1157 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(RGBAEssenceDescriptor, ComponentMaxRef));
1158 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(RGBAEssenceDescriptor, ComponentMinRef));
1164 ASDCP::MXF::RGBAEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1166 Result_t result = GenericPictureEssenceDescriptor::WriteToTLVSet(TLVSet);
1167 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(RGBAEssenceDescriptor, ComponentMaxRef));
1168 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(RGBAEssenceDescriptor, ComponentMinRef));
1174 ASDCP::MXF::RGBAEssenceDescriptor::Dump(FILE* stream)
1176 char identbuf[IdentBufferLen];
1182 GenericPictureEssenceDescriptor::Dump(stream);
1183 fprintf(stream, " %22s = %d\n", "ComponentMaxRef", ComponentMaxRef);
1184 fprintf(stream, " %22s = %d\n", "ComponentMinRef", ComponentMinRef);
1189 ASDCP::MXF::RGBAEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1191 m_Typeinfo = &Dict::Type(MDD_RGBAEssenceDescriptor);
1192 return InterchangeObject::InitFromBuffer(p, l);
1197 ASDCP::MXF::RGBAEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1199 m_Typeinfo = &Dict::Type(MDD_RGBAEssenceDescriptor);
1200 return InterchangeObject::WriteToBuffer(Buffer);
1203 //------------------------------------------------------------------------------------------
1204 // JPEG2000PictureSubDescriptor
1208 ASDCP::MXF::JPEG2000PictureSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1210 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
1211 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Rsize));
1212 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Xsize));
1213 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Ysize));
1214 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XOsize));
1215 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YOsize));
1216 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XTsize));
1217 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YTsize));
1218 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XTOsize));
1219 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YTOsize));
1220 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Csize));
1221 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, PictureComponentSizing));
1222 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, CodingStyleDefault));
1223 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, QuantizationDefault));
1229 ASDCP::MXF::JPEG2000PictureSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1231 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
1232 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Rsize));
1233 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Xsize));
1234 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Ysize));
1235 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XOsize));
1236 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YOsize));
1237 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XTsize));
1238 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YTsize));
1239 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XTOsize));
1240 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YTOsize));
1241 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Csize));
1242 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, PictureComponentSizing));
1243 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, CodingStyleDefault));
1244 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, QuantizationDefault));
1250 ASDCP::MXF::JPEG2000PictureSubDescriptor::Dump(FILE* stream)
1252 char identbuf[IdentBufferLen];
1258 InterchangeObject::Dump(stream);
1259 fprintf(stream, " %22s = %d\n", "Rsize", Rsize);
1260 fprintf(stream, " %22s = %d\n", "Xsize", Xsize);
1261 fprintf(stream, " %22s = %d\n", "Ysize", Ysize);
1262 fprintf(stream, " %22s = %d\n", "XOsize", XOsize);
1263 fprintf(stream, " %22s = %d\n", "YOsize", YOsize);
1264 fprintf(stream, " %22s = %d\n", "XTsize", XTsize);
1265 fprintf(stream, " %22s = %d\n", "YTsize", YTsize);
1266 fprintf(stream, " %22s = %d\n", "XTOsize", XTOsize);
1267 fprintf(stream, " %22s = %d\n", "YTOsize", YTOsize);
1268 fprintf(stream, " %22s = %d\n", "Csize", Csize);
1269 fprintf(stream, " %22s = %s\n", "PictureComponentSizing", PictureComponentSizing.EncodeString(identbuf, IdentBufferLen));
1270 fprintf(stream, " %22s = %s\n", "CodingStyleDefault", CodingStyleDefault.EncodeString(identbuf, IdentBufferLen));
1271 fprintf(stream, " %22s = %s\n", "QuantizationDefault", QuantizationDefault.EncodeString(identbuf, IdentBufferLen));
1276 ASDCP::MXF::JPEG2000PictureSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1278 m_Typeinfo = &Dict::Type(MDD_JPEG2000PictureSubDescriptor);
1279 return InterchangeObject::InitFromBuffer(p, l);
1284 ASDCP::MXF::JPEG2000PictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1286 m_Typeinfo = &Dict::Type(MDD_JPEG2000PictureSubDescriptor);
1287 return InterchangeObject::WriteToBuffer(Buffer);
1290 //------------------------------------------------------------------------------------------
1291 // CDCIEssenceDescriptor
1295 ASDCP::MXF::CDCIEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1297 Result_t result = GenericPictureEssenceDescriptor::InitFromTLVSet(TLVSet);
1298 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, ComponentDepth));
1299 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, HorizontalSubsampling));
1300 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, VerticalSubsampling));
1301 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(CDCIEssenceDescriptor, ColorSiting));
1307 ASDCP::MXF::CDCIEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1309 Result_t result = GenericPictureEssenceDescriptor::WriteToTLVSet(TLVSet);
1310 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, ComponentDepth));
1311 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, HorizontalSubsampling));
1312 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, VerticalSubsampling));
1313 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, ColorSiting));
1319 ASDCP::MXF::CDCIEssenceDescriptor::Dump(FILE* stream)
1321 char identbuf[IdentBufferLen];
1327 GenericPictureEssenceDescriptor::Dump(stream);
1328 fprintf(stream, " %22s = %d\n", "ComponentDepth", ComponentDepth);
1329 fprintf(stream, " %22s = %d\n", "HorizontalSubsampling", HorizontalSubsampling);
1330 fprintf(stream, " %22s = %d\n", "VerticalSubsampling", VerticalSubsampling);
1331 fprintf(stream, " %22s = %d\n", "ColorSiting", ColorSiting);
1336 ASDCP::MXF::CDCIEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1338 m_Typeinfo = &Dict::Type(MDD_CDCIEssenceDescriptor);
1339 return InterchangeObject::InitFromBuffer(p, l);
1344 ASDCP::MXF::CDCIEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1346 m_Typeinfo = &Dict::Type(MDD_CDCIEssenceDescriptor);
1347 return InterchangeObject::WriteToBuffer(Buffer);
1350 //------------------------------------------------------------------------------------------
1351 // MPEG2VideoDescriptor
1355 ASDCP::MXF::MPEG2VideoDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1357 Result_t result = CDCIEssenceDescriptor::InitFromTLVSet(TLVSet);
1358 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(MPEG2VideoDescriptor, CodedContentType));
1359 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(MPEG2VideoDescriptor, LowDelay));
1360 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(MPEG2VideoDescriptor, BitRate));
1361 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(MPEG2VideoDescriptor, ProfileAndLevel));
1367 ASDCP::MXF::MPEG2VideoDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1369 Result_t result = CDCIEssenceDescriptor::WriteToTLVSet(TLVSet);
1370 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(MPEG2VideoDescriptor, CodedContentType));
1371 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(MPEG2VideoDescriptor, LowDelay));
1372 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(MPEG2VideoDescriptor, BitRate));
1373 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(MPEG2VideoDescriptor, ProfileAndLevel));
1379 ASDCP::MXF::MPEG2VideoDescriptor::Dump(FILE* stream)
1381 char identbuf[IdentBufferLen];
1387 CDCIEssenceDescriptor::Dump(stream);
1388 fprintf(stream, " %22s = %d\n", "CodedContentType", CodedContentType);
1389 fprintf(stream, " %22s = %d\n", "LowDelay", LowDelay);
1390 fprintf(stream, " %22s = %d\n", "BitRate", BitRate);
1391 fprintf(stream, " %22s = %d\n", "ProfileAndLevel", ProfileAndLevel);
1396 ASDCP::MXF::MPEG2VideoDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1398 m_Typeinfo = &Dict::Type(MDD_MPEG2VideoDescriptor);
1399 return InterchangeObject::InitFromBuffer(p, l);
1404 ASDCP::MXF::MPEG2VideoDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1406 m_Typeinfo = &Dict::Type(MDD_MPEG2VideoDescriptor);
1407 return InterchangeObject::WriteToBuffer(Buffer);
1410 //------------------------------------------------------------------------------------------
1415 ASDCP::MXF::DMSegment::InitFromTLVSet(TLVReader& TLVSet)
1417 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
1418 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(DMSegment, EventStartPosition));
1419 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DMSegment, EventComment));
1420 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DMSegment, DMFramework));
1426 ASDCP::MXF::DMSegment::WriteToTLVSet(TLVWriter& TLVSet)
1428 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
1429 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(DMSegment, EventStartPosition));
1430 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DMSegment, EventComment));
1431 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DMSegment, DMFramework));
1437 ASDCP::MXF::DMSegment::Dump(FILE* stream)
1439 char identbuf[IdentBufferLen];
1445 InterchangeObject::Dump(stream);
1446 fprintf(stream, " %22s = %s\n", "EventStartPosition", i64sz(EventStartPosition, identbuf));
1447 fprintf(stream, " %22s = %s\n", "EventComment", EventComment.EncodeString(identbuf, IdentBufferLen));
1448 fprintf(stream, " %22s = %s\n", "DMFramework", DMFramework.EncodeString(identbuf, IdentBufferLen));
1453 ASDCP::MXF::DMSegment::InitFromBuffer(const byte_t* p, ui32_t l)
1455 m_Typeinfo = &Dict::Type(MDD_DMSegment);
1456 return InterchangeObject::InitFromBuffer(p, l);
1461 ASDCP::MXF::DMSegment::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1463 m_Typeinfo = &Dict::Type(MDD_DMSegment);
1464 return InterchangeObject::WriteToBuffer(Buffer);
1467 //------------------------------------------------------------------------------------------
1468 // CryptographicFramework
1472 ASDCP::MXF::CryptographicFramework::InitFromTLVSet(TLVReader& TLVSet)
1474 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
1475 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicFramework, ContextSR));
1481 ASDCP::MXF::CryptographicFramework::WriteToTLVSet(TLVWriter& TLVSet)
1483 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
1484 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicFramework, ContextSR));
1490 ASDCP::MXF::CryptographicFramework::Dump(FILE* stream)
1492 char identbuf[IdentBufferLen];
1498 InterchangeObject::Dump(stream);
1499 fprintf(stream, " %22s = %s\n", "ContextSR", ContextSR.EncodeString(identbuf, IdentBufferLen));
1504 ASDCP::MXF::CryptographicFramework::InitFromBuffer(const byte_t* p, ui32_t l)
1506 m_Typeinfo = &Dict::Type(MDD_CryptographicFramework);
1507 return InterchangeObject::InitFromBuffer(p, l);
1512 ASDCP::MXF::CryptographicFramework::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1514 m_Typeinfo = &Dict::Type(MDD_CryptographicFramework);
1515 return InterchangeObject::WriteToBuffer(Buffer);
1518 //------------------------------------------------------------------------------------------
1519 // CryptographicContext
1523 ASDCP::MXF::CryptographicContext::InitFromTLVSet(TLVReader& TLVSet)
1525 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
1526 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, ContextID));
1527 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, SourceEssenceContainer));
1528 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, CipherAlgorithm));
1529 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, MICAlgorithm));
1530 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, CryptographicKeyID));
1536 ASDCP::MXF::CryptographicContext::WriteToTLVSet(TLVWriter& TLVSet)
1538 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
1539 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, ContextID));
1540 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, SourceEssenceContainer));
1541 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, CipherAlgorithm));
1542 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, MICAlgorithm));
1543 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, CryptographicKeyID));
1549 ASDCP::MXF::CryptographicContext::Dump(FILE* stream)
1551 char identbuf[IdentBufferLen];
1557 InterchangeObject::Dump(stream);
1558 fprintf(stream, " %22s = %s\n", "ContextID", ContextID.EncodeString(identbuf, IdentBufferLen));
1559 fprintf(stream, " %22s = %s\n", "SourceEssenceContainer", SourceEssenceContainer.EncodeString(identbuf, IdentBufferLen));
1560 fprintf(stream, " %22s = %s\n", "CipherAlgorithm", CipherAlgorithm.EncodeString(identbuf, IdentBufferLen));
1561 fprintf(stream, " %22s = %s\n", "MICAlgorithm", MICAlgorithm.EncodeString(identbuf, IdentBufferLen));
1562 fprintf(stream, " %22s = %s\n", "CryptographicKeyID", CryptographicKeyID.EncodeString(identbuf, IdentBufferLen));
1567 ASDCP::MXF::CryptographicContext::InitFromBuffer(const byte_t* p, ui32_t l)
1569 m_Typeinfo = &Dict::Type(MDD_CryptographicContext);
1570 return InterchangeObject::InitFromBuffer(p, l);
1575 ASDCP::MXF::CryptographicContext::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1577 m_Typeinfo = &Dict::Type(MDD_CryptographicContext);
1578 return InterchangeObject::WriteToBuffer(Buffer);