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) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, ReferenceImageEditRate));
1411 GenericSoundEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1414 Result_t result = FileDescriptor::WriteToTLVSet(TLVSet);
1415 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, AudioSamplingRate));
1416 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, Locked));
1417 if ( ASDCP_SUCCESS(result) && ! AudioRefLevel.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericSoundEssenceDescriptor, AudioRefLevel));
1418 if ( ASDCP_SUCCESS(result) && ! ElectroSpatialFormulation.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericSoundEssenceDescriptor, ElectroSpatialFormulation));
1419 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, ChannelCount));
1420 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, QuantizationBits));
1421 if ( ASDCP_SUCCESS(result) && ! DialNorm.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericSoundEssenceDescriptor, DialNorm));
1422 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, SoundEssenceCoding));
1423 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, ReferenceImageEditRate));
1429 GenericSoundEssenceDescriptor::Copy(const GenericSoundEssenceDescriptor& rhs)
1431 FileDescriptor::Copy(rhs);
1432 AudioSamplingRate = rhs.AudioSamplingRate;
1433 Locked = rhs.Locked;
1434 AudioRefLevel = rhs.AudioRefLevel;
1435 ElectroSpatialFormulation = rhs.ElectroSpatialFormulation;
1436 ChannelCount = rhs.ChannelCount;
1437 QuantizationBits = rhs.QuantizationBits;
1438 DialNorm = rhs.DialNorm;
1439 SoundEssenceCoding = rhs.SoundEssenceCoding;
1440 ReferenceImageEditRate = rhs.ReferenceImageEditRate;
1445 GenericSoundEssenceDescriptor::Dump(FILE* stream)
1447 char identbuf[IdentBufferLen];
1453 FileDescriptor::Dump(stream);
1454 fprintf(stream, " %22s = %s\n", "AudioSamplingRate", AudioSamplingRate.EncodeString(identbuf, IdentBufferLen));
1455 fprintf(stream, " %22s = %d\n", "Locked", Locked);
1456 if ( ! AudioRefLevel.empty() ) {
1457 fprintf(stream, " %22s = %d\n", "AudioRefLevel", AudioRefLevel.get());
1459 if ( ! ElectroSpatialFormulation.empty() ) {
1460 fprintf(stream, " %22s = %d\n", "ElectroSpatialFormulation", ElectroSpatialFormulation.get());
1462 fprintf(stream, " %22s = %d\n", "ChannelCount", ChannelCount);
1463 fprintf(stream, " %22s = %d\n", "QuantizationBits", QuantizationBits);
1464 if ( ! DialNorm.empty() ) {
1465 fprintf(stream, " %22s = %d\n", "DialNorm", DialNorm.get());
1467 fprintf(stream, " %22s = %s\n", "SoundEssenceCoding", SoundEssenceCoding.EncodeString(identbuf, IdentBufferLen));
1468 fprintf(stream, " %22s = %s\n", "ReferenceImageEditRate", ReferenceImageEditRate.EncodeString(identbuf, IdentBufferLen));
1473 GenericSoundEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1475 return InterchangeObject::InitFromBuffer(p, l);
1480 GenericSoundEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1482 return InterchangeObject::WriteToBuffer(Buffer);
1485 //------------------------------------------------------------------------------------------
1486 // WaveAudioDescriptor
1490 WaveAudioDescriptor::WaveAudioDescriptor(const Dictionary*& d) : GenericSoundEssenceDescriptor(d), m_Dict(d), BlockAlign(0), AvgBps(0)
1493 m_UL = m_Dict->ul(MDD_WaveAudioDescriptor);
1496 WaveAudioDescriptor::WaveAudioDescriptor(const WaveAudioDescriptor& rhs) : GenericSoundEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
1499 m_UL = m_Dict->ul(MDD_WaveAudioDescriptor);
1506 WaveAudioDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1509 Result_t result = GenericSoundEssenceDescriptor::InitFromTLVSet(TLVSet);
1510 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(WaveAudioDescriptor, BlockAlign));
1511 if ( ASDCP_SUCCESS(result) ) {
1512 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(WaveAudioDescriptor, SequenceOffset));
1513 SequenceOffset.set_has_value( result == RESULT_OK );
1515 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(WaveAudioDescriptor, AvgBps));
1516 if ( ASDCP_SUCCESS(result) ) {
1517 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(WaveAudioDescriptor, ChannelAssignment));
1518 ChannelAssignment.set_has_value( result == RESULT_OK );
1520 if ( ASDCP_SUCCESS(result) ) {
1521 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(WaveAudioDescriptor, ReferenceImageEditRate));
1522 ReferenceImageEditRate.set_has_value( result == RESULT_OK );
1524 if ( ASDCP_SUCCESS(result) ) {
1525 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(WaveAudioDescriptor, ReferenceAudioAlignmentLevel));
1526 ReferenceAudioAlignmentLevel.set_has_value( result == RESULT_OK );
1533 WaveAudioDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1536 Result_t result = GenericSoundEssenceDescriptor::WriteToTLVSet(TLVSet);
1537 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(WaveAudioDescriptor, BlockAlign));
1538 if ( ASDCP_SUCCESS(result) && ! SequenceOffset.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(WaveAudioDescriptor, SequenceOffset));
1539 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(WaveAudioDescriptor, AvgBps));
1540 if ( ASDCP_SUCCESS(result) && ! ChannelAssignment.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(WaveAudioDescriptor, ChannelAssignment));
1541 if ( ASDCP_SUCCESS(result) && ! ReferenceImageEditRate.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(WaveAudioDescriptor, ReferenceImageEditRate));
1542 if ( ASDCP_SUCCESS(result) && ! ReferenceAudioAlignmentLevel.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(WaveAudioDescriptor, ReferenceAudioAlignmentLevel));
1548 WaveAudioDescriptor::Copy(const WaveAudioDescriptor& rhs)
1550 GenericSoundEssenceDescriptor::Copy(rhs);
1551 BlockAlign = rhs.BlockAlign;
1552 SequenceOffset = rhs.SequenceOffset;
1553 AvgBps = rhs.AvgBps;
1554 ChannelAssignment = rhs.ChannelAssignment;
1555 ReferenceImageEditRate = rhs.ReferenceImageEditRate;
1556 ReferenceAudioAlignmentLevel = rhs.ReferenceAudioAlignmentLevel;
1561 WaveAudioDescriptor::Dump(FILE* stream)
1563 char identbuf[IdentBufferLen];
1569 GenericSoundEssenceDescriptor::Dump(stream);
1570 fprintf(stream, " %22s = %d\n", "BlockAlign", BlockAlign);
1571 if ( ! SequenceOffset.empty() ) {
1572 fprintf(stream, " %22s = %d\n", "SequenceOffset", SequenceOffset.get());
1574 fprintf(stream, " %22s = %d\n", "AvgBps", AvgBps);
1575 if ( ! ChannelAssignment.empty() ) {
1576 fprintf(stream, " %22s = %s\n", "ChannelAssignment", ChannelAssignment.get().EncodeString(identbuf, IdentBufferLen));
1578 if ( ! ReferenceImageEditRate.empty() ) {
1579 fprintf(stream, " %22s = %s\n", "ReferenceImageEditRate", ReferenceImageEditRate.get().EncodeString(identbuf, IdentBufferLen));
1581 if ( ! ReferenceAudioAlignmentLevel.empty() ) {
1582 fprintf(stream, " %22s = %d\n", "ReferenceAudioAlignmentLevel", ReferenceAudioAlignmentLevel.get());
1588 WaveAudioDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1590 return InterchangeObject::InitFromBuffer(p, l);
1595 WaveAudioDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1597 return InterchangeObject::WriteToBuffer(Buffer);
1600 //------------------------------------------------------------------------------------------
1601 // GenericPictureEssenceDescriptor
1605 GenericPictureEssenceDescriptor::GenericPictureEssenceDescriptor(const Dictionary*& d) : FileDescriptor(d), m_Dict(d), FrameLayout(0), StoredWidth(0), StoredHeight(0)
1608 m_UL = m_Dict->ul(MDD_GenericPictureEssenceDescriptor);
1611 GenericPictureEssenceDescriptor::GenericPictureEssenceDescriptor(const GenericPictureEssenceDescriptor& rhs) : FileDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
1614 m_UL = m_Dict->ul(MDD_GenericPictureEssenceDescriptor);
1621 GenericPictureEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1624 Result_t result = FileDescriptor::InitFromTLVSet(TLVSet);
1625 if ( ASDCP_SUCCESS(result) ) {
1626 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, SignalStandard));
1627 SignalStandard.set_has_value( result == RESULT_OK );
1629 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, FrameLayout));
1630 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, StoredWidth));
1631 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, StoredHeight));
1632 if ( ASDCP_SUCCESS(result) ) {
1633 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, StoredF2Offset));
1634 StoredF2Offset.set_has_value( result == RESULT_OK );
1636 if ( ASDCP_SUCCESS(result) ) {
1637 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, SampledWidth));
1638 SampledWidth.set_has_value( result == RESULT_OK );
1640 if ( ASDCP_SUCCESS(result) ) {
1641 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, SampledHeight));
1642 SampledHeight.set_has_value( result == RESULT_OK );
1644 if ( ASDCP_SUCCESS(result) ) {
1645 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, SampledXOffset));
1646 SampledXOffset.set_has_value( result == RESULT_OK );
1648 if ( ASDCP_SUCCESS(result) ) {
1649 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, SampledYOffset));
1650 SampledYOffset.set_has_value( result == RESULT_OK );
1652 if ( ASDCP_SUCCESS(result) ) {
1653 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayHeight));
1654 DisplayHeight.set_has_value( result == RESULT_OK );
1656 if ( ASDCP_SUCCESS(result) ) {
1657 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayWidth));
1658 DisplayWidth.set_has_value( result == RESULT_OK );
1660 if ( ASDCP_SUCCESS(result) ) {
1661 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayXOffset));
1662 DisplayXOffset.set_has_value( result == RESULT_OK );
1664 if ( ASDCP_SUCCESS(result) ) {
1665 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayYOffset));
1666 DisplayYOffset.set_has_value( result == RESULT_OK );
1668 if ( ASDCP_SUCCESS(result) ) {
1669 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayF2Offset));
1670 DisplayF2Offset.set_has_value( result == RESULT_OK );
1672 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, AspectRatio));
1673 if ( ASDCP_SUCCESS(result) ) {
1674 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveFormatDescriptor));
1675 ActiveFormatDescriptor.set_has_value( result == RESULT_OK );
1677 if ( ASDCP_SUCCESS(result) ) {
1678 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, AlphaTransparency));
1679 AlphaTransparency.set_has_value( result == RESULT_OK );
1681 if ( ASDCP_SUCCESS(result) ) {
1682 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, TransferCharacteristic));
1683 TransferCharacteristic.set_has_value( result == RESULT_OK );
1685 if ( ASDCP_SUCCESS(result) ) {
1686 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ImageAlignmentOffset));
1687 ImageAlignmentOffset.set_has_value( result == RESULT_OK );
1689 if ( ASDCP_SUCCESS(result) ) {
1690 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ImageStartOffset));
1691 ImageStartOffset.set_has_value( result == RESULT_OK );
1693 if ( ASDCP_SUCCESS(result) ) {
1694 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ImageEndOffset));
1695 ImageEndOffset.set_has_value( result == RESULT_OK );
1697 if ( ASDCP_SUCCESS(result) ) {
1698 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, FieldDominance));
1699 FieldDominance.set_has_value( result == RESULT_OK );
1701 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, PictureEssenceCoding));
1702 if ( ASDCP_SUCCESS(result) ) {
1703 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, CodingEquations));
1704 CodingEquations.set_has_value( result == RESULT_OK );
1706 if ( ASDCP_SUCCESS(result) ) {
1707 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ColorPrimaries));
1708 ColorPrimaries.set_has_value( result == RESULT_OK );
1710 if ( ASDCP_SUCCESS(result) ) {
1711 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, AlternativeCenterCuts));
1713 if ( ASDCP_SUCCESS(result) ) {
1714 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveWidth));
1715 ActiveWidth.set_has_value( result == RESULT_OK );
1717 if ( ASDCP_SUCCESS(result) ) {
1718 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveHeight));
1719 ActiveHeight.set_has_value( result == RESULT_OK );
1721 if ( ASDCP_SUCCESS(result) ) {
1722 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveXOffset));
1723 ActiveXOffset.set_has_value( result == RESULT_OK );
1725 if ( ASDCP_SUCCESS(result) ) {
1726 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveYOffset));
1727 ActiveYOffset.set_has_value( result == RESULT_OK );
1729 if ( ASDCP_SUCCESS(result) ) {
1730 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, VideoLineMap));
1731 VideoLineMap.set_has_value( result == RESULT_OK );
1733 if ( ASDCP_SUCCESS(result) ) {
1734 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayPrimaries));
1735 MasteringDisplayPrimaries.set_has_value( result == RESULT_OK );
1737 if ( ASDCP_SUCCESS(result) ) {
1738 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayWhitePointChromaticity));
1739 MasteringDisplayWhitePointChromaticity.set_has_value( result == RESULT_OK );
1741 if ( ASDCP_SUCCESS(result) ) {
1742 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayMaximumLuminance));
1743 MasteringDisplayMaximumLuminance.set_has_value( result == RESULT_OK );
1745 if ( ASDCP_SUCCESS(result) ) {
1746 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayMinimumLuminance));
1747 MasteringDisplayMinimumLuminance.set_has_value( result == RESULT_OK );
1754 GenericPictureEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1757 Result_t result = FileDescriptor::WriteToTLVSet(TLVSet);
1758 if ( ASDCP_SUCCESS(result) && ! SignalStandard.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, SignalStandard));
1759 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, FrameLayout));
1760 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, StoredWidth));
1761 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, StoredHeight));
1762 if ( ASDCP_SUCCESS(result) && ! StoredF2Offset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, StoredF2Offset));
1763 if ( ASDCP_SUCCESS(result) && ! SampledWidth.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, SampledWidth));
1764 if ( ASDCP_SUCCESS(result) && ! SampledHeight.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, SampledHeight));
1765 if ( ASDCP_SUCCESS(result) && ! SampledXOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, SampledXOffset));
1766 if ( ASDCP_SUCCESS(result) && ! SampledYOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, SampledYOffset));
1767 if ( ASDCP_SUCCESS(result) && ! DisplayHeight.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayHeight));
1768 if ( ASDCP_SUCCESS(result) && ! DisplayWidth.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayWidth));
1769 if ( ASDCP_SUCCESS(result) && ! DisplayXOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayXOffset));
1770 if ( ASDCP_SUCCESS(result) && ! DisplayYOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayYOffset));
1771 if ( ASDCP_SUCCESS(result) && ! DisplayF2Offset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayF2Offset));
1772 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, AspectRatio));
1773 if ( ASDCP_SUCCESS(result) && ! ActiveFormatDescriptor.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveFormatDescriptor));
1774 if ( ASDCP_SUCCESS(result) && ! AlphaTransparency.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, AlphaTransparency));
1775 if ( ASDCP_SUCCESS(result) && ! TransferCharacteristic.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, TransferCharacteristic));
1776 if ( ASDCP_SUCCESS(result) && ! ImageAlignmentOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ImageAlignmentOffset));
1777 if ( ASDCP_SUCCESS(result) && ! ImageStartOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ImageStartOffset));
1778 if ( ASDCP_SUCCESS(result) && ! ImageEndOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ImageEndOffset));
1779 if ( ASDCP_SUCCESS(result) && ! FieldDominance.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, FieldDominance));
1780 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, PictureEssenceCoding));
1781 if ( ASDCP_SUCCESS(result) && ! CodingEquations.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, CodingEquations));
1782 if ( ASDCP_SUCCESS(result) && ! ColorPrimaries.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ColorPrimaries));
1783 if ( ASDCP_SUCCESS(result) && ! AlternativeCenterCuts.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, AlternativeCenterCuts));
1784 if ( ASDCP_SUCCESS(result) && ! ActiveWidth.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveWidth));
1785 if ( ASDCP_SUCCESS(result) && ! ActiveHeight.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveHeight));
1786 if ( ASDCP_SUCCESS(result) && ! ActiveXOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveXOffset));
1787 if ( ASDCP_SUCCESS(result) && ! ActiveYOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveYOffset));
1788 if ( ASDCP_SUCCESS(result) && ! VideoLineMap.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, VideoLineMap));
1789 if ( ASDCP_SUCCESS(result) && ! MasteringDisplayPrimaries.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayPrimaries));
1790 if ( ASDCP_SUCCESS(result) && ! MasteringDisplayWhitePointChromaticity.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayWhitePointChromaticity));
1791 if ( ASDCP_SUCCESS(result) && ! MasteringDisplayMaximumLuminance.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayMaximumLuminance));
1792 if ( ASDCP_SUCCESS(result) && ! MasteringDisplayMinimumLuminance.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayMinimumLuminance));
1798 GenericPictureEssenceDescriptor::Copy(const GenericPictureEssenceDescriptor& rhs)
1800 FileDescriptor::Copy(rhs);
1801 SignalStandard = rhs.SignalStandard;
1802 FrameLayout = rhs.FrameLayout;
1803 StoredWidth = rhs.StoredWidth;
1804 StoredHeight = rhs.StoredHeight;
1805 StoredF2Offset = rhs.StoredF2Offset;
1806 SampledWidth = rhs.SampledWidth;
1807 SampledHeight = rhs.SampledHeight;
1808 SampledXOffset = rhs.SampledXOffset;
1809 SampledYOffset = rhs.SampledYOffset;
1810 DisplayHeight = rhs.DisplayHeight;
1811 DisplayWidth = rhs.DisplayWidth;
1812 DisplayXOffset = rhs.DisplayXOffset;
1813 DisplayYOffset = rhs.DisplayYOffset;
1814 DisplayF2Offset = rhs.DisplayF2Offset;
1815 AspectRatio = rhs.AspectRatio;
1816 ActiveFormatDescriptor = rhs.ActiveFormatDescriptor;
1817 AlphaTransparency = rhs.AlphaTransparency;
1818 TransferCharacteristic = rhs.TransferCharacteristic;
1819 ImageAlignmentOffset = rhs.ImageAlignmentOffset;
1820 ImageStartOffset = rhs.ImageStartOffset;
1821 ImageEndOffset = rhs.ImageEndOffset;
1822 FieldDominance = rhs.FieldDominance;
1823 PictureEssenceCoding = rhs.PictureEssenceCoding;
1824 CodingEquations = rhs.CodingEquations;
1825 ColorPrimaries = rhs.ColorPrimaries;
1826 AlternativeCenterCuts = rhs.AlternativeCenterCuts;
1827 ActiveWidth = rhs.ActiveWidth;
1828 ActiveHeight = rhs.ActiveHeight;
1829 ActiveXOffset = rhs.ActiveXOffset;
1830 ActiveYOffset = rhs.ActiveYOffset;
1831 VideoLineMap = rhs.VideoLineMap;
1832 MasteringDisplayPrimaries = rhs.MasteringDisplayPrimaries;
1833 MasteringDisplayWhitePointChromaticity = rhs.MasteringDisplayWhitePointChromaticity;
1834 MasteringDisplayMaximumLuminance = rhs.MasteringDisplayMaximumLuminance;
1835 MasteringDisplayMinimumLuminance = rhs.MasteringDisplayMinimumLuminance;
1840 GenericPictureEssenceDescriptor::Dump(FILE* stream)
1842 char identbuf[IdentBufferLen];
1848 FileDescriptor::Dump(stream);
1849 if ( ! SignalStandard.empty() ) {
1850 fprintf(stream, " %22s = %d\n", "SignalStandard", SignalStandard.get());
1852 fprintf(stream, " %22s = %d\n", "FrameLayout", FrameLayout);
1853 fprintf(stream, " %22s = %d\n", "StoredWidth", StoredWidth);
1854 fprintf(stream, " %22s = %d\n", "StoredHeight", StoredHeight);
1855 if ( ! StoredF2Offset.empty() ) {
1856 fprintf(stream, " %22s = %d\n", "StoredF2Offset", StoredF2Offset.get());
1858 if ( ! SampledWidth.empty() ) {
1859 fprintf(stream, " %22s = %d\n", "SampledWidth", SampledWidth.get());
1861 if ( ! SampledHeight.empty() ) {
1862 fprintf(stream, " %22s = %d\n", "SampledHeight", SampledHeight.get());
1864 if ( ! SampledXOffset.empty() ) {
1865 fprintf(stream, " %22s = %d\n", "SampledXOffset", SampledXOffset.get());
1867 if ( ! SampledYOffset.empty() ) {
1868 fprintf(stream, " %22s = %d\n", "SampledYOffset", SampledYOffset.get());
1870 if ( ! DisplayHeight.empty() ) {
1871 fprintf(stream, " %22s = %d\n", "DisplayHeight", DisplayHeight.get());
1873 if ( ! DisplayWidth.empty() ) {
1874 fprintf(stream, " %22s = %d\n", "DisplayWidth", DisplayWidth.get());
1876 if ( ! DisplayXOffset.empty() ) {
1877 fprintf(stream, " %22s = %d\n", "DisplayXOffset", DisplayXOffset.get());
1879 if ( ! DisplayYOffset.empty() ) {
1880 fprintf(stream, " %22s = %d\n", "DisplayYOffset", DisplayYOffset.get());
1882 if ( ! DisplayF2Offset.empty() ) {
1883 fprintf(stream, " %22s = %d\n", "DisplayF2Offset", DisplayF2Offset.get());
1885 fprintf(stream, " %22s = %s\n", "AspectRatio", AspectRatio.EncodeString(identbuf, IdentBufferLen));
1886 if ( ! ActiveFormatDescriptor.empty() ) {
1887 fprintf(stream, " %22s = %d\n", "ActiveFormatDescriptor", ActiveFormatDescriptor.get());
1889 if ( ! AlphaTransparency.empty() ) {
1890 fprintf(stream, " %22s = %d\n", "AlphaTransparency", AlphaTransparency.get());
1892 if ( ! TransferCharacteristic.empty() ) {
1893 fprintf(stream, " %22s = %s\n", "TransferCharacteristic", TransferCharacteristic.get().EncodeString(identbuf, IdentBufferLen));
1895 if ( ! ImageAlignmentOffset.empty() ) {
1896 fprintf(stream, " %22s = %d\n", "ImageAlignmentOffset", ImageAlignmentOffset.get());
1898 if ( ! ImageStartOffset.empty() ) {
1899 fprintf(stream, " %22s = %d\n", "ImageStartOffset", ImageStartOffset.get());
1901 if ( ! ImageEndOffset.empty() ) {
1902 fprintf(stream, " %22s = %d\n", "ImageEndOffset", ImageEndOffset.get());
1904 if ( ! FieldDominance.empty() ) {
1905 fprintf(stream, " %22s = %d\n", "FieldDominance", FieldDominance.get());
1907 fprintf(stream, " %22s = %s\n", "PictureEssenceCoding", PictureEssenceCoding.EncodeString(identbuf, IdentBufferLen));
1908 if ( ! CodingEquations.empty() ) {
1909 fprintf(stream, " %22s = %s\n", "CodingEquations", CodingEquations.get().EncodeString(identbuf, IdentBufferLen));
1911 if ( ! ColorPrimaries.empty() ) {
1912 fprintf(stream, " %22s = %s\n", "ColorPrimaries", ColorPrimaries.get().EncodeString(identbuf, IdentBufferLen));
1914 if ( ! AlternativeCenterCuts.empty() ) {
1915 fprintf(stream, " %22s:\n", "AlternativeCenterCuts");
1916 AlternativeCenterCuts.get().Dump(stream);
1918 if ( ! ActiveWidth.empty() ) {
1919 fprintf(stream, " %22s = %d\n", "ActiveWidth", ActiveWidth.get());
1921 if ( ! ActiveHeight.empty() ) {
1922 fprintf(stream, " %22s = %d\n", "ActiveHeight", ActiveHeight.get());
1924 if ( ! ActiveXOffset.empty() ) {
1925 fprintf(stream, " %22s = %d\n", "ActiveXOffset", ActiveXOffset.get());
1927 if ( ! ActiveYOffset.empty() ) {
1928 fprintf(stream, " %22s = %d\n", "ActiveYOffset", ActiveYOffset.get());
1930 if ( ! VideoLineMap.empty() ) {
1931 fprintf(stream, " %22s = %s\n", "VideoLineMap", VideoLineMap.get().EncodeString(identbuf, IdentBufferLen));
1933 if ( ! MasteringDisplayPrimaries.empty() ) {
1934 fprintf(stream, " %22s = %s\n", "MasteringDisplayPrimaries", MasteringDisplayPrimaries.get().EncodeString(identbuf, IdentBufferLen));
1936 if ( ! MasteringDisplayWhitePointChromaticity.empty() ) {
1937 fprintf(stream, " %22s = %s\n", "MasteringDisplayWhitePointChromaticity", MasteringDisplayWhitePointChromaticity.get().EncodeString(identbuf, IdentBufferLen));
1939 if ( ! MasteringDisplayMaximumLuminance.empty() ) {
1940 fprintf(stream, " %22s = %d\n", "MasteringDisplayMaximumLuminance", MasteringDisplayMaximumLuminance.get());
1942 if ( ! MasteringDisplayMinimumLuminance.empty() ) {
1943 fprintf(stream, " %22s = %d\n", "MasteringDisplayMinimumLuminance", MasteringDisplayMinimumLuminance.get());
1949 GenericPictureEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1951 return InterchangeObject::InitFromBuffer(p, l);
1956 GenericPictureEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1958 return InterchangeObject::WriteToBuffer(Buffer);
1961 //------------------------------------------------------------------------------------------
1962 // RGBAEssenceDescriptor
1966 RGBAEssenceDescriptor::RGBAEssenceDescriptor(const Dictionary*& d) : GenericPictureEssenceDescriptor(d), m_Dict(d)
1969 m_UL = m_Dict->ul(MDD_RGBAEssenceDescriptor);
1972 RGBAEssenceDescriptor::RGBAEssenceDescriptor(const RGBAEssenceDescriptor& rhs) : GenericPictureEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
1975 m_UL = m_Dict->ul(MDD_RGBAEssenceDescriptor);
1982 RGBAEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1985 Result_t result = GenericPictureEssenceDescriptor::InitFromTLVSet(TLVSet);
1986 if ( ASDCP_SUCCESS(result) ) {
1987 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(RGBAEssenceDescriptor, ComponentMaxRef));
1988 ComponentMaxRef.set_has_value( result == RESULT_OK );
1990 if ( ASDCP_SUCCESS(result) ) {
1991 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(RGBAEssenceDescriptor, ComponentMinRef));
1992 ComponentMinRef.set_has_value( result == RESULT_OK );
1994 if ( ASDCP_SUCCESS(result) ) {
1995 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(RGBAEssenceDescriptor, AlphaMinRef));
1996 AlphaMinRef.set_has_value( result == RESULT_OK );
1998 if ( ASDCP_SUCCESS(result) ) {
1999 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(RGBAEssenceDescriptor, AlphaMaxRef));
2000 AlphaMaxRef.set_has_value( result == RESULT_OK );
2002 if ( ASDCP_SUCCESS(result) ) {
2003 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(RGBAEssenceDescriptor, ScanningDirection));
2004 ScanningDirection.set_has_value( result == RESULT_OK );
2006 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(RGBAEssenceDescriptor, PixelLayout));
2012 RGBAEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2015 Result_t result = GenericPictureEssenceDescriptor::WriteToTLVSet(TLVSet);
2016 if ( ASDCP_SUCCESS(result) && ! ComponentMaxRef.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(RGBAEssenceDescriptor, ComponentMaxRef));
2017 if ( ASDCP_SUCCESS(result) && ! ComponentMinRef.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(RGBAEssenceDescriptor, ComponentMinRef));
2018 if ( ASDCP_SUCCESS(result) && ! AlphaMinRef.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(RGBAEssenceDescriptor, AlphaMinRef));
2019 if ( ASDCP_SUCCESS(result) && ! AlphaMaxRef.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(RGBAEssenceDescriptor, AlphaMaxRef));
2020 if ( ASDCP_SUCCESS(result) && ! ScanningDirection.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(RGBAEssenceDescriptor, ScanningDirection));
2021 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(RGBAEssenceDescriptor, PixelLayout));
2027 RGBAEssenceDescriptor::Copy(const RGBAEssenceDescriptor& rhs)
2029 GenericPictureEssenceDescriptor::Copy(rhs);
2030 ComponentMaxRef = rhs.ComponentMaxRef;
2031 ComponentMinRef = rhs.ComponentMinRef;
2032 AlphaMinRef = rhs.AlphaMinRef;
2033 AlphaMaxRef = rhs.AlphaMaxRef;
2034 ScanningDirection = rhs.ScanningDirection;
2035 PixelLayout = rhs.PixelLayout;
2040 RGBAEssenceDescriptor::Dump(FILE* stream)
2042 char identbuf[IdentBufferLen];
2048 GenericPictureEssenceDescriptor::Dump(stream);
2049 if ( ! ComponentMaxRef.empty() ) {
2050 fprintf(stream, " %22s = %d\n", "ComponentMaxRef", ComponentMaxRef.get());
2052 if ( ! ComponentMinRef.empty() ) {
2053 fprintf(stream, " %22s = %d\n", "ComponentMinRef", ComponentMinRef.get());
2055 if ( ! AlphaMinRef.empty() ) {
2056 fprintf(stream, " %22s = %d\n", "AlphaMinRef", AlphaMinRef.get());
2058 if ( ! AlphaMaxRef.empty() ) {
2059 fprintf(stream, " %22s = %d\n", "AlphaMaxRef", AlphaMaxRef.get());
2061 if ( ! ScanningDirection.empty() ) {
2062 fprintf(stream, " %22s = %d\n", "ScanningDirection", ScanningDirection.get());
2064 fprintf(stream, " %22s = %s\n", "PixelLayout", PixelLayout.EncodeString(identbuf, IdentBufferLen));
2069 RGBAEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
2071 return InterchangeObject::InitFromBuffer(p, l);
2076 RGBAEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2078 return InterchangeObject::WriteToBuffer(Buffer);
2081 //------------------------------------------------------------------------------------------
2082 // JPEG2000PictureSubDescriptor
2086 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)
2089 m_UL = m_Dict->ul(MDD_JPEG2000PictureSubDescriptor);
2092 JPEG2000PictureSubDescriptor::JPEG2000PictureSubDescriptor(const JPEG2000PictureSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2095 m_UL = m_Dict->ul(MDD_JPEG2000PictureSubDescriptor);
2102 JPEG2000PictureSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
2105 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2106 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Rsize));
2107 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Xsize));
2108 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Ysize));
2109 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XOsize));
2110 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YOsize));
2111 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XTsize));
2112 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YTsize));
2113 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XTOsize));
2114 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YTOsize));
2115 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Csize));
2116 if ( ASDCP_SUCCESS(result) ) {
2117 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(JPEG2000PictureSubDescriptor, PictureComponentSizing));
2118 PictureComponentSizing.set_has_value( result == RESULT_OK );
2120 if ( ASDCP_SUCCESS(result) ) {
2121 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(JPEG2000PictureSubDescriptor, CodingStyleDefault));
2122 CodingStyleDefault.set_has_value( result == RESULT_OK );
2124 if ( ASDCP_SUCCESS(result) ) {
2125 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(JPEG2000PictureSubDescriptor, QuantizationDefault));
2126 QuantizationDefault.set_has_value( result == RESULT_OK );
2128 if ( ASDCP_SUCCESS(result) ) {
2129 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(JPEG2000PictureSubDescriptor, J2CLayout));
2130 J2CLayout.set_has_value( result == RESULT_OK );
2137 JPEG2000PictureSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2140 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2141 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Rsize));
2142 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Xsize));
2143 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Ysize));
2144 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XOsize));
2145 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YOsize));
2146 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XTsize));
2147 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YTsize));
2148 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XTOsize));
2149 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YTOsize));
2150 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Csize));
2151 if ( ASDCP_SUCCESS(result) && ! PictureComponentSizing.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, PictureComponentSizing));
2152 if ( ASDCP_SUCCESS(result) && ! CodingStyleDefault.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, CodingStyleDefault));
2153 if ( ASDCP_SUCCESS(result) && ! QuantizationDefault.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, QuantizationDefault));
2154 if ( ASDCP_SUCCESS(result) && ! J2CLayout.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, J2CLayout));
2160 JPEG2000PictureSubDescriptor::Copy(const JPEG2000PictureSubDescriptor& rhs)
2162 InterchangeObject::Copy(rhs);
2166 XOsize = rhs.XOsize;
2167 YOsize = rhs.YOsize;
2168 XTsize = rhs.XTsize;
2169 YTsize = rhs.YTsize;
2170 XTOsize = rhs.XTOsize;
2171 YTOsize = rhs.YTOsize;
2173 PictureComponentSizing = rhs.PictureComponentSizing;
2174 CodingStyleDefault = rhs.CodingStyleDefault;
2175 QuantizationDefault = rhs.QuantizationDefault;
2176 J2CLayout = rhs.J2CLayout;
2181 JPEG2000PictureSubDescriptor::Dump(FILE* stream)
2183 char identbuf[IdentBufferLen];
2189 InterchangeObject::Dump(stream);
2190 fprintf(stream, " %22s = %d\n", "Rsize", Rsize);
2191 fprintf(stream, " %22s = %d\n", "Xsize", Xsize);
2192 fprintf(stream, " %22s = %d\n", "Ysize", Ysize);
2193 fprintf(stream, " %22s = %d\n", "XOsize", XOsize);
2194 fprintf(stream, " %22s = %d\n", "YOsize", YOsize);
2195 fprintf(stream, " %22s = %d\n", "XTsize", XTsize);
2196 fprintf(stream, " %22s = %d\n", "YTsize", YTsize);
2197 fprintf(stream, " %22s = %d\n", "XTOsize", XTOsize);
2198 fprintf(stream, " %22s = %d\n", "YTOsize", YTOsize);
2199 fprintf(stream, " %22s = %d\n", "Csize", Csize);
2200 if ( ! PictureComponentSizing.empty() ) {
2201 fprintf(stream, " %22s = %s\n", "PictureComponentSizing", PictureComponentSizing.get().EncodeString(identbuf, IdentBufferLen));
2203 if ( ! CodingStyleDefault.empty() ) {
2204 fprintf(stream, " %22s = %s\n", "CodingStyleDefault", CodingStyleDefault.get().EncodeString(identbuf, IdentBufferLen));
2206 if ( ! QuantizationDefault.empty() ) {
2207 fprintf(stream, " %22s = %s\n", "QuantizationDefault", QuantizationDefault.get().EncodeString(identbuf, IdentBufferLen));
2209 if ( ! J2CLayout.empty() ) {
2210 fprintf(stream, " %22s = %s\n", "J2CLayout", J2CLayout.get().EncodeString(identbuf, IdentBufferLen));
2216 JPEG2000PictureSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
2218 return InterchangeObject::InitFromBuffer(p, l);
2223 JPEG2000PictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2225 return InterchangeObject::WriteToBuffer(Buffer);
2228 //------------------------------------------------------------------------------------------
2229 // CDCIEssenceDescriptor
2233 CDCIEssenceDescriptor::CDCIEssenceDescriptor(const Dictionary*& d) : GenericPictureEssenceDescriptor(d), m_Dict(d), ComponentDepth(0), HorizontalSubsampling(0)
2236 m_UL = m_Dict->ul(MDD_CDCIEssenceDescriptor);
2239 CDCIEssenceDescriptor::CDCIEssenceDescriptor(const CDCIEssenceDescriptor& rhs) : GenericPictureEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
2242 m_UL = m_Dict->ul(MDD_CDCIEssenceDescriptor);
2249 CDCIEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
2252 Result_t result = GenericPictureEssenceDescriptor::InitFromTLVSet(TLVSet);
2253 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, ComponentDepth));
2254 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, HorizontalSubsampling));
2255 if ( ASDCP_SUCCESS(result) ) {
2256 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, VerticalSubsampling));
2257 VerticalSubsampling.set_has_value( result == RESULT_OK );
2259 if ( ASDCP_SUCCESS(result) ) {
2260 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, ColorSiting));
2261 ColorSiting.set_has_value( result == RESULT_OK );
2263 if ( ASDCP_SUCCESS(result) ) {
2264 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, ReversedByteOrder));
2265 ReversedByteOrder.set_has_value( result == RESULT_OK );
2267 if ( ASDCP_SUCCESS(result) ) {
2268 result = TLVSet.ReadUi16(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, PaddingBits));
2269 PaddingBits.set_has_value( result == RESULT_OK );
2271 if ( ASDCP_SUCCESS(result) ) {
2272 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, AlphaSampleDepth));
2273 AlphaSampleDepth.set_has_value( result == RESULT_OK );
2275 if ( ASDCP_SUCCESS(result) ) {
2276 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, BlackRefLevel));
2277 BlackRefLevel.set_has_value( result == RESULT_OK );
2279 if ( ASDCP_SUCCESS(result) ) {
2280 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, WhiteReflevel));
2281 WhiteReflevel.set_has_value( result == RESULT_OK );
2283 if ( ASDCP_SUCCESS(result) ) {
2284 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, ColorRange));
2285 ColorRange.set_has_value( result == RESULT_OK );
2292 CDCIEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2295 Result_t result = GenericPictureEssenceDescriptor::WriteToTLVSet(TLVSet);
2296 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, ComponentDepth));
2297 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, HorizontalSubsampling));
2298 if ( ASDCP_SUCCESS(result) && ! VerticalSubsampling.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, VerticalSubsampling));
2299 if ( ASDCP_SUCCESS(result) && ! ColorSiting.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, ColorSiting));
2300 if ( ASDCP_SUCCESS(result) && ! ReversedByteOrder.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, ReversedByteOrder));
2301 if ( ASDCP_SUCCESS(result) && ! PaddingBits.empty() ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, PaddingBits));
2302 if ( ASDCP_SUCCESS(result) && ! AlphaSampleDepth.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, AlphaSampleDepth));
2303 if ( ASDCP_SUCCESS(result) && ! BlackRefLevel.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, BlackRefLevel));
2304 if ( ASDCP_SUCCESS(result) && ! WhiteReflevel.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, WhiteReflevel));
2305 if ( ASDCP_SUCCESS(result) && ! ColorRange.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, ColorRange));
2311 CDCIEssenceDescriptor::Copy(const CDCIEssenceDescriptor& rhs)
2313 GenericPictureEssenceDescriptor::Copy(rhs);
2314 ComponentDepth = rhs.ComponentDepth;
2315 HorizontalSubsampling = rhs.HorizontalSubsampling;
2316 VerticalSubsampling = rhs.VerticalSubsampling;
2317 ColorSiting = rhs.ColorSiting;
2318 ReversedByteOrder = rhs.ReversedByteOrder;
2319 PaddingBits = rhs.PaddingBits;
2320 AlphaSampleDepth = rhs.AlphaSampleDepth;
2321 BlackRefLevel = rhs.BlackRefLevel;
2322 WhiteReflevel = rhs.WhiteReflevel;
2323 ColorRange = rhs.ColorRange;
2328 CDCIEssenceDescriptor::Dump(FILE* stream)
2330 char identbuf[IdentBufferLen];
2336 GenericPictureEssenceDescriptor::Dump(stream);
2337 fprintf(stream, " %22s = %d\n", "ComponentDepth", ComponentDepth);
2338 fprintf(stream, " %22s = %d\n", "HorizontalSubsampling", HorizontalSubsampling);
2339 if ( ! VerticalSubsampling.empty() ) {
2340 fprintf(stream, " %22s = %d\n", "VerticalSubsampling", VerticalSubsampling.get());
2342 if ( ! ColorSiting.empty() ) {
2343 fprintf(stream, " %22s = %d\n", "ColorSiting", ColorSiting.get());
2345 if ( ! ReversedByteOrder.empty() ) {
2346 fprintf(stream, " %22s = %d\n", "ReversedByteOrder", ReversedByteOrder.get());
2348 if ( ! PaddingBits.empty() ) {
2349 fprintf(stream, " %22s = %d\n", "PaddingBits", PaddingBits.get());
2351 if ( ! AlphaSampleDepth.empty() ) {
2352 fprintf(stream, " %22s = %d\n", "AlphaSampleDepth", AlphaSampleDepth.get());
2354 if ( ! BlackRefLevel.empty() ) {
2355 fprintf(stream, " %22s = %d\n", "BlackRefLevel", BlackRefLevel.get());
2357 if ( ! WhiteReflevel.empty() ) {
2358 fprintf(stream, " %22s = %d\n", "WhiteReflevel", WhiteReflevel.get());
2360 if ( ! ColorRange.empty() ) {
2361 fprintf(stream, " %22s = %d\n", "ColorRange", ColorRange.get());
2367 CDCIEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
2369 return InterchangeObject::InitFromBuffer(p, l);
2374 CDCIEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2376 return InterchangeObject::WriteToBuffer(Buffer);
2379 //------------------------------------------------------------------------------------------
2380 // MPEG2VideoDescriptor
2384 MPEG2VideoDescriptor::MPEG2VideoDescriptor(const Dictionary*& d) : CDCIEssenceDescriptor(d), m_Dict(d)
2387 m_UL = m_Dict->ul(MDD_MPEG2VideoDescriptor);
2390 MPEG2VideoDescriptor::MPEG2VideoDescriptor(const MPEG2VideoDescriptor& rhs) : CDCIEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
2393 m_UL = m_Dict->ul(MDD_MPEG2VideoDescriptor);
2400 MPEG2VideoDescriptor::InitFromTLVSet(TLVReader& TLVSet)
2403 Result_t result = CDCIEssenceDescriptor::InitFromTLVSet(TLVSet);
2404 if ( ASDCP_SUCCESS(result) ) {
2405 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, SingleSequence));
2406 SingleSequence.set_has_value( result == RESULT_OK );
2408 if ( ASDCP_SUCCESS(result) ) {
2409 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, ConstantBFrames));
2410 ConstantBFrames.set_has_value( result == RESULT_OK );
2412 if ( ASDCP_SUCCESS(result) ) {
2413 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, CodedContentType));
2414 CodedContentType.set_has_value( result == RESULT_OK );
2416 if ( ASDCP_SUCCESS(result) ) {
2417 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, LowDelay));
2418 LowDelay.set_has_value( result == RESULT_OK );
2420 if ( ASDCP_SUCCESS(result) ) {
2421 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, ClosedGOP));
2422 ClosedGOP.set_has_value( result == RESULT_OK );
2424 if ( ASDCP_SUCCESS(result) ) {
2425 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, IdenticalGOP));
2426 IdenticalGOP.set_has_value( result == RESULT_OK );
2428 if ( ASDCP_SUCCESS(result) ) {
2429 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, MaxGOP));
2430 MaxGOP.set_has_value( result == RESULT_OK );
2432 if ( ASDCP_SUCCESS(result) ) {
2433 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, BPictureCount));
2434 BPictureCount.set_has_value( result == RESULT_OK );
2436 if ( ASDCP_SUCCESS(result) ) {
2437 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, BitRate));
2438 BitRate.set_has_value( result == RESULT_OK );
2440 if ( ASDCP_SUCCESS(result) ) {
2441 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, ProfileAndLevel));
2442 ProfileAndLevel.set_has_value( result == RESULT_OK );
2449 MPEG2VideoDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2452 Result_t result = CDCIEssenceDescriptor::WriteToTLVSet(TLVSet);
2453 if ( ASDCP_SUCCESS(result) && ! SingleSequence.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, SingleSequence));
2454 if ( ASDCP_SUCCESS(result) && ! ConstantBFrames.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, ConstantBFrames));
2455 if ( ASDCP_SUCCESS(result) && ! CodedContentType.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, CodedContentType));
2456 if ( ASDCP_SUCCESS(result) && ! LowDelay.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, LowDelay));
2457 if ( ASDCP_SUCCESS(result) && ! ClosedGOP.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, ClosedGOP));
2458 if ( ASDCP_SUCCESS(result) && ! IdenticalGOP.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, IdenticalGOP));
2459 if ( ASDCP_SUCCESS(result) && ! MaxGOP.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, MaxGOP));
2460 if ( ASDCP_SUCCESS(result) && ! BPictureCount.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, BPictureCount));
2461 if ( ASDCP_SUCCESS(result) && ! BitRate.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, BitRate));
2462 if ( ASDCP_SUCCESS(result) && ! ProfileAndLevel.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, ProfileAndLevel));
2468 MPEG2VideoDescriptor::Copy(const MPEG2VideoDescriptor& rhs)
2470 CDCIEssenceDescriptor::Copy(rhs);
2471 SingleSequence = rhs.SingleSequence;
2472 ConstantBFrames = rhs.ConstantBFrames;
2473 CodedContentType = rhs.CodedContentType;
2474 LowDelay = rhs.LowDelay;
2475 ClosedGOP = rhs.ClosedGOP;
2476 IdenticalGOP = rhs.IdenticalGOP;
2477 MaxGOP = rhs.MaxGOP;
2478 BPictureCount = rhs.BPictureCount;
2479 BitRate = rhs.BitRate;
2480 ProfileAndLevel = rhs.ProfileAndLevel;
2485 MPEG2VideoDescriptor::Dump(FILE* stream)
2487 char identbuf[IdentBufferLen];
2493 CDCIEssenceDescriptor::Dump(stream);
2494 if ( ! SingleSequence.empty() ) {
2495 fprintf(stream, " %22s = %d\n", "SingleSequence", SingleSequence.get());
2497 if ( ! ConstantBFrames.empty() ) {
2498 fprintf(stream, " %22s = %d\n", "ConstantBFrames", ConstantBFrames.get());
2500 if ( ! CodedContentType.empty() ) {
2501 fprintf(stream, " %22s = %d\n", "CodedContentType", CodedContentType.get());
2503 if ( ! LowDelay.empty() ) {
2504 fprintf(stream, " %22s = %d\n", "LowDelay", LowDelay.get());
2506 if ( ! ClosedGOP.empty() ) {
2507 fprintf(stream, " %22s = %d\n", "ClosedGOP", ClosedGOP.get());
2509 if ( ! IdenticalGOP.empty() ) {
2510 fprintf(stream, " %22s = %d\n", "IdenticalGOP", IdenticalGOP.get());
2512 if ( ! MaxGOP.empty() ) {
2513 fprintf(stream, " %22s = %d\n", "MaxGOP", MaxGOP.get());
2515 if ( ! BPictureCount.empty() ) {
2516 fprintf(stream, " %22s = %d\n", "BPictureCount", BPictureCount.get());
2518 if ( ! BitRate.empty() ) {
2519 fprintf(stream, " %22s = %d\n", "BitRate", BitRate.get());
2521 if ( ! ProfileAndLevel.empty() ) {
2522 fprintf(stream, " %22s = %d\n", "ProfileAndLevel", ProfileAndLevel.get());
2528 MPEG2VideoDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
2530 return InterchangeObject::InitFromBuffer(p, l);
2535 MPEG2VideoDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2537 return InterchangeObject::WriteToBuffer(Buffer);
2540 //------------------------------------------------------------------------------------------
2545 DMSegment::DMSegment(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), EventStartPosition(0), Duration(0)
2548 m_UL = m_Dict->ul(MDD_DMSegment);
2551 DMSegment::DMSegment(const DMSegment& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2554 m_UL = m_Dict->ul(MDD_DMSegment);
2561 DMSegment::InitFromTLVSet(TLVReader& TLVSet)
2564 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2565 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DMSegment, DataDefinition));
2566 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(DMSegment, EventStartPosition));
2567 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(DMSegment, Duration));
2568 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DMSegment, EventComment));
2569 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DMSegment, DMFramework));
2575 DMSegment::WriteToTLVSet(TLVWriter& TLVSet)
2578 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2579 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DMSegment, DataDefinition));
2580 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(DMSegment, EventStartPosition));
2581 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(DMSegment, Duration));
2582 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DMSegment, EventComment));
2583 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DMSegment, DMFramework));
2589 DMSegment::Copy(const DMSegment& rhs)
2591 InterchangeObject::Copy(rhs);
2592 DataDefinition = rhs.DataDefinition;
2593 EventStartPosition = rhs.EventStartPosition;
2594 Duration = rhs.Duration;
2595 EventComment = rhs.EventComment;
2596 DMFramework = rhs.DMFramework;
2601 DMSegment::Dump(FILE* stream)
2603 char identbuf[IdentBufferLen];
2609 InterchangeObject::Dump(stream);
2610 fprintf(stream, " %22s = %s\n", "DataDefinition", DataDefinition.EncodeString(identbuf, IdentBufferLen));
2611 fprintf(stream, " %22s = %s\n", "EventStartPosition", i64sz(EventStartPosition, identbuf));
2612 fprintf(stream, " %22s = %s\n", "Duration", i64sz(Duration, identbuf));
2613 fprintf(stream, " %22s = %s\n", "EventComment", EventComment.EncodeString(identbuf, IdentBufferLen));
2614 fprintf(stream, " %22s = %s\n", "DMFramework", DMFramework.EncodeString(identbuf, IdentBufferLen));
2619 DMSegment::InitFromBuffer(const byte_t* p, ui32_t l)
2621 return InterchangeObject::InitFromBuffer(p, l);
2626 DMSegment::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2628 return InterchangeObject::WriteToBuffer(Buffer);
2631 //------------------------------------------------------------------------------------------
2632 // CryptographicFramework
2636 CryptographicFramework::CryptographicFramework(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
2639 m_UL = m_Dict->ul(MDD_CryptographicFramework);
2642 CryptographicFramework::CryptographicFramework(const CryptographicFramework& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2645 m_UL = m_Dict->ul(MDD_CryptographicFramework);
2652 CryptographicFramework::InitFromTLVSet(TLVReader& TLVSet)
2655 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2656 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicFramework, ContextSR));
2662 CryptographicFramework::WriteToTLVSet(TLVWriter& TLVSet)
2665 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2666 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicFramework, ContextSR));
2672 CryptographicFramework::Copy(const CryptographicFramework& rhs)
2674 InterchangeObject::Copy(rhs);
2675 ContextSR = rhs.ContextSR;
2680 CryptographicFramework::Dump(FILE* stream)
2682 char identbuf[IdentBufferLen];
2688 InterchangeObject::Dump(stream);
2689 fprintf(stream, " %22s = %s\n", "ContextSR", ContextSR.EncodeString(identbuf, IdentBufferLen));
2694 CryptographicFramework::InitFromBuffer(const byte_t* p, ui32_t l)
2696 return InterchangeObject::InitFromBuffer(p, l);
2701 CryptographicFramework::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2703 return InterchangeObject::WriteToBuffer(Buffer);
2706 //------------------------------------------------------------------------------------------
2707 // CryptographicContext
2711 CryptographicContext::CryptographicContext(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
2714 m_UL = m_Dict->ul(MDD_CryptographicContext);
2717 CryptographicContext::CryptographicContext(const CryptographicContext& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2720 m_UL = m_Dict->ul(MDD_CryptographicContext);
2727 CryptographicContext::InitFromTLVSet(TLVReader& TLVSet)
2730 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2731 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, ContextID));
2732 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, SourceEssenceContainer));
2733 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, CipherAlgorithm));
2734 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, MICAlgorithm));
2735 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, CryptographicKeyID));
2741 CryptographicContext::WriteToTLVSet(TLVWriter& TLVSet)
2744 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2745 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, ContextID));
2746 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, SourceEssenceContainer));
2747 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, CipherAlgorithm));
2748 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, MICAlgorithm));
2749 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, CryptographicKeyID));
2755 CryptographicContext::Copy(const CryptographicContext& rhs)
2757 InterchangeObject::Copy(rhs);
2758 ContextID = rhs.ContextID;
2759 SourceEssenceContainer = rhs.SourceEssenceContainer;
2760 CipherAlgorithm = rhs.CipherAlgorithm;
2761 MICAlgorithm = rhs.MICAlgorithm;
2762 CryptographicKeyID = rhs.CryptographicKeyID;
2767 CryptographicContext::Dump(FILE* stream)
2769 char identbuf[IdentBufferLen];
2775 InterchangeObject::Dump(stream);
2776 fprintf(stream, " %22s = %s\n", "ContextID", ContextID.EncodeString(identbuf, IdentBufferLen));
2777 fprintf(stream, " %22s = %s\n", "SourceEssenceContainer", SourceEssenceContainer.EncodeString(identbuf, IdentBufferLen));
2778 fprintf(stream, " %22s = %s\n", "CipherAlgorithm", CipherAlgorithm.EncodeString(identbuf, IdentBufferLen));
2779 fprintf(stream, " %22s = %s\n", "MICAlgorithm", MICAlgorithm.EncodeString(identbuf, IdentBufferLen));
2780 fprintf(stream, " %22s = %s\n", "CryptographicKeyID", CryptographicKeyID.EncodeString(identbuf, IdentBufferLen));
2785 CryptographicContext::InitFromBuffer(const byte_t* p, ui32_t l)
2787 return InterchangeObject::InitFromBuffer(p, l);
2792 CryptographicContext::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2794 return InterchangeObject::WriteToBuffer(Buffer);
2797 //------------------------------------------------------------------------------------------
2798 // DescriptiveFramework
2802 DescriptiveFramework::DescriptiveFramework(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
2805 m_UL = m_Dict->ul(MDD_DescriptiveFramework);
2808 DescriptiveFramework::DescriptiveFramework(const DescriptiveFramework& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2811 m_UL = m_Dict->ul(MDD_DescriptiveFramework);
2818 DescriptiveFramework::InitFromTLVSet(TLVReader& TLVSet)
2821 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2822 if ( ASDCP_SUCCESS(result) ) {
2823 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(DescriptiveFramework, LinkedDescriptiveFrameworkPlugInId));
2824 LinkedDescriptiveFrameworkPlugInId.set_has_value( result == RESULT_OK );
2831 DescriptiveFramework::WriteToTLVSet(TLVWriter& TLVSet)
2834 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2835 if ( ASDCP_SUCCESS(result) && ! LinkedDescriptiveFrameworkPlugInId.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(DescriptiveFramework, LinkedDescriptiveFrameworkPlugInId));
2841 DescriptiveFramework::Copy(const DescriptiveFramework& rhs)
2843 InterchangeObject::Copy(rhs);
2844 LinkedDescriptiveFrameworkPlugInId = rhs.LinkedDescriptiveFrameworkPlugInId;
2849 DescriptiveFramework::Dump(FILE* stream)
2851 char identbuf[IdentBufferLen];
2857 InterchangeObject::Dump(stream);
2858 if ( ! LinkedDescriptiveFrameworkPlugInId.empty() ) {
2859 fprintf(stream, " %22s = %s\n", "LinkedDescriptiveFrameworkPlugInId", LinkedDescriptiveFrameworkPlugInId.get().EncodeString(identbuf, IdentBufferLen));
2865 DescriptiveFramework::InitFromBuffer(const byte_t* p, ui32_t l)
2867 return InterchangeObject::InitFromBuffer(p, l);
2872 DescriptiveFramework::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2874 return InterchangeObject::WriteToBuffer(Buffer);
2877 //------------------------------------------------------------------------------------------
2878 // DescriptiveObject
2882 DescriptiveObject::DescriptiveObject(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
2885 m_UL = m_Dict->ul(MDD_DescriptiveObject);
2888 DescriptiveObject::DescriptiveObject(const DescriptiveObject& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2891 m_UL = m_Dict->ul(MDD_DescriptiveObject);
2898 DescriptiveObject::InitFromTLVSet(TLVReader& TLVSet)
2901 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2902 if ( ASDCP_SUCCESS(result) ) {
2903 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(DescriptiveObject, LinkedDescriptiveObjectPlugInId));
2904 LinkedDescriptiveObjectPlugInId.set_has_value( result == RESULT_OK );
2911 DescriptiveObject::WriteToTLVSet(TLVWriter& TLVSet)
2914 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2915 if ( ASDCP_SUCCESS(result) && ! LinkedDescriptiveObjectPlugInId.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(DescriptiveObject, LinkedDescriptiveObjectPlugInId));
2921 DescriptiveObject::Copy(const DescriptiveObject& rhs)
2923 InterchangeObject::Copy(rhs);
2924 LinkedDescriptiveObjectPlugInId = rhs.LinkedDescriptiveObjectPlugInId;
2929 DescriptiveObject::Dump(FILE* stream)
2931 char identbuf[IdentBufferLen];
2937 InterchangeObject::Dump(stream);
2938 if ( ! LinkedDescriptiveObjectPlugInId.empty() ) {
2939 fprintf(stream, " %22s = %s\n", "LinkedDescriptiveObjectPlugInId", LinkedDescriptiveObjectPlugInId.get().EncodeString(identbuf, IdentBufferLen));
2945 DescriptiveObject::InitFromBuffer(const byte_t* p, ui32_t l)
2947 return InterchangeObject::InitFromBuffer(p, l);
2952 DescriptiveObject::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2954 return InterchangeObject::WriteToBuffer(Buffer);
2957 //------------------------------------------------------------------------------------------
2958 // GenericDataEssenceDescriptor
2962 GenericDataEssenceDescriptor::GenericDataEssenceDescriptor(const Dictionary*& d) : FileDescriptor(d), m_Dict(d)
2965 m_UL = m_Dict->ul(MDD_GenericDataEssenceDescriptor);
2968 GenericDataEssenceDescriptor::GenericDataEssenceDescriptor(const GenericDataEssenceDescriptor& rhs) : FileDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
2971 m_UL = m_Dict->ul(MDD_GenericDataEssenceDescriptor);
2978 GenericDataEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
2981 Result_t result = FileDescriptor::InitFromTLVSet(TLVSet);
2982 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericDataEssenceDescriptor, DataEssenceCoding));
2988 GenericDataEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2991 Result_t result = FileDescriptor::WriteToTLVSet(TLVSet);
2992 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericDataEssenceDescriptor, DataEssenceCoding));
2998 GenericDataEssenceDescriptor::Copy(const GenericDataEssenceDescriptor& rhs)
3000 FileDescriptor::Copy(rhs);
3001 DataEssenceCoding = rhs.DataEssenceCoding;
3006 GenericDataEssenceDescriptor::Dump(FILE* stream)
3008 char identbuf[IdentBufferLen];
3014 FileDescriptor::Dump(stream);
3015 fprintf(stream, " %22s = %s\n", "DataEssenceCoding", DataEssenceCoding.EncodeString(identbuf, IdentBufferLen));
3020 GenericDataEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3022 return InterchangeObject::InitFromBuffer(p, l);
3027 GenericDataEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3029 return InterchangeObject::WriteToBuffer(Buffer);
3032 //------------------------------------------------------------------------------------------
3033 // TimedTextDescriptor
3037 TimedTextDescriptor::TimedTextDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d)
3040 m_UL = m_Dict->ul(MDD_TimedTextDescriptor);
3043 TimedTextDescriptor::TimedTextDescriptor(const TimedTextDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3046 m_UL = m_Dict->ul(MDD_TimedTextDescriptor);
3053 TimedTextDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3056 Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet);
3057 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, ResourceID));
3058 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, UCSEncoding));
3059 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, NamespaceURI));
3060 if ( ASDCP_SUCCESS(result) ) {
3061 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(TimedTextDescriptor, RFC5646LanguageTagList));
3062 RFC5646LanguageTagList.set_has_value( result == RESULT_OK );
3069 TimedTextDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3072 Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet);
3073 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, ResourceID));
3074 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, UCSEncoding));
3075 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, NamespaceURI));
3076 if ( ASDCP_SUCCESS(result) && ! RFC5646LanguageTagList.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(TimedTextDescriptor, RFC5646LanguageTagList));
3082 TimedTextDescriptor::Copy(const TimedTextDescriptor& rhs)
3084 GenericDataEssenceDescriptor::Copy(rhs);
3085 ResourceID = rhs.ResourceID;
3086 UCSEncoding = rhs.UCSEncoding;
3087 NamespaceURI = rhs.NamespaceURI;
3088 RFC5646LanguageTagList = rhs.RFC5646LanguageTagList;
3093 TimedTextDescriptor::Dump(FILE* stream)
3095 char identbuf[IdentBufferLen];
3101 GenericDataEssenceDescriptor::Dump(stream);
3102 fprintf(stream, " %22s = %s\n", "ResourceID", ResourceID.EncodeString(identbuf, IdentBufferLen));
3103 fprintf(stream, " %22s = %s\n", "UCSEncoding", UCSEncoding.EncodeString(identbuf, IdentBufferLen));
3104 fprintf(stream, " %22s = %s\n", "NamespaceURI", NamespaceURI.EncodeString(identbuf, IdentBufferLen));
3105 if ( ! RFC5646LanguageTagList.empty() ) {
3106 fprintf(stream, " %22s = %s\n", "RFC5646LanguageTagList", RFC5646LanguageTagList.get().EncodeString(identbuf, IdentBufferLen));
3112 TimedTextDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3114 return InterchangeObject::InitFromBuffer(p, l);
3119 TimedTextDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3121 return InterchangeObject::WriteToBuffer(Buffer);
3124 //------------------------------------------------------------------------------------------
3125 // TimedTextResourceSubDescriptor
3129 TimedTextResourceSubDescriptor::TimedTextResourceSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), EssenceStreamID(0)
3132 m_UL = m_Dict->ul(MDD_TimedTextResourceSubDescriptor);
3135 TimedTextResourceSubDescriptor::TimedTextResourceSubDescriptor(const TimedTextResourceSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3138 m_UL = m_Dict->ul(MDD_TimedTextResourceSubDescriptor);
3145 TimedTextResourceSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3148 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3149 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextResourceSubDescriptor, AncillaryResourceID));
3150 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextResourceSubDescriptor, MIMEMediaType));
3151 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(TimedTextResourceSubDescriptor, EssenceStreamID));
3157 TimedTextResourceSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3160 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3161 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextResourceSubDescriptor, AncillaryResourceID));
3162 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextResourceSubDescriptor, MIMEMediaType));
3163 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(TimedTextResourceSubDescriptor, EssenceStreamID));
3169 TimedTextResourceSubDescriptor::Copy(const TimedTextResourceSubDescriptor& rhs)
3171 InterchangeObject::Copy(rhs);
3172 AncillaryResourceID = rhs.AncillaryResourceID;
3173 MIMEMediaType = rhs.MIMEMediaType;
3174 EssenceStreamID = rhs.EssenceStreamID;
3179 TimedTextResourceSubDescriptor::Dump(FILE* stream)
3181 char identbuf[IdentBufferLen];
3187 InterchangeObject::Dump(stream);
3188 fprintf(stream, " %22s = %s\n", "AncillaryResourceID", AncillaryResourceID.EncodeString(identbuf, IdentBufferLen));
3189 fprintf(stream, " %22s = %s\n", "MIMEMediaType", MIMEMediaType.EncodeString(identbuf, IdentBufferLen));
3190 fprintf(stream, " %22s = %d\n", "EssenceStreamID", EssenceStreamID);
3195 TimedTextResourceSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3197 return InterchangeObject::InitFromBuffer(p, l);
3202 TimedTextResourceSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3204 return InterchangeObject::WriteToBuffer(Buffer);
3207 //------------------------------------------------------------------------------------------
3208 // StereoscopicPictureSubDescriptor
3212 StereoscopicPictureSubDescriptor::StereoscopicPictureSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
3215 m_UL = m_Dict->ul(MDD_StereoscopicPictureSubDescriptor);
3218 StereoscopicPictureSubDescriptor::StereoscopicPictureSubDescriptor(const StereoscopicPictureSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3221 m_UL = m_Dict->ul(MDD_StereoscopicPictureSubDescriptor);
3228 StereoscopicPictureSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3231 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3237 StereoscopicPictureSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3240 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3246 StereoscopicPictureSubDescriptor::Copy(const StereoscopicPictureSubDescriptor& rhs)
3248 InterchangeObject::Copy(rhs);
3253 StereoscopicPictureSubDescriptor::Dump(FILE* stream)
3255 char identbuf[IdentBufferLen];
3261 InterchangeObject::Dump(stream);
3266 StereoscopicPictureSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3268 return InterchangeObject::InitFromBuffer(p, l);
3273 StereoscopicPictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3275 return InterchangeObject::WriteToBuffer(Buffer);
3278 //------------------------------------------------------------------------------------------
3279 // ContainerConstraintSubDescriptor
3283 ContainerConstraintSubDescriptor::ContainerConstraintSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
3286 m_UL = m_Dict->ul(MDD_ContainerConstraintSubDescriptor);
3289 ContainerConstraintSubDescriptor::ContainerConstraintSubDescriptor(const ContainerConstraintSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3292 m_UL = m_Dict->ul(MDD_ContainerConstraintSubDescriptor);
3299 ContainerConstraintSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3302 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3308 ContainerConstraintSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3311 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3317 ContainerConstraintSubDescriptor::Copy(const ContainerConstraintSubDescriptor& rhs)
3319 InterchangeObject::Copy(rhs);
3324 ContainerConstraintSubDescriptor::Dump(FILE* stream)
3326 char identbuf[IdentBufferLen];
3332 InterchangeObject::Dump(stream);
3337 ContainerConstraintSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3339 return InterchangeObject::InitFromBuffer(p, l);
3344 ContainerConstraintSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3346 return InterchangeObject::WriteToBuffer(Buffer);
3349 //------------------------------------------------------------------------------------------
3354 NetworkLocator::NetworkLocator(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
3357 m_UL = m_Dict->ul(MDD_NetworkLocator);
3360 NetworkLocator::NetworkLocator(const NetworkLocator& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3363 m_UL = m_Dict->ul(MDD_NetworkLocator);
3370 NetworkLocator::InitFromTLVSet(TLVReader& TLVSet)
3373 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3374 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(NetworkLocator, URLString));
3380 NetworkLocator::WriteToTLVSet(TLVWriter& TLVSet)
3383 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3384 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(NetworkLocator, URLString));
3390 NetworkLocator::Copy(const NetworkLocator& rhs)
3392 InterchangeObject::Copy(rhs);
3393 URLString = rhs.URLString;
3398 NetworkLocator::Dump(FILE* stream)
3400 char identbuf[IdentBufferLen];
3406 InterchangeObject::Dump(stream);
3407 fprintf(stream, " %22s = %s\n", "URLString", URLString.EncodeString(identbuf, IdentBufferLen));
3412 NetworkLocator::InitFromBuffer(const byte_t* p, ui32_t l)
3414 return InterchangeObject::InitFromBuffer(p, l);
3419 NetworkLocator::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3421 return InterchangeObject::WriteToBuffer(Buffer);
3424 //------------------------------------------------------------------------------------------
3425 // MCALabelSubDescriptor
3429 MCALabelSubDescriptor::MCALabelSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
3432 m_UL = m_Dict->ul(MDD_MCALabelSubDescriptor);
3435 MCALabelSubDescriptor::MCALabelSubDescriptor(const MCALabelSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3438 m_UL = m_Dict->ul(MDD_MCALabelSubDescriptor);
3445 MCALabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3448 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3449 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(MCALabelSubDescriptor, MCALabelDictionaryID));
3450 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(MCALabelSubDescriptor, MCALinkID));
3451 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(MCALabelSubDescriptor, MCATagSymbol));
3452 if ( ASDCP_SUCCESS(result) ) {
3453 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCATagName));
3454 MCATagName.set_has_value( result == RESULT_OK );
3456 if ( ASDCP_SUCCESS(result) ) {
3457 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAChannelID));
3458 MCAChannelID.set_has_value( result == RESULT_OK );
3460 if ( ASDCP_SUCCESS(result) ) {
3461 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, RFC5646SpokenLanguage));
3462 RFC5646SpokenLanguage.set_has_value( result == RESULT_OK );
3464 if ( ASDCP_SUCCESS(result) ) {
3465 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCATitle));
3466 MCATitle.set_has_value( result == RESULT_OK );
3468 if ( ASDCP_SUCCESS(result) ) {
3469 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCATitleVersion));
3470 MCATitleVersion.set_has_value( result == RESULT_OK );
3472 if ( ASDCP_SUCCESS(result) ) {
3473 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCATitleSubVersion));
3474 MCATitleSubVersion.set_has_value( result == RESULT_OK );
3476 if ( ASDCP_SUCCESS(result) ) {
3477 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAEpisode));
3478 MCAEpisode.set_has_value( result == RESULT_OK );
3480 if ( ASDCP_SUCCESS(result) ) {
3481 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAPartitionKind));
3482 MCAPartitionKind.set_has_value( result == RESULT_OK );
3484 if ( ASDCP_SUCCESS(result) ) {
3485 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAPartitionNumber));
3486 MCAPartitionNumber.set_has_value( result == RESULT_OK );
3488 if ( ASDCP_SUCCESS(result) ) {
3489 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAAudioContentKind));
3490 MCAAudioContentKind.set_has_value( result == RESULT_OK );
3492 if ( ASDCP_SUCCESS(result) ) {
3493 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAAudioElementKind));
3494 MCAAudioElementKind.set_has_value( result == RESULT_OK );
3501 MCALabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3504 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3505 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(MCALabelSubDescriptor, MCALabelDictionaryID));
3506 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(MCALabelSubDescriptor, MCALinkID));
3507 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(MCALabelSubDescriptor, MCATagSymbol));
3508 if ( ASDCP_SUCCESS(result) && ! MCATagName.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCATagName));
3509 if ( ASDCP_SUCCESS(result) && ! MCAChannelID.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAChannelID));
3510 if ( ASDCP_SUCCESS(result) && ! RFC5646SpokenLanguage.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, RFC5646SpokenLanguage));
3511 if ( ASDCP_SUCCESS(result) && ! MCATitle.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCATitle));
3512 if ( ASDCP_SUCCESS(result) && ! MCATitleVersion.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCATitleVersion));
3513 if ( ASDCP_SUCCESS(result) && ! MCATitleSubVersion.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCATitleSubVersion));
3514 if ( ASDCP_SUCCESS(result) && ! MCAEpisode.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAEpisode));
3515 if ( ASDCP_SUCCESS(result) && ! MCAPartitionKind.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAPartitionKind));
3516 if ( ASDCP_SUCCESS(result) && ! MCAPartitionNumber.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAPartitionNumber));
3517 if ( ASDCP_SUCCESS(result) && ! MCAAudioContentKind.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAAudioContentKind));
3518 if ( ASDCP_SUCCESS(result) && ! MCAAudioElementKind.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAAudioElementKind));
3524 MCALabelSubDescriptor::Copy(const MCALabelSubDescriptor& rhs)
3526 InterchangeObject::Copy(rhs);
3527 MCALabelDictionaryID = rhs.MCALabelDictionaryID;
3528 MCALinkID = rhs.MCALinkID;
3529 MCATagSymbol = rhs.MCATagSymbol;
3530 MCATagName = rhs.MCATagName;
3531 MCAChannelID = rhs.MCAChannelID;
3532 RFC5646SpokenLanguage = rhs.RFC5646SpokenLanguage;
3533 MCATitle = rhs.MCATitle;
3534 MCATitleVersion = rhs.MCATitleVersion;
3535 MCATitleSubVersion = rhs.MCATitleSubVersion;
3536 MCAEpisode = rhs.MCAEpisode;
3537 MCAPartitionKind = rhs.MCAPartitionKind;
3538 MCAPartitionNumber = rhs.MCAPartitionNumber;
3539 MCAAudioContentKind = rhs.MCAAudioContentKind;
3540 MCAAudioElementKind = rhs.MCAAudioElementKind;
3545 MCALabelSubDescriptor::Dump(FILE* stream)
3547 char identbuf[IdentBufferLen];
3553 InterchangeObject::Dump(stream);
3554 fprintf(stream, " %22s = %s\n", "MCALabelDictionaryID", MCALabelDictionaryID.EncodeString(identbuf, IdentBufferLen));
3555 fprintf(stream, " %22s = %s\n", "MCALinkID", MCALinkID.EncodeString(identbuf, IdentBufferLen));
3556 fprintf(stream, " %22s = %s\n", "MCATagSymbol", MCATagSymbol.EncodeString(identbuf, IdentBufferLen));
3557 if ( ! MCATagName.empty() ) {
3558 fprintf(stream, " %22s = %s\n", "MCATagName", MCATagName.get().EncodeString(identbuf, IdentBufferLen));
3560 if ( ! MCAChannelID.empty() ) {
3561 fprintf(stream, " %22s = %d\n", "MCAChannelID", MCAChannelID.get());
3563 if ( ! RFC5646SpokenLanguage.empty() ) {
3564 fprintf(stream, " %22s = %s\n", "RFC5646SpokenLanguage", RFC5646SpokenLanguage.get().EncodeString(identbuf, IdentBufferLen));
3566 if ( ! MCATitle.empty() ) {
3567 fprintf(stream, " %22s = %s\n", "MCATitle", MCATitle.get().EncodeString(identbuf, IdentBufferLen));
3569 if ( ! MCATitleVersion.empty() ) {
3570 fprintf(stream, " %22s = %s\n", "MCATitleVersion", MCATitleVersion.get().EncodeString(identbuf, IdentBufferLen));
3572 if ( ! MCATitleSubVersion.empty() ) {
3573 fprintf(stream, " %22s = %s\n", "MCATitleSubVersion", MCATitleSubVersion.get().EncodeString(identbuf, IdentBufferLen));
3575 if ( ! MCAEpisode.empty() ) {
3576 fprintf(stream, " %22s = %s\n", "MCAEpisode", MCAEpisode.get().EncodeString(identbuf, IdentBufferLen));
3578 if ( ! MCAPartitionKind.empty() ) {
3579 fprintf(stream, " %22s = %s\n", "MCAPartitionKind", MCAPartitionKind.get().EncodeString(identbuf, IdentBufferLen));
3581 if ( ! MCAPartitionNumber.empty() ) {
3582 fprintf(stream, " %22s = %s\n", "MCAPartitionNumber", MCAPartitionNumber.get().EncodeString(identbuf, IdentBufferLen));
3584 if ( ! MCAAudioContentKind.empty() ) {
3585 fprintf(stream, " %22s = %s\n", "MCAAudioContentKind", MCAAudioContentKind.get().EncodeString(identbuf, IdentBufferLen));
3587 if ( ! MCAAudioElementKind.empty() ) {
3588 fprintf(stream, " %22s = %s\n", "MCAAudioElementKind", MCAAudioElementKind.get().EncodeString(identbuf, IdentBufferLen));
3594 MCALabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3596 return InterchangeObject::InitFromBuffer(p, l);
3601 MCALabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3603 return InterchangeObject::WriteToBuffer(Buffer);
3606 //------------------------------------------------------------------------------------------
3607 // AudioChannelLabelSubDescriptor
3611 AudioChannelLabelSubDescriptor::AudioChannelLabelSubDescriptor(const Dictionary*& d) : MCALabelSubDescriptor(d), m_Dict(d)
3614 m_UL = m_Dict->ul(MDD_AudioChannelLabelSubDescriptor);
3617 AudioChannelLabelSubDescriptor::AudioChannelLabelSubDescriptor(const AudioChannelLabelSubDescriptor& rhs) : MCALabelSubDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3620 m_UL = m_Dict->ul(MDD_AudioChannelLabelSubDescriptor);
3627 AudioChannelLabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3630 Result_t result = MCALabelSubDescriptor::InitFromTLVSet(TLVSet);
3631 if ( ASDCP_SUCCESS(result) ) {
3632 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(AudioChannelLabelSubDescriptor, SoundfieldGroupLinkID));
3633 SoundfieldGroupLinkID.set_has_value( result == RESULT_OK );
3640 AudioChannelLabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3643 Result_t result = MCALabelSubDescriptor::WriteToTLVSet(TLVSet);
3644 if ( ASDCP_SUCCESS(result) && ! SoundfieldGroupLinkID.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(AudioChannelLabelSubDescriptor, SoundfieldGroupLinkID));
3650 AudioChannelLabelSubDescriptor::Copy(const AudioChannelLabelSubDescriptor& rhs)
3652 MCALabelSubDescriptor::Copy(rhs);
3653 SoundfieldGroupLinkID = rhs.SoundfieldGroupLinkID;
3658 AudioChannelLabelSubDescriptor::Dump(FILE* stream)
3660 char identbuf[IdentBufferLen];
3666 MCALabelSubDescriptor::Dump(stream);
3667 if ( ! SoundfieldGroupLinkID.empty() ) {
3668 fprintf(stream, " %22s = %s\n", "SoundfieldGroupLinkID", SoundfieldGroupLinkID.get().EncodeString(identbuf, IdentBufferLen));
3674 AudioChannelLabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3676 return InterchangeObject::InitFromBuffer(p, l);
3681 AudioChannelLabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3683 return InterchangeObject::WriteToBuffer(Buffer);
3686 //------------------------------------------------------------------------------------------
3687 // SoundfieldGroupLabelSubDescriptor
3691 SoundfieldGroupLabelSubDescriptor::SoundfieldGroupLabelSubDescriptor(const Dictionary*& d) : MCALabelSubDescriptor(d), m_Dict(d)
3694 m_UL = m_Dict->ul(MDD_SoundfieldGroupLabelSubDescriptor);
3697 SoundfieldGroupLabelSubDescriptor::SoundfieldGroupLabelSubDescriptor(const SoundfieldGroupLabelSubDescriptor& rhs) : MCALabelSubDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3700 m_UL = m_Dict->ul(MDD_SoundfieldGroupLabelSubDescriptor);
3707 SoundfieldGroupLabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3710 Result_t result = MCALabelSubDescriptor::InitFromTLVSet(TLVSet);
3711 if ( ASDCP_SUCCESS(result) ) {
3712 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(SoundfieldGroupLabelSubDescriptor, GroupOfSoundfieldGroupsLinkID));
3719 SoundfieldGroupLabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3722 Result_t result = MCALabelSubDescriptor::WriteToTLVSet(TLVSet);
3723 if ( ASDCP_SUCCESS(result) && ! GroupOfSoundfieldGroupsLinkID.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(SoundfieldGroupLabelSubDescriptor, GroupOfSoundfieldGroupsLinkID));
3729 SoundfieldGroupLabelSubDescriptor::Copy(const SoundfieldGroupLabelSubDescriptor& rhs)
3731 MCALabelSubDescriptor::Copy(rhs);
3732 GroupOfSoundfieldGroupsLinkID = rhs.GroupOfSoundfieldGroupsLinkID;
3737 SoundfieldGroupLabelSubDescriptor::Dump(FILE* stream)
3739 char identbuf[IdentBufferLen];
3745 MCALabelSubDescriptor::Dump(stream);
3746 if ( ! GroupOfSoundfieldGroupsLinkID.empty() ) {
3747 fprintf(stream, " %22s:\n", "GroupOfSoundfieldGroupsLinkID");
3748 GroupOfSoundfieldGroupsLinkID.get().Dump(stream);
3754 SoundfieldGroupLabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3756 return InterchangeObject::InitFromBuffer(p, l);
3761 SoundfieldGroupLabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3763 return InterchangeObject::WriteToBuffer(Buffer);
3766 //------------------------------------------------------------------------------------------
3767 // GroupOfSoundfieldGroupsLabelSubDescriptor
3771 GroupOfSoundfieldGroupsLabelSubDescriptor::GroupOfSoundfieldGroupsLabelSubDescriptor(const Dictionary*& d) : MCALabelSubDescriptor(d), m_Dict(d)
3774 m_UL = m_Dict->ul(MDD_GroupOfSoundfieldGroupsLabelSubDescriptor);
3777 GroupOfSoundfieldGroupsLabelSubDescriptor::GroupOfSoundfieldGroupsLabelSubDescriptor(const GroupOfSoundfieldGroupsLabelSubDescriptor& rhs) : MCALabelSubDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3780 m_UL = m_Dict->ul(MDD_GroupOfSoundfieldGroupsLabelSubDescriptor);
3787 GroupOfSoundfieldGroupsLabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3790 Result_t result = MCALabelSubDescriptor::InitFromTLVSet(TLVSet);
3796 GroupOfSoundfieldGroupsLabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3799 Result_t result = MCALabelSubDescriptor::WriteToTLVSet(TLVSet);
3805 GroupOfSoundfieldGroupsLabelSubDescriptor::Copy(const GroupOfSoundfieldGroupsLabelSubDescriptor& rhs)
3807 MCALabelSubDescriptor::Copy(rhs);
3812 GroupOfSoundfieldGroupsLabelSubDescriptor::Dump(FILE* stream)
3814 char identbuf[IdentBufferLen];
3820 MCALabelSubDescriptor::Dump(stream);
3825 GroupOfSoundfieldGroupsLabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3827 return InterchangeObject::InitFromBuffer(p, l);
3832 GroupOfSoundfieldGroupsLabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3834 return InterchangeObject::WriteToBuffer(Buffer);
3837 //------------------------------------------------------------------------------------------
3842 DCDataDescriptor::DCDataDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d)
3845 m_UL = m_Dict->ul(MDD_DCDataDescriptor);
3848 DCDataDescriptor::DCDataDescriptor(const DCDataDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3851 m_UL = m_Dict->ul(MDD_DCDataDescriptor);
3858 DCDataDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3861 Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet);
3867 DCDataDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3870 Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet);
3876 DCDataDescriptor::Copy(const DCDataDescriptor& rhs)
3878 GenericDataEssenceDescriptor::Copy(rhs);
3883 DCDataDescriptor::Dump(FILE* stream)
3885 char identbuf[IdentBufferLen];
3891 GenericDataEssenceDescriptor::Dump(stream);
3896 DCDataDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3898 return InterchangeObject::InitFromBuffer(p, l);
3903 DCDataDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3905 return InterchangeObject::WriteToBuffer(Buffer);
3908 //------------------------------------------------------------------------------------------
3909 // PrivateDCDataDescriptor
3913 PrivateDCDataDescriptor::PrivateDCDataDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d)
3916 m_UL = m_Dict->ul(MDD_PrivateDCDataDescriptor);
3919 PrivateDCDataDescriptor::PrivateDCDataDescriptor(const PrivateDCDataDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3922 m_UL = m_Dict->ul(MDD_PrivateDCDataDescriptor);
3929 PrivateDCDataDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3932 Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet);
3938 PrivateDCDataDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3941 Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet);
3947 PrivateDCDataDescriptor::Copy(const PrivateDCDataDescriptor& rhs)
3949 GenericDataEssenceDescriptor::Copy(rhs);
3954 PrivateDCDataDescriptor::Dump(FILE* stream)
3956 char identbuf[IdentBufferLen];
3962 GenericDataEssenceDescriptor::Dump(stream);
3967 PrivateDCDataDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3969 return InterchangeObject::InitFromBuffer(p, l);
3974 PrivateDCDataDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3976 return InterchangeObject::WriteToBuffer(Buffer);
3979 //------------------------------------------------------------------------------------------
3980 // DolbyAtmosSubDescriptor
3984 DolbyAtmosSubDescriptor::DolbyAtmosSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), FirstFrame(0), MaxChannelCount(0), MaxObjectCount(0), AtmosVersion(0)
3987 m_UL = m_Dict->ul(MDD_DolbyAtmosSubDescriptor);
3990 DolbyAtmosSubDescriptor::DolbyAtmosSubDescriptor(const DolbyAtmosSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3993 m_UL = m_Dict->ul(MDD_DolbyAtmosSubDescriptor);
4000 DolbyAtmosSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
4003 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
4004 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, AtmosID));
4005 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, FirstFrame));
4006 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, MaxChannelCount));
4007 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, MaxObjectCount));
4008 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, AtmosVersion));
4014 DolbyAtmosSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
4017 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
4018 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, AtmosID));
4019 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, FirstFrame));
4020 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, MaxChannelCount));
4021 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, MaxObjectCount));
4022 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, AtmosVersion));
4028 DolbyAtmosSubDescriptor::Copy(const DolbyAtmosSubDescriptor& rhs)
4030 InterchangeObject::Copy(rhs);
4031 AtmosID = rhs.AtmosID;
4032 FirstFrame = rhs.FirstFrame;
4033 MaxChannelCount = rhs.MaxChannelCount;
4034 MaxObjectCount = rhs.MaxObjectCount;
4035 AtmosVersion = rhs.AtmosVersion;
4040 DolbyAtmosSubDescriptor::Dump(FILE* stream)
4042 char identbuf[IdentBufferLen];
4048 InterchangeObject::Dump(stream);
4049 fprintf(stream, " %22s = %s\n", "AtmosID", AtmosID.EncodeString(identbuf, IdentBufferLen));
4050 fprintf(stream, " %22s = %d\n", "FirstFrame", FirstFrame);
4051 fprintf(stream, " %22s = %d\n", "MaxChannelCount", MaxChannelCount);
4052 fprintf(stream, " %22s = %d\n", "MaxObjectCount", MaxObjectCount);
4053 fprintf(stream, " %22s = %d\n", "AtmosVersion", AtmosVersion);
4058 DolbyAtmosSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
4060 return InterchangeObject::InitFromBuffer(p, l);
4065 DolbyAtmosSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4067 return InterchangeObject::WriteToBuffer(Buffer);
4070 //------------------------------------------------------------------------------------------
4071 // ACESPictureSubDescriptor
4075 ACESPictureSubDescriptor::ACESPictureSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
4078 m_UL = m_Dict->ul(MDD_ACESPictureSubDescriptor);
4081 ACESPictureSubDescriptor::ACESPictureSubDescriptor(const ACESPictureSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
4084 m_UL = m_Dict->ul(MDD_ACESPictureSubDescriptor);
4091 ACESPictureSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
4094 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
4095 if ( ASDCP_SUCCESS(result) ) {
4096 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(ACESPictureSubDescriptor, ACESAuthoringInformation));
4097 ACESAuthoringInformation.set_has_value( result == RESULT_OK );
4099 if ( ASDCP_SUCCESS(result) ) {
4100 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayPrimaries));
4101 ACESMasteringDisplayPrimaries.set_has_value( result == RESULT_OK );
4103 if ( ASDCP_SUCCESS(result) ) {
4104 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayWhitePointChromaticity));
4105 ACESMasteringDisplayWhitePointChromaticity.set_has_value( result == RESULT_OK );
4107 if ( ASDCP_SUCCESS(result) ) {
4108 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayMaximumLuminance));
4109 ACESMasteringDisplayMaximumLuminance.set_has_value( result == RESULT_OK );
4111 if ( ASDCP_SUCCESS(result) ) {
4112 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayMinimumLuminance));
4113 ACESMasteringDisplayMinimumLuminance.set_has_value( result == RESULT_OK );
4120 ACESPictureSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
4123 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
4124 if ( ASDCP_SUCCESS(result) && ! ACESAuthoringInformation.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(ACESPictureSubDescriptor, ACESAuthoringInformation));
4125 if ( ASDCP_SUCCESS(result) && ! ACESMasteringDisplayPrimaries.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayPrimaries));
4126 if ( ASDCP_SUCCESS(result) && ! ACESMasteringDisplayWhitePointChromaticity.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayWhitePointChromaticity));
4127 if ( ASDCP_SUCCESS(result) && ! ACESMasteringDisplayMaximumLuminance.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayMaximumLuminance));
4128 if ( ASDCP_SUCCESS(result) && ! ACESMasteringDisplayMinimumLuminance.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayMinimumLuminance));
4134 ACESPictureSubDescriptor::Copy(const ACESPictureSubDescriptor& rhs)
4136 InterchangeObject::Copy(rhs);
4137 ACESAuthoringInformation = rhs.ACESAuthoringInformation;
4138 ACESMasteringDisplayPrimaries = rhs.ACESMasteringDisplayPrimaries;
4139 ACESMasteringDisplayWhitePointChromaticity = rhs.ACESMasteringDisplayWhitePointChromaticity;
4140 ACESMasteringDisplayMaximumLuminance = rhs.ACESMasteringDisplayMaximumLuminance;
4141 ACESMasteringDisplayMinimumLuminance = rhs.ACESMasteringDisplayMinimumLuminance;
4146 ACESPictureSubDescriptor::Dump(FILE* stream)
4148 char identbuf[IdentBufferLen];
4154 InterchangeObject::Dump(stream);
4155 if ( ! ACESAuthoringInformation.empty() ) {
4156 fprintf(stream, " %22s = %s\n", "ACESAuthoringInformation", ACESAuthoringInformation.get().EncodeString(identbuf, IdentBufferLen));
4158 if ( ! ACESMasteringDisplayPrimaries.empty() ) {
4159 fprintf(stream, " %22s = %s\n", "ACESMasteringDisplayPrimaries", ACESMasteringDisplayPrimaries.get().EncodeString(identbuf, IdentBufferLen));
4161 if ( ! ACESMasteringDisplayWhitePointChromaticity.empty() ) {
4162 fprintf(stream, " %22s = %s\n", "ACESMasteringDisplayWhitePointChromaticity", ACESMasteringDisplayWhitePointChromaticity.get().EncodeString(identbuf, IdentBufferLen));
4164 if ( ! ACESMasteringDisplayMaximumLuminance.empty() ) {
4165 fprintf(stream, " %22s = %d\n", "ACESMasteringDisplayMaximumLuminance", ACESMasteringDisplayMaximumLuminance.get());
4167 if ( ! ACESMasteringDisplayMinimumLuminance.empty() ) {
4168 fprintf(stream, " %22s = %d\n", "ACESMasteringDisplayMinimumLuminance", ACESMasteringDisplayMinimumLuminance.get());
4174 ACESPictureSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
4176 return InterchangeObject::InitFromBuffer(p, l);
4181 ACESPictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4183 return InterchangeObject::WriteToBuffer(Buffer);
4186 //------------------------------------------------------------------------------------------
4187 // TargetFrameSubDescriptor
4191 TargetFrameSubDescriptor::TargetFrameSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), TargetFrameIndex(0), TargetFrameComponentMaxRef(0), TargetFrameComponentMinRef(0), TargetFrameEssenceStreamID(0)
4194 m_UL = m_Dict->ul(MDD_TargetFrameSubDescriptor);
4197 TargetFrameSubDescriptor::TargetFrameSubDescriptor(const TargetFrameSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
4200 m_UL = m_Dict->ul(MDD_TargetFrameSubDescriptor);
4207 TargetFrameSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
4210 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
4211 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameAncillaryResourceID));
4212 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TargetFrameSubDescriptor, MediaType));
4213 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameIndex));
4214 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameTransferCharacteristic));
4215 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameColorPrimaries));
4216 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameComponentMaxRef));
4217 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameComponentMinRef));
4218 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameEssenceStreamID));
4219 if ( ASDCP_SUCCESS(result) ) {
4220 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(TargetFrameSubDescriptor, ACESPictureSubDescriptorInstanceID));
4221 ACESPictureSubDescriptorInstanceID.set_has_value( result == RESULT_OK );
4223 if ( ASDCP_SUCCESS(result) ) {
4224 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(TargetFrameSubDescriptor, TargetFrameViewingEnvironment));
4225 TargetFrameViewingEnvironment.set_has_value( result == RESULT_OK );
4232 TargetFrameSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
4235 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
4236 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameAncillaryResourceID));
4237 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, MediaType));
4238 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameIndex));
4239 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameTransferCharacteristic));
4240 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameColorPrimaries));
4241 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameComponentMaxRef));
4242 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameComponentMinRef));
4243 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameEssenceStreamID));
4244 if ( ASDCP_SUCCESS(result) && ! ACESPictureSubDescriptorInstanceID.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(TargetFrameSubDescriptor, ACESPictureSubDescriptorInstanceID));
4245 if ( ASDCP_SUCCESS(result) && ! TargetFrameViewingEnvironment.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(TargetFrameSubDescriptor, TargetFrameViewingEnvironment));
4251 TargetFrameSubDescriptor::Copy(const TargetFrameSubDescriptor& rhs)
4253 InterchangeObject::Copy(rhs);
4254 TargetFrameAncillaryResourceID = rhs.TargetFrameAncillaryResourceID;
4255 MediaType = rhs.MediaType;
4256 TargetFrameIndex = rhs.TargetFrameIndex;
4257 TargetFrameTransferCharacteristic = rhs.TargetFrameTransferCharacteristic;
4258 TargetFrameColorPrimaries = rhs.TargetFrameColorPrimaries;
4259 TargetFrameComponentMaxRef = rhs.TargetFrameComponentMaxRef;
4260 TargetFrameComponentMinRef = rhs.TargetFrameComponentMinRef;
4261 TargetFrameEssenceStreamID = rhs.TargetFrameEssenceStreamID;
4262 ACESPictureSubDescriptorInstanceID = rhs.ACESPictureSubDescriptorInstanceID;
4263 TargetFrameViewingEnvironment = rhs.TargetFrameViewingEnvironment;
4268 TargetFrameSubDescriptor::Dump(FILE* stream)
4270 char identbuf[IdentBufferLen];
4276 InterchangeObject::Dump(stream);
4277 fprintf(stream, " %22s = %s\n", "TargetFrameAncillaryResourceID", TargetFrameAncillaryResourceID.EncodeString(identbuf, IdentBufferLen));
4278 fprintf(stream, " %22s = %s\n", "MediaType", MediaType.EncodeString(identbuf, IdentBufferLen));
4279 fprintf(stream, " %22s = %s\n", "TargetFrameIndex", i64sz(TargetFrameIndex, identbuf));
4280 fprintf(stream, " %22s = %s\n", "TargetFrameTransferCharacteristic", TargetFrameTransferCharacteristic.EncodeString(identbuf, IdentBufferLen));
4281 fprintf(stream, " %22s = %s\n", "TargetFrameColorPrimaries", TargetFrameColorPrimaries.EncodeString(identbuf, IdentBufferLen));
4282 fprintf(stream, " %22s = %d\n", "TargetFrameComponentMaxRef", TargetFrameComponentMaxRef);
4283 fprintf(stream, " %22s = %d\n", "TargetFrameComponentMinRef", TargetFrameComponentMinRef);
4284 fprintf(stream, " %22s = %d\n", "TargetFrameEssenceStreamID", TargetFrameEssenceStreamID);
4285 if ( ! ACESPictureSubDescriptorInstanceID.empty() ) {
4286 fprintf(stream, " %22s = %s\n", "ACESPictureSubDescriptorInstanceID", ACESPictureSubDescriptorInstanceID.get().EncodeString(identbuf, IdentBufferLen));
4288 if ( ! TargetFrameViewingEnvironment.empty() ) {
4289 fprintf(stream, " %22s = %s\n", "TargetFrameViewingEnvironment", TargetFrameViewingEnvironment.get().EncodeString(identbuf, IdentBufferLen));
4295 TargetFrameSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
4297 return InterchangeObject::InitFromBuffer(p, l);
4302 TargetFrameSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4304 return InterchangeObject::WriteToBuffer(Buffer);
4307 //------------------------------------------------------------------------------------------
4308 // TextBasedDMFramework
4312 TextBasedDMFramework::TextBasedDMFramework(const Dictionary*& d) : DescriptiveFramework(d), m_Dict(d)
4315 m_UL = m_Dict->ul(MDD_TextBasedDMFramework);
4318 TextBasedDMFramework::TextBasedDMFramework(const TextBasedDMFramework& rhs) : DescriptiveFramework(rhs.m_Dict), m_Dict(rhs.m_Dict)
4321 m_UL = m_Dict->ul(MDD_TextBasedDMFramework);
4328 TextBasedDMFramework::InitFromTLVSet(TLVReader& TLVSet)
4331 Result_t result = DescriptiveFramework::InitFromTLVSet(TLVSet);
4332 if ( ASDCP_SUCCESS(result) ) {
4333 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(TextBasedDMFramework, ObjectRef));
4334 ObjectRef.set_has_value( result == RESULT_OK );
4341 TextBasedDMFramework::WriteToTLVSet(TLVWriter& TLVSet)
4344 Result_t result = DescriptiveFramework::WriteToTLVSet(TLVSet);
4345 if ( ASDCP_SUCCESS(result) && ! ObjectRef.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(TextBasedDMFramework, ObjectRef));
4351 TextBasedDMFramework::Copy(const TextBasedDMFramework& rhs)
4353 DescriptiveFramework::Copy(rhs);
4354 ObjectRef = rhs.ObjectRef;
4359 TextBasedDMFramework::Dump(FILE* stream)
4361 char identbuf[IdentBufferLen];
4367 DescriptiveFramework::Dump(stream);
4368 if ( ! ObjectRef.empty() ) {
4369 fprintf(stream, " %22s = %s\n", "ObjectRef", ObjectRef.get().EncodeString(identbuf, IdentBufferLen));
4375 TextBasedDMFramework::InitFromBuffer(const byte_t* p, ui32_t l)
4377 return InterchangeObject::InitFromBuffer(p, l);
4382 TextBasedDMFramework::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4384 return InterchangeObject::WriteToBuffer(Buffer);
4387 //------------------------------------------------------------------------------------------
4392 TextBasedObject::TextBasedObject(const Dictionary*& d) : DescriptiveObject(d), m_Dict(d)
4395 m_UL = m_Dict->ul(MDD_TextBasedObject);
4398 TextBasedObject::TextBasedObject(const TextBasedObject& rhs) : DescriptiveObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
4401 m_UL = m_Dict->ul(MDD_TextBasedObject);
4408 TextBasedObject::InitFromTLVSet(TLVReader& TLVSet)
4411 Result_t result = DescriptiveObject::InitFromTLVSet(TLVSet);
4412 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TextBasedObject, PayloadSchemeID));
4413 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TextBasedObject, TextMIMEMediaType));
4414 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TextBasedObject, RFC5646TextLanguageCode));
4415 if ( ASDCP_SUCCESS(result) ) {
4416 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(TextBasedObject, TextDataDescription));
4417 TextDataDescription.set_has_value( result == RESULT_OK );
4424 TextBasedObject::WriteToTLVSet(TLVWriter& TLVSet)
4427 Result_t result = DescriptiveObject::WriteToTLVSet(TLVSet);
4428 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TextBasedObject, PayloadSchemeID));
4429 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TextBasedObject, TextMIMEMediaType));
4430 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TextBasedObject, RFC5646TextLanguageCode));
4431 if ( ASDCP_SUCCESS(result) && ! TextDataDescription.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(TextBasedObject, TextDataDescription));
4437 TextBasedObject::Copy(const TextBasedObject& rhs)
4439 DescriptiveObject::Copy(rhs);
4440 PayloadSchemeID = rhs.PayloadSchemeID;
4441 TextMIMEMediaType = rhs.TextMIMEMediaType;
4442 RFC5646TextLanguageCode = rhs.RFC5646TextLanguageCode;
4443 TextDataDescription = rhs.TextDataDescription;
4448 TextBasedObject::Dump(FILE* stream)
4450 char identbuf[IdentBufferLen];
4456 DescriptiveObject::Dump(stream);
4457 fprintf(stream, " %22s = %s\n", "PayloadSchemeID", PayloadSchemeID.EncodeString(identbuf, IdentBufferLen));
4458 fprintf(stream, " %22s = %s\n", "TextMIMEMediaType", TextMIMEMediaType.EncodeString(identbuf, IdentBufferLen));
4459 fprintf(stream, " %22s = %s\n", "RFC5646TextLanguageCode", RFC5646TextLanguageCode.EncodeString(identbuf, IdentBufferLen));
4460 if ( ! TextDataDescription.empty() ) {
4461 fprintf(stream, " %22s = %s\n", "TextDataDescription", TextDataDescription.get().EncodeString(identbuf, IdentBufferLen));
4467 TextBasedObject::InitFromBuffer(const byte_t* p, ui32_t l)
4469 return InterchangeObject::InitFromBuffer(p, l);
4474 TextBasedObject::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4476 return InterchangeObject::WriteToBuffer(Buffer);
4479 //------------------------------------------------------------------------------------------
4480 // GenericStreamTextBasedSet
4484 GenericStreamTextBasedSet::GenericStreamTextBasedSet(const Dictionary*& d) : TextBasedObject(d), m_Dict(d), GenericStreamSID(0)
4487 m_UL = m_Dict->ul(MDD_GenericStreamTextBasedSet);
4490 GenericStreamTextBasedSet::GenericStreamTextBasedSet(const GenericStreamTextBasedSet& rhs) : TextBasedObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
4493 m_UL = m_Dict->ul(MDD_GenericStreamTextBasedSet);
4500 GenericStreamTextBasedSet::InitFromTLVSet(TLVReader& TLVSet)
4503 Result_t result = TextBasedObject::InitFromTLVSet(TLVSet);
4504 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericStreamTextBasedSet, GenericStreamSID));
4510 GenericStreamTextBasedSet::WriteToTLVSet(TLVWriter& TLVSet)
4513 Result_t result = TextBasedObject::WriteToTLVSet(TLVSet);
4514 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericStreamTextBasedSet, GenericStreamSID));
4520 GenericStreamTextBasedSet::Copy(const GenericStreamTextBasedSet& rhs)
4522 TextBasedObject::Copy(rhs);
4523 GenericStreamSID = rhs.GenericStreamSID;
4528 GenericStreamTextBasedSet::Dump(FILE* stream)
4530 char identbuf[IdentBufferLen];
4536 TextBasedObject::Dump(stream);
4537 fprintf(stream, " %22s = %d\n", "GenericStreamSID", GenericStreamSID);
4542 GenericStreamTextBasedSet::InitFromBuffer(const byte_t* p, ui32_t l)
4544 return InterchangeObject::InitFromBuffer(p, l);
4549 GenericStreamTextBasedSet::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4551 return InterchangeObject::WriteToBuffer(Buffer);
4554 //------------------------------------------------------------------------------------------
4555 // ISXDDataEssenceDescriptor
4559 ISXDDataEssenceDescriptor::ISXDDataEssenceDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d)
4562 m_UL = m_Dict->ul(MDD_ISXDDataEssenceDescriptor);
4565 ISXDDataEssenceDescriptor::ISXDDataEssenceDescriptor(const ISXDDataEssenceDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
4568 m_UL = m_Dict->ul(MDD_ISXDDataEssenceDescriptor);
4575 ISXDDataEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
4578 Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet);
4579 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(ISXDDataEssenceDescriptor, NamespaceURI));
4585 ISXDDataEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
4588 Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet);
4589 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(ISXDDataEssenceDescriptor, NamespaceURI));
4595 ISXDDataEssenceDescriptor::Copy(const ISXDDataEssenceDescriptor& rhs)
4597 GenericDataEssenceDescriptor::Copy(rhs);
4598 NamespaceURI = rhs.NamespaceURI;
4603 ISXDDataEssenceDescriptor::Dump(FILE* stream)
4605 char identbuf[IdentBufferLen];
4611 GenericDataEssenceDescriptor::Dump(stream);
4612 fprintf(stream, " %22s = %s\n", "NamespaceURI", NamespaceURI.EncodeString(identbuf, IdentBufferLen));
4617 ISXDDataEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
4619 return InterchangeObject::InitFromBuffer(p, l);
4624 ISXDDataEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4626 return InterchangeObject::WriteToBuffer(Buffer);
4629 //------------------------------------------------------------------------------------------
4630 // PHDRMetadataTrackSubDescriptor
4634 PHDRMetadataTrackSubDescriptor::PHDRMetadataTrackSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), SourceTrackID(0), SimplePayloadSID(0)
4637 m_UL = m_Dict->ul(MDD_PHDRMetadataTrackSubDescriptor);
4640 PHDRMetadataTrackSubDescriptor::PHDRMetadataTrackSubDescriptor(const PHDRMetadataTrackSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
4643 m_UL = m_Dict->ul(MDD_PHDRMetadataTrackSubDescriptor);
4650 PHDRMetadataTrackSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
4653 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
4654 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(PHDRMetadataTrackSubDescriptor, DataDefinition));
4655 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(PHDRMetadataTrackSubDescriptor, SourceTrackID));
4656 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(PHDRMetadataTrackSubDescriptor, SimplePayloadSID));
4662 PHDRMetadataTrackSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
4665 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
4666 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(PHDRMetadataTrackSubDescriptor, DataDefinition));
4667 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(PHDRMetadataTrackSubDescriptor, SourceTrackID));
4668 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(PHDRMetadataTrackSubDescriptor, SimplePayloadSID));
4674 PHDRMetadataTrackSubDescriptor::Copy(const PHDRMetadataTrackSubDescriptor& rhs)
4676 InterchangeObject::Copy(rhs);
4677 DataDefinition = rhs.DataDefinition;
4678 SourceTrackID = rhs.SourceTrackID;
4679 SimplePayloadSID = rhs.SimplePayloadSID;
4684 PHDRMetadataTrackSubDescriptor::Dump(FILE* stream)
4686 char identbuf[IdentBufferLen];
4692 InterchangeObject::Dump(stream);
4693 fprintf(stream, " %22s = %s\n", "DataDefinition", DataDefinition.EncodeString(identbuf, IdentBufferLen));
4694 fprintf(stream, " %22s = %d\n", "SourceTrackID", SourceTrackID);
4695 fprintf(stream, " %22s = %d\n", "SimplePayloadSID", SimplePayloadSID);
4700 PHDRMetadataTrackSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
4702 return InterchangeObject::InitFromBuffer(p, l);
4707 PHDRMetadataTrackSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4709 return InterchangeObject::WriteToBuffer(Buffer);
4712 //------------------------------------------------------------------------------------------
4713 // PIMFDynamicMetadataDescriptor
4717 PIMFDynamicMetadataDescriptor::PIMFDynamicMetadataDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d), GlobalPayloadSID(0)
4720 m_UL = m_Dict->ul(MDD_PIMFDynamicMetadataDescriptor);
4723 PIMFDynamicMetadataDescriptor::PIMFDynamicMetadataDescriptor(const PIMFDynamicMetadataDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
4726 m_UL = m_Dict->ul(MDD_PIMFDynamicMetadataDescriptor);
4733 PIMFDynamicMetadataDescriptor::InitFromTLVSet(TLVReader& TLVSet)
4736 Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet);
4737 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(PIMFDynamicMetadataDescriptor, GlobalPayloadSID));
4743 PIMFDynamicMetadataDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
4746 Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet);
4747 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(PIMFDynamicMetadataDescriptor, GlobalPayloadSID));
4753 PIMFDynamicMetadataDescriptor::Copy(const PIMFDynamicMetadataDescriptor& rhs)
4755 GenericDataEssenceDescriptor::Copy(rhs);
4756 GlobalPayloadSID = rhs.GlobalPayloadSID;
4761 PIMFDynamicMetadataDescriptor::Dump(FILE* stream)
4763 char identbuf[IdentBufferLen];
4769 GenericDataEssenceDescriptor::Dump(stream);
4770 fprintf(stream, " %22s = %d\n", "GlobalPayloadSID", GlobalPayloadSID);
4775 PIMFDynamicMetadataDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
4777 return InterchangeObject::InitFromBuffer(p, l);
4782 PIMFDynamicMetadataDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4784 return InterchangeObject::WriteToBuffer(Buffer);