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 );
2133 JPEG2000PictureSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2136 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2137 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Rsize));
2138 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Xsize));
2139 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Ysize));
2140 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XOsize));
2141 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YOsize));
2142 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XTsize));
2143 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YTsize));
2144 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XTOsize));
2145 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YTOsize));
2146 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Csize));
2147 if ( ASDCP_SUCCESS(result) && ! PictureComponentSizing.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, PictureComponentSizing));
2148 if ( ASDCP_SUCCESS(result) && ! CodingStyleDefault.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, CodingStyleDefault));
2149 if ( ASDCP_SUCCESS(result) && ! QuantizationDefault.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, QuantizationDefault));
2150 if ( ASDCP_SUCCESS(result) && ! J2CLayout.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, J2CLayout));
2156 JPEG2000PictureSubDescriptor::Copy(const JPEG2000PictureSubDescriptor& rhs)
2158 InterchangeObject::Copy(rhs);
2162 XOsize = rhs.XOsize;
2163 YOsize = rhs.YOsize;
2164 XTsize = rhs.XTsize;
2165 YTsize = rhs.YTsize;
2166 XTOsize = rhs.XTOsize;
2167 YTOsize = rhs.YTOsize;
2169 PictureComponentSizing = rhs.PictureComponentSizing;
2170 CodingStyleDefault = rhs.CodingStyleDefault;
2171 QuantizationDefault = rhs.QuantizationDefault;
2172 J2CLayout = rhs.J2CLayout;
2177 JPEG2000PictureSubDescriptor::Dump(FILE* stream)
2179 char identbuf[IdentBufferLen];
2185 InterchangeObject::Dump(stream);
2186 fprintf(stream, " %22s = %d\n", "Rsize", Rsize);
2187 fprintf(stream, " %22s = %d\n", "Xsize", Xsize);
2188 fprintf(stream, " %22s = %d\n", "Ysize", Ysize);
2189 fprintf(stream, " %22s = %d\n", "XOsize", XOsize);
2190 fprintf(stream, " %22s = %d\n", "YOsize", YOsize);
2191 fprintf(stream, " %22s = %d\n", "XTsize", XTsize);
2192 fprintf(stream, " %22s = %d\n", "YTsize", YTsize);
2193 fprintf(stream, " %22s = %d\n", "XTOsize", XTOsize);
2194 fprintf(stream, " %22s = %d\n", "YTOsize", YTOsize);
2195 fprintf(stream, " %22s = %d\n", "Csize", Csize);
2196 if ( ! PictureComponentSizing.empty() ) {
2197 fprintf(stream, " %22s = %s\n", "PictureComponentSizing", PictureComponentSizing.get().EncodeString(identbuf, IdentBufferLen));
2199 if ( ! CodingStyleDefault.empty() ) {
2200 fprintf(stream, " %22s = %s\n", "CodingStyleDefault", CodingStyleDefault.get().EncodeString(identbuf, IdentBufferLen));
2202 if ( ! QuantizationDefault.empty() ) {
2203 fprintf(stream, " %22s = %s\n", "QuantizationDefault", QuantizationDefault.get().EncodeString(identbuf, IdentBufferLen));
2205 if ( ! J2CLayout.empty() ) {
2206 fprintf(stream, " %22s = %s\n", "J2CLayout", J2CLayout.get().EncodeString(identbuf, IdentBufferLen));
2212 JPEG2000PictureSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
2214 return InterchangeObject::InitFromBuffer(p, l);
2219 JPEG2000PictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2221 return InterchangeObject::WriteToBuffer(Buffer);
2224 //------------------------------------------------------------------------------------------
2225 // CDCIEssenceDescriptor
2229 CDCIEssenceDescriptor::CDCIEssenceDescriptor(const Dictionary*& d) : GenericPictureEssenceDescriptor(d), m_Dict(d), ComponentDepth(0), HorizontalSubsampling(0)
2232 m_UL = m_Dict->ul(MDD_CDCIEssenceDescriptor);
2235 CDCIEssenceDescriptor::CDCIEssenceDescriptor(const CDCIEssenceDescriptor& rhs) : GenericPictureEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
2238 m_UL = m_Dict->ul(MDD_CDCIEssenceDescriptor);
2245 CDCIEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
2248 Result_t result = GenericPictureEssenceDescriptor::InitFromTLVSet(TLVSet);
2249 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, ComponentDepth));
2250 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, HorizontalSubsampling));
2251 if ( ASDCP_SUCCESS(result) ) {
2252 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, VerticalSubsampling));
2253 VerticalSubsampling.set_has_value( result == RESULT_OK );
2255 if ( ASDCP_SUCCESS(result) ) {
2256 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, ColorSiting));
2257 ColorSiting.set_has_value( result == RESULT_OK );
2259 if ( ASDCP_SUCCESS(result) ) {
2260 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, ReversedByteOrder));
2261 ReversedByteOrder.set_has_value( result == RESULT_OK );
2263 if ( ASDCP_SUCCESS(result) ) {
2264 result = TLVSet.ReadUi16(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, PaddingBits));
2265 PaddingBits.set_has_value( result == RESULT_OK );
2267 if ( ASDCP_SUCCESS(result) ) {
2268 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, AlphaSampleDepth));
2269 AlphaSampleDepth.set_has_value( result == RESULT_OK );
2271 if ( ASDCP_SUCCESS(result) ) {
2272 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, BlackRefLevel));
2273 BlackRefLevel.set_has_value( result == RESULT_OK );
2275 if ( ASDCP_SUCCESS(result) ) {
2276 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, WhiteReflevel));
2277 WhiteReflevel.set_has_value( result == RESULT_OK );
2279 if ( ASDCP_SUCCESS(result) ) {
2280 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, ColorRange));
2281 ColorRange.set_has_value( result == RESULT_OK );
2288 CDCIEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2291 Result_t result = GenericPictureEssenceDescriptor::WriteToTLVSet(TLVSet);
2292 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, ComponentDepth));
2293 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, HorizontalSubsampling));
2294 if ( ASDCP_SUCCESS(result) && ! VerticalSubsampling.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, VerticalSubsampling));
2295 if ( ASDCP_SUCCESS(result) && ! ColorSiting.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, ColorSiting));
2296 if ( ASDCP_SUCCESS(result) && ! ReversedByteOrder.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, ReversedByteOrder));
2297 if ( ASDCP_SUCCESS(result) && ! PaddingBits.empty() ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, PaddingBits));
2298 if ( ASDCP_SUCCESS(result) && ! AlphaSampleDepth.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, AlphaSampleDepth));
2299 if ( ASDCP_SUCCESS(result) && ! BlackRefLevel.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, BlackRefLevel));
2300 if ( ASDCP_SUCCESS(result) && ! WhiteReflevel.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, WhiteReflevel));
2301 if ( ASDCP_SUCCESS(result) && ! ColorRange.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, ColorRange));
2307 CDCIEssenceDescriptor::Copy(const CDCIEssenceDescriptor& rhs)
2309 GenericPictureEssenceDescriptor::Copy(rhs);
2310 ComponentDepth = rhs.ComponentDepth;
2311 HorizontalSubsampling = rhs.HorizontalSubsampling;
2312 VerticalSubsampling = rhs.VerticalSubsampling;
2313 ColorSiting = rhs.ColorSiting;
2314 ReversedByteOrder = rhs.ReversedByteOrder;
2315 PaddingBits = rhs.PaddingBits;
2316 AlphaSampleDepth = rhs.AlphaSampleDepth;
2317 BlackRefLevel = rhs.BlackRefLevel;
2318 WhiteReflevel = rhs.WhiteReflevel;
2319 ColorRange = rhs.ColorRange;
2324 CDCIEssenceDescriptor::Dump(FILE* stream)
2326 char identbuf[IdentBufferLen];
2332 GenericPictureEssenceDescriptor::Dump(stream);
2333 fprintf(stream, " %22s = %d\n", "ComponentDepth", ComponentDepth);
2334 fprintf(stream, " %22s = %d\n", "HorizontalSubsampling", HorizontalSubsampling);
2335 if ( ! VerticalSubsampling.empty() ) {
2336 fprintf(stream, " %22s = %d\n", "VerticalSubsampling", VerticalSubsampling.get());
2338 if ( ! ColorSiting.empty() ) {
2339 fprintf(stream, " %22s = %d\n", "ColorSiting", ColorSiting.get());
2341 if ( ! ReversedByteOrder.empty() ) {
2342 fprintf(stream, " %22s = %d\n", "ReversedByteOrder", ReversedByteOrder.get());
2344 if ( ! PaddingBits.empty() ) {
2345 fprintf(stream, " %22s = %d\n", "PaddingBits", PaddingBits.get());
2347 if ( ! AlphaSampleDepth.empty() ) {
2348 fprintf(stream, " %22s = %d\n", "AlphaSampleDepth", AlphaSampleDepth.get());
2350 if ( ! BlackRefLevel.empty() ) {
2351 fprintf(stream, " %22s = %d\n", "BlackRefLevel", BlackRefLevel.get());
2353 if ( ! WhiteReflevel.empty() ) {
2354 fprintf(stream, " %22s = %d\n", "WhiteReflevel", WhiteReflevel.get());
2356 if ( ! ColorRange.empty() ) {
2357 fprintf(stream, " %22s = %d\n", "ColorRange", ColorRange.get());
2363 CDCIEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
2365 return InterchangeObject::InitFromBuffer(p, l);
2370 CDCIEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2372 return InterchangeObject::WriteToBuffer(Buffer);
2375 //------------------------------------------------------------------------------------------
2376 // MPEG2VideoDescriptor
2380 MPEG2VideoDescriptor::MPEG2VideoDescriptor(const Dictionary*& d) : CDCIEssenceDescriptor(d), m_Dict(d)
2383 m_UL = m_Dict->ul(MDD_MPEG2VideoDescriptor);
2386 MPEG2VideoDescriptor::MPEG2VideoDescriptor(const MPEG2VideoDescriptor& rhs) : CDCIEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
2389 m_UL = m_Dict->ul(MDD_MPEG2VideoDescriptor);
2396 MPEG2VideoDescriptor::InitFromTLVSet(TLVReader& TLVSet)
2399 Result_t result = CDCIEssenceDescriptor::InitFromTLVSet(TLVSet);
2400 if ( ASDCP_SUCCESS(result) ) {
2401 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, SingleSequence));
2402 SingleSequence.set_has_value( result == RESULT_OK );
2404 if ( ASDCP_SUCCESS(result) ) {
2405 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, ConstantBFrames));
2406 ConstantBFrames.set_has_value( result == RESULT_OK );
2408 if ( ASDCP_SUCCESS(result) ) {
2409 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, CodedContentType));
2410 CodedContentType.set_has_value( result == RESULT_OK );
2412 if ( ASDCP_SUCCESS(result) ) {
2413 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, LowDelay));
2414 LowDelay.set_has_value( result == RESULT_OK );
2416 if ( ASDCP_SUCCESS(result) ) {
2417 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, ClosedGOP));
2418 ClosedGOP.set_has_value( result == RESULT_OK );
2420 if ( ASDCP_SUCCESS(result) ) {
2421 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, IdenticalGOP));
2422 IdenticalGOP.set_has_value( result == RESULT_OK );
2424 if ( ASDCP_SUCCESS(result) ) {
2425 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, MaxGOP));
2426 MaxGOP.set_has_value( result == RESULT_OK );
2428 if ( ASDCP_SUCCESS(result) ) {
2429 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, BPictureCount));
2430 BPictureCount.set_has_value( result == RESULT_OK );
2432 if ( ASDCP_SUCCESS(result) ) {
2433 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, BitRate));
2434 BitRate.set_has_value( result == RESULT_OK );
2436 if ( ASDCP_SUCCESS(result) ) {
2437 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, ProfileAndLevel));
2438 ProfileAndLevel.set_has_value( result == RESULT_OK );
2445 MPEG2VideoDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2448 Result_t result = CDCIEssenceDescriptor::WriteToTLVSet(TLVSet);
2449 if ( ASDCP_SUCCESS(result) && ! SingleSequence.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, SingleSequence));
2450 if ( ASDCP_SUCCESS(result) && ! ConstantBFrames.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, ConstantBFrames));
2451 if ( ASDCP_SUCCESS(result) && ! CodedContentType.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, CodedContentType));
2452 if ( ASDCP_SUCCESS(result) && ! LowDelay.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, LowDelay));
2453 if ( ASDCP_SUCCESS(result) && ! ClosedGOP.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, ClosedGOP));
2454 if ( ASDCP_SUCCESS(result) && ! IdenticalGOP.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, IdenticalGOP));
2455 if ( ASDCP_SUCCESS(result) && ! MaxGOP.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, MaxGOP));
2456 if ( ASDCP_SUCCESS(result) && ! BPictureCount.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, BPictureCount));
2457 if ( ASDCP_SUCCESS(result) && ! BitRate.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, BitRate));
2458 if ( ASDCP_SUCCESS(result) && ! ProfileAndLevel.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, ProfileAndLevel));
2464 MPEG2VideoDescriptor::Copy(const MPEG2VideoDescriptor& rhs)
2466 CDCIEssenceDescriptor::Copy(rhs);
2467 SingleSequence = rhs.SingleSequence;
2468 ConstantBFrames = rhs.ConstantBFrames;
2469 CodedContentType = rhs.CodedContentType;
2470 LowDelay = rhs.LowDelay;
2471 ClosedGOP = rhs.ClosedGOP;
2472 IdenticalGOP = rhs.IdenticalGOP;
2473 MaxGOP = rhs.MaxGOP;
2474 BPictureCount = rhs.BPictureCount;
2475 BitRate = rhs.BitRate;
2476 ProfileAndLevel = rhs.ProfileAndLevel;
2481 MPEG2VideoDescriptor::Dump(FILE* stream)
2483 char identbuf[IdentBufferLen];
2489 CDCIEssenceDescriptor::Dump(stream);
2490 if ( ! SingleSequence.empty() ) {
2491 fprintf(stream, " %22s = %d\n", "SingleSequence", SingleSequence.get());
2493 if ( ! ConstantBFrames.empty() ) {
2494 fprintf(stream, " %22s = %d\n", "ConstantBFrames", ConstantBFrames.get());
2496 if ( ! CodedContentType.empty() ) {
2497 fprintf(stream, " %22s = %d\n", "CodedContentType", CodedContentType.get());
2499 if ( ! LowDelay.empty() ) {
2500 fprintf(stream, " %22s = %d\n", "LowDelay", LowDelay.get());
2502 if ( ! ClosedGOP.empty() ) {
2503 fprintf(stream, " %22s = %d\n", "ClosedGOP", ClosedGOP.get());
2505 if ( ! IdenticalGOP.empty() ) {
2506 fprintf(stream, " %22s = %d\n", "IdenticalGOP", IdenticalGOP.get());
2508 if ( ! MaxGOP.empty() ) {
2509 fprintf(stream, " %22s = %d\n", "MaxGOP", MaxGOP.get());
2511 if ( ! BPictureCount.empty() ) {
2512 fprintf(stream, " %22s = %d\n", "BPictureCount", BPictureCount.get());
2514 if ( ! BitRate.empty() ) {
2515 fprintf(stream, " %22s = %d\n", "BitRate", BitRate.get());
2517 if ( ! ProfileAndLevel.empty() ) {
2518 fprintf(stream, " %22s = %d\n", "ProfileAndLevel", ProfileAndLevel.get());
2524 MPEG2VideoDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
2526 return InterchangeObject::InitFromBuffer(p, l);
2531 MPEG2VideoDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2533 return InterchangeObject::WriteToBuffer(Buffer);
2536 //------------------------------------------------------------------------------------------
2541 DMSegment::DMSegment(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
2544 m_UL = m_Dict->ul(MDD_DMSegment);
2547 DMSegment::DMSegment(const DMSegment& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2550 m_UL = m_Dict->ul(MDD_DMSegment);
2557 DMSegment::InitFromTLVSet(TLVReader& TLVSet)
2560 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2561 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DMSegment, DataDefinition));
2562 if ( ASDCP_SUCCESS(result) ) {
2563 result = TLVSet.ReadUi64(OBJ_READ_ARGS_OPT(DMSegment, Duration));
2564 Duration.set_has_value( result == RESULT_OK );
2566 if ( ASDCP_SUCCESS(result) ) {
2567 result = TLVSet.ReadUi64(OBJ_READ_ARGS_OPT(DMSegment, EventStartPosition));
2568 EventStartPosition.set_has_value( result == RESULT_OK );
2570 if ( ASDCP_SUCCESS(result) ) {
2571 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(DMSegment, EventComment));
2572 EventComment.set_has_value( result == RESULT_OK );
2574 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DMSegment, DMFramework));
2580 DMSegment::WriteToTLVSet(TLVWriter& TLVSet)
2583 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2584 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DMSegment, DataDefinition));
2585 if ( ASDCP_SUCCESS(result) && ! Duration.empty() ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS_OPT(DMSegment, Duration));
2586 if ( ASDCP_SUCCESS(result) && ! EventStartPosition.empty() ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS_OPT(DMSegment, EventStartPosition));
2587 if ( ASDCP_SUCCESS(result) && ! EventComment.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(DMSegment, EventComment));
2588 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DMSegment, DMFramework));
2594 DMSegment::Copy(const DMSegment& rhs)
2596 InterchangeObject::Copy(rhs);
2597 DataDefinition = rhs.DataDefinition;
2598 Duration = rhs.Duration;
2599 EventStartPosition = rhs.EventStartPosition;
2600 EventComment = rhs.EventComment;
2601 DMFramework = rhs.DMFramework;
2606 DMSegment::Dump(FILE* stream)
2608 char identbuf[IdentBufferLen];
2614 InterchangeObject::Dump(stream);
2615 fprintf(stream, " %22s = %s\n", "DataDefinition", DataDefinition.EncodeString(identbuf, IdentBufferLen));
2616 if ( ! Duration.empty() ) {
2617 fprintf(stream, " %22s = %s\n", "Duration", i64sz(Duration.get(), identbuf));
2619 if ( ! EventStartPosition.empty() ) {
2620 fprintf(stream, " %22s = %s\n", "EventStartPosition", i64sz(EventStartPosition.get(), identbuf));
2622 if ( ! EventComment.empty() ) {
2623 fprintf(stream, " %22s = %s\n", "EventComment", EventComment.get().EncodeString(identbuf, IdentBufferLen));
2625 fprintf(stream, " %22s = %s\n", "DMFramework", DMFramework.EncodeString(identbuf, IdentBufferLen));
2630 DMSegment::InitFromBuffer(const byte_t* p, ui32_t l)
2632 return InterchangeObject::InitFromBuffer(p, l);
2637 DMSegment::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2639 return InterchangeObject::WriteToBuffer(Buffer);
2642 //------------------------------------------------------------------------------------------
2643 // CryptographicFramework
2647 CryptographicFramework::CryptographicFramework(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
2650 m_UL = m_Dict->ul(MDD_CryptographicFramework);
2653 CryptographicFramework::CryptographicFramework(const CryptographicFramework& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2656 m_UL = m_Dict->ul(MDD_CryptographicFramework);
2663 CryptographicFramework::InitFromTLVSet(TLVReader& TLVSet)
2666 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2667 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicFramework, ContextSR));
2673 CryptographicFramework::WriteToTLVSet(TLVWriter& TLVSet)
2676 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2677 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicFramework, ContextSR));
2683 CryptographicFramework::Copy(const CryptographicFramework& rhs)
2685 InterchangeObject::Copy(rhs);
2686 ContextSR = rhs.ContextSR;
2691 CryptographicFramework::Dump(FILE* stream)
2693 char identbuf[IdentBufferLen];
2699 InterchangeObject::Dump(stream);
2700 fprintf(stream, " %22s = %s\n", "ContextSR", ContextSR.EncodeString(identbuf, IdentBufferLen));
2705 CryptographicFramework::InitFromBuffer(const byte_t* p, ui32_t l)
2707 return InterchangeObject::InitFromBuffer(p, l);
2712 CryptographicFramework::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2714 return InterchangeObject::WriteToBuffer(Buffer);
2717 //------------------------------------------------------------------------------------------
2718 // CryptographicContext
2722 CryptographicContext::CryptographicContext(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
2725 m_UL = m_Dict->ul(MDD_CryptographicContext);
2728 CryptographicContext::CryptographicContext(const CryptographicContext& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2731 m_UL = m_Dict->ul(MDD_CryptographicContext);
2738 CryptographicContext::InitFromTLVSet(TLVReader& TLVSet)
2741 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2742 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, ContextID));
2743 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, SourceEssenceContainer));
2744 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, CipherAlgorithm));
2745 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, MICAlgorithm));
2746 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, CryptographicKeyID));
2752 CryptographicContext::WriteToTLVSet(TLVWriter& TLVSet)
2755 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2756 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, ContextID));
2757 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, SourceEssenceContainer));
2758 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, CipherAlgorithm));
2759 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, MICAlgorithm));
2760 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, CryptographicKeyID));
2766 CryptographicContext::Copy(const CryptographicContext& rhs)
2768 InterchangeObject::Copy(rhs);
2769 ContextID = rhs.ContextID;
2770 SourceEssenceContainer = rhs.SourceEssenceContainer;
2771 CipherAlgorithm = rhs.CipherAlgorithm;
2772 MICAlgorithm = rhs.MICAlgorithm;
2773 CryptographicKeyID = rhs.CryptographicKeyID;
2778 CryptographicContext::Dump(FILE* stream)
2780 char identbuf[IdentBufferLen];
2786 InterchangeObject::Dump(stream);
2787 fprintf(stream, " %22s = %s\n", "ContextID", ContextID.EncodeString(identbuf, IdentBufferLen));
2788 fprintf(stream, " %22s = %s\n", "SourceEssenceContainer", SourceEssenceContainer.EncodeString(identbuf, IdentBufferLen));
2789 fprintf(stream, " %22s = %s\n", "CipherAlgorithm", CipherAlgorithm.EncodeString(identbuf, IdentBufferLen));
2790 fprintf(stream, " %22s = %s\n", "MICAlgorithm", MICAlgorithm.EncodeString(identbuf, IdentBufferLen));
2791 fprintf(stream, " %22s = %s\n", "CryptographicKeyID", CryptographicKeyID.EncodeString(identbuf, IdentBufferLen));
2796 CryptographicContext::InitFromBuffer(const byte_t* p, ui32_t l)
2798 return InterchangeObject::InitFromBuffer(p, l);
2803 CryptographicContext::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2805 return InterchangeObject::WriteToBuffer(Buffer);
2808 //------------------------------------------------------------------------------------------
2809 // DescriptiveFramework
2813 DescriptiveFramework::DescriptiveFramework(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
2816 m_UL = m_Dict->ul(MDD_DescriptiveFramework);
2819 DescriptiveFramework::DescriptiveFramework(const DescriptiveFramework& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2822 m_UL = m_Dict->ul(MDD_DescriptiveFramework);
2829 DescriptiveFramework::InitFromTLVSet(TLVReader& TLVSet)
2832 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2833 if ( ASDCP_SUCCESS(result) ) {
2834 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(DescriptiveFramework, LinkedDescriptiveFrameworkPlugInId));
2835 LinkedDescriptiveFrameworkPlugInId.set_has_value( result == RESULT_OK );
2842 DescriptiveFramework::WriteToTLVSet(TLVWriter& TLVSet)
2845 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2846 if ( ASDCP_SUCCESS(result) && ! LinkedDescriptiveFrameworkPlugInId.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(DescriptiveFramework, LinkedDescriptiveFrameworkPlugInId));
2852 DescriptiveFramework::Copy(const DescriptiveFramework& rhs)
2854 InterchangeObject::Copy(rhs);
2855 LinkedDescriptiveFrameworkPlugInId = rhs.LinkedDescriptiveFrameworkPlugInId;
2860 DescriptiveFramework::Dump(FILE* stream)
2862 char identbuf[IdentBufferLen];
2868 InterchangeObject::Dump(stream);
2869 if ( ! LinkedDescriptiveFrameworkPlugInId.empty() ) {
2870 fprintf(stream, " %22s = %s\n", "LinkedDescriptiveFrameworkPlugInId", LinkedDescriptiveFrameworkPlugInId.get().EncodeString(identbuf, IdentBufferLen));
2876 DescriptiveFramework::InitFromBuffer(const byte_t* p, ui32_t l)
2878 return InterchangeObject::InitFromBuffer(p, l);
2883 DescriptiveFramework::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2885 return InterchangeObject::WriteToBuffer(Buffer);
2888 //------------------------------------------------------------------------------------------
2889 // DescriptiveObject
2893 DescriptiveObject::DescriptiveObject(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
2896 m_UL = m_Dict->ul(MDD_DescriptiveObject);
2899 DescriptiveObject::DescriptiveObject(const DescriptiveObject& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2902 m_UL = m_Dict->ul(MDD_DescriptiveObject);
2909 DescriptiveObject::InitFromTLVSet(TLVReader& TLVSet)
2912 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2913 if ( ASDCP_SUCCESS(result) ) {
2914 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(DescriptiveObject, LinkedDescriptiveObjectPlugInId));
2915 LinkedDescriptiveObjectPlugInId.set_has_value( result == RESULT_OK );
2922 DescriptiveObject::WriteToTLVSet(TLVWriter& TLVSet)
2925 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2926 if ( ASDCP_SUCCESS(result) && ! LinkedDescriptiveObjectPlugInId.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(DescriptiveObject, LinkedDescriptiveObjectPlugInId));
2932 DescriptiveObject::Copy(const DescriptiveObject& rhs)
2934 InterchangeObject::Copy(rhs);
2935 LinkedDescriptiveObjectPlugInId = rhs.LinkedDescriptiveObjectPlugInId;
2940 DescriptiveObject::Dump(FILE* stream)
2942 char identbuf[IdentBufferLen];
2948 InterchangeObject::Dump(stream);
2949 if ( ! LinkedDescriptiveObjectPlugInId.empty() ) {
2950 fprintf(stream, " %22s = %s\n", "LinkedDescriptiveObjectPlugInId", LinkedDescriptiveObjectPlugInId.get().EncodeString(identbuf, IdentBufferLen));
2956 DescriptiveObject::InitFromBuffer(const byte_t* p, ui32_t l)
2958 return InterchangeObject::InitFromBuffer(p, l);
2963 DescriptiveObject::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2965 return InterchangeObject::WriteToBuffer(Buffer);
2968 //------------------------------------------------------------------------------------------
2969 // GenericDataEssenceDescriptor
2973 GenericDataEssenceDescriptor::GenericDataEssenceDescriptor(const Dictionary*& d) : FileDescriptor(d), m_Dict(d)
2976 m_UL = m_Dict->ul(MDD_GenericDataEssenceDescriptor);
2979 GenericDataEssenceDescriptor::GenericDataEssenceDescriptor(const GenericDataEssenceDescriptor& rhs) : FileDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
2982 m_UL = m_Dict->ul(MDD_GenericDataEssenceDescriptor);
2989 GenericDataEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
2992 Result_t result = FileDescriptor::InitFromTLVSet(TLVSet);
2993 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericDataEssenceDescriptor, DataEssenceCoding));
2999 GenericDataEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3002 Result_t result = FileDescriptor::WriteToTLVSet(TLVSet);
3003 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericDataEssenceDescriptor, DataEssenceCoding));
3009 GenericDataEssenceDescriptor::Copy(const GenericDataEssenceDescriptor& rhs)
3011 FileDescriptor::Copy(rhs);
3012 DataEssenceCoding = rhs.DataEssenceCoding;
3017 GenericDataEssenceDescriptor::Dump(FILE* stream)
3019 char identbuf[IdentBufferLen];
3025 FileDescriptor::Dump(stream);
3026 fprintf(stream, " %22s = %s\n", "DataEssenceCoding", DataEssenceCoding.EncodeString(identbuf, IdentBufferLen));
3031 GenericDataEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3033 return InterchangeObject::InitFromBuffer(p, l);
3038 GenericDataEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3040 return InterchangeObject::WriteToBuffer(Buffer);
3043 //------------------------------------------------------------------------------------------
3044 // TimedTextDescriptor
3048 TimedTextDescriptor::TimedTextDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d)
3051 m_UL = m_Dict->ul(MDD_TimedTextDescriptor);
3054 TimedTextDescriptor::TimedTextDescriptor(const TimedTextDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3057 m_UL = m_Dict->ul(MDD_TimedTextDescriptor);
3064 TimedTextDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3067 Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet);
3068 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, ResourceID));
3069 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, UCSEncoding));
3070 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, NamespaceURI));
3071 if ( ASDCP_SUCCESS(result) ) {
3072 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(TimedTextDescriptor, RFC5646LanguageTagList));
3073 RFC5646LanguageTagList.set_has_value( result == RESULT_OK );
3080 TimedTextDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3083 Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet);
3084 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, ResourceID));
3085 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, UCSEncoding));
3086 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, NamespaceURI));
3087 if ( ASDCP_SUCCESS(result) && ! RFC5646LanguageTagList.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(TimedTextDescriptor, RFC5646LanguageTagList));
3093 TimedTextDescriptor::Copy(const TimedTextDescriptor& rhs)
3095 GenericDataEssenceDescriptor::Copy(rhs);
3096 ResourceID = rhs.ResourceID;
3097 UCSEncoding = rhs.UCSEncoding;
3098 NamespaceURI = rhs.NamespaceURI;
3099 RFC5646LanguageTagList = rhs.RFC5646LanguageTagList;
3104 TimedTextDescriptor::Dump(FILE* stream)
3106 char identbuf[IdentBufferLen];
3112 GenericDataEssenceDescriptor::Dump(stream);
3113 fprintf(stream, " %22s = %s\n", "ResourceID", ResourceID.EncodeString(identbuf, IdentBufferLen));
3114 fprintf(stream, " %22s = %s\n", "UCSEncoding", UCSEncoding.EncodeString(identbuf, IdentBufferLen));
3115 fprintf(stream, " %22s = %s\n", "NamespaceURI", NamespaceURI.EncodeString(identbuf, IdentBufferLen));
3116 if ( ! RFC5646LanguageTagList.empty() ) {
3117 fprintf(stream, " %22s = %s\n", "RFC5646LanguageTagList", RFC5646LanguageTagList.get().EncodeString(identbuf, IdentBufferLen));
3123 TimedTextDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3125 return InterchangeObject::InitFromBuffer(p, l);
3130 TimedTextDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3132 return InterchangeObject::WriteToBuffer(Buffer);
3135 //------------------------------------------------------------------------------------------
3136 // TimedTextResourceSubDescriptor
3140 TimedTextResourceSubDescriptor::TimedTextResourceSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), EssenceStreamID(0)
3143 m_UL = m_Dict->ul(MDD_TimedTextResourceSubDescriptor);
3146 TimedTextResourceSubDescriptor::TimedTextResourceSubDescriptor(const TimedTextResourceSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3149 m_UL = m_Dict->ul(MDD_TimedTextResourceSubDescriptor);
3156 TimedTextResourceSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3159 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3160 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextResourceSubDescriptor, AncillaryResourceID));
3161 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextResourceSubDescriptor, MIMEMediaType));
3162 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(TimedTextResourceSubDescriptor, EssenceStreamID));
3168 TimedTextResourceSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3171 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3172 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextResourceSubDescriptor, AncillaryResourceID));
3173 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextResourceSubDescriptor, MIMEMediaType));
3174 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(TimedTextResourceSubDescriptor, EssenceStreamID));
3180 TimedTextResourceSubDescriptor::Copy(const TimedTextResourceSubDescriptor& rhs)
3182 InterchangeObject::Copy(rhs);
3183 AncillaryResourceID = rhs.AncillaryResourceID;
3184 MIMEMediaType = rhs.MIMEMediaType;
3185 EssenceStreamID = rhs.EssenceStreamID;
3190 TimedTextResourceSubDescriptor::Dump(FILE* stream)
3192 char identbuf[IdentBufferLen];
3198 InterchangeObject::Dump(stream);
3199 fprintf(stream, " %22s = %s\n", "AncillaryResourceID", AncillaryResourceID.EncodeString(identbuf, IdentBufferLen));
3200 fprintf(stream, " %22s = %s\n", "MIMEMediaType", MIMEMediaType.EncodeString(identbuf, IdentBufferLen));
3201 fprintf(stream, " %22s = %d\n", "EssenceStreamID", EssenceStreamID);
3206 TimedTextResourceSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3208 return InterchangeObject::InitFromBuffer(p, l);
3213 TimedTextResourceSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3215 return InterchangeObject::WriteToBuffer(Buffer);
3218 //------------------------------------------------------------------------------------------
3219 // StereoscopicPictureSubDescriptor
3223 StereoscopicPictureSubDescriptor::StereoscopicPictureSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
3226 m_UL = m_Dict->ul(MDD_StereoscopicPictureSubDescriptor);
3229 StereoscopicPictureSubDescriptor::StereoscopicPictureSubDescriptor(const StereoscopicPictureSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3232 m_UL = m_Dict->ul(MDD_StereoscopicPictureSubDescriptor);
3239 StereoscopicPictureSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3242 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3248 StereoscopicPictureSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3251 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3257 StereoscopicPictureSubDescriptor::Copy(const StereoscopicPictureSubDescriptor& rhs)
3259 InterchangeObject::Copy(rhs);
3264 StereoscopicPictureSubDescriptor::Dump(FILE* stream)
3266 char identbuf[IdentBufferLen];
3272 InterchangeObject::Dump(stream);
3277 StereoscopicPictureSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3279 return InterchangeObject::InitFromBuffer(p, l);
3284 StereoscopicPictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3286 return InterchangeObject::WriteToBuffer(Buffer);
3289 //------------------------------------------------------------------------------------------
3290 // ContainerConstraintSubDescriptor
3294 ContainerConstraintSubDescriptor::ContainerConstraintSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
3297 m_UL = m_Dict->ul(MDD_ContainerConstraintSubDescriptor);
3300 ContainerConstraintSubDescriptor::ContainerConstraintSubDescriptor(const ContainerConstraintSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3303 m_UL = m_Dict->ul(MDD_ContainerConstraintSubDescriptor);
3310 ContainerConstraintSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3313 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3319 ContainerConstraintSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3322 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3328 ContainerConstraintSubDescriptor::Copy(const ContainerConstraintSubDescriptor& rhs)
3330 InterchangeObject::Copy(rhs);
3335 ContainerConstraintSubDescriptor::Dump(FILE* stream)
3337 char identbuf[IdentBufferLen];
3343 InterchangeObject::Dump(stream);
3348 ContainerConstraintSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3350 return InterchangeObject::InitFromBuffer(p, l);
3355 ContainerConstraintSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3357 return InterchangeObject::WriteToBuffer(Buffer);
3360 //------------------------------------------------------------------------------------------
3365 NetworkLocator::NetworkLocator(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
3368 m_UL = m_Dict->ul(MDD_NetworkLocator);
3371 NetworkLocator::NetworkLocator(const NetworkLocator& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3374 m_UL = m_Dict->ul(MDD_NetworkLocator);
3381 NetworkLocator::InitFromTLVSet(TLVReader& TLVSet)
3384 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3385 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(NetworkLocator, URLString));
3391 NetworkLocator::WriteToTLVSet(TLVWriter& TLVSet)
3394 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3395 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(NetworkLocator, URLString));
3401 NetworkLocator::Copy(const NetworkLocator& rhs)
3403 InterchangeObject::Copy(rhs);
3404 URLString = rhs.URLString;
3409 NetworkLocator::Dump(FILE* stream)
3411 char identbuf[IdentBufferLen];
3417 InterchangeObject::Dump(stream);
3418 fprintf(stream, " %22s = %s\n", "URLString", URLString.EncodeString(identbuf, IdentBufferLen));
3423 NetworkLocator::InitFromBuffer(const byte_t* p, ui32_t l)
3425 return InterchangeObject::InitFromBuffer(p, l);
3430 NetworkLocator::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3432 return InterchangeObject::WriteToBuffer(Buffer);
3435 //------------------------------------------------------------------------------------------
3436 // MCALabelSubDescriptor
3440 MCALabelSubDescriptor::MCALabelSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
3443 m_UL = m_Dict->ul(MDD_MCALabelSubDescriptor);
3446 MCALabelSubDescriptor::MCALabelSubDescriptor(const MCALabelSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3449 m_UL = m_Dict->ul(MDD_MCALabelSubDescriptor);
3456 MCALabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3459 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3460 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(MCALabelSubDescriptor, MCALabelDictionaryID));
3461 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(MCALabelSubDescriptor, MCALinkID));
3462 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(MCALabelSubDescriptor, MCATagSymbol));
3463 if ( ASDCP_SUCCESS(result) ) {
3464 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCATagName));
3465 MCATagName.set_has_value( result == RESULT_OK );
3467 if ( ASDCP_SUCCESS(result) ) {
3468 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAChannelID));
3469 MCAChannelID.set_has_value( result == RESULT_OK );
3471 if ( ASDCP_SUCCESS(result) ) {
3472 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, RFC5646SpokenLanguage));
3473 RFC5646SpokenLanguage.set_has_value( result == RESULT_OK );
3475 if ( ASDCP_SUCCESS(result) ) {
3476 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCATitle));
3477 MCATitle.set_has_value( result == RESULT_OK );
3479 if ( ASDCP_SUCCESS(result) ) {
3480 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCATitleVersion));
3481 MCATitleVersion.set_has_value( result == RESULT_OK );
3483 if ( ASDCP_SUCCESS(result) ) {
3484 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCATitleSubVersion));
3485 MCATitleSubVersion.set_has_value( result == RESULT_OK );
3487 if ( ASDCP_SUCCESS(result) ) {
3488 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAEpisode));
3489 MCAEpisode.set_has_value( result == RESULT_OK );
3491 if ( ASDCP_SUCCESS(result) ) {
3492 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAPartitionKind));
3493 MCAPartitionKind.set_has_value( result == RESULT_OK );
3495 if ( ASDCP_SUCCESS(result) ) {
3496 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAPartitionNumber));
3497 MCAPartitionNumber.set_has_value( result == RESULT_OK );
3499 if ( ASDCP_SUCCESS(result) ) {
3500 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAAudioContentKind));
3501 MCAAudioContentKind.set_has_value( result == RESULT_OK );
3503 if ( ASDCP_SUCCESS(result) ) {
3504 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAAudioElementKind));
3505 MCAAudioElementKind.set_has_value( result == RESULT_OK );
3512 MCALabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3515 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3516 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(MCALabelSubDescriptor, MCALabelDictionaryID));
3517 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(MCALabelSubDescriptor, MCALinkID));
3518 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(MCALabelSubDescriptor, MCATagSymbol));
3519 if ( ASDCP_SUCCESS(result) && ! MCATagName.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCATagName));
3520 if ( ASDCP_SUCCESS(result) && ! MCAChannelID.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAChannelID));
3521 if ( ASDCP_SUCCESS(result) && ! RFC5646SpokenLanguage.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, RFC5646SpokenLanguage));
3522 if ( ASDCP_SUCCESS(result) && ! MCATitle.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCATitle));
3523 if ( ASDCP_SUCCESS(result) && ! MCATitleVersion.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCATitleVersion));
3524 if ( ASDCP_SUCCESS(result) && ! MCATitleSubVersion.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCATitleSubVersion));
3525 if ( ASDCP_SUCCESS(result) && ! MCAEpisode.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAEpisode));
3526 if ( ASDCP_SUCCESS(result) && ! MCAPartitionKind.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAPartitionKind));
3527 if ( ASDCP_SUCCESS(result) && ! MCAPartitionNumber.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAPartitionNumber));
3528 if ( ASDCP_SUCCESS(result) && ! MCAAudioContentKind.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAAudioContentKind));
3529 if ( ASDCP_SUCCESS(result) && ! MCAAudioElementKind.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAAudioElementKind));
3535 MCALabelSubDescriptor::Copy(const MCALabelSubDescriptor& rhs)
3537 InterchangeObject::Copy(rhs);
3538 MCALabelDictionaryID = rhs.MCALabelDictionaryID;
3539 MCALinkID = rhs.MCALinkID;
3540 MCATagSymbol = rhs.MCATagSymbol;
3541 MCATagName = rhs.MCATagName;
3542 MCAChannelID = rhs.MCAChannelID;
3543 RFC5646SpokenLanguage = rhs.RFC5646SpokenLanguage;
3544 MCATitle = rhs.MCATitle;
3545 MCATitleVersion = rhs.MCATitleVersion;
3546 MCATitleSubVersion = rhs.MCATitleSubVersion;
3547 MCAEpisode = rhs.MCAEpisode;
3548 MCAPartitionKind = rhs.MCAPartitionKind;
3549 MCAPartitionNumber = rhs.MCAPartitionNumber;
3550 MCAAudioContentKind = rhs.MCAAudioContentKind;
3551 MCAAudioElementKind = rhs.MCAAudioElementKind;
3556 MCALabelSubDescriptor::Dump(FILE* stream)
3558 char identbuf[IdentBufferLen];
3564 InterchangeObject::Dump(stream);
3565 fprintf(stream, " %22s = %s\n", "MCALabelDictionaryID", MCALabelDictionaryID.EncodeString(identbuf, IdentBufferLen));
3566 fprintf(stream, " %22s = %s\n", "MCALinkID", MCALinkID.EncodeString(identbuf, IdentBufferLen));
3567 fprintf(stream, " %22s = %s\n", "MCATagSymbol", MCATagSymbol.EncodeString(identbuf, IdentBufferLen));
3568 if ( ! MCATagName.empty() ) {
3569 fprintf(stream, " %22s = %s\n", "MCATagName", MCATagName.get().EncodeString(identbuf, IdentBufferLen));
3571 if ( ! MCAChannelID.empty() ) {
3572 fprintf(stream, " %22s = %d\n", "MCAChannelID", MCAChannelID.get());
3574 if ( ! RFC5646SpokenLanguage.empty() ) {
3575 fprintf(stream, " %22s = %s\n", "RFC5646SpokenLanguage", RFC5646SpokenLanguage.get().EncodeString(identbuf, IdentBufferLen));
3577 if ( ! MCATitle.empty() ) {
3578 fprintf(stream, " %22s = %s\n", "MCATitle", MCATitle.get().EncodeString(identbuf, IdentBufferLen));
3580 if ( ! MCATitleVersion.empty() ) {
3581 fprintf(stream, " %22s = %s\n", "MCATitleVersion", MCATitleVersion.get().EncodeString(identbuf, IdentBufferLen));
3583 if ( ! MCATitleSubVersion.empty() ) {
3584 fprintf(stream, " %22s = %s\n", "MCATitleSubVersion", MCATitleSubVersion.get().EncodeString(identbuf, IdentBufferLen));
3586 if ( ! MCAEpisode.empty() ) {
3587 fprintf(stream, " %22s = %s\n", "MCAEpisode", MCAEpisode.get().EncodeString(identbuf, IdentBufferLen));
3589 if ( ! MCAPartitionKind.empty() ) {
3590 fprintf(stream, " %22s = %s\n", "MCAPartitionKind", MCAPartitionKind.get().EncodeString(identbuf, IdentBufferLen));
3592 if ( ! MCAPartitionNumber.empty() ) {
3593 fprintf(stream, " %22s = %s\n", "MCAPartitionNumber", MCAPartitionNumber.get().EncodeString(identbuf, IdentBufferLen));
3595 if ( ! MCAAudioContentKind.empty() ) {
3596 fprintf(stream, " %22s = %s\n", "MCAAudioContentKind", MCAAudioContentKind.get().EncodeString(identbuf, IdentBufferLen));
3598 if ( ! MCAAudioElementKind.empty() ) {
3599 fprintf(stream, " %22s = %s\n", "MCAAudioElementKind", MCAAudioElementKind.get().EncodeString(identbuf, IdentBufferLen));
3605 MCALabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3607 return InterchangeObject::InitFromBuffer(p, l);
3612 MCALabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3614 return InterchangeObject::WriteToBuffer(Buffer);
3617 //------------------------------------------------------------------------------------------
3618 // AudioChannelLabelSubDescriptor
3622 AudioChannelLabelSubDescriptor::AudioChannelLabelSubDescriptor(const Dictionary*& d) : MCALabelSubDescriptor(d), m_Dict(d)
3625 m_UL = m_Dict->ul(MDD_AudioChannelLabelSubDescriptor);
3628 AudioChannelLabelSubDescriptor::AudioChannelLabelSubDescriptor(const AudioChannelLabelSubDescriptor& rhs) : MCALabelSubDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3631 m_UL = m_Dict->ul(MDD_AudioChannelLabelSubDescriptor);
3638 AudioChannelLabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3641 Result_t result = MCALabelSubDescriptor::InitFromTLVSet(TLVSet);
3642 if ( ASDCP_SUCCESS(result) ) {
3643 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(AudioChannelLabelSubDescriptor, SoundfieldGroupLinkID));
3644 SoundfieldGroupLinkID.set_has_value( result == RESULT_OK );
3651 AudioChannelLabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3654 Result_t result = MCALabelSubDescriptor::WriteToTLVSet(TLVSet);
3655 if ( ASDCP_SUCCESS(result) && ! SoundfieldGroupLinkID.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(AudioChannelLabelSubDescriptor, SoundfieldGroupLinkID));
3661 AudioChannelLabelSubDescriptor::Copy(const AudioChannelLabelSubDescriptor& rhs)
3663 MCALabelSubDescriptor::Copy(rhs);
3664 SoundfieldGroupLinkID = rhs.SoundfieldGroupLinkID;
3669 AudioChannelLabelSubDescriptor::Dump(FILE* stream)
3671 char identbuf[IdentBufferLen];
3677 MCALabelSubDescriptor::Dump(stream);
3678 if ( ! SoundfieldGroupLinkID.empty() ) {
3679 fprintf(stream, " %22s = %s\n", "SoundfieldGroupLinkID", SoundfieldGroupLinkID.get().EncodeString(identbuf, IdentBufferLen));
3685 AudioChannelLabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3687 return InterchangeObject::InitFromBuffer(p, l);
3692 AudioChannelLabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3694 return InterchangeObject::WriteToBuffer(Buffer);
3697 //------------------------------------------------------------------------------------------
3698 // SoundfieldGroupLabelSubDescriptor
3702 SoundfieldGroupLabelSubDescriptor::SoundfieldGroupLabelSubDescriptor(const Dictionary*& d) : MCALabelSubDescriptor(d), m_Dict(d)
3705 m_UL = m_Dict->ul(MDD_SoundfieldGroupLabelSubDescriptor);
3708 SoundfieldGroupLabelSubDescriptor::SoundfieldGroupLabelSubDescriptor(const SoundfieldGroupLabelSubDescriptor& rhs) : MCALabelSubDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3711 m_UL = m_Dict->ul(MDD_SoundfieldGroupLabelSubDescriptor);
3718 SoundfieldGroupLabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3721 Result_t result = MCALabelSubDescriptor::InitFromTLVSet(TLVSet);
3722 if ( ASDCP_SUCCESS(result) ) {
3723 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(SoundfieldGroupLabelSubDescriptor, GroupOfSoundfieldGroupsLinkID));
3730 SoundfieldGroupLabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3733 Result_t result = MCALabelSubDescriptor::WriteToTLVSet(TLVSet);
3734 if ( ASDCP_SUCCESS(result) && ! GroupOfSoundfieldGroupsLinkID.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(SoundfieldGroupLabelSubDescriptor, GroupOfSoundfieldGroupsLinkID));
3740 SoundfieldGroupLabelSubDescriptor::Copy(const SoundfieldGroupLabelSubDescriptor& rhs)
3742 MCALabelSubDescriptor::Copy(rhs);
3743 GroupOfSoundfieldGroupsLinkID = rhs.GroupOfSoundfieldGroupsLinkID;
3748 SoundfieldGroupLabelSubDescriptor::Dump(FILE* stream)
3750 char identbuf[IdentBufferLen];
3756 MCALabelSubDescriptor::Dump(stream);
3757 if ( ! GroupOfSoundfieldGroupsLinkID.empty() ) {
3758 fprintf(stream, " %22s:\n", "GroupOfSoundfieldGroupsLinkID");
3759 GroupOfSoundfieldGroupsLinkID.get().Dump(stream);
3765 SoundfieldGroupLabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3767 return InterchangeObject::InitFromBuffer(p, l);
3772 SoundfieldGroupLabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3774 return InterchangeObject::WriteToBuffer(Buffer);
3777 //------------------------------------------------------------------------------------------
3778 // GroupOfSoundfieldGroupsLabelSubDescriptor
3782 GroupOfSoundfieldGroupsLabelSubDescriptor::GroupOfSoundfieldGroupsLabelSubDescriptor(const Dictionary*& d) : MCALabelSubDescriptor(d), m_Dict(d)
3785 m_UL = m_Dict->ul(MDD_GroupOfSoundfieldGroupsLabelSubDescriptor);
3788 GroupOfSoundfieldGroupsLabelSubDescriptor::GroupOfSoundfieldGroupsLabelSubDescriptor(const GroupOfSoundfieldGroupsLabelSubDescriptor& rhs) : MCALabelSubDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3791 m_UL = m_Dict->ul(MDD_GroupOfSoundfieldGroupsLabelSubDescriptor);
3798 GroupOfSoundfieldGroupsLabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3801 Result_t result = MCALabelSubDescriptor::InitFromTLVSet(TLVSet);
3807 GroupOfSoundfieldGroupsLabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3810 Result_t result = MCALabelSubDescriptor::WriteToTLVSet(TLVSet);
3816 GroupOfSoundfieldGroupsLabelSubDescriptor::Copy(const GroupOfSoundfieldGroupsLabelSubDescriptor& rhs)
3818 MCALabelSubDescriptor::Copy(rhs);
3823 GroupOfSoundfieldGroupsLabelSubDescriptor::Dump(FILE* stream)
3825 char identbuf[IdentBufferLen];
3831 MCALabelSubDescriptor::Dump(stream);
3836 GroupOfSoundfieldGroupsLabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3838 return InterchangeObject::InitFromBuffer(p, l);
3843 GroupOfSoundfieldGroupsLabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3845 return InterchangeObject::WriteToBuffer(Buffer);
3848 //------------------------------------------------------------------------------------------
3853 DCDataDescriptor::DCDataDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d)
3856 m_UL = m_Dict->ul(MDD_DCDataDescriptor);
3859 DCDataDescriptor::DCDataDescriptor(const DCDataDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3862 m_UL = m_Dict->ul(MDD_DCDataDescriptor);
3869 DCDataDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3872 Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet);
3878 DCDataDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3881 Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet);
3887 DCDataDescriptor::Copy(const DCDataDescriptor& rhs)
3889 GenericDataEssenceDescriptor::Copy(rhs);
3894 DCDataDescriptor::Dump(FILE* stream)
3896 char identbuf[IdentBufferLen];
3902 GenericDataEssenceDescriptor::Dump(stream);
3907 DCDataDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3909 return InterchangeObject::InitFromBuffer(p, l);
3914 DCDataDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3916 return InterchangeObject::WriteToBuffer(Buffer);
3919 //------------------------------------------------------------------------------------------
3920 // PrivateDCDataDescriptor
3924 PrivateDCDataDescriptor::PrivateDCDataDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d)
3927 m_UL = m_Dict->ul(MDD_PrivateDCDataDescriptor);
3930 PrivateDCDataDescriptor::PrivateDCDataDescriptor(const PrivateDCDataDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3933 m_UL = m_Dict->ul(MDD_PrivateDCDataDescriptor);
3940 PrivateDCDataDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3943 Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet);
3949 PrivateDCDataDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3952 Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet);
3958 PrivateDCDataDescriptor::Copy(const PrivateDCDataDescriptor& rhs)
3960 GenericDataEssenceDescriptor::Copy(rhs);
3965 PrivateDCDataDescriptor::Dump(FILE* stream)
3967 char identbuf[IdentBufferLen];
3973 GenericDataEssenceDescriptor::Dump(stream);
3978 PrivateDCDataDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3980 return InterchangeObject::InitFromBuffer(p, l);
3985 PrivateDCDataDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3987 return InterchangeObject::WriteToBuffer(Buffer);
3990 //------------------------------------------------------------------------------------------
3991 // DolbyAtmosSubDescriptor
3995 DolbyAtmosSubDescriptor::DolbyAtmosSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), FirstFrame(0), MaxChannelCount(0), MaxObjectCount(0), AtmosVersion(0)
3998 m_UL = m_Dict->ul(MDD_DolbyAtmosSubDescriptor);
4001 DolbyAtmosSubDescriptor::DolbyAtmosSubDescriptor(const DolbyAtmosSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
4004 m_UL = m_Dict->ul(MDD_DolbyAtmosSubDescriptor);
4011 DolbyAtmosSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
4014 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
4015 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, AtmosID));
4016 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, FirstFrame));
4017 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, MaxChannelCount));
4018 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, MaxObjectCount));
4019 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, AtmosVersion));
4025 DolbyAtmosSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
4028 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
4029 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, AtmosID));
4030 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, FirstFrame));
4031 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, MaxChannelCount));
4032 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, MaxObjectCount));
4033 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, AtmosVersion));
4039 DolbyAtmosSubDescriptor::Copy(const DolbyAtmosSubDescriptor& rhs)
4041 InterchangeObject::Copy(rhs);
4042 AtmosID = rhs.AtmosID;
4043 FirstFrame = rhs.FirstFrame;
4044 MaxChannelCount = rhs.MaxChannelCount;
4045 MaxObjectCount = rhs.MaxObjectCount;
4046 AtmosVersion = rhs.AtmosVersion;
4051 DolbyAtmosSubDescriptor::Dump(FILE* stream)
4053 char identbuf[IdentBufferLen];
4059 InterchangeObject::Dump(stream);
4060 fprintf(stream, " %22s = %s\n", "AtmosID", AtmosID.EncodeString(identbuf, IdentBufferLen));
4061 fprintf(stream, " %22s = %d\n", "FirstFrame", FirstFrame);
4062 fprintf(stream, " %22s = %d\n", "MaxChannelCount", MaxChannelCount);
4063 fprintf(stream, " %22s = %d\n", "MaxObjectCount", MaxObjectCount);
4064 fprintf(stream, " %22s = %d\n", "AtmosVersion", AtmosVersion);
4069 DolbyAtmosSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
4071 return InterchangeObject::InitFromBuffer(p, l);
4076 DolbyAtmosSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4078 return InterchangeObject::WriteToBuffer(Buffer);
4081 //------------------------------------------------------------------------------------------
4082 // ACESPictureSubDescriptor
4086 ACESPictureSubDescriptor::ACESPictureSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
4089 m_UL = m_Dict->ul(MDD_ACESPictureSubDescriptor);
4092 ACESPictureSubDescriptor::ACESPictureSubDescriptor(const ACESPictureSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
4095 m_UL = m_Dict->ul(MDD_ACESPictureSubDescriptor);
4102 ACESPictureSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
4105 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
4106 if ( ASDCP_SUCCESS(result) ) {
4107 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(ACESPictureSubDescriptor, ACESAuthoringInformation));
4108 ACESAuthoringInformation.set_has_value( result == RESULT_OK );
4110 if ( ASDCP_SUCCESS(result) ) {
4111 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayPrimaries));
4112 ACESMasteringDisplayPrimaries.set_has_value( result == RESULT_OK );
4114 if ( ASDCP_SUCCESS(result) ) {
4115 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayWhitePointChromaticity));
4116 ACESMasteringDisplayWhitePointChromaticity.set_has_value( result == RESULT_OK );
4118 if ( ASDCP_SUCCESS(result) ) {
4119 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayMaximumLuminance));
4120 ACESMasteringDisplayMaximumLuminance.set_has_value( result == RESULT_OK );
4122 if ( ASDCP_SUCCESS(result) ) {
4123 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayMinimumLuminance));
4124 ACESMasteringDisplayMinimumLuminance.set_has_value( result == RESULT_OK );
4131 ACESPictureSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
4134 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
4135 if ( ASDCP_SUCCESS(result) && ! ACESAuthoringInformation.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(ACESPictureSubDescriptor, ACESAuthoringInformation));
4136 if ( ASDCP_SUCCESS(result) && ! ACESMasteringDisplayPrimaries.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayPrimaries));
4137 if ( ASDCP_SUCCESS(result) && ! ACESMasteringDisplayWhitePointChromaticity.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayWhitePointChromaticity));
4138 if ( ASDCP_SUCCESS(result) && ! ACESMasteringDisplayMaximumLuminance.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayMaximumLuminance));
4139 if ( ASDCP_SUCCESS(result) && ! ACESMasteringDisplayMinimumLuminance.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayMinimumLuminance));
4145 ACESPictureSubDescriptor::Copy(const ACESPictureSubDescriptor& rhs)
4147 InterchangeObject::Copy(rhs);
4148 ACESAuthoringInformation = rhs.ACESAuthoringInformation;
4149 ACESMasteringDisplayPrimaries = rhs.ACESMasteringDisplayPrimaries;
4150 ACESMasteringDisplayWhitePointChromaticity = rhs.ACESMasteringDisplayWhitePointChromaticity;
4151 ACESMasteringDisplayMaximumLuminance = rhs.ACESMasteringDisplayMaximumLuminance;
4152 ACESMasteringDisplayMinimumLuminance = rhs.ACESMasteringDisplayMinimumLuminance;
4157 ACESPictureSubDescriptor::Dump(FILE* stream)
4159 char identbuf[IdentBufferLen];
4165 InterchangeObject::Dump(stream);
4166 if ( ! ACESAuthoringInformation.empty() ) {
4167 fprintf(stream, " %22s = %s\n", "ACESAuthoringInformation", ACESAuthoringInformation.get().EncodeString(identbuf, IdentBufferLen));
4169 if ( ! ACESMasteringDisplayPrimaries.empty() ) {
4170 fprintf(stream, " %22s = %s\n", "ACESMasteringDisplayPrimaries", ACESMasteringDisplayPrimaries.get().EncodeString(identbuf, IdentBufferLen));
4172 if ( ! ACESMasteringDisplayWhitePointChromaticity.empty() ) {
4173 fprintf(stream, " %22s = %s\n", "ACESMasteringDisplayWhitePointChromaticity", ACESMasteringDisplayWhitePointChromaticity.get().EncodeString(identbuf, IdentBufferLen));
4175 if ( ! ACESMasteringDisplayMaximumLuminance.empty() ) {
4176 fprintf(stream, " %22s = %d\n", "ACESMasteringDisplayMaximumLuminance", ACESMasteringDisplayMaximumLuminance.get());
4178 if ( ! ACESMasteringDisplayMinimumLuminance.empty() ) {
4179 fprintf(stream, " %22s = %d\n", "ACESMasteringDisplayMinimumLuminance", ACESMasteringDisplayMinimumLuminance.get());
4185 ACESPictureSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
4187 return InterchangeObject::InitFromBuffer(p, l);
4192 ACESPictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4194 return InterchangeObject::WriteToBuffer(Buffer);
4197 //------------------------------------------------------------------------------------------
4198 // TargetFrameSubDescriptor
4202 TargetFrameSubDescriptor::TargetFrameSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), TargetFrameIndex(0), TargetFrameComponentMaxRef(0), TargetFrameComponentMinRef(0), TargetFrameEssenceStreamID(0)
4205 m_UL = m_Dict->ul(MDD_TargetFrameSubDescriptor);
4208 TargetFrameSubDescriptor::TargetFrameSubDescriptor(const TargetFrameSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
4211 m_UL = m_Dict->ul(MDD_TargetFrameSubDescriptor);
4218 TargetFrameSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
4221 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
4222 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameAncillaryResourceID));
4223 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TargetFrameSubDescriptor, MediaType));
4224 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameIndex));
4225 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameTransferCharacteristic));
4226 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameColorPrimaries));
4227 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameComponentMaxRef));
4228 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameComponentMinRef));
4229 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameEssenceStreamID));
4230 if ( ASDCP_SUCCESS(result) ) {
4231 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(TargetFrameSubDescriptor, ACESPictureSubDescriptorInstanceID));
4232 ACESPictureSubDescriptorInstanceID.set_has_value( result == RESULT_OK );
4234 if ( ASDCP_SUCCESS(result) ) {
4235 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(TargetFrameSubDescriptor, TargetFrameViewingEnvironment));
4236 TargetFrameViewingEnvironment.set_has_value( result == RESULT_OK );
4243 TargetFrameSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
4246 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
4247 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameAncillaryResourceID));
4248 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, MediaType));
4249 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameIndex));
4250 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameTransferCharacteristic));
4251 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameColorPrimaries));
4252 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameComponentMaxRef));
4253 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameComponentMinRef));
4254 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameEssenceStreamID));
4255 if ( ASDCP_SUCCESS(result) && ! ACESPictureSubDescriptorInstanceID.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(TargetFrameSubDescriptor, ACESPictureSubDescriptorInstanceID));
4256 if ( ASDCP_SUCCESS(result) && ! TargetFrameViewingEnvironment.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(TargetFrameSubDescriptor, TargetFrameViewingEnvironment));
4262 TargetFrameSubDescriptor::Copy(const TargetFrameSubDescriptor& rhs)
4264 InterchangeObject::Copy(rhs);
4265 TargetFrameAncillaryResourceID = rhs.TargetFrameAncillaryResourceID;
4266 MediaType = rhs.MediaType;
4267 TargetFrameIndex = rhs.TargetFrameIndex;
4268 TargetFrameTransferCharacteristic = rhs.TargetFrameTransferCharacteristic;
4269 TargetFrameColorPrimaries = rhs.TargetFrameColorPrimaries;
4270 TargetFrameComponentMaxRef = rhs.TargetFrameComponentMaxRef;
4271 TargetFrameComponentMinRef = rhs.TargetFrameComponentMinRef;
4272 TargetFrameEssenceStreamID = rhs.TargetFrameEssenceStreamID;
4273 ACESPictureSubDescriptorInstanceID = rhs.ACESPictureSubDescriptorInstanceID;
4274 TargetFrameViewingEnvironment = rhs.TargetFrameViewingEnvironment;
4279 TargetFrameSubDescriptor::Dump(FILE* stream)
4281 char identbuf[IdentBufferLen];
4287 InterchangeObject::Dump(stream);
4288 fprintf(stream, " %22s = %s\n", "TargetFrameAncillaryResourceID", TargetFrameAncillaryResourceID.EncodeString(identbuf, IdentBufferLen));
4289 fprintf(stream, " %22s = %s\n", "MediaType", MediaType.EncodeString(identbuf, IdentBufferLen));
4290 fprintf(stream, " %22s = %s\n", "TargetFrameIndex", i64sz(TargetFrameIndex, identbuf));
4291 fprintf(stream, " %22s = %s\n", "TargetFrameTransferCharacteristic", TargetFrameTransferCharacteristic.EncodeString(identbuf, IdentBufferLen));
4292 fprintf(stream, " %22s = %s\n", "TargetFrameColorPrimaries", TargetFrameColorPrimaries.EncodeString(identbuf, IdentBufferLen));
4293 fprintf(stream, " %22s = %d\n", "TargetFrameComponentMaxRef", TargetFrameComponentMaxRef);
4294 fprintf(stream, " %22s = %d\n", "TargetFrameComponentMinRef", TargetFrameComponentMinRef);
4295 fprintf(stream, " %22s = %d\n", "TargetFrameEssenceStreamID", TargetFrameEssenceStreamID);
4296 if ( ! ACESPictureSubDescriptorInstanceID.empty() ) {
4297 fprintf(stream, " %22s = %s\n", "ACESPictureSubDescriptorInstanceID", ACESPictureSubDescriptorInstanceID.get().EncodeString(identbuf, IdentBufferLen));
4299 if ( ! TargetFrameViewingEnvironment.empty() ) {
4300 fprintf(stream, " %22s = %s\n", "TargetFrameViewingEnvironment", TargetFrameViewingEnvironment.get().EncodeString(identbuf, IdentBufferLen));
4306 TargetFrameSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
4308 return InterchangeObject::InitFromBuffer(p, l);
4313 TargetFrameSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4315 return InterchangeObject::WriteToBuffer(Buffer);
4318 //------------------------------------------------------------------------------------------
4319 // TextBasedDMFramework
4323 TextBasedDMFramework::TextBasedDMFramework(const Dictionary*& d) : DescriptiveFramework(d), m_Dict(d)
4326 m_UL = m_Dict->ul(MDD_TextBasedDMFramework);
4329 TextBasedDMFramework::TextBasedDMFramework(const TextBasedDMFramework& rhs) : DescriptiveFramework(rhs.m_Dict), m_Dict(rhs.m_Dict)
4332 m_UL = m_Dict->ul(MDD_TextBasedDMFramework);
4339 TextBasedDMFramework::InitFromTLVSet(TLVReader& TLVSet)
4342 Result_t result = DescriptiveFramework::InitFromTLVSet(TLVSet);
4343 if ( ASDCP_SUCCESS(result) ) {
4344 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(TextBasedDMFramework, ObjectRef));
4345 ObjectRef.set_has_value( result == RESULT_OK );
4352 TextBasedDMFramework::WriteToTLVSet(TLVWriter& TLVSet)
4355 Result_t result = DescriptiveFramework::WriteToTLVSet(TLVSet);
4356 if ( ASDCP_SUCCESS(result) && ! ObjectRef.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(TextBasedDMFramework, ObjectRef));
4362 TextBasedDMFramework::Copy(const TextBasedDMFramework& rhs)
4364 DescriptiveFramework::Copy(rhs);
4365 ObjectRef = rhs.ObjectRef;
4370 TextBasedDMFramework::Dump(FILE* stream)
4372 char identbuf[IdentBufferLen];
4378 DescriptiveFramework::Dump(stream);
4379 if ( ! ObjectRef.empty() ) {
4380 fprintf(stream, " %22s = %s\n", "ObjectRef", ObjectRef.get().EncodeString(identbuf, IdentBufferLen));
4386 TextBasedDMFramework::InitFromBuffer(const byte_t* p, ui32_t l)
4388 return InterchangeObject::InitFromBuffer(p, l);
4393 TextBasedDMFramework::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4395 return InterchangeObject::WriteToBuffer(Buffer);
4398 //------------------------------------------------------------------------------------------
4403 TextBasedObject::TextBasedObject(const Dictionary*& d) : DescriptiveObject(d), m_Dict(d)
4406 m_UL = m_Dict->ul(MDD_TextBasedObject);
4409 TextBasedObject::TextBasedObject(const TextBasedObject& rhs) : DescriptiveObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
4412 m_UL = m_Dict->ul(MDD_TextBasedObject);
4419 TextBasedObject::InitFromTLVSet(TLVReader& TLVSet)
4422 Result_t result = DescriptiveObject::InitFromTLVSet(TLVSet);
4423 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TextBasedObject, PayloadSchemeID));
4424 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TextBasedObject, TextMIMEMediaType));
4425 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TextBasedObject, RFC5646TextLanguageCode));
4426 if ( ASDCP_SUCCESS(result) ) {
4427 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(TextBasedObject, TextDataDescription));
4428 TextDataDescription.set_has_value( result == RESULT_OK );
4435 TextBasedObject::WriteToTLVSet(TLVWriter& TLVSet)
4438 Result_t result = DescriptiveObject::WriteToTLVSet(TLVSet);
4439 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TextBasedObject, PayloadSchemeID));
4440 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TextBasedObject, TextMIMEMediaType));
4441 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TextBasedObject, RFC5646TextLanguageCode));
4442 if ( ASDCP_SUCCESS(result) && ! TextDataDescription.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(TextBasedObject, TextDataDescription));
4448 TextBasedObject::Copy(const TextBasedObject& rhs)
4450 DescriptiveObject::Copy(rhs);
4451 PayloadSchemeID = rhs.PayloadSchemeID;
4452 TextMIMEMediaType = rhs.TextMIMEMediaType;
4453 RFC5646TextLanguageCode = rhs.RFC5646TextLanguageCode;
4454 TextDataDescription = rhs.TextDataDescription;
4459 TextBasedObject::Dump(FILE* stream)
4461 char identbuf[IdentBufferLen];
4467 DescriptiveObject::Dump(stream);
4468 fprintf(stream, " %22s = %s\n", "PayloadSchemeID", PayloadSchemeID.EncodeString(identbuf, IdentBufferLen));
4469 fprintf(stream, " %22s = %s\n", "TextMIMEMediaType", TextMIMEMediaType.EncodeString(identbuf, IdentBufferLen));
4470 fprintf(stream, " %22s = %s\n", "RFC5646TextLanguageCode", RFC5646TextLanguageCode.EncodeString(identbuf, IdentBufferLen));
4471 if ( ! TextDataDescription.empty() ) {
4472 fprintf(stream, " %22s = %s\n", "TextDataDescription", TextDataDescription.get().EncodeString(identbuf, IdentBufferLen));
4478 TextBasedObject::InitFromBuffer(const byte_t* p, ui32_t l)
4480 return InterchangeObject::InitFromBuffer(p, l);
4485 TextBasedObject::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4487 return InterchangeObject::WriteToBuffer(Buffer);
4490 //------------------------------------------------------------------------------------------
4491 // GenericStreamTextBasedSet
4495 GenericStreamTextBasedSet::GenericStreamTextBasedSet(const Dictionary*& d) : TextBasedObject(d), m_Dict(d), GenericStreamSID(0)
4498 m_UL = m_Dict->ul(MDD_GenericStreamTextBasedSet);
4501 GenericStreamTextBasedSet::GenericStreamTextBasedSet(const GenericStreamTextBasedSet& rhs) : TextBasedObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
4504 m_UL = m_Dict->ul(MDD_GenericStreamTextBasedSet);
4511 GenericStreamTextBasedSet::InitFromTLVSet(TLVReader& TLVSet)
4514 Result_t result = TextBasedObject::InitFromTLVSet(TLVSet);
4515 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericStreamTextBasedSet, GenericStreamSID));
4521 GenericStreamTextBasedSet::WriteToTLVSet(TLVWriter& TLVSet)
4524 Result_t result = TextBasedObject::WriteToTLVSet(TLVSet);
4525 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericStreamTextBasedSet, GenericStreamSID));
4531 GenericStreamTextBasedSet::Copy(const GenericStreamTextBasedSet& rhs)
4533 TextBasedObject::Copy(rhs);
4534 GenericStreamSID = rhs.GenericStreamSID;
4539 GenericStreamTextBasedSet::Dump(FILE* stream)
4541 char identbuf[IdentBufferLen];
4547 TextBasedObject::Dump(stream);
4548 fprintf(stream, " %22s = %d\n", "GenericStreamSID", GenericStreamSID);
4553 GenericStreamTextBasedSet::InitFromBuffer(const byte_t* p, ui32_t l)
4555 return InterchangeObject::InitFromBuffer(p, l);
4560 GenericStreamTextBasedSet::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4562 return InterchangeObject::WriteToBuffer(Buffer);
4565 //------------------------------------------------------------------------------------------
4566 // ISXDDataEssenceDescriptor
4570 ISXDDataEssenceDescriptor::ISXDDataEssenceDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d)
4573 m_UL = m_Dict->ul(MDD_ISXDDataEssenceDescriptor);
4576 ISXDDataEssenceDescriptor::ISXDDataEssenceDescriptor(const ISXDDataEssenceDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
4579 m_UL = m_Dict->ul(MDD_ISXDDataEssenceDescriptor);
4586 ISXDDataEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
4589 Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet);
4590 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(ISXDDataEssenceDescriptor, NamespaceURI));
4596 ISXDDataEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
4599 Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet);
4600 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(ISXDDataEssenceDescriptor, NamespaceURI));
4606 ISXDDataEssenceDescriptor::Copy(const ISXDDataEssenceDescriptor& rhs)
4608 GenericDataEssenceDescriptor::Copy(rhs);
4609 NamespaceURI = rhs.NamespaceURI;
4614 ISXDDataEssenceDescriptor::Dump(FILE* stream)
4616 char identbuf[IdentBufferLen];
4622 GenericDataEssenceDescriptor::Dump(stream);
4623 fprintf(stream, " %22s = %s\n", "NamespaceURI", NamespaceURI.EncodeString(identbuf, IdentBufferLen));
4628 ISXDDataEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
4630 return InterchangeObject::InitFromBuffer(p, l);
4635 ISXDDataEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4637 return InterchangeObject::WriteToBuffer(Buffer);
4640 //------------------------------------------------------------------------------------------
4641 // PHDRMetadataTrackSubDescriptor
4645 PHDRMetadataTrackSubDescriptor::PHDRMetadataTrackSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), SourceTrackID(0), SimplePayloadSID(0)
4648 m_UL = m_Dict->ul(MDD_PHDRMetadataTrackSubDescriptor);
4651 PHDRMetadataTrackSubDescriptor::PHDRMetadataTrackSubDescriptor(const PHDRMetadataTrackSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
4654 m_UL = m_Dict->ul(MDD_PHDRMetadataTrackSubDescriptor);
4661 PHDRMetadataTrackSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
4664 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
4665 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(PHDRMetadataTrackSubDescriptor, DataDefinition));
4666 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(PHDRMetadataTrackSubDescriptor, SourceTrackID));
4667 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(PHDRMetadataTrackSubDescriptor, SimplePayloadSID));
4673 PHDRMetadataTrackSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
4676 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
4677 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(PHDRMetadataTrackSubDescriptor, DataDefinition));
4678 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(PHDRMetadataTrackSubDescriptor, SourceTrackID));
4679 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(PHDRMetadataTrackSubDescriptor, SimplePayloadSID));
4685 PHDRMetadataTrackSubDescriptor::Copy(const PHDRMetadataTrackSubDescriptor& rhs)
4687 InterchangeObject::Copy(rhs);
4688 DataDefinition = rhs.DataDefinition;
4689 SourceTrackID = rhs.SourceTrackID;
4690 SimplePayloadSID = rhs.SimplePayloadSID;
4695 PHDRMetadataTrackSubDescriptor::Dump(FILE* stream)
4697 char identbuf[IdentBufferLen];
4703 InterchangeObject::Dump(stream);
4704 fprintf(stream, " %22s = %s\n", "DataDefinition", DataDefinition.EncodeString(identbuf, IdentBufferLen));
4705 fprintf(stream, " %22s = %d\n", "SourceTrackID", SourceTrackID);
4706 fprintf(stream, " %22s = %d\n", "SimplePayloadSID", SimplePayloadSID);
4711 PHDRMetadataTrackSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
4713 return InterchangeObject::InitFromBuffer(p, l);
4718 PHDRMetadataTrackSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4720 return InterchangeObject::WriteToBuffer(Buffer);
4723 //------------------------------------------------------------------------------------------
4724 // PIMFDynamicMetadataDescriptor
4728 PIMFDynamicMetadataDescriptor::PIMFDynamicMetadataDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d), GlobalPayloadSID(0)
4731 m_UL = m_Dict->ul(MDD_PIMFDynamicMetadataDescriptor);
4734 PIMFDynamicMetadataDescriptor::PIMFDynamicMetadataDescriptor(const PIMFDynamicMetadataDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
4737 m_UL = m_Dict->ul(MDD_PIMFDynamicMetadataDescriptor);
4744 PIMFDynamicMetadataDescriptor::InitFromTLVSet(TLVReader& TLVSet)
4747 Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet);
4748 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(PIMFDynamicMetadataDescriptor, GlobalPayloadSID));
4754 PIMFDynamicMetadataDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
4757 Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet);
4758 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(PIMFDynamicMetadataDescriptor, GlobalPayloadSID));
4764 PIMFDynamicMetadataDescriptor::Copy(const PIMFDynamicMetadataDescriptor& rhs)
4766 GenericDataEssenceDescriptor::Copy(rhs);
4767 GlobalPayloadSID = rhs.GlobalPayloadSID;
4772 PIMFDynamicMetadataDescriptor::Dump(FILE* stream)
4774 char identbuf[IdentBufferLen];
4780 GenericDataEssenceDescriptor::Dump(stream);
4781 fprintf(stream, " %22s = %d\n", "GlobalPayloadSID", GlobalPayloadSID);
4786 PIMFDynamicMetadataDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
4788 return InterchangeObject::InitFromBuffer(p, l);
4793 PIMFDynamicMetadataDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4795 return InterchangeObject::WriteToBuffer(Buffer);