2 Copyright (c) 2005-2017, John Hurst
5 Redistribution and use in source and binary forms, with or without
6 modification, are permitted provided that the following conditions
8 1. Redistributions of source code must retain the above copyright
9 notice, this list of conditions and the following disclaimer.
10 2. Redistributions in binary form must reproduce the above copyright
11 notice, this list of conditions and the following disclaimer in the
12 documentation and/or other materials provided with the distribution.
13 3. The name of the author may not be used to endorse or promote products
14 derived from this software without specific prior written permission.
16 THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18 OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19 IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25 THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 /*! \file Metadata.cpp
29 \brief AS-DCP library, MXF Metadata Sets implementation
36 using namespace ASDCP;
37 using namespace ASDCP::MXF;
39 const ui32_t kl_length = ASDCP::SMPTE_UL_LENGTH + ASDCP::MXF_BER_LENGTH;
41 //------------------------------------------------------------------------------------------
43 static InterchangeObject* Preface_Factory(const Dictionary*& Dict) { return new Preface(Dict); }
44 static InterchangeObject* IndexTableSegment_Factory(const Dictionary*& Dict) { return new IndexTableSegment(Dict); }
46 static InterchangeObject* Identification_Factory(const Dictionary*& Dict) { return new Identification(Dict); }
47 static InterchangeObject* ContentStorage_Factory(const Dictionary*& Dict) { return new ContentStorage(Dict); }
48 static InterchangeObject* EssenceContainerData_Factory(const Dictionary*& Dict) { return new EssenceContainerData(Dict); }
49 static InterchangeObject* MaterialPackage_Factory(const Dictionary*& Dict) { return new MaterialPackage(Dict); }
50 static InterchangeObject* SourcePackage_Factory(const Dictionary*& Dict) { return new SourcePackage(Dict); }
51 static InterchangeObject* StaticTrack_Factory(const Dictionary*& Dict) { return new StaticTrack(Dict); }
52 static InterchangeObject* Track_Factory(const Dictionary*& Dict) { return new Track(Dict); }
53 static InterchangeObject* Sequence_Factory(const Dictionary*& Dict) { return new Sequence(Dict); }
54 static InterchangeObject* SourceClip_Factory(const Dictionary*& Dict) { return new SourceClip(Dict); }
55 static InterchangeObject* TimecodeComponent_Factory(const Dictionary*& Dict) { return new TimecodeComponent(Dict); }
56 static InterchangeObject* FileDescriptor_Factory(const Dictionary*& Dict) { return new FileDescriptor(Dict); }
57 static InterchangeObject* GenericSoundEssenceDescriptor_Factory(const Dictionary*& Dict) { return new GenericSoundEssenceDescriptor(Dict); }
58 static InterchangeObject* WaveAudioDescriptor_Factory(const Dictionary*& Dict) { return new WaveAudioDescriptor(Dict); }
59 static InterchangeObject* GenericPictureEssenceDescriptor_Factory(const Dictionary*& Dict) { return new GenericPictureEssenceDescriptor(Dict); }
60 static InterchangeObject* RGBAEssenceDescriptor_Factory(const Dictionary*& Dict) { return new RGBAEssenceDescriptor(Dict); }
61 static InterchangeObject* JPEG2000PictureSubDescriptor_Factory(const Dictionary*& Dict) { return new JPEG2000PictureSubDescriptor(Dict); }
62 static InterchangeObject* CDCIEssenceDescriptor_Factory(const Dictionary*& Dict) { return new CDCIEssenceDescriptor(Dict); }
63 static InterchangeObject* MPEG2VideoDescriptor_Factory(const Dictionary*& Dict) { return new MPEG2VideoDescriptor(Dict); }
64 static InterchangeObject* DMSegment_Factory(const Dictionary*& Dict) { return new DMSegment(Dict); }
65 static InterchangeObject* CryptographicFramework_Factory(const Dictionary*& Dict) { return new CryptographicFramework(Dict); }
66 static InterchangeObject* CryptographicContext_Factory(const Dictionary*& Dict) { return new CryptographicContext(Dict); }
67 static InterchangeObject* GenericDataEssenceDescriptor_Factory(const Dictionary*& Dict) { return new GenericDataEssenceDescriptor(Dict); }
68 static InterchangeObject* TimedTextDescriptor_Factory(const Dictionary*& Dict) { return new TimedTextDescriptor(Dict); }
69 static InterchangeObject* TimedTextResourceSubDescriptor_Factory(const Dictionary*& Dict) { return new TimedTextResourceSubDescriptor(Dict); }
70 static InterchangeObject* StereoscopicPictureSubDescriptor_Factory(const Dictionary*& Dict) { return new StereoscopicPictureSubDescriptor(Dict); }
71 static InterchangeObject* ContainerConstraintSubDescriptor_Factory(const Dictionary*& Dict) { return new ContainerConstraintSubDescriptor(Dict); }
72 static InterchangeObject* NetworkLocator_Factory(const Dictionary*& Dict) { return new NetworkLocator(Dict); }
73 static InterchangeObject* MCALabelSubDescriptor_Factory(const Dictionary*& Dict) { return new MCALabelSubDescriptor(Dict); }
74 static InterchangeObject* AudioChannelLabelSubDescriptor_Factory(const Dictionary*& Dict) { return new AudioChannelLabelSubDescriptor(Dict); }
75 static InterchangeObject* SoundfieldGroupLabelSubDescriptor_Factory(const Dictionary*& Dict) { return new SoundfieldGroupLabelSubDescriptor(Dict); }
76 static InterchangeObject* GroupOfSoundfieldGroupsLabelSubDescriptor_Factory(const Dictionary*& Dict) { return new GroupOfSoundfieldGroupsLabelSubDescriptor(Dict); }
77 static InterchangeObject* DCDataDescriptor_Factory(const Dictionary*& Dict) { return new DCDataDescriptor(Dict); }
78 static InterchangeObject* PrivateDCDataDescriptor_Factory(const Dictionary*& Dict) { return new PrivateDCDataDescriptor(Dict); }
79 static InterchangeObject* DolbyAtmosSubDescriptor_Factory(const Dictionary*& Dict) { return new DolbyAtmosSubDescriptor(Dict); }
80 static InterchangeObject* ACESPictureSubDescriptor_Factory(const Dictionary*& Dict) { return new ACESPictureSubDescriptor(Dict); }
81 static InterchangeObject* TargetFrameSubDescriptor_Factory(const Dictionary*& Dict) { return new TargetFrameSubDescriptor(Dict); }
82 static InterchangeObject* PHDRMetadataTrackSubDescriptor_Factory(const Dictionary*& Dict) { return new PHDRMetadataTrackSubDescriptor(Dict); }
83 static InterchangeObject* PIMFDynamicMetadataDescriptor_Factory(const Dictionary*& Dict) { return new PIMFDynamicMetadataDescriptor(Dict); }
87 ASDCP::MXF::Metadata_InitTypes(const Dictionary*& Dict)
90 SetObjectFactory(Dict->ul(MDD_Preface), Preface_Factory);
91 SetObjectFactory(Dict->ul(MDD_IndexTableSegment), IndexTableSegment_Factory);
93 SetObjectFactory(Dict->ul(MDD_Identification), Identification_Factory);
94 SetObjectFactory(Dict->ul(MDD_ContentStorage), ContentStorage_Factory);
95 SetObjectFactory(Dict->ul(MDD_EssenceContainerData), EssenceContainerData_Factory);
96 SetObjectFactory(Dict->ul(MDD_MaterialPackage), MaterialPackage_Factory);
97 SetObjectFactory(Dict->ul(MDD_SourcePackage), SourcePackage_Factory);
98 SetObjectFactory(Dict->ul(MDD_StaticTrack), StaticTrack_Factory);
99 SetObjectFactory(Dict->ul(MDD_Track), Track_Factory);
100 SetObjectFactory(Dict->ul(MDD_Sequence), Sequence_Factory);
101 SetObjectFactory(Dict->ul(MDD_SourceClip), SourceClip_Factory);
102 SetObjectFactory(Dict->ul(MDD_TimecodeComponent), TimecodeComponent_Factory);
103 SetObjectFactory(Dict->ul(MDD_FileDescriptor), FileDescriptor_Factory);
104 SetObjectFactory(Dict->ul(MDD_GenericSoundEssenceDescriptor), GenericSoundEssenceDescriptor_Factory);
105 SetObjectFactory(Dict->ul(MDD_WaveAudioDescriptor), WaveAudioDescriptor_Factory);
106 SetObjectFactory(Dict->ul(MDD_GenericPictureEssenceDescriptor), GenericPictureEssenceDescriptor_Factory);
107 SetObjectFactory(Dict->ul(MDD_RGBAEssenceDescriptor), RGBAEssenceDescriptor_Factory);
108 SetObjectFactory(Dict->ul(MDD_JPEG2000PictureSubDescriptor), JPEG2000PictureSubDescriptor_Factory);
109 SetObjectFactory(Dict->ul(MDD_CDCIEssenceDescriptor), CDCIEssenceDescriptor_Factory);
110 SetObjectFactory(Dict->ul(MDD_MPEG2VideoDescriptor), MPEG2VideoDescriptor_Factory);
111 SetObjectFactory(Dict->ul(MDD_DMSegment), DMSegment_Factory);
112 SetObjectFactory(Dict->ul(MDD_CryptographicFramework), CryptographicFramework_Factory);
113 SetObjectFactory(Dict->ul(MDD_CryptographicContext), CryptographicContext_Factory);
114 SetObjectFactory(Dict->ul(MDD_GenericDataEssenceDescriptor), GenericDataEssenceDescriptor_Factory);
115 SetObjectFactory(Dict->ul(MDD_TimedTextDescriptor), TimedTextDescriptor_Factory);
116 SetObjectFactory(Dict->ul(MDD_TimedTextResourceSubDescriptor), TimedTextResourceSubDescriptor_Factory);
117 SetObjectFactory(Dict->ul(MDD_StereoscopicPictureSubDescriptor), StereoscopicPictureSubDescriptor_Factory);
118 SetObjectFactory(Dict->ul(MDD_ContainerConstraintSubDescriptor), ContainerConstraintSubDescriptor_Factory);
119 SetObjectFactory(Dict->ul(MDD_NetworkLocator), NetworkLocator_Factory);
120 SetObjectFactory(Dict->ul(MDD_MCALabelSubDescriptor), MCALabelSubDescriptor_Factory);
121 SetObjectFactory(Dict->ul(MDD_AudioChannelLabelSubDescriptor), AudioChannelLabelSubDescriptor_Factory);
122 SetObjectFactory(Dict->ul(MDD_SoundfieldGroupLabelSubDescriptor), SoundfieldGroupLabelSubDescriptor_Factory);
123 SetObjectFactory(Dict->ul(MDD_GroupOfSoundfieldGroupsLabelSubDescriptor), GroupOfSoundfieldGroupsLabelSubDescriptor_Factory);
124 SetObjectFactory(Dict->ul(MDD_DCDataDescriptor), DCDataDescriptor_Factory);
125 SetObjectFactory(Dict->ul(MDD_PrivateDCDataDescriptor), PrivateDCDataDescriptor_Factory);
126 SetObjectFactory(Dict->ul(MDD_DolbyAtmosSubDescriptor), DolbyAtmosSubDescriptor_Factory);
127 SetObjectFactory(Dict->ul(MDD_ACESPictureSubDescriptor), ACESPictureSubDescriptor_Factory);
128 SetObjectFactory(Dict->ul(MDD_TargetFrameSubDescriptor), TargetFrameSubDescriptor_Factory);
129 SetObjectFactory(Dict->ul(MDD_PHDRMetadataTrackSubDescriptor), PHDRMetadataTrackSubDescriptor_Factory);
130 SetObjectFactory(Dict->ul(MDD_PIMFDynamicMetadataDescriptor), PIMFDynamicMetadataDescriptor_Factory);
133 //------------------------------------------------------------------------------------------
138 //------------------------------------------------------------------------------------------
143 Identification::Identification(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
146 m_UL = m_Dict->ul(MDD_Identification);
149 Identification::Identification(const Identification& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
152 m_UL = m_Dict->ul(MDD_Identification);
159 Identification::InitFromTLVSet(TLVReader& TLVSet)
162 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
163 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ThisGenerationUID));
164 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, CompanyName));
165 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ProductName));
166 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ProductVersion));
167 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, VersionString));
168 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ProductUID));
169 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ModificationDate));
170 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ToolkitVersion));
171 if ( ASDCP_SUCCESS(result) ) {
172 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(Identification, Platform));
173 Platform.set_has_value( result == RESULT_OK );
180 Identification::WriteToTLVSet(TLVWriter& TLVSet)
183 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
184 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ThisGenerationUID));
185 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, CompanyName));
186 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ProductName));
187 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ProductVersion));
188 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, VersionString));
189 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ProductUID));
190 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ModificationDate));
191 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ToolkitVersion));
192 if ( ASDCP_SUCCESS(result) && ! Platform.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(Identification, Platform));
198 Identification::Copy(const Identification& rhs)
200 InterchangeObject::Copy(rhs);
201 ThisGenerationUID = rhs.ThisGenerationUID;
202 CompanyName = rhs.CompanyName;
203 ProductName = rhs.ProductName;
204 ProductVersion = rhs.ProductVersion;
205 VersionString = rhs.VersionString;
206 ProductUID = rhs.ProductUID;
207 ModificationDate = rhs.ModificationDate;
208 ToolkitVersion = rhs.ToolkitVersion;
209 Platform = rhs.Platform;
214 Identification::Dump(FILE* stream)
216 char identbuf[IdentBufferLen];
222 InterchangeObject::Dump(stream);
223 fprintf(stream, " %22s = %s\n", "ThisGenerationUID", ThisGenerationUID.EncodeString(identbuf, IdentBufferLen));
224 fprintf(stream, " %22s = %s\n", "CompanyName", CompanyName.EncodeString(identbuf, IdentBufferLen));
225 fprintf(stream, " %22s = %s\n", "ProductName", ProductName.EncodeString(identbuf, IdentBufferLen));
226 fprintf(stream, " %22s = %s\n", "ProductVersion", ProductVersion.EncodeString(identbuf, IdentBufferLen));
227 fprintf(stream, " %22s = %s\n", "VersionString", VersionString.EncodeString(identbuf, IdentBufferLen));
228 fprintf(stream, " %22s = %s\n", "ProductUID", ProductUID.EncodeString(identbuf, IdentBufferLen));
229 fprintf(stream, " %22s = %s\n", "ModificationDate", ModificationDate.EncodeString(identbuf, IdentBufferLen));
230 fprintf(stream, " %22s = %s\n", "ToolkitVersion", ToolkitVersion.EncodeString(identbuf, IdentBufferLen));
231 if ( ! Platform.empty() ) {
232 fprintf(stream, " %22s = %s\n", "Platform", Platform.get().EncodeString(identbuf, IdentBufferLen));
238 Identification::InitFromBuffer(const byte_t* p, ui32_t l)
240 return InterchangeObject::InitFromBuffer(p, l);
245 Identification::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
247 return InterchangeObject::WriteToBuffer(Buffer);
250 //------------------------------------------------------------------------------------------
255 ContentStorage::ContentStorage(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
258 m_UL = m_Dict->ul(MDD_ContentStorage);
261 ContentStorage::ContentStorage(const ContentStorage& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
264 m_UL = m_Dict->ul(MDD_ContentStorage);
271 ContentStorage::InitFromTLVSet(TLVReader& TLVSet)
274 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
275 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(ContentStorage, Packages));
276 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(ContentStorage, EssenceContainerData));
282 ContentStorage::WriteToTLVSet(TLVWriter& TLVSet)
285 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
286 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(ContentStorage, Packages));
287 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(ContentStorage, EssenceContainerData));
293 ContentStorage::Copy(const ContentStorage& rhs)
295 InterchangeObject::Copy(rhs);
296 Packages = rhs.Packages;
297 EssenceContainerData = rhs.EssenceContainerData;
302 ContentStorage::Dump(FILE* stream)
304 char identbuf[IdentBufferLen];
310 InterchangeObject::Dump(stream);
311 fprintf(stream, " %22s:\n", "Packages");
312 Packages.Dump(stream);
313 fprintf(stream, " %22s:\n", "EssenceContainerData");
314 EssenceContainerData.Dump(stream);
319 ContentStorage::InitFromBuffer(const byte_t* p, ui32_t l)
321 return InterchangeObject::InitFromBuffer(p, l);
326 ContentStorage::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
328 return InterchangeObject::WriteToBuffer(Buffer);
331 //------------------------------------------------------------------------------------------
332 // EssenceContainerData
336 EssenceContainerData::EssenceContainerData(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), BodySID(0)
339 m_UL = m_Dict->ul(MDD_EssenceContainerData);
342 EssenceContainerData::EssenceContainerData(const EssenceContainerData& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
345 m_UL = m_Dict->ul(MDD_EssenceContainerData);
352 EssenceContainerData::InitFromTLVSet(TLVReader& TLVSet)
355 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
356 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(EssenceContainerData, LinkedPackageUID));
357 if ( ASDCP_SUCCESS(result) ) {
358 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(EssenceContainerData, IndexSID));
359 IndexSID.set_has_value( result == RESULT_OK );
361 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(EssenceContainerData, BodySID));
367 EssenceContainerData::WriteToTLVSet(TLVWriter& TLVSet)
370 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
371 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(EssenceContainerData, LinkedPackageUID));
372 if ( ASDCP_SUCCESS(result) && ! IndexSID.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(EssenceContainerData, IndexSID));
373 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(EssenceContainerData, BodySID));
379 EssenceContainerData::Copy(const EssenceContainerData& rhs)
381 InterchangeObject::Copy(rhs);
382 LinkedPackageUID = rhs.LinkedPackageUID;
383 IndexSID = rhs.IndexSID;
384 BodySID = rhs.BodySID;
389 EssenceContainerData::Dump(FILE* stream)
391 char identbuf[IdentBufferLen];
397 InterchangeObject::Dump(stream);
398 fprintf(stream, " %22s = %s\n", "LinkedPackageUID", LinkedPackageUID.EncodeString(identbuf, IdentBufferLen));
399 if ( ! IndexSID.empty() ) {
400 fprintf(stream, " %22s = %d\n", "IndexSID", IndexSID.get());
402 fprintf(stream, " %22s = %d\n", "BodySID", BodySID);
407 EssenceContainerData::InitFromBuffer(const byte_t* p, ui32_t l)
409 return InterchangeObject::InitFromBuffer(p, l);
414 EssenceContainerData::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
416 return InterchangeObject::WriteToBuffer(Buffer);
419 //------------------------------------------------------------------------------------------
423 GenericPackage::GenericPackage(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) {}
425 GenericPackage::GenericPackage(const GenericPackage& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
433 GenericPackage::InitFromTLVSet(TLVReader& TLVSet)
436 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
437 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageUID));
438 if ( ASDCP_SUCCESS(result) ) {
439 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPackage, Name));
440 Name.set_has_value( result == RESULT_OK );
442 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageCreationDate));
443 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageModifiedDate));
444 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, Tracks));
450 GenericPackage::WriteToTLVSet(TLVWriter& TLVSet)
453 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
454 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, PackageUID));
455 if ( ASDCP_SUCCESS(result) && ! Name.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPackage, Name));
456 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, PackageCreationDate));
457 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, PackageModifiedDate));
458 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, Tracks));
464 GenericPackage::Copy(const GenericPackage& rhs)
466 InterchangeObject::Copy(rhs);
467 PackageUID = rhs.PackageUID;
469 PackageCreationDate = rhs.PackageCreationDate;
470 PackageModifiedDate = rhs.PackageModifiedDate;
476 GenericPackage::Dump(FILE* stream)
478 char identbuf[IdentBufferLen];
484 InterchangeObject::Dump(stream);
485 fprintf(stream, " %22s = %s\n", "PackageUID", PackageUID.EncodeString(identbuf, IdentBufferLen));
486 if ( ! Name.empty() ) {
487 fprintf(stream, " %22s = %s\n", "Name", Name.get().EncodeString(identbuf, IdentBufferLen));
489 fprintf(stream, " %22s = %s\n", "PackageCreationDate", PackageCreationDate.EncodeString(identbuf, IdentBufferLen));
490 fprintf(stream, " %22s = %s\n", "PackageModifiedDate", PackageModifiedDate.EncodeString(identbuf, IdentBufferLen));
491 fprintf(stream, " %22s:\n", "Tracks");
496 //------------------------------------------------------------------------------------------
501 MaterialPackage::MaterialPackage(const Dictionary*& d) : GenericPackage(d), m_Dict(d)
504 m_UL = m_Dict->ul(MDD_MaterialPackage);
507 MaterialPackage::MaterialPackage(const MaterialPackage& rhs) : GenericPackage(rhs.m_Dict), m_Dict(rhs.m_Dict)
510 m_UL = m_Dict->ul(MDD_MaterialPackage);
517 MaterialPackage::InitFromTLVSet(TLVReader& TLVSet)
520 Result_t result = GenericPackage::InitFromTLVSet(TLVSet);
521 if ( ASDCP_SUCCESS(result) ) {
522 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MaterialPackage, PackageMarker));
523 PackageMarker.set_has_value( result == RESULT_OK );
530 MaterialPackage::WriteToTLVSet(TLVWriter& TLVSet)
533 Result_t result = GenericPackage::WriteToTLVSet(TLVSet);
534 if ( ASDCP_SUCCESS(result) && ! PackageMarker.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MaterialPackage, PackageMarker));
540 MaterialPackage::Copy(const MaterialPackage& rhs)
542 GenericPackage::Copy(rhs);
543 PackageMarker = rhs.PackageMarker;
548 MaterialPackage::Dump(FILE* stream)
550 char identbuf[IdentBufferLen];
556 GenericPackage::Dump(stream);
557 if ( ! PackageMarker.empty() ) {
558 fprintf(stream, " %22s = %s\n", "PackageMarker", PackageMarker.get().EncodeString(identbuf, IdentBufferLen));
564 MaterialPackage::InitFromBuffer(const byte_t* p, ui32_t l)
566 return InterchangeObject::InitFromBuffer(p, l);
571 MaterialPackage::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
573 return InterchangeObject::WriteToBuffer(Buffer);
576 //------------------------------------------------------------------------------------------
581 SourcePackage::SourcePackage(const Dictionary*& d) : GenericPackage(d), m_Dict(d)
584 m_UL = m_Dict->ul(MDD_SourcePackage);
587 SourcePackage::SourcePackage(const SourcePackage& rhs) : GenericPackage(rhs.m_Dict), m_Dict(rhs.m_Dict)
590 m_UL = m_Dict->ul(MDD_SourcePackage);
597 SourcePackage::InitFromTLVSet(TLVReader& TLVSet)
600 Result_t result = GenericPackage::InitFromTLVSet(TLVSet);
601 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(SourcePackage, Descriptor));
607 SourcePackage::WriteToTLVSet(TLVWriter& TLVSet)
610 Result_t result = GenericPackage::WriteToTLVSet(TLVSet);
611 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(SourcePackage, Descriptor));
617 SourcePackage::Copy(const SourcePackage& rhs)
619 GenericPackage::Copy(rhs);
620 Descriptor = rhs.Descriptor;
625 SourcePackage::Dump(FILE* stream)
627 char identbuf[IdentBufferLen];
633 GenericPackage::Dump(stream);
634 fprintf(stream, " %22s = %s\n", "Descriptor", Descriptor.EncodeString(identbuf, IdentBufferLen));
639 SourcePackage::InitFromBuffer(const byte_t* p, ui32_t l)
641 return InterchangeObject::InitFromBuffer(p, l);
646 SourcePackage::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
648 return InterchangeObject::WriteToBuffer(Buffer);
651 //------------------------------------------------------------------------------------------
655 GenericTrack::GenericTrack(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), TrackID(0), TrackNumber(0) {}
657 GenericTrack::GenericTrack(const GenericTrack& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
665 GenericTrack::InitFromTLVSet(TLVReader& TLVSet)
668 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
669 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericTrack, TrackID));
670 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericTrack, TrackNumber));
671 if ( ASDCP_SUCCESS(result) ) {
672 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericTrack, TrackName));
673 TrackName.set_has_value( result == RESULT_OK );
675 if ( ASDCP_SUCCESS(result) ) {
676 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericTrack, Sequence));
677 Sequence.set_has_value( result == RESULT_OK );
684 GenericTrack::WriteToTLVSet(TLVWriter& TLVSet)
687 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
688 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericTrack, TrackID));
689 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericTrack, TrackNumber));
690 if ( ASDCP_SUCCESS(result) && ! TrackName.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericTrack, TrackName));
691 if ( ASDCP_SUCCESS(result) && ! Sequence.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericTrack, Sequence));
697 GenericTrack::Copy(const GenericTrack& rhs)
699 InterchangeObject::Copy(rhs);
700 TrackID = rhs.TrackID;
701 TrackNumber = rhs.TrackNumber;
702 TrackName = rhs.TrackName;
703 Sequence = rhs.Sequence;
708 GenericTrack::Dump(FILE* stream)
710 char identbuf[IdentBufferLen];
716 InterchangeObject::Dump(stream);
717 fprintf(stream, " %22s = %d\n", "TrackID", TrackID);
718 fprintf(stream, " %22s = %d\n", "TrackNumber", TrackNumber);
719 if ( ! TrackName.empty() ) {
720 fprintf(stream, " %22s = %s\n", "TrackName", TrackName.get().EncodeString(identbuf, IdentBufferLen));
722 if ( ! Sequence.empty() ) {
723 fprintf(stream, " %22s = %s\n", "Sequence", Sequence.get().EncodeString(identbuf, IdentBufferLen));
728 //------------------------------------------------------------------------------------------
733 StaticTrack::StaticTrack(const Dictionary*& d) : GenericTrack(d), m_Dict(d)
736 m_UL = m_Dict->ul(MDD_StaticTrack);
739 StaticTrack::StaticTrack(const StaticTrack& rhs) : GenericTrack(rhs.m_Dict), m_Dict(rhs.m_Dict)
742 m_UL = m_Dict->ul(MDD_StaticTrack);
749 StaticTrack::InitFromTLVSet(TLVReader& TLVSet)
752 Result_t result = GenericTrack::InitFromTLVSet(TLVSet);
758 StaticTrack::WriteToTLVSet(TLVWriter& TLVSet)
761 Result_t result = GenericTrack::WriteToTLVSet(TLVSet);
767 StaticTrack::Copy(const StaticTrack& rhs)
769 GenericTrack::Copy(rhs);
774 StaticTrack::Dump(FILE* stream)
776 char identbuf[IdentBufferLen];
782 GenericTrack::Dump(stream);
787 StaticTrack::InitFromBuffer(const byte_t* p, ui32_t l)
789 return InterchangeObject::InitFromBuffer(p, l);
794 StaticTrack::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
796 return InterchangeObject::WriteToBuffer(Buffer);
799 //------------------------------------------------------------------------------------------
804 Track::Track(const Dictionary*& d) : GenericTrack(d), m_Dict(d), Origin(0)
807 m_UL = m_Dict->ul(MDD_Track);
810 Track::Track(const Track& rhs) : GenericTrack(rhs.m_Dict), m_Dict(rhs.m_Dict)
813 m_UL = m_Dict->ul(MDD_Track);
820 Track::InitFromTLVSet(TLVReader& TLVSet)
823 Result_t result = GenericTrack::InitFromTLVSet(TLVSet);
824 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Track, EditRate));
825 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(Track, Origin));
831 Track::WriteToTLVSet(TLVWriter& TLVSet)
834 Result_t result = GenericTrack::WriteToTLVSet(TLVSet);
835 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Track, EditRate));
836 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(Track, Origin));
842 Track::Copy(const Track& rhs)
844 GenericTrack::Copy(rhs);
845 EditRate = rhs.EditRate;
851 Track::Dump(FILE* stream)
853 char identbuf[IdentBufferLen];
859 GenericTrack::Dump(stream);
860 fprintf(stream, " %22s = %s\n", "EditRate", EditRate.EncodeString(identbuf, IdentBufferLen));
861 fprintf(stream, " %22s = %s\n", "Origin", i64sz(Origin, identbuf));
866 Track::InitFromBuffer(const byte_t* p, ui32_t l)
868 return InterchangeObject::InitFromBuffer(p, l);
873 Track::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
875 return InterchangeObject::WriteToBuffer(Buffer);
878 //------------------------------------------------------------------------------------------
879 // StructuralComponent
882 StructuralComponent::StructuralComponent(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) {}
884 StructuralComponent::StructuralComponent(const StructuralComponent& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
892 StructuralComponent::InitFromTLVSet(TLVReader& TLVSet)
895 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
896 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(StructuralComponent, DataDefinition));
897 if ( ASDCP_SUCCESS(result) ) {
898 result = TLVSet.ReadUi64(OBJ_READ_ARGS_OPT(StructuralComponent, Duration));
899 Duration.set_has_value( result == RESULT_OK );
906 StructuralComponent::WriteToTLVSet(TLVWriter& TLVSet)
909 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
910 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(StructuralComponent, DataDefinition));
911 if ( ASDCP_SUCCESS(result) && ! Duration.empty() ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS_OPT(StructuralComponent, Duration));
917 StructuralComponent::Copy(const StructuralComponent& rhs)
919 InterchangeObject::Copy(rhs);
920 DataDefinition = rhs.DataDefinition;
921 Duration = rhs.Duration;
926 StructuralComponent::Dump(FILE* stream)
928 char identbuf[IdentBufferLen];
934 InterchangeObject::Dump(stream);
935 fprintf(stream, " %22s = %s\n", "DataDefinition", DataDefinition.EncodeString(identbuf, IdentBufferLen));
936 if ( ! Duration.empty() ) {
937 fprintf(stream, " %22s = %s\n", "Duration", i64sz(Duration.get(), identbuf));
942 //------------------------------------------------------------------------------------------
947 Sequence::Sequence(const Dictionary*& d) : StructuralComponent(d), m_Dict(d)
950 m_UL = m_Dict->ul(MDD_Sequence);
953 Sequence::Sequence(const Sequence& rhs) : StructuralComponent(rhs.m_Dict), m_Dict(rhs.m_Dict)
956 m_UL = m_Dict->ul(MDD_Sequence);
963 Sequence::InitFromTLVSet(TLVReader& TLVSet)
966 Result_t result = StructuralComponent::InitFromTLVSet(TLVSet);
967 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Sequence, StructuralComponents));
973 Sequence::WriteToTLVSet(TLVWriter& TLVSet)
976 Result_t result = StructuralComponent::WriteToTLVSet(TLVSet);
977 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Sequence, StructuralComponents));
983 Sequence::Copy(const Sequence& rhs)
985 StructuralComponent::Copy(rhs);
986 StructuralComponents = rhs.StructuralComponents;
991 Sequence::Dump(FILE* stream)
993 char identbuf[IdentBufferLen];
999 StructuralComponent::Dump(stream);
1000 fprintf(stream, " %22s:\n", "StructuralComponents");
1001 StructuralComponents.Dump(stream);
1006 Sequence::InitFromBuffer(const byte_t* p, ui32_t l)
1008 return InterchangeObject::InitFromBuffer(p, l);
1013 Sequence::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1015 return InterchangeObject::WriteToBuffer(Buffer);
1018 //------------------------------------------------------------------------------------------
1023 SourceClip::SourceClip(const Dictionary*& d) : StructuralComponent(d), m_Dict(d), StartPosition(0), SourceTrackID(0)
1026 m_UL = m_Dict->ul(MDD_SourceClip);
1029 SourceClip::SourceClip(const SourceClip& rhs) : StructuralComponent(rhs.m_Dict), m_Dict(rhs.m_Dict)
1032 m_UL = m_Dict->ul(MDD_SourceClip);
1039 SourceClip::InitFromTLVSet(TLVReader& TLVSet)
1042 Result_t result = StructuralComponent::InitFromTLVSet(TLVSet);
1043 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(SourceClip, StartPosition));
1044 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(SourceClip, SourcePackageID));
1045 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(SourceClip, SourceTrackID));
1051 SourceClip::WriteToTLVSet(TLVWriter& TLVSet)
1054 Result_t result = StructuralComponent::WriteToTLVSet(TLVSet);
1055 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(SourceClip, StartPosition));
1056 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(SourceClip, SourcePackageID));
1057 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(SourceClip, SourceTrackID));
1063 SourceClip::Copy(const SourceClip& rhs)
1065 StructuralComponent::Copy(rhs);
1066 StartPosition = rhs.StartPosition;
1067 SourcePackageID = rhs.SourcePackageID;
1068 SourceTrackID = rhs.SourceTrackID;
1073 SourceClip::Dump(FILE* stream)
1075 char identbuf[IdentBufferLen];
1081 StructuralComponent::Dump(stream);
1082 fprintf(stream, " %22s = %s\n", "StartPosition", i64sz(StartPosition, identbuf));
1083 fprintf(stream, " %22s = %s\n", "SourcePackageID", SourcePackageID.EncodeString(identbuf, IdentBufferLen));
1084 fprintf(stream, " %22s = %d\n", "SourceTrackID", SourceTrackID);
1089 SourceClip::InitFromBuffer(const byte_t* p, ui32_t l)
1091 return InterchangeObject::InitFromBuffer(p, l);
1096 SourceClip::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1098 return InterchangeObject::WriteToBuffer(Buffer);
1101 //------------------------------------------------------------------------------------------
1102 // TimecodeComponent
1106 TimecodeComponent::TimecodeComponent(const Dictionary*& d) : StructuralComponent(d), m_Dict(d), RoundedTimecodeBase(0), StartTimecode(0), DropFrame(0)
1109 m_UL = m_Dict->ul(MDD_TimecodeComponent);
1112 TimecodeComponent::TimecodeComponent(const TimecodeComponent& rhs) : StructuralComponent(rhs.m_Dict), m_Dict(rhs.m_Dict)
1115 m_UL = m_Dict->ul(MDD_TimecodeComponent);
1122 TimecodeComponent::InitFromTLVSet(TLVReader& TLVSet)
1125 Result_t result = StructuralComponent::InitFromTLVSet(TLVSet);
1126 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(TimecodeComponent, RoundedTimecodeBase));
1127 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(TimecodeComponent, StartTimecode));
1128 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(TimecodeComponent, DropFrame));
1134 TimecodeComponent::WriteToTLVSet(TLVWriter& TLVSet)
1137 Result_t result = StructuralComponent::WriteToTLVSet(TLVSet);
1138 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(TimecodeComponent, RoundedTimecodeBase));
1139 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(TimecodeComponent, StartTimecode));
1140 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(TimecodeComponent, DropFrame));
1146 TimecodeComponent::Copy(const TimecodeComponent& rhs)
1148 StructuralComponent::Copy(rhs);
1149 RoundedTimecodeBase = rhs.RoundedTimecodeBase;
1150 StartTimecode = rhs.StartTimecode;
1151 DropFrame = rhs.DropFrame;
1156 TimecodeComponent::Dump(FILE* stream)
1158 char identbuf[IdentBufferLen];
1164 StructuralComponent::Dump(stream);
1165 fprintf(stream, " %22s = %d\n", "RoundedTimecodeBase", RoundedTimecodeBase);
1166 fprintf(stream, " %22s = %s\n", "StartTimecode", i64sz(StartTimecode, identbuf));
1167 fprintf(stream, " %22s = %d\n", "DropFrame", DropFrame);
1172 TimecodeComponent::InitFromBuffer(const byte_t* p, ui32_t l)
1174 return InterchangeObject::InitFromBuffer(p, l);
1179 TimecodeComponent::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1181 return InterchangeObject::WriteToBuffer(Buffer);
1184 //------------------------------------------------------------------------------------------
1185 // GenericDescriptor
1188 GenericDescriptor::GenericDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) {}
1190 GenericDescriptor::GenericDescriptor(const GenericDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
1198 GenericDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1201 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
1202 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericDescriptor, Locators));
1203 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericDescriptor, SubDescriptors));
1209 GenericDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1212 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
1213 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericDescriptor, Locators));
1214 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericDescriptor, SubDescriptors));
1220 GenericDescriptor::Copy(const GenericDescriptor& rhs)
1222 InterchangeObject::Copy(rhs);
1223 Locators = rhs.Locators;
1224 SubDescriptors = rhs.SubDescriptors;
1229 GenericDescriptor::Dump(FILE* stream)
1231 char identbuf[IdentBufferLen];
1237 InterchangeObject::Dump(stream);
1238 fprintf(stream, " %22s:\n", "Locators");
1239 Locators.Dump(stream);
1240 fprintf(stream, " %22s:\n", "SubDescriptors");
1241 SubDescriptors.Dump(stream);
1245 //------------------------------------------------------------------------------------------
1250 FileDescriptor::FileDescriptor(const Dictionary*& d) : GenericDescriptor(d), m_Dict(d)
1253 m_UL = m_Dict->ul(MDD_FileDescriptor);
1256 FileDescriptor::FileDescriptor(const FileDescriptor& rhs) : GenericDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
1259 m_UL = m_Dict->ul(MDD_FileDescriptor);
1266 FileDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1269 Result_t result = GenericDescriptor::InitFromTLVSet(TLVSet);
1270 if ( ASDCP_SUCCESS(result) ) {
1271 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(FileDescriptor, LinkedTrackID));
1272 LinkedTrackID.set_has_value( result == RESULT_OK );
1274 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(FileDescriptor, SampleRate));
1275 if ( ASDCP_SUCCESS(result) ) {
1276 result = TLVSet.ReadUi64(OBJ_READ_ARGS_OPT(FileDescriptor, ContainerDuration));
1277 ContainerDuration.set_has_value( result == RESULT_OK );
1279 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(FileDescriptor, EssenceContainer));
1280 if ( ASDCP_SUCCESS(result) ) {
1281 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(FileDescriptor, Codec));
1282 Codec.set_has_value( result == RESULT_OK );
1289 FileDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1292 Result_t result = GenericDescriptor::WriteToTLVSet(TLVSet);
1293 if ( ASDCP_SUCCESS(result) && ! LinkedTrackID.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(FileDescriptor, LinkedTrackID));
1294 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(FileDescriptor, SampleRate));
1295 if ( ASDCP_SUCCESS(result) && ! ContainerDuration.empty() ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS_OPT(FileDescriptor, ContainerDuration));
1296 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(FileDescriptor, EssenceContainer));
1297 if ( ASDCP_SUCCESS(result) && ! Codec.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(FileDescriptor, Codec));
1303 FileDescriptor::Copy(const FileDescriptor& rhs)
1305 GenericDescriptor::Copy(rhs);
1306 LinkedTrackID = rhs.LinkedTrackID;
1307 SampleRate = rhs.SampleRate;
1308 ContainerDuration = rhs.ContainerDuration;
1309 EssenceContainer = rhs.EssenceContainer;
1315 FileDescriptor::Dump(FILE* stream)
1317 char identbuf[IdentBufferLen];
1323 GenericDescriptor::Dump(stream);
1324 if ( ! LinkedTrackID.empty() ) {
1325 fprintf(stream, " %22s = %d\n", "LinkedTrackID", LinkedTrackID.get());
1327 fprintf(stream, " %22s = %s\n", "SampleRate", SampleRate.EncodeString(identbuf, IdentBufferLen));
1328 if ( ! ContainerDuration.empty() ) {
1329 fprintf(stream, " %22s = %s\n", "ContainerDuration", i64sz(ContainerDuration.get(), identbuf));
1331 fprintf(stream, " %22s = %s\n", "EssenceContainer", EssenceContainer.EncodeString(identbuf, IdentBufferLen));
1332 if ( ! Codec.empty() ) {
1333 fprintf(stream, " %22s = %s\n", "Codec", Codec.get().EncodeString(identbuf, IdentBufferLen));
1339 FileDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1341 return InterchangeObject::InitFromBuffer(p, l);
1346 FileDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1348 return InterchangeObject::WriteToBuffer(Buffer);
1351 //------------------------------------------------------------------------------------------
1352 // GenericSoundEssenceDescriptor
1356 GenericSoundEssenceDescriptor::GenericSoundEssenceDescriptor(const Dictionary*& d) : FileDescriptor(d), m_Dict(d), Locked(0), ChannelCount(0), QuantizationBits(0)
1359 m_UL = m_Dict->ul(MDD_GenericSoundEssenceDescriptor);
1362 GenericSoundEssenceDescriptor::GenericSoundEssenceDescriptor(const GenericSoundEssenceDescriptor& rhs) : FileDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
1365 m_UL = m_Dict->ul(MDD_GenericSoundEssenceDescriptor);
1372 GenericSoundEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1375 Result_t result = FileDescriptor::InitFromTLVSet(TLVSet);
1376 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, AudioSamplingRate));
1377 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, Locked));
1378 if ( ASDCP_SUCCESS(result) ) {
1379 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericSoundEssenceDescriptor, AudioRefLevel));
1380 AudioRefLevel.set_has_value( result == RESULT_OK );
1382 if ( ASDCP_SUCCESS(result) ) {
1383 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericSoundEssenceDescriptor, ElectroSpatialFormulation));
1384 ElectroSpatialFormulation.set_has_value( result == RESULT_OK );
1386 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, ChannelCount));
1387 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, QuantizationBits));
1388 if ( ASDCP_SUCCESS(result) ) {
1389 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericSoundEssenceDescriptor, DialNorm));
1390 DialNorm.set_has_value( result == RESULT_OK );
1392 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, SoundEssenceCoding));
1398 GenericSoundEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1401 Result_t result = FileDescriptor::WriteToTLVSet(TLVSet);
1402 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, AudioSamplingRate));
1403 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, Locked));
1404 if ( ASDCP_SUCCESS(result) && ! AudioRefLevel.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericSoundEssenceDescriptor, AudioRefLevel));
1405 if ( ASDCP_SUCCESS(result) && ! ElectroSpatialFormulation.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericSoundEssenceDescriptor, ElectroSpatialFormulation));
1406 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, ChannelCount));
1407 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, QuantizationBits));
1408 if ( ASDCP_SUCCESS(result) && ! DialNorm.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericSoundEssenceDescriptor, DialNorm));
1409 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, SoundEssenceCoding));
1415 GenericSoundEssenceDescriptor::Copy(const GenericSoundEssenceDescriptor& rhs)
1417 FileDescriptor::Copy(rhs);
1418 AudioSamplingRate = rhs.AudioSamplingRate;
1419 Locked = rhs.Locked;
1420 AudioRefLevel = rhs.AudioRefLevel;
1421 ElectroSpatialFormulation = rhs.ElectroSpatialFormulation;
1422 ChannelCount = rhs.ChannelCount;
1423 QuantizationBits = rhs.QuantizationBits;
1424 DialNorm = rhs.DialNorm;
1425 SoundEssenceCoding = rhs.SoundEssenceCoding;
1430 GenericSoundEssenceDescriptor::Dump(FILE* stream)
1432 char identbuf[IdentBufferLen];
1438 FileDescriptor::Dump(stream);
1439 fprintf(stream, " %22s = %s\n", "AudioSamplingRate", AudioSamplingRate.EncodeString(identbuf, IdentBufferLen));
1440 fprintf(stream, " %22s = %d\n", "Locked", Locked);
1441 if ( ! AudioRefLevel.empty() ) {
1442 fprintf(stream, " %22s = %d\n", "AudioRefLevel", AudioRefLevel.get());
1444 if ( ! ElectroSpatialFormulation.empty() ) {
1445 fprintf(stream, " %22s = %d\n", "ElectroSpatialFormulation", ElectroSpatialFormulation.get());
1447 fprintf(stream, " %22s = %d\n", "ChannelCount", ChannelCount);
1448 fprintf(stream, " %22s = %d\n", "QuantizationBits", QuantizationBits);
1449 if ( ! DialNorm.empty() ) {
1450 fprintf(stream, " %22s = %d\n", "DialNorm", DialNorm.get());
1452 fprintf(stream, " %22s = %s\n", "SoundEssenceCoding", SoundEssenceCoding.EncodeString(identbuf, IdentBufferLen));
1457 GenericSoundEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1459 return InterchangeObject::InitFromBuffer(p, l);
1464 GenericSoundEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1466 return InterchangeObject::WriteToBuffer(Buffer);
1469 //------------------------------------------------------------------------------------------
1470 // WaveAudioDescriptor
1474 WaveAudioDescriptor::WaveAudioDescriptor(const Dictionary*& d) : GenericSoundEssenceDescriptor(d), m_Dict(d), BlockAlign(0), AvgBps(0)
1477 m_UL = m_Dict->ul(MDD_WaveAudioDescriptor);
1480 WaveAudioDescriptor::WaveAudioDescriptor(const WaveAudioDescriptor& rhs) : GenericSoundEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
1483 m_UL = m_Dict->ul(MDD_WaveAudioDescriptor);
1490 WaveAudioDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1493 Result_t result = GenericSoundEssenceDescriptor::InitFromTLVSet(TLVSet);
1494 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(WaveAudioDescriptor, BlockAlign));
1495 if ( ASDCP_SUCCESS(result) ) {
1496 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(WaveAudioDescriptor, SequenceOffset));
1497 SequenceOffset.set_has_value( result == RESULT_OK );
1499 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(WaveAudioDescriptor, AvgBps));
1500 if ( ASDCP_SUCCESS(result) ) {
1501 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(WaveAudioDescriptor, ChannelAssignment));
1502 ChannelAssignment.set_has_value( result == RESULT_OK );
1504 if ( ASDCP_SUCCESS(result) ) {
1505 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(WaveAudioDescriptor, ReferenceImageEditRate));
1506 ReferenceImageEditRate.set_has_value( result == RESULT_OK );
1508 if ( ASDCP_SUCCESS(result) ) {
1509 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(WaveAudioDescriptor, ReferenceAudioAlignmentLevel));
1510 ReferenceAudioAlignmentLevel.set_has_value( result == RESULT_OK );
1517 WaveAudioDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1520 Result_t result = GenericSoundEssenceDescriptor::WriteToTLVSet(TLVSet);
1521 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(WaveAudioDescriptor, BlockAlign));
1522 if ( ASDCP_SUCCESS(result) && ! SequenceOffset.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(WaveAudioDescriptor, SequenceOffset));
1523 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(WaveAudioDescriptor, AvgBps));
1524 if ( ASDCP_SUCCESS(result) && ! ChannelAssignment.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(WaveAudioDescriptor, ChannelAssignment));
1525 if ( ASDCP_SUCCESS(result) && ! ReferenceImageEditRate.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(WaveAudioDescriptor, ReferenceImageEditRate));
1526 if ( ASDCP_SUCCESS(result) && ! ReferenceAudioAlignmentLevel.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(WaveAudioDescriptor, ReferenceAudioAlignmentLevel));
1532 WaveAudioDescriptor::Copy(const WaveAudioDescriptor& rhs)
1534 GenericSoundEssenceDescriptor::Copy(rhs);
1535 BlockAlign = rhs.BlockAlign;
1536 SequenceOffset = rhs.SequenceOffset;
1537 AvgBps = rhs.AvgBps;
1538 ChannelAssignment = rhs.ChannelAssignment;
1539 ReferenceImageEditRate = rhs.ReferenceImageEditRate;
1540 ReferenceAudioAlignmentLevel = rhs.ReferenceAudioAlignmentLevel;
1545 WaveAudioDescriptor::Dump(FILE* stream)
1547 char identbuf[IdentBufferLen];
1553 GenericSoundEssenceDescriptor::Dump(stream);
1554 fprintf(stream, " %22s = %d\n", "BlockAlign", BlockAlign);
1555 if ( ! SequenceOffset.empty() ) {
1556 fprintf(stream, " %22s = %d\n", "SequenceOffset", SequenceOffset.get());
1558 fprintf(stream, " %22s = %d\n", "AvgBps", AvgBps);
1559 if ( ! ChannelAssignment.empty() ) {
1560 fprintf(stream, " %22s = %s\n", "ChannelAssignment", ChannelAssignment.get().EncodeString(identbuf, IdentBufferLen));
1562 if ( ! ReferenceImageEditRate.empty() ) {
1563 fprintf(stream, " %22s = %s\n", "ReferenceImageEditRate", ReferenceImageEditRate.get().EncodeString(identbuf, IdentBufferLen));
1565 if ( ! ReferenceAudioAlignmentLevel.empty() ) {
1566 fprintf(stream, " %22s = %d\n", "ReferenceAudioAlignmentLevel", ReferenceAudioAlignmentLevel.get());
1572 WaveAudioDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1574 return InterchangeObject::InitFromBuffer(p, l);
1579 WaveAudioDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1581 return InterchangeObject::WriteToBuffer(Buffer);
1584 //------------------------------------------------------------------------------------------
1585 // GenericPictureEssenceDescriptor
1589 GenericPictureEssenceDescriptor::GenericPictureEssenceDescriptor(const Dictionary*& d) : FileDescriptor(d), m_Dict(d), FrameLayout(0), StoredWidth(0), StoredHeight(0)
1592 m_UL = m_Dict->ul(MDD_GenericPictureEssenceDescriptor);
1595 GenericPictureEssenceDescriptor::GenericPictureEssenceDescriptor(const GenericPictureEssenceDescriptor& rhs) : FileDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
1598 m_UL = m_Dict->ul(MDD_GenericPictureEssenceDescriptor);
1605 GenericPictureEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1608 Result_t result = FileDescriptor::InitFromTLVSet(TLVSet);
1609 if ( ASDCP_SUCCESS(result) ) {
1610 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, SignalStandard));
1611 SignalStandard.set_has_value( result == RESULT_OK );
1613 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, FrameLayout));
1614 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, StoredWidth));
1615 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, StoredHeight));
1616 if ( ASDCP_SUCCESS(result) ) {
1617 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, StoredF2Offset));
1618 StoredF2Offset.set_has_value( result == RESULT_OK );
1620 if ( ASDCP_SUCCESS(result) ) {
1621 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, SampledWidth));
1622 SampledWidth.set_has_value( result == RESULT_OK );
1624 if ( ASDCP_SUCCESS(result) ) {
1625 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, SampledHeight));
1626 SampledHeight.set_has_value( result == RESULT_OK );
1628 if ( ASDCP_SUCCESS(result) ) {
1629 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, SampledXOffset));
1630 SampledXOffset.set_has_value( result == RESULT_OK );
1632 if ( ASDCP_SUCCESS(result) ) {
1633 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, SampledYOffset));
1634 SampledYOffset.set_has_value( result == RESULT_OK );
1636 if ( ASDCP_SUCCESS(result) ) {
1637 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayHeight));
1638 DisplayHeight.set_has_value( result == RESULT_OK );
1640 if ( ASDCP_SUCCESS(result) ) {
1641 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayWidth));
1642 DisplayWidth.set_has_value( result == RESULT_OK );
1644 if ( ASDCP_SUCCESS(result) ) {
1645 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayXOffset));
1646 DisplayXOffset.set_has_value( result == RESULT_OK );
1648 if ( ASDCP_SUCCESS(result) ) {
1649 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayYOffset));
1650 DisplayYOffset.set_has_value( result == RESULT_OK );
1652 if ( ASDCP_SUCCESS(result) ) {
1653 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayF2Offset));
1654 DisplayF2Offset.set_has_value( result == RESULT_OK );
1656 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, AspectRatio));
1657 if ( ASDCP_SUCCESS(result) ) {
1658 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveFormatDescriptor));
1659 ActiveFormatDescriptor.set_has_value( result == RESULT_OK );
1661 if ( ASDCP_SUCCESS(result) ) {
1662 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, AlphaTransparency));
1663 AlphaTransparency.set_has_value( result == RESULT_OK );
1665 if ( ASDCP_SUCCESS(result) ) {
1666 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, TransferCharacteristic));
1667 TransferCharacteristic.set_has_value( result == RESULT_OK );
1669 if ( ASDCP_SUCCESS(result) ) {
1670 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ImageAlignmentOffset));
1671 ImageAlignmentOffset.set_has_value( result == RESULT_OK );
1673 if ( ASDCP_SUCCESS(result) ) {
1674 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ImageStartOffset));
1675 ImageStartOffset.set_has_value( result == RESULT_OK );
1677 if ( ASDCP_SUCCESS(result) ) {
1678 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ImageEndOffset));
1679 ImageEndOffset.set_has_value( result == RESULT_OK );
1681 if ( ASDCP_SUCCESS(result) ) {
1682 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, FieldDominance));
1683 FieldDominance.set_has_value( result == RESULT_OK );
1685 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, PictureEssenceCoding));
1686 if ( ASDCP_SUCCESS(result) ) {
1687 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, CodingEquations));
1688 CodingEquations.set_has_value( result == RESULT_OK );
1690 if ( ASDCP_SUCCESS(result) ) {
1691 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ColorPrimaries));
1692 ColorPrimaries.set_has_value( result == RESULT_OK );
1694 if ( ASDCP_SUCCESS(result) ) {
1695 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, AlternativeCenterCuts));
1697 if ( ASDCP_SUCCESS(result) ) {
1698 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveWidth));
1699 ActiveWidth.set_has_value( result == RESULT_OK );
1701 if ( ASDCP_SUCCESS(result) ) {
1702 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveHeight));
1703 ActiveHeight.set_has_value( result == RESULT_OK );
1705 if ( ASDCP_SUCCESS(result) ) {
1706 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveXOffset));
1707 ActiveXOffset.set_has_value( result == RESULT_OK );
1709 if ( ASDCP_SUCCESS(result) ) {
1710 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveYOffset));
1711 ActiveYOffset.set_has_value( result == RESULT_OK );
1713 if ( ASDCP_SUCCESS(result) ) {
1714 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, VideoLineMap));
1715 VideoLineMap.set_has_value( result == RESULT_OK );
1717 if ( ASDCP_SUCCESS(result) ) {
1718 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayPrimaries));
1719 MasteringDisplayPrimaries.set_has_value( result == RESULT_OK );
1721 if ( ASDCP_SUCCESS(result) ) {
1722 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayWhitePointChromaticity));
1723 MasteringDisplayWhitePointChromaticity.set_has_value( result == RESULT_OK );
1725 if ( ASDCP_SUCCESS(result) ) {
1726 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayMaximumLuminance));
1727 MasteringDisplayMaximumLuminance.set_has_value( result == RESULT_OK );
1729 if ( ASDCP_SUCCESS(result) ) {
1730 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayMinimumLuminance));
1731 MasteringDisplayMinimumLuminance.set_has_value( result == RESULT_OK );
1738 GenericPictureEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1741 Result_t result = FileDescriptor::WriteToTLVSet(TLVSet);
1742 if ( ASDCP_SUCCESS(result) && ! SignalStandard.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, SignalStandard));
1743 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, FrameLayout));
1744 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, StoredWidth));
1745 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, StoredHeight));
1746 if ( ASDCP_SUCCESS(result) && ! StoredF2Offset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, StoredF2Offset));
1747 if ( ASDCP_SUCCESS(result) && ! SampledWidth.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, SampledWidth));
1748 if ( ASDCP_SUCCESS(result) && ! SampledHeight.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, SampledHeight));
1749 if ( ASDCP_SUCCESS(result) && ! SampledXOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, SampledXOffset));
1750 if ( ASDCP_SUCCESS(result) && ! SampledYOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, SampledYOffset));
1751 if ( ASDCP_SUCCESS(result) && ! DisplayHeight.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayHeight));
1752 if ( ASDCP_SUCCESS(result) && ! DisplayWidth.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayWidth));
1753 if ( ASDCP_SUCCESS(result) && ! DisplayXOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayXOffset));
1754 if ( ASDCP_SUCCESS(result) && ! DisplayYOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayYOffset));
1755 if ( ASDCP_SUCCESS(result) && ! DisplayF2Offset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayF2Offset));
1756 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, AspectRatio));
1757 if ( ASDCP_SUCCESS(result) && ! ActiveFormatDescriptor.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveFormatDescriptor));
1758 if ( ASDCP_SUCCESS(result) && ! AlphaTransparency.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, AlphaTransparency));
1759 if ( ASDCP_SUCCESS(result) && ! TransferCharacteristic.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, TransferCharacteristic));
1760 if ( ASDCP_SUCCESS(result) && ! ImageAlignmentOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ImageAlignmentOffset));
1761 if ( ASDCP_SUCCESS(result) && ! ImageStartOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ImageStartOffset));
1762 if ( ASDCP_SUCCESS(result) && ! ImageEndOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ImageEndOffset));
1763 if ( ASDCP_SUCCESS(result) && ! FieldDominance.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, FieldDominance));
1764 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, PictureEssenceCoding));
1765 if ( ASDCP_SUCCESS(result) && ! CodingEquations.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, CodingEquations));
1766 if ( ASDCP_SUCCESS(result) && ! ColorPrimaries.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ColorPrimaries));
1767 if ( ASDCP_SUCCESS(result) && ! AlternativeCenterCuts.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, AlternativeCenterCuts));
1768 if ( ASDCP_SUCCESS(result) && ! ActiveWidth.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveWidth));
1769 if ( ASDCP_SUCCESS(result) && ! ActiveHeight.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveHeight));
1770 if ( ASDCP_SUCCESS(result) && ! ActiveXOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveXOffset));
1771 if ( ASDCP_SUCCESS(result) && ! ActiveYOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveYOffset));
1772 if ( ASDCP_SUCCESS(result) && ! VideoLineMap.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, VideoLineMap));
1773 if ( ASDCP_SUCCESS(result) && ! MasteringDisplayPrimaries.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayPrimaries));
1774 if ( ASDCP_SUCCESS(result) && ! MasteringDisplayWhitePointChromaticity.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayWhitePointChromaticity));
1775 if ( ASDCP_SUCCESS(result) && ! MasteringDisplayMaximumLuminance.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayMaximumLuminance));
1776 if ( ASDCP_SUCCESS(result) && ! MasteringDisplayMinimumLuminance.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayMinimumLuminance));
1782 GenericPictureEssenceDescriptor::Copy(const GenericPictureEssenceDescriptor& rhs)
1784 FileDescriptor::Copy(rhs);
1785 SignalStandard = rhs.SignalStandard;
1786 FrameLayout = rhs.FrameLayout;
1787 StoredWidth = rhs.StoredWidth;
1788 StoredHeight = rhs.StoredHeight;
1789 StoredF2Offset = rhs.StoredF2Offset;
1790 SampledWidth = rhs.SampledWidth;
1791 SampledHeight = rhs.SampledHeight;
1792 SampledXOffset = rhs.SampledXOffset;
1793 SampledYOffset = rhs.SampledYOffset;
1794 DisplayHeight = rhs.DisplayHeight;
1795 DisplayWidth = rhs.DisplayWidth;
1796 DisplayXOffset = rhs.DisplayXOffset;
1797 DisplayYOffset = rhs.DisplayYOffset;
1798 DisplayF2Offset = rhs.DisplayF2Offset;
1799 AspectRatio = rhs.AspectRatio;
1800 ActiveFormatDescriptor = rhs.ActiveFormatDescriptor;
1801 AlphaTransparency = rhs.AlphaTransparency;
1802 TransferCharacteristic = rhs.TransferCharacteristic;
1803 ImageAlignmentOffset = rhs.ImageAlignmentOffset;
1804 ImageStartOffset = rhs.ImageStartOffset;
1805 ImageEndOffset = rhs.ImageEndOffset;
1806 FieldDominance = rhs.FieldDominance;
1807 PictureEssenceCoding = rhs.PictureEssenceCoding;
1808 CodingEquations = rhs.CodingEquations;
1809 ColorPrimaries = rhs.ColorPrimaries;
1810 AlternativeCenterCuts = rhs.AlternativeCenterCuts;
1811 ActiveWidth = rhs.ActiveWidth;
1812 ActiveHeight = rhs.ActiveHeight;
1813 ActiveXOffset = rhs.ActiveXOffset;
1814 ActiveYOffset = rhs.ActiveYOffset;
1815 VideoLineMap = rhs.VideoLineMap;
1816 MasteringDisplayPrimaries = rhs.MasteringDisplayPrimaries;
1817 MasteringDisplayWhitePointChromaticity = rhs.MasteringDisplayWhitePointChromaticity;
1818 MasteringDisplayMaximumLuminance = rhs.MasteringDisplayMaximumLuminance;
1819 MasteringDisplayMinimumLuminance = rhs.MasteringDisplayMinimumLuminance;
1824 GenericPictureEssenceDescriptor::Dump(FILE* stream)
1826 char identbuf[IdentBufferLen];
1832 FileDescriptor::Dump(stream);
1833 if ( ! SignalStandard.empty() ) {
1834 fprintf(stream, " %22s = %d\n", "SignalStandard", SignalStandard.get());
1836 fprintf(stream, " %22s = %d\n", "FrameLayout", FrameLayout);
1837 fprintf(stream, " %22s = %d\n", "StoredWidth", StoredWidth);
1838 fprintf(stream, " %22s = %d\n", "StoredHeight", StoredHeight);
1839 if ( ! StoredF2Offset.empty() ) {
1840 fprintf(stream, " %22s = %d\n", "StoredF2Offset", StoredF2Offset.get());
1842 if ( ! SampledWidth.empty() ) {
1843 fprintf(stream, " %22s = %d\n", "SampledWidth", SampledWidth.get());
1845 if ( ! SampledHeight.empty() ) {
1846 fprintf(stream, " %22s = %d\n", "SampledHeight", SampledHeight.get());
1848 if ( ! SampledXOffset.empty() ) {
1849 fprintf(stream, " %22s = %d\n", "SampledXOffset", SampledXOffset.get());
1851 if ( ! SampledYOffset.empty() ) {
1852 fprintf(stream, " %22s = %d\n", "SampledYOffset", SampledYOffset.get());
1854 if ( ! DisplayHeight.empty() ) {
1855 fprintf(stream, " %22s = %d\n", "DisplayHeight", DisplayHeight.get());
1857 if ( ! DisplayWidth.empty() ) {
1858 fprintf(stream, " %22s = %d\n", "DisplayWidth", DisplayWidth.get());
1860 if ( ! DisplayXOffset.empty() ) {
1861 fprintf(stream, " %22s = %d\n", "DisplayXOffset", DisplayXOffset.get());
1863 if ( ! DisplayYOffset.empty() ) {
1864 fprintf(stream, " %22s = %d\n", "DisplayYOffset", DisplayYOffset.get());
1866 if ( ! DisplayF2Offset.empty() ) {
1867 fprintf(stream, " %22s = %d\n", "DisplayF2Offset", DisplayF2Offset.get());
1869 fprintf(stream, " %22s = %s\n", "AspectRatio", AspectRatio.EncodeString(identbuf, IdentBufferLen));
1870 if ( ! ActiveFormatDescriptor.empty() ) {
1871 fprintf(stream, " %22s = %d\n", "ActiveFormatDescriptor", ActiveFormatDescriptor.get());
1873 if ( ! AlphaTransparency.empty() ) {
1874 fprintf(stream, " %22s = %d\n", "AlphaTransparency", AlphaTransparency.get());
1876 if ( ! TransferCharacteristic.empty() ) {
1877 fprintf(stream, " %22s = %s\n", "TransferCharacteristic", TransferCharacteristic.get().EncodeString(identbuf, IdentBufferLen));
1879 if ( ! ImageAlignmentOffset.empty() ) {
1880 fprintf(stream, " %22s = %d\n", "ImageAlignmentOffset", ImageAlignmentOffset.get());
1882 if ( ! ImageStartOffset.empty() ) {
1883 fprintf(stream, " %22s = %d\n", "ImageStartOffset", ImageStartOffset.get());
1885 if ( ! ImageEndOffset.empty() ) {
1886 fprintf(stream, " %22s = %d\n", "ImageEndOffset", ImageEndOffset.get());
1888 if ( ! FieldDominance.empty() ) {
1889 fprintf(stream, " %22s = %d\n", "FieldDominance", FieldDominance.get());
1891 fprintf(stream, " %22s = %s\n", "PictureEssenceCoding", PictureEssenceCoding.EncodeString(identbuf, IdentBufferLen));
1892 if ( ! CodingEquations.empty() ) {
1893 fprintf(stream, " %22s = %s\n", "CodingEquations", CodingEquations.get().EncodeString(identbuf, IdentBufferLen));
1895 if ( ! ColorPrimaries.empty() ) {
1896 fprintf(stream, " %22s = %s\n", "ColorPrimaries", ColorPrimaries.get().EncodeString(identbuf, IdentBufferLen));
1898 if ( ! AlternativeCenterCuts.empty() ) {
1899 fprintf(stream, " %22s:\n", "AlternativeCenterCuts");
1900 AlternativeCenterCuts.get().Dump(stream);
1902 if ( ! ActiveWidth.empty() ) {
1903 fprintf(stream, " %22s = %d\n", "ActiveWidth", ActiveWidth.get());
1905 if ( ! ActiveHeight.empty() ) {
1906 fprintf(stream, " %22s = %d\n", "ActiveHeight", ActiveHeight.get());
1908 if ( ! ActiveXOffset.empty() ) {
1909 fprintf(stream, " %22s = %d\n", "ActiveXOffset", ActiveXOffset.get());
1911 if ( ! ActiveYOffset.empty() ) {
1912 fprintf(stream, " %22s = %d\n", "ActiveYOffset", ActiveYOffset.get());
1914 if ( ! VideoLineMap.empty() ) {
1915 fprintf(stream, " %22s = %s\n", "VideoLineMap", VideoLineMap.get().EncodeString(identbuf, IdentBufferLen));
1917 if ( ! MasteringDisplayPrimaries.empty() ) {
1918 fprintf(stream, " %22s = %s\n", "MasteringDisplayPrimaries", MasteringDisplayPrimaries.get().EncodeString(identbuf, IdentBufferLen));
1920 if ( ! MasteringDisplayWhitePointChromaticity.empty() ) {
1921 fprintf(stream, " %22s = %s\n", "MasteringDisplayWhitePointChromaticity", MasteringDisplayWhitePointChromaticity.get().EncodeString(identbuf, IdentBufferLen));
1923 if ( ! MasteringDisplayMaximumLuminance.empty() ) {
1924 fprintf(stream, " %22s = %d\n", "MasteringDisplayMaximumLuminance", MasteringDisplayMaximumLuminance.get());
1926 if ( ! MasteringDisplayMinimumLuminance.empty() ) {
1927 fprintf(stream, " %22s = %d\n", "MasteringDisplayMinimumLuminance", MasteringDisplayMinimumLuminance.get());
1933 GenericPictureEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1935 return InterchangeObject::InitFromBuffer(p, l);
1940 GenericPictureEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1942 return InterchangeObject::WriteToBuffer(Buffer);
1945 //------------------------------------------------------------------------------------------
1946 // RGBAEssenceDescriptor
1950 RGBAEssenceDescriptor::RGBAEssenceDescriptor(const Dictionary*& d) : GenericPictureEssenceDescriptor(d), m_Dict(d)
1953 m_UL = m_Dict->ul(MDD_RGBAEssenceDescriptor);
1956 RGBAEssenceDescriptor::RGBAEssenceDescriptor(const RGBAEssenceDescriptor& rhs) : GenericPictureEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
1959 m_UL = m_Dict->ul(MDD_RGBAEssenceDescriptor);
1966 RGBAEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1969 Result_t result = GenericPictureEssenceDescriptor::InitFromTLVSet(TLVSet);
1970 if ( ASDCP_SUCCESS(result) ) {
1971 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(RGBAEssenceDescriptor, ComponentMaxRef));
1972 ComponentMaxRef.set_has_value( result == RESULT_OK );
1974 if ( ASDCP_SUCCESS(result) ) {
1975 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(RGBAEssenceDescriptor, ComponentMinRef));
1976 ComponentMinRef.set_has_value( result == RESULT_OK );
1978 if ( ASDCP_SUCCESS(result) ) {
1979 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(RGBAEssenceDescriptor, AlphaMinRef));
1980 AlphaMinRef.set_has_value( result == RESULT_OK );
1982 if ( ASDCP_SUCCESS(result) ) {
1983 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(RGBAEssenceDescriptor, AlphaMaxRef));
1984 AlphaMaxRef.set_has_value( result == RESULT_OK );
1986 if ( ASDCP_SUCCESS(result) ) {
1987 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(RGBAEssenceDescriptor, ScanningDirection));
1988 ScanningDirection.set_has_value( result == RESULT_OK );
1990 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(RGBAEssenceDescriptor, PixelLayout));
1996 RGBAEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1999 Result_t result = GenericPictureEssenceDescriptor::WriteToTLVSet(TLVSet);
2000 if ( ASDCP_SUCCESS(result) && ! ComponentMaxRef.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(RGBAEssenceDescriptor, ComponentMaxRef));
2001 if ( ASDCP_SUCCESS(result) && ! ComponentMinRef.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(RGBAEssenceDescriptor, ComponentMinRef));
2002 if ( ASDCP_SUCCESS(result) && ! AlphaMinRef.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(RGBAEssenceDescriptor, AlphaMinRef));
2003 if ( ASDCP_SUCCESS(result) && ! AlphaMaxRef.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(RGBAEssenceDescriptor, AlphaMaxRef));
2004 if ( ASDCP_SUCCESS(result) && ! ScanningDirection.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(RGBAEssenceDescriptor, ScanningDirection));
2005 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(RGBAEssenceDescriptor, PixelLayout));
2011 RGBAEssenceDescriptor::Copy(const RGBAEssenceDescriptor& rhs)
2013 GenericPictureEssenceDescriptor::Copy(rhs);
2014 ComponentMaxRef = rhs.ComponentMaxRef;
2015 ComponentMinRef = rhs.ComponentMinRef;
2016 AlphaMinRef = rhs.AlphaMinRef;
2017 AlphaMaxRef = rhs.AlphaMaxRef;
2018 ScanningDirection = rhs.ScanningDirection;
2019 PixelLayout = rhs.PixelLayout;
2024 RGBAEssenceDescriptor::Dump(FILE* stream)
2026 char identbuf[IdentBufferLen];
2032 GenericPictureEssenceDescriptor::Dump(stream);
2033 if ( ! ComponentMaxRef.empty() ) {
2034 fprintf(stream, " %22s = %d\n", "ComponentMaxRef", ComponentMaxRef.get());
2036 if ( ! ComponentMinRef.empty() ) {
2037 fprintf(stream, " %22s = %d\n", "ComponentMinRef", ComponentMinRef.get());
2039 if ( ! AlphaMinRef.empty() ) {
2040 fprintf(stream, " %22s = %d\n", "AlphaMinRef", AlphaMinRef.get());
2042 if ( ! AlphaMaxRef.empty() ) {
2043 fprintf(stream, " %22s = %d\n", "AlphaMaxRef", AlphaMaxRef.get());
2045 if ( ! ScanningDirection.empty() ) {
2046 fprintf(stream, " %22s = %d\n", "ScanningDirection", ScanningDirection.get());
2048 fprintf(stream, " %22s = %s\n", "PixelLayout", PixelLayout.EncodeString(identbuf, IdentBufferLen));
2053 RGBAEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
2055 return InterchangeObject::InitFromBuffer(p, l);
2060 RGBAEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2062 return InterchangeObject::WriteToBuffer(Buffer);
2065 //------------------------------------------------------------------------------------------
2066 // JPEG2000PictureSubDescriptor
2070 JPEG2000PictureSubDescriptor::JPEG2000PictureSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), Rsize(0), Xsize(0), Ysize(0), XOsize(0), YOsize(0), XTsize(0), YTsize(0), XTOsize(0), YTOsize(0), Csize(0)
2073 m_UL = m_Dict->ul(MDD_JPEG2000PictureSubDescriptor);
2076 JPEG2000PictureSubDescriptor::JPEG2000PictureSubDescriptor(const JPEG2000PictureSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2079 m_UL = m_Dict->ul(MDD_JPEG2000PictureSubDescriptor);
2086 JPEG2000PictureSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
2089 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2090 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Rsize));
2091 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Xsize));
2092 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Ysize));
2093 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XOsize));
2094 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YOsize));
2095 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XTsize));
2096 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YTsize));
2097 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XTOsize));
2098 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YTOsize));
2099 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Csize));
2100 if ( ASDCP_SUCCESS(result) ) {
2101 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(JPEG2000PictureSubDescriptor, PictureComponentSizing));
2102 PictureComponentSizing.set_has_value( result == RESULT_OK );
2104 if ( ASDCP_SUCCESS(result) ) {
2105 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(JPEG2000PictureSubDescriptor, CodingStyleDefault));
2106 CodingStyleDefault.set_has_value( result == RESULT_OK );
2108 if ( ASDCP_SUCCESS(result) ) {
2109 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(JPEG2000PictureSubDescriptor, QuantizationDefault));
2110 QuantizationDefault.set_has_value( result == RESULT_OK );
2112 if ( ASDCP_SUCCESS(result) ) {
2113 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(JPEG2000PictureSubDescriptor, J2CLayout));
2114 J2CLayout.set_has_value( result == RESULT_OK );
2121 JPEG2000PictureSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2124 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2125 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Rsize));
2126 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Xsize));
2127 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Ysize));
2128 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XOsize));
2129 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YOsize));
2130 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XTsize));
2131 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YTsize));
2132 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XTOsize));
2133 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YTOsize));
2134 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Csize));
2135 if ( ASDCP_SUCCESS(result) && ! PictureComponentSizing.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, PictureComponentSizing));
2136 if ( ASDCP_SUCCESS(result) && ! CodingStyleDefault.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, CodingStyleDefault));
2137 if ( ASDCP_SUCCESS(result) && ! QuantizationDefault.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, QuantizationDefault));
2138 if ( ASDCP_SUCCESS(result) && ! J2CLayout.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, J2CLayout));
2144 JPEG2000PictureSubDescriptor::Copy(const JPEG2000PictureSubDescriptor& rhs)
2146 InterchangeObject::Copy(rhs);
2150 XOsize = rhs.XOsize;
2151 YOsize = rhs.YOsize;
2152 XTsize = rhs.XTsize;
2153 YTsize = rhs.YTsize;
2154 XTOsize = rhs.XTOsize;
2155 YTOsize = rhs.YTOsize;
2157 PictureComponentSizing = rhs.PictureComponentSizing;
2158 CodingStyleDefault = rhs.CodingStyleDefault;
2159 QuantizationDefault = rhs.QuantizationDefault;
2160 J2CLayout = rhs.J2CLayout;
2165 JPEG2000PictureSubDescriptor::Dump(FILE* stream)
2167 char identbuf[IdentBufferLen];
2173 InterchangeObject::Dump(stream);
2174 fprintf(stream, " %22s = %d\n", "Rsize", Rsize);
2175 fprintf(stream, " %22s = %d\n", "Xsize", Xsize);
2176 fprintf(stream, " %22s = %d\n", "Ysize", Ysize);
2177 fprintf(stream, " %22s = %d\n", "XOsize", XOsize);
2178 fprintf(stream, " %22s = %d\n", "YOsize", YOsize);
2179 fprintf(stream, " %22s = %d\n", "XTsize", XTsize);
2180 fprintf(stream, " %22s = %d\n", "YTsize", YTsize);
2181 fprintf(stream, " %22s = %d\n", "XTOsize", XTOsize);
2182 fprintf(stream, " %22s = %d\n", "YTOsize", YTOsize);
2183 fprintf(stream, " %22s = %d\n", "Csize", Csize);
2184 if ( ! PictureComponentSizing.empty() ) {
2185 fprintf(stream, " %22s = %s\n", "PictureComponentSizing", PictureComponentSizing.get().EncodeString(identbuf, IdentBufferLen));
2187 if ( ! CodingStyleDefault.empty() ) {
2188 fprintf(stream, " %22s = %s\n", "CodingStyleDefault", CodingStyleDefault.get().EncodeString(identbuf, IdentBufferLen));
2190 if ( ! QuantizationDefault.empty() ) {
2191 fprintf(stream, " %22s = %s\n", "QuantizationDefault", QuantizationDefault.get().EncodeString(identbuf, IdentBufferLen));
2193 if ( ! J2CLayout.empty() ) {
2194 fprintf(stream, " %22s = %s\n", "J2CLayout", J2CLayout.get().EncodeString(identbuf, IdentBufferLen));
2200 JPEG2000PictureSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
2202 return InterchangeObject::InitFromBuffer(p, l);
2207 JPEG2000PictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2209 return InterchangeObject::WriteToBuffer(Buffer);
2212 //------------------------------------------------------------------------------------------
2213 // CDCIEssenceDescriptor
2217 CDCIEssenceDescriptor::CDCIEssenceDescriptor(const Dictionary*& d) : GenericPictureEssenceDescriptor(d), m_Dict(d), ComponentDepth(0), HorizontalSubsampling(0)
2220 m_UL = m_Dict->ul(MDD_CDCIEssenceDescriptor);
2223 CDCIEssenceDescriptor::CDCIEssenceDescriptor(const CDCIEssenceDescriptor& rhs) : GenericPictureEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
2226 m_UL = m_Dict->ul(MDD_CDCIEssenceDescriptor);
2233 CDCIEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
2236 Result_t result = GenericPictureEssenceDescriptor::InitFromTLVSet(TLVSet);
2237 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, ComponentDepth));
2238 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, HorizontalSubsampling));
2239 if ( ASDCP_SUCCESS(result) ) {
2240 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, VerticalSubsampling));
2241 VerticalSubsampling.set_has_value( result == RESULT_OK );
2243 if ( ASDCP_SUCCESS(result) ) {
2244 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, ColorSiting));
2245 ColorSiting.set_has_value( result == RESULT_OK );
2247 if ( ASDCP_SUCCESS(result) ) {
2248 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, ReversedByteOrder));
2249 ReversedByteOrder.set_has_value( result == RESULT_OK );
2251 if ( ASDCP_SUCCESS(result) ) {
2252 result = TLVSet.ReadUi16(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, PaddingBits));
2253 PaddingBits.set_has_value( result == RESULT_OK );
2255 if ( ASDCP_SUCCESS(result) ) {
2256 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, AlphaSampleDepth));
2257 AlphaSampleDepth.set_has_value( result == RESULT_OK );
2259 if ( ASDCP_SUCCESS(result) ) {
2260 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, BlackRefLevel));
2261 BlackRefLevel.set_has_value( result == RESULT_OK );
2263 if ( ASDCP_SUCCESS(result) ) {
2264 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, WhiteReflevel));
2265 WhiteReflevel.set_has_value( result == RESULT_OK );
2267 if ( ASDCP_SUCCESS(result) ) {
2268 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, ColorRange));
2269 ColorRange.set_has_value( result == RESULT_OK );
2276 CDCIEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2279 Result_t result = GenericPictureEssenceDescriptor::WriteToTLVSet(TLVSet);
2280 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, ComponentDepth));
2281 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, HorizontalSubsampling));
2282 if ( ASDCP_SUCCESS(result) && ! VerticalSubsampling.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, VerticalSubsampling));
2283 if ( ASDCP_SUCCESS(result) && ! ColorSiting.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, ColorSiting));
2284 if ( ASDCP_SUCCESS(result) && ! ReversedByteOrder.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, ReversedByteOrder));
2285 if ( ASDCP_SUCCESS(result) && ! PaddingBits.empty() ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, PaddingBits));
2286 if ( ASDCP_SUCCESS(result) && ! AlphaSampleDepth.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, AlphaSampleDepth));
2287 if ( ASDCP_SUCCESS(result) && ! BlackRefLevel.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, BlackRefLevel));
2288 if ( ASDCP_SUCCESS(result) && ! WhiteReflevel.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, WhiteReflevel));
2289 if ( ASDCP_SUCCESS(result) && ! ColorRange.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, ColorRange));
2295 CDCIEssenceDescriptor::Copy(const CDCIEssenceDescriptor& rhs)
2297 GenericPictureEssenceDescriptor::Copy(rhs);
2298 ComponentDepth = rhs.ComponentDepth;
2299 HorizontalSubsampling = rhs.HorizontalSubsampling;
2300 VerticalSubsampling = rhs.VerticalSubsampling;
2301 ColorSiting = rhs.ColorSiting;
2302 ReversedByteOrder = rhs.ReversedByteOrder;
2303 PaddingBits = rhs.PaddingBits;
2304 AlphaSampleDepth = rhs.AlphaSampleDepth;
2305 BlackRefLevel = rhs.BlackRefLevel;
2306 WhiteReflevel = rhs.WhiteReflevel;
2307 ColorRange = rhs.ColorRange;
2312 CDCIEssenceDescriptor::Dump(FILE* stream)
2314 char identbuf[IdentBufferLen];
2320 GenericPictureEssenceDescriptor::Dump(stream);
2321 fprintf(stream, " %22s = %d\n", "ComponentDepth", ComponentDepth);
2322 fprintf(stream, " %22s = %d\n", "HorizontalSubsampling", HorizontalSubsampling);
2323 if ( ! VerticalSubsampling.empty() ) {
2324 fprintf(stream, " %22s = %d\n", "VerticalSubsampling", VerticalSubsampling.get());
2326 if ( ! ColorSiting.empty() ) {
2327 fprintf(stream, " %22s = %d\n", "ColorSiting", ColorSiting.get());
2329 if ( ! ReversedByteOrder.empty() ) {
2330 fprintf(stream, " %22s = %d\n", "ReversedByteOrder", ReversedByteOrder.get());
2332 if ( ! PaddingBits.empty() ) {
2333 fprintf(stream, " %22s = %d\n", "PaddingBits", PaddingBits.get());
2335 if ( ! AlphaSampleDepth.empty() ) {
2336 fprintf(stream, " %22s = %d\n", "AlphaSampleDepth", AlphaSampleDepth.get());
2338 if ( ! BlackRefLevel.empty() ) {
2339 fprintf(stream, " %22s = %d\n", "BlackRefLevel", BlackRefLevel.get());
2341 if ( ! WhiteReflevel.empty() ) {
2342 fprintf(stream, " %22s = %d\n", "WhiteReflevel", WhiteReflevel.get());
2344 if ( ! ColorRange.empty() ) {
2345 fprintf(stream, " %22s = %d\n", "ColorRange", ColorRange.get());
2351 CDCIEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
2353 return InterchangeObject::InitFromBuffer(p, l);
2358 CDCIEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2360 return InterchangeObject::WriteToBuffer(Buffer);
2363 //------------------------------------------------------------------------------------------
2364 // MPEG2VideoDescriptor
2368 MPEG2VideoDescriptor::MPEG2VideoDescriptor(const Dictionary*& d) : CDCIEssenceDescriptor(d), m_Dict(d)
2371 m_UL = m_Dict->ul(MDD_MPEG2VideoDescriptor);
2374 MPEG2VideoDescriptor::MPEG2VideoDescriptor(const MPEG2VideoDescriptor& rhs) : CDCIEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
2377 m_UL = m_Dict->ul(MDD_MPEG2VideoDescriptor);
2384 MPEG2VideoDescriptor::InitFromTLVSet(TLVReader& TLVSet)
2387 Result_t result = CDCIEssenceDescriptor::InitFromTLVSet(TLVSet);
2388 if ( ASDCP_SUCCESS(result) ) {
2389 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, SingleSequence));
2390 SingleSequence.set_has_value( result == RESULT_OK );
2392 if ( ASDCP_SUCCESS(result) ) {
2393 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, ConstantBFrames));
2394 ConstantBFrames.set_has_value( result == RESULT_OK );
2396 if ( ASDCP_SUCCESS(result) ) {
2397 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, CodedContentType));
2398 CodedContentType.set_has_value( result == RESULT_OK );
2400 if ( ASDCP_SUCCESS(result) ) {
2401 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, LowDelay));
2402 LowDelay.set_has_value( result == RESULT_OK );
2404 if ( ASDCP_SUCCESS(result) ) {
2405 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, ClosedGOP));
2406 ClosedGOP.set_has_value( result == RESULT_OK );
2408 if ( ASDCP_SUCCESS(result) ) {
2409 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, IdenticalGOP));
2410 IdenticalGOP.set_has_value( result == RESULT_OK );
2412 if ( ASDCP_SUCCESS(result) ) {
2413 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, MaxGOP));
2414 MaxGOP.set_has_value( result == RESULT_OK );
2416 if ( ASDCP_SUCCESS(result) ) {
2417 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, BPictureCount));
2418 BPictureCount.set_has_value( result == RESULT_OK );
2420 if ( ASDCP_SUCCESS(result) ) {
2421 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, BitRate));
2422 BitRate.set_has_value( result == RESULT_OK );
2424 if ( ASDCP_SUCCESS(result) ) {
2425 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, ProfileAndLevel));
2426 ProfileAndLevel.set_has_value( result == RESULT_OK );
2433 MPEG2VideoDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2436 Result_t result = CDCIEssenceDescriptor::WriteToTLVSet(TLVSet);
2437 if ( ASDCP_SUCCESS(result) && ! SingleSequence.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, SingleSequence));
2438 if ( ASDCP_SUCCESS(result) && ! ConstantBFrames.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, ConstantBFrames));
2439 if ( ASDCP_SUCCESS(result) && ! CodedContentType.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, CodedContentType));
2440 if ( ASDCP_SUCCESS(result) && ! LowDelay.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, LowDelay));
2441 if ( ASDCP_SUCCESS(result) && ! ClosedGOP.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, ClosedGOP));
2442 if ( ASDCP_SUCCESS(result) && ! IdenticalGOP.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, IdenticalGOP));
2443 if ( ASDCP_SUCCESS(result) && ! MaxGOP.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, MaxGOP));
2444 if ( ASDCP_SUCCESS(result) && ! BPictureCount.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, BPictureCount));
2445 if ( ASDCP_SUCCESS(result) && ! BitRate.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, BitRate));
2446 if ( ASDCP_SUCCESS(result) && ! ProfileAndLevel.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, ProfileAndLevel));
2452 MPEG2VideoDescriptor::Copy(const MPEG2VideoDescriptor& rhs)
2454 CDCIEssenceDescriptor::Copy(rhs);
2455 SingleSequence = rhs.SingleSequence;
2456 ConstantBFrames = rhs.ConstantBFrames;
2457 CodedContentType = rhs.CodedContentType;
2458 LowDelay = rhs.LowDelay;
2459 ClosedGOP = rhs.ClosedGOP;
2460 IdenticalGOP = rhs.IdenticalGOP;
2461 MaxGOP = rhs.MaxGOP;
2462 BPictureCount = rhs.BPictureCount;
2463 BitRate = rhs.BitRate;
2464 ProfileAndLevel = rhs.ProfileAndLevel;
2469 MPEG2VideoDescriptor::Dump(FILE* stream)
2471 char identbuf[IdentBufferLen];
2477 CDCIEssenceDescriptor::Dump(stream);
2478 if ( ! SingleSequence.empty() ) {
2479 fprintf(stream, " %22s = %d\n", "SingleSequence", SingleSequence.get());
2481 if ( ! ConstantBFrames.empty() ) {
2482 fprintf(stream, " %22s = %d\n", "ConstantBFrames", ConstantBFrames.get());
2484 if ( ! CodedContentType.empty() ) {
2485 fprintf(stream, " %22s = %d\n", "CodedContentType", CodedContentType.get());
2487 if ( ! LowDelay.empty() ) {
2488 fprintf(stream, " %22s = %d\n", "LowDelay", LowDelay.get());
2490 if ( ! ClosedGOP.empty() ) {
2491 fprintf(stream, " %22s = %d\n", "ClosedGOP", ClosedGOP.get());
2493 if ( ! IdenticalGOP.empty() ) {
2494 fprintf(stream, " %22s = %d\n", "IdenticalGOP", IdenticalGOP.get());
2496 if ( ! MaxGOP.empty() ) {
2497 fprintf(stream, " %22s = %d\n", "MaxGOP", MaxGOP.get());
2499 if ( ! BPictureCount.empty() ) {
2500 fprintf(stream, " %22s = %d\n", "BPictureCount", BPictureCount.get());
2502 if ( ! BitRate.empty() ) {
2503 fprintf(stream, " %22s = %d\n", "BitRate", BitRate.get());
2505 if ( ! ProfileAndLevel.empty() ) {
2506 fprintf(stream, " %22s = %d\n", "ProfileAndLevel", ProfileAndLevel.get());
2512 MPEG2VideoDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
2514 return InterchangeObject::InitFromBuffer(p, l);
2519 MPEG2VideoDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2521 return InterchangeObject::WriteToBuffer(Buffer);
2524 //------------------------------------------------------------------------------------------
2529 DMSegment::DMSegment(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), EventStartPosition(0), Duration(0)
2532 m_UL = m_Dict->ul(MDD_DMSegment);
2535 DMSegment::DMSegment(const DMSegment& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2538 m_UL = m_Dict->ul(MDD_DMSegment);
2545 DMSegment::InitFromTLVSet(TLVReader& TLVSet)
2548 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2549 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DMSegment, DataDefinition));
2550 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(DMSegment, EventStartPosition));
2551 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(DMSegment, Duration));
2552 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DMSegment, EventComment));
2553 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DMSegment, DMFramework));
2559 DMSegment::WriteToTLVSet(TLVWriter& TLVSet)
2562 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2563 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DMSegment, DataDefinition));
2564 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(DMSegment, EventStartPosition));
2565 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(DMSegment, Duration));
2566 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DMSegment, EventComment));
2567 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DMSegment, DMFramework));
2573 DMSegment::Copy(const DMSegment& rhs)
2575 InterchangeObject::Copy(rhs);
2576 DataDefinition = rhs.DataDefinition;
2577 EventStartPosition = rhs.EventStartPosition;
2578 Duration = rhs.Duration;
2579 EventComment = rhs.EventComment;
2580 DMFramework = rhs.DMFramework;
2585 DMSegment::Dump(FILE* stream)
2587 char identbuf[IdentBufferLen];
2593 InterchangeObject::Dump(stream);
2594 fprintf(stream, " %22s = %s\n", "DataDefinition", DataDefinition.EncodeString(identbuf, IdentBufferLen));
2595 fprintf(stream, " %22s = %s\n", "EventStartPosition", i64sz(EventStartPosition, identbuf));
2596 fprintf(stream, " %22s = %s\n", "Duration", i64sz(Duration, identbuf));
2597 fprintf(stream, " %22s = %s\n", "EventComment", EventComment.EncodeString(identbuf, IdentBufferLen));
2598 fprintf(stream, " %22s = %s\n", "DMFramework", DMFramework.EncodeString(identbuf, IdentBufferLen));
2603 DMSegment::InitFromBuffer(const byte_t* p, ui32_t l)
2605 return InterchangeObject::InitFromBuffer(p, l);
2610 DMSegment::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2612 return InterchangeObject::WriteToBuffer(Buffer);
2615 //------------------------------------------------------------------------------------------
2616 // CryptographicFramework
2620 CryptographicFramework::CryptographicFramework(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
2623 m_UL = m_Dict->ul(MDD_CryptographicFramework);
2626 CryptographicFramework::CryptographicFramework(const CryptographicFramework& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2629 m_UL = m_Dict->ul(MDD_CryptographicFramework);
2636 CryptographicFramework::InitFromTLVSet(TLVReader& TLVSet)
2639 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2640 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicFramework, ContextSR));
2646 CryptographicFramework::WriteToTLVSet(TLVWriter& TLVSet)
2649 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2650 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicFramework, ContextSR));
2656 CryptographicFramework::Copy(const CryptographicFramework& rhs)
2658 InterchangeObject::Copy(rhs);
2659 ContextSR = rhs.ContextSR;
2664 CryptographicFramework::Dump(FILE* stream)
2666 char identbuf[IdentBufferLen];
2672 InterchangeObject::Dump(stream);
2673 fprintf(stream, " %22s = %s\n", "ContextSR", ContextSR.EncodeString(identbuf, IdentBufferLen));
2678 CryptographicFramework::InitFromBuffer(const byte_t* p, ui32_t l)
2680 return InterchangeObject::InitFromBuffer(p, l);
2685 CryptographicFramework::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2687 return InterchangeObject::WriteToBuffer(Buffer);
2690 //------------------------------------------------------------------------------------------
2691 // CryptographicContext
2695 CryptographicContext::CryptographicContext(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
2698 m_UL = m_Dict->ul(MDD_CryptographicContext);
2701 CryptographicContext::CryptographicContext(const CryptographicContext& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2704 m_UL = m_Dict->ul(MDD_CryptographicContext);
2711 CryptographicContext::InitFromTLVSet(TLVReader& TLVSet)
2714 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2715 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, ContextID));
2716 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, SourceEssenceContainer));
2717 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, CipherAlgorithm));
2718 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, MICAlgorithm));
2719 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, CryptographicKeyID));
2725 CryptographicContext::WriteToTLVSet(TLVWriter& TLVSet)
2728 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2729 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, ContextID));
2730 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, SourceEssenceContainer));
2731 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, CipherAlgorithm));
2732 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, MICAlgorithm));
2733 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, CryptographicKeyID));
2739 CryptographicContext::Copy(const CryptographicContext& rhs)
2741 InterchangeObject::Copy(rhs);
2742 ContextID = rhs.ContextID;
2743 SourceEssenceContainer = rhs.SourceEssenceContainer;
2744 CipherAlgorithm = rhs.CipherAlgorithm;
2745 MICAlgorithm = rhs.MICAlgorithm;
2746 CryptographicKeyID = rhs.CryptographicKeyID;
2751 CryptographicContext::Dump(FILE* stream)
2753 char identbuf[IdentBufferLen];
2759 InterchangeObject::Dump(stream);
2760 fprintf(stream, " %22s = %s\n", "ContextID", ContextID.EncodeString(identbuf, IdentBufferLen));
2761 fprintf(stream, " %22s = %s\n", "SourceEssenceContainer", SourceEssenceContainer.EncodeString(identbuf, IdentBufferLen));
2762 fprintf(stream, " %22s = %s\n", "CipherAlgorithm", CipherAlgorithm.EncodeString(identbuf, IdentBufferLen));
2763 fprintf(stream, " %22s = %s\n", "MICAlgorithm", MICAlgorithm.EncodeString(identbuf, IdentBufferLen));
2764 fprintf(stream, " %22s = %s\n", "CryptographicKeyID", CryptographicKeyID.EncodeString(identbuf, IdentBufferLen));
2769 CryptographicContext::InitFromBuffer(const byte_t* p, ui32_t l)
2771 return InterchangeObject::InitFromBuffer(p, l);
2776 CryptographicContext::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2778 return InterchangeObject::WriteToBuffer(Buffer);
2781 //------------------------------------------------------------------------------------------
2782 // GenericDataEssenceDescriptor
2786 GenericDataEssenceDescriptor::GenericDataEssenceDescriptor(const Dictionary*& d) : FileDescriptor(d), m_Dict(d)
2789 m_UL = m_Dict->ul(MDD_GenericDataEssenceDescriptor);
2792 GenericDataEssenceDescriptor::GenericDataEssenceDescriptor(const GenericDataEssenceDescriptor& rhs) : FileDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
2795 m_UL = m_Dict->ul(MDD_GenericDataEssenceDescriptor);
2802 GenericDataEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
2805 Result_t result = FileDescriptor::InitFromTLVSet(TLVSet);
2806 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericDataEssenceDescriptor, DataEssenceCoding));
2812 GenericDataEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2815 Result_t result = FileDescriptor::WriteToTLVSet(TLVSet);
2816 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericDataEssenceDescriptor, DataEssenceCoding));
2822 GenericDataEssenceDescriptor::Copy(const GenericDataEssenceDescriptor& rhs)
2824 FileDescriptor::Copy(rhs);
2825 DataEssenceCoding = rhs.DataEssenceCoding;
2830 GenericDataEssenceDescriptor::Dump(FILE* stream)
2832 char identbuf[IdentBufferLen];
2838 FileDescriptor::Dump(stream);
2839 fprintf(stream, " %22s = %s\n", "DataEssenceCoding", DataEssenceCoding.EncodeString(identbuf, IdentBufferLen));
2844 GenericDataEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
2846 return InterchangeObject::InitFromBuffer(p, l);
2851 GenericDataEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2853 return InterchangeObject::WriteToBuffer(Buffer);
2856 //------------------------------------------------------------------------------------------
2857 // TimedTextDescriptor
2861 TimedTextDescriptor::TimedTextDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d)
2864 m_UL = m_Dict->ul(MDD_TimedTextDescriptor);
2867 TimedTextDescriptor::TimedTextDescriptor(const TimedTextDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
2870 m_UL = m_Dict->ul(MDD_TimedTextDescriptor);
2877 TimedTextDescriptor::InitFromTLVSet(TLVReader& TLVSet)
2880 Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet);
2881 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, ResourceID));
2882 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, UCSEncoding));
2883 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, NamespaceURI));
2884 if ( ASDCP_SUCCESS(result) ) {
2885 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(TimedTextDescriptor, RFC5646LanguageTagList));
2886 RFC5646LanguageTagList.set_has_value( result == RESULT_OK );
2893 TimedTextDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2896 Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet);
2897 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, ResourceID));
2898 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, UCSEncoding));
2899 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, NamespaceURI));
2900 if ( ASDCP_SUCCESS(result) && ! RFC5646LanguageTagList.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(TimedTextDescriptor, RFC5646LanguageTagList));
2906 TimedTextDescriptor::Copy(const TimedTextDescriptor& rhs)
2908 GenericDataEssenceDescriptor::Copy(rhs);
2909 ResourceID = rhs.ResourceID;
2910 UCSEncoding = rhs.UCSEncoding;
2911 NamespaceURI = rhs.NamespaceURI;
2912 RFC5646LanguageTagList = rhs.RFC5646LanguageTagList;
2917 TimedTextDescriptor::Dump(FILE* stream)
2919 char identbuf[IdentBufferLen];
2925 GenericDataEssenceDescriptor::Dump(stream);
2926 fprintf(stream, " %22s = %s\n", "ResourceID", ResourceID.EncodeString(identbuf, IdentBufferLen));
2927 fprintf(stream, " %22s = %s\n", "UCSEncoding", UCSEncoding.EncodeString(identbuf, IdentBufferLen));
2928 fprintf(stream, " %22s = %s\n", "NamespaceURI", NamespaceURI.EncodeString(identbuf, IdentBufferLen));
2929 if ( ! RFC5646LanguageTagList.empty() ) {
2930 fprintf(stream, " %22s = %s\n", "RFC5646LanguageTagList", RFC5646LanguageTagList.get().EncodeString(identbuf, IdentBufferLen));
2936 TimedTextDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
2938 return InterchangeObject::InitFromBuffer(p, l);
2943 TimedTextDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2945 return InterchangeObject::WriteToBuffer(Buffer);
2948 //------------------------------------------------------------------------------------------
2949 // TimedTextResourceSubDescriptor
2953 TimedTextResourceSubDescriptor::TimedTextResourceSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), EssenceStreamID(0)
2956 m_UL = m_Dict->ul(MDD_TimedTextResourceSubDescriptor);
2959 TimedTextResourceSubDescriptor::TimedTextResourceSubDescriptor(const TimedTextResourceSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2962 m_UL = m_Dict->ul(MDD_TimedTextResourceSubDescriptor);
2969 TimedTextResourceSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
2972 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2973 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextResourceSubDescriptor, AncillaryResourceID));
2974 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextResourceSubDescriptor, MIMEMediaType));
2975 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(TimedTextResourceSubDescriptor, EssenceStreamID));
2981 TimedTextResourceSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2984 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2985 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextResourceSubDescriptor, AncillaryResourceID));
2986 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextResourceSubDescriptor, MIMEMediaType));
2987 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(TimedTextResourceSubDescriptor, EssenceStreamID));
2993 TimedTextResourceSubDescriptor::Copy(const TimedTextResourceSubDescriptor& rhs)
2995 InterchangeObject::Copy(rhs);
2996 AncillaryResourceID = rhs.AncillaryResourceID;
2997 MIMEMediaType = rhs.MIMEMediaType;
2998 EssenceStreamID = rhs.EssenceStreamID;
3003 TimedTextResourceSubDescriptor::Dump(FILE* stream)
3005 char identbuf[IdentBufferLen];
3011 InterchangeObject::Dump(stream);
3012 fprintf(stream, " %22s = %s\n", "AncillaryResourceID", AncillaryResourceID.EncodeString(identbuf, IdentBufferLen));
3013 fprintf(stream, " %22s = %s\n", "MIMEMediaType", MIMEMediaType.EncodeString(identbuf, IdentBufferLen));
3014 fprintf(stream, " %22s = %d\n", "EssenceStreamID", EssenceStreamID);
3019 TimedTextResourceSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3021 return InterchangeObject::InitFromBuffer(p, l);
3026 TimedTextResourceSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3028 return InterchangeObject::WriteToBuffer(Buffer);
3031 //------------------------------------------------------------------------------------------
3032 // StereoscopicPictureSubDescriptor
3036 StereoscopicPictureSubDescriptor::StereoscopicPictureSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
3039 m_UL = m_Dict->ul(MDD_StereoscopicPictureSubDescriptor);
3042 StereoscopicPictureSubDescriptor::StereoscopicPictureSubDescriptor(const StereoscopicPictureSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3045 m_UL = m_Dict->ul(MDD_StereoscopicPictureSubDescriptor);
3052 StereoscopicPictureSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3055 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3061 StereoscopicPictureSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3064 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3070 StereoscopicPictureSubDescriptor::Copy(const StereoscopicPictureSubDescriptor& rhs)
3072 InterchangeObject::Copy(rhs);
3077 StereoscopicPictureSubDescriptor::Dump(FILE* stream)
3079 char identbuf[IdentBufferLen];
3085 InterchangeObject::Dump(stream);
3090 StereoscopicPictureSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3092 return InterchangeObject::InitFromBuffer(p, l);
3097 StereoscopicPictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3099 return InterchangeObject::WriteToBuffer(Buffer);
3102 //------------------------------------------------------------------------------------------
3103 // ContainerConstraintSubDescriptor
3107 ContainerConstraintSubDescriptor::ContainerConstraintSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
3110 m_UL = m_Dict->ul(MDD_ContainerConstraintSubDescriptor);
3113 ContainerConstraintSubDescriptor::ContainerConstraintSubDescriptor(const ContainerConstraintSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3116 m_UL = m_Dict->ul(MDD_ContainerConstraintSubDescriptor);
3123 ContainerConstraintSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3126 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3132 ContainerConstraintSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3135 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3141 ContainerConstraintSubDescriptor::Copy(const ContainerConstraintSubDescriptor& rhs)
3143 InterchangeObject::Copy(rhs);
3148 ContainerConstraintSubDescriptor::Dump(FILE* stream)
3150 char identbuf[IdentBufferLen];
3156 InterchangeObject::Dump(stream);
3161 ContainerConstraintSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3163 return InterchangeObject::InitFromBuffer(p, l);
3168 ContainerConstraintSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3170 return InterchangeObject::WriteToBuffer(Buffer);
3173 //------------------------------------------------------------------------------------------
3178 NetworkLocator::NetworkLocator(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
3181 m_UL = m_Dict->ul(MDD_NetworkLocator);
3184 NetworkLocator::NetworkLocator(const NetworkLocator& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3187 m_UL = m_Dict->ul(MDD_NetworkLocator);
3194 NetworkLocator::InitFromTLVSet(TLVReader& TLVSet)
3197 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3198 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(NetworkLocator, URLString));
3204 NetworkLocator::WriteToTLVSet(TLVWriter& TLVSet)
3207 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3208 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(NetworkLocator, URLString));
3214 NetworkLocator::Copy(const NetworkLocator& rhs)
3216 InterchangeObject::Copy(rhs);
3217 URLString = rhs.URLString;
3222 NetworkLocator::Dump(FILE* stream)
3224 char identbuf[IdentBufferLen];
3230 InterchangeObject::Dump(stream);
3231 fprintf(stream, " %22s = %s\n", "URLString", URLString.EncodeString(identbuf, IdentBufferLen));
3236 NetworkLocator::InitFromBuffer(const byte_t* p, ui32_t l)
3238 return InterchangeObject::InitFromBuffer(p, l);
3243 NetworkLocator::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3245 return InterchangeObject::WriteToBuffer(Buffer);
3248 //------------------------------------------------------------------------------------------
3249 // MCALabelSubDescriptor
3253 MCALabelSubDescriptor::MCALabelSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
3256 m_UL = m_Dict->ul(MDD_MCALabelSubDescriptor);
3259 MCALabelSubDescriptor::MCALabelSubDescriptor(const MCALabelSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3262 m_UL = m_Dict->ul(MDD_MCALabelSubDescriptor);
3269 MCALabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3272 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3273 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(MCALabelSubDescriptor, MCALabelDictionaryID));
3274 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(MCALabelSubDescriptor, MCALinkID));
3275 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(MCALabelSubDescriptor, MCATagSymbol));
3276 if ( ASDCP_SUCCESS(result) ) {
3277 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCATagName));
3278 MCATagName.set_has_value( result == RESULT_OK );
3280 if ( ASDCP_SUCCESS(result) ) {
3281 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAChannelID));
3282 MCAChannelID.set_has_value( result == RESULT_OK );
3284 if ( ASDCP_SUCCESS(result) ) {
3285 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, RFC5646SpokenLanguage));
3286 RFC5646SpokenLanguage.set_has_value( result == RESULT_OK );
3288 if ( ASDCP_SUCCESS(result) ) {
3289 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCATitle));
3290 MCATitle.set_has_value( result == RESULT_OK );
3292 if ( ASDCP_SUCCESS(result) ) {
3293 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCATitleVersion));
3294 MCATitleVersion.set_has_value( result == RESULT_OK );
3296 if ( ASDCP_SUCCESS(result) ) {
3297 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCATitleSubVersion));
3298 MCATitleSubVersion.set_has_value( result == RESULT_OK );
3300 if ( ASDCP_SUCCESS(result) ) {
3301 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAEpisode));
3302 MCAEpisode.set_has_value( result == RESULT_OK );
3304 if ( ASDCP_SUCCESS(result) ) {
3305 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAPartitionKind));
3306 MCAPartitionKind.set_has_value( result == RESULT_OK );
3308 if ( ASDCP_SUCCESS(result) ) {
3309 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAPartitionNumber));
3310 MCAPartitionNumber.set_has_value( result == RESULT_OK );
3312 if ( ASDCP_SUCCESS(result) ) {
3313 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAAudioContentKind));
3314 MCAAudioContentKind.set_has_value( result == RESULT_OK );
3316 if ( ASDCP_SUCCESS(result) ) {
3317 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAAudioElementKind));
3318 MCAAudioElementKind.set_has_value( result == RESULT_OK );
3325 MCALabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3328 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3329 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(MCALabelSubDescriptor, MCALabelDictionaryID));
3330 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(MCALabelSubDescriptor, MCALinkID));
3331 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(MCALabelSubDescriptor, MCATagSymbol));
3332 if ( ASDCP_SUCCESS(result) && ! MCATagName.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCATagName));
3333 if ( ASDCP_SUCCESS(result) && ! MCAChannelID.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAChannelID));
3334 if ( ASDCP_SUCCESS(result) && ! RFC5646SpokenLanguage.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, RFC5646SpokenLanguage));
3335 if ( ASDCP_SUCCESS(result) && ! MCATitle.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCATitle));
3336 if ( ASDCP_SUCCESS(result) && ! MCATitleVersion.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCATitleVersion));
3337 if ( ASDCP_SUCCESS(result) && ! MCATitleSubVersion.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCATitleSubVersion));
3338 if ( ASDCP_SUCCESS(result) && ! MCAEpisode.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAEpisode));
3339 if ( ASDCP_SUCCESS(result) && ! MCAPartitionKind.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAPartitionKind));
3340 if ( ASDCP_SUCCESS(result) && ! MCAPartitionNumber.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAPartitionNumber));
3341 if ( ASDCP_SUCCESS(result) && ! MCAAudioContentKind.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAAudioContentKind));
3342 if ( ASDCP_SUCCESS(result) && ! MCAAudioElementKind.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAAudioElementKind));
3348 MCALabelSubDescriptor::Copy(const MCALabelSubDescriptor& rhs)
3350 InterchangeObject::Copy(rhs);
3351 MCALabelDictionaryID = rhs.MCALabelDictionaryID;
3352 MCALinkID = rhs.MCALinkID;
3353 MCATagSymbol = rhs.MCATagSymbol;
3354 MCATagName = rhs.MCATagName;
3355 MCAChannelID = rhs.MCAChannelID;
3356 RFC5646SpokenLanguage = rhs.RFC5646SpokenLanguage;
3357 MCATitle = rhs.MCATitle;
3358 MCATitleVersion = rhs.MCATitleVersion;
3359 MCATitleSubVersion = rhs.MCATitleSubVersion;
3360 MCAEpisode = rhs.MCAEpisode;
3361 MCAPartitionKind = rhs.MCAPartitionKind;
3362 MCAPartitionNumber = rhs.MCAPartitionNumber;
3363 MCAAudioContentKind = rhs.MCAAudioContentKind;
3364 MCAAudioElementKind = rhs.MCAAudioElementKind;
3369 MCALabelSubDescriptor::Dump(FILE* stream)
3371 char identbuf[IdentBufferLen];
3377 InterchangeObject::Dump(stream);
3378 fprintf(stream, " %22s = %s\n", "MCALabelDictionaryID", MCALabelDictionaryID.EncodeString(identbuf, IdentBufferLen));
3379 fprintf(stream, " %22s = %s\n", "MCALinkID", MCALinkID.EncodeString(identbuf, IdentBufferLen));
3380 fprintf(stream, " %22s = %s\n", "MCATagSymbol", MCATagSymbol.EncodeString(identbuf, IdentBufferLen));
3381 if ( ! MCATagName.empty() ) {
3382 fprintf(stream, " %22s = %s\n", "MCATagName", MCATagName.get().EncodeString(identbuf, IdentBufferLen));
3384 if ( ! MCAChannelID.empty() ) {
3385 fprintf(stream, " %22s = %d\n", "MCAChannelID", MCAChannelID.get());
3387 if ( ! RFC5646SpokenLanguage.empty() ) {
3388 fprintf(stream, " %22s = %s\n", "RFC5646SpokenLanguage", RFC5646SpokenLanguage.get().EncodeString(identbuf, IdentBufferLen));
3390 if ( ! MCATitle.empty() ) {
3391 fprintf(stream, " %22s = %s\n", "MCATitle", MCATitle.get().EncodeString(identbuf, IdentBufferLen));
3393 if ( ! MCATitleVersion.empty() ) {
3394 fprintf(stream, " %22s = %s\n", "MCATitleVersion", MCATitleVersion.get().EncodeString(identbuf, IdentBufferLen));
3396 if ( ! MCATitleSubVersion.empty() ) {
3397 fprintf(stream, " %22s = %s\n", "MCATitleSubVersion", MCATitleSubVersion.get().EncodeString(identbuf, IdentBufferLen));
3399 if ( ! MCAEpisode.empty() ) {
3400 fprintf(stream, " %22s = %s\n", "MCAEpisode", MCAEpisode.get().EncodeString(identbuf, IdentBufferLen));
3402 if ( ! MCAPartitionKind.empty() ) {
3403 fprintf(stream, " %22s = %s\n", "MCAPartitionKind", MCAPartitionKind.get().EncodeString(identbuf, IdentBufferLen));
3405 if ( ! MCAPartitionNumber.empty() ) {
3406 fprintf(stream, " %22s = %s\n", "MCAPartitionNumber", MCAPartitionNumber.get().EncodeString(identbuf, IdentBufferLen));
3408 if ( ! MCAAudioContentKind.empty() ) {
3409 fprintf(stream, " %22s = %s\n", "MCAAudioContentKind", MCAAudioContentKind.get().EncodeString(identbuf, IdentBufferLen));
3411 if ( ! MCAAudioElementKind.empty() ) {
3412 fprintf(stream, " %22s = %s\n", "MCAAudioElementKind", MCAAudioElementKind.get().EncodeString(identbuf, IdentBufferLen));
3418 MCALabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3420 return InterchangeObject::InitFromBuffer(p, l);
3425 MCALabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3427 return InterchangeObject::WriteToBuffer(Buffer);
3430 //------------------------------------------------------------------------------------------
3431 // AudioChannelLabelSubDescriptor
3435 AudioChannelLabelSubDescriptor::AudioChannelLabelSubDescriptor(const Dictionary*& d) : MCALabelSubDescriptor(d), m_Dict(d)
3438 m_UL = m_Dict->ul(MDD_AudioChannelLabelSubDescriptor);
3441 AudioChannelLabelSubDescriptor::AudioChannelLabelSubDescriptor(const AudioChannelLabelSubDescriptor& rhs) : MCALabelSubDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3444 m_UL = m_Dict->ul(MDD_AudioChannelLabelSubDescriptor);
3451 AudioChannelLabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3454 Result_t result = MCALabelSubDescriptor::InitFromTLVSet(TLVSet);
3455 if ( ASDCP_SUCCESS(result) ) {
3456 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(AudioChannelLabelSubDescriptor, SoundfieldGroupLinkID));
3457 SoundfieldGroupLinkID.set_has_value( result == RESULT_OK );
3464 AudioChannelLabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3467 Result_t result = MCALabelSubDescriptor::WriteToTLVSet(TLVSet);
3468 if ( ASDCP_SUCCESS(result) && ! SoundfieldGroupLinkID.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(AudioChannelLabelSubDescriptor, SoundfieldGroupLinkID));
3474 AudioChannelLabelSubDescriptor::Copy(const AudioChannelLabelSubDescriptor& rhs)
3476 MCALabelSubDescriptor::Copy(rhs);
3477 SoundfieldGroupLinkID = rhs.SoundfieldGroupLinkID;
3482 AudioChannelLabelSubDescriptor::Dump(FILE* stream)
3484 char identbuf[IdentBufferLen];
3490 MCALabelSubDescriptor::Dump(stream);
3491 if ( ! SoundfieldGroupLinkID.empty() ) {
3492 fprintf(stream, " %22s = %s\n", "SoundfieldGroupLinkID", SoundfieldGroupLinkID.get().EncodeString(identbuf, IdentBufferLen));
3498 AudioChannelLabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3500 return InterchangeObject::InitFromBuffer(p, l);
3505 AudioChannelLabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3507 return InterchangeObject::WriteToBuffer(Buffer);
3510 //------------------------------------------------------------------------------------------
3511 // SoundfieldGroupLabelSubDescriptor
3515 SoundfieldGroupLabelSubDescriptor::SoundfieldGroupLabelSubDescriptor(const Dictionary*& d) : MCALabelSubDescriptor(d), m_Dict(d)
3518 m_UL = m_Dict->ul(MDD_SoundfieldGroupLabelSubDescriptor);
3521 SoundfieldGroupLabelSubDescriptor::SoundfieldGroupLabelSubDescriptor(const SoundfieldGroupLabelSubDescriptor& rhs) : MCALabelSubDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3524 m_UL = m_Dict->ul(MDD_SoundfieldGroupLabelSubDescriptor);
3531 SoundfieldGroupLabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3534 Result_t result = MCALabelSubDescriptor::InitFromTLVSet(TLVSet);
3535 if ( ASDCP_SUCCESS(result) ) {
3536 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(SoundfieldGroupLabelSubDescriptor, GroupOfSoundfieldGroupsLinkID));
3543 SoundfieldGroupLabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3546 Result_t result = MCALabelSubDescriptor::WriteToTLVSet(TLVSet);
3547 if ( ASDCP_SUCCESS(result) && ! GroupOfSoundfieldGroupsLinkID.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(SoundfieldGroupLabelSubDescriptor, GroupOfSoundfieldGroupsLinkID));
3553 SoundfieldGroupLabelSubDescriptor::Copy(const SoundfieldGroupLabelSubDescriptor& rhs)
3555 MCALabelSubDescriptor::Copy(rhs);
3556 GroupOfSoundfieldGroupsLinkID = rhs.GroupOfSoundfieldGroupsLinkID;
3561 SoundfieldGroupLabelSubDescriptor::Dump(FILE* stream)
3563 char identbuf[IdentBufferLen];
3569 MCALabelSubDescriptor::Dump(stream);
3570 if ( ! GroupOfSoundfieldGroupsLinkID.empty() ) {
3571 fprintf(stream, " %22s:\n", "GroupOfSoundfieldGroupsLinkID");
3572 GroupOfSoundfieldGroupsLinkID.get().Dump(stream);
3578 SoundfieldGroupLabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3580 return InterchangeObject::InitFromBuffer(p, l);
3585 SoundfieldGroupLabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3587 return InterchangeObject::WriteToBuffer(Buffer);
3590 //------------------------------------------------------------------------------------------
3591 // GroupOfSoundfieldGroupsLabelSubDescriptor
3595 GroupOfSoundfieldGroupsLabelSubDescriptor::GroupOfSoundfieldGroupsLabelSubDescriptor(const Dictionary*& d) : MCALabelSubDescriptor(d), m_Dict(d)
3598 m_UL = m_Dict->ul(MDD_GroupOfSoundfieldGroupsLabelSubDescriptor);
3601 GroupOfSoundfieldGroupsLabelSubDescriptor::GroupOfSoundfieldGroupsLabelSubDescriptor(const GroupOfSoundfieldGroupsLabelSubDescriptor& rhs) : MCALabelSubDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3604 m_UL = m_Dict->ul(MDD_GroupOfSoundfieldGroupsLabelSubDescriptor);
3611 GroupOfSoundfieldGroupsLabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3614 Result_t result = MCALabelSubDescriptor::InitFromTLVSet(TLVSet);
3620 GroupOfSoundfieldGroupsLabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3623 Result_t result = MCALabelSubDescriptor::WriteToTLVSet(TLVSet);
3629 GroupOfSoundfieldGroupsLabelSubDescriptor::Copy(const GroupOfSoundfieldGroupsLabelSubDescriptor& rhs)
3631 MCALabelSubDescriptor::Copy(rhs);
3636 GroupOfSoundfieldGroupsLabelSubDescriptor::Dump(FILE* stream)
3638 char identbuf[IdentBufferLen];
3644 MCALabelSubDescriptor::Dump(stream);
3649 GroupOfSoundfieldGroupsLabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3651 return InterchangeObject::InitFromBuffer(p, l);
3656 GroupOfSoundfieldGroupsLabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3658 return InterchangeObject::WriteToBuffer(Buffer);
3661 //------------------------------------------------------------------------------------------
3666 DCDataDescriptor::DCDataDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d)
3669 m_UL = m_Dict->ul(MDD_DCDataDescriptor);
3672 DCDataDescriptor::DCDataDescriptor(const DCDataDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3675 m_UL = m_Dict->ul(MDD_DCDataDescriptor);
3682 DCDataDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3685 Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet);
3691 DCDataDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3694 Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet);
3700 DCDataDescriptor::Copy(const DCDataDescriptor& rhs)
3702 GenericDataEssenceDescriptor::Copy(rhs);
3707 DCDataDescriptor::Dump(FILE* stream)
3709 char identbuf[IdentBufferLen];
3715 GenericDataEssenceDescriptor::Dump(stream);
3720 DCDataDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3722 return InterchangeObject::InitFromBuffer(p, l);
3727 DCDataDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3729 return InterchangeObject::WriteToBuffer(Buffer);
3732 //------------------------------------------------------------------------------------------
3733 // PrivateDCDataDescriptor
3737 PrivateDCDataDescriptor::PrivateDCDataDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d)
3740 m_UL = m_Dict->ul(MDD_PrivateDCDataDescriptor);
3743 PrivateDCDataDescriptor::PrivateDCDataDescriptor(const PrivateDCDataDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3746 m_UL = m_Dict->ul(MDD_PrivateDCDataDescriptor);
3753 PrivateDCDataDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3756 Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet);
3762 PrivateDCDataDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3765 Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet);
3771 PrivateDCDataDescriptor::Copy(const PrivateDCDataDescriptor& rhs)
3773 GenericDataEssenceDescriptor::Copy(rhs);
3778 PrivateDCDataDescriptor::Dump(FILE* stream)
3780 char identbuf[IdentBufferLen];
3786 GenericDataEssenceDescriptor::Dump(stream);
3791 PrivateDCDataDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3793 return InterchangeObject::InitFromBuffer(p, l);
3798 PrivateDCDataDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3800 return InterchangeObject::WriteToBuffer(Buffer);
3803 //------------------------------------------------------------------------------------------
3804 // DolbyAtmosSubDescriptor
3808 DolbyAtmosSubDescriptor::DolbyAtmosSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), FirstFrame(0), MaxChannelCount(0), MaxObjectCount(0), AtmosVersion(0)
3811 m_UL = m_Dict->ul(MDD_DolbyAtmosSubDescriptor);
3814 DolbyAtmosSubDescriptor::DolbyAtmosSubDescriptor(const DolbyAtmosSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3817 m_UL = m_Dict->ul(MDD_DolbyAtmosSubDescriptor);
3824 DolbyAtmosSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3827 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3828 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, AtmosID));
3829 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, FirstFrame));
3830 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, MaxChannelCount));
3831 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, MaxObjectCount));
3832 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, AtmosVersion));
3838 DolbyAtmosSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3841 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3842 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, AtmosID));
3843 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, FirstFrame));
3844 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, MaxChannelCount));
3845 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, MaxObjectCount));
3846 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, AtmosVersion));
3852 DolbyAtmosSubDescriptor::Copy(const DolbyAtmosSubDescriptor& rhs)
3854 InterchangeObject::Copy(rhs);
3855 AtmosID = rhs.AtmosID;
3856 FirstFrame = rhs.FirstFrame;
3857 MaxChannelCount = rhs.MaxChannelCount;
3858 MaxObjectCount = rhs.MaxObjectCount;
3859 AtmosVersion = rhs.AtmosVersion;
3864 DolbyAtmosSubDescriptor::Dump(FILE* stream)
3866 char identbuf[IdentBufferLen];
3872 InterchangeObject::Dump(stream);
3873 fprintf(stream, " %22s = %s\n", "AtmosID", AtmosID.EncodeString(identbuf, IdentBufferLen));
3874 fprintf(stream, " %22s = %d\n", "FirstFrame", FirstFrame);
3875 fprintf(stream, " %22s = %d\n", "MaxChannelCount", MaxChannelCount);
3876 fprintf(stream, " %22s = %d\n", "MaxObjectCount", MaxObjectCount);
3877 fprintf(stream, " %22s = %d\n", "AtmosVersion", AtmosVersion);
3882 DolbyAtmosSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3884 return InterchangeObject::InitFromBuffer(p, l);
3889 DolbyAtmosSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3891 return InterchangeObject::WriteToBuffer(Buffer);
3894 //------------------------------------------------------------------------------------------
3895 // ACESPictureSubDescriptor
3899 ACESPictureSubDescriptor::ACESPictureSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
3902 m_UL = m_Dict->ul(MDD_ACESPictureSubDescriptor);
3905 ACESPictureSubDescriptor::ACESPictureSubDescriptor(const ACESPictureSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3908 m_UL = m_Dict->ul(MDD_ACESPictureSubDescriptor);
3915 ACESPictureSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3918 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3919 if ( ASDCP_SUCCESS(result) ) {
3920 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(ACESPictureSubDescriptor, ACESAuthoringInformation));
3921 ACESAuthoringInformation.set_has_value( result == RESULT_OK );
3923 if ( ASDCP_SUCCESS(result) ) {
3924 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayPrimaries));
3925 ACESMasteringDisplayPrimaries.set_has_value( result == RESULT_OK );
3927 if ( ASDCP_SUCCESS(result) ) {
3928 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayWhitePointChromaticity));
3929 ACESMasteringDisplayWhitePointChromaticity.set_has_value( result == RESULT_OK );
3931 if ( ASDCP_SUCCESS(result) ) {
3932 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayMaximumLuminance));
3933 ACESMasteringDisplayMaximumLuminance.set_has_value( result == RESULT_OK );
3935 if ( ASDCP_SUCCESS(result) ) {
3936 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayMinimumLuminance));
3937 ACESMasteringDisplayMinimumLuminance.set_has_value( result == RESULT_OK );
3944 ACESPictureSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3947 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3948 if ( ASDCP_SUCCESS(result) && ! ACESAuthoringInformation.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(ACESPictureSubDescriptor, ACESAuthoringInformation));
3949 if ( ASDCP_SUCCESS(result) && ! ACESMasteringDisplayPrimaries.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayPrimaries));
3950 if ( ASDCP_SUCCESS(result) && ! ACESMasteringDisplayWhitePointChromaticity.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayWhitePointChromaticity));
3951 if ( ASDCP_SUCCESS(result) && ! ACESMasteringDisplayMaximumLuminance.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayMaximumLuminance));
3952 if ( ASDCP_SUCCESS(result) && ! ACESMasteringDisplayMinimumLuminance.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayMinimumLuminance));
3958 ACESPictureSubDescriptor::Copy(const ACESPictureSubDescriptor& rhs)
3960 InterchangeObject::Copy(rhs);
3961 ACESAuthoringInformation = rhs.ACESAuthoringInformation;
3962 ACESMasteringDisplayPrimaries = rhs.ACESMasteringDisplayPrimaries;
3963 ACESMasteringDisplayWhitePointChromaticity = rhs.ACESMasteringDisplayWhitePointChromaticity;
3964 ACESMasteringDisplayMaximumLuminance = rhs.ACESMasteringDisplayMaximumLuminance;
3965 ACESMasteringDisplayMinimumLuminance = rhs.ACESMasteringDisplayMinimumLuminance;
3970 ACESPictureSubDescriptor::Dump(FILE* stream)
3972 char identbuf[IdentBufferLen];
3978 InterchangeObject::Dump(stream);
3979 if ( ! ACESAuthoringInformation.empty() ) {
3980 fprintf(stream, " %22s = %s\n", "ACESAuthoringInformation", ACESAuthoringInformation.get().EncodeString(identbuf, IdentBufferLen));
3982 if ( ! ACESMasteringDisplayPrimaries.empty() ) {
3983 fprintf(stream, " %22s = %s\n", "ACESMasteringDisplayPrimaries", ACESMasteringDisplayPrimaries.get().EncodeString(identbuf, IdentBufferLen));
3985 if ( ! ACESMasteringDisplayWhitePointChromaticity.empty() ) {
3986 fprintf(stream, " %22s = %s\n", "ACESMasteringDisplayWhitePointChromaticity", ACESMasteringDisplayWhitePointChromaticity.get().EncodeString(identbuf, IdentBufferLen));
3988 if ( ! ACESMasteringDisplayMaximumLuminance.empty() ) {
3989 fprintf(stream, " %22s = %d\n", "ACESMasteringDisplayMaximumLuminance", ACESMasteringDisplayMaximumLuminance.get());
3991 if ( ! ACESMasteringDisplayMinimumLuminance.empty() ) {
3992 fprintf(stream, " %22s = %d\n", "ACESMasteringDisplayMinimumLuminance", ACESMasteringDisplayMinimumLuminance.get());
3998 ACESPictureSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
4000 return InterchangeObject::InitFromBuffer(p, l);
4005 ACESPictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4007 return InterchangeObject::WriteToBuffer(Buffer);
4010 //------------------------------------------------------------------------------------------
4011 // TargetFrameSubDescriptor
4015 TargetFrameSubDescriptor::TargetFrameSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), TargetFrameIndex(0), TargetFrameComponentMaxRef(0), TargetFrameComponentMinRef(0), TargetFrameEssenceStreamID(0)
4018 m_UL = m_Dict->ul(MDD_TargetFrameSubDescriptor);
4021 TargetFrameSubDescriptor::TargetFrameSubDescriptor(const TargetFrameSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
4024 m_UL = m_Dict->ul(MDD_TargetFrameSubDescriptor);
4031 TargetFrameSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
4034 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
4035 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameAncillaryResourceID));
4036 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TargetFrameSubDescriptor, MediaType));
4037 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameIndex));
4038 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameTransferCharacteristic));
4039 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameColorPrimaries));
4040 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameComponentMaxRef));
4041 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameComponentMinRef));
4042 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameEssenceStreamID));
4043 if ( ASDCP_SUCCESS(result) ) {
4044 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(TargetFrameSubDescriptor, ACESPictureSubDescriptorInstanceID));
4045 ACESPictureSubDescriptorInstanceID.set_has_value( result == RESULT_OK );
4047 if ( ASDCP_SUCCESS(result) ) {
4048 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(TargetFrameSubDescriptor, TargetFrameViewingEnvironment));
4049 TargetFrameViewingEnvironment.set_has_value( result == RESULT_OK );
4056 TargetFrameSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
4059 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
4060 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameAncillaryResourceID));
4061 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, MediaType));
4062 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameIndex));
4063 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameTransferCharacteristic));
4064 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameColorPrimaries));
4065 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameComponentMaxRef));
4066 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameComponentMinRef));
4067 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameEssenceStreamID));
4068 if ( ASDCP_SUCCESS(result) && ! ACESPictureSubDescriptorInstanceID.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(TargetFrameSubDescriptor, ACESPictureSubDescriptorInstanceID));
4069 if ( ASDCP_SUCCESS(result) && ! TargetFrameViewingEnvironment.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(TargetFrameSubDescriptor, TargetFrameViewingEnvironment));
4075 TargetFrameSubDescriptor::Copy(const TargetFrameSubDescriptor& rhs)
4077 InterchangeObject::Copy(rhs);
4078 TargetFrameAncillaryResourceID = rhs.TargetFrameAncillaryResourceID;
4079 MediaType = rhs.MediaType;
4080 TargetFrameIndex = rhs.TargetFrameIndex;
4081 TargetFrameTransferCharacteristic = rhs.TargetFrameTransferCharacteristic;
4082 TargetFrameColorPrimaries = rhs.TargetFrameColorPrimaries;
4083 TargetFrameComponentMaxRef = rhs.TargetFrameComponentMaxRef;
4084 TargetFrameComponentMinRef = rhs.TargetFrameComponentMinRef;
4085 TargetFrameEssenceStreamID = rhs.TargetFrameEssenceStreamID;
4086 ACESPictureSubDescriptorInstanceID = rhs.ACESPictureSubDescriptorInstanceID;
4087 TargetFrameViewingEnvironment = rhs.TargetFrameViewingEnvironment;
4092 TargetFrameSubDescriptor::Dump(FILE* stream)
4094 char identbuf[IdentBufferLen];
4100 InterchangeObject::Dump(stream);
4101 fprintf(stream, " %22s = %s\n", "TargetFrameAncillaryResourceID", TargetFrameAncillaryResourceID.EncodeString(identbuf, IdentBufferLen));
4102 fprintf(stream, " %22s = %s\n", "MediaType", MediaType.EncodeString(identbuf, IdentBufferLen));
4103 fprintf(stream, " %22s = %s\n", "TargetFrameIndex", i64sz(TargetFrameIndex, identbuf));
4104 fprintf(stream, " %22s = %s\n", "TargetFrameTransferCharacteristic", TargetFrameTransferCharacteristic.EncodeString(identbuf, IdentBufferLen));
4105 fprintf(stream, " %22s = %s\n", "TargetFrameColorPrimaries", TargetFrameColorPrimaries.EncodeString(identbuf, IdentBufferLen));
4106 fprintf(stream, " %22s = %d\n", "TargetFrameComponentMaxRef", TargetFrameComponentMaxRef);
4107 fprintf(stream, " %22s = %d\n", "TargetFrameComponentMinRef", TargetFrameComponentMinRef);
4108 fprintf(stream, " %22s = %d\n", "TargetFrameEssenceStreamID", TargetFrameEssenceStreamID);
4109 if ( ! ACESPictureSubDescriptorInstanceID.empty() ) {
4110 fprintf(stream, " %22s = %s\n", "ACESPictureSubDescriptorInstanceID", ACESPictureSubDescriptorInstanceID.get().EncodeString(identbuf, IdentBufferLen));
4112 if ( ! TargetFrameViewingEnvironment.empty() ) {
4113 fprintf(stream, " %22s = %s\n", "TargetFrameViewingEnvironment", TargetFrameViewingEnvironment.get().EncodeString(identbuf, IdentBufferLen));
4119 TargetFrameSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
4121 return InterchangeObject::InitFromBuffer(p, l);
4126 TargetFrameSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4128 return InterchangeObject::WriteToBuffer(Buffer);
4131 //------------------------------------------------------------------------------------------
4132 // PHDRMetadataTrackSubDescriptor
4136 PHDRMetadataTrackSubDescriptor::PHDRMetadataTrackSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), SourceTrackID(0), SimplePayloadSID(0)
4139 m_UL = m_Dict->ul(MDD_PHDRMetadataTrackSubDescriptor);
4142 PHDRMetadataTrackSubDescriptor::PHDRMetadataTrackSubDescriptor(const PHDRMetadataTrackSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
4145 m_UL = m_Dict->ul(MDD_PHDRMetadataTrackSubDescriptor);
4152 PHDRMetadataTrackSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
4155 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
4156 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(PHDRMetadataTrackSubDescriptor, DataDefinition));
4157 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(PHDRMetadataTrackSubDescriptor, SourceTrackID));
4158 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(PHDRMetadataTrackSubDescriptor, SimplePayloadSID));
4164 PHDRMetadataTrackSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
4167 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
4168 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(PHDRMetadataTrackSubDescriptor, DataDefinition));
4169 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(PHDRMetadataTrackSubDescriptor, SourceTrackID));
4170 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(PHDRMetadataTrackSubDescriptor, SimplePayloadSID));
4176 PHDRMetadataTrackSubDescriptor::Copy(const PHDRMetadataTrackSubDescriptor& rhs)
4178 InterchangeObject::Copy(rhs);
4179 DataDefinition = rhs.DataDefinition;
4180 SourceTrackID = rhs.SourceTrackID;
4181 SimplePayloadSID = rhs.SimplePayloadSID;
4186 PHDRMetadataTrackSubDescriptor::Dump(FILE* stream)
4188 char identbuf[IdentBufferLen];
4194 InterchangeObject::Dump(stream);
4195 fprintf(stream, " %22s = %s\n", "DataDefinition", DataDefinition.EncodeString(identbuf, IdentBufferLen));
4196 fprintf(stream, " %22s = %d\n", "SourceTrackID", SourceTrackID);
4197 fprintf(stream, " %22s = %d\n", "SimplePayloadSID", SimplePayloadSID);
4202 PHDRMetadataTrackSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
4204 return InterchangeObject::InitFromBuffer(p, l);
4209 PHDRMetadataTrackSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4211 return InterchangeObject::WriteToBuffer(Buffer);
4214 //------------------------------------------------------------------------------------------
4215 // PIMFDynamicMetadataDescriptor
4219 PIMFDynamicMetadataDescriptor::PIMFDynamicMetadataDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d), GlobalPayloadSID(0)
4222 m_UL = m_Dict->ul(MDD_PIMFDynamicMetadataDescriptor);
4225 PIMFDynamicMetadataDescriptor::PIMFDynamicMetadataDescriptor(const PIMFDynamicMetadataDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
4228 m_UL = m_Dict->ul(MDD_PIMFDynamicMetadataDescriptor);
4235 PIMFDynamicMetadataDescriptor::InitFromTLVSet(TLVReader& TLVSet)
4238 Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet);
4239 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(PIMFDynamicMetadataDescriptor, GlobalPayloadSID));
4245 PIMFDynamicMetadataDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
4248 Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet);
4249 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(PIMFDynamicMetadataDescriptor, GlobalPayloadSID));
4255 PIMFDynamicMetadataDescriptor::Copy(const PIMFDynamicMetadataDescriptor& rhs)
4257 GenericDataEssenceDescriptor::Copy(rhs);
4258 GlobalPayloadSID = rhs.GlobalPayloadSID;
4263 PIMFDynamicMetadataDescriptor::Dump(FILE* stream)
4265 char identbuf[IdentBufferLen];
4271 GenericDataEssenceDescriptor::Dump(stream);
4272 fprintf(stream, " %22s = %d\n", "GlobalPayloadSID", GlobalPayloadSID);
4277 PIMFDynamicMetadataDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
4279 return InterchangeObject::InitFromBuffer(p, l);
4284 PIMFDynamicMetadataDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4286 return InterchangeObject::WriteToBuffer(Buffer);