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));
1165 ASDCP::MXF::RGBAEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1167 Result_t result = GenericPictureEssenceDescriptor::WriteToTLVSet(TLVSet);
1168 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(RGBAEssenceDescriptor, ComponentMaxRef));
1169 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(RGBAEssenceDescriptor, ComponentMinRef));
1175 ASDCP::MXF::RGBAEssenceDescriptor::Dump(FILE* stream)
1177 char identbuf[IdentBufferLen];
1183 GenericPictureEssenceDescriptor::Dump(stream);
1184 fprintf(stream, " %22s = %d\n", "ComponentMaxRef", ComponentMaxRef);
1185 fprintf(stream, " %22s = %d\n", "ComponentMinRef", ComponentMinRef);
1190 ASDCP::MXF::RGBAEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1192 m_Typeinfo = &Dict::Type(MDD_RGBAEssenceDescriptor);
1193 return InterchangeObject::InitFromBuffer(p, l);
1198 ASDCP::MXF::RGBAEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1200 m_Typeinfo = &Dict::Type(MDD_RGBAEssenceDescriptor);
1201 return InterchangeObject::WriteToBuffer(Buffer);
1204 //------------------------------------------------------------------------------------------
1205 // JPEG2000PictureSubDescriptor
1209 ASDCP::MXF::JPEG2000PictureSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1211 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
1212 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Rsize));
1213 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Xsize));
1214 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Ysize));
1215 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XOsize));
1216 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YOsize));
1217 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XTsize));
1218 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YTsize));
1219 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XTOsize));
1220 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YTOsize));
1221 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Csize));
1222 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, PictureComponentSizing));
1223 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, CodingStyleDefault));
1224 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, QuantizationDefault));
1230 ASDCP::MXF::JPEG2000PictureSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1232 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
1233 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Rsize));
1234 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Xsize));
1235 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Ysize));
1236 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XOsize));
1237 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YOsize));
1238 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XTsize));
1239 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YTsize));
1240 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XTOsize));
1241 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YTOsize));
1242 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Csize));
1243 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, PictureComponentSizing));
1244 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, CodingStyleDefault));
1245 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, QuantizationDefault));
1251 ASDCP::MXF::JPEG2000PictureSubDescriptor::Dump(FILE* stream)
1253 char identbuf[IdentBufferLen];
1259 InterchangeObject::Dump(stream);
1260 fprintf(stream, " %22s = %d\n", "Rsize", Rsize);
1261 fprintf(stream, " %22s = %d\n", "Xsize", Xsize);
1262 fprintf(stream, " %22s = %d\n", "Ysize", Ysize);
1263 fprintf(stream, " %22s = %d\n", "XOsize", XOsize);
1264 fprintf(stream, " %22s = %d\n", "YOsize", YOsize);
1265 fprintf(stream, " %22s = %d\n", "XTsize", XTsize);
1266 fprintf(stream, " %22s = %d\n", "YTsize", YTsize);
1267 fprintf(stream, " %22s = %d\n", "XTOsize", XTOsize);
1268 fprintf(stream, " %22s = %d\n", "YTOsize", YTOsize);
1269 fprintf(stream, " %22s = %d\n", "Csize", Csize);
1270 fprintf(stream, " %22s = %s\n", "PictureComponentSizing", PictureComponentSizing.ToString(identbuf));
1271 fprintf(stream, " %22s = %s\n", "CodingStyleDefault", CodingStyleDefault.ToString(identbuf));
1272 fprintf(stream, " %22s = %s\n", "QuantizationDefault", QuantizationDefault.ToString(identbuf));
1277 ASDCP::MXF::JPEG2000PictureSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1279 m_Typeinfo = &Dict::Type(MDD_JPEG2000PictureSubDescriptor);
1280 return InterchangeObject::InitFromBuffer(p, l);
1285 ASDCP::MXF::JPEG2000PictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1287 m_Typeinfo = &Dict::Type(MDD_JPEG2000PictureSubDescriptor);
1288 return InterchangeObject::WriteToBuffer(Buffer);
1291 //------------------------------------------------------------------------------------------
1292 // CDCIEssenceDescriptor
1296 ASDCP::MXF::CDCIEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1298 Result_t result = GenericPictureEssenceDescriptor::InitFromTLVSet(TLVSet);
1299 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, ComponentDepth));
1300 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, HorizontalSubsampling));
1301 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, VerticalSubsampling));
1302 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(CDCIEssenceDescriptor, ColorSiting));
1308 ASDCP::MXF::CDCIEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1310 Result_t result = GenericPictureEssenceDescriptor::WriteToTLVSet(TLVSet);
1311 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, ComponentDepth));
1312 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, HorizontalSubsampling));
1313 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, VerticalSubsampling));
1314 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, ColorSiting));
1320 ASDCP::MXF::CDCIEssenceDescriptor::Dump(FILE* stream)
1322 char identbuf[IdentBufferLen];
1328 GenericPictureEssenceDescriptor::Dump(stream);
1329 fprintf(stream, " %22s = %d\n", "ComponentDepth", ComponentDepth);
1330 fprintf(stream, " %22s = %d\n", "HorizontalSubsampling", HorizontalSubsampling);
1331 fprintf(stream, " %22s = %d\n", "VerticalSubsampling", VerticalSubsampling);
1332 fprintf(stream, " %22s = %d\n", "ColorSiting", ColorSiting);
1337 ASDCP::MXF::CDCIEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1339 m_Typeinfo = &Dict::Type(MDD_CDCIEssenceDescriptor);
1340 return InterchangeObject::InitFromBuffer(p, l);
1345 ASDCP::MXF::CDCIEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1347 m_Typeinfo = &Dict::Type(MDD_CDCIEssenceDescriptor);
1348 return InterchangeObject::WriteToBuffer(Buffer);
1351 //------------------------------------------------------------------------------------------
1352 // MPEG2VideoDescriptor
1356 ASDCP::MXF::MPEG2VideoDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1358 Result_t result = CDCIEssenceDescriptor::InitFromTLVSet(TLVSet);
1359 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(MPEG2VideoDescriptor, CodedContentType));
1360 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(MPEG2VideoDescriptor, LowDelay));
1361 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(MPEG2VideoDescriptor, BitRate));
1362 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(MPEG2VideoDescriptor, ProfileAndLevel));
1368 ASDCP::MXF::MPEG2VideoDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1370 Result_t result = CDCIEssenceDescriptor::WriteToTLVSet(TLVSet);
1371 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(MPEG2VideoDescriptor, CodedContentType));
1372 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(MPEG2VideoDescriptor, LowDelay));
1373 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(MPEG2VideoDescriptor, BitRate));
1374 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(MPEG2VideoDescriptor, ProfileAndLevel));
1380 ASDCP::MXF::MPEG2VideoDescriptor::Dump(FILE* stream)
1382 char identbuf[IdentBufferLen];
1388 CDCIEssenceDescriptor::Dump(stream);
1389 fprintf(stream, " %22s = %d\n", "CodedContentType", CodedContentType);
1390 fprintf(stream, " %22s = %d\n", "LowDelay", LowDelay);
1391 fprintf(stream, " %22s = %d\n", "BitRate", BitRate);
1392 fprintf(stream, " %22s = %d\n", "ProfileAndLevel", ProfileAndLevel);
1397 ASDCP::MXF::MPEG2VideoDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1399 m_Typeinfo = &Dict::Type(MDD_MPEG2VideoDescriptor);
1400 return InterchangeObject::InitFromBuffer(p, l);
1405 ASDCP::MXF::MPEG2VideoDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1407 m_Typeinfo = &Dict::Type(MDD_MPEG2VideoDescriptor);
1408 return InterchangeObject::WriteToBuffer(Buffer);
1411 //------------------------------------------------------------------------------------------
1416 ASDCP::MXF::DMSegment::InitFromTLVSet(TLVReader& TLVSet)
1418 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
1419 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(DMSegment, EventStartPosition));
1420 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DMSegment, EventComment));
1421 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DMSegment, DMFramework));
1427 ASDCP::MXF::DMSegment::WriteToTLVSet(TLVWriter& TLVSet)
1429 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
1430 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(DMSegment, EventStartPosition));
1431 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DMSegment, EventComment));
1432 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DMSegment, DMFramework));
1438 ASDCP::MXF::DMSegment::Dump(FILE* stream)
1440 char identbuf[IdentBufferLen];
1446 InterchangeObject::Dump(stream);
1447 fprintf(stream, " %22s = %s\n", "EventStartPosition", i64sz(EventStartPosition, identbuf));
1448 fprintf(stream, " %22s = %s\n", "EventComment", EventComment.ToString(identbuf));
1449 fprintf(stream, " %22s = %s\n", "DMFramework", DMFramework.ToString(identbuf));
1454 ASDCP::MXF::DMSegment::InitFromBuffer(const byte_t* p, ui32_t l)
1456 m_Typeinfo = &Dict::Type(MDD_DMSegment);
1457 return InterchangeObject::InitFromBuffer(p, l);
1462 ASDCP::MXF::DMSegment::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1464 m_Typeinfo = &Dict::Type(MDD_DMSegment);
1465 return InterchangeObject::WriteToBuffer(Buffer);
1468 //------------------------------------------------------------------------------------------
1469 // CryptographicFramework
1473 ASDCP::MXF::CryptographicFramework::InitFromTLVSet(TLVReader& TLVSet)
1475 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
1476 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicFramework, ContextSR));
1482 ASDCP::MXF::CryptographicFramework::WriteToTLVSet(TLVWriter& TLVSet)
1484 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
1485 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicFramework, ContextSR));
1491 ASDCP::MXF::CryptographicFramework::Dump(FILE* stream)
1493 char identbuf[IdentBufferLen];
1499 InterchangeObject::Dump(stream);
1500 fprintf(stream, " %22s = %s\n", "ContextSR", ContextSR.ToString(identbuf));
1505 ASDCP::MXF::CryptographicFramework::InitFromBuffer(const byte_t* p, ui32_t l)
1507 m_Typeinfo = &Dict::Type(MDD_CryptographicFramework);
1508 return InterchangeObject::InitFromBuffer(p, l);
1513 ASDCP::MXF::CryptographicFramework::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1515 m_Typeinfo = &Dict::Type(MDD_CryptographicFramework);
1516 return InterchangeObject::WriteToBuffer(Buffer);
1519 //------------------------------------------------------------------------------------------
1520 // CryptographicContext
1524 ASDCP::MXF::CryptographicContext::InitFromTLVSet(TLVReader& TLVSet)
1526 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
1527 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, ContextID));
1528 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, SourceEssenceContainer));
1529 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, CipherAlgorithm));
1530 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, MICAlgorithm));
1531 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, CryptographicKeyID));
1537 ASDCP::MXF::CryptographicContext::WriteToTLVSet(TLVWriter& TLVSet)
1539 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
1540 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, ContextID));
1541 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, SourceEssenceContainer));
1542 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, CipherAlgorithm));
1543 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, MICAlgorithm));
1544 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, CryptographicKeyID));
1550 ASDCP::MXF::CryptographicContext::Dump(FILE* stream)
1552 char identbuf[IdentBufferLen];
1558 InterchangeObject::Dump(stream);
1559 fprintf(stream, " %22s = %s\n", "ContextID", ContextID.ToString(identbuf));
1560 fprintf(stream, " %22s = %s\n", "SourceEssenceContainer", SourceEssenceContainer.ToString(identbuf));
1561 fprintf(stream, " %22s = %s\n", "CipherAlgorithm", CipherAlgorithm.ToString(identbuf));
1562 fprintf(stream, " %22s = %s\n", "MICAlgorithm", MICAlgorithm.ToString(identbuf));
1563 fprintf(stream, " %22s = %s\n", "CryptographicKeyID", CryptographicKeyID.ToString(identbuf));
1568 ASDCP::MXF::CryptographicContext::InitFromBuffer(const byte_t* p, ui32_t l)
1570 m_Typeinfo = &Dict::Type(MDD_CryptographicContext);
1571 return InterchangeObject::InitFromBuffer(p, l);
1576 ASDCP::MXF::CryptographicContext::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1578 m_Typeinfo = &Dict::Type(MDD_CryptographicContext);
1579 return InterchangeObject::WriteToBuffer(Buffer);