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* DescriptiveFramework_Factory(const Dictionary*& Dict) { return new DescriptiveFramework(Dict); }
68 static InterchangeObject* DescriptiveObject_Factory(const Dictionary*& Dict) { return new DescriptiveObject(Dict); }
69 static InterchangeObject* GenericDataEssenceDescriptor_Factory(const Dictionary*& Dict) { return new GenericDataEssenceDescriptor(Dict); }
70 static InterchangeObject* TimedTextDescriptor_Factory(const Dictionary*& Dict) { return new TimedTextDescriptor(Dict); }
71 static InterchangeObject* TimedTextResourceSubDescriptor_Factory(const Dictionary*& Dict) { return new TimedTextResourceSubDescriptor(Dict); }
72 static InterchangeObject* StereoscopicPictureSubDescriptor_Factory(const Dictionary*& Dict) { return new StereoscopicPictureSubDescriptor(Dict); }
73 static InterchangeObject* ContainerConstraintSubDescriptor_Factory(const Dictionary*& Dict) { return new ContainerConstraintSubDescriptor(Dict); }
74 static InterchangeObject* NetworkLocator_Factory(const Dictionary*& Dict) { return new NetworkLocator(Dict); }
75 static InterchangeObject* MCALabelSubDescriptor_Factory(const Dictionary*& Dict) { return new MCALabelSubDescriptor(Dict); }
76 static InterchangeObject* AudioChannelLabelSubDescriptor_Factory(const Dictionary*& Dict) { return new AudioChannelLabelSubDescriptor(Dict); }
77 static InterchangeObject* SoundfieldGroupLabelSubDescriptor_Factory(const Dictionary*& Dict) { return new SoundfieldGroupLabelSubDescriptor(Dict); }
78 static InterchangeObject* GroupOfSoundfieldGroupsLabelSubDescriptor_Factory(const Dictionary*& Dict) { return new GroupOfSoundfieldGroupsLabelSubDescriptor(Dict); }
79 static InterchangeObject* DCDataDescriptor_Factory(const Dictionary*& Dict) { return new DCDataDescriptor(Dict); }
80 static InterchangeObject* PrivateDCDataDescriptor_Factory(const Dictionary*& Dict) { return new PrivateDCDataDescriptor(Dict); }
81 static InterchangeObject* DolbyAtmosSubDescriptor_Factory(const Dictionary*& Dict) { return new DolbyAtmosSubDescriptor(Dict); }
82 static InterchangeObject* ACESPictureSubDescriptor_Factory(const Dictionary*& Dict) { return new ACESPictureSubDescriptor(Dict); }
83 static InterchangeObject* TargetFrameSubDescriptor_Factory(const Dictionary*& Dict) { return new TargetFrameSubDescriptor(Dict); }
84 static InterchangeObject* TextBasedDMFramework_Factory(const Dictionary*& Dict) { return new TextBasedDMFramework(Dict); }
85 static InterchangeObject* TextBasedObject_Factory(const Dictionary*& Dict) { return new TextBasedObject(Dict); }
86 static InterchangeObject* GenericStreamTextBasedSet_Factory(const Dictionary*& Dict) { return new GenericStreamTextBasedSet(Dict); }
87 static InterchangeObject* ISXDDataEssenceDescriptor_Factory(const Dictionary*& Dict) { return new ISXDDataEssenceDescriptor(Dict); }
88 static InterchangeObject* PHDRMetadataTrackSubDescriptor_Factory(const Dictionary*& Dict) { return new PHDRMetadataTrackSubDescriptor(Dict); }
89 static InterchangeObject* PIMFDynamicMetadataDescriptor_Factory(const Dictionary*& Dict) { return new PIMFDynamicMetadataDescriptor(Dict); }
93 ASDCP::MXF::Metadata_InitTypes(const Dictionary*& Dict)
96 SetObjectFactory(Dict->ul(MDD_Preface), Preface_Factory);
97 SetObjectFactory(Dict->ul(MDD_IndexTableSegment), IndexTableSegment_Factory);
99 SetObjectFactory(Dict->ul(MDD_Identification), Identification_Factory);
100 SetObjectFactory(Dict->ul(MDD_ContentStorage), ContentStorage_Factory);
101 SetObjectFactory(Dict->ul(MDD_EssenceContainerData), EssenceContainerData_Factory);
102 SetObjectFactory(Dict->ul(MDD_MaterialPackage), MaterialPackage_Factory);
103 SetObjectFactory(Dict->ul(MDD_SourcePackage), SourcePackage_Factory);
104 SetObjectFactory(Dict->ul(MDD_StaticTrack), StaticTrack_Factory);
105 SetObjectFactory(Dict->ul(MDD_Track), Track_Factory);
106 SetObjectFactory(Dict->ul(MDD_Sequence), Sequence_Factory);
107 SetObjectFactory(Dict->ul(MDD_SourceClip), SourceClip_Factory);
108 SetObjectFactory(Dict->ul(MDD_TimecodeComponent), TimecodeComponent_Factory);
109 SetObjectFactory(Dict->ul(MDD_FileDescriptor), FileDescriptor_Factory);
110 SetObjectFactory(Dict->ul(MDD_GenericSoundEssenceDescriptor), GenericSoundEssenceDescriptor_Factory);
111 SetObjectFactory(Dict->ul(MDD_WaveAudioDescriptor), WaveAudioDescriptor_Factory);
112 SetObjectFactory(Dict->ul(MDD_GenericPictureEssenceDescriptor), GenericPictureEssenceDescriptor_Factory);
113 SetObjectFactory(Dict->ul(MDD_RGBAEssenceDescriptor), RGBAEssenceDescriptor_Factory);
114 SetObjectFactory(Dict->ul(MDD_JPEG2000PictureSubDescriptor), JPEG2000PictureSubDescriptor_Factory);
115 SetObjectFactory(Dict->ul(MDD_CDCIEssenceDescriptor), CDCIEssenceDescriptor_Factory);
116 SetObjectFactory(Dict->ul(MDD_MPEG2VideoDescriptor), MPEG2VideoDescriptor_Factory);
117 SetObjectFactory(Dict->ul(MDD_DMSegment), DMSegment_Factory);
118 SetObjectFactory(Dict->ul(MDD_CryptographicFramework), CryptographicFramework_Factory);
119 SetObjectFactory(Dict->ul(MDD_CryptographicContext), CryptographicContext_Factory);
120 SetObjectFactory(Dict->ul(MDD_DescriptiveFramework), DescriptiveFramework_Factory);
121 SetObjectFactory(Dict->ul(MDD_DescriptiveObject), DescriptiveObject_Factory);
122 SetObjectFactory(Dict->ul(MDD_GenericDataEssenceDescriptor), GenericDataEssenceDescriptor_Factory);
123 SetObjectFactory(Dict->ul(MDD_TimedTextDescriptor), TimedTextDescriptor_Factory);
124 SetObjectFactory(Dict->ul(MDD_TimedTextResourceSubDescriptor), TimedTextResourceSubDescriptor_Factory);
125 SetObjectFactory(Dict->ul(MDD_StereoscopicPictureSubDescriptor), StereoscopicPictureSubDescriptor_Factory);
126 SetObjectFactory(Dict->ul(MDD_ContainerConstraintSubDescriptor), ContainerConstraintSubDescriptor_Factory);
127 SetObjectFactory(Dict->ul(MDD_NetworkLocator), NetworkLocator_Factory);
128 SetObjectFactory(Dict->ul(MDD_MCALabelSubDescriptor), MCALabelSubDescriptor_Factory);
129 SetObjectFactory(Dict->ul(MDD_AudioChannelLabelSubDescriptor), AudioChannelLabelSubDescriptor_Factory);
130 SetObjectFactory(Dict->ul(MDD_SoundfieldGroupLabelSubDescriptor), SoundfieldGroupLabelSubDescriptor_Factory);
131 SetObjectFactory(Dict->ul(MDD_GroupOfSoundfieldGroupsLabelSubDescriptor), GroupOfSoundfieldGroupsLabelSubDescriptor_Factory);
132 SetObjectFactory(Dict->ul(MDD_DCDataDescriptor), DCDataDescriptor_Factory);
133 SetObjectFactory(Dict->ul(MDD_PrivateDCDataDescriptor), PrivateDCDataDescriptor_Factory);
134 SetObjectFactory(Dict->ul(MDD_DolbyAtmosSubDescriptor), DolbyAtmosSubDescriptor_Factory);
135 SetObjectFactory(Dict->ul(MDD_ACESPictureSubDescriptor), ACESPictureSubDescriptor_Factory);
136 SetObjectFactory(Dict->ul(MDD_TargetFrameSubDescriptor), TargetFrameSubDescriptor_Factory);
137 SetObjectFactory(Dict->ul(MDD_TextBasedDMFramework), TextBasedDMFramework_Factory);
138 SetObjectFactory(Dict->ul(MDD_TextBasedObject), TextBasedObject_Factory);
139 SetObjectFactory(Dict->ul(MDD_GenericStreamTextBasedSet), GenericStreamTextBasedSet_Factory);
140 SetObjectFactory(Dict->ul(MDD_ISXDDataEssenceDescriptor), ISXDDataEssenceDescriptor_Factory);
141 SetObjectFactory(Dict->ul(MDD_PHDRMetadataTrackSubDescriptor), PHDRMetadataTrackSubDescriptor_Factory);
142 SetObjectFactory(Dict->ul(MDD_PIMFDynamicMetadataDescriptor), PIMFDynamicMetadataDescriptor_Factory);
145 //------------------------------------------------------------------------------------------
150 //------------------------------------------------------------------------------------------
155 Identification::Identification(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
158 m_UL = m_Dict->ul(MDD_Identification);
161 Identification::Identification(const Identification& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
164 m_UL = m_Dict->ul(MDD_Identification);
171 Identification::InitFromTLVSet(TLVReader& TLVSet)
174 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
175 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ThisGenerationUID));
176 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, CompanyName));
177 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ProductName));
178 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ProductVersion));
179 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, VersionString));
180 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ProductUID));
181 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ModificationDate));
182 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ToolkitVersion));
183 if ( ASDCP_SUCCESS(result) ) {
184 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(Identification, Platform));
185 Platform.set_has_value( result == RESULT_OK );
192 Identification::WriteToTLVSet(TLVWriter& TLVSet)
195 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
196 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ThisGenerationUID));
197 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, CompanyName));
198 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ProductName));
199 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ProductVersion));
200 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, VersionString));
201 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ProductUID));
202 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ModificationDate));
203 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ToolkitVersion));
204 if ( ASDCP_SUCCESS(result) && ! Platform.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(Identification, Platform));
210 Identification::Copy(const Identification& rhs)
212 InterchangeObject::Copy(rhs);
213 ThisGenerationUID = rhs.ThisGenerationUID;
214 CompanyName = rhs.CompanyName;
215 ProductName = rhs.ProductName;
216 ProductVersion = rhs.ProductVersion;
217 VersionString = rhs.VersionString;
218 ProductUID = rhs.ProductUID;
219 ModificationDate = rhs.ModificationDate;
220 ToolkitVersion = rhs.ToolkitVersion;
221 Platform = rhs.Platform;
226 Identification::Dump(FILE* stream)
228 char identbuf[IdentBufferLen];
234 InterchangeObject::Dump(stream);
235 fprintf(stream, " %22s = %s\n", "ThisGenerationUID", ThisGenerationUID.EncodeString(identbuf, IdentBufferLen));
236 fprintf(stream, " %22s = %s\n", "CompanyName", CompanyName.EncodeString(identbuf, IdentBufferLen));
237 fprintf(stream, " %22s = %s\n", "ProductName", ProductName.EncodeString(identbuf, IdentBufferLen));
238 fprintf(stream, " %22s = %s\n", "ProductVersion", ProductVersion.EncodeString(identbuf, IdentBufferLen));
239 fprintf(stream, " %22s = %s\n", "VersionString", VersionString.EncodeString(identbuf, IdentBufferLen));
240 fprintf(stream, " %22s = %s\n", "ProductUID", ProductUID.EncodeString(identbuf, IdentBufferLen));
241 fprintf(stream, " %22s = %s\n", "ModificationDate", ModificationDate.EncodeString(identbuf, IdentBufferLen));
242 fprintf(stream, " %22s = %s\n", "ToolkitVersion", ToolkitVersion.EncodeString(identbuf, IdentBufferLen));
243 if ( ! Platform.empty() ) {
244 fprintf(stream, " %22s = %s\n", "Platform", Platform.get().EncodeString(identbuf, IdentBufferLen));
250 Identification::InitFromBuffer(const byte_t* p, ui32_t l)
252 return InterchangeObject::InitFromBuffer(p, l);
257 Identification::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
259 return InterchangeObject::WriteToBuffer(Buffer);
262 //------------------------------------------------------------------------------------------
267 ContentStorage::ContentStorage(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
270 m_UL = m_Dict->ul(MDD_ContentStorage);
273 ContentStorage::ContentStorage(const ContentStorage& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
276 m_UL = m_Dict->ul(MDD_ContentStorage);
283 ContentStorage::InitFromTLVSet(TLVReader& TLVSet)
286 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
287 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(ContentStorage, Packages));
288 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(ContentStorage, EssenceContainerData));
294 ContentStorage::WriteToTLVSet(TLVWriter& TLVSet)
297 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
298 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(ContentStorage, Packages));
299 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(ContentStorage, EssenceContainerData));
305 ContentStorage::Copy(const ContentStorage& rhs)
307 InterchangeObject::Copy(rhs);
308 Packages = rhs.Packages;
309 EssenceContainerData = rhs.EssenceContainerData;
314 ContentStorage::Dump(FILE* stream)
316 char identbuf[IdentBufferLen];
322 InterchangeObject::Dump(stream);
323 fprintf(stream, " %22s:\n", "Packages");
324 Packages.Dump(stream);
325 fprintf(stream, " %22s:\n", "EssenceContainerData");
326 EssenceContainerData.Dump(stream);
331 ContentStorage::InitFromBuffer(const byte_t* p, ui32_t l)
333 return InterchangeObject::InitFromBuffer(p, l);
338 ContentStorage::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
340 return InterchangeObject::WriteToBuffer(Buffer);
343 //------------------------------------------------------------------------------------------
344 // EssenceContainerData
348 EssenceContainerData::EssenceContainerData(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), BodySID(0)
351 m_UL = m_Dict->ul(MDD_EssenceContainerData);
354 EssenceContainerData::EssenceContainerData(const EssenceContainerData& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
357 m_UL = m_Dict->ul(MDD_EssenceContainerData);
364 EssenceContainerData::InitFromTLVSet(TLVReader& TLVSet)
367 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
368 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(EssenceContainerData, LinkedPackageUID));
369 if ( ASDCP_SUCCESS(result) ) {
370 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(EssenceContainerData, IndexSID));
371 IndexSID.set_has_value( result == RESULT_OK );
373 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(EssenceContainerData, BodySID));
379 EssenceContainerData::WriteToTLVSet(TLVWriter& TLVSet)
382 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
383 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(EssenceContainerData, LinkedPackageUID));
384 if ( ASDCP_SUCCESS(result) && ! IndexSID.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(EssenceContainerData, IndexSID));
385 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(EssenceContainerData, BodySID));
391 EssenceContainerData::Copy(const EssenceContainerData& rhs)
393 InterchangeObject::Copy(rhs);
394 LinkedPackageUID = rhs.LinkedPackageUID;
395 IndexSID = rhs.IndexSID;
396 BodySID = rhs.BodySID;
401 EssenceContainerData::Dump(FILE* stream)
403 char identbuf[IdentBufferLen];
409 InterchangeObject::Dump(stream);
410 fprintf(stream, " %22s = %s\n", "LinkedPackageUID", LinkedPackageUID.EncodeString(identbuf, IdentBufferLen));
411 if ( ! IndexSID.empty() ) {
412 fprintf(stream, " %22s = %d\n", "IndexSID", IndexSID.get());
414 fprintf(stream, " %22s = %d\n", "BodySID", BodySID);
419 EssenceContainerData::InitFromBuffer(const byte_t* p, ui32_t l)
421 return InterchangeObject::InitFromBuffer(p, l);
426 EssenceContainerData::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
428 return InterchangeObject::WriteToBuffer(Buffer);
431 //------------------------------------------------------------------------------------------
435 GenericPackage::GenericPackage(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) {}
437 GenericPackage::GenericPackage(const GenericPackage& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
445 GenericPackage::InitFromTLVSet(TLVReader& TLVSet)
448 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
449 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageUID));
450 if ( ASDCP_SUCCESS(result) ) {
451 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPackage, Name));
452 Name.set_has_value( result == RESULT_OK );
454 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageCreationDate));
455 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageModifiedDate));
456 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, Tracks));
462 GenericPackage::WriteToTLVSet(TLVWriter& TLVSet)
465 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
466 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, PackageUID));
467 if ( ASDCP_SUCCESS(result) && ! Name.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPackage, Name));
468 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, PackageCreationDate));
469 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, PackageModifiedDate));
470 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, Tracks));
476 GenericPackage::Copy(const GenericPackage& rhs)
478 InterchangeObject::Copy(rhs);
479 PackageUID = rhs.PackageUID;
481 PackageCreationDate = rhs.PackageCreationDate;
482 PackageModifiedDate = rhs.PackageModifiedDate;
488 GenericPackage::Dump(FILE* stream)
490 char identbuf[IdentBufferLen];
496 InterchangeObject::Dump(stream);
497 fprintf(stream, " %22s = %s\n", "PackageUID", PackageUID.EncodeString(identbuf, IdentBufferLen));
498 if ( ! Name.empty() ) {
499 fprintf(stream, " %22s = %s\n", "Name", Name.get().EncodeString(identbuf, IdentBufferLen));
501 fprintf(stream, " %22s = %s\n", "PackageCreationDate", PackageCreationDate.EncodeString(identbuf, IdentBufferLen));
502 fprintf(stream, " %22s = %s\n", "PackageModifiedDate", PackageModifiedDate.EncodeString(identbuf, IdentBufferLen));
503 fprintf(stream, " %22s:\n", "Tracks");
508 //------------------------------------------------------------------------------------------
513 MaterialPackage::MaterialPackage(const Dictionary*& d) : GenericPackage(d), m_Dict(d)
516 m_UL = m_Dict->ul(MDD_MaterialPackage);
519 MaterialPackage::MaterialPackage(const MaterialPackage& rhs) : GenericPackage(rhs.m_Dict), m_Dict(rhs.m_Dict)
522 m_UL = m_Dict->ul(MDD_MaterialPackage);
529 MaterialPackage::InitFromTLVSet(TLVReader& TLVSet)
532 Result_t result = GenericPackage::InitFromTLVSet(TLVSet);
533 if ( ASDCP_SUCCESS(result) ) {
534 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MaterialPackage, PackageMarker));
535 PackageMarker.set_has_value( result == RESULT_OK );
542 MaterialPackage::WriteToTLVSet(TLVWriter& TLVSet)
545 Result_t result = GenericPackage::WriteToTLVSet(TLVSet);
546 if ( ASDCP_SUCCESS(result) && ! PackageMarker.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MaterialPackage, PackageMarker));
552 MaterialPackage::Copy(const MaterialPackage& rhs)
554 GenericPackage::Copy(rhs);
555 PackageMarker = rhs.PackageMarker;
560 MaterialPackage::Dump(FILE* stream)
562 char identbuf[IdentBufferLen];
568 GenericPackage::Dump(stream);
569 if ( ! PackageMarker.empty() ) {
570 fprintf(stream, " %22s = %s\n", "PackageMarker", PackageMarker.get().EncodeString(identbuf, IdentBufferLen));
576 MaterialPackage::InitFromBuffer(const byte_t* p, ui32_t l)
578 return InterchangeObject::InitFromBuffer(p, l);
583 MaterialPackage::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
585 return InterchangeObject::WriteToBuffer(Buffer);
588 //------------------------------------------------------------------------------------------
593 SourcePackage::SourcePackage(const Dictionary*& d) : GenericPackage(d), m_Dict(d)
596 m_UL = m_Dict->ul(MDD_SourcePackage);
599 SourcePackage::SourcePackage(const SourcePackage& rhs) : GenericPackage(rhs.m_Dict), m_Dict(rhs.m_Dict)
602 m_UL = m_Dict->ul(MDD_SourcePackage);
609 SourcePackage::InitFromTLVSet(TLVReader& TLVSet)
612 Result_t result = GenericPackage::InitFromTLVSet(TLVSet);
613 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(SourcePackage, Descriptor));
619 SourcePackage::WriteToTLVSet(TLVWriter& TLVSet)
622 Result_t result = GenericPackage::WriteToTLVSet(TLVSet);
623 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(SourcePackage, Descriptor));
629 SourcePackage::Copy(const SourcePackage& rhs)
631 GenericPackage::Copy(rhs);
632 Descriptor = rhs.Descriptor;
637 SourcePackage::Dump(FILE* stream)
639 char identbuf[IdentBufferLen];
645 GenericPackage::Dump(stream);
646 fprintf(stream, " %22s = %s\n", "Descriptor", Descriptor.EncodeString(identbuf, IdentBufferLen));
651 SourcePackage::InitFromBuffer(const byte_t* p, ui32_t l)
653 return InterchangeObject::InitFromBuffer(p, l);
658 SourcePackage::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
660 return InterchangeObject::WriteToBuffer(Buffer);
663 //------------------------------------------------------------------------------------------
667 GenericTrack::GenericTrack(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), TrackID(0), TrackNumber(0) {}
669 GenericTrack::GenericTrack(const GenericTrack& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
677 GenericTrack::InitFromTLVSet(TLVReader& TLVSet)
680 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
681 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericTrack, TrackID));
682 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericTrack, TrackNumber));
683 if ( ASDCP_SUCCESS(result) ) {
684 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericTrack, TrackName));
685 TrackName.set_has_value( result == RESULT_OK );
687 if ( ASDCP_SUCCESS(result) ) {
688 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericTrack, Sequence));
689 Sequence.set_has_value( result == RESULT_OK );
696 GenericTrack::WriteToTLVSet(TLVWriter& TLVSet)
699 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
700 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericTrack, TrackID));
701 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericTrack, TrackNumber));
702 if ( ASDCP_SUCCESS(result) && ! TrackName.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericTrack, TrackName));
703 if ( ASDCP_SUCCESS(result) && ! Sequence.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericTrack, Sequence));
709 GenericTrack::Copy(const GenericTrack& rhs)
711 InterchangeObject::Copy(rhs);
712 TrackID = rhs.TrackID;
713 TrackNumber = rhs.TrackNumber;
714 TrackName = rhs.TrackName;
715 Sequence = rhs.Sequence;
720 GenericTrack::Dump(FILE* stream)
722 char identbuf[IdentBufferLen];
728 InterchangeObject::Dump(stream);
729 fprintf(stream, " %22s = %d\n", "TrackID", TrackID);
730 fprintf(stream, " %22s = %d\n", "TrackNumber", TrackNumber);
731 if ( ! TrackName.empty() ) {
732 fprintf(stream, " %22s = %s\n", "TrackName", TrackName.get().EncodeString(identbuf, IdentBufferLen));
734 if ( ! Sequence.empty() ) {
735 fprintf(stream, " %22s = %s\n", "Sequence", Sequence.get().EncodeString(identbuf, IdentBufferLen));
740 //------------------------------------------------------------------------------------------
745 StaticTrack::StaticTrack(const Dictionary*& d) : GenericTrack(d), m_Dict(d)
748 m_UL = m_Dict->ul(MDD_StaticTrack);
751 StaticTrack::StaticTrack(const StaticTrack& rhs) : GenericTrack(rhs.m_Dict), m_Dict(rhs.m_Dict)
754 m_UL = m_Dict->ul(MDD_StaticTrack);
761 StaticTrack::InitFromTLVSet(TLVReader& TLVSet)
764 Result_t result = GenericTrack::InitFromTLVSet(TLVSet);
770 StaticTrack::WriteToTLVSet(TLVWriter& TLVSet)
773 Result_t result = GenericTrack::WriteToTLVSet(TLVSet);
779 StaticTrack::Copy(const StaticTrack& rhs)
781 GenericTrack::Copy(rhs);
786 StaticTrack::Dump(FILE* stream)
788 char identbuf[IdentBufferLen];
794 GenericTrack::Dump(stream);
799 StaticTrack::InitFromBuffer(const byte_t* p, ui32_t l)
801 return InterchangeObject::InitFromBuffer(p, l);
806 StaticTrack::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
808 return InterchangeObject::WriteToBuffer(Buffer);
811 //------------------------------------------------------------------------------------------
816 Track::Track(const Dictionary*& d) : GenericTrack(d), m_Dict(d), Origin(0)
819 m_UL = m_Dict->ul(MDD_Track);
822 Track::Track(const Track& rhs) : GenericTrack(rhs.m_Dict), m_Dict(rhs.m_Dict)
825 m_UL = m_Dict->ul(MDD_Track);
832 Track::InitFromTLVSet(TLVReader& TLVSet)
835 Result_t result = GenericTrack::InitFromTLVSet(TLVSet);
836 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Track, EditRate));
837 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(Track, Origin));
843 Track::WriteToTLVSet(TLVWriter& TLVSet)
846 Result_t result = GenericTrack::WriteToTLVSet(TLVSet);
847 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Track, EditRate));
848 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(Track, Origin));
854 Track::Copy(const Track& rhs)
856 GenericTrack::Copy(rhs);
857 EditRate = rhs.EditRate;
863 Track::Dump(FILE* stream)
865 char identbuf[IdentBufferLen];
871 GenericTrack::Dump(stream);
872 fprintf(stream, " %22s = %s\n", "EditRate", EditRate.EncodeString(identbuf, IdentBufferLen));
873 fprintf(stream, " %22s = %s\n", "Origin", i64sz(Origin, identbuf));
878 Track::InitFromBuffer(const byte_t* p, ui32_t l)
880 return InterchangeObject::InitFromBuffer(p, l);
885 Track::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
887 return InterchangeObject::WriteToBuffer(Buffer);
890 //------------------------------------------------------------------------------------------
891 // StructuralComponent
894 StructuralComponent::StructuralComponent(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) {}
896 StructuralComponent::StructuralComponent(const StructuralComponent& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
904 StructuralComponent::InitFromTLVSet(TLVReader& TLVSet)
907 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
908 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(StructuralComponent, DataDefinition));
909 if ( ASDCP_SUCCESS(result) ) {
910 result = TLVSet.ReadUi64(OBJ_READ_ARGS_OPT(StructuralComponent, Duration));
911 Duration.set_has_value( result == RESULT_OK );
918 StructuralComponent::WriteToTLVSet(TLVWriter& TLVSet)
921 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
922 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(StructuralComponent, DataDefinition));
923 if ( ASDCP_SUCCESS(result) && ! Duration.empty() ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS_OPT(StructuralComponent, Duration));
929 StructuralComponent::Copy(const StructuralComponent& rhs)
931 InterchangeObject::Copy(rhs);
932 DataDefinition = rhs.DataDefinition;
933 Duration = rhs.Duration;
938 StructuralComponent::Dump(FILE* stream)
940 char identbuf[IdentBufferLen];
946 InterchangeObject::Dump(stream);
947 fprintf(stream, " %22s = %s\n", "DataDefinition", DataDefinition.EncodeString(identbuf, IdentBufferLen));
948 if ( ! Duration.empty() ) {
949 fprintf(stream, " %22s = %s\n", "Duration", i64sz(Duration.get(), identbuf));
954 //------------------------------------------------------------------------------------------
959 Sequence::Sequence(const Dictionary*& d) : StructuralComponent(d), m_Dict(d)
962 m_UL = m_Dict->ul(MDD_Sequence);
965 Sequence::Sequence(const Sequence& rhs) : StructuralComponent(rhs.m_Dict), m_Dict(rhs.m_Dict)
968 m_UL = m_Dict->ul(MDD_Sequence);
975 Sequence::InitFromTLVSet(TLVReader& TLVSet)
978 Result_t result = StructuralComponent::InitFromTLVSet(TLVSet);
979 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Sequence, StructuralComponents));
985 Sequence::WriteToTLVSet(TLVWriter& TLVSet)
988 Result_t result = StructuralComponent::WriteToTLVSet(TLVSet);
989 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Sequence, StructuralComponents));
995 Sequence::Copy(const Sequence& rhs)
997 StructuralComponent::Copy(rhs);
998 StructuralComponents = rhs.StructuralComponents;
1003 Sequence::Dump(FILE* stream)
1005 char identbuf[IdentBufferLen];
1011 StructuralComponent::Dump(stream);
1012 fprintf(stream, " %22s:\n", "StructuralComponents");
1013 StructuralComponents.Dump(stream);
1018 Sequence::InitFromBuffer(const byte_t* p, ui32_t l)
1020 return InterchangeObject::InitFromBuffer(p, l);
1025 Sequence::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1027 return InterchangeObject::WriteToBuffer(Buffer);
1030 //------------------------------------------------------------------------------------------
1035 SourceClip::SourceClip(const Dictionary*& d) : StructuralComponent(d), m_Dict(d), StartPosition(0), SourceTrackID(0)
1038 m_UL = m_Dict->ul(MDD_SourceClip);
1041 SourceClip::SourceClip(const SourceClip& rhs) : StructuralComponent(rhs.m_Dict), m_Dict(rhs.m_Dict)
1044 m_UL = m_Dict->ul(MDD_SourceClip);
1051 SourceClip::InitFromTLVSet(TLVReader& TLVSet)
1054 Result_t result = StructuralComponent::InitFromTLVSet(TLVSet);
1055 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(SourceClip, StartPosition));
1056 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(SourceClip, SourcePackageID));
1057 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(SourceClip, SourceTrackID));
1063 SourceClip::WriteToTLVSet(TLVWriter& TLVSet)
1066 Result_t result = StructuralComponent::WriteToTLVSet(TLVSet);
1067 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(SourceClip, StartPosition));
1068 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(SourceClip, SourcePackageID));
1069 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(SourceClip, SourceTrackID));
1075 SourceClip::Copy(const SourceClip& rhs)
1077 StructuralComponent::Copy(rhs);
1078 StartPosition = rhs.StartPosition;
1079 SourcePackageID = rhs.SourcePackageID;
1080 SourceTrackID = rhs.SourceTrackID;
1085 SourceClip::Dump(FILE* stream)
1087 char identbuf[IdentBufferLen];
1093 StructuralComponent::Dump(stream);
1094 fprintf(stream, " %22s = %s\n", "StartPosition", i64sz(StartPosition, identbuf));
1095 fprintf(stream, " %22s = %s\n", "SourcePackageID", SourcePackageID.EncodeString(identbuf, IdentBufferLen));
1096 fprintf(stream, " %22s = %d\n", "SourceTrackID", SourceTrackID);
1101 SourceClip::InitFromBuffer(const byte_t* p, ui32_t l)
1103 return InterchangeObject::InitFromBuffer(p, l);
1108 SourceClip::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1110 return InterchangeObject::WriteToBuffer(Buffer);
1113 //------------------------------------------------------------------------------------------
1114 // TimecodeComponent
1118 TimecodeComponent::TimecodeComponent(const Dictionary*& d) : StructuralComponent(d), m_Dict(d), RoundedTimecodeBase(0), StartTimecode(0), DropFrame(0)
1121 m_UL = m_Dict->ul(MDD_TimecodeComponent);
1124 TimecodeComponent::TimecodeComponent(const TimecodeComponent& rhs) : StructuralComponent(rhs.m_Dict), m_Dict(rhs.m_Dict)
1127 m_UL = m_Dict->ul(MDD_TimecodeComponent);
1134 TimecodeComponent::InitFromTLVSet(TLVReader& TLVSet)
1137 Result_t result = StructuralComponent::InitFromTLVSet(TLVSet);
1138 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(TimecodeComponent, RoundedTimecodeBase));
1139 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(TimecodeComponent, StartTimecode));
1140 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(TimecodeComponent, DropFrame));
1146 TimecodeComponent::WriteToTLVSet(TLVWriter& TLVSet)
1149 Result_t result = StructuralComponent::WriteToTLVSet(TLVSet);
1150 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(TimecodeComponent, RoundedTimecodeBase));
1151 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(TimecodeComponent, StartTimecode));
1152 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(TimecodeComponent, DropFrame));
1158 TimecodeComponent::Copy(const TimecodeComponent& rhs)
1160 StructuralComponent::Copy(rhs);
1161 RoundedTimecodeBase = rhs.RoundedTimecodeBase;
1162 StartTimecode = rhs.StartTimecode;
1163 DropFrame = rhs.DropFrame;
1168 TimecodeComponent::Dump(FILE* stream)
1170 char identbuf[IdentBufferLen];
1176 StructuralComponent::Dump(stream);
1177 fprintf(stream, " %22s = %d\n", "RoundedTimecodeBase", RoundedTimecodeBase);
1178 fprintf(stream, " %22s = %s\n", "StartTimecode", i64sz(StartTimecode, identbuf));
1179 fprintf(stream, " %22s = %d\n", "DropFrame", DropFrame);
1184 TimecodeComponent::InitFromBuffer(const byte_t* p, ui32_t l)
1186 return InterchangeObject::InitFromBuffer(p, l);
1191 TimecodeComponent::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1193 return InterchangeObject::WriteToBuffer(Buffer);
1196 //------------------------------------------------------------------------------------------
1197 // GenericDescriptor
1200 GenericDescriptor::GenericDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) {}
1202 GenericDescriptor::GenericDescriptor(const GenericDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
1210 GenericDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1213 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
1214 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericDescriptor, Locators));
1215 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericDescriptor, SubDescriptors));
1221 GenericDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1224 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
1225 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericDescriptor, Locators));
1226 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericDescriptor, SubDescriptors));
1232 GenericDescriptor::Copy(const GenericDescriptor& rhs)
1234 InterchangeObject::Copy(rhs);
1235 Locators = rhs.Locators;
1236 SubDescriptors = rhs.SubDescriptors;
1241 GenericDescriptor::Dump(FILE* stream)
1243 char identbuf[IdentBufferLen];
1249 InterchangeObject::Dump(stream);
1250 fprintf(stream, " %22s:\n", "Locators");
1251 Locators.Dump(stream);
1252 fprintf(stream, " %22s:\n", "SubDescriptors");
1253 SubDescriptors.Dump(stream);
1257 //------------------------------------------------------------------------------------------
1262 FileDescriptor::FileDescriptor(const Dictionary*& d) : GenericDescriptor(d), m_Dict(d)
1265 m_UL = m_Dict->ul(MDD_FileDescriptor);
1268 FileDescriptor::FileDescriptor(const FileDescriptor& rhs) : GenericDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
1271 m_UL = m_Dict->ul(MDD_FileDescriptor);
1278 FileDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1281 Result_t result = GenericDescriptor::InitFromTLVSet(TLVSet);
1282 if ( ASDCP_SUCCESS(result) ) {
1283 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(FileDescriptor, LinkedTrackID));
1284 LinkedTrackID.set_has_value( result == RESULT_OK );
1286 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(FileDescriptor, SampleRate));
1287 if ( ASDCP_SUCCESS(result) ) {
1288 result = TLVSet.ReadUi64(OBJ_READ_ARGS_OPT(FileDescriptor, ContainerDuration));
1289 ContainerDuration.set_has_value( result == RESULT_OK );
1291 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(FileDescriptor, EssenceContainer));
1292 if ( ASDCP_SUCCESS(result) ) {
1293 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(FileDescriptor, Codec));
1294 Codec.set_has_value( result == RESULT_OK );
1301 FileDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1304 Result_t result = GenericDescriptor::WriteToTLVSet(TLVSet);
1305 if ( ASDCP_SUCCESS(result) && ! LinkedTrackID.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(FileDescriptor, LinkedTrackID));
1306 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(FileDescriptor, SampleRate));
1307 if ( ASDCP_SUCCESS(result) && ! ContainerDuration.empty() ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS_OPT(FileDescriptor, ContainerDuration));
1308 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(FileDescriptor, EssenceContainer));
1309 if ( ASDCP_SUCCESS(result) && ! Codec.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(FileDescriptor, Codec));
1315 FileDescriptor::Copy(const FileDescriptor& rhs)
1317 GenericDescriptor::Copy(rhs);
1318 LinkedTrackID = rhs.LinkedTrackID;
1319 SampleRate = rhs.SampleRate;
1320 ContainerDuration = rhs.ContainerDuration;
1321 EssenceContainer = rhs.EssenceContainer;
1327 FileDescriptor::Dump(FILE* stream)
1329 char identbuf[IdentBufferLen];
1335 GenericDescriptor::Dump(stream);
1336 if ( ! LinkedTrackID.empty() ) {
1337 fprintf(stream, " %22s = %d\n", "LinkedTrackID", LinkedTrackID.get());
1339 fprintf(stream, " %22s = %s\n", "SampleRate", SampleRate.EncodeString(identbuf, IdentBufferLen));
1340 if ( ! ContainerDuration.empty() ) {
1341 fprintf(stream, " %22s = %s\n", "ContainerDuration", i64sz(ContainerDuration.get(), identbuf));
1343 fprintf(stream, " %22s = %s\n", "EssenceContainer", EssenceContainer.EncodeString(identbuf, IdentBufferLen));
1344 if ( ! Codec.empty() ) {
1345 fprintf(stream, " %22s = %s\n", "Codec", Codec.get().EncodeString(identbuf, IdentBufferLen));
1351 FileDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1353 return InterchangeObject::InitFromBuffer(p, l);
1358 FileDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1360 return InterchangeObject::WriteToBuffer(Buffer);
1363 //------------------------------------------------------------------------------------------
1364 // GenericSoundEssenceDescriptor
1368 GenericSoundEssenceDescriptor::GenericSoundEssenceDescriptor(const Dictionary*& d) : FileDescriptor(d), m_Dict(d), Locked(0), ChannelCount(0), QuantizationBits(0)
1371 m_UL = m_Dict->ul(MDD_GenericSoundEssenceDescriptor);
1374 GenericSoundEssenceDescriptor::GenericSoundEssenceDescriptor(const GenericSoundEssenceDescriptor& rhs) : FileDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
1377 m_UL = m_Dict->ul(MDD_GenericSoundEssenceDescriptor);
1384 GenericSoundEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1387 Result_t result = FileDescriptor::InitFromTLVSet(TLVSet);
1388 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, AudioSamplingRate));
1389 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, Locked));
1390 if ( ASDCP_SUCCESS(result) ) {
1391 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericSoundEssenceDescriptor, AudioRefLevel));
1392 AudioRefLevel.set_has_value( result == RESULT_OK );
1394 if ( ASDCP_SUCCESS(result) ) {
1395 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericSoundEssenceDescriptor, ElectroSpatialFormulation));
1396 ElectroSpatialFormulation.set_has_value( result == RESULT_OK );
1398 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, ChannelCount));
1399 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, QuantizationBits));
1400 if ( ASDCP_SUCCESS(result) ) {
1401 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericSoundEssenceDescriptor, DialNorm));
1402 DialNorm.set_has_value( result == RESULT_OK );
1404 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, SoundEssenceCoding));
1405 if ( ASDCP_SUCCESS(result) ) {
1406 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericSoundEssenceDescriptor, ReferenceAudioAlignmentLevel));
1407 ReferenceAudioAlignmentLevel.set_has_value( result == RESULT_OK );
1409 if ( ASDCP_SUCCESS(result) ) {
1410 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericSoundEssenceDescriptor, ReferenceImageEditRate));
1411 ReferenceImageEditRate.set_has_value( result == RESULT_OK );
1418 GenericSoundEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1421 Result_t result = FileDescriptor::WriteToTLVSet(TLVSet);
1422 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, AudioSamplingRate));
1423 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, Locked));
1424 if ( ASDCP_SUCCESS(result) && ! AudioRefLevel.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericSoundEssenceDescriptor, AudioRefLevel));
1425 if ( ASDCP_SUCCESS(result) && ! ElectroSpatialFormulation.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericSoundEssenceDescriptor, ElectroSpatialFormulation));
1426 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, ChannelCount));
1427 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, QuantizationBits));
1428 if ( ASDCP_SUCCESS(result) && ! DialNorm.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericSoundEssenceDescriptor, DialNorm));
1429 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, SoundEssenceCoding));
1430 if ( ASDCP_SUCCESS(result) && ! ReferenceAudioAlignmentLevel.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericSoundEssenceDescriptor, ReferenceAudioAlignmentLevel));
1431 if ( ASDCP_SUCCESS(result) && ! ReferenceImageEditRate.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericSoundEssenceDescriptor, ReferenceImageEditRate));
1437 GenericSoundEssenceDescriptor::Copy(const GenericSoundEssenceDescriptor& rhs)
1439 FileDescriptor::Copy(rhs);
1440 AudioSamplingRate = rhs.AudioSamplingRate;
1441 Locked = rhs.Locked;
1442 AudioRefLevel = rhs.AudioRefLevel;
1443 ElectroSpatialFormulation = rhs.ElectroSpatialFormulation;
1444 ChannelCount = rhs.ChannelCount;
1445 QuantizationBits = rhs.QuantizationBits;
1446 DialNorm = rhs.DialNorm;
1447 SoundEssenceCoding = rhs.SoundEssenceCoding;
1448 ReferenceAudioAlignmentLevel = rhs.ReferenceAudioAlignmentLevel;
1449 ReferenceImageEditRate = rhs.ReferenceImageEditRate;
1454 GenericSoundEssenceDescriptor::Dump(FILE* stream)
1456 char identbuf[IdentBufferLen];
1462 FileDescriptor::Dump(stream);
1463 fprintf(stream, " %22s = %s\n", "AudioSamplingRate", AudioSamplingRate.EncodeString(identbuf, IdentBufferLen));
1464 fprintf(stream, " %22s = %d\n", "Locked", Locked);
1465 if ( ! AudioRefLevel.empty() ) {
1466 fprintf(stream, " %22s = %d\n", "AudioRefLevel", AudioRefLevel.get());
1468 if ( ! ElectroSpatialFormulation.empty() ) {
1469 fprintf(stream, " %22s = %d\n", "ElectroSpatialFormulation", ElectroSpatialFormulation.get());
1471 fprintf(stream, " %22s = %d\n", "ChannelCount", ChannelCount);
1472 fprintf(stream, " %22s = %d\n", "QuantizationBits", QuantizationBits);
1473 if ( ! DialNorm.empty() ) {
1474 fprintf(stream, " %22s = %d\n", "DialNorm", DialNorm.get());
1476 fprintf(stream, " %22s = %s\n", "SoundEssenceCoding", SoundEssenceCoding.EncodeString(identbuf, IdentBufferLen));
1477 if ( ! ReferenceAudioAlignmentLevel.empty() ) {
1478 fprintf(stream, " %22s = %d\n", "ReferenceAudioAlignmentLevel", ReferenceAudioAlignmentLevel.get());
1480 if ( ! ReferenceImageEditRate.empty() ) {
1481 fprintf(stream, " %22s = %s\n", "ReferenceImageEditRate", ReferenceImageEditRate.get().EncodeString(identbuf, IdentBufferLen));
1487 GenericSoundEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1489 return InterchangeObject::InitFromBuffer(p, l);
1494 GenericSoundEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1496 return InterchangeObject::WriteToBuffer(Buffer);
1499 //------------------------------------------------------------------------------------------
1500 // WaveAudioDescriptor
1504 WaveAudioDescriptor::WaveAudioDescriptor(const Dictionary*& d) : GenericSoundEssenceDescriptor(d), m_Dict(d), BlockAlign(0), AvgBps(0)
1507 m_UL = m_Dict->ul(MDD_WaveAudioDescriptor);
1510 WaveAudioDescriptor::WaveAudioDescriptor(const WaveAudioDescriptor& rhs) : GenericSoundEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
1513 m_UL = m_Dict->ul(MDD_WaveAudioDescriptor);
1520 WaveAudioDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1523 Result_t result = GenericSoundEssenceDescriptor::InitFromTLVSet(TLVSet);
1524 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(WaveAudioDescriptor, BlockAlign));
1525 if ( ASDCP_SUCCESS(result) ) {
1526 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(WaveAudioDescriptor, SequenceOffset));
1527 SequenceOffset.set_has_value( result == RESULT_OK );
1529 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(WaveAudioDescriptor, AvgBps));
1530 if ( ASDCP_SUCCESS(result) ) {
1531 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(WaveAudioDescriptor, ChannelAssignment));
1532 ChannelAssignment.set_has_value( result == RESULT_OK );
1539 WaveAudioDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1542 Result_t result = GenericSoundEssenceDescriptor::WriteToTLVSet(TLVSet);
1543 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(WaveAudioDescriptor, BlockAlign));
1544 if ( ASDCP_SUCCESS(result) && ! SequenceOffset.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(WaveAudioDescriptor, SequenceOffset));
1545 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(WaveAudioDescriptor, AvgBps));
1546 if ( ASDCP_SUCCESS(result) && ! ChannelAssignment.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(WaveAudioDescriptor, ChannelAssignment));
1552 WaveAudioDescriptor::Copy(const WaveAudioDescriptor& rhs)
1554 GenericSoundEssenceDescriptor::Copy(rhs);
1555 BlockAlign = rhs.BlockAlign;
1556 SequenceOffset = rhs.SequenceOffset;
1557 AvgBps = rhs.AvgBps;
1558 ChannelAssignment = rhs.ChannelAssignment;
1563 WaveAudioDescriptor::Dump(FILE* stream)
1565 char identbuf[IdentBufferLen];
1571 GenericSoundEssenceDescriptor::Dump(stream);
1572 fprintf(stream, " %22s = %d\n", "BlockAlign", BlockAlign);
1573 if ( ! SequenceOffset.empty() ) {
1574 fprintf(stream, " %22s = %d\n", "SequenceOffset", SequenceOffset.get());
1576 fprintf(stream, " %22s = %d\n", "AvgBps", AvgBps);
1577 if ( ! ChannelAssignment.empty() ) {
1578 fprintf(stream, " %22s = %s\n", "ChannelAssignment", ChannelAssignment.get().EncodeString(identbuf, IdentBufferLen));
1584 WaveAudioDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1586 return InterchangeObject::InitFromBuffer(p, l);
1591 WaveAudioDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1593 return InterchangeObject::WriteToBuffer(Buffer);
1596 //------------------------------------------------------------------------------------------
1597 // GenericPictureEssenceDescriptor
1601 GenericPictureEssenceDescriptor::GenericPictureEssenceDescriptor(const Dictionary*& d) : FileDescriptor(d), m_Dict(d), FrameLayout(0), StoredWidth(0), StoredHeight(0)
1604 m_UL = m_Dict->ul(MDD_GenericPictureEssenceDescriptor);
1607 GenericPictureEssenceDescriptor::GenericPictureEssenceDescriptor(const GenericPictureEssenceDescriptor& rhs) : FileDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
1610 m_UL = m_Dict->ul(MDD_GenericPictureEssenceDescriptor);
1617 GenericPictureEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1620 Result_t result = FileDescriptor::InitFromTLVSet(TLVSet);
1621 if ( ASDCP_SUCCESS(result) ) {
1622 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, SignalStandard));
1623 SignalStandard.set_has_value( result == RESULT_OK );
1625 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, FrameLayout));
1626 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, StoredWidth));
1627 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, StoredHeight));
1628 if ( ASDCP_SUCCESS(result) ) {
1629 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, StoredF2Offset));
1630 StoredF2Offset.set_has_value( result == RESULT_OK );
1632 if ( ASDCP_SUCCESS(result) ) {
1633 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, SampledWidth));
1634 SampledWidth.set_has_value( result == RESULT_OK );
1636 if ( ASDCP_SUCCESS(result) ) {
1637 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, SampledHeight));
1638 SampledHeight.set_has_value( result == RESULT_OK );
1640 if ( ASDCP_SUCCESS(result) ) {
1641 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, SampledXOffset));
1642 SampledXOffset.set_has_value( result == RESULT_OK );
1644 if ( ASDCP_SUCCESS(result) ) {
1645 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, SampledYOffset));
1646 SampledYOffset.set_has_value( result == RESULT_OK );
1648 if ( ASDCP_SUCCESS(result) ) {
1649 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayHeight));
1650 DisplayHeight.set_has_value( result == RESULT_OK );
1652 if ( ASDCP_SUCCESS(result) ) {
1653 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayWidth));
1654 DisplayWidth.set_has_value( result == RESULT_OK );
1656 if ( ASDCP_SUCCESS(result) ) {
1657 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayXOffset));
1658 DisplayXOffset.set_has_value( result == RESULT_OK );
1660 if ( ASDCP_SUCCESS(result) ) {
1661 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayYOffset));
1662 DisplayYOffset.set_has_value( result == RESULT_OK );
1664 if ( ASDCP_SUCCESS(result) ) {
1665 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayF2Offset));
1666 DisplayF2Offset.set_has_value( result == RESULT_OK );
1668 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, AspectRatio));
1669 if ( ASDCP_SUCCESS(result) ) {
1670 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveFormatDescriptor));
1671 ActiveFormatDescriptor.set_has_value( result == RESULT_OK );
1673 if ( ASDCP_SUCCESS(result) ) {
1674 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, AlphaTransparency));
1675 AlphaTransparency.set_has_value( result == RESULT_OK );
1677 if ( ASDCP_SUCCESS(result) ) {
1678 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, TransferCharacteristic));
1679 TransferCharacteristic.set_has_value( result == RESULT_OK );
1681 if ( ASDCP_SUCCESS(result) ) {
1682 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ImageAlignmentOffset));
1683 ImageAlignmentOffset.set_has_value( result == RESULT_OK );
1685 if ( ASDCP_SUCCESS(result) ) {
1686 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ImageStartOffset));
1687 ImageStartOffset.set_has_value( result == RESULT_OK );
1689 if ( ASDCP_SUCCESS(result) ) {
1690 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ImageEndOffset));
1691 ImageEndOffset.set_has_value( result == RESULT_OK );
1693 if ( ASDCP_SUCCESS(result) ) {
1694 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, FieldDominance));
1695 FieldDominance.set_has_value( result == RESULT_OK );
1697 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, PictureEssenceCoding));
1698 if ( ASDCP_SUCCESS(result) ) {
1699 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, CodingEquations));
1700 CodingEquations.set_has_value( result == RESULT_OK );
1702 if ( ASDCP_SUCCESS(result) ) {
1703 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ColorPrimaries));
1704 ColorPrimaries.set_has_value( result == RESULT_OK );
1706 if ( ASDCP_SUCCESS(result) ) {
1707 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, AlternativeCenterCuts));
1709 if ( ASDCP_SUCCESS(result) ) {
1710 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveWidth));
1711 ActiveWidth.set_has_value( result == RESULT_OK );
1713 if ( ASDCP_SUCCESS(result) ) {
1714 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveHeight));
1715 ActiveHeight.set_has_value( result == RESULT_OK );
1717 if ( ASDCP_SUCCESS(result) ) {
1718 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveXOffset));
1719 ActiveXOffset.set_has_value( result == RESULT_OK );
1721 if ( ASDCP_SUCCESS(result) ) {
1722 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveYOffset));
1723 ActiveYOffset.set_has_value( result == RESULT_OK );
1725 if ( ASDCP_SUCCESS(result) ) {
1726 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, VideoLineMap));
1727 VideoLineMap.set_has_value( result == RESULT_OK );
1729 if ( ASDCP_SUCCESS(result) ) {
1730 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayPrimaries));
1731 MasteringDisplayPrimaries.set_has_value( result == RESULT_OK );
1733 if ( ASDCP_SUCCESS(result) ) {
1734 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayWhitePointChromaticity));
1735 MasteringDisplayWhitePointChromaticity.set_has_value( result == RESULT_OK );
1737 if ( ASDCP_SUCCESS(result) ) {
1738 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayMaximumLuminance));
1739 MasteringDisplayMaximumLuminance.set_has_value( result == RESULT_OK );
1741 if ( ASDCP_SUCCESS(result) ) {
1742 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayMinimumLuminance));
1743 MasteringDisplayMinimumLuminance.set_has_value( result == RESULT_OK );
1750 GenericPictureEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1753 Result_t result = FileDescriptor::WriteToTLVSet(TLVSet);
1754 if ( ASDCP_SUCCESS(result) && ! SignalStandard.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, SignalStandard));
1755 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, FrameLayout));
1756 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, StoredWidth));
1757 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, StoredHeight));
1758 if ( ASDCP_SUCCESS(result) && ! StoredF2Offset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, StoredF2Offset));
1759 if ( ASDCP_SUCCESS(result) && ! SampledWidth.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, SampledWidth));
1760 if ( ASDCP_SUCCESS(result) && ! SampledHeight.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, SampledHeight));
1761 if ( ASDCP_SUCCESS(result) && ! SampledXOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, SampledXOffset));
1762 if ( ASDCP_SUCCESS(result) && ! SampledYOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, SampledYOffset));
1763 if ( ASDCP_SUCCESS(result) && ! DisplayHeight.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayHeight));
1764 if ( ASDCP_SUCCESS(result) && ! DisplayWidth.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayWidth));
1765 if ( ASDCP_SUCCESS(result) && ! DisplayXOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayXOffset));
1766 if ( ASDCP_SUCCESS(result) && ! DisplayYOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayYOffset));
1767 if ( ASDCP_SUCCESS(result) && ! DisplayF2Offset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayF2Offset));
1768 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, AspectRatio));
1769 if ( ASDCP_SUCCESS(result) && ! ActiveFormatDescriptor.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveFormatDescriptor));
1770 if ( ASDCP_SUCCESS(result) && ! AlphaTransparency.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, AlphaTransparency));
1771 if ( ASDCP_SUCCESS(result) && ! TransferCharacteristic.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, TransferCharacteristic));
1772 if ( ASDCP_SUCCESS(result) && ! ImageAlignmentOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ImageAlignmentOffset));
1773 if ( ASDCP_SUCCESS(result) && ! ImageStartOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ImageStartOffset));
1774 if ( ASDCP_SUCCESS(result) && ! ImageEndOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ImageEndOffset));
1775 if ( ASDCP_SUCCESS(result) && ! FieldDominance.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, FieldDominance));
1776 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, PictureEssenceCoding));
1777 if ( ASDCP_SUCCESS(result) && ! CodingEquations.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, CodingEquations));
1778 if ( ASDCP_SUCCESS(result) && ! ColorPrimaries.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ColorPrimaries));
1779 if ( ASDCP_SUCCESS(result) && ! AlternativeCenterCuts.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, AlternativeCenterCuts));
1780 if ( ASDCP_SUCCESS(result) && ! ActiveWidth.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveWidth));
1781 if ( ASDCP_SUCCESS(result) && ! ActiveHeight.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveHeight));
1782 if ( ASDCP_SUCCESS(result) && ! ActiveXOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveXOffset));
1783 if ( ASDCP_SUCCESS(result) && ! ActiveYOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveYOffset));
1784 if ( ASDCP_SUCCESS(result) && ! VideoLineMap.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, VideoLineMap));
1785 if ( ASDCP_SUCCESS(result) && ! MasteringDisplayPrimaries.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayPrimaries));
1786 if ( ASDCP_SUCCESS(result) && ! MasteringDisplayWhitePointChromaticity.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayWhitePointChromaticity));
1787 if ( ASDCP_SUCCESS(result) && ! MasteringDisplayMaximumLuminance.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayMaximumLuminance));
1788 if ( ASDCP_SUCCESS(result) && ! MasteringDisplayMinimumLuminance.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayMinimumLuminance));
1794 GenericPictureEssenceDescriptor::Copy(const GenericPictureEssenceDescriptor& rhs)
1796 FileDescriptor::Copy(rhs);
1797 SignalStandard = rhs.SignalStandard;
1798 FrameLayout = rhs.FrameLayout;
1799 StoredWidth = rhs.StoredWidth;
1800 StoredHeight = rhs.StoredHeight;
1801 StoredF2Offset = rhs.StoredF2Offset;
1802 SampledWidth = rhs.SampledWidth;
1803 SampledHeight = rhs.SampledHeight;
1804 SampledXOffset = rhs.SampledXOffset;
1805 SampledYOffset = rhs.SampledYOffset;
1806 DisplayHeight = rhs.DisplayHeight;
1807 DisplayWidth = rhs.DisplayWidth;
1808 DisplayXOffset = rhs.DisplayXOffset;
1809 DisplayYOffset = rhs.DisplayYOffset;
1810 DisplayF2Offset = rhs.DisplayF2Offset;
1811 AspectRatio = rhs.AspectRatio;
1812 ActiveFormatDescriptor = rhs.ActiveFormatDescriptor;
1813 AlphaTransparency = rhs.AlphaTransparency;
1814 TransferCharacteristic = rhs.TransferCharacteristic;
1815 ImageAlignmentOffset = rhs.ImageAlignmentOffset;
1816 ImageStartOffset = rhs.ImageStartOffset;
1817 ImageEndOffset = rhs.ImageEndOffset;
1818 FieldDominance = rhs.FieldDominance;
1819 PictureEssenceCoding = rhs.PictureEssenceCoding;
1820 CodingEquations = rhs.CodingEquations;
1821 ColorPrimaries = rhs.ColorPrimaries;
1822 AlternativeCenterCuts = rhs.AlternativeCenterCuts;
1823 ActiveWidth = rhs.ActiveWidth;
1824 ActiveHeight = rhs.ActiveHeight;
1825 ActiveXOffset = rhs.ActiveXOffset;
1826 ActiveYOffset = rhs.ActiveYOffset;
1827 VideoLineMap = rhs.VideoLineMap;
1828 MasteringDisplayPrimaries = rhs.MasteringDisplayPrimaries;
1829 MasteringDisplayWhitePointChromaticity = rhs.MasteringDisplayWhitePointChromaticity;
1830 MasteringDisplayMaximumLuminance = rhs.MasteringDisplayMaximumLuminance;
1831 MasteringDisplayMinimumLuminance = rhs.MasteringDisplayMinimumLuminance;
1836 GenericPictureEssenceDescriptor::Dump(FILE* stream)
1838 char identbuf[IdentBufferLen];
1844 FileDescriptor::Dump(stream);
1845 if ( ! SignalStandard.empty() ) {
1846 fprintf(stream, " %22s = %d\n", "SignalStandard", SignalStandard.get());
1848 fprintf(stream, " %22s = %d\n", "FrameLayout", FrameLayout);
1849 fprintf(stream, " %22s = %d\n", "StoredWidth", StoredWidth);
1850 fprintf(stream, " %22s = %d\n", "StoredHeight", StoredHeight);
1851 if ( ! StoredF2Offset.empty() ) {
1852 fprintf(stream, " %22s = %d\n", "StoredF2Offset", StoredF2Offset.get());
1854 if ( ! SampledWidth.empty() ) {
1855 fprintf(stream, " %22s = %d\n", "SampledWidth", SampledWidth.get());
1857 if ( ! SampledHeight.empty() ) {
1858 fprintf(stream, " %22s = %d\n", "SampledHeight", SampledHeight.get());
1860 if ( ! SampledXOffset.empty() ) {
1861 fprintf(stream, " %22s = %d\n", "SampledXOffset", SampledXOffset.get());
1863 if ( ! SampledYOffset.empty() ) {
1864 fprintf(stream, " %22s = %d\n", "SampledYOffset", SampledYOffset.get());
1866 if ( ! DisplayHeight.empty() ) {
1867 fprintf(stream, " %22s = %d\n", "DisplayHeight", DisplayHeight.get());
1869 if ( ! DisplayWidth.empty() ) {
1870 fprintf(stream, " %22s = %d\n", "DisplayWidth", DisplayWidth.get());
1872 if ( ! DisplayXOffset.empty() ) {
1873 fprintf(stream, " %22s = %d\n", "DisplayXOffset", DisplayXOffset.get());
1875 if ( ! DisplayYOffset.empty() ) {
1876 fprintf(stream, " %22s = %d\n", "DisplayYOffset", DisplayYOffset.get());
1878 if ( ! DisplayF2Offset.empty() ) {
1879 fprintf(stream, " %22s = %d\n", "DisplayF2Offset", DisplayF2Offset.get());
1881 fprintf(stream, " %22s = %s\n", "AspectRatio", AspectRatio.EncodeString(identbuf, IdentBufferLen));
1882 if ( ! ActiveFormatDescriptor.empty() ) {
1883 fprintf(stream, " %22s = %d\n", "ActiveFormatDescriptor", ActiveFormatDescriptor.get());
1885 if ( ! AlphaTransparency.empty() ) {
1886 fprintf(stream, " %22s = %d\n", "AlphaTransparency", AlphaTransparency.get());
1888 if ( ! TransferCharacteristic.empty() ) {
1889 fprintf(stream, " %22s = %s\n", "TransferCharacteristic", TransferCharacteristic.get().EncodeString(identbuf, IdentBufferLen));
1891 if ( ! ImageAlignmentOffset.empty() ) {
1892 fprintf(stream, " %22s = %d\n", "ImageAlignmentOffset", ImageAlignmentOffset.get());
1894 if ( ! ImageStartOffset.empty() ) {
1895 fprintf(stream, " %22s = %d\n", "ImageStartOffset", ImageStartOffset.get());
1897 if ( ! ImageEndOffset.empty() ) {
1898 fprintf(stream, " %22s = %d\n", "ImageEndOffset", ImageEndOffset.get());
1900 if ( ! FieldDominance.empty() ) {
1901 fprintf(stream, " %22s = %d\n", "FieldDominance", FieldDominance.get());
1903 fprintf(stream, " %22s = %s\n", "PictureEssenceCoding", PictureEssenceCoding.EncodeString(identbuf, IdentBufferLen));
1904 if ( ! CodingEquations.empty() ) {
1905 fprintf(stream, " %22s = %s\n", "CodingEquations", CodingEquations.get().EncodeString(identbuf, IdentBufferLen));
1907 if ( ! ColorPrimaries.empty() ) {
1908 fprintf(stream, " %22s = %s\n", "ColorPrimaries", ColorPrimaries.get().EncodeString(identbuf, IdentBufferLen));
1910 if ( ! AlternativeCenterCuts.empty() ) {
1911 fprintf(stream, " %22s:\n", "AlternativeCenterCuts");
1912 AlternativeCenterCuts.get().Dump(stream);
1914 if ( ! ActiveWidth.empty() ) {
1915 fprintf(stream, " %22s = %d\n", "ActiveWidth", ActiveWidth.get());
1917 if ( ! ActiveHeight.empty() ) {
1918 fprintf(stream, " %22s = %d\n", "ActiveHeight", ActiveHeight.get());
1920 if ( ! ActiveXOffset.empty() ) {
1921 fprintf(stream, " %22s = %d\n", "ActiveXOffset", ActiveXOffset.get());
1923 if ( ! ActiveYOffset.empty() ) {
1924 fprintf(stream, " %22s = %d\n", "ActiveYOffset", ActiveYOffset.get());
1926 if ( ! VideoLineMap.empty() ) {
1927 fprintf(stream, " %22s = %s\n", "VideoLineMap", VideoLineMap.get().EncodeString(identbuf, IdentBufferLen));
1929 if ( ! MasteringDisplayPrimaries.empty() ) {
1930 fprintf(stream, " %22s = %s\n", "MasteringDisplayPrimaries", MasteringDisplayPrimaries.get().EncodeString(identbuf, IdentBufferLen));
1932 if ( ! MasteringDisplayWhitePointChromaticity.empty() ) {
1933 fprintf(stream, " %22s = %s\n", "MasteringDisplayWhitePointChromaticity", MasteringDisplayWhitePointChromaticity.get().EncodeString(identbuf, IdentBufferLen));
1935 if ( ! MasteringDisplayMaximumLuminance.empty() ) {
1936 fprintf(stream, " %22s = %d\n", "MasteringDisplayMaximumLuminance", MasteringDisplayMaximumLuminance.get());
1938 if ( ! MasteringDisplayMinimumLuminance.empty() ) {
1939 fprintf(stream, " %22s = %d\n", "MasteringDisplayMinimumLuminance", MasteringDisplayMinimumLuminance.get());
1945 GenericPictureEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1947 return InterchangeObject::InitFromBuffer(p, l);
1952 GenericPictureEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1954 return InterchangeObject::WriteToBuffer(Buffer);
1957 //------------------------------------------------------------------------------------------
1958 // RGBAEssenceDescriptor
1962 RGBAEssenceDescriptor::RGBAEssenceDescriptor(const Dictionary*& d) : GenericPictureEssenceDescriptor(d), m_Dict(d)
1965 m_UL = m_Dict->ul(MDD_RGBAEssenceDescriptor);
1968 RGBAEssenceDescriptor::RGBAEssenceDescriptor(const RGBAEssenceDescriptor& rhs) : GenericPictureEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
1971 m_UL = m_Dict->ul(MDD_RGBAEssenceDescriptor);
1978 RGBAEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1981 Result_t result = GenericPictureEssenceDescriptor::InitFromTLVSet(TLVSet);
1982 if ( ASDCP_SUCCESS(result) ) {
1983 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(RGBAEssenceDescriptor, ComponentMaxRef));
1984 ComponentMaxRef.set_has_value( result == RESULT_OK );
1986 if ( ASDCP_SUCCESS(result) ) {
1987 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(RGBAEssenceDescriptor, ComponentMinRef));
1988 ComponentMinRef.set_has_value( result == RESULT_OK );
1990 if ( ASDCP_SUCCESS(result) ) {
1991 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(RGBAEssenceDescriptor, AlphaMinRef));
1992 AlphaMinRef.set_has_value( result == RESULT_OK );
1994 if ( ASDCP_SUCCESS(result) ) {
1995 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(RGBAEssenceDescriptor, AlphaMaxRef));
1996 AlphaMaxRef.set_has_value( result == RESULT_OK );
1998 if ( ASDCP_SUCCESS(result) ) {
1999 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(RGBAEssenceDescriptor, ScanningDirection));
2000 ScanningDirection.set_has_value( result == RESULT_OK );
2002 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(RGBAEssenceDescriptor, PixelLayout));
2008 RGBAEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2011 Result_t result = GenericPictureEssenceDescriptor::WriteToTLVSet(TLVSet);
2012 if ( ASDCP_SUCCESS(result) && ! ComponentMaxRef.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(RGBAEssenceDescriptor, ComponentMaxRef));
2013 if ( ASDCP_SUCCESS(result) && ! ComponentMinRef.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(RGBAEssenceDescriptor, ComponentMinRef));
2014 if ( ASDCP_SUCCESS(result) && ! AlphaMinRef.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(RGBAEssenceDescriptor, AlphaMinRef));
2015 if ( ASDCP_SUCCESS(result) && ! AlphaMaxRef.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(RGBAEssenceDescriptor, AlphaMaxRef));
2016 if ( ASDCP_SUCCESS(result) && ! ScanningDirection.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(RGBAEssenceDescriptor, ScanningDirection));
2017 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(RGBAEssenceDescriptor, PixelLayout));
2023 RGBAEssenceDescriptor::Copy(const RGBAEssenceDescriptor& rhs)
2025 GenericPictureEssenceDescriptor::Copy(rhs);
2026 ComponentMaxRef = rhs.ComponentMaxRef;
2027 ComponentMinRef = rhs.ComponentMinRef;
2028 AlphaMinRef = rhs.AlphaMinRef;
2029 AlphaMaxRef = rhs.AlphaMaxRef;
2030 ScanningDirection = rhs.ScanningDirection;
2031 PixelLayout = rhs.PixelLayout;
2036 RGBAEssenceDescriptor::Dump(FILE* stream)
2038 char identbuf[IdentBufferLen];
2044 GenericPictureEssenceDescriptor::Dump(stream);
2045 if ( ! ComponentMaxRef.empty() ) {
2046 fprintf(stream, " %22s = %d\n", "ComponentMaxRef", ComponentMaxRef.get());
2048 if ( ! ComponentMinRef.empty() ) {
2049 fprintf(stream, " %22s = %d\n", "ComponentMinRef", ComponentMinRef.get());
2051 if ( ! AlphaMinRef.empty() ) {
2052 fprintf(stream, " %22s = %d\n", "AlphaMinRef", AlphaMinRef.get());
2054 if ( ! AlphaMaxRef.empty() ) {
2055 fprintf(stream, " %22s = %d\n", "AlphaMaxRef", AlphaMaxRef.get());
2057 if ( ! ScanningDirection.empty() ) {
2058 fprintf(stream, " %22s = %d\n", "ScanningDirection", ScanningDirection.get());
2060 fprintf(stream, " %22s = %s\n", "PixelLayout", PixelLayout.EncodeString(identbuf, IdentBufferLen));
2065 RGBAEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
2067 return InterchangeObject::InitFromBuffer(p, l);
2072 RGBAEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2074 return InterchangeObject::WriteToBuffer(Buffer);
2077 //------------------------------------------------------------------------------------------
2078 // JPEG2000PictureSubDescriptor
2082 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)
2085 m_UL = m_Dict->ul(MDD_JPEG2000PictureSubDescriptor);
2088 JPEG2000PictureSubDescriptor::JPEG2000PictureSubDescriptor(const JPEG2000PictureSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2091 m_UL = m_Dict->ul(MDD_JPEG2000PictureSubDescriptor);
2098 JPEG2000PictureSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
2101 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2102 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Rsize));
2103 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Xsize));
2104 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Ysize));
2105 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XOsize));
2106 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YOsize));
2107 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XTsize));
2108 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YTsize));
2109 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XTOsize));
2110 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YTOsize));
2111 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Csize));
2112 if ( ASDCP_SUCCESS(result) ) {
2113 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(JPEG2000PictureSubDescriptor, PictureComponentSizing));
2114 PictureComponentSizing.set_has_value( result == RESULT_OK );
2116 if ( ASDCP_SUCCESS(result) ) {
2117 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(JPEG2000PictureSubDescriptor, CodingStyleDefault));
2118 CodingStyleDefault.set_has_value( result == RESULT_OK );
2120 if ( ASDCP_SUCCESS(result) ) {
2121 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(JPEG2000PictureSubDescriptor, QuantizationDefault));
2122 QuantizationDefault.set_has_value( result == RESULT_OK );
2124 if ( ASDCP_SUCCESS(result) ) {
2125 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(JPEG2000PictureSubDescriptor, J2CLayout));
2126 J2CLayout.set_has_value( result == RESULT_OK );
2128 if ( ASDCP_SUCCESS(result) ) {
2129 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(JPEG2000PictureSubDescriptor, J2KExtendedCapabilities));
2130 J2KExtendedCapabilities.set_has_value( result == RESULT_OK );
2132 if ( ASDCP_SUCCESS(result) ) {
2133 result = TLVSet.ReadUi16(OBJ_READ_ARGS_OPT(JPEG2000PictureSubDescriptor, J2KProfile));
2134 J2KProfile.set_has_value( result == RESULT_OK );
2136 if ( ASDCP_SUCCESS(result) ) {
2137 result = TLVSet.ReadUi16(OBJ_READ_ARGS_OPT(JPEG2000PictureSubDescriptor, J2KCorrespondingProfile));
2138 J2KCorrespondingProfile.set_has_value( result == RESULT_OK );
2145 JPEG2000PictureSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2148 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2149 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Rsize));
2150 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Xsize));
2151 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Ysize));
2152 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XOsize));
2153 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YOsize));
2154 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XTsize));
2155 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YTsize));
2156 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XTOsize));
2157 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YTOsize));
2158 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Csize));
2159 if ( ASDCP_SUCCESS(result) && ! PictureComponentSizing.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, PictureComponentSizing));
2160 if ( ASDCP_SUCCESS(result) && ! CodingStyleDefault.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, CodingStyleDefault));
2161 if ( ASDCP_SUCCESS(result) && ! QuantizationDefault.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, QuantizationDefault));
2162 if ( ASDCP_SUCCESS(result) && ! J2CLayout.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, J2CLayout));
2163 if ( ASDCP_SUCCESS(result) && ! J2KExtendedCapabilities.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, J2KExtendedCapabilities));
2164 if ( ASDCP_SUCCESS(result) && ! J2KProfile.empty() ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, J2KProfile));
2165 if ( ASDCP_SUCCESS(result) && ! J2KCorrespondingProfile.empty() ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, J2KCorrespondingProfile));
2171 JPEG2000PictureSubDescriptor::Copy(const JPEG2000PictureSubDescriptor& rhs)
2173 InterchangeObject::Copy(rhs);
2177 XOsize = rhs.XOsize;
2178 YOsize = rhs.YOsize;
2179 XTsize = rhs.XTsize;
2180 YTsize = rhs.YTsize;
2181 XTOsize = rhs.XTOsize;
2182 YTOsize = rhs.YTOsize;
2184 PictureComponentSizing = rhs.PictureComponentSizing;
2185 CodingStyleDefault = rhs.CodingStyleDefault;
2186 QuantizationDefault = rhs.QuantizationDefault;
2187 J2CLayout = rhs.J2CLayout;
2188 J2KExtendedCapabilities = rhs.J2KExtendedCapabilities;
2189 J2KProfile = rhs.J2KProfile;
2190 J2KCorrespondingProfile = rhs.J2KCorrespondingProfile;
2195 JPEG2000PictureSubDescriptor::Dump(FILE* stream)
2197 char identbuf[IdentBufferLen];
2203 InterchangeObject::Dump(stream);
2204 fprintf(stream, " %22s = %d\n", "Rsize", Rsize);
2205 fprintf(stream, " %22s = %d\n", "Xsize", Xsize);
2206 fprintf(stream, " %22s = %d\n", "Ysize", Ysize);
2207 fprintf(stream, " %22s = %d\n", "XOsize", XOsize);
2208 fprintf(stream, " %22s = %d\n", "YOsize", YOsize);
2209 fprintf(stream, " %22s = %d\n", "XTsize", XTsize);
2210 fprintf(stream, " %22s = %d\n", "YTsize", YTsize);
2211 fprintf(stream, " %22s = %d\n", "XTOsize", XTOsize);
2212 fprintf(stream, " %22s = %d\n", "YTOsize", YTOsize);
2213 fprintf(stream, " %22s = %d\n", "Csize", Csize);
2214 if ( ! PictureComponentSizing.empty() ) {
2215 fprintf(stream, " %22s = %s\n", "PictureComponentSizing", PictureComponentSizing.get().EncodeString(identbuf, IdentBufferLen));
2217 if ( ! CodingStyleDefault.empty() ) {
2218 fprintf(stream, " %22s = %s\n", "CodingStyleDefault", CodingStyleDefault.get().EncodeString(identbuf, IdentBufferLen));
2220 if ( ! QuantizationDefault.empty() ) {
2221 fprintf(stream, " %22s = %s\n", "QuantizationDefault", QuantizationDefault.get().EncodeString(identbuf, IdentBufferLen));
2223 if ( ! J2CLayout.empty() ) {
2224 fprintf(stream, " %22s = %s\n", "J2CLayout", J2CLayout.get().EncodeString(identbuf, IdentBufferLen));
2226 if ( ! J2KExtendedCapabilities.empty() ) {
2227 fprintf(stream, " %22s = %s\n", "J2KExtendedCapabilities", J2KExtendedCapabilities.get().EncodeString(identbuf, IdentBufferLen));
2229 if ( ! J2KProfile.empty() ) {
2230 fprintf(stream, " %22s = %d\n", "J2KProfile", J2KProfile.get());
2232 if ( ! J2KCorrespondingProfile.empty() ) {
2233 fprintf(stream, " %22s = %d\n", "J2KCorrespondingProfile", J2KCorrespondingProfile.get());
2239 JPEG2000PictureSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
2241 return InterchangeObject::InitFromBuffer(p, l);
2246 JPEG2000PictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2248 return InterchangeObject::WriteToBuffer(Buffer);
2251 //------------------------------------------------------------------------------------------
2252 // CDCIEssenceDescriptor
2256 CDCIEssenceDescriptor::CDCIEssenceDescriptor(const Dictionary*& d) : GenericPictureEssenceDescriptor(d), m_Dict(d), ComponentDepth(0), HorizontalSubsampling(0)
2259 m_UL = m_Dict->ul(MDD_CDCIEssenceDescriptor);
2262 CDCIEssenceDescriptor::CDCIEssenceDescriptor(const CDCIEssenceDescriptor& rhs) : GenericPictureEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
2265 m_UL = m_Dict->ul(MDD_CDCIEssenceDescriptor);
2272 CDCIEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
2275 Result_t result = GenericPictureEssenceDescriptor::InitFromTLVSet(TLVSet);
2276 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, ComponentDepth));
2277 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, HorizontalSubsampling));
2278 if ( ASDCP_SUCCESS(result) ) {
2279 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, VerticalSubsampling));
2280 VerticalSubsampling.set_has_value( result == RESULT_OK );
2282 if ( ASDCP_SUCCESS(result) ) {
2283 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, ColorSiting));
2284 ColorSiting.set_has_value( result == RESULT_OK );
2286 if ( ASDCP_SUCCESS(result) ) {
2287 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, ReversedByteOrder));
2288 ReversedByteOrder.set_has_value( result == RESULT_OK );
2290 if ( ASDCP_SUCCESS(result) ) {
2291 result = TLVSet.ReadUi16(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, PaddingBits));
2292 PaddingBits.set_has_value( result == RESULT_OK );
2294 if ( ASDCP_SUCCESS(result) ) {
2295 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, AlphaSampleDepth));
2296 AlphaSampleDepth.set_has_value( result == RESULT_OK );
2298 if ( ASDCP_SUCCESS(result) ) {
2299 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, BlackRefLevel));
2300 BlackRefLevel.set_has_value( result == RESULT_OK );
2302 if ( ASDCP_SUCCESS(result) ) {
2303 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, WhiteReflevel));
2304 WhiteReflevel.set_has_value( result == RESULT_OK );
2306 if ( ASDCP_SUCCESS(result) ) {
2307 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, ColorRange));
2308 ColorRange.set_has_value( result == RESULT_OK );
2315 CDCIEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2318 Result_t result = GenericPictureEssenceDescriptor::WriteToTLVSet(TLVSet);
2319 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, ComponentDepth));
2320 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, HorizontalSubsampling));
2321 if ( ASDCP_SUCCESS(result) && ! VerticalSubsampling.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, VerticalSubsampling));
2322 if ( ASDCP_SUCCESS(result) && ! ColorSiting.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, ColorSiting));
2323 if ( ASDCP_SUCCESS(result) && ! ReversedByteOrder.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, ReversedByteOrder));
2324 if ( ASDCP_SUCCESS(result) && ! PaddingBits.empty() ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, PaddingBits));
2325 if ( ASDCP_SUCCESS(result) && ! AlphaSampleDepth.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, AlphaSampleDepth));
2326 if ( ASDCP_SUCCESS(result) && ! BlackRefLevel.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, BlackRefLevel));
2327 if ( ASDCP_SUCCESS(result) && ! WhiteReflevel.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, WhiteReflevel));
2328 if ( ASDCP_SUCCESS(result) && ! ColorRange.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, ColorRange));
2334 CDCIEssenceDescriptor::Copy(const CDCIEssenceDescriptor& rhs)
2336 GenericPictureEssenceDescriptor::Copy(rhs);
2337 ComponentDepth = rhs.ComponentDepth;
2338 HorizontalSubsampling = rhs.HorizontalSubsampling;
2339 VerticalSubsampling = rhs.VerticalSubsampling;
2340 ColorSiting = rhs.ColorSiting;
2341 ReversedByteOrder = rhs.ReversedByteOrder;
2342 PaddingBits = rhs.PaddingBits;
2343 AlphaSampleDepth = rhs.AlphaSampleDepth;
2344 BlackRefLevel = rhs.BlackRefLevel;
2345 WhiteReflevel = rhs.WhiteReflevel;
2346 ColorRange = rhs.ColorRange;
2351 CDCIEssenceDescriptor::Dump(FILE* stream)
2353 char identbuf[IdentBufferLen];
2359 GenericPictureEssenceDescriptor::Dump(stream);
2360 fprintf(stream, " %22s = %d\n", "ComponentDepth", ComponentDepth);
2361 fprintf(stream, " %22s = %d\n", "HorizontalSubsampling", HorizontalSubsampling);
2362 if ( ! VerticalSubsampling.empty() ) {
2363 fprintf(stream, " %22s = %d\n", "VerticalSubsampling", VerticalSubsampling.get());
2365 if ( ! ColorSiting.empty() ) {
2366 fprintf(stream, " %22s = %d\n", "ColorSiting", ColorSiting.get());
2368 if ( ! ReversedByteOrder.empty() ) {
2369 fprintf(stream, " %22s = %d\n", "ReversedByteOrder", ReversedByteOrder.get());
2371 if ( ! PaddingBits.empty() ) {
2372 fprintf(stream, " %22s = %d\n", "PaddingBits", PaddingBits.get());
2374 if ( ! AlphaSampleDepth.empty() ) {
2375 fprintf(stream, " %22s = %d\n", "AlphaSampleDepth", AlphaSampleDepth.get());
2377 if ( ! BlackRefLevel.empty() ) {
2378 fprintf(stream, " %22s = %d\n", "BlackRefLevel", BlackRefLevel.get());
2380 if ( ! WhiteReflevel.empty() ) {
2381 fprintf(stream, " %22s = %d\n", "WhiteReflevel", WhiteReflevel.get());
2383 if ( ! ColorRange.empty() ) {
2384 fprintf(stream, " %22s = %d\n", "ColorRange", ColorRange.get());
2390 CDCIEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
2392 return InterchangeObject::InitFromBuffer(p, l);
2397 CDCIEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2399 return InterchangeObject::WriteToBuffer(Buffer);
2402 //------------------------------------------------------------------------------------------
2403 // MPEG2VideoDescriptor
2407 MPEG2VideoDescriptor::MPEG2VideoDescriptor(const Dictionary*& d) : CDCIEssenceDescriptor(d), m_Dict(d)
2410 m_UL = m_Dict->ul(MDD_MPEG2VideoDescriptor);
2413 MPEG2VideoDescriptor::MPEG2VideoDescriptor(const MPEG2VideoDescriptor& rhs) : CDCIEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
2416 m_UL = m_Dict->ul(MDD_MPEG2VideoDescriptor);
2423 MPEG2VideoDescriptor::InitFromTLVSet(TLVReader& TLVSet)
2426 Result_t result = CDCIEssenceDescriptor::InitFromTLVSet(TLVSet);
2427 if ( ASDCP_SUCCESS(result) ) {
2428 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, SingleSequence));
2429 SingleSequence.set_has_value( result == RESULT_OK );
2431 if ( ASDCP_SUCCESS(result) ) {
2432 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, ConstantBFrames));
2433 ConstantBFrames.set_has_value( result == RESULT_OK );
2435 if ( ASDCP_SUCCESS(result) ) {
2436 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, CodedContentType));
2437 CodedContentType.set_has_value( result == RESULT_OK );
2439 if ( ASDCP_SUCCESS(result) ) {
2440 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, LowDelay));
2441 LowDelay.set_has_value( result == RESULT_OK );
2443 if ( ASDCP_SUCCESS(result) ) {
2444 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, ClosedGOP));
2445 ClosedGOP.set_has_value( result == RESULT_OK );
2447 if ( ASDCP_SUCCESS(result) ) {
2448 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, IdenticalGOP));
2449 IdenticalGOP.set_has_value( result == RESULT_OK );
2451 if ( ASDCP_SUCCESS(result) ) {
2452 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, MaxGOP));
2453 MaxGOP.set_has_value( result == RESULT_OK );
2455 if ( ASDCP_SUCCESS(result) ) {
2456 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, BPictureCount));
2457 BPictureCount.set_has_value( result == RESULT_OK );
2459 if ( ASDCP_SUCCESS(result) ) {
2460 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, BitRate));
2461 BitRate.set_has_value( result == RESULT_OK );
2463 if ( ASDCP_SUCCESS(result) ) {
2464 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, ProfileAndLevel));
2465 ProfileAndLevel.set_has_value( result == RESULT_OK );
2472 MPEG2VideoDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2475 Result_t result = CDCIEssenceDescriptor::WriteToTLVSet(TLVSet);
2476 if ( ASDCP_SUCCESS(result) && ! SingleSequence.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, SingleSequence));
2477 if ( ASDCP_SUCCESS(result) && ! ConstantBFrames.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, ConstantBFrames));
2478 if ( ASDCP_SUCCESS(result) && ! CodedContentType.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, CodedContentType));
2479 if ( ASDCP_SUCCESS(result) && ! LowDelay.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, LowDelay));
2480 if ( ASDCP_SUCCESS(result) && ! ClosedGOP.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, ClosedGOP));
2481 if ( ASDCP_SUCCESS(result) && ! IdenticalGOP.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, IdenticalGOP));
2482 if ( ASDCP_SUCCESS(result) && ! MaxGOP.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, MaxGOP));
2483 if ( ASDCP_SUCCESS(result) && ! BPictureCount.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, BPictureCount));
2484 if ( ASDCP_SUCCESS(result) && ! BitRate.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, BitRate));
2485 if ( ASDCP_SUCCESS(result) && ! ProfileAndLevel.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, ProfileAndLevel));
2491 MPEG2VideoDescriptor::Copy(const MPEG2VideoDescriptor& rhs)
2493 CDCIEssenceDescriptor::Copy(rhs);
2494 SingleSequence = rhs.SingleSequence;
2495 ConstantBFrames = rhs.ConstantBFrames;
2496 CodedContentType = rhs.CodedContentType;
2497 LowDelay = rhs.LowDelay;
2498 ClosedGOP = rhs.ClosedGOP;
2499 IdenticalGOP = rhs.IdenticalGOP;
2500 MaxGOP = rhs.MaxGOP;
2501 BPictureCount = rhs.BPictureCount;
2502 BitRate = rhs.BitRate;
2503 ProfileAndLevel = rhs.ProfileAndLevel;
2508 MPEG2VideoDescriptor::Dump(FILE* stream)
2510 char identbuf[IdentBufferLen];
2516 CDCIEssenceDescriptor::Dump(stream);
2517 if ( ! SingleSequence.empty() ) {
2518 fprintf(stream, " %22s = %d\n", "SingleSequence", SingleSequence.get());
2520 if ( ! ConstantBFrames.empty() ) {
2521 fprintf(stream, " %22s = %d\n", "ConstantBFrames", ConstantBFrames.get());
2523 if ( ! CodedContentType.empty() ) {
2524 fprintf(stream, " %22s = %d\n", "CodedContentType", CodedContentType.get());
2526 if ( ! LowDelay.empty() ) {
2527 fprintf(stream, " %22s = %d\n", "LowDelay", LowDelay.get());
2529 if ( ! ClosedGOP.empty() ) {
2530 fprintf(stream, " %22s = %d\n", "ClosedGOP", ClosedGOP.get());
2532 if ( ! IdenticalGOP.empty() ) {
2533 fprintf(stream, " %22s = %d\n", "IdenticalGOP", IdenticalGOP.get());
2535 if ( ! MaxGOP.empty() ) {
2536 fprintf(stream, " %22s = %d\n", "MaxGOP", MaxGOP.get());
2538 if ( ! BPictureCount.empty() ) {
2539 fprintf(stream, " %22s = %d\n", "BPictureCount", BPictureCount.get());
2541 if ( ! BitRate.empty() ) {
2542 fprintf(stream, " %22s = %d\n", "BitRate", BitRate.get());
2544 if ( ! ProfileAndLevel.empty() ) {
2545 fprintf(stream, " %22s = %d\n", "ProfileAndLevel", ProfileAndLevel.get());
2551 MPEG2VideoDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
2553 return InterchangeObject::InitFromBuffer(p, l);
2558 MPEG2VideoDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2560 return InterchangeObject::WriteToBuffer(Buffer);
2563 //------------------------------------------------------------------------------------------
2568 DMSegment::DMSegment(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
2571 m_UL = m_Dict->ul(MDD_DMSegment);
2574 DMSegment::DMSegment(const DMSegment& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2577 m_UL = m_Dict->ul(MDD_DMSegment);
2584 DMSegment::InitFromTLVSet(TLVReader& TLVSet)
2587 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2588 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DMSegment, DataDefinition));
2589 if ( ASDCP_SUCCESS(result) ) {
2590 result = TLVSet.ReadUi64(OBJ_READ_ARGS_OPT(DMSegment, Duration));
2591 Duration.set_has_value( result == RESULT_OK );
2593 if ( ASDCP_SUCCESS(result) ) {
2594 result = TLVSet.ReadUi64(OBJ_READ_ARGS_OPT(DMSegment, EventStartPosition));
2595 EventStartPosition.set_has_value( result == RESULT_OK );
2597 if ( ASDCP_SUCCESS(result) ) {
2598 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(DMSegment, EventComment));
2599 EventComment.set_has_value( result == RESULT_OK );
2601 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DMSegment, DMFramework));
2607 DMSegment::WriteToTLVSet(TLVWriter& TLVSet)
2610 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2611 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DMSegment, DataDefinition));
2612 if ( ASDCP_SUCCESS(result) && ! Duration.empty() ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS_OPT(DMSegment, Duration));
2613 if ( ASDCP_SUCCESS(result) && ! EventStartPosition.empty() ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS_OPT(DMSegment, EventStartPosition));
2614 if ( ASDCP_SUCCESS(result) && ! EventComment.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(DMSegment, EventComment));
2615 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DMSegment, DMFramework));
2621 DMSegment::Copy(const DMSegment& rhs)
2623 InterchangeObject::Copy(rhs);
2624 DataDefinition = rhs.DataDefinition;
2625 Duration = rhs.Duration;
2626 EventStartPosition = rhs.EventStartPosition;
2627 EventComment = rhs.EventComment;
2628 DMFramework = rhs.DMFramework;
2633 DMSegment::Dump(FILE* stream)
2635 char identbuf[IdentBufferLen];
2641 InterchangeObject::Dump(stream);
2642 fprintf(stream, " %22s = %s\n", "DataDefinition", DataDefinition.EncodeString(identbuf, IdentBufferLen));
2643 if ( ! Duration.empty() ) {
2644 fprintf(stream, " %22s = %s\n", "Duration", i64sz(Duration.get(), identbuf));
2646 if ( ! EventStartPosition.empty() ) {
2647 fprintf(stream, " %22s = %s\n", "EventStartPosition", i64sz(EventStartPosition.get(), identbuf));
2649 if ( ! EventComment.empty() ) {
2650 fprintf(stream, " %22s = %s\n", "EventComment", EventComment.get().EncodeString(identbuf, IdentBufferLen));
2652 fprintf(stream, " %22s = %s\n", "DMFramework", DMFramework.EncodeString(identbuf, IdentBufferLen));
2657 DMSegment::InitFromBuffer(const byte_t* p, ui32_t l)
2659 return InterchangeObject::InitFromBuffer(p, l);
2664 DMSegment::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2666 return InterchangeObject::WriteToBuffer(Buffer);
2669 //------------------------------------------------------------------------------------------
2670 // CryptographicFramework
2674 CryptographicFramework::CryptographicFramework(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
2677 m_UL = m_Dict->ul(MDD_CryptographicFramework);
2680 CryptographicFramework::CryptographicFramework(const CryptographicFramework& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2683 m_UL = m_Dict->ul(MDD_CryptographicFramework);
2690 CryptographicFramework::InitFromTLVSet(TLVReader& TLVSet)
2693 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2694 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicFramework, ContextSR));
2700 CryptographicFramework::WriteToTLVSet(TLVWriter& TLVSet)
2703 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2704 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicFramework, ContextSR));
2710 CryptographicFramework::Copy(const CryptographicFramework& rhs)
2712 InterchangeObject::Copy(rhs);
2713 ContextSR = rhs.ContextSR;
2718 CryptographicFramework::Dump(FILE* stream)
2720 char identbuf[IdentBufferLen];
2726 InterchangeObject::Dump(stream);
2727 fprintf(stream, " %22s = %s\n", "ContextSR", ContextSR.EncodeString(identbuf, IdentBufferLen));
2732 CryptographicFramework::InitFromBuffer(const byte_t* p, ui32_t l)
2734 return InterchangeObject::InitFromBuffer(p, l);
2739 CryptographicFramework::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2741 return InterchangeObject::WriteToBuffer(Buffer);
2744 //------------------------------------------------------------------------------------------
2745 // CryptographicContext
2749 CryptographicContext::CryptographicContext(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
2752 m_UL = m_Dict->ul(MDD_CryptographicContext);
2755 CryptographicContext::CryptographicContext(const CryptographicContext& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2758 m_UL = m_Dict->ul(MDD_CryptographicContext);
2765 CryptographicContext::InitFromTLVSet(TLVReader& TLVSet)
2768 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2769 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, ContextID));
2770 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, SourceEssenceContainer));
2771 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, CipherAlgorithm));
2772 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, MICAlgorithm));
2773 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, CryptographicKeyID));
2779 CryptographicContext::WriteToTLVSet(TLVWriter& TLVSet)
2782 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2783 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, ContextID));
2784 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, SourceEssenceContainer));
2785 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, CipherAlgorithm));
2786 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, MICAlgorithm));
2787 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, CryptographicKeyID));
2793 CryptographicContext::Copy(const CryptographicContext& rhs)
2795 InterchangeObject::Copy(rhs);
2796 ContextID = rhs.ContextID;
2797 SourceEssenceContainer = rhs.SourceEssenceContainer;
2798 CipherAlgorithm = rhs.CipherAlgorithm;
2799 MICAlgorithm = rhs.MICAlgorithm;
2800 CryptographicKeyID = rhs.CryptographicKeyID;
2805 CryptographicContext::Dump(FILE* stream)
2807 char identbuf[IdentBufferLen];
2813 InterchangeObject::Dump(stream);
2814 fprintf(stream, " %22s = %s\n", "ContextID", ContextID.EncodeString(identbuf, IdentBufferLen));
2815 fprintf(stream, " %22s = %s\n", "SourceEssenceContainer", SourceEssenceContainer.EncodeString(identbuf, IdentBufferLen));
2816 fprintf(stream, " %22s = %s\n", "CipherAlgorithm", CipherAlgorithm.EncodeString(identbuf, IdentBufferLen));
2817 fprintf(stream, " %22s = %s\n", "MICAlgorithm", MICAlgorithm.EncodeString(identbuf, IdentBufferLen));
2818 fprintf(stream, " %22s = %s\n", "CryptographicKeyID", CryptographicKeyID.EncodeString(identbuf, IdentBufferLen));
2823 CryptographicContext::InitFromBuffer(const byte_t* p, ui32_t l)
2825 return InterchangeObject::InitFromBuffer(p, l);
2830 CryptographicContext::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2832 return InterchangeObject::WriteToBuffer(Buffer);
2835 //------------------------------------------------------------------------------------------
2836 // DescriptiveFramework
2840 DescriptiveFramework::DescriptiveFramework(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
2843 m_UL = m_Dict->ul(MDD_DescriptiveFramework);
2846 DescriptiveFramework::DescriptiveFramework(const DescriptiveFramework& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2849 m_UL = m_Dict->ul(MDD_DescriptiveFramework);
2856 DescriptiveFramework::InitFromTLVSet(TLVReader& TLVSet)
2859 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2860 if ( ASDCP_SUCCESS(result) ) {
2861 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(DescriptiveFramework, LinkedDescriptiveFrameworkPlugInId));
2862 LinkedDescriptiveFrameworkPlugInId.set_has_value( result == RESULT_OK );
2869 DescriptiveFramework::WriteToTLVSet(TLVWriter& TLVSet)
2872 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2873 if ( ASDCP_SUCCESS(result) && ! LinkedDescriptiveFrameworkPlugInId.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(DescriptiveFramework, LinkedDescriptiveFrameworkPlugInId));
2879 DescriptiveFramework::Copy(const DescriptiveFramework& rhs)
2881 InterchangeObject::Copy(rhs);
2882 LinkedDescriptiveFrameworkPlugInId = rhs.LinkedDescriptiveFrameworkPlugInId;
2887 DescriptiveFramework::Dump(FILE* stream)
2889 char identbuf[IdentBufferLen];
2895 InterchangeObject::Dump(stream);
2896 if ( ! LinkedDescriptiveFrameworkPlugInId.empty() ) {
2897 fprintf(stream, " %22s = %s\n", "LinkedDescriptiveFrameworkPlugInId", LinkedDescriptiveFrameworkPlugInId.get().EncodeString(identbuf, IdentBufferLen));
2903 DescriptiveFramework::InitFromBuffer(const byte_t* p, ui32_t l)
2905 return InterchangeObject::InitFromBuffer(p, l);
2910 DescriptiveFramework::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2912 return InterchangeObject::WriteToBuffer(Buffer);
2915 //------------------------------------------------------------------------------------------
2916 // DescriptiveObject
2920 DescriptiveObject::DescriptiveObject(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
2923 m_UL = m_Dict->ul(MDD_DescriptiveObject);
2926 DescriptiveObject::DescriptiveObject(const DescriptiveObject& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2929 m_UL = m_Dict->ul(MDD_DescriptiveObject);
2936 DescriptiveObject::InitFromTLVSet(TLVReader& TLVSet)
2939 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2940 if ( ASDCP_SUCCESS(result) ) {
2941 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(DescriptiveObject, LinkedDescriptiveObjectPlugInId));
2942 LinkedDescriptiveObjectPlugInId.set_has_value( result == RESULT_OK );
2949 DescriptiveObject::WriteToTLVSet(TLVWriter& TLVSet)
2952 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2953 if ( ASDCP_SUCCESS(result) && ! LinkedDescriptiveObjectPlugInId.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(DescriptiveObject, LinkedDescriptiveObjectPlugInId));
2959 DescriptiveObject::Copy(const DescriptiveObject& rhs)
2961 InterchangeObject::Copy(rhs);
2962 LinkedDescriptiveObjectPlugInId = rhs.LinkedDescriptiveObjectPlugInId;
2967 DescriptiveObject::Dump(FILE* stream)
2969 char identbuf[IdentBufferLen];
2975 InterchangeObject::Dump(stream);
2976 if ( ! LinkedDescriptiveObjectPlugInId.empty() ) {
2977 fprintf(stream, " %22s = %s\n", "LinkedDescriptiveObjectPlugInId", LinkedDescriptiveObjectPlugInId.get().EncodeString(identbuf, IdentBufferLen));
2983 DescriptiveObject::InitFromBuffer(const byte_t* p, ui32_t l)
2985 return InterchangeObject::InitFromBuffer(p, l);
2990 DescriptiveObject::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2992 return InterchangeObject::WriteToBuffer(Buffer);
2995 //------------------------------------------------------------------------------------------
2996 // GenericDataEssenceDescriptor
3000 GenericDataEssenceDescriptor::GenericDataEssenceDescriptor(const Dictionary*& d) : FileDescriptor(d), m_Dict(d)
3003 m_UL = m_Dict->ul(MDD_GenericDataEssenceDescriptor);
3006 GenericDataEssenceDescriptor::GenericDataEssenceDescriptor(const GenericDataEssenceDescriptor& rhs) : FileDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3009 m_UL = m_Dict->ul(MDD_GenericDataEssenceDescriptor);
3016 GenericDataEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3019 Result_t result = FileDescriptor::InitFromTLVSet(TLVSet);
3020 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericDataEssenceDescriptor, DataEssenceCoding));
3026 GenericDataEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3029 Result_t result = FileDescriptor::WriteToTLVSet(TLVSet);
3030 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericDataEssenceDescriptor, DataEssenceCoding));
3036 GenericDataEssenceDescriptor::Copy(const GenericDataEssenceDescriptor& rhs)
3038 FileDescriptor::Copy(rhs);
3039 DataEssenceCoding = rhs.DataEssenceCoding;
3044 GenericDataEssenceDescriptor::Dump(FILE* stream)
3046 char identbuf[IdentBufferLen];
3052 FileDescriptor::Dump(stream);
3053 fprintf(stream, " %22s = %s\n", "DataEssenceCoding", DataEssenceCoding.EncodeString(identbuf, IdentBufferLen));
3058 GenericDataEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3060 return InterchangeObject::InitFromBuffer(p, l);
3065 GenericDataEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3067 return InterchangeObject::WriteToBuffer(Buffer);
3070 //------------------------------------------------------------------------------------------
3071 // TimedTextDescriptor
3075 TimedTextDescriptor::TimedTextDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d)
3078 m_UL = m_Dict->ul(MDD_TimedTextDescriptor);
3081 TimedTextDescriptor::TimedTextDescriptor(const TimedTextDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3084 m_UL = m_Dict->ul(MDD_TimedTextDescriptor);
3091 TimedTextDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3094 Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet);
3095 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, ResourceID));
3096 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, UCSEncoding));
3097 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, NamespaceURI));
3098 if ( ASDCP_SUCCESS(result) ) {
3099 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(TimedTextDescriptor, RFC5646LanguageTagList));
3100 RFC5646LanguageTagList.set_has_value( result == RESULT_OK );
3107 TimedTextDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3110 Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet);
3111 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, ResourceID));
3112 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, UCSEncoding));
3113 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, NamespaceURI));
3114 if ( ASDCP_SUCCESS(result) && ! RFC5646LanguageTagList.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(TimedTextDescriptor, RFC5646LanguageTagList));
3120 TimedTextDescriptor::Copy(const TimedTextDescriptor& rhs)
3122 GenericDataEssenceDescriptor::Copy(rhs);
3123 ResourceID = rhs.ResourceID;
3124 UCSEncoding = rhs.UCSEncoding;
3125 NamespaceURI = rhs.NamespaceURI;
3126 RFC5646LanguageTagList = rhs.RFC5646LanguageTagList;
3131 TimedTextDescriptor::Dump(FILE* stream)
3133 char identbuf[IdentBufferLen];
3139 GenericDataEssenceDescriptor::Dump(stream);
3140 fprintf(stream, " %22s = %s\n", "ResourceID", ResourceID.EncodeString(identbuf, IdentBufferLen));
3141 fprintf(stream, " %22s = %s\n", "UCSEncoding", UCSEncoding.EncodeString(identbuf, IdentBufferLen));
3142 fprintf(stream, " %22s = %s\n", "NamespaceURI", NamespaceURI.EncodeString(identbuf, IdentBufferLen));
3143 if ( ! RFC5646LanguageTagList.empty() ) {
3144 fprintf(stream, " %22s = %s\n", "RFC5646LanguageTagList", RFC5646LanguageTagList.get().EncodeString(identbuf, IdentBufferLen));
3150 TimedTextDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3152 return InterchangeObject::InitFromBuffer(p, l);
3157 TimedTextDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3159 return InterchangeObject::WriteToBuffer(Buffer);
3162 //------------------------------------------------------------------------------------------
3163 // TimedTextResourceSubDescriptor
3167 TimedTextResourceSubDescriptor::TimedTextResourceSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), EssenceStreamID(0)
3170 m_UL = m_Dict->ul(MDD_TimedTextResourceSubDescriptor);
3173 TimedTextResourceSubDescriptor::TimedTextResourceSubDescriptor(const TimedTextResourceSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3176 m_UL = m_Dict->ul(MDD_TimedTextResourceSubDescriptor);
3183 TimedTextResourceSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3186 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3187 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextResourceSubDescriptor, AncillaryResourceID));
3188 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextResourceSubDescriptor, MIMEMediaType));
3189 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(TimedTextResourceSubDescriptor, EssenceStreamID));
3195 TimedTextResourceSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3198 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3199 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextResourceSubDescriptor, AncillaryResourceID));
3200 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextResourceSubDescriptor, MIMEMediaType));
3201 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(TimedTextResourceSubDescriptor, EssenceStreamID));
3207 TimedTextResourceSubDescriptor::Copy(const TimedTextResourceSubDescriptor& rhs)
3209 InterchangeObject::Copy(rhs);
3210 AncillaryResourceID = rhs.AncillaryResourceID;
3211 MIMEMediaType = rhs.MIMEMediaType;
3212 EssenceStreamID = rhs.EssenceStreamID;
3217 TimedTextResourceSubDescriptor::Dump(FILE* stream)
3219 char identbuf[IdentBufferLen];
3225 InterchangeObject::Dump(stream);
3226 fprintf(stream, " %22s = %s\n", "AncillaryResourceID", AncillaryResourceID.EncodeString(identbuf, IdentBufferLen));
3227 fprintf(stream, " %22s = %s\n", "MIMEMediaType", MIMEMediaType.EncodeString(identbuf, IdentBufferLen));
3228 fprintf(stream, " %22s = %d\n", "EssenceStreamID", EssenceStreamID);
3233 TimedTextResourceSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3235 return InterchangeObject::InitFromBuffer(p, l);
3240 TimedTextResourceSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3242 return InterchangeObject::WriteToBuffer(Buffer);
3245 //------------------------------------------------------------------------------------------
3246 // StereoscopicPictureSubDescriptor
3250 StereoscopicPictureSubDescriptor::StereoscopicPictureSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
3253 m_UL = m_Dict->ul(MDD_StereoscopicPictureSubDescriptor);
3256 StereoscopicPictureSubDescriptor::StereoscopicPictureSubDescriptor(const StereoscopicPictureSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3259 m_UL = m_Dict->ul(MDD_StereoscopicPictureSubDescriptor);
3266 StereoscopicPictureSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3269 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3275 StereoscopicPictureSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3278 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3284 StereoscopicPictureSubDescriptor::Copy(const StereoscopicPictureSubDescriptor& rhs)
3286 InterchangeObject::Copy(rhs);
3291 StereoscopicPictureSubDescriptor::Dump(FILE* stream)
3293 char identbuf[IdentBufferLen];
3299 InterchangeObject::Dump(stream);
3304 StereoscopicPictureSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3306 return InterchangeObject::InitFromBuffer(p, l);
3311 StereoscopicPictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3313 return InterchangeObject::WriteToBuffer(Buffer);
3316 //------------------------------------------------------------------------------------------
3317 // ContainerConstraintSubDescriptor
3321 ContainerConstraintSubDescriptor::ContainerConstraintSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
3324 m_UL = m_Dict->ul(MDD_ContainerConstraintSubDescriptor);
3327 ContainerConstraintSubDescriptor::ContainerConstraintSubDescriptor(const ContainerConstraintSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3330 m_UL = m_Dict->ul(MDD_ContainerConstraintSubDescriptor);
3337 ContainerConstraintSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3340 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3346 ContainerConstraintSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3349 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3355 ContainerConstraintSubDescriptor::Copy(const ContainerConstraintSubDescriptor& rhs)
3357 InterchangeObject::Copy(rhs);
3362 ContainerConstraintSubDescriptor::Dump(FILE* stream)
3364 char identbuf[IdentBufferLen];
3370 InterchangeObject::Dump(stream);
3375 ContainerConstraintSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3377 return InterchangeObject::InitFromBuffer(p, l);
3382 ContainerConstraintSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3384 return InterchangeObject::WriteToBuffer(Buffer);
3387 //------------------------------------------------------------------------------------------
3392 NetworkLocator::NetworkLocator(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
3395 m_UL = m_Dict->ul(MDD_NetworkLocator);
3398 NetworkLocator::NetworkLocator(const NetworkLocator& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3401 m_UL = m_Dict->ul(MDD_NetworkLocator);
3408 NetworkLocator::InitFromTLVSet(TLVReader& TLVSet)
3411 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3412 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(NetworkLocator, URLString));
3418 NetworkLocator::WriteToTLVSet(TLVWriter& TLVSet)
3421 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3422 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(NetworkLocator, URLString));
3428 NetworkLocator::Copy(const NetworkLocator& rhs)
3430 InterchangeObject::Copy(rhs);
3431 URLString = rhs.URLString;
3436 NetworkLocator::Dump(FILE* stream)
3438 char identbuf[IdentBufferLen];
3444 InterchangeObject::Dump(stream);
3445 fprintf(stream, " %22s = %s\n", "URLString", URLString.EncodeString(identbuf, IdentBufferLen));
3450 NetworkLocator::InitFromBuffer(const byte_t* p, ui32_t l)
3452 return InterchangeObject::InitFromBuffer(p, l);
3457 NetworkLocator::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3459 return InterchangeObject::WriteToBuffer(Buffer);
3462 //------------------------------------------------------------------------------------------
3463 // MCALabelSubDescriptor
3467 MCALabelSubDescriptor::MCALabelSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
3470 m_UL = m_Dict->ul(MDD_MCALabelSubDescriptor);
3473 MCALabelSubDescriptor::MCALabelSubDescriptor(const MCALabelSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3476 m_UL = m_Dict->ul(MDD_MCALabelSubDescriptor);
3483 MCALabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3486 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3487 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(MCALabelSubDescriptor, MCALabelDictionaryID));
3488 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(MCALabelSubDescriptor, MCALinkID));
3489 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(MCALabelSubDescriptor, MCATagSymbol));
3490 if ( ASDCP_SUCCESS(result) ) {
3491 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCATagName));
3492 MCATagName.set_has_value( result == RESULT_OK );
3494 if ( ASDCP_SUCCESS(result) ) {
3495 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAChannelID));
3496 MCAChannelID.set_has_value( result == RESULT_OK );
3498 if ( ASDCP_SUCCESS(result) ) {
3499 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, RFC5646SpokenLanguage));
3500 RFC5646SpokenLanguage.set_has_value( result == RESULT_OK );
3502 if ( ASDCP_SUCCESS(result) ) {
3503 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCATitle));
3504 MCATitle.set_has_value( result == RESULT_OK );
3506 if ( ASDCP_SUCCESS(result) ) {
3507 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCATitleVersion));
3508 MCATitleVersion.set_has_value( result == RESULT_OK );
3510 if ( ASDCP_SUCCESS(result) ) {
3511 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCATitleSubVersion));
3512 MCATitleSubVersion.set_has_value( result == RESULT_OK );
3514 if ( ASDCP_SUCCESS(result) ) {
3515 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAEpisode));
3516 MCAEpisode.set_has_value( result == RESULT_OK );
3518 if ( ASDCP_SUCCESS(result) ) {
3519 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAPartitionKind));
3520 MCAPartitionKind.set_has_value( result == RESULT_OK );
3522 if ( ASDCP_SUCCESS(result) ) {
3523 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAPartitionNumber));
3524 MCAPartitionNumber.set_has_value( result == RESULT_OK );
3526 if ( ASDCP_SUCCESS(result) ) {
3527 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAAudioContentKind));
3528 MCAAudioContentKind.set_has_value( result == RESULT_OK );
3530 if ( ASDCP_SUCCESS(result) ) {
3531 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAAudioElementKind));
3532 MCAAudioElementKind.set_has_value( result == RESULT_OK );
3539 MCALabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3542 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3543 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(MCALabelSubDescriptor, MCALabelDictionaryID));
3544 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(MCALabelSubDescriptor, MCALinkID));
3545 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(MCALabelSubDescriptor, MCATagSymbol));
3546 if ( ASDCP_SUCCESS(result) && ! MCATagName.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCATagName));
3547 if ( ASDCP_SUCCESS(result) && ! MCAChannelID.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAChannelID));
3548 if ( ASDCP_SUCCESS(result) && ! RFC5646SpokenLanguage.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, RFC5646SpokenLanguage));
3549 if ( ASDCP_SUCCESS(result) && ! MCATitle.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCATitle));
3550 if ( ASDCP_SUCCESS(result) && ! MCATitleVersion.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCATitleVersion));
3551 if ( ASDCP_SUCCESS(result) && ! MCATitleSubVersion.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCATitleSubVersion));
3552 if ( ASDCP_SUCCESS(result) && ! MCAEpisode.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAEpisode));
3553 if ( ASDCP_SUCCESS(result) && ! MCAPartitionKind.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAPartitionKind));
3554 if ( ASDCP_SUCCESS(result) && ! MCAPartitionNumber.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAPartitionNumber));
3555 if ( ASDCP_SUCCESS(result) && ! MCAAudioContentKind.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAAudioContentKind));
3556 if ( ASDCP_SUCCESS(result) && ! MCAAudioElementKind.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAAudioElementKind));
3562 MCALabelSubDescriptor::Copy(const MCALabelSubDescriptor& rhs)
3564 InterchangeObject::Copy(rhs);
3565 MCALabelDictionaryID = rhs.MCALabelDictionaryID;
3566 MCALinkID = rhs.MCALinkID;
3567 MCATagSymbol = rhs.MCATagSymbol;
3568 MCATagName = rhs.MCATagName;
3569 MCAChannelID = rhs.MCAChannelID;
3570 RFC5646SpokenLanguage = rhs.RFC5646SpokenLanguage;
3571 MCATitle = rhs.MCATitle;
3572 MCATitleVersion = rhs.MCATitleVersion;
3573 MCATitleSubVersion = rhs.MCATitleSubVersion;
3574 MCAEpisode = rhs.MCAEpisode;
3575 MCAPartitionKind = rhs.MCAPartitionKind;
3576 MCAPartitionNumber = rhs.MCAPartitionNumber;
3577 MCAAudioContentKind = rhs.MCAAudioContentKind;
3578 MCAAudioElementKind = rhs.MCAAudioElementKind;
3583 MCALabelSubDescriptor::Dump(FILE* stream)
3585 char identbuf[IdentBufferLen];
3591 InterchangeObject::Dump(stream);
3592 fprintf(stream, " %22s = %s\n", "MCALabelDictionaryID", MCALabelDictionaryID.EncodeString(identbuf, IdentBufferLen));
3593 fprintf(stream, " %22s = %s\n", "MCALinkID", MCALinkID.EncodeString(identbuf, IdentBufferLen));
3594 fprintf(stream, " %22s = %s\n", "MCATagSymbol", MCATagSymbol.EncodeString(identbuf, IdentBufferLen));
3595 if ( ! MCATagName.empty() ) {
3596 fprintf(stream, " %22s = %s\n", "MCATagName", MCATagName.get().EncodeString(identbuf, IdentBufferLen));
3598 if ( ! MCAChannelID.empty() ) {
3599 fprintf(stream, " %22s = %d\n", "MCAChannelID", MCAChannelID.get());
3601 if ( ! RFC5646SpokenLanguage.empty() ) {
3602 fprintf(stream, " %22s = %s\n", "RFC5646SpokenLanguage", RFC5646SpokenLanguage.get().EncodeString(identbuf, IdentBufferLen));
3604 if ( ! MCATitle.empty() ) {
3605 fprintf(stream, " %22s = %s\n", "MCATitle", MCATitle.get().EncodeString(identbuf, IdentBufferLen));
3607 if ( ! MCATitleVersion.empty() ) {
3608 fprintf(stream, " %22s = %s\n", "MCATitleVersion", MCATitleVersion.get().EncodeString(identbuf, IdentBufferLen));
3610 if ( ! MCATitleSubVersion.empty() ) {
3611 fprintf(stream, " %22s = %s\n", "MCATitleSubVersion", MCATitleSubVersion.get().EncodeString(identbuf, IdentBufferLen));
3613 if ( ! MCAEpisode.empty() ) {
3614 fprintf(stream, " %22s = %s\n", "MCAEpisode", MCAEpisode.get().EncodeString(identbuf, IdentBufferLen));
3616 if ( ! MCAPartitionKind.empty() ) {
3617 fprintf(stream, " %22s = %s\n", "MCAPartitionKind", MCAPartitionKind.get().EncodeString(identbuf, IdentBufferLen));
3619 if ( ! MCAPartitionNumber.empty() ) {
3620 fprintf(stream, " %22s = %s\n", "MCAPartitionNumber", MCAPartitionNumber.get().EncodeString(identbuf, IdentBufferLen));
3622 if ( ! MCAAudioContentKind.empty() ) {
3623 fprintf(stream, " %22s = %s\n", "MCAAudioContentKind", MCAAudioContentKind.get().EncodeString(identbuf, IdentBufferLen));
3625 if ( ! MCAAudioElementKind.empty() ) {
3626 fprintf(stream, " %22s = %s\n", "MCAAudioElementKind", MCAAudioElementKind.get().EncodeString(identbuf, IdentBufferLen));
3632 MCALabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3634 return InterchangeObject::InitFromBuffer(p, l);
3639 MCALabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3641 return InterchangeObject::WriteToBuffer(Buffer);
3644 //------------------------------------------------------------------------------------------
3645 // AudioChannelLabelSubDescriptor
3649 AudioChannelLabelSubDescriptor::AudioChannelLabelSubDescriptor(const Dictionary*& d) : MCALabelSubDescriptor(d), m_Dict(d)
3652 m_UL = m_Dict->ul(MDD_AudioChannelLabelSubDescriptor);
3655 AudioChannelLabelSubDescriptor::AudioChannelLabelSubDescriptor(const AudioChannelLabelSubDescriptor& rhs) : MCALabelSubDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3658 m_UL = m_Dict->ul(MDD_AudioChannelLabelSubDescriptor);
3665 AudioChannelLabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3668 Result_t result = MCALabelSubDescriptor::InitFromTLVSet(TLVSet);
3669 if ( ASDCP_SUCCESS(result) ) {
3670 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(AudioChannelLabelSubDescriptor, SoundfieldGroupLinkID));
3671 SoundfieldGroupLinkID.set_has_value( result == RESULT_OK );
3678 AudioChannelLabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3681 Result_t result = MCALabelSubDescriptor::WriteToTLVSet(TLVSet);
3682 if ( ASDCP_SUCCESS(result) && ! SoundfieldGroupLinkID.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(AudioChannelLabelSubDescriptor, SoundfieldGroupLinkID));
3688 AudioChannelLabelSubDescriptor::Copy(const AudioChannelLabelSubDescriptor& rhs)
3690 MCALabelSubDescriptor::Copy(rhs);
3691 SoundfieldGroupLinkID = rhs.SoundfieldGroupLinkID;
3696 AudioChannelLabelSubDescriptor::Dump(FILE* stream)
3698 char identbuf[IdentBufferLen];
3704 MCALabelSubDescriptor::Dump(stream);
3705 if ( ! SoundfieldGroupLinkID.empty() ) {
3706 fprintf(stream, " %22s = %s\n", "SoundfieldGroupLinkID", SoundfieldGroupLinkID.get().EncodeString(identbuf, IdentBufferLen));
3712 AudioChannelLabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3714 return InterchangeObject::InitFromBuffer(p, l);
3719 AudioChannelLabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3721 return InterchangeObject::WriteToBuffer(Buffer);
3724 //------------------------------------------------------------------------------------------
3725 // SoundfieldGroupLabelSubDescriptor
3729 SoundfieldGroupLabelSubDescriptor::SoundfieldGroupLabelSubDescriptor(const Dictionary*& d) : MCALabelSubDescriptor(d), m_Dict(d)
3732 m_UL = m_Dict->ul(MDD_SoundfieldGroupLabelSubDescriptor);
3735 SoundfieldGroupLabelSubDescriptor::SoundfieldGroupLabelSubDescriptor(const SoundfieldGroupLabelSubDescriptor& rhs) : MCALabelSubDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3738 m_UL = m_Dict->ul(MDD_SoundfieldGroupLabelSubDescriptor);
3745 SoundfieldGroupLabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3748 Result_t result = MCALabelSubDescriptor::InitFromTLVSet(TLVSet);
3749 if ( ASDCP_SUCCESS(result) ) {
3750 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(SoundfieldGroupLabelSubDescriptor, GroupOfSoundfieldGroupsLinkID));
3757 SoundfieldGroupLabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3760 Result_t result = MCALabelSubDescriptor::WriteToTLVSet(TLVSet);
3761 if ( ASDCP_SUCCESS(result) && ! GroupOfSoundfieldGroupsLinkID.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(SoundfieldGroupLabelSubDescriptor, GroupOfSoundfieldGroupsLinkID));
3767 SoundfieldGroupLabelSubDescriptor::Copy(const SoundfieldGroupLabelSubDescriptor& rhs)
3769 MCALabelSubDescriptor::Copy(rhs);
3770 GroupOfSoundfieldGroupsLinkID = rhs.GroupOfSoundfieldGroupsLinkID;
3775 SoundfieldGroupLabelSubDescriptor::Dump(FILE* stream)
3777 char identbuf[IdentBufferLen];
3783 MCALabelSubDescriptor::Dump(stream);
3784 if ( ! GroupOfSoundfieldGroupsLinkID.empty() ) {
3785 fprintf(stream, " %22s:\n", "GroupOfSoundfieldGroupsLinkID");
3786 GroupOfSoundfieldGroupsLinkID.get().Dump(stream);
3792 SoundfieldGroupLabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3794 return InterchangeObject::InitFromBuffer(p, l);
3799 SoundfieldGroupLabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3801 return InterchangeObject::WriteToBuffer(Buffer);
3804 //------------------------------------------------------------------------------------------
3805 // GroupOfSoundfieldGroupsLabelSubDescriptor
3809 GroupOfSoundfieldGroupsLabelSubDescriptor::GroupOfSoundfieldGroupsLabelSubDescriptor(const Dictionary*& d) : MCALabelSubDescriptor(d), m_Dict(d)
3812 m_UL = m_Dict->ul(MDD_GroupOfSoundfieldGroupsLabelSubDescriptor);
3815 GroupOfSoundfieldGroupsLabelSubDescriptor::GroupOfSoundfieldGroupsLabelSubDescriptor(const GroupOfSoundfieldGroupsLabelSubDescriptor& rhs) : MCALabelSubDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3818 m_UL = m_Dict->ul(MDD_GroupOfSoundfieldGroupsLabelSubDescriptor);
3825 GroupOfSoundfieldGroupsLabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3828 Result_t result = MCALabelSubDescriptor::InitFromTLVSet(TLVSet);
3834 GroupOfSoundfieldGroupsLabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3837 Result_t result = MCALabelSubDescriptor::WriteToTLVSet(TLVSet);
3843 GroupOfSoundfieldGroupsLabelSubDescriptor::Copy(const GroupOfSoundfieldGroupsLabelSubDescriptor& rhs)
3845 MCALabelSubDescriptor::Copy(rhs);
3850 GroupOfSoundfieldGroupsLabelSubDescriptor::Dump(FILE* stream)
3852 char identbuf[IdentBufferLen];
3858 MCALabelSubDescriptor::Dump(stream);
3863 GroupOfSoundfieldGroupsLabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3865 return InterchangeObject::InitFromBuffer(p, l);
3870 GroupOfSoundfieldGroupsLabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3872 return InterchangeObject::WriteToBuffer(Buffer);
3875 //------------------------------------------------------------------------------------------
3880 DCDataDescriptor::DCDataDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d)
3883 m_UL = m_Dict->ul(MDD_DCDataDescriptor);
3886 DCDataDescriptor::DCDataDescriptor(const DCDataDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3889 m_UL = m_Dict->ul(MDD_DCDataDescriptor);
3896 DCDataDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3899 Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet);
3905 DCDataDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3908 Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet);
3914 DCDataDescriptor::Copy(const DCDataDescriptor& rhs)
3916 GenericDataEssenceDescriptor::Copy(rhs);
3921 DCDataDescriptor::Dump(FILE* stream)
3923 char identbuf[IdentBufferLen];
3929 GenericDataEssenceDescriptor::Dump(stream);
3934 DCDataDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3936 return InterchangeObject::InitFromBuffer(p, l);
3941 DCDataDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3943 return InterchangeObject::WriteToBuffer(Buffer);
3946 //------------------------------------------------------------------------------------------
3947 // PrivateDCDataDescriptor
3951 PrivateDCDataDescriptor::PrivateDCDataDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d)
3954 m_UL = m_Dict->ul(MDD_PrivateDCDataDescriptor);
3957 PrivateDCDataDescriptor::PrivateDCDataDescriptor(const PrivateDCDataDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3960 m_UL = m_Dict->ul(MDD_PrivateDCDataDescriptor);
3967 PrivateDCDataDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3970 Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet);
3976 PrivateDCDataDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3979 Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet);
3985 PrivateDCDataDescriptor::Copy(const PrivateDCDataDescriptor& rhs)
3987 GenericDataEssenceDescriptor::Copy(rhs);
3992 PrivateDCDataDescriptor::Dump(FILE* stream)
3994 char identbuf[IdentBufferLen];
4000 GenericDataEssenceDescriptor::Dump(stream);
4005 PrivateDCDataDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
4007 return InterchangeObject::InitFromBuffer(p, l);
4012 PrivateDCDataDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4014 return InterchangeObject::WriteToBuffer(Buffer);
4017 //------------------------------------------------------------------------------------------
4018 // DolbyAtmosSubDescriptor
4022 DolbyAtmosSubDescriptor::DolbyAtmosSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), FirstFrame(0), MaxChannelCount(0), MaxObjectCount(0), AtmosVersion(0)
4025 m_UL = m_Dict->ul(MDD_DolbyAtmosSubDescriptor);
4028 DolbyAtmosSubDescriptor::DolbyAtmosSubDescriptor(const DolbyAtmosSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
4031 m_UL = m_Dict->ul(MDD_DolbyAtmosSubDescriptor);
4038 DolbyAtmosSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
4041 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
4042 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, AtmosID));
4043 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, FirstFrame));
4044 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, MaxChannelCount));
4045 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, MaxObjectCount));
4046 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, AtmosVersion));
4052 DolbyAtmosSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
4055 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
4056 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, AtmosID));
4057 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, FirstFrame));
4058 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, MaxChannelCount));
4059 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, MaxObjectCount));
4060 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, AtmosVersion));
4066 DolbyAtmosSubDescriptor::Copy(const DolbyAtmosSubDescriptor& rhs)
4068 InterchangeObject::Copy(rhs);
4069 AtmosID = rhs.AtmosID;
4070 FirstFrame = rhs.FirstFrame;
4071 MaxChannelCount = rhs.MaxChannelCount;
4072 MaxObjectCount = rhs.MaxObjectCount;
4073 AtmosVersion = rhs.AtmosVersion;
4078 DolbyAtmosSubDescriptor::Dump(FILE* stream)
4080 char identbuf[IdentBufferLen];
4086 InterchangeObject::Dump(stream);
4087 fprintf(stream, " %22s = %s\n", "AtmosID", AtmosID.EncodeString(identbuf, IdentBufferLen));
4088 fprintf(stream, " %22s = %d\n", "FirstFrame", FirstFrame);
4089 fprintf(stream, " %22s = %d\n", "MaxChannelCount", MaxChannelCount);
4090 fprintf(stream, " %22s = %d\n", "MaxObjectCount", MaxObjectCount);
4091 fprintf(stream, " %22s = %d\n", "AtmosVersion", AtmosVersion);
4096 DolbyAtmosSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
4098 return InterchangeObject::InitFromBuffer(p, l);
4103 DolbyAtmosSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4105 return InterchangeObject::WriteToBuffer(Buffer);
4108 //------------------------------------------------------------------------------------------
4109 // ACESPictureSubDescriptor
4113 ACESPictureSubDescriptor::ACESPictureSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
4116 m_UL = m_Dict->ul(MDD_ACESPictureSubDescriptor);
4119 ACESPictureSubDescriptor::ACESPictureSubDescriptor(const ACESPictureSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
4122 m_UL = m_Dict->ul(MDD_ACESPictureSubDescriptor);
4129 ACESPictureSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
4132 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
4133 if ( ASDCP_SUCCESS(result) ) {
4134 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(ACESPictureSubDescriptor, ACESAuthoringInformation));
4135 ACESAuthoringInformation.set_has_value( result == RESULT_OK );
4137 if ( ASDCP_SUCCESS(result) ) {
4138 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayPrimaries));
4139 ACESMasteringDisplayPrimaries.set_has_value( result == RESULT_OK );
4141 if ( ASDCP_SUCCESS(result) ) {
4142 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayWhitePointChromaticity));
4143 ACESMasteringDisplayWhitePointChromaticity.set_has_value( result == RESULT_OK );
4145 if ( ASDCP_SUCCESS(result) ) {
4146 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayMaximumLuminance));
4147 ACESMasteringDisplayMaximumLuminance.set_has_value( result == RESULT_OK );
4149 if ( ASDCP_SUCCESS(result) ) {
4150 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayMinimumLuminance));
4151 ACESMasteringDisplayMinimumLuminance.set_has_value( result == RESULT_OK );
4158 ACESPictureSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
4161 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
4162 if ( ASDCP_SUCCESS(result) && ! ACESAuthoringInformation.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(ACESPictureSubDescriptor, ACESAuthoringInformation));
4163 if ( ASDCP_SUCCESS(result) && ! ACESMasteringDisplayPrimaries.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayPrimaries));
4164 if ( ASDCP_SUCCESS(result) && ! ACESMasteringDisplayWhitePointChromaticity.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayWhitePointChromaticity));
4165 if ( ASDCP_SUCCESS(result) && ! ACESMasteringDisplayMaximumLuminance.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayMaximumLuminance));
4166 if ( ASDCP_SUCCESS(result) && ! ACESMasteringDisplayMinimumLuminance.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayMinimumLuminance));
4172 ACESPictureSubDescriptor::Copy(const ACESPictureSubDescriptor& rhs)
4174 InterchangeObject::Copy(rhs);
4175 ACESAuthoringInformation = rhs.ACESAuthoringInformation;
4176 ACESMasteringDisplayPrimaries = rhs.ACESMasteringDisplayPrimaries;
4177 ACESMasteringDisplayWhitePointChromaticity = rhs.ACESMasteringDisplayWhitePointChromaticity;
4178 ACESMasteringDisplayMaximumLuminance = rhs.ACESMasteringDisplayMaximumLuminance;
4179 ACESMasteringDisplayMinimumLuminance = rhs.ACESMasteringDisplayMinimumLuminance;
4184 ACESPictureSubDescriptor::Dump(FILE* stream)
4186 char identbuf[IdentBufferLen];
4192 InterchangeObject::Dump(stream);
4193 if ( ! ACESAuthoringInformation.empty() ) {
4194 fprintf(stream, " %22s = %s\n", "ACESAuthoringInformation", ACESAuthoringInformation.get().EncodeString(identbuf, IdentBufferLen));
4196 if ( ! ACESMasteringDisplayPrimaries.empty() ) {
4197 fprintf(stream, " %22s = %s\n", "ACESMasteringDisplayPrimaries", ACESMasteringDisplayPrimaries.get().EncodeString(identbuf, IdentBufferLen));
4199 if ( ! ACESMasteringDisplayWhitePointChromaticity.empty() ) {
4200 fprintf(stream, " %22s = %s\n", "ACESMasteringDisplayWhitePointChromaticity", ACESMasteringDisplayWhitePointChromaticity.get().EncodeString(identbuf, IdentBufferLen));
4202 if ( ! ACESMasteringDisplayMaximumLuminance.empty() ) {
4203 fprintf(stream, " %22s = %d\n", "ACESMasteringDisplayMaximumLuminance", ACESMasteringDisplayMaximumLuminance.get());
4205 if ( ! ACESMasteringDisplayMinimumLuminance.empty() ) {
4206 fprintf(stream, " %22s = %d\n", "ACESMasteringDisplayMinimumLuminance", ACESMasteringDisplayMinimumLuminance.get());
4212 ACESPictureSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
4214 return InterchangeObject::InitFromBuffer(p, l);
4219 ACESPictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4221 return InterchangeObject::WriteToBuffer(Buffer);
4224 //------------------------------------------------------------------------------------------
4225 // TargetFrameSubDescriptor
4229 TargetFrameSubDescriptor::TargetFrameSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), TargetFrameIndex(0), TargetFrameComponentMaxRef(0), TargetFrameComponentMinRef(0), TargetFrameEssenceStreamID(0)
4232 m_UL = m_Dict->ul(MDD_TargetFrameSubDescriptor);
4235 TargetFrameSubDescriptor::TargetFrameSubDescriptor(const TargetFrameSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
4238 m_UL = m_Dict->ul(MDD_TargetFrameSubDescriptor);
4245 TargetFrameSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
4248 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
4249 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameAncillaryResourceID));
4250 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TargetFrameSubDescriptor, MediaType));
4251 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameIndex));
4252 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameTransferCharacteristic));
4253 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameColorPrimaries));
4254 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameComponentMaxRef));
4255 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameComponentMinRef));
4256 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameEssenceStreamID));
4257 if ( ASDCP_SUCCESS(result) ) {
4258 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(TargetFrameSubDescriptor, ACESPictureSubDescriptorInstanceID));
4259 ACESPictureSubDescriptorInstanceID.set_has_value( result == RESULT_OK );
4261 if ( ASDCP_SUCCESS(result) ) {
4262 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(TargetFrameSubDescriptor, TargetFrameViewingEnvironment));
4263 TargetFrameViewingEnvironment.set_has_value( result == RESULT_OK );
4270 TargetFrameSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
4273 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
4274 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameAncillaryResourceID));
4275 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, MediaType));
4276 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameIndex));
4277 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameTransferCharacteristic));
4278 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameColorPrimaries));
4279 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameComponentMaxRef));
4280 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameComponentMinRef));
4281 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameEssenceStreamID));
4282 if ( ASDCP_SUCCESS(result) && ! ACESPictureSubDescriptorInstanceID.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(TargetFrameSubDescriptor, ACESPictureSubDescriptorInstanceID));
4283 if ( ASDCP_SUCCESS(result) && ! TargetFrameViewingEnvironment.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(TargetFrameSubDescriptor, TargetFrameViewingEnvironment));
4289 TargetFrameSubDescriptor::Copy(const TargetFrameSubDescriptor& rhs)
4291 InterchangeObject::Copy(rhs);
4292 TargetFrameAncillaryResourceID = rhs.TargetFrameAncillaryResourceID;
4293 MediaType = rhs.MediaType;
4294 TargetFrameIndex = rhs.TargetFrameIndex;
4295 TargetFrameTransferCharacteristic = rhs.TargetFrameTransferCharacteristic;
4296 TargetFrameColorPrimaries = rhs.TargetFrameColorPrimaries;
4297 TargetFrameComponentMaxRef = rhs.TargetFrameComponentMaxRef;
4298 TargetFrameComponentMinRef = rhs.TargetFrameComponentMinRef;
4299 TargetFrameEssenceStreamID = rhs.TargetFrameEssenceStreamID;
4300 ACESPictureSubDescriptorInstanceID = rhs.ACESPictureSubDescriptorInstanceID;
4301 TargetFrameViewingEnvironment = rhs.TargetFrameViewingEnvironment;
4306 TargetFrameSubDescriptor::Dump(FILE* stream)
4308 char identbuf[IdentBufferLen];
4314 InterchangeObject::Dump(stream);
4315 fprintf(stream, " %22s = %s\n", "TargetFrameAncillaryResourceID", TargetFrameAncillaryResourceID.EncodeString(identbuf, IdentBufferLen));
4316 fprintf(stream, " %22s = %s\n", "MediaType", MediaType.EncodeString(identbuf, IdentBufferLen));
4317 fprintf(stream, " %22s = %s\n", "TargetFrameIndex", i64sz(TargetFrameIndex, identbuf));
4318 fprintf(stream, " %22s = %s\n", "TargetFrameTransferCharacteristic", TargetFrameTransferCharacteristic.EncodeString(identbuf, IdentBufferLen));
4319 fprintf(stream, " %22s = %s\n", "TargetFrameColorPrimaries", TargetFrameColorPrimaries.EncodeString(identbuf, IdentBufferLen));
4320 fprintf(stream, " %22s = %d\n", "TargetFrameComponentMaxRef", TargetFrameComponentMaxRef);
4321 fprintf(stream, " %22s = %d\n", "TargetFrameComponentMinRef", TargetFrameComponentMinRef);
4322 fprintf(stream, " %22s = %d\n", "TargetFrameEssenceStreamID", TargetFrameEssenceStreamID);
4323 if ( ! ACESPictureSubDescriptorInstanceID.empty() ) {
4324 fprintf(stream, " %22s = %s\n", "ACESPictureSubDescriptorInstanceID", ACESPictureSubDescriptorInstanceID.get().EncodeString(identbuf, IdentBufferLen));
4326 if ( ! TargetFrameViewingEnvironment.empty() ) {
4327 fprintf(stream, " %22s = %s\n", "TargetFrameViewingEnvironment", TargetFrameViewingEnvironment.get().EncodeString(identbuf, IdentBufferLen));
4333 TargetFrameSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
4335 return InterchangeObject::InitFromBuffer(p, l);
4340 TargetFrameSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4342 return InterchangeObject::WriteToBuffer(Buffer);
4345 //------------------------------------------------------------------------------------------
4346 // TextBasedDMFramework
4350 TextBasedDMFramework::TextBasedDMFramework(const Dictionary*& d) : DescriptiveFramework(d), m_Dict(d)
4353 m_UL = m_Dict->ul(MDD_TextBasedDMFramework);
4356 TextBasedDMFramework::TextBasedDMFramework(const TextBasedDMFramework& rhs) : DescriptiveFramework(rhs.m_Dict), m_Dict(rhs.m_Dict)
4359 m_UL = m_Dict->ul(MDD_TextBasedDMFramework);
4366 TextBasedDMFramework::InitFromTLVSet(TLVReader& TLVSet)
4369 Result_t result = DescriptiveFramework::InitFromTLVSet(TLVSet);
4370 if ( ASDCP_SUCCESS(result) ) {
4371 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(TextBasedDMFramework, ObjectRef));
4372 ObjectRef.set_has_value( result == RESULT_OK );
4379 TextBasedDMFramework::WriteToTLVSet(TLVWriter& TLVSet)
4382 Result_t result = DescriptiveFramework::WriteToTLVSet(TLVSet);
4383 if ( ASDCP_SUCCESS(result) && ! ObjectRef.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(TextBasedDMFramework, ObjectRef));
4389 TextBasedDMFramework::Copy(const TextBasedDMFramework& rhs)
4391 DescriptiveFramework::Copy(rhs);
4392 ObjectRef = rhs.ObjectRef;
4397 TextBasedDMFramework::Dump(FILE* stream)
4399 char identbuf[IdentBufferLen];
4405 DescriptiveFramework::Dump(stream);
4406 if ( ! ObjectRef.empty() ) {
4407 fprintf(stream, " %22s = %s\n", "ObjectRef", ObjectRef.get().EncodeString(identbuf, IdentBufferLen));
4413 TextBasedDMFramework::InitFromBuffer(const byte_t* p, ui32_t l)
4415 return InterchangeObject::InitFromBuffer(p, l);
4420 TextBasedDMFramework::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4422 return InterchangeObject::WriteToBuffer(Buffer);
4425 //------------------------------------------------------------------------------------------
4430 TextBasedObject::TextBasedObject(const Dictionary*& d) : DescriptiveObject(d), m_Dict(d)
4433 m_UL = m_Dict->ul(MDD_TextBasedObject);
4436 TextBasedObject::TextBasedObject(const TextBasedObject& rhs) : DescriptiveObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
4439 m_UL = m_Dict->ul(MDD_TextBasedObject);
4446 TextBasedObject::InitFromTLVSet(TLVReader& TLVSet)
4449 Result_t result = DescriptiveObject::InitFromTLVSet(TLVSet);
4450 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TextBasedObject, PayloadSchemeID));
4451 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TextBasedObject, TextMIMEMediaType));
4452 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TextBasedObject, RFC5646TextLanguageCode));
4453 if ( ASDCP_SUCCESS(result) ) {
4454 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(TextBasedObject, TextDataDescription));
4455 TextDataDescription.set_has_value( result == RESULT_OK );
4462 TextBasedObject::WriteToTLVSet(TLVWriter& TLVSet)
4465 Result_t result = DescriptiveObject::WriteToTLVSet(TLVSet);
4466 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TextBasedObject, PayloadSchemeID));
4467 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TextBasedObject, TextMIMEMediaType));
4468 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TextBasedObject, RFC5646TextLanguageCode));
4469 if ( ASDCP_SUCCESS(result) && ! TextDataDescription.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(TextBasedObject, TextDataDescription));
4475 TextBasedObject::Copy(const TextBasedObject& rhs)
4477 DescriptiveObject::Copy(rhs);
4478 PayloadSchemeID = rhs.PayloadSchemeID;
4479 TextMIMEMediaType = rhs.TextMIMEMediaType;
4480 RFC5646TextLanguageCode = rhs.RFC5646TextLanguageCode;
4481 TextDataDescription = rhs.TextDataDescription;
4486 TextBasedObject::Dump(FILE* stream)
4488 char identbuf[IdentBufferLen];
4494 DescriptiveObject::Dump(stream);
4495 fprintf(stream, " %22s = %s\n", "PayloadSchemeID", PayloadSchemeID.EncodeString(identbuf, IdentBufferLen));
4496 fprintf(stream, " %22s = %s\n", "TextMIMEMediaType", TextMIMEMediaType.EncodeString(identbuf, IdentBufferLen));
4497 fprintf(stream, " %22s = %s\n", "RFC5646TextLanguageCode", RFC5646TextLanguageCode.EncodeString(identbuf, IdentBufferLen));
4498 if ( ! TextDataDescription.empty() ) {
4499 fprintf(stream, " %22s = %s\n", "TextDataDescription", TextDataDescription.get().EncodeString(identbuf, IdentBufferLen));
4505 TextBasedObject::InitFromBuffer(const byte_t* p, ui32_t l)
4507 return InterchangeObject::InitFromBuffer(p, l);
4512 TextBasedObject::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4514 return InterchangeObject::WriteToBuffer(Buffer);
4517 //------------------------------------------------------------------------------------------
4518 // GenericStreamTextBasedSet
4522 GenericStreamTextBasedSet::GenericStreamTextBasedSet(const Dictionary*& d) : TextBasedObject(d), m_Dict(d), GenericStreamSID(0)
4525 m_UL = m_Dict->ul(MDD_GenericStreamTextBasedSet);
4528 GenericStreamTextBasedSet::GenericStreamTextBasedSet(const GenericStreamTextBasedSet& rhs) : TextBasedObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
4531 m_UL = m_Dict->ul(MDD_GenericStreamTextBasedSet);
4538 GenericStreamTextBasedSet::InitFromTLVSet(TLVReader& TLVSet)
4541 Result_t result = TextBasedObject::InitFromTLVSet(TLVSet);
4542 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericStreamTextBasedSet, GenericStreamSID));
4548 GenericStreamTextBasedSet::WriteToTLVSet(TLVWriter& TLVSet)
4551 Result_t result = TextBasedObject::WriteToTLVSet(TLVSet);
4552 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericStreamTextBasedSet, GenericStreamSID));
4558 GenericStreamTextBasedSet::Copy(const GenericStreamTextBasedSet& rhs)
4560 TextBasedObject::Copy(rhs);
4561 GenericStreamSID = rhs.GenericStreamSID;
4566 GenericStreamTextBasedSet::Dump(FILE* stream)
4568 char identbuf[IdentBufferLen];
4574 TextBasedObject::Dump(stream);
4575 fprintf(stream, " %22s = %d\n", "GenericStreamSID", GenericStreamSID);
4580 GenericStreamTextBasedSet::InitFromBuffer(const byte_t* p, ui32_t l)
4582 return InterchangeObject::InitFromBuffer(p, l);
4587 GenericStreamTextBasedSet::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4589 return InterchangeObject::WriteToBuffer(Buffer);
4592 //------------------------------------------------------------------------------------------
4593 // ISXDDataEssenceDescriptor
4597 ISXDDataEssenceDescriptor::ISXDDataEssenceDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d)
4600 m_UL = m_Dict->ul(MDD_ISXDDataEssenceDescriptor);
4603 ISXDDataEssenceDescriptor::ISXDDataEssenceDescriptor(const ISXDDataEssenceDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
4606 m_UL = m_Dict->ul(MDD_ISXDDataEssenceDescriptor);
4613 ISXDDataEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
4616 Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet);
4617 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(ISXDDataEssenceDescriptor, NamespaceURI));
4623 ISXDDataEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
4626 Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet);
4627 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(ISXDDataEssenceDescriptor, NamespaceURI));
4633 ISXDDataEssenceDescriptor::Copy(const ISXDDataEssenceDescriptor& rhs)
4635 GenericDataEssenceDescriptor::Copy(rhs);
4636 NamespaceURI = rhs.NamespaceURI;
4641 ISXDDataEssenceDescriptor::Dump(FILE* stream)
4643 char identbuf[IdentBufferLen];
4649 GenericDataEssenceDescriptor::Dump(stream);
4650 fprintf(stream, " %22s = %s\n", "NamespaceURI", NamespaceURI.EncodeString(identbuf, IdentBufferLen));
4655 ISXDDataEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
4657 return InterchangeObject::InitFromBuffer(p, l);
4662 ISXDDataEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4664 return InterchangeObject::WriteToBuffer(Buffer);
4667 //------------------------------------------------------------------------------------------
4668 // PHDRMetadataTrackSubDescriptor
4672 PHDRMetadataTrackSubDescriptor::PHDRMetadataTrackSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), SourceTrackID(0), SimplePayloadSID(0)
4675 m_UL = m_Dict->ul(MDD_PHDRMetadataTrackSubDescriptor);
4678 PHDRMetadataTrackSubDescriptor::PHDRMetadataTrackSubDescriptor(const PHDRMetadataTrackSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
4681 m_UL = m_Dict->ul(MDD_PHDRMetadataTrackSubDescriptor);
4688 PHDRMetadataTrackSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
4691 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
4692 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(PHDRMetadataTrackSubDescriptor, DataDefinition));
4693 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(PHDRMetadataTrackSubDescriptor, SourceTrackID));
4694 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(PHDRMetadataTrackSubDescriptor, SimplePayloadSID));
4700 PHDRMetadataTrackSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
4703 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
4704 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(PHDRMetadataTrackSubDescriptor, DataDefinition));
4705 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(PHDRMetadataTrackSubDescriptor, SourceTrackID));
4706 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(PHDRMetadataTrackSubDescriptor, SimplePayloadSID));
4712 PHDRMetadataTrackSubDescriptor::Copy(const PHDRMetadataTrackSubDescriptor& rhs)
4714 InterchangeObject::Copy(rhs);
4715 DataDefinition = rhs.DataDefinition;
4716 SourceTrackID = rhs.SourceTrackID;
4717 SimplePayloadSID = rhs.SimplePayloadSID;
4722 PHDRMetadataTrackSubDescriptor::Dump(FILE* stream)
4724 char identbuf[IdentBufferLen];
4730 InterchangeObject::Dump(stream);
4731 fprintf(stream, " %22s = %s\n", "DataDefinition", DataDefinition.EncodeString(identbuf, IdentBufferLen));
4732 fprintf(stream, " %22s = %d\n", "SourceTrackID", SourceTrackID);
4733 fprintf(stream, " %22s = %d\n", "SimplePayloadSID", SimplePayloadSID);
4738 PHDRMetadataTrackSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
4740 return InterchangeObject::InitFromBuffer(p, l);
4745 PHDRMetadataTrackSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4747 return InterchangeObject::WriteToBuffer(Buffer);
4750 //------------------------------------------------------------------------------------------
4751 // PIMFDynamicMetadataDescriptor
4755 PIMFDynamicMetadataDescriptor::PIMFDynamicMetadataDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d), GlobalPayloadSID(0)
4758 m_UL = m_Dict->ul(MDD_PIMFDynamicMetadataDescriptor);
4761 PIMFDynamicMetadataDescriptor::PIMFDynamicMetadataDescriptor(const PIMFDynamicMetadataDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
4764 m_UL = m_Dict->ul(MDD_PIMFDynamicMetadataDescriptor);
4771 PIMFDynamicMetadataDescriptor::InitFromTLVSet(TLVReader& TLVSet)
4774 Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet);
4775 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(PIMFDynamicMetadataDescriptor, GlobalPayloadSID));
4781 PIMFDynamicMetadataDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
4784 Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet);
4785 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(PIMFDynamicMetadataDescriptor, GlobalPayloadSID));
4791 PIMFDynamicMetadataDescriptor::Copy(const PIMFDynamicMetadataDescriptor& rhs)
4793 GenericDataEssenceDescriptor::Copy(rhs);
4794 GlobalPayloadSID = rhs.GlobalPayloadSID;
4799 PIMFDynamicMetadataDescriptor::Dump(FILE* stream)
4801 char identbuf[IdentBufferLen];
4807 GenericDataEssenceDescriptor::Dump(stream);
4808 fprintf(stream, " %22s = %d\n", "GlobalPayloadSID", GlobalPayloadSID);
4813 PIMFDynamicMetadataDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
4815 return InterchangeObject::InitFromBuffer(p, l);
4820 PIMFDynamicMetadataDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4822 return InterchangeObject::WriteToBuffer(Buffer);