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
35 #include "hex_utils.h"
37 const ui32_t kl_length = ASDCP::SMPTE_UL_LENGTH + ASDCP::MXF_BER_LENGTH;
39 //------------------------------------------------------------------------------------------
45 FLT_IndexTableSegment,
48 FLT_EssenceContainerData,
55 FLT_TimecodeComponent,
57 FLT_GenericSoundEssenceDescriptor,
58 FLT_WaveAudioDescriptor,
59 FLT_GenericPictureEssenceDescriptor,
60 FLT_RGBAEssenceDescriptor,
61 FLT_JPEG2000PictureSubDescriptor,
62 FLT_CDCIEssenceDescriptor,
63 FLT_MPEG2VideoDescriptor,
65 FLT_CryptographicFramework,
66 FLT_CryptographicContext,
70 typedef std::map<ASDCP::UL, FLT_t>::iterator FLi_t;
72 class FactoryList : public std::map<ASDCP::UL, FLT_t>
81 ASDCP::AutoMutex BlockLock(m_Lock);
85 FLi_t Find(const byte_t* label) {
86 ASDCP::AutoMutex BlockLock(m_Lock);
91 ASDCP::AutoMutex BlockLock(m_Lock);
98 static FactoryList s_FactoryList;
101 ASDCP::MXF::InterchangeObject*
102 ASDCP::MXF::CreateObject(const byte_t* label)
107 if ( s_FactoryList.empty() )
109 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_Preface), FLT_Preface));
110 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_IndexTableSegment), FLT_IndexTableSegment));
111 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_Identification), FLT_Identification));
112 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_ContentStorage), FLT_ContentStorage));
113 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_EssenceContainerData), FLT_EssenceContainerData));
114 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_MaterialPackage), FLT_MaterialPackage));
115 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_SourcePackage), FLT_SourcePackage));
116 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_StaticTrack), FLT_StaticTrack));
117 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_Track), FLT_Track));
118 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_Sequence), FLT_Sequence));
119 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_SourceClip), FLT_SourceClip));
120 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_TimecodeComponent), FLT_TimecodeComponent));
121 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_FileDescriptor), FLT_FileDescriptor));
122 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_GenericSoundEssenceDescriptor), FLT_GenericSoundEssenceDescriptor));
123 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_WaveAudioDescriptor), FLT_WaveAudioDescriptor));
124 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_GenericPictureEssenceDescriptor), FLT_GenericPictureEssenceDescriptor));
125 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_RGBAEssenceDescriptor), FLT_RGBAEssenceDescriptor));
126 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_JPEG2000PictureSubDescriptor), FLT_JPEG2000PictureSubDescriptor));
127 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_CDCIEssenceDescriptor), FLT_CDCIEssenceDescriptor));
128 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_MPEG2VideoDescriptor), FLT_MPEG2VideoDescriptor));
129 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_DMSegment), FLT_DMSegment));
130 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_CryptographicFramework), FLT_CryptographicFramework));
131 s_FactoryList.insert(FactoryList::value_type(Dict::ul(MDD_CryptographicContext), FLT_CryptographicContext));
134 FLi_t i = s_FactoryList.find(label);
136 if ( i == s_FactoryList.end() )
137 return new InterchangeObject;
141 case FLT_Preface: return new Preface;
142 case FLT_IndexTableSegment: return new IndexTableSegment;
143 case FLT_Identification: return new Identification;
144 case FLT_ContentStorage: return new ContentStorage;
145 case FLT_EssenceContainerData: return new EssenceContainerData;
146 case FLT_MaterialPackage: return new MaterialPackage;
147 case FLT_SourcePackage: return new SourcePackage;
148 case FLT_StaticTrack: return new StaticTrack;
149 case FLT_Track: return new Track;
150 case FLT_Sequence: return new Sequence;
151 case FLT_SourceClip: return new SourceClip;
152 case FLT_TimecodeComponent: return new TimecodeComponent;
153 case FLT_FileDescriptor: return new FileDescriptor;
154 case FLT_GenericSoundEssenceDescriptor: return new GenericSoundEssenceDescriptor;
155 case FLT_WaveAudioDescriptor: return new WaveAudioDescriptor;
156 case FLT_GenericPictureEssenceDescriptor: return new GenericPictureEssenceDescriptor;
157 case FLT_RGBAEssenceDescriptor: return new RGBAEssenceDescriptor;
158 case FLT_JPEG2000PictureSubDescriptor: return new JPEG2000PictureSubDescriptor;
159 case FLT_CDCIEssenceDescriptor: return new CDCIEssenceDescriptor;
160 case FLT_MPEG2VideoDescriptor: return new MPEG2VideoDescriptor;
161 case FLT_DMSegment: return new DMSegment;
162 case FLT_CryptographicFramework: return new CryptographicFramework;
163 case FLT_CryptographicContext: return new CryptographicContext;
170 //------------------------------------------------------------------------------------------
175 //------------------------------------------------------------------------------------------
180 ASDCP::MXF::Identification::InitFromTLVSet(TLVReader& TLVSet)
182 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
183 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ThisGenerationUID));
184 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, CompanyName));
185 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ProductName));
186 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ProductVersion));
187 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, VersionString));
188 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ProductUID));
189 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ModificationDate));
190 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ToolkitVersion));
191 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, Platform));
197 ASDCP::MXF::Identification::WriteToTLVSet(TLVWriter& TLVSet)
199 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
200 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ThisGenerationUID));
201 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, CompanyName));
202 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ProductName));
203 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ProductVersion));
204 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, VersionString));
205 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ProductUID));
206 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ModificationDate));
207 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ToolkitVersion));
208 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, Platform));
214 ASDCP::MXF::Identification::Dump(FILE* stream)
216 char identbuf[IdentBufferLen];
222 InterchangeObject::Dump(stream);
223 fprintf(stream, " %22s = %s\n", "ThisGenerationUID", ThisGenerationUID.ToString(identbuf));
224 fprintf(stream, " %22s = %s\n", "CompanyName", CompanyName.ToString(identbuf));
225 fprintf(stream, " %22s = %s\n", "ProductName", ProductName.ToString(identbuf));
226 fprintf(stream, " %22s = %s\n", "ProductVersion", ProductVersion.ToString(identbuf));
227 fprintf(stream, " %22s = %s\n", "VersionString", VersionString.ToString(identbuf));
228 fprintf(stream, " %22s = %s\n", "ProductUID", ProductUID.ToString(identbuf));
229 fprintf(stream, " %22s = %s\n", "ModificationDate", ModificationDate.ToString(identbuf));
230 fprintf(stream, " %22s = %s\n", "ToolkitVersion", ToolkitVersion.ToString(identbuf));
231 fprintf(stream, " %22s = %s\n", "Platform", Platform.ToString(identbuf));
236 ASDCP::MXF::Identification::InitFromBuffer(const byte_t* p, ui32_t l)
238 m_Typeinfo = &Dict::Type(MDD_Identification);
239 return InterchangeObject::InitFromBuffer(p, l);
244 ASDCP::MXF::Identification::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
246 m_Typeinfo = &Dict::Type(MDD_Identification);
247 return InterchangeObject::WriteToBuffer(Buffer);
250 //------------------------------------------------------------------------------------------
255 ASDCP::MXF::ContentStorage::InitFromTLVSet(TLVReader& TLVSet)
257 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
258 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(ContentStorage, Packages));
259 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(ContentStorage, EssenceContainerData));
265 ASDCP::MXF::ContentStorage::WriteToTLVSet(TLVWriter& TLVSet)
267 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
268 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(ContentStorage, Packages));
269 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(ContentStorage, EssenceContainerData));
275 ASDCP::MXF::ContentStorage::Dump(FILE* stream)
277 char identbuf[IdentBufferLen];
283 InterchangeObject::Dump(stream);
284 fprintf(stream, " %22s:\n", "Packages");
285 Packages.Dump(stream);
286 fprintf(stream, " %22s:\n", "EssenceContainerData");
287 EssenceContainerData.Dump(stream);
292 ASDCP::MXF::ContentStorage::InitFromBuffer(const byte_t* p, ui32_t l)
294 m_Typeinfo = &Dict::Type(MDD_ContentStorage);
295 return InterchangeObject::InitFromBuffer(p, l);
300 ASDCP::MXF::ContentStorage::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
302 m_Typeinfo = &Dict::Type(MDD_ContentStorage);
303 return InterchangeObject::WriteToBuffer(Buffer);
306 //------------------------------------------------------------------------------------------
307 // EssenceContainerData
311 ASDCP::MXF::EssenceContainerData::InitFromTLVSet(TLVReader& TLVSet)
313 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
314 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(EssenceContainerData, LinkedPackageUID));
315 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(EssenceContainerData, IndexSID));
316 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(EssenceContainerData, BodySID));
322 ASDCP::MXF::EssenceContainerData::WriteToTLVSet(TLVWriter& TLVSet)
324 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
325 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(EssenceContainerData, LinkedPackageUID));
326 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(EssenceContainerData, IndexSID));
327 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(EssenceContainerData, BodySID));
333 ASDCP::MXF::EssenceContainerData::Dump(FILE* stream)
335 char identbuf[IdentBufferLen];
341 InterchangeObject::Dump(stream);
342 fprintf(stream, " %22s = %s\n", "LinkedPackageUID", LinkedPackageUID.ToString(identbuf));
343 fprintf(stream, " %22s = %d\n", "IndexSID", IndexSID);
344 fprintf(stream, " %22s = %d\n", "BodySID", BodySID);
349 ASDCP::MXF::EssenceContainerData::InitFromBuffer(const byte_t* p, ui32_t l)
351 m_Typeinfo = &Dict::Type(MDD_EssenceContainerData);
352 return InterchangeObject::InitFromBuffer(p, l);
357 ASDCP::MXF::EssenceContainerData::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
359 m_Typeinfo = &Dict::Type(MDD_EssenceContainerData);
360 return InterchangeObject::WriteToBuffer(Buffer);
363 //------------------------------------------------------------------------------------------
368 ASDCP::MXF::GenericPackage::InitFromTLVSet(TLVReader& TLVSet)
370 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
371 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageUID));
372 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, Name));
373 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageCreationDate));
374 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageModifiedDate));
375 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, Tracks));
381 ASDCP::MXF::GenericPackage::WriteToTLVSet(TLVWriter& TLVSet)
383 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
384 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, PackageUID));
385 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, Name));
386 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, PackageCreationDate));
387 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, PackageModifiedDate));
388 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, Tracks));
394 ASDCP::MXF::GenericPackage::Dump(FILE* stream)
396 char identbuf[IdentBufferLen];
402 InterchangeObject::Dump(stream);
403 fprintf(stream, " %22s = %s\n", "PackageUID", PackageUID.ToString(identbuf));
404 fprintf(stream, " %22s = %s\n", "Name", Name.ToString(identbuf));
405 fprintf(stream, " %22s = %s\n", "PackageCreationDate", PackageCreationDate.ToString(identbuf));
406 fprintf(stream, " %22s = %s\n", "PackageModifiedDate", PackageModifiedDate.ToString(identbuf));
407 fprintf(stream, " %22s:\n", "Tracks");
412 //------------------------------------------------------------------------------------------
417 ASDCP::MXF::MaterialPackage::InitFromTLVSet(TLVReader& TLVSet)
419 Result_t result = GenericPackage::InitFromTLVSet(TLVSet);
425 ASDCP::MXF::MaterialPackage::WriteToTLVSet(TLVWriter& TLVSet)
427 Result_t result = GenericPackage::WriteToTLVSet(TLVSet);
433 ASDCP::MXF::MaterialPackage::Dump(FILE* stream)
435 char identbuf[IdentBufferLen];
441 GenericPackage::Dump(stream);
446 ASDCP::MXF::MaterialPackage::InitFromBuffer(const byte_t* p, ui32_t l)
448 m_Typeinfo = &Dict::Type(MDD_MaterialPackage);
449 return InterchangeObject::InitFromBuffer(p, l);
454 ASDCP::MXF::MaterialPackage::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
456 m_Typeinfo = &Dict::Type(MDD_MaterialPackage);
457 return InterchangeObject::WriteToBuffer(Buffer);
460 //------------------------------------------------------------------------------------------
465 ASDCP::MXF::SourcePackage::InitFromTLVSet(TLVReader& TLVSet)
467 Result_t result = GenericPackage::InitFromTLVSet(TLVSet);
468 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(SourcePackage, Descriptor));
474 ASDCP::MXF::SourcePackage::WriteToTLVSet(TLVWriter& TLVSet)
476 Result_t result = GenericPackage::WriteToTLVSet(TLVSet);
477 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(SourcePackage, Descriptor));
483 ASDCP::MXF::SourcePackage::Dump(FILE* stream)
485 char identbuf[IdentBufferLen];
491 GenericPackage::Dump(stream);
492 fprintf(stream, " %22s = %s\n", "Descriptor", Descriptor.ToString(identbuf));
497 ASDCP::MXF::SourcePackage::InitFromBuffer(const byte_t* p, ui32_t l)
499 m_Typeinfo = &Dict::Type(MDD_SourcePackage);
500 return InterchangeObject::InitFromBuffer(p, l);
505 ASDCP::MXF::SourcePackage::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
507 m_Typeinfo = &Dict::Type(MDD_SourcePackage);
508 return InterchangeObject::WriteToBuffer(Buffer);
511 //------------------------------------------------------------------------------------------
516 ASDCP::MXF::GenericTrack::InitFromTLVSet(TLVReader& TLVSet)
518 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
519 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericTrack, TrackID));
520 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericTrack, TrackNumber));
521 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericTrack, TrackName));
522 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericTrack, Sequence));
528 ASDCP::MXF::GenericTrack::WriteToTLVSet(TLVWriter& TLVSet)
530 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
531 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericTrack, TrackID));
532 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericTrack, TrackNumber));
533 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericTrack, TrackName));
534 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericTrack, Sequence));
540 ASDCP::MXF::GenericTrack::Dump(FILE* stream)
542 char identbuf[IdentBufferLen];
548 InterchangeObject::Dump(stream);
549 fprintf(stream, " %22s = %d\n", "TrackID", TrackID);
550 fprintf(stream, " %22s = %d\n", "TrackNumber", TrackNumber);
551 fprintf(stream, " %22s = %s\n", "TrackName", TrackName.ToString(identbuf));
552 fprintf(stream, " %22s = %s\n", "Sequence", Sequence.ToString(identbuf));
556 //------------------------------------------------------------------------------------------
561 ASDCP::MXF::StaticTrack::InitFromTLVSet(TLVReader& TLVSet)
563 Result_t result = GenericTrack::InitFromTLVSet(TLVSet);
569 ASDCP::MXF::StaticTrack::WriteToTLVSet(TLVWriter& TLVSet)
571 Result_t result = GenericTrack::WriteToTLVSet(TLVSet);
577 ASDCP::MXF::StaticTrack::Dump(FILE* stream)
579 char identbuf[IdentBufferLen];
585 GenericTrack::Dump(stream);
590 ASDCP::MXF::StaticTrack::InitFromBuffer(const byte_t* p, ui32_t l)
592 m_Typeinfo = &Dict::Type(MDD_StaticTrack);
593 return InterchangeObject::InitFromBuffer(p, l);
598 ASDCP::MXF::StaticTrack::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
600 m_Typeinfo = &Dict::Type(MDD_StaticTrack);
601 return InterchangeObject::WriteToBuffer(Buffer);
604 //------------------------------------------------------------------------------------------
609 ASDCP::MXF::Track::InitFromTLVSet(TLVReader& TLVSet)
611 Result_t result = GenericTrack::InitFromTLVSet(TLVSet);
612 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Track, EditRate));
613 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(Track, Origin));
619 ASDCP::MXF::Track::WriteToTLVSet(TLVWriter& TLVSet)
621 Result_t result = GenericTrack::WriteToTLVSet(TLVSet);
622 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Track, EditRate));
623 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(Track, Origin));
629 ASDCP::MXF::Track::Dump(FILE* stream)
631 char identbuf[IdentBufferLen];
637 GenericTrack::Dump(stream);
638 fprintf(stream, " %22s = %s\n", "EditRate", EditRate.ToString(identbuf));
639 fprintf(stream, " %22s = %s\n", "Origin", i64sz(Origin, identbuf));
644 ASDCP::MXF::Track::InitFromBuffer(const byte_t* p, ui32_t l)
646 m_Typeinfo = &Dict::Type(MDD_Track);
647 return InterchangeObject::InitFromBuffer(p, l);
652 ASDCP::MXF::Track::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
654 m_Typeinfo = &Dict::Type(MDD_Track);
655 return InterchangeObject::WriteToBuffer(Buffer);
658 //------------------------------------------------------------------------------------------
659 // StructuralComponent
663 ASDCP::MXF::StructuralComponent::InitFromTLVSet(TLVReader& TLVSet)
665 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
666 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(StructuralComponent, DataDefinition));
667 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(StructuralComponent, Duration));
673 ASDCP::MXF::StructuralComponent::WriteToTLVSet(TLVWriter& TLVSet)
675 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
676 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(StructuralComponent, DataDefinition));
677 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(StructuralComponent, Duration));
683 ASDCP::MXF::StructuralComponent::Dump(FILE* stream)
685 char identbuf[IdentBufferLen];
691 InterchangeObject::Dump(stream);
692 fprintf(stream, " %22s = %s\n", "DataDefinition", DataDefinition.ToString(identbuf));
693 fprintf(stream, " %22s = %s\n", "Duration", i64sz(Duration, identbuf));
697 //------------------------------------------------------------------------------------------
702 ASDCP::MXF::Sequence::InitFromTLVSet(TLVReader& TLVSet)
704 Result_t result = StructuralComponent::InitFromTLVSet(TLVSet);
705 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Sequence, StructuralComponents));
711 ASDCP::MXF::Sequence::WriteToTLVSet(TLVWriter& TLVSet)
713 Result_t result = StructuralComponent::WriteToTLVSet(TLVSet);
714 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Sequence, StructuralComponents));
720 ASDCP::MXF::Sequence::Dump(FILE* stream)
722 char identbuf[IdentBufferLen];
728 StructuralComponent::Dump(stream);
729 fprintf(stream, " %22s:\n", "StructuralComponents");
730 StructuralComponents.Dump(stream);
735 ASDCP::MXF::Sequence::InitFromBuffer(const byte_t* p, ui32_t l)
737 m_Typeinfo = &Dict::Type(MDD_Sequence);
738 return InterchangeObject::InitFromBuffer(p, l);
743 ASDCP::MXF::Sequence::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
745 m_Typeinfo = &Dict::Type(MDD_Sequence);
746 return InterchangeObject::WriteToBuffer(Buffer);
749 //------------------------------------------------------------------------------------------
754 ASDCP::MXF::SourceClip::InitFromTLVSet(TLVReader& TLVSet)
756 Result_t result = StructuralComponent::InitFromTLVSet(TLVSet);
757 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(SourceClip, StartPosition));
758 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(SourceClip, SourcePackageID));
759 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(SourceClip, SourceTrackID));
765 ASDCP::MXF::SourceClip::WriteToTLVSet(TLVWriter& TLVSet)
767 Result_t result = StructuralComponent::WriteToTLVSet(TLVSet);
768 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(SourceClip, StartPosition));
769 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(SourceClip, SourcePackageID));
770 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(SourceClip, SourceTrackID));
776 ASDCP::MXF::SourceClip::Dump(FILE* stream)
778 char identbuf[IdentBufferLen];
784 StructuralComponent::Dump(stream);
785 fprintf(stream, " %22s = %s\n", "StartPosition", i64sz(StartPosition, identbuf));
786 fprintf(stream, " %22s = %s\n", "SourcePackageID", SourcePackageID.ToString(identbuf));
787 fprintf(stream, " %22s = %d\n", "SourceTrackID", SourceTrackID);
792 ASDCP::MXF::SourceClip::InitFromBuffer(const byte_t* p, ui32_t l)
794 m_Typeinfo = &Dict::Type(MDD_SourceClip);
795 return InterchangeObject::InitFromBuffer(p, l);
800 ASDCP::MXF::SourceClip::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
802 m_Typeinfo = &Dict::Type(MDD_SourceClip);
803 return InterchangeObject::WriteToBuffer(Buffer);
806 //------------------------------------------------------------------------------------------
811 ASDCP::MXF::TimecodeComponent::InitFromTLVSet(TLVReader& TLVSet)
813 Result_t result = StructuralComponent::InitFromTLVSet(TLVSet);
814 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(TimecodeComponent, RoundedTimecodeBase));
815 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(TimecodeComponent, StartTimecode));
816 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(TimecodeComponent, DropFrame));
822 ASDCP::MXF::TimecodeComponent::WriteToTLVSet(TLVWriter& TLVSet)
824 Result_t result = StructuralComponent::WriteToTLVSet(TLVSet);
825 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(TimecodeComponent, RoundedTimecodeBase));
826 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(TimecodeComponent, StartTimecode));
827 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(TimecodeComponent, DropFrame));
833 ASDCP::MXF::TimecodeComponent::Dump(FILE* stream)
835 char identbuf[IdentBufferLen];
841 StructuralComponent::Dump(stream);
842 fprintf(stream, " %22s = %d\n", "RoundedTimecodeBase", RoundedTimecodeBase);
843 fprintf(stream, " %22s = %s\n", "StartTimecode", i64sz(StartTimecode, identbuf));
844 fprintf(stream, " %22s = %d\n", "DropFrame", DropFrame);
849 ASDCP::MXF::TimecodeComponent::InitFromBuffer(const byte_t* p, ui32_t l)
851 m_Typeinfo = &Dict::Type(MDD_TimecodeComponent);
852 return InterchangeObject::InitFromBuffer(p, l);
857 ASDCP::MXF::TimecodeComponent::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
859 m_Typeinfo = &Dict::Type(MDD_TimecodeComponent);
860 return InterchangeObject::WriteToBuffer(Buffer);
863 //------------------------------------------------------------------------------------------
868 ASDCP::MXF::GenericDescriptor::InitFromTLVSet(TLVReader& TLVSet)
870 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
871 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericDescriptor, Locators));
872 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericDescriptor, SubDescriptors));
878 ASDCP::MXF::GenericDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
880 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
881 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericDescriptor, Locators));
882 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericDescriptor, SubDescriptors));
888 ASDCP::MXF::GenericDescriptor::Dump(FILE* stream)
890 char identbuf[IdentBufferLen];
896 InterchangeObject::Dump(stream);
897 fprintf(stream, " %22s:\n", "Locators");
898 Locators.Dump(stream);
899 fprintf(stream, " %22s:\n", "SubDescriptors");
900 SubDescriptors.Dump(stream);
904 //------------------------------------------------------------------------------------------
909 ASDCP::MXF::FileDescriptor::InitFromTLVSet(TLVReader& TLVSet)
911 Result_t result = GenericDescriptor::InitFromTLVSet(TLVSet);
912 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(FileDescriptor, LinkedTrackID));
913 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(FileDescriptor, SampleRate));
914 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(FileDescriptor, ContainerDuration));
915 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(FileDescriptor, EssenceContainer));
916 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(FileDescriptor, Codec));
922 ASDCP::MXF::FileDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
924 Result_t result = GenericDescriptor::WriteToTLVSet(TLVSet);
925 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(FileDescriptor, LinkedTrackID));
926 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(FileDescriptor, SampleRate));
927 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(FileDescriptor, ContainerDuration));
928 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(FileDescriptor, EssenceContainer));
929 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(FileDescriptor, Codec));
935 ASDCP::MXF::FileDescriptor::Dump(FILE* stream)
937 char identbuf[IdentBufferLen];
943 GenericDescriptor::Dump(stream);
944 fprintf(stream, " %22s = %d\n", "LinkedTrackID", LinkedTrackID);
945 fprintf(stream, " %22s = %s\n", "SampleRate", SampleRate.ToString(identbuf));
946 fprintf(stream, " %22s = %s\n", "ContainerDuration", i64sz(ContainerDuration, identbuf));
947 fprintf(stream, " %22s = %s\n", "EssenceContainer", EssenceContainer.ToString(identbuf));
948 fprintf(stream, " %22s = %s\n", "Codec", Codec.ToString(identbuf));
953 ASDCP::MXF::FileDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
955 m_Typeinfo = &Dict::Type(MDD_FileDescriptor);
956 return InterchangeObject::InitFromBuffer(p, l);
961 ASDCP::MXF::FileDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
963 m_Typeinfo = &Dict::Type(MDD_FileDescriptor);
964 return InterchangeObject::WriteToBuffer(Buffer);
967 //------------------------------------------------------------------------------------------
968 // GenericSoundEssenceDescriptor
972 ASDCP::MXF::GenericSoundEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
974 Result_t result = FileDescriptor::InitFromTLVSet(TLVSet);
975 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, AudioSamplingRate));
976 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, Locked));
977 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, AudioRefLevel));
978 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, ChannelCount));
979 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, QuantizationBits));
980 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, DialNorm));
986 ASDCP::MXF::GenericSoundEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
988 Result_t result = FileDescriptor::WriteToTLVSet(TLVSet);
989 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, AudioSamplingRate));
990 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, Locked));
991 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, AudioRefLevel));
992 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, ChannelCount));
993 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, QuantizationBits));
994 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, DialNorm));
1000 ASDCP::MXF::GenericSoundEssenceDescriptor::Dump(FILE* stream)
1002 char identbuf[IdentBufferLen];
1008 FileDescriptor::Dump(stream);
1009 fprintf(stream, " %22s = %s\n", "AudioSamplingRate", AudioSamplingRate.ToString(identbuf));
1010 fprintf(stream, " %22s = %d\n", "Locked", Locked);
1011 fprintf(stream, " %22s = %d\n", "AudioRefLevel", AudioRefLevel);
1012 fprintf(stream, " %22s = %d\n", "ChannelCount", ChannelCount);
1013 fprintf(stream, " %22s = %d\n", "QuantizationBits", QuantizationBits);
1014 fprintf(stream, " %22s = %d\n", "DialNorm", DialNorm);
1019 ASDCP::MXF::GenericSoundEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1021 m_Typeinfo = &Dict::Type(MDD_GenericSoundEssenceDescriptor);
1022 return InterchangeObject::InitFromBuffer(p, l);
1027 ASDCP::MXF::GenericSoundEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1029 m_Typeinfo = &Dict::Type(MDD_GenericSoundEssenceDescriptor);
1030 return InterchangeObject::WriteToBuffer(Buffer);
1033 //------------------------------------------------------------------------------------------
1034 // WaveAudioDescriptor
1038 ASDCP::MXF::WaveAudioDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1040 Result_t result = GenericSoundEssenceDescriptor::InitFromTLVSet(TLVSet);
1041 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(WaveAudioDescriptor, BlockAlign));
1042 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(WaveAudioDescriptor, SequenceOffset));
1043 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(WaveAudioDescriptor, AvgBps));
1049 ASDCP::MXF::WaveAudioDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1051 Result_t result = GenericSoundEssenceDescriptor::WriteToTLVSet(TLVSet);
1052 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(WaveAudioDescriptor, BlockAlign));
1053 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(WaveAudioDescriptor, SequenceOffset));
1054 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(WaveAudioDescriptor, AvgBps));
1060 ASDCP::MXF::WaveAudioDescriptor::Dump(FILE* stream)
1062 char identbuf[IdentBufferLen];
1068 GenericSoundEssenceDescriptor::Dump(stream);
1069 fprintf(stream, " %22s = %d\n", "BlockAlign", BlockAlign);
1070 fprintf(stream, " %22s = %d\n", "SequenceOffset", SequenceOffset);
1071 fprintf(stream, " %22s = %d\n", "AvgBps", AvgBps);
1076 ASDCP::MXF::WaveAudioDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1078 m_Typeinfo = &Dict::Type(MDD_WaveAudioDescriptor);
1079 return InterchangeObject::InitFromBuffer(p, l);
1084 ASDCP::MXF::WaveAudioDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1086 m_Typeinfo = &Dict::Type(MDD_WaveAudioDescriptor);
1087 return InterchangeObject::WriteToBuffer(Buffer);
1090 //------------------------------------------------------------------------------------------
1091 // GenericPictureEssenceDescriptor
1095 ASDCP::MXF::GenericPictureEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1097 Result_t result = FileDescriptor::InitFromTLVSet(TLVSet);
1098 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, FrameLayout));
1099 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, StoredWidth));
1100 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, StoredHeight));
1101 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, AspectRatio));
1107 ASDCP::MXF::GenericPictureEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1109 Result_t result = FileDescriptor::WriteToTLVSet(TLVSet);
1110 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, FrameLayout));
1111 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, StoredWidth));
1112 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, StoredHeight));
1113 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, AspectRatio));
1119 ASDCP::MXF::GenericPictureEssenceDescriptor::Dump(FILE* stream)
1121 char identbuf[IdentBufferLen];
1127 FileDescriptor::Dump(stream);
1128 fprintf(stream, " %22s = %d\n", "FrameLayout", FrameLayout);
1129 fprintf(stream, " %22s = %d\n", "StoredWidth", StoredWidth);
1130 fprintf(stream, " %22s = %d\n", "StoredHeight", StoredHeight);
1131 fprintf(stream, " %22s = %s\n", "AspectRatio", AspectRatio.ToString(identbuf));
1136 ASDCP::MXF::GenericPictureEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1138 m_Typeinfo = &Dict::Type(MDD_GenericPictureEssenceDescriptor);
1139 return InterchangeObject::InitFromBuffer(p, l);
1144 ASDCP::MXF::GenericPictureEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1146 m_Typeinfo = &Dict::Type(MDD_GenericPictureEssenceDescriptor);
1147 return InterchangeObject::WriteToBuffer(Buffer);
1150 //------------------------------------------------------------------------------------------
1151 // RGBAEssenceDescriptor
1155 ASDCP::MXF::RGBAEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1157 Result_t result = GenericPictureEssenceDescriptor::InitFromTLVSet(TLVSet);
1158 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(RGBAEssenceDescriptor, ComponentMaxRef));
1159 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(RGBAEssenceDescriptor, ComponentMinRef));
1160 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(RGBAEssenceDescriptor, PixelLayout));
1166 ASDCP::MXF::RGBAEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1168 Result_t result = GenericPictureEssenceDescriptor::WriteToTLVSet(TLVSet);
1169 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(RGBAEssenceDescriptor, ComponentMaxRef));
1170 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(RGBAEssenceDescriptor, ComponentMinRef));
1171 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(RGBAEssenceDescriptor, PixelLayout));
1177 ASDCP::MXF::RGBAEssenceDescriptor::Dump(FILE* stream)
1179 char identbuf[IdentBufferLen];
1185 GenericPictureEssenceDescriptor::Dump(stream);
1186 fprintf(stream, " %22s = %d\n", "ComponentMaxRef", ComponentMaxRef);
1187 fprintf(stream, " %22s = %d\n", "ComponentMinRef", ComponentMinRef);
1188 fprintf(stream, " %22s = %s\n", "PixelLayout", PixelLayout.ToString(identbuf));
1193 ASDCP::MXF::RGBAEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1195 m_Typeinfo = &Dict::Type(MDD_RGBAEssenceDescriptor);
1196 return InterchangeObject::InitFromBuffer(p, l);
1201 ASDCP::MXF::RGBAEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1203 m_Typeinfo = &Dict::Type(MDD_RGBAEssenceDescriptor);
1204 return InterchangeObject::WriteToBuffer(Buffer);
1207 //------------------------------------------------------------------------------------------
1208 // JPEG2000PictureSubDescriptor
1212 ASDCP::MXF::JPEG2000PictureSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1214 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
1215 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Rsize));
1216 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Xsize));
1217 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Ysize));
1218 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XOsize));
1219 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YOsize));
1220 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XTsize));
1221 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YTsize));
1222 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XTOsize));
1223 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YTOsize));
1224 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Csize));
1225 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, PictureComponentSizing));
1226 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, CodingStyleDefault));
1227 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, QuantizationDefault));
1233 ASDCP::MXF::JPEG2000PictureSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1235 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
1236 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Rsize));
1237 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Xsize));
1238 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Ysize));
1239 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XOsize));
1240 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YOsize));
1241 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XTsize));
1242 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YTsize));
1243 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XTOsize));
1244 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YTOsize));
1245 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Csize));
1246 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, PictureComponentSizing));
1247 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, CodingStyleDefault));
1248 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, QuantizationDefault));
1254 ASDCP::MXF::JPEG2000PictureSubDescriptor::Dump(FILE* stream)
1256 char identbuf[IdentBufferLen];
1262 InterchangeObject::Dump(stream);
1263 fprintf(stream, " %22s = %d\n", "Rsize", Rsize);
1264 fprintf(stream, " %22s = %d\n", "Xsize", Xsize);
1265 fprintf(stream, " %22s = %d\n", "Ysize", Ysize);
1266 fprintf(stream, " %22s = %d\n", "XOsize", XOsize);
1267 fprintf(stream, " %22s = %d\n", "YOsize", YOsize);
1268 fprintf(stream, " %22s = %d\n", "XTsize", XTsize);
1269 fprintf(stream, " %22s = %d\n", "YTsize", YTsize);
1270 fprintf(stream, " %22s = %d\n", "XTOsize", XTOsize);
1271 fprintf(stream, " %22s = %d\n", "YTOsize", YTOsize);
1272 fprintf(stream, " %22s = %d\n", "Csize", Csize);
1273 fprintf(stream, " %22s = %s\n", "PictureComponentSizing", PictureComponentSizing.ToString(identbuf));
1274 fprintf(stream, " %22s = %s\n", "CodingStyleDefault", CodingStyleDefault.ToString(identbuf));
1275 fprintf(stream, " %22s = %s\n", "QuantizationDefault", QuantizationDefault.ToString(identbuf));
1280 ASDCP::MXF::JPEG2000PictureSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1282 m_Typeinfo = &Dict::Type(MDD_JPEG2000PictureSubDescriptor);
1283 return InterchangeObject::InitFromBuffer(p, l);
1288 ASDCP::MXF::JPEG2000PictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1290 m_Typeinfo = &Dict::Type(MDD_JPEG2000PictureSubDescriptor);
1291 return InterchangeObject::WriteToBuffer(Buffer);
1294 //------------------------------------------------------------------------------------------
1295 // CDCIEssenceDescriptor
1299 ASDCP::MXF::CDCIEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1301 Result_t result = GenericPictureEssenceDescriptor::InitFromTLVSet(TLVSet);
1302 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, ComponentDepth));
1303 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, HorizontalSubsampling));
1304 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, VerticalSubsampling));
1305 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(CDCIEssenceDescriptor, ColorSiting));
1311 ASDCP::MXF::CDCIEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1313 Result_t result = GenericPictureEssenceDescriptor::WriteToTLVSet(TLVSet);
1314 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, ComponentDepth));
1315 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, HorizontalSubsampling));
1316 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, VerticalSubsampling));
1317 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, ColorSiting));
1323 ASDCP::MXF::CDCIEssenceDescriptor::Dump(FILE* stream)
1325 char identbuf[IdentBufferLen];
1331 GenericPictureEssenceDescriptor::Dump(stream);
1332 fprintf(stream, " %22s = %d\n", "ComponentDepth", ComponentDepth);
1333 fprintf(stream, " %22s = %d\n", "HorizontalSubsampling", HorizontalSubsampling);
1334 fprintf(stream, " %22s = %d\n", "VerticalSubsampling", VerticalSubsampling);
1335 fprintf(stream, " %22s = %d\n", "ColorSiting", ColorSiting);
1340 ASDCP::MXF::CDCIEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1342 m_Typeinfo = &Dict::Type(MDD_CDCIEssenceDescriptor);
1343 return InterchangeObject::InitFromBuffer(p, l);
1348 ASDCP::MXF::CDCIEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1350 m_Typeinfo = &Dict::Type(MDD_CDCIEssenceDescriptor);
1351 return InterchangeObject::WriteToBuffer(Buffer);
1354 //------------------------------------------------------------------------------------------
1355 // MPEG2VideoDescriptor
1359 ASDCP::MXF::MPEG2VideoDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1361 Result_t result = CDCIEssenceDescriptor::InitFromTLVSet(TLVSet);
1362 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(MPEG2VideoDescriptor, CodedContentType));
1363 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(MPEG2VideoDescriptor, LowDelay));
1364 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(MPEG2VideoDescriptor, BitRate));
1365 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(MPEG2VideoDescriptor, ProfileAndLevel));
1371 ASDCP::MXF::MPEG2VideoDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1373 Result_t result = CDCIEssenceDescriptor::WriteToTLVSet(TLVSet);
1374 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(MPEG2VideoDescriptor, CodedContentType));
1375 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(MPEG2VideoDescriptor, LowDelay));
1376 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(MPEG2VideoDescriptor, BitRate));
1377 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(MPEG2VideoDescriptor, ProfileAndLevel));
1383 ASDCP::MXF::MPEG2VideoDescriptor::Dump(FILE* stream)
1385 char identbuf[IdentBufferLen];
1391 CDCIEssenceDescriptor::Dump(stream);
1392 fprintf(stream, " %22s = %d\n", "CodedContentType", CodedContentType);
1393 fprintf(stream, " %22s = %d\n", "LowDelay", LowDelay);
1394 fprintf(stream, " %22s = %d\n", "BitRate", BitRate);
1395 fprintf(stream, " %22s = %d\n", "ProfileAndLevel", ProfileAndLevel);
1400 ASDCP::MXF::MPEG2VideoDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1402 m_Typeinfo = &Dict::Type(MDD_MPEG2VideoDescriptor);
1403 return InterchangeObject::InitFromBuffer(p, l);
1408 ASDCP::MXF::MPEG2VideoDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1410 m_Typeinfo = &Dict::Type(MDD_MPEG2VideoDescriptor);
1411 return InterchangeObject::WriteToBuffer(Buffer);
1414 //------------------------------------------------------------------------------------------
1419 ASDCP::MXF::DMSegment::InitFromTLVSet(TLVReader& TLVSet)
1421 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
1422 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(DMSegment, EventStartPosition));
1423 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DMSegment, EventComment));
1424 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DMSegment, DMFramework));
1430 ASDCP::MXF::DMSegment::WriteToTLVSet(TLVWriter& TLVSet)
1432 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
1433 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(DMSegment, EventStartPosition));
1434 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DMSegment, EventComment));
1435 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DMSegment, DMFramework));
1441 ASDCP::MXF::DMSegment::Dump(FILE* stream)
1443 char identbuf[IdentBufferLen];
1449 InterchangeObject::Dump(stream);
1450 fprintf(stream, " %22s = %s\n", "EventStartPosition", i64sz(EventStartPosition, identbuf));
1451 fprintf(stream, " %22s = %s\n", "EventComment", EventComment.ToString(identbuf));
1452 fprintf(stream, " %22s = %s\n", "DMFramework", DMFramework.ToString(identbuf));
1457 ASDCP::MXF::DMSegment::InitFromBuffer(const byte_t* p, ui32_t l)
1459 m_Typeinfo = &Dict::Type(MDD_DMSegment);
1460 return InterchangeObject::InitFromBuffer(p, l);
1465 ASDCP::MXF::DMSegment::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1467 m_Typeinfo = &Dict::Type(MDD_DMSegment);
1468 return InterchangeObject::WriteToBuffer(Buffer);
1471 //------------------------------------------------------------------------------------------
1472 // CryptographicFramework
1476 ASDCP::MXF::CryptographicFramework::InitFromTLVSet(TLVReader& TLVSet)
1478 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
1479 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicFramework, ContextSR));
1485 ASDCP::MXF::CryptographicFramework::WriteToTLVSet(TLVWriter& TLVSet)
1487 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
1488 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicFramework, ContextSR));
1494 ASDCP::MXF::CryptographicFramework::Dump(FILE* stream)
1496 char identbuf[IdentBufferLen];
1502 InterchangeObject::Dump(stream);
1503 fprintf(stream, " %22s = %s\n", "ContextSR", ContextSR.ToString(identbuf));
1508 ASDCP::MXF::CryptographicFramework::InitFromBuffer(const byte_t* p, ui32_t l)
1510 m_Typeinfo = &Dict::Type(MDD_CryptographicFramework);
1511 return InterchangeObject::InitFromBuffer(p, l);
1516 ASDCP::MXF::CryptographicFramework::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1518 m_Typeinfo = &Dict::Type(MDD_CryptographicFramework);
1519 return InterchangeObject::WriteToBuffer(Buffer);
1522 //------------------------------------------------------------------------------------------
1523 // CryptographicContext
1527 ASDCP::MXF::CryptographicContext::InitFromTLVSet(TLVReader& TLVSet)
1529 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
1530 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, ContextID));
1531 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, SourceEssenceContainer));
1532 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, CipherAlgorithm));
1533 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, MICAlgorithm));
1534 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, CryptographicKeyID));
1540 ASDCP::MXF::CryptographicContext::WriteToTLVSet(TLVWriter& TLVSet)
1542 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
1543 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, ContextID));
1544 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, SourceEssenceContainer));
1545 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, CipherAlgorithm));
1546 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, MICAlgorithm));
1547 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, CryptographicKeyID));
1553 ASDCP::MXF::CryptographicContext::Dump(FILE* stream)
1555 char identbuf[IdentBufferLen];
1561 InterchangeObject::Dump(stream);
1562 fprintf(stream, " %22s = %s\n", "ContextID", ContextID.ToString(identbuf));
1563 fprintf(stream, " %22s = %s\n", "SourceEssenceContainer", SourceEssenceContainer.ToString(identbuf));
1564 fprintf(stream, " %22s = %s\n", "CipherAlgorithm", CipherAlgorithm.ToString(identbuf));
1565 fprintf(stream, " %22s = %s\n", "MICAlgorithm", MICAlgorithm.ToString(identbuf));
1566 fprintf(stream, " %22s = %s\n", "CryptographicKeyID", CryptographicKeyID.ToString(identbuf));
1571 ASDCP::MXF::CryptographicContext::InitFromBuffer(const byte_t* p, ui32_t l)
1573 m_Typeinfo = &Dict::Type(MDD_CryptographicContext);
1574 return InterchangeObject::InitFromBuffer(p, l);
1579 ASDCP::MXF::CryptographicContext::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1581 m_Typeinfo = &Dict::Type(MDD_CryptographicContext);
1582 return InterchangeObject::WriteToBuffer(Buffer);