2 Copyright (c) 2005-2017, John Hurst
5 Redistribution and use in source and binary forms, with or without
6 modification, are permitted provided that the following conditions
8 1. Redistributions of source code must retain the above copyright
9 notice, this list of conditions and the following disclaimer.
10 2. Redistributions in binary form must reproduce the above copyright
11 notice, this list of conditions and the following disclaimer in the
12 documentation and/or other materials provided with the distribution.
13 3. The name of the author may not be used to endorse or promote products
14 derived from this software without specific prior written permission.
16 THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18 OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19 IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25 THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 /*! \file Metadata.cpp
29 \brief AS-DCP library, MXF Metadata Sets implementation
36 using namespace ASDCP;
37 using namespace ASDCP::MXF;
39 const ui32_t kl_length = ASDCP::SMPTE_UL_LENGTH + ASDCP::MXF_BER_LENGTH;
41 //------------------------------------------------------------------------------------------
43 static InterchangeObject* Preface_Factory(const Dictionary*& Dict) { return new Preface(Dict); }
44 static InterchangeObject* IndexTableSegment_Factory(const Dictionary*& Dict) { return new IndexTableSegment(Dict); }
46 static InterchangeObject* Identification_Factory(const Dictionary*& Dict) { return new Identification(Dict); }
47 static InterchangeObject* ContentStorage_Factory(const Dictionary*& Dict) { return new ContentStorage(Dict); }
48 static InterchangeObject* EssenceContainerData_Factory(const Dictionary*& Dict) { return new EssenceContainerData(Dict); }
49 static InterchangeObject* MaterialPackage_Factory(const Dictionary*& Dict) { return new MaterialPackage(Dict); }
50 static InterchangeObject* SourcePackage_Factory(const Dictionary*& Dict) { return new SourcePackage(Dict); }
51 static InterchangeObject* StaticTrack_Factory(const Dictionary*& Dict) { return new StaticTrack(Dict); }
52 static InterchangeObject* Track_Factory(const Dictionary*& Dict) { return new Track(Dict); }
53 static InterchangeObject* Sequence_Factory(const Dictionary*& Dict) { return new Sequence(Dict); }
54 static InterchangeObject* SourceClip_Factory(const Dictionary*& Dict) { return new SourceClip(Dict); }
55 static InterchangeObject* TimecodeComponent_Factory(const Dictionary*& Dict) { return new TimecodeComponent(Dict); }
56 static InterchangeObject* FileDescriptor_Factory(const Dictionary*& Dict) { return new FileDescriptor(Dict); }
57 static InterchangeObject* GenericSoundEssenceDescriptor_Factory(const Dictionary*& Dict) { return new GenericSoundEssenceDescriptor(Dict); }
58 static InterchangeObject* WaveAudioDescriptor_Factory(const Dictionary*& Dict) { return new WaveAudioDescriptor(Dict); }
59 static InterchangeObject* GenericPictureEssenceDescriptor_Factory(const Dictionary*& Dict) { return new GenericPictureEssenceDescriptor(Dict); }
60 static InterchangeObject* RGBAEssenceDescriptor_Factory(const Dictionary*& Dict) { return new RGBAEssenceDescriptor(Dict); }
61 static InterchangeObject* JPEG2000PictureSubDescriptor_Factory(const Dictionary*& Dict) { return new JPEG2000PictureSubDescriptor(Dict); }
62 static InterchangeObject* CDCIEssenceDescriptor_Factory(const Dictionary*& Dict) { return new CDCIEssenceDescriptor(Dict); }
63 static InterchangeObject* MPEG2VideoDescriptor_Factory(const Dictionary*& Dict) { return new MPEG2VideoDescriptor(Dict); }
64 static InterchangeObject* DMSegment_Factory(const Dictionary*& Dict) { return new DMSegment(Dict); }
65 static InterchangeObject* CryptographicFramework_Factory(const Dictionary*& Dict) { return new CryptographicFramework(Dict); }
66 static InterchangeObject* CryptographicContext_Factory(const Dictionary*& Dict) { return new CryptographicContext(Dict); }
67 static InterchangeObject* DescriptiveFramework_Factory(const Dictionary*& Dict) { return new DescriptiveFramework(Dict); }
68 static InterchangeObject* DescriptiveObject_Factory(const Dictionary*& Dict) { return new DescriptiveObject(Dict); }
69 static InterchangeObject* GenericDataEssenceDescriptor_Factory(const Dictionary*& Dict) { return new GenericDataEssenceDescriptor(Dict); }
70 static InterchangeObject* TimedTextDescriptor_Factory(const Dictionary*& Dict) { return new TimedTextDescriptor(Dict); }
71 static InterchangeObject* TimedTextResourceSubDescriptor_Factory(const Dictionary*& Dict) { return new TimedTextResourceSubDescriptor(Dict); }
72 static InterchangeObject* StereoscopicPictureSubDescriptor_Factory(const Dictionary*& Dict) { return new StereoscopicPictureSubDescriptor(Dict); }
73 static InterchangeObject* ContainerConstraintSubDescriptor_Factory(const Dictionary*& Dict) { return new ContainerConstraintSubDescriptor(Dict); }
74 static InterchangeObject* NetworkLocator_Factory(const Dictionary*& Dict) { return new NetworkLocator(Dict); }
75 static InterchangeObject* MCALabelSubDescriptor_Factory(const Dictionary*& Dict) { return new MCALabelSubDescriptor(Dict); }
76 static InterchangeObject* AudioChannelLabelSubDescriptor_Factory(const Dictionary*& Dict) { return new AudioChannelLabelSubDescriptor(Dict); }
77 static InterchangeObject* SoundfieldGroupLabelSubDescriptor_Factory(const Dictionary*& Dict) { return new SoundfieldGroupLabelSubDescriptor(Dict); }
78 static InterchangeObject* GroupOfSoundfieldGroupsLabelSubDescriptor_Factory(const Dictionary*& Dict) { return new GroupOfSoundfieldGroupsLabelSubDescriptor(Dict); }
79 static InterchangeObject* DCDataDescriptor_Factory(const Dictionary*& Dict) { return new DCDataDescriptor(Dict); }
80 static InterchangeObject* PrivateDCDataDescriptor_Factory(const Dictionary*& Dict) { return new PrivateDCDataDescriptor(Dict); }
81 static InterchangeObject* DolbyAtmosSubDescriptor_Factory(const Dictionary*& Dict) { return new DolbyAtmosSubDescriptor(Dict); }
82 static InterchangeObject* ACESPictureSubDescriptor_Factory(const Dictionary*& Dict) { return new ACESPictureSubDescriptor(Dict); }
83 static InterchangeObject* TargetFrameSubDescriptor_Factory(const Dictionary*& Dict) { return new TargetFrameSubDescriptor(Dict); }
84 static InterchangeObject* TextBasedDMFramework_Factory(const Dictionary*& Dict) { return new TextBasedDMFramework(Dict); }
85 static InterchangeObject* TextBasedObject_Factory(const Dictionary*& Dict) { return new TextBasedObject(Dict); }
86 static InterchangeObject* GenericStreamTextBasedSet_Factory(const Dictionary*& Dict) { return new GenericStreamTextBasedSet(Dict); }
87 static InterchangeObject* ISXDDataEssenceDescriptor_Factory(const Dictionary*& Dict) { return new ISXDDataEssenceDescriptor(Dict); }
88 static InterchangeObject* PHDRMetadataTrackSubDescriptor_Factory(const Dictionary*& Dict) { return new PHDRMetadataTrackSubDescriptor(Dict); }
89 static InterchangeObject* PIMFDynamicMetadataDescriptor_Factory(const Dictionary*& Dict) { return new PIMFDynamicMetadataDescriptor(Dict); }
93 ASDCP::MXF::Metadata_InitTypes(const Dictionary*& Dict)
96 SetObjectFactory(Dict->ul(MDD_Preface), Preface_Factory);
97 SetObjectFactory(Dict->ul(MDD_IndexTableSegment), IndexTableSegment_Factory);
99 SetObjectFactory(Dict->ul(MDD_Identification), Identification_Factory);
100 SetObjectFactory(Dict->ul(MDD_ContentStorage), ContentStorage_Factory);
101 SetObjectFactory(Dict->ul(MDD_EssenceContainerData), EssenceContainerData_Factory);
102 SetObjectFactory(Dict->ul(MDD_MaterialPackage), MaterialPackage_Factory);
103 SetObjectFactory(Dict->ul(MDD_SourcePackage), SourcePackage_Factory);
104 SetObjectFactory(Dict->ul(MDD_StaticTrack), StaticTrack_Factory);
105 SetObjectFactory(Dict->ul(MDD_Track), Track_Factory);
106 SetObjectFactory(Dict->ul(MDD_Sequence), Sequence_Factory);
107 SetObjectFactory(Dict->ul(MDD_SourceClip), SourceClip_Factory);
108 SetObjectFactory(Dict->ul(MDD_TimecodeComponent), TimecodeComponent_Factory);
109 SetObjectFactory(Dict->ul(MDD_FileDescriptor), FileDescriptor_Factory);
110 SetObjectFactory(Dict->ul(MDD_GenericSoundEssenceDescriptor), GenericSoundEssenceDescriptor_Factory);
111 SetObjectFactory(Dict->ul(MDD_WaveAudioDescriptor), WaveAudioDescriptor_Factory);
112 SetObjectFactory(Dict->ul(MDD_GenericPictureEssenceDescriptor), GenericPictureEssenceDescriptor_Factory);
113 SetObjectFactory(Dict->ul(MDD_RGBAEssenceDescriptor), RGBAEssenceDescriptor_Factory);
114 SetObjectFactory(Dict->ul(MDD_JPEG2000PictureSubDescriptor), JPEG2000PictureSubDescriptor_Factory);
115 SetObjectFactory(Dict->ul(MDD_CDCIEssenceDescriptor), CDCIEssenceDescriptor_Factory);
116 SetObjectFactory(Dict->ul(MDD_MPEG2VideoDescriptor), MPEG2VideoDescriptor_Factory);
117 SetObjectFactory(Dict->ul(MDD_DMSegment), DMSegment_Factory);
118 SetObjectFactory(Dict->ul(MDD_CryptographicFramework), CryptographicFramework_Factory);
119 SetObjectFactory(Dict->ul(MDD_CryptographicContext), CryptographicContext_Factory);
120 SetObjectFactory(Dict->ul(MDD_DescriptiveFramework), DescriptiveFramework_Factory);
121 SetObjectFactory(Dict->ul(MDD_DescriptiveObject), DescriptiveObject_Factory);
122 SetObjectFactory(Dict->ul(MDD_GenericDataEssenceDescriptor), GenericDataEssenceDescriptor_Factory);
123 SetObjectFactory(Dict->ul(MDD_TimedTextDescriptor), TimedTextDescriptor_Factory);
124 SetObjectFactory(Dict->ul(MDD_TimedTextResourceSubDescriptor), TimedTextResourceSubDescriptor_Factory);
125 SetObjectFactory(Dict->ul(MDD_StereoscopicPictureSubDescriptor), StereoscopicPictureSubDescriptor_Factory);
126 SetObjectFactory(Dict->ul(MDD_ContainerConstraintSubDescriptor), ContainerConstraintSubDescriptor_Factory);
127 SetObjectFactory(Dict->ul(MDD_NetworkLocator), NetworkLocator_Factory);
128 SetObjectFactory(Dict->ul(MDD_MCALabelSubDescriptor), MCALabelSubDescriptor_Factory);
129 SetObjectFactory(Dict->ul(MDD_AudioChannelLabelSubDescriptor), AudioChannelLabelSubDescriptor_Factory);
130 SetObjectFactory(Dict->ul(MDD_SoundfieldGroupLabelSubDescriptor), SoundfieldGroupLabelSubDescriptor_Factory);
131 SetObjectFactory(Dict->ul(MDD_GroupOfSoundfieldGroupsLabelSubDescriptor), GroupOfSoundfieldGroupsLabelSubDescriptor_Factory);
132 SetObjectFactory(Dict->ul(MDD_DCDataDescriptor), DCDataDescriptor_Factory);
133 SetObjectFactory(Dict->ul(MDD_PrivateDCDataDescriptor), PrivateDCDataDescriptor_Factory);
134 SetObjectFactory(Dict->ul(MDD_DolbyAtmosSubDescriptor), DolbyAtmosSubDescriptor_Factory);
135 SetObjectFactory(Dict->ul(MDD_ACESPictureSubDescriptor), ACESPictureSubDescriptor_Factory);
136 SetObjectFactory(Dict->ul(MDD_TargetFrameSubDescriptor), TargetFrameSubDescriptor_Factory);
137 SetObjectFactory(Dict->ul(MDD_TextBasedDMFramework), TextBasedDMFramework_Factory);
138 SetObjectFactory(Dict->ul(MDD_TextBasedObject), TextBasedObject_Factory);
139 SetObjectFactory(Dict->ul(MDD_GenericStreamTextBasedSet), GenericStreamTextBasedSet_Factory);
140 SetObjectFactory(Dict->ul(MDD_ISXDDataEssenceDescriptor), ISXDDataEssenceDescriptor_Factory);
141 SetObjectFactory(Dict->ul(MDD_PHDRMetadataTrackSubDescriptor), PHDRMetadataTrackSubDescriptor_Factory);
142 SetObjectFactory(Dict->ul(MDD_PIMFDynamicMetadataDescriptor), PIMFDynamicMetadataDescriptor_Factory);
145 //------------------------------------------------------------------------------------------
150 //------------------------------------------------------------------------------------------
155 Identification::Identification(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
158 m_UL = m_Dict->ul(MDD_Identification);
161 Identification::Identification(const Identification& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
164 m_UL = m_Dict->ul(MDD_Identification);
171 Identification::InitFromTLVSet(TLVReader& TLVSet)
174 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
175 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ThisGenerationUID));
176 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, CompanyName));
177 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ProductName));
178 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ProductVersion));
179 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, VersionString));
180 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ProductUID));
181 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ModificationDate));
182 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ToolkitVersion));
183 if ( ASDCP_SUCCESS(result) ) {
184 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(Identification, Platform));
185 Platform.set_has_value( result == RESULT_OK );
192 Identification::WriteToTLVSet(TLVWriter& TLVSet)
195 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
196 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ThisGenerationUID));
197 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, CompanyName));
198 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ProductName));
199 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ProductVersion));
200 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, VersionString));
201 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ProductUID));
202 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ModificationDate));
203 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ToolkitVersion));
204 if ( ASDCP_SUCCESS(result) && ! Platform.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(Identification, Platform));
210 Identification::Copy(const Identification& rhs)
212 InterchangeObject::Copy(rhs);
213 ThisGenerationUID = rhs.ThisGenerationUID;
214 CompanyName = rhs.CompanyName;
215 ProductName = rhs.ProductName;
216 ProductVersion = rhs.ProductVersion;
217 VersionString = rhs.VersionString;
218 ProductUID = rhs.ProductUID;
219 ModificationDate = rhs.ModificationDate;
220 ToolkitVersion = rhs.ToolkitVersion;
221 Platform = rhs.Platform;
226 Identification::Dump(FILE* stream)
228 char identbuf[IdentBufferLen];
234 InterchangeObject::Dump(stream);
235 fprintf(stream, " %22s = %s\n", "ThisGenerationUID", ThisGenerationUID.EncodeString(identbuf, IdentBufferLen));
236 fprintf(stream, " %22s = %s\n", "CompanyName", CompanyName.EncodeString(identbuf, IdentBufferLen));
237 fprintf(stream, " %22s = %s\n", "ProductName", ProductName.EncodeString(identbuf, IdentBufferLen));
238 fprintf(stream, " %22s = %s\n", "ProductVersion", ProductVersion.EncodeString(identbuf, IdentBufferLen));
239 fprintf(stream, " %22s = %s\n", "VersionString", VersionString.EncodeString(identbuf, IdentBufferLen));
240 fprintf(stream, " %22s = %s\n", "ProductUID", ProductUID.EncodeString(identbuf, IdentBufferLen));
241 fprintf(stream, " %22s = %s\n", "ModificationDate", ModificationDate.EncodeString(identbuf, IdentBufferLen));
242 fprintf(stream, " %22s = %s\n", "ToolkitVersion", ToolkitVersion.EncodeString(identbuf, IdentBufferLen));
243 if ( ! Platform.empty() ) {
244 fprintf(stream, " %22s = %s\n", "Platform", Platform.get().EncodeString(identbuf, IdentBufferLen));
250 Identification::InitFromBuffer(const byte_t* p, ui32_t l)
252 return InterchangeObject::InitFromBuffer(p, l);
257 Identification::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
259 return InterchangeObject::WriteToBuffer(Buffer);
262 //------------------------------------------------------------------------------------------
267 ContentStorage::ContentStorage(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
270 m_UL = m_Dict->ul(MDD_ContentStorage);
273 ContentStorage::ContentStorage(const ContentStorage& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
276 m_UL = m_Dict->ul(MDD_ContentStorage);
283 ContentStorage::InitFromTLVSet(TLVReader& TLVSet)
286 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
287 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(ContentStorage, Packages));
288 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(ContentStorage, EssenceContainerData));
294 ContentStorage::WriteToTLVSet(TLVWriter& TLVSet)
297 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
298 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(ContentStorage, Packages));
299 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(ContentStorage, EssenceContainerData));
305 ContentStorage::Copy(const ContentStorage& rhs)
307 InterchangeObject::Copy(rhs);
308 Packages = rhs.Packages;
309 EssenceContainerData = rhs.EssenceContainerData;
314 ContentStorage::Dump(FILE* stream)
316 char identbuf[IdentBufferLen];
322 InterchangeObject::Dump(stream);
323 fprintf(stream, " %22s:\n", "Packages");
324 Packages.Dump(stream);
325 fprintf(stream, " %22s:\n", "EssenceContainerData");
326 EssenceContainerData.Dump(stream);
331 ContentStorage::InitFromBuffer(const byte_t* p, ui32_t l)
333 return InterchangeObject::InitFromBuffer(p, l);
338 ContentStorage::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
340 return InterchangeObject::WriteToBuffer(Buffer);
343 //------------------------------------------------------------------------------------------
344 // EssenceContainerData
348 EssenceContainerData::EssenceContainerData(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), BodySID(0)
351 m_UL = m_Dict->ul(MDD_EssenceContainerData);
354 EssenceContainerData::EssenceContainerData(const EssenceContainerData& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
357 m_UL = m_Dict->ul(MDD_EssenceContainerData);
364 EssenceContainerData::InitFromTLVSet(TLVReader& TLVSet)
367 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
368 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(EssenceContainerData, LinkedPackageUID));
369 if ( ASDCP_SUCCESS(result) ) {
370 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(EssenceContainerData, IndexSID));
371 IndexSID.set_has_value( result == RESULT_OK );
373 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(EssenceContainerData, BodySID));
379 EssenceContainerData::WriteToTLVSet(TLVWriter& TLVSet)
382 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
383 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(EssenceContainerData, LinkedPackageUID));
384 if ( ASDCP_SUCCESS(result) && ! IndexSID.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(EssenceContainerData, IndexSID));
385 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(EssenceContainerData, BodySID));
391 EssenceContainerData::Copy(const EssenceContainerData& rhs)
393 InterchangeObject::Copy(rhs);
394 LinkedPackageUID = rhs.LinkedPackageUID;
395 IndexSID = rhs.IndexSID;
396 BodySID = rhs.BodySID;
401 EssenceContainerData::Dump(FILE* stream)
403 char identbuf[IdentBufferLen];
409 InterchangeObject::Dump(stream);
410 fprintf(stream, " %22s = %s\n", "LinkedPackageUID", LinkedPackageUID.EncodeString(identbuf, IdentBufferLen));
411 if ( ! IndexSID.empty() ) {
412 fprintf(stream, " %22s = %d\n", "IndexSID", IndexSID.get());
414 fprintf(stream, " %22s = %d\n", "BodySID", BodySID);
419 EssenceContainerData::InitFromBuffer(const byte_t* p, ui32_t l)
421 return InterchangeObject::InitFromBuffer(p, l);
426 EssenceContainerData::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
428 return InterchangeObject::WriteToBuffer(Buffer);
431 //------------------------------------------------------------------------------------------
435 GenericPackage::GenericPackage(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) {}
437 GenericPackage::GenericPackage(const GenericPackage& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
445 GenericPackage::InitFromTLVSet(TLVReader& TLVSet)
448 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
449 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageUID));
450 if ( ASDCP_SUCCESS(result) ) {
451 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPackage, Name));
452 Name.set_has_value( result == RESULT_OK );
454 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageCreationDate));
455 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageModifiedDate));
456 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, Tracks));
462 GenericPackage::WriteToTLVSet(TLVWriter& TLVSet)
465 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
466 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, PackageUID));
467 if ( ASDCP_SUCCESS(result) && ! Name.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPackage, Name));
468 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, PackageCreationDate));
469 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, PackageModifiedDate));
470 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, Tracks));
476 GenericPackage::Copy(const GenericPackage& rhs)
478 InterchangeObject::Copy(rhs);
479 PackageUID = rhs.PackageUID;
481 PackageCreationDate = rhs.PackageCreationDate;
482 PackageModifiedDate = rhs.PackageModifiedDate;
488 GenericPackage::Dump(FILE* stream)
490 char identbuf[IdentBufferLen];
496 InterchangeObject::Dump(stream);
497 fprintf(stream, " %22s = %s\n", "PackageUID", PackageUID.EncodeString(identbuf, IdentBufferLen));
498 if ( ! Name.empty() ) {
499 fprintf(stream, " %22s = %s\n", "Name", Name.get().EncodeString(identbuf, IdentBufferLen));
501 fprintf(stream, " %22s = %s\n", "PackageCreationDate", PackageCreationDate.EncodeString(identbuf, IdentBufferLen));
502 fprintf(stream, " %22s = %s\n", "PackageModifiedDate", PackageModifiedDate.EncodeString(identbuf, IdentBufferLen));
503 fprintf(stream, " %22s:\n", "Tracks");
508 //------------------------------------------------------------------------------------------
513 MaterialPackage::MaterialPackage(const Dictionary*& d) : GenericPackage(d), m_Dict(d)
516 m_UL = m_Dict->ul(MDD_MaterialPackage);
519 MaterialPackage::MaterialPackage(const MaterialPackage& rhs) : GenericPackage(rhs.m_Dict), m_Dict(rhs.m_Dict)
522 m_UL = m_Dict->ul(MDD_MaterialPackage);
529 MaterialPackage::InitFromTLVSet(TLVReader& TLVSet)
532 Result_t result = GenericPackage::InitFromTLVSet(TLVSet);
533 if ( ASDCP_SUCCESS(result) ) {
534 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MaterialPackage, PackageMarker));
535 PackageMarker.set_has_value( result == RESULT_OK );
542 MaterialPackage::WriteToTLVSet(TLVWriter& TLVSet)
545 Result_t result = GenericPackage::WriteToTLVSet(TLVSet);
546 if ( ASDCP_SUCCESS(result) && ! PackageMarker.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MaterialPackage, PackageMarker));
552 MaterialPackage::Copy(const MaterialPackage& rhs)
554 GenericPackage::Copy(rhs);
555 PackageMarker = rhs.PackageMarker;
560 MaterialPackage::Dump(FILE* stream)
562 char identbuf[IdentBufferLen];
568 GenericPackage::Dump(stream);
569 if ( ! PackageMarker.empty() ) {
570 fprintf(stream, " %22s = %s\n", "PackageMarker", PackageMarker.get().EncodeString(identbuf, IdentBufferLen));
576 MaterialPackage::InitFromBuffer(const byte_t* p, ui32_t l)
578 return InterchangeObject::InitFromBuffer(p, l);
583 MaterialPackage::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
585 return InterchangeObject::WriteToBuffer(Buffer);
588 //------------------------------------------------------------------------------------------
593 SourcePackage::SourcePackage(const Dictionary*& d) : GenericPackage(d), m_Dict(d)
596 m_UL = m_Dict->ul(MDD_SourcePackage);
599 SourcePackage::SourcePackage(const SourcePackage& rhs) : GenericPackage(rhs.m_Dict), m_Dict(rhs.m_Dict)
602 m_UL = m_Dict->ul(MDD_SourcePackage);
609 SourcePackage::InitFromTLVSet(TLVReader& TLVSet)
612 Result_t result = GenericPackage::InitFromTLVSet(TLVSet);
613 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(SourcePackage, Descriptor));
619 SourcePackage::WriteToTLVSet(TLVWriter& TLVSet)
622 Result_t result = GenericPackage::WriteToTLVSet(TLVSet);
623 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(SourcePackage, Descriptor));
629 SourcePackage::Copy(const SourcePackage& rhs)
631 GenericPackage::Copy(rhs);
632 Descriptor = rhs.Descriptor;
637 SourcePackage::Dump(FILE* stream)
639 char identbuf[IdentBufferLen];
645 GenericPackage::Dump(stream);
646 fprintf(stream, " %22s = %s\n", "Descriptor", Descriptor.EncodeString(identbuf, IdentBufferLen));
651 SourcePackage::InitFromBuffer(const byte_t* p, ui32_t l)
653 return InterchangeObject::InitFromBuffer(p, l);
658 SourcePackage::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
660 return InterchangeObject::WriteToBuffer(Buffer);
663 //------------------------------------------------------------------------------------------
667 GenericTrack::GenericTrack(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), TrackID(0), TrackNumber(0) {}
669 GenericTrack::GenericTrack(const GenericTrack& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
677 GenericTrack::InitFromTLVSet(TLVReader& TLVSet)
680 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
681 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericTrack, TrackID));
682 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericTrack, TrackNumber));
683 if ( ASDCP_SUCCESS(result) ) {
684 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericTrack, TrackName));
685 TrackName.set_has_value( result == RESULT_OK );
687 if ( ASDCP_SUCCESS(result) ) {
688 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericTrack, Sequence));
689 Sequence.set_has_value( result == RESULT_OK );
696 GenericTrack::WriteToTLVSet(TLVWriter& TLVSet)
699 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
700 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericTrack, TrackID));
701 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericTrack, TrackNumber));
702 if ( ASDCP_SUCCESS(result) && ! TrackName.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericTrack, TrackName));
703 if ( ASDCP_SUCCESS(result) && ! Sequence.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericTrack, Sequence));
709 GenericTrack::Copy(const GenericTrack& rhs)
711 InterchangeObject::Copy(rhs);
712 TrackID = rhs.TrackID;
713 TrackNumber = rhs.TrackNumber;
714 TrackName = rhs.TrackName;
715 Sequence = rhs.Sequence;
720 GenericTrack::Dump(FILE* stream)
722 char identbuf[IdentBufferLen];
728 InterchangeObject::Dump(stream);
729 fprintf(stream, " %22s = %d\n", "TrackID", TrackID);
730 fprintf(stream, " %22s = %d\n", "TrackNumber", TrackNumber);
731 if ( ! TrackName.empty() ) {
732 fprintf(stream, " %22s = %s\n", "TrackName", TrackName.get().EncodeString(identbuf, IdentBufferLen));
734 if ( ! Sequence.empty() ) {
735 fprintf(stream, " %22s = %s\n", "Sequence", Sequence.get().EncodeString(identbuf, IdentBufferLen));
740 //------------------------------------------------------------------------------------------
745 StaticTrack::StaticTrack(const Dictionary*& d) : GenericTrack(d), m_Dict(d)
748 m_UL = m_Dict->ul(MDD_StaticTrack);
751 StaticTrack::StaticTrack(const StaticTrack& rhs) : GenericTrack(rhs.m_Dict), m_Dict(rhs.m_Dict)
754 m_UL = m_Dict->ul(MDD_StaticTrack);
761 StaticTrack::InitFromTLVSet(TLVReader& TLVSet)
764 Result_t result = GenericTrack::InitFromTLVSet(TLVSet);
770 StaticTrack::WriteToTLVSet(TLVWriter& TLVSet)
773 Result_t result = GenericTrack::WriteToTLVSet(TLVSet);
779 StaticTrack::Copy(const StaticTrack& rhs)
781 GenericTrack::Copy(rhs);
786 StaticTrack::Dump(FILE* stream)
788 char identbuf[IdentBufferLen];
794 GenericTrack::Dump(stream);
799 StaticTrack::InitFromBuffer(const byte_t* p, ui32_t l)
801 return InterchangeObject::InitFromBuffer(p, l);
806 StaticTrack::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
808 return InterchangeObject::WriteToBuffer(Buffer);
811 //------------------------------------------------------------------------------------------
816 Track::Track(const Dictionary*& d) : GenericTrack(d), m_Dict(d), Origin(0)
819 m_UL = m_Dict->ul(MDD_Track);
822 Track::Track(const Track& rhs) : GenericTrack(rhs.m_Dict), m_Dict(rhs.m_Dict)
825 m_UL = m_Dict->ul(MDD_Track);
832 Track::InitFromTLVSet(TLVReader& TLVSet)
835 Result_t result = GenericTrack::InitFromTLVSet(TLVSet);
836 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Track, EditRate));
837 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(Track, Origin));
843 Track::WriteToTLVSet(TLVWriter& TLVSet)
846 Result_t result = GenericTrack::WriteToTLVSet(TLVSet);
847 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Track, EditRate));
848 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(Track, Origin));
854 Track::Copy(const Track& rhs)
856 GenericTrack::Copy(rhs);
857 EditRate = rhs.EditRate;
863 Track::Dump(FILE* stream)
865 char identbuf[IdentBufferLen];
871 GenericTrack::Dump(stream);
872 fprintf(stream, " %22s = %s\n", "EditRate", EditRate.EncodeString(identbuf, IdentBufferLen));
873 fprintf(stream, " %22s = %s\n", "Origin", i64sz(Origin, identbuf));
878 Track::InitFromBuffer(const byte_t* p, ui32_t l)
880 return InterchangeObject::InitFromBuffer(p, l);
885 Track::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
887 return InterchangeObject::WriteToBuffer(Buffer);
890 //------------------------------------------------------------------------------------------
891 // StructuralComponent
894 StructuralComponent::StructuralComponent(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) {}
896 StructuralComponent::StructuralComponent(const StructuralComponent& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
904 StructuralComponent::InitFromTLVSet(TLVReader& TLVSet)
907 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
908 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(StructuralComponent, DataDefinition));
909 if ( ASDCP_SUCCESS(result) ) {
910 result = TLVSet.ReadUi64(OBJ_READ_ARGS_OPT(StructuralComponent, Duration));
911 Duration.set_has_value( result == RESULT_OK );
918 StructuralComponent::WriteToTLVSet(TLVWriter& TLVSet)
921 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
922 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(StructuralComponent, DataDefinition));
923 if ( ASDCP_SUCCESS(result) && ! Duration.empty() ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS_OPT(StructuralComponent, Duration));
929 StructuralComponent::Copy(const StructuralComponent& rhs)
931 InterchangeObject::Copy(rhs);
932 DataDefinition = rhs.DataDefinition;
933 Duration = rhs.Duration;
938 StructuralComponent::Dump(FILE* stream)
940 char identbuf[IdentBufferLen];
946 InterchangeObject::Dump(stream);
947 fprintf(stream, " %22s = %s\n", "DataDefinition", DataDefinition.EncodeString(identbuf, IdentBufferLen));
948 if ( ! Duration.empty() ) {
949 fprintf(stream, " %22s = %s\n", "Duration", i64sz(Duration.get(), identbuf));
954 //------------------------------------------------------------------------------------------
959 Sequence::Sequence(const Dictionary*& d) : StructuralComponent(d), m_Dict(d)
962 m_UL = m_Dict->ul(MDD_Sequence);
965 Sequence::Sequence(const Sequence& rhs) : StructuralComponent(rhs.m_Dict), m_Dict(rhs.m_Dict)
968 m_UL = m_Dict->ul(MDD_Sequence);
975 Sequence::InitFromTLVSet(TLVReader& TLVSet)
978 Result_t result = StructuralComponent::InitFromTLVSet(TLVSet);
979 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Sequence, StructuralComponents));
985 Sequence::WriteToTLVSet(TLVWriter& TLVSet)
988 Result_t result = StructuralComponent::WriteToTLVSet(TLVSet);
989 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Sequence, StructuralComponents));
995 Sequence::Copy(const Sequence& rhs)
997 StructuralComponent::Copy(rhs);
998 StructuralComponents = rhs.StructuralComponents;
1003 Sequence::Dump(FILE* stream)
1005 char identbuf[IdentBufferLen];
1011 StructuralComponent::Dump(stream);
1012 fprintf(stream, " %22s:\n", "StructuralComponents");
1013 StructuralComponents.Dump(stream);
1018 Sequence::InitFromBuffer(const byte_t* p, ui32_t l)
1020 return InterchangeObject::InitFromBuffer(p, l);
1025 Sequence::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1027 return InterchangeObject::WriteToBuffer(Buffer);
1030 //------------------------------------------------------------------------------------------
1035 SourceClip::SourceClip(const Dictionary*& d) : StructuralComponent(d), m_Dict(d), StartPosition(0), SourceTrackID(0)
1038 m_UL = m_Dict->ul(MDD_SourceClip);
1041 SourceClip::SourceClip(const SourceClip& rhs) : StructuralComponent(rhs.m_Dict), m_Dict(rhs.m_Dict)
1044 m_UL = m_Dict->ul(MDD_SourceClip);
1051 SourceClip::InitFromTLVSet(TLVReader& TLVSet)
1054 Result_t result = StructuralComponent::InitFromTLVSet(TLVSet);
1055 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(SourceClip, StartPosition));
1056 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(SourceClip, SourcePackageID));
1057 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(SourceClip, SourceTrackID));
1063 SourceClip::WriteToTLVSet(TLVWriter& TLVSet)
1066 Result_t result = StructuralComponent::WriteToTLVSet(TLVSet);
1067 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(SourceClip, StartPosition));
1068 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(SourceClip, SourcePackageID));
1069 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(SourceClip, SourceTrackID));
1075 SourceClip::Copy(const SourceClip& rhs)
1077 StructuralComponent::Copy(rhs);
1078 StartPosition = rhs.StartPosition;
1079 SourcePackageID = rhs.SourcePackageID;
1080 SourceTrackID = rhs.SourceTrackID;
1085 SourceClip::Dump(FILE* stream)
1087 char identbuf[IdentBufferLen];
1093 StructuralComponent::Dump(stream);
1094 fprintf(stream, " %22s = %s\n", "StartPosition", i64sz(StartPosition, identbuf));
1095 fprintf(stream, " %22s = %s\n", "SourcePackageID", SourcePackageID.EncodeString(identbuf, IdentBufferLen));
1096 fprintf(stream, " %22s = %d\n", "SourceTrackID", SourceTrackID);
1101 SourceClip::InitFromBuffer(const byte_t* p, ui32_t l)
1103 return InterchangeObject::InitFromBuffer(p, l);
1108 SourceClip::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1110 return InterchangeObject::WriteToBuffer(Buffer);
1113 //------------------------------------------------------------------------------------------
1114 // TimecodeComponent
1118 TimecodeComponent::TimecodeComponent(const Dictionary*& d) : StructuralComponent(d), m_Dict(d), RoundedTimecodeBase(0), StartTimecode(0), DropFrame(0)
1121 m_UL = m_Dict->ul(MDD_TimecodeComponent);
1124 TimecodeComponent::TimecodeComponent(const TimecodeComponent& rhs) : StructuralComponent(rhs.m_Dict), m_Dict(rhs.m_Dict)
1127 m_UL = m_Dict->ul(MDD_TimecodeComponent);
1134 TimecodeComponent::InitFromTLVSet(TLVReader& TLVSet)
1137 Result_t result = StructuralComponent::InitFromTLVSet(TLVSet);
1138 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(TimecodeComponent, RoundedTimecodeBase));
1139 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(TimecodeComponent, StartTimecode));
1140 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(TimecodeComponent, DropFrame));
1146 TimecodeComponent::WriteToTLVSet(TLVWriter& TLVSet)
1149 Result_t result = StructuralComponent::WriteToTLVSet(TLVSet);
1150 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(TimecodeComponent, RoundedTimecodeBase));
1151 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(TimecodeComponent, StartTimecode));
1152 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(TimecodeComponent, DropFrame));
1158 TimecodeComponent::Copy(const TimecodeComponent& rhs)
1160 StructuralComponent::Copy(rhs);
1161 RoundedTimecodeBase = rhs.RoundedTimecodeBase;
1162 StartTimecode = rhs.StartTimecode;
1163 DropFrame = rhs.DropFrame;
1168 TimecodeComponent::Dump(FILE* stream)
1170 char identbuf[IdentBufferLen];
1176 StructuralComponent::Dump(stream);
1177 fprintf(stream, " %22s = %d\n", "RoundedTimecodeBase", RoundedTimecodeBase);
1178 fprintf(stream, " %22s = %s\n", "StartTimecode", i64sz(StartTimecode, identbuf));
1179 fprintf(stream, " %22s = %d\n", "DropFrame", DropFrame);
1184 TimecodeComponent::InitFromBuffer(const byte_t* p, ui32_t l)
1186 return InterchangeObject::InitFromBuffer(p, l);
1191 TimecodeComponent::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1193 return InterchangeObject::WriteToBuffer(Buffer);
1196 //------------------------------------------------------------------------------------------
1197 // GenericDescriptor
1200 GenericDescriptor::GenericDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) {}
1202 GenericDescriptor::GenericDescriptor(const GenericDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
1210 GenericDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1213 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
1214 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericDescriptor, Locators));
1215 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericDescriptor, SubDescriptors));
1221 GenericDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1224 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
1225 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericDescriptor, Locators));
1226 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericDescriptor, SubDescriptors));
1232 GenericDescriptor::Copy(const GenericDescriptor& rhs)
1234 InterchangeObject::Copy(rhs);
1235 Locators = rhs.Locators;
1236 SubDescriptors = rhs.SubDescriptors;
1241 GenericDescriptor::Dump(FILE* stream)
1243 char identbuf[IdentBufferLen];
1249 InterchangeObject::Dump(stream);
1250 fprintf(stream, " %22s:\n", "Locators");
1251 Locators.Dump(stream);
1252 fprintf(stream, " %22s:\n", "SubDescriptors");
1253 SubDescriptors.Dump(stream);
1257 //------------------------------------------------------------------------------------------
1262 FileDescriptor::FileDescriptor(const Dictionary*& d) : GenericDescriptor(d), m_Dict(d)
1265 m_UL = m_Dict->ul(MDD_FileDescriptor);
1268 FileDescriptor::FileDescriptor(const FileDescriptor& rhs) : GenericDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
1271 m_UL = m_Dict->ul(MDD_FileDescriptor);
1278 FileDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1281 Result_t result = GenericDescriptor::InitFromTLVSet(TLVSet);
1282 if ( ASDCP_SUCCESS(result) ) {
1283 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(FileDescriptor, LinkedTrackID));
1284 LinkedTrackID.set_has_value( result == RESULT_OK );
1286 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(FileDescriptor, SampleRate));
1287 if ( ASDCP_SUCCESS(result) ) {
1288 result = TLVSet.ReadUi64(OBJ_READ_ARGS_OPT(FileDescriptor, ContainerDuration));
1289 ContainerDuration.set_has_value( result == RESULT_OK );
1291 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(FileDescriptor, EssenceContainer));
1292 if ( ASDCP_SUCCESS(result) ) {
1293 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(FileDescriptor, Codec));
1294 Codec.set_has_value( result == RESULT_OK );
1301 FileDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1304 Result_t result = GenericDescriptor::WriteToTLVSet(TLVSet);
1305 if ( ASDCP_SUCCESS(result) && ! LinkedTrackID.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(FileDescriptor, LinkedTrackID));
1306 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(FileDescriptor, SampleRate));
1307 if ( ASDCP_SUCCESS(result) && ! ContainerDuration.empty() ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS_OPT(FileDescriptor, ContainerDuration));
1308 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(FileDescriptor, EssenceContainer));
1309 if ( ASDCP_SUCCESS(result) && ! Codec.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(FileDescriptor, Codec));
1315 FileDescriptor::Copy(const FileDescriptor& rhs)
1317 GenericDescriptor::Copy(rhs);
1318 LinkedTrackID = rhs.LinkedTrackID;
1319 SampleRate = rhs.SampleRate;
1320 ContainerDuration = rhs.ContainerDuration;
1321 EssenceContainer = rhs.EssenceContainer;
1327 FileDescriptor::Dump(FILE* stream)
1329 char identbuf[IdentBufferLen];
1335 GenericDescriptor::Dump(stream);
1336 if ( ! LinkedTrackID.empty() ) {
1337 fprintf(stream, " %22s = %d\n", "LinkedTrackID", LinkedTrackID.get());
1339 fprintf(stream, " %22s = %s\n", "SampleRate", SampleRate.EncodeString(identbuf, IdentBufferLen));
1340 if ( ! ContainerDuration.empty() ) {
1341 fprintf(stream, " %22s = %s\n", "ContainerDuration", i64sz(ContainerDuration.get(), identbuf));
1343 fprintf(stream, " %22s = %s\n", "EssenceContainer", EssenceContainer.EncodeString(identbuf, IdentBufferLen));
1344 if ( ! Codec.empty() ) {
1345 fprintf(stream, " %22s = %s\n", "Codec", Codec.get().EncodeString(identbuf, IdentBufferLen));
1351 FileDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1353 return InterchangeObject::InitFromBuffer(p, l);
1358 FileDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1360 return InterchangeObject::WriteToBuffer(Buffer);
1363 //------------------------------------------------------------------------------------------
1364 // GenericSoundEssenceDescriptor
1368 GenericSoundEssenceDescriptor::GenericSoundEssenceDescriptor(const Dictionary*& d) : FileDescriptor(d), m_Dict(d), Locked(0), ChannelCount(0), QuantizationBits(0)
1371 m_UL = m_Dict->ul(MDD_GenericSoundEssenceDescriptor);
1374 GenericSoundEssenceDescriptor::GenericSoundEssenceDescriptor(const GenericSoundEssenceDescriptor& rhs) : FileDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
1377 m_UL = m_Dict->ul(MDD_GenericSoundEssenceDescriptor);
1384 GenericSoundEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1387 Result_t result = FileDescriptor::InitFromTLVSet(TLVSet);
1388 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, AudioSamplingRate));
1389 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, Locked));
1390 if ( ASDCP_SUCCESS(result) ) {
1391 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericSoundEssenceDescriptor, AudioRefLevel));
1392 AudioRefLevel.set_has_value( result == RESULT_OK );
1394 if ( ASDCP_SUCCESS(result) ) {
1395 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericSoundEssenceDescriptor, ElectroSpatialFormulation));
1396 ElectroSpatialFormulation.set_has_value( result == RESULT_OK );
1398 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, ChannelCount));
1399 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, QuantizationBits));
1400 if ( ASDCP_SUCCESS(result) ) {
1401 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericSoundEssenceDescriptor, DialNorm));
1402 DialNorm.set_has_value( result == RESULT_OK );
1404 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, SoundEssenceCoding));
1405 if ( ASDCP_SUCCESS(result) ) {
1406 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericSoundEssenceDescriptor, ReferenceAudioAlignmentLevel));
1407 ReferenceAudioAlignmentLevel.set_has_value( result == RESULT_OK );
1409 if ( ASDCP_SUCCESS(result) ) {
1410 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericSoundEssenceDescriptor, ReferenceImageEditRate));
1411 ReferenceImageEditRate.set_has_value( result == RESULT_OK );
1418 GenericSoundEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1421 Result_t result = FileDescriptor::WriteToTLVSet(TLVSet);
1422 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, AudioSamplingRate));
1423 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, Locked));
1424 if ( ASDCP_SUCCESS(result) && ! AudioRefLevel.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericSoundEssenceDescriptor, AudioRefLevel));
1425 if ( ASDCP_SUCCESS(result) && ! ElectroSpatialFormulation.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericSoundEssenceDescriptor, ElectroSpatialFormulation));
1426 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, ChannelCount));
1427 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, QuantizationBits));
1428 if ( ASDCP_SUCCESS(result) && ! DialNorm.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericSoundEssenceDescriptor, DialNorm));
1429 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, SoundEssenceCoding));
1430 if ( ASDCP_SUCCESS(result) && ! ReferenceAudioAlignmentLevel.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericSoundEssenceDescriptor, ReferenceAudioAlignmentLevel));
1431 if ( ASDCP_SUCCESS(result) && ! ReferenceImageEditRate.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericSoundEssenceDescriptor, ReferenceImageEditRate));
1437 GenericSoundEssenceDescriptor::Copy(const GenericSoundEssenceDescriptor& rhs)
1439 FileDescriptor::Copy(rhs);
1440 AudioSamplingRate = rhs.AudioSamplingRate;
1441 Locked = rhs.Locked;
1442 AudioRefLevel = rhs.AudioRefLevel;
1443 ElectroSpatialFormulation = rhs.ElectroSpatialFormulation;
1444 ChannelCount = rhs.ChannelCount;
1445 QuantizationBits = rhs.QuantizationBits;
1446 DialNorm = rhs.DialNorm;
1447 SoundEssenceCoding = rhs.SoundEssenceCoding;
1448 ReferenceAudioAlignmentLevel = rhs.ReferenceAudioAlignmentLevel;
1449 ReferenceImageEditRate = rhs.ReferenceImageEditRate;
1454 GenericSoundEssenceDescriptor::Dump(FILE* stream)
1456 char identbuf[IdentBufferLen];
1462 FileDescriptor::Dump(stream);
1463 fprintf(stream, " %22s = %s\n", "AudioSamplingRate", AudioSamplingRate.EncodeString(identbuf, IdentBufferLen));
1464 fprintf(stream, " %22s = %d\n", "Locked", Locked);
1465 if ( ! AudioRefLevel.empty() ) {
1466 fprintf(stream, " %22s = %d\n", "AudioRefLevel", AudioRefLevel.get());
1468 if ( ! ElectroSpatialFormulation.empty() ) {
1469 fprintf(stream, " %22s = %d\n", "ElectroSpatialFormulation", ElectroSpatialFormulation.get());
1471 fprintf(stream, " %22s = %d\n", "ChannelCount", ChannelCount);
1472 fprintf(stream, " %22s = %d\n", "QuantizationBits", QuantizationBits);
1473 if ( ! DialNorm.empty() ) {
1474 fprintf(stream, " %22s = %d\n", "DialNorm", DialNorm.get());
1476 fprintf(stream, " %22s = %s\n", "SoundEssenceCoding", SoundEssenceCoding.EncodeString(identbuf, IdentBufferLen));
1477 if ( ! ReferenceAudioAlignmentLevel.empty() ) {
1478 fprintf(stream, " %22s = %d\n", "ReferenceAudioAlignmentLevel", ReferenceAudioAlignmentLevel.get());
1480 if ( ! ReferenceImageEditRate.empty() ) {
1481 fprintf(stream, " %22s = %s\n", "ReferenceImageEditRate", ReferenceImageEditRate.get().EncodeString(identbuf, IdentBufferLen));
1487 GenericSoundEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1489 return InterchangeObject::InitFromBuffer(p, l);
1494 GenericSoundEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1496 return InterchangeObject::WriteToBuffer(Buffer);
1499 //------------------------------------------------------------------------------------------
1500 // WaveAudioDescriptor
1504 WaveAudioDescriptor::WaveAudioDescriptor(const Dictionary*& d) : GenericSoundEssenceDescriptor(d), m_Dict(d), BlockAlign(0), AvgBps(0)
1507 m_UL = m_Dict->ul(MDD_WaveAudioDescriptor);
1510 WaveAudioDescriptor::WaveAudioDescriptor(const WaveAudioDescriptor& rhs) : GenericSoundEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
1513 m_UL = m_Dict->ul(MDD_WaveAudioDescriptor);
1520 WaveAudioDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1523 Result_t result = GenericSoundEssenceDescriptor::InitFromTLVSet(TLVSet);
1524 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(WaveAudioDescriptor, BlockAlign));
1525 if ( ASDCP_SUCCESS(result) ) {
1526 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(WaveAudioDescriptor, SequenceOffset));
1527 SequenceOffset.set_has_value( result == RESULT_OK );
1529 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(WaveAudioDescriptor, AvgBps));
1530 if ( ASDCP_SUCCESS(result) ) {
1531 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(WaveAudioDescriptor, ChannelAssignment));
1532 ChannelAssignment.set_has_value( result == RESULT_OK );
1539 WaveAudioDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1542 Result_t result = GenericSoundEssenceDescriptor::WriteToTLVSet(TLVSet);
1543 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(WaveAudioDescriptor, BlockAlign));
1544 if ( ASDCP_SUCCESS(result) && ! SequenceOffset.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(WaveAudioDescriptor, SequenceOffset));
1545 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(WaveAudioDescriptor, AvgBps));
1546 if ( ASDCP_SUCCESS(result) && ! ChannelAssignment.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(WaveAudioDescriptor, ChannelAssignment));
1552 WaveAudioDescriptor::Copy(const WaveAudioDescriptor& rhs)
1554 GenericSoundEssenceDescriptor::Copy(rhs);
1555 BlockAlign = rhs.BlockAlign;
1556 SequenceOffset = rhs.SequenceOffset;
1557 AvgBps = rhs.AvgBps;
1558 ChannelAssignment = rhs.ChannelAssignment;
1563 WaveAudioDescriptor::Dump(FILE* stream)
1565 char identbuf[IdentBufferLen];
1571 GenericSoundEssenceDescriptor::Dump(stream);
1572 fprintf(stream, " %22s = %d\n", "BlockAlign", BlockAlign);
1573 if ( ! SequenceOffset.empty() ) {
1574 fprintf(stream, " %22s = %d\n", "SequenceOffset", SequenceOffset.get());
1576 fprintf(stream, " %22s = %d\n", "AvgBps", AvgBps);
1577 if ( ! ChannelAssignment.empty() ) {
1578 fprintf(stream, " %22s = %s\n", "ChannelAssignment", ChannelAssignment.get().EncodeString(identbuf, IdentBufferLen));
1584 WaveAudioDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1586 return InterchangeObject::InitFromBuffer(p, l);
1591 WaveAudioDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1593 return InterchangeObject::WriteToBuffer(Buffer);
1596 //------------------------------------------------------------------------------------------
1597 // GenericPictureEssenceDescriptor
1601 GenericPictureEssenceDescriptor::GenericPictureEssenceDescriptor(const Dictionary*& d) : FileDescriptor(d), m_Dict(d), FrameLayout(0), StoredWidth(0), StoredHeight(0)
1604 m_UL = m_Dict->ul(MDD_GenericPictureEssenceDescriptor);
1607 GenericPictureEssenceDescriptor::GenericPictureEssenceDescriptor(const GenericPictureEssenceDescriptor& rhs) : FileDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
1610 m_UL = m_Dict->ul(MDD_GenericPictureEssenceDescriptor);
1617 GenericPictureEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1620 Result_t result = FileDescriptor::InitFromTLVSet(TLVSet);
1621 if ( ASDCP_SUCCESS(result) ) {
1622 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, SignalStandard));
1623 SignalStandard.set_has_value( result == RESULT_OK );
1625 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, FrameLayout));
1626 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, StoredWidth));
1627 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, StoredHeight));
1628 if ( ASDCP_SUCCESS(result) ) {
1629 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, StoredF2Offset));
1630 StoredF2Offset.set_has_value( result == RESULT_OK );
1632 if ( ASDCP_SUCCESS(result) ) {
1633 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, SampledWidth));
1634 SampledWidth.set_has_value( result == RESULT_OK );
1636 if ( ASDCP_SUCCESS(result) ) {
1637 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, SampledHeight));
1638 SampledHeight.set_has_value( result == RESULT_OK );
1640 if ( ASDCP_SUCCESS(result) ) {
1641 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, SampledXOffset));
1642 SampledXOffset.set_has_value( result == RESULT_OK );
1644 if ( ASDCP_SUCCESS(result) ) {
1645 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, SampledYOffset));
1646 SampledYOffset.set_has_value( result == RESULT_OK );
1648 if ( ASDCP_SUCCESS(result) ) {
1649 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayHeight));
1650 DisplayHeight.set_has_value( result == RESULT_OK );
1652 if ( ASDCP_SUCCESS(result) ) {
1653 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayWidth));
1654 DisplayWidth.set_has_value( result == RESULT_OK );
1656 if ( ASDCP_SUCCESS(result) ) {
1657 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayXOffset));
1658 DisplayXOffset.set_has_value( result == RESULT_OK );
1660 if ( ASDCP_SUCCESS(result) ) {
1661 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayYOffset));
1662 DisplayYOffset.set_has_value( result == RESULT_OK );
1664 if ( ASDCP_SUCCESS(result) ) {
1665 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayF2Offset));
1666 DisplayF2Offset.set_has_value( result == RESULT_OK );
1668 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, AspectRatio));
1669 if ( ASDCP_SUCCESS(result) ) {
1670 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveFormatDescriptor));
1671 ActiveFormatDescriptor.set_has_value( result == RESULT_OK );
1673 if ( ASDCP_SUCCESS(result) ) {
1674 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, AlphaTransparency));
1675 AlphaTransparency.set_has_value( result == RESULT_OK );
1677 if ( ASDCP_SUCCESS(result) ) {
1678 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, TransferCharacteristic));
1679 TransferCharacteristic.set_has_value( result == RESULT_OK );
1681 if ( ASDCP_SUCCESS(result) ) {
1682 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ImageAlignmentOffset));
1683 ImageAlignmentOffset.set_has_value( result == RESULT_OK );
1685 if ( ASDCP_SUCCESS(result) ) {
1686 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ImageStartOffset));
1687 ImageStartOffset.set_has_value( result == RESULT_OK );
1689 if ( ASDCP_SUCCESS(result) ) {
1690 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ImageEndOffset));
1691 ImageEndOffset.set_has_value( result == RESULT_OK );
1693 if ( ASDCP_SUCCESS(result) ) {
1694 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, FieldDominance));
1695 FieldDominance.set_has_value( result == RESULT_OK );
1697 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, PictureEssenceCoding));
1698 if ( ASDCP_SUCCESS(result) ) {
1699 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, CodingEquations));
1700 CodingEquations.set_has_value( result == RESULT_OK );
1702 if ( ASDCP_SUCCESS(result) ) {
1703 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ColorPrimaries));
1704 ColorPrimaries.set_has_value( result == RESULT_OK );
1706 if ( ASDCP_SUCCESS(result) ) {
1707 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, AlternativeCenterCuts));
1709 if ( ASDCP_SUCCESS(result) ) {
1710 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveWidth));
1711 ActiveWidth.set_has_value( result == RESULT_OK );
1713 if ( ASDCP_SUCCESS(result) ) {
1714 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveHeight));
1715 ActiveHeight.set_has_value( result == RESULT_OK );
1717 if ( ASDCP_SUCCESS(result) ) {
1718 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveXOffset));
1719 ActiveXOffset.set_has_value( result == RESULT_OK );
1721 if ( ASDCP_SUCCESS(result) ) {
1722 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveYOffset));
1723 ActiveYOffset.set_has_value( result == RESULT_OK );
1725 if ( ASDCP_SUCCESS(result) ) {
1726 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, VideoLineMap));
1727 VideoLineMap.set_has_value( result == RESULT_OK );
1729 if ( ASDCP_SUCCESS(result) ) {
1730 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayPrimaries));
1731 MasteringDisplayPrimaries.set_has_value( result == RESULT_OK );
1733 if ( ASDCP_SUCCESS(result) ) {
1734 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayWhitePointChromaticity));
1735 MasteringDisplayWhitePointChromaticity.set_has_value( result == RESULT_OK );
1737 if ( ASDCP_SUCCESS(result) ) {
1738 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayMaximumLuminance));
1739 MasteringDisplayMaximumLuminance.set_has_value( result == RESULT_OK );
1741 if ( ASDCP_SUCCESS(result) ) {
1742 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayMinimumLuminance));
1743 MasteringDisplayMinimumLuminance.set_has_value( result == RESULT_OK );
1750 GenericPictureEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1753 Result_t result = FileDescriptor::WriteToTLVSet(TLVSet);
1754 if ( ASDCP_SUCCESS(result) && ! SignalStandard.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, SignalStandard));
1755 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, FrameLayout));
1756 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, StoredWidth));
1757 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, StoredHeight));
1758 if ( ASDCP_SUCCESS(result) && ! StoredF2Offset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, StoredF2Offset));
1759 if ( ASDCP_SUCCESS(result) && ! SampledWidth.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, SampledWidth));
1760 if ( ASDCP_SUCCESS(result) && ! SampledHeight.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, SampledHeight));
1761 if ( ASDCP_SUCCESS(result) && ! SampledXOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, SampledXOffset));
1762 if ( ASDCP_SUCCESS(result) && ! SampledYOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, SampledYOffset));
1763 if ( ASDCP_SUCCESS(result) && ! DisplayHeight.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayHeight));
1764 if ( ASDCP_SUCCESS(result) && ! DisplayWidth.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayWidth));
1765 if ( ASDCP_SUCCESS(result) && ! DisplayXOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayXOffset));
1766 if ( ASDCP_SUCCESS(result) && ! DisplayYOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayYOffset));
1767 if ( ASDCP_SUCCESS(result) && ! DisplayF2Offset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayF2Offset));
1768 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, AspectRatio));
1769 if ( ASDCP_SUCCESS(result) && ! ActiveFormatDescriptor.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveFormatDescriptor));
1770 if ( ASDCP_SUCCESS(result) && ! AlphaTransparency.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, AlphaTransparency));
1771 if ( ASDCP_SUCCESS(result) && ! TransferCharacteristic.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, TransferCharacteristic));
1772 if ( ASDCP_SUCCESS(result) && ! ImageAlignmentOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ImageAlignmentOffset));
1773 if ( ASDCP_SUCCESS(result) && ! ImageStartOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ImageStartOffset));
1774 if ( ASDCP_SUCCESS(result) && ! ImageEndOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ImageEndOffset));
1775 if ( ASDCP_SUCCESS(result) && ! FieldDominance.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, FieldDominance));
1776 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, PictureEssenceCoding));
1777 if ( ASDCP_SUCCESS(result) && ! CodingEquations.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, CodingEquations));
1778 if ( ASDCP_SUCCESS(result) && ! ColorPrimaries.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ColorPrimaries));
1779 if ( ASDCP_SUCCESS(result) && ! AlternativeCenterCuts.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, AlternativeCenterCuts));
1780 if ( ASDCP_SUCCESS(result) && ! ActiveWidth.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveWidth));
1781 if ( ASDCP_SUCCESS(result) && ! ActiveHeight.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveHeight));
1782 if ( ASDCP_SUCCESS(result) && ! ActiveXOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveXOffset));
1783 if ( ASDCP_SUCCESS(result) && ! ActiveYOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveYOffset));
1784 if ( ASDCP_SUCCESS(result) && ! VideoLineMap.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, VideoLineMap));
1785 if ( ASDCP_SUCCESS(result) && ! MasteringDisplayPrimaries.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayPrimaries));
1786 if ( ASDCP_SUCCESS(result) && ! MasteringDisplayWhitePointChromaticity.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayWhitePointChromaticity));
1787 if ( ASDCP_SUCCESS(result) && ! MasteringDisplayMaximumLuminance.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayMaximumLuminance));
1788 if ( ASDCP_SUCCESS(result) && ! MasteringDisplayMinimumLuminance.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayMinimumLuminance));
1794 GenericPictureEssenceDescriptor::Copy(const GenericPictureEssenceDescriptor& rhs)
1796 FileDescriptor::Copy(rhs);
1797 SignalStandard = rhs.SignalStandard;
1798 FrameLayout = rhs.FrameLayout;
1799 StoredWidth = rhs.StoredWidth;
1800 StoredHeight = rhs.StoredHeight;
1801 StoredF2Offset = rhs.StoredF2Offset;
1802 SampledWidth = rhs.SampledWidth;
1803 SampledHeight = rhs.SampledHeight;
1804 SampledXOffset = rhs.SampledXOffset;
1805 SampledYOffset = rhs.SampledYOffset;
1806 DisplayHeight = rhs.DisplayHeight;
1807 DisplayWidth = rhs.DisplayWidth;
1808 DisplayXOffset = rhs.DisplayXOffset;
1809 DisplayYOffset = rhs.DisplayYOffset;
1810 DisplayF2Offset = rhs.DisplayF2Offset;
1811 AspectRatio = rhs.AspectRatio;
1812 ActiveFormatDescriptor = rhs.ActiveFormatDescriptor;
1813 AlphaTransparency = rhs.AlphaTransparency;
1814 TransferCharacteristic = rhs.TransferCharacteristic;
1815 ImageAlignmentOffset = rhs.ImageAlignmentOffset;
1816 ImageStartOffset = rhs.ImageStartOffset;
1817 ImageEndOffset = rhs.ImageEndOffset;
1818 FieldDominance = rhs.FieldDominance;
1819 PictureEssenceCoding = rhs.PictureEssenceCoding;
1820 CodingEquations = rhs.CodingEquations;
1821 ColorPrimaries = rhs.ColorPrimaries;
1822 AlternativeCenterCuts = rhs.AlternativeCenterCuts;
1823 ActiveWidth = rhs.ActiveWidth;
1824 ActiveHeight = rhs.ActiveHeight;
1825 ActiveXOffset = rhs.ActiveXOffset;
1826 ActiveYOffset = rhs.ActiveYOffset;
1827 VideoLineMap = rhs.VideoLineMap;
1828 MasteringDisplayPrimaries = rhs.MasteringDisplayPrimaries;
1829 MasteringDisplayWhitePointChromaticity = rhs.MasteringDisplayWhitePointChromaticity;
1830 MasteringDisplayMaximumLuminance = rhs.MasteringDisplayMaximumLuminance;
1831 MasteringDisplayMinimumLuminance = rhs.MasteringDisplayMinimumLuminance;
1836 GenericPictureEssenceDescriptor::Dump(FILE* stream)
1838 char identbuf[IdentBufferLen];
1844 FileDescriptor::Dump(stream);
1845 if ( ! SignalStandard.empty() ) {
1846 fprintf(stream, " %22s = %d\n", "SignalStandard", SignalStandard.get());
1848 fprintf(stream, " %22s = %d\n", "FrameLayout", FrameLayout);
1849 fprintf(stream, " %22s = %d\n", "StoredWidth", StoredWidth);
1850 fprintf(stream, " %22s = %d\n", "StoredHeight", StoredHeight);
1851 if ( ! StoredF2Offset.empty() ) {
1852 fprintf(stream, " %22s = %d\n", "StoredF2Offset", StoredF2Offset.get());
1854 if ( ! SampledWidth.empty() ) {
1855 fprintf(stream, " %22s = %d\n", "SampledWidth", SampledWidth.get());
1857 if ( ! SampledHeight.empty() ) {
1858 fprintf(stream, " %22s = %d\n", "SampledHeight", SampledHeight.get());
1860 if ( ! SampledXOffset.empty() ) {
1861 fprintf(stream, " %22s = %d\n", "SampledXOffset", SampledXOffset.get());
1863 if ( ! SampledYOffset.empty() ) {
1864 fprintf(stream, " %22s = %d\n", "SampledYOffset", SampledYOffset.get());
1866 if ( ! DisplayHeight.empty() ) {
1867 fprintf(stream, " %22s = %d\n", "DisplayHeight", DisplayHeight.get());
1869 if ( ! DisplayWidth.empty() ) {
1870 fprintf(stream, " %22s = %d\n", "DisplayWidth", DisplayWidth.get());
1872 if ( ! DisplayXOffset.empty() ) {
1873 fprintf(stream, " %22s = %d\n", "DisplayXOffset", DisplayXOffset.get());
1875 if ( ! DisplayYOffset.empty() ) {
1876 fprintf(stream, " %22s = %d\n", "DisplayYOffset", DisplayYOffset.get());
1878 if ( ! DisplayF2Offset.empty() ) {
1879 fprintf(stream, " %22s = %d\n", "DisplayF2Offset", DisplayF2Offset.get());
1881 fprintf(stream, " %22s = %s\n", "AspectRatio", AspectRatio.EncodeString(identbuf, IdentBufferLen));
1882 if ( ! ActiveFormatDescriptor.empty() ) {
1883 fprintf(stream, " %22s = %d\n", "ActiveFormatDescriptor", ActiveFormatDescriptor.get());
1885 if ( ! AlphaTransparency.empty() ) {
1886 fprintf(stream, " %22s = %d\n", "AlphaTransparency", AlphaTransparency.get());
1888 if ( ! TransferCharacteristic.empty() ) {
1889 fprintf(stream, " %22s = %s\n", "TransferCharacteristic", TransferCharacteristic.get().EncodeString(identbuf, IdentBufferLen));
1891 if ( ! ImageAlignmentOffset.empty() ) {
1892 fprintf(stream, " %22s = %d\n", "ImageAlignmentOffset", ImageAlignmentOffset.get());
1894 if ( ! ImageStartOffset.empty() ) {
1895 fprintf(stream, " %22s = %d\n", "ImageStartOffset", ImageStartOffset.get());
1897 if ( ! ImageEndOffset.empty() ) {
1898 fprintf(stream, " %22s = %d\n", "ImageEndOffset", ImageEndOffset.get());
1900 if ( ! FieldDominance.empty() ) {
1901 fprintf(stream, " %22s = %d\n", "FieldDominance", FieldDominance.get());
1903 fprintf(stream, " %22s = %s\n", "PictureEssenceCoding", PictureEssenceCoding.EncodeString(identbuf, IdentBufferLen));
1904 if ( ! CodingEquations.empty() ) {
1905 fprintf(stream, " %22s = %s\n", "CodingEquations", CodingEquations.get().EncodeString(identbuf, IdentBufferLen));
1907 if ( ! ColorPrimaries.empty() ) {
1908 fprintf(stream, " %22s = %s\n", "ColorPrimaries", ColorPrimaries.get().EncodeString(identbuf, IdentBufferLen));
1910 if ( ! AlternativeCenterCuts.empty() ) {
1911 fprintf(stream, " %22s:\n", "AlternativeCenterCuts");
1912 AlternativeCenterCuts.get().Dump(stream);
1914 if ( ! ActiveWidth.empty() ) {
1915 fprintf(stream, " %22s = %d\n", "ActiveWidth", ActiveWidth.get());
1917 if ( ! ActiveHeight.empty() ) {
1918 fprintf(stream, " %22s = %d\n", "ActiveHeight", ActiveHeight.get());
1920 if ( ! ActiveXOffset.empty() ) {
1921 fprintf(stream, " %22s = %d\n", "ActiveXOffset", ActiveXOffset.get());
1923 if ( ! ActiveYOffset.empty() ) {
1924 fprintf(stream, " %22s = %d\n", "ActiveYOffset", ActiveYOffset.get());
1926 if ( ! VideoLineMap.empty() ) {
1927 fprintf(stream, " %22s = %s\n", "VideoLineMap", VideoLineMap.get().EncodeString(identbuf, IdentBufferLen));
1929 if ( ! MasteringDisplayPrimaries.empty() ) {
1930 fprintf(stream, " %22s = %s\n", "MasteringDisplayPrimaries", MasteringDisplayPrimaries.get().EncodeString(identbuf, IdentBufferLen));
1932 if ( ! MasteringDisplayWhitePointChromaticity.empty() ) {
1933 fprintf(stream, " %22s = %s\n", "MasteringDisplayWhitePointChromaticity", MasteringDisplayWhitePointChromaticity.get().EncodeString(identbuf, IdentBufferLen));
1935 if ( ! MasteringDisplayMaximumLuminance.empty() ) {
1936 fprintf(stream, " %22s = %d\n", "MasteringDisplayMaximumLuminance", MasteringDisplayMaximumLuminance.get());
1938 if ( ! MasteringDisplayMinimumLuminance.empty() ) {
1939 fprintf(stream, " %22s = %d\n", "MasteringDisplayMinimumLuminance", MasteringDisplayMinimumLuminance.get());
1945 GenericPictureEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1947 return InterchangeObject::InitFromBuffer(p, l);
1952 GenericPictureEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1954 return InterchangeObject::WriteToBuffer(Buffer);
1957 //------------------------------------------------------------------------------------------
1958 // RGBAEssenceDescriptor
1962 RGBAEssenceDescriptor::RGBAEssenceDescriptor(const Dictionary*& d) : GenericPictureEssenceDescriptor(d), m_Dict(d)
1965 m_UL = m_Dict->ul(MDD_RGBAEssenceDescriptor);
1968 RGBAEssenceDescriptor::RGBAEssenceDescriptor(const RGBAEssenceDescriptor& rhs) : GenericPictureEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
1971 m_UL = m_Dict->ul(MDD_RGBAEssenceDescriptor);
1978 RGBAEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1981 Result_t result = GenericPictureEssenceDescriptor::InitFromTLVSet(TLVSet);
1982 if ( ASDCP_SUCCESS(result) ) {
1983 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(RGBAEssenceDescriptor, ComponentMaxRef));
1984 ComponentMaxRef.set_has_value( result == RESULT_OK );
1986 if ( ASDCP_SUCCESS(result) ) {
1987 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(RGBAEssenceDescriptor, ComponentMinRef));
1988 ComponentMinRef.set_has_value( result == RESULT_OK );
1990 if ( ASDCP_SUCCESS(result) ) {
1991 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(RGBAEssenceDescriptor, AlphaMinRef));
1992 AlphaMinRef.set_has_value( result == RESULT_OK );
1994 if ( ASDCP_SUCCESS(result) ) {
1995 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(RGBAEssenceDescriptor, AlphaMaxRef));
1996 AlphaMaxRef.set_has_value( result == RESULT_OK );
1998 if ( ASDCP_SUCCESS(result) ) {
1999 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(RGBAEssenceDescriptor, ScanningDirection));
2000 ScanningDirection.set_has_value( result == RESULT_OK );
2002 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(RGBAEssenceDescriptor, PixelLayout));
2008 RGBAEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2011 Result_t result = GenericPictureEssenceDescriptor::WriteToTLVSet(TLVSet);
2012 if ( ASDCP_SUCCESS(result) && ! ComponentMaxRef.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(RGBAEssenceDescriptor, ComponentMaxRef));
2013 if ( ASDCP_SUCCESS(result) && ! ComponentMinRef.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(RGBAEssenceDescriptor, ComponentMinRef));
2014 if ( ASDCP_SUCCESS(result) && ! AlphaMinRef.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(RGBAEssenceDescriptor, AlphaMinRef));
2015 if ( ASDCP_SUCCESS(result) && ! AlphaMaxRef.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(RGBAEssenceDescriptor, AlphaMaxRef));
2016 if ( ASDCP_SUCCESS(result) && ! ScanningDirection.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(RGBAEssenceDescriptor, ScanningDirection));
2017 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(RGBAEssenceDescriptor, PixelLayout));
2023 RGBAEssenceDescriptor::Copy(const RGBAEssenceDescriptor& rhs)
2025 GenericPictureEssenceDescriptor::Copy(rhs);
2026 ComponentMaxRef = rhs.ComponentMaxRef;
2027 ComponentMinRef = rhs.ComponentMinRef;
2028 AlphaMinRef = rhs.AlphaMinRef;
2029 AlphaMaxRef = rhs.AlphaMaxRef;
2030 ScanningDirection = rhs.ScanningDirection;
2031 PixelLayout = rhs.PixelLayout;
2036 RGBAEssenceDescriptor::Dump(FILE* stream)
2038 char identbuf[IdentBufferLen];
2044 GenericPictureEssenceDescriptor::Dump(stream);
2045 if ( ! ComponentMaxRef.empty() ) {
2046 fprintf(stream, " %22s = %d\n", "ComponentMaxRef", ComponentMaxRef.get());
2048 if ( ! ComponentMinRef.empty() ) {
2049 fprintf(stream, " %22s = %d\n", "ComponentMinRef", ComponentMinRef.get());
2051 if ( ! AlphaMinRef.empty() ) {
2052 fprintf(stream, " %22s = %d\n", "AlphaMinRef", AlphaMinRef.get());
2054 if ( ! AlphaMaxRef.empty() ) {
2055 fprintf(stream, " %22s = %d\n", "AlphaMaxRef", AlphaMaxRef.get());
2057 if ( ! ScanningDirection.empty() ) {
2058 fprintf(stream, " %22s = %d\n", "ScanningDirection", ScanningDirection.get());
2060 fprintf(stream, " %22s = %s\n", "PixelLayout", PixelLayout.EncodeString(identbuf, IdentBufferLen));
2065 RGBAEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
2067 return InterchangeObject::InitFromBuffer(p, l);
2072 RGBAEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2074 return InterchangeObject::WriteToBuffer(Buffer);
2077 //------------------------------------------------------------------------------------------
2078 // JPEG2000PictureSubDescriptor
2082 JPEG2000PictureSubDescriptor::JPEG2000PictureSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), Rsize(0), Xsize(0), Ysize(0), XOsize(0), YOsize(0), XTsize(0), YTsize(0), XTOsize(0), YTOsize(0), Csize(0)
2085 m_UL = m_Dict->ul(MDD_JPEG2000PictureSubDescriptor);
2088 JPEG2000PictureSubDescriptor::JPEG2000PictureSubDescriptor(const JPEG2000PictureSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2091 m_UL = m_Dict->ul(MDD_JPEG2000PictureSubDescriptor);
2098 JPEG2000PictureSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
2101 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2102 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Rsize));
2103 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Xsize));
2104 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Ysize));
2105 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XOsize));
2106 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YOsize));
2107 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XTsize));
2108 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YTsize));
2109 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XTOsize));
2110 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YTOsize));
2111 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Csize));
2112 if ( ASDCP_SUCCESS(result) ) {
2113 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(JPEG2000PictureSubDescriptor, PictureComponentSizing));
2114 PictureComponentSizing.set_has_value( result == RESULT_OK );
2116 if ( ASDCP_SUCCESS(result) ) {
2117 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(JPEG2000PictureSubDescriptor, CodingStyleDefault));
2118 CodingStyleDefault.set_has_value( result == RESULT_OK );
2120 if ( ASDCP_SUCCESS(result) ) {
2121 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(JPEG2000PictureSubDescriptor, QuantizationDefault));
2122 QuantizationDefault.set_has_value( result == RESULT_OK );
2124 if ( ASDCP_SUCCESS(result) ) {
2125 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(JPEG2000PictureSubDescriptor, J2CLayout));
2126 J2CLayout.set_has_value( result == RESULT_OK );
2133 JPEG2000PictureSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2136 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2137 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Rsize));
2138 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Xsize));
2139 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Ysize));
2140 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XOsize));
2141 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YOsize));
2142 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XTsize));
2143 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YTsize));
2144 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XTOsize));
2145 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YTOsize));
2146 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Csize));
2147 if ( ASDCP_SUCCESS(result) && ! PictureComponentSizing.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, PictureComponentSizing));
2148 if ( ASDCP_SUCCESS(result) && ! CodingStyleDefault.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, CodingStyleDefault));
2149 if ( ASDCP_SUCCESS(result) && ! QuantizationDefault.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, QuantizationDefault));
2150 if ( ASDCP_SUCCESS(result) && ! J2CLayout.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, J2CLayout));
2156 JPEG2000PictureSubDescriptor::Copy(const JPEG2000PictureSubDescriptor& rhs)
2158 InterchangeObject::Copy(rhs);
2162 XOsize = rhs.XOsize;
2163 YOsize = rhs.YOsize;
2164 XTsize = rhs.XTsize;
2165 YTsize = rhs.YTsize;
2166 XTOsize = rhs.XTOsize;
2167 YTOsize = rhs.YTOsize;
2169 PictureComponentSizing = rhs.PictureComponentSizing;
2170 CodingStyleDefault = rhs.CodingStyleDefault;
2171 QuantizationDefault = rhs.QuantizationDefault;
2172 J2CLayout = rhs.J2CLayout;
2177 JPEG2000PictureSubDescriptor::Dump(FILE* stream)
2179 char identbuf[IdentBufferLen];
2185 InterchangeObject::Dump(stream);
2186 fprintf(stream, " %22s = %d\n", "Rsize", Rsize);
2187 fprintf(stream, " %22s = %d\n", "Xsize", Xsize);
2188 fprintf(stream, " %22s = %d\n", "Ysize", Ysize);
2189 fprintf(stream, " %22s = %d\n", "XOsize", XOsize);
2190 fprintf(stream, " %22s = %d\n", "YOsize", YOsize);
2191 fprintf(stream, " %22s = %d\n", "XTsize", XTsize);
2192 fprintf(stream, " %22s = %d\n", "YTsize", YTsize);
2193 fprintf(stream, " %22s = %d\n", "XTOsize", XTOsize);
2194 fprintf(stream, " %22s = %d\n", "YTOsize", YTOsize);
2195 fprintf(stream, " %22s = %d\n", "Csize", Csize);
2196 if ( ! PictureComponentSizing.empty() ) {
2197 fprintf(stream, " %22s = %s\n", "PictureComponentSizing", PictureComponentSizing.get().EncodeString(identbuf, IdentBufferLen));
2199 if ( ! CodingStyleDefault.empty() ) {
2200 fprintf(stream, " %22s = %s\n", "CodingStyleDefault", CodingStyleDefault.get().EncodeString(identbuf, IdentBufferLen));
2202 if ( ! QuantizationDefault.empty() ) {
2203 fprintf(stream, " %22s = %s\n", "QuantizationDefault", QuantizationDefault.get().EncodeString(identbuf, IdentBufferLen));
2205 if ( ! J2CLayout.empty() ) {
2206 fprintf(stream, " %22s = %s\n", "J2CLayout", J2CLayout.get().EncodeString(identbuf, IdentBufferLen));
2212 JPEG2000PictureSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
2214 return InterchangeObject::InitFromBuffer(p, l);
2219 JPEG2000PictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2221 return InterchangeObject::WriteToBuffer(Buffer);
2224 //------------------------------------------------------------------------------------------
2225 // CDCIEssenceDescriptor
2229 CDCIEssenceDescriptor::CDCIEssenceDescriptor(const Dictionary*& d) : GenericPictureEssenceDescriptor(d), m_Dict(d), ComponentDepth(0), HorizontalSubsampling(0)
2232 m_UL = m_Dict->ul(MDD_CDCIEssenceDescriptor);
2235 CDCIEssenceDescriptor::CDCIEssenceDescriptor(const CDCIEssenceDescriptor& rhs) : GenericPictureEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
2238 m_UL = m_Dict->ul(MDD_CDCIEssenceDescriptor);
2245 CDCIEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
2248 Result_t result = GenericPictureEssenceDescriptor::InitFromTLVSet(TLVSet);
2249 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, ComponentDepth));
2250 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, HorizontalSubsampling));
2251 if ( ASDCP_SUCCESS(result) ) {
2252 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, VerticalSubsampling));
2253 VerticalSubsampling.set_has_value( result == RESULT_OK );
2255 if ( ASDCP_SUCCESS(result) ) {
2256 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, ColorSiting));
2257 ColorSiting.set_has_value( result == RESULT_OK );
2259 if ( ASDCP_SUCCESS(result) ) {
2260 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, ReversedByteOrder));
2261 ReversedByteOrder.set_has_value( result == RESULT_OK );
2263 if ( ASDCP_SUCCESS(result) ) {
2264 result = TLVSet.ReadUi16(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, PaddingBits));
2265 PaddingBits.set_has_value( result == RESULT_OK );
2267 if ( ASDCP_SUCCESS(result) ) {
2268 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, AlphaSampleDepth));
2269 AlphaSampleDepth.set_has_value( result == RESULT_OK );
2271 if ( ASDCP_SUCCESS(result) ) {
2272 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, BlackRefLevel));
2273 BlackRefLevel.set_has_value( result == RESULT_OK );
2275 if ( ASDCP_SUCCESS(result) ) {
2276 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, WhiteReflevel));
2277 WhiteReflevel.set_has_value( result == RESULT_OK );
2279 if ( ASDCP_SUCCESS(result) ) {
2280 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, ColorRange));
2281 ColorRange.set_has_value( result == RESULT_OK );
2288 CDCIEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2291 Result_t result = GenericPictureEssenceDescriptor::WriteToTLVSet(TLVSet);
2292 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, ComponentDepth));
2293 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, HorizontalSubsampling));
2294 if ( ASDCP_SUCCESS(result) && ! VerticalSubsampling.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, VerticalSubsampling));
2295 if ( ASDCP_SUCCESS(result) && ! ColorSiting.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, ColorSiting));
2296 if ( ASDCP_SUCCESS(result) && ! ReversedByteOrder.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, ReversedByteOrder));
2297 if ( ASDCP_SUCCESS(result) && ! PaddingBits.empty() ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, PaddingBits));
2298 if ( ASDCP_SUCCESS(result) && ! AlphaSampleDepth.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, AlphaSampleDepth));
2299 if ( ASDCP_SUCCESS(result) && ! BlackRefLevel.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, BlackRefLevel));
2300 if ( ASDCP_SUCCESS(result) && ! WhiteReflevel.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, WhiteReflevel));
2301 if ( ASDCP_SUCCESS(result) && ! ColorRange.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, ColorRange));
2307 CDCIEssenceDescriptor::Copy(const CDCIEssenceDescriptor& rhs)
2309 GenericPictureEssenceDescriptor::Copy(rhs);
2310 ComponentDepth = rhs.ComponentDepth;
2311 HorizontalSubsampling = rhs.HorizontalSubsampling;
2312 VerticalSubsampling = rhs.VerticalSubsampling;
2313 ColorSiting = rhs.ColorSiting;
2314 ReversedByteOrder = rhs.ReversedByteOrder;
2315 PaddingBits = rhs.PaddingBits;
2316 AlphaSampleDepth = rhs.AlphaSampleDepth;
2317 BlackRefLevel = rhs.BlackRefLevel;
2318 WhiteReflevel = rhs.WhiteReflevel;
2319 ColorRange = rhs.ColorRange;
2324 CDCIEssenceDescriptor::Dump(FILE* stream)
2326 char identbuf[IdentBufferLen];
2332 GenericPictureEssenceDescriptor::Dump(stream);
2333 fprintf(stream, " %22s = %d\n", "ComponentDepth", ComponentDepth);
2334 fprintf(stream, " %22s = %d\n", "HorizontalSubsampling", HorizontalSubsampling);
2335 if ( ! VerticalSubsampling.empty() ) {
2336 fprintf(stream, " %22s = %d\n", "VerticalSubsampling", VerticalSubsampling.get());
2338 if ( ! ColorSiting.empty() ) {
2339 fprintf(stream, " %22s = %d\n", "ColorSiting", ColorSiting.get());
2341 if ( ! ReversedByteOrder.empty() ) {
2342 fprintf(stream, " %22s = %d\n", "ReversedByteOrder", ReversedByteOrder.get());
2344 if ( ! PaddingBits.empty() ) {
2345 fprintf(stream, " %22s = %d\n", "PaddingBits", PaddingBits.get());
2347 if ( ! AlphaSampleDepth.empty() ) {
2348 fprintf(stream, " %22s = %d\n", "AlphaSampleDepth", AlphaSampleDepth.get());
2350 if ( ! BlackRefLevel.empty() ) {
2351 fprintf(stream, " %22s = %d\n", "BlackRefLevel", BlackRefLevel.get());
2353 if ( ! WhiteReflevel.empty() ) {
2354 fprintf(stream, " %22s = %d\n", "WhiteReflevel", WhiteReflevel.get());
2356 if ( ! ColorRange.empty() ) {
2357 fprintf(stream, " %22s = %d\n", "ColorRange", ColorRange.get());
2363 CDCIEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
2365 return InterchangeObject::InitFromBuffer(p, l);
2370 CDCIEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2372 return InterchangeObject::WriteToBuffer(Buffer);
2375 //------------------------------------------------------------------------------------------
2376 // MPEG2VideoDescriptor
2380 MPEG2VideoDescriptor::MPEG2VideoDescriptor(const Dictionary*& d) : CDCIEssenceDescriptor(d), m_Dict(d)
2383 m_UL = m_Dict->ul(MDD_MPEG2VideoDescriptor);
2386 MPEG2VideoDescriptor::MPEG2VideoDescriptor(const MPEG2VideoDescriptor& rhs) : CDCIEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
2389 m_UL = m_Dict->ul(MDD_MPEG2VideoDescriptor);
2396 MPEG2VideoDescriptor::InitFromTLVSet(TLVReader& TLVSet)
2399 Result_t result = CDCIEssenceDescriptor::InitFromTLVSet(TLVSet);
2400 if ( ASDCP_SUCCESS(result) ) {
2401 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, SingleSequence));
2402 SingleSequence.set_has_value( result == RESULT_OK );
2404 if ( ASDCP_SUCCESS(result) ) {
2405 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, ConstantBFrames));
2406 ConstantBFrames.set_has_value( result == RESULT_OK );
2408 if ( ASDCP_SUCCESS(result) ) {
2409 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, CodedContentType));
2410 CodedContentType.set_has_value( result == RESULT_OK );
2412 if ( ASDCP_SUCCESS(result) ) {
2413 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, LowDelay));
2414 LowDelay.set_has_value( result == RESULT_OK );
2416 if ( ASDCP_SUCCESS(result) ) {
2417 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, ClosedGOP));
2418 ClosedGOP.set_has_value( result == RESULT_OK );
2420 if ( ASDCP_SUCCESS(result) ) {
2421 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, IdenticalGOP));
2422 IdenticalGOP.set_has_value( result == RESULT_OK );
2424 if ( ASDCP_SUCCESS(result) ) {
2425 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, MaxGOP));
2426 MaxGOP.set_has_value( result == RESULT_OK );
2428 if ( ASDCP_SUCCESS(result) ) {
2429 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, BPictureCount));
2430 BPictureCount.set_has_value( result == RESULT_OK );
2432 if ( ASDCP_SUCCESS(result) ) {
2433 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, BitRate));
2434 BitRate.set_has_value( result == RESULT_OK );
2436 if ( ASDCP_SUCCESS(result) ) {
2437 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, ProfileAndLevel));
2438 ProfileAndLevel.set_has_value( result == RESULT_OK );
2445 MPEG2VideoDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2448 Result_t result = CDCIEssenceDescriptor::WriteToTLVSet(TLVSet);
2449 if ( ASDCP_SUCCESS(result) && ! SingleSequence.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, SingleSequence));
2450 if ( ASDCP_SUCCESS(result) && ! ConstantBFrames.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, ConstantBFrames));
2451 if ( ASDCP_SUCCESS(result) && ! CodedContentType.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, CodedContentType));
2452 if ( ASDCP_SUCCESS(result) && ! LowDelay.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, LowDelay));
2453 if ( ASDCP_SUCCESS(result) && ! ClosedGOP.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, ClosedGOP));
2454 if ( ASDCP_SUCCESS(result) && ! IdenticalGOP.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, IdenticalGOP));
2455 if ( ASDCP_SUCCESS(result) && ! MaxGOP.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, MaxGOP));
2456 if ( ASDCP_SUCCESS(result) && ! BPictureCount.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, BPictureCount));
2457 if ( ASDCP_SUCCESS(result) && ! BitRate.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, BitRate));
2458 if ( ASDCP_SUCCESS(result) && ! ProfileAndLevel.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, ProfileAndLevel));
2464 MPEG2VideoDescriptor::Copy(const MPEG2VideoDescriptor& rhs)
2466 CDCIEssenceDescriptor::Copy(rhs);
2467 SingleSequence = rhs.SingleSequence;
2468 ConstantBFrames = rhs.ConstantBFrames;
2469 CodedContentType = rhs.CodedContentType;
2470 LowDelay = rhs.LowDelay;
2471 ClosedGOP = rhs.ClosedGOP;
2472 IdenticalGOP = rhs.IdenticalGOP;
2473 MaxGOP = rhs.MaxGOP;
2474 BPictureCount = rhs.BPictureCount;
2475 BitRate = rhs.BitRate;
2476 ProfileAndLevel = rhs.ProfileAndLevel;
2481 MPEG2VideoDescriptor::Dump(FILE* stream)
2483 char identbuf[IdentBufferLen];
2489 CDCIEssenceDescriptor::Dump(stream);
2490 if ( ! SingleSequence.empty() ) {
2491 fprintf(stream, " %22s = %d\n", "SingleSequence", SingleSequence.get());
2493 if ( ! ConstantBFrames.empty() ) {
2494 fprintf(stream, " %22s = %d\n", "ConstantBFrames", ConstantBFrames.get());
2496 if ( ! CodedContentType.empty() ) {
2497 fprintf(stream, " %22s = %d\n", "CodedContentType", CodedContentType.get());
2499 if ( ! LowDelay.empty() ) {
2500 fprintf(stream, " %22s = %d\n", "LowDelay", LowDelay.get());
2502 if ( ! ClosedGOP.empty() ) {
2503 fprintf(stream, " %22s = %d\n", "ClosedGOP", ClosedGOP.get());
2505 if ( ! IdenticalGOP.empty() ) {
2506 fprintf(stream, " %22s = %d\n", "IdenticalGOP", IdenticalGOP.get());
2508 if ( ! MaxGOP.empty() ) {
2509 fprintf(stream, " %22s = %d\n", "MaxGOP", MaxGOP.get());
2511 if ( ! BPictureCount.empty() ) {
2512 fprintf(stream, " %22s = %d\n", "BPictureCount", BPictureCount.get());
2514 if ( ! BitRate.empty() ) {
2515 fprintf(stream, " %22s = %d\n", "BitRate", BitRate.get());
2517 if ( ! ProfileAndLevel.empty() ) {
2518 fprintf(stream, " %22s = %d\n", "ProfileAndLevel", ProfileAndLevel.get());
2524 MPEG2VideoDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
2526 return InterchangeObject::InitFromBuffer(p, l);
2531 MPEG2VideoDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2533 return InterchangeObject::WriteToBuffer(Buffer);
2536 //------------------------------------------------------------------------------------------
2541 DMSegment::DMSegment(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), EventStartPosition(0), Duration(0)
2544 m_UL = m_Dict->ul(MDD_DMSegment);
2547 DMSegment::DMSegment(const DMSegment& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2550 m_UL = m_Dict->ul(MDD_DMSegment);
2557 DMSegment::InitFromTLVSet(TLVReader& TLVSet)
2560 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2561 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DMSegment, DataDefinition));
2562 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(DMSegment, EventStartPosition));
2563 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(DMSegment, Duration));
2564 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DMSegment, EventComment));
2565 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DMSegment, DMFramework));
2571 DMSegment::WriteToTLVSet(TLVWriter& TLVSet)
2574 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2575 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DMSegment, DataDefinition));
2576 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(DMSegment, EventStartPosition));
2577 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(DMSegment, Duration));
2578 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DMSegment, EventComment));
2579 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DMSegment, DMFramework));
2585 DMSegment::Copy(const DMSegment& rhs)
2587 InterchangeObject::Copy(rhs);
2588 DataDefinition = rhs.DataDefinition;
2589 EventStartPosition = rhs.EventStartPosition;
2590 Duration = rhs.Duration;
2591 EventComment = rhs.EventComment;
2592 DMFramework = rhs.DMFramework;
2597 DMSegment::Dump(FILE* stream)
2599 char identbuf[IdentBufferLen];
2605 InterchangeObject::Dump(stream);
2606 fprintf(stream, " %22s = %s\n", "DataDefinition", DataDefinition.EncodeString(identbuf, IdentBufferLen));
2607 fprintf(stream, " %22s = %s\n", "EventStartPosition", i64sz(EventStartPosition, identbuf));
2608 fprintf(stream, " %22s = %s\n", "Duration", i64sz(Duration, identbuf));
2609 fprintf(stream, " %22s = %s\n", "EventComment", EventComment.EncodeString(identbuf, IdentBufferLen));
2610 fprintf(stream, " %22s = %s\n", "DMFramework", DMFramework.EncodeString(identbuf, IdentBufferLen));
2615 DMSegment::InitFromBuffer(const byte_t* p, ui32_t l)
2617 return InterchangeObject::InitFromBuffer(p, l);
2622 DMSegment::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2624 return InterchangeObject::WriteToBuffer(Buffer);
2627 //------------------------------------------------------------------------------------------
2628 // CryptographicFramework
2632 CryptographicFramework::CryptographicFramework(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
2635 m_UL = m_Dict->ul(MDD_CryptographicFramework);
2638 CryptographicFramework::CryptographicFramework(const CryptographicFramework& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2641 m_UL = m_Dict->ul(MDD_CryptographicFramework);
2648 CryptographicFramework::InitFromTLVSet(TLVReader& TLVSet)
2651 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2652 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicFramework, ContextSR));
2658 CryptographicFramework::WriteToTLVSet(TLVWriter& TLVSet)
2661 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2662 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicFramework, ContextSR));
2668 CryptographicFramework::Copy(const CryptographicFramework& rhs)
2670 InterchangeObject::Copy(rhs);
2671 ContextSR = rhs.ContextSR;
2676 CryptographicFramework::Dump(FILE* stream)
2678 char identbuf[IdentBufferLen];
2684 InterchangeObject::Dump(stream);
2685 fprintf(stream, " %22s = %s\n", "ContextSR", ContextSR.EncodeString(identbuf, IdentBufferLen));
2690 CryptographicFramework::InitFromBuffer(const byte_t* p, ui32_t l)
2692 return InterchangeObject::InitFromBuffer(p, l);
2697 CryptographicFramework::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2699 return InterchangeObject::WriteToBuffer(Buffer);
2702 //------------------------------------------------------------------------------------------
2703 // CryptographicContext
2707 CryptographicContext::CryptographicContext(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
2710 m_UL = m_Dict->ul(MDD_CryptographicContext);
2713 CryptographicContext::CryptographicContext(const CryptographicContext& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2716 m_UL = m_Dict->ul(MDD_CryptographicContext);
2723 CryptographicContext::InitFromTLVSet(TLVReader& TLVSet)
2726 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2727 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, ContextID));
2728 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, SourceEssenceContainer));
2729 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, CipherAlgorithm));
2730 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, MICAlgorithm));
2731 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, CryptographicKeyID));
2737 CryptographicContext::WriteToTLVSet(TLVWriter& TLVSet)
2740 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2741 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, ContextID));
2742 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, SourceEssenceContainer));
2743 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, CipherAlgorithm));
2744 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, MICAlgorithm));
2745 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, CryptographicKeyID));
2751 CryptographicContext::Copy(const CryptographicContext& rhs)
2753 InterchangeObject::Copy(rhs);
2754 ContextID = rhs.ContextID;
2755 SourceEssenceContainer = rhs.SourceEssenceContainer;
2756 CipherAlgorithm = rhs.CipherAlgorithm;
2757 MICAlgorithm = rhs.MICAlgorithm;
2758 CryptographicKeyID = rhs.CryptographicKeyID;
2763 CryptographicContext::Dump(FILE* stream)
2765 char identbuf[IdentBufferLen];
2771 InterchangeObject::Dump(stream);
2772 fprintf(stream, " %22s = %s\n", "ContextID", ContextID.EncodeString(identbuf, IdentBufferLen));
2773 fprintf(stream, " %22s = %s\n", "SourceEssenceContainer", SourceEssenceContainer.EncodeString(identbuf, IdentBufferLen));
2774 fprintf(stream, " %22s = %s\n", "CipherAlgorithm", CipherAlgorithm.EncodeString(identbuf, IdentBufferLen));
2775 fprintf(stream, " %22s = %s\n", "MICAlgorithm", MICAlgorithm.EncodeString(identbuf, IdentBufferLen));
2776 fprintf(stream, " %22s = %s\n", "CryptographicKeyID", CryptographicKeyID.EncodeString(identbuf, IdentBufferLen));
2781 CryptographicContext::InitFromBuffer(const byte_t* p, ui32_t l)
2783 return InterchangeObject::InitFromBuffer(p, l);
2788 CryptographicContext::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2790 return InterchangeObject::WriteToBuffer(Buffer);
2793 //------------------------------------------------------------------------------------------
2794 // DescriptiveFramework
2798 DescriptiveFramework::DescriptiveFramework(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
2801 m_UL = m_Dict->ul(MDD_DescriptiveFramework);
2804 DescriptiveFramework::DescriptiveFramework(const DescriptiveFramework& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2807 m_UL = m_Dict->ul(MDD_DescriptiveFramework);
2814 DescriptiveFramework::InitFromTLVSet(TLVReader& TLVSet)
2817 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2818 if ( ASDCP_SUCCESS(result) ) {
2819 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(DescriptiveFramework, LinkedDescriptiveFrameworkPlugInId));
2820 LinkedDescriptiveFrameworkPlugInId.set_has_value( result == RESULT_OK );
2827 DescriptiveFramework::WriteToTLVSet(TLVWriter& TLVSet)
2830 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2831 if ( ASDCP_SUCCESS(result) && ! LinkedDescriptiveFrameworkPlugInId.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(DescriptiveFramework, LinkedDescriptiveFrameworkPlugInId));
2837 DescriptiveFramework::Copy(const DescriptiveFramework& rhs)
2839 InterchangeObject::Copy(rhs);
2840 LinkedDescriptiveFrameworkPlugInId = rhs.LinkedDescriptiveFrameworkPlugInId;
2845 DescriptiveFramework::Dump(FILE* stream)
2847 char identbuf[IdentBufferLen];
2853 InterchangeObject::Dump(stream);
2854 if ( ! LinkedDescriptiveFrameworkPlugInId.empty() ) {
2855 fprintf(stream, " %22s = %s\n", "LinkedDescriptiveFrameworkPlugInId", LinkedDescriptiveFrameworkPlugInId.get().EncodeString(identbuf, IdentBufferLen));
2861 DescriptiveFramework::InitFromBuffer(const byte_t* p, ui32_t l)
2863 return InterchangeObject::InitFromBuffer(p, l);
2868 DescriptiveFramework::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2870 return InterchangeObject::WriteToBuffer(Buffer);
2873 //------------------------------------------------------------------------------------------
2874 // DescriptiveObject
2878 DescriptiveObject::DescriptiveObject(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
2881 m_UL = m_Dict->ul(MDD_DescriptiveObject);
2884 DescriptiveObject::DescriptiveObject(const DescriptiveObject& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2887 m_UL = m_Dict->ul(MDD_DescriptiveObject);
2894 DescriptiveObject::InitFromTLVSet(TLVReader& TLVSet)
2897 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2898 if ( ASDCP_SUCCESS(result) ) {
2899 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(DescriptiveObject, LinkedDescriptiveObjectPlugInId));
2900 LinkedDescriptiveObjectPlugInId.set_has_value( result == RESULT_OK );
2907 DescriptiveObject::WriteToTLVSet(TLVWriter& TLVSet)
2910 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2911 if ( ASDCP_SUCCESS(result) && ! LinkedDescriptiveObjectPlugInId.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(DescriptiveObject, LinkedDescriptiveObjectPlugInId));
2917 DescriptiveObject::Copy(const DescriptiveObject& rhs)
2919 InterchangeObject::Copy(rhs);
2920 LinkedDescriptiveObjectPlugInId = rhs.LinkedDescriptiveObjectPlugInId;
2925 DescriptiveObject::Dump(FILE* stream)
2927 char identbuf[IdentBufferLen];
2933 InterchangeObject::Dump(stream);
2934 if ( ! LinkedDescriptiveObjectPlugInId.empty() ) {
2935 fprintf(stream, " %22s = %s\n", "LinkedDescriptiveObjectPlugInId", LinkedDescriptiveObjectPlugInId.get().EncodeString(identbuf, IdentBufferLen));
2941 DescriptiveObject::InitFromBuffer(const byte_t* p, ui32_t l)
2943 return InterchangeObject::InitFromBuffer(p, l);
2948 DescriptiveObject::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2950 return InterchangeObject::WriteToBuffer(Buffer);
2953 //------------------------------------------------------------------------------------------
2954 // GenericDataEssenceDescriptor
2958 GenericDataEssenceDescriptor::GenericDataEssenceDescriptor(const Dictionary*& d) : FileDescriptor(d), m_Dict(d)
2961 m_UL = m_Dict->ul(MDD_GenericDataEssenceDescriptor);
2964 GenericDataEssenceDescriptor::GenericDataEssenceDescriptor(const GenericDataEssenceDescriptor& rhs) : FileDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
2967 m_UL = m_Dict->ul(MDD_GenericDataEssenceDescriptor);
2974 GenericDataEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
2977 Result_t result = FileDescriptor::InitFromTLVSet(TLVSet);
2978 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericDataEssenceDescriptor, DataEssenceCoding));
2984 GenericDataEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2987 Result_t result = FileDescriptor::WriteToTLVSet(TLVSet);
2988 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericDataEssenceDescriptor, DataEssenceCoding));
2994 GenericDataEssenceDescriptor::Copy(const GenericDataEssenceDescriptor& rhs)
2996 FileDescriptor::Copy(rhs);
2997 DataEssenceCoding = rhs.DataEssenceCoding;
3002 GenericDataEssenceDescriptor::Dump(FILE* stream)
3004 char identbuf[IdentBufferLen];
3010 FileDescriptor::Dump(stream);
3011 fprintf(stream, " %22s = %s\n", "DataEssenceCoding", DataEssenceCoding.EncodeString(identbuf, IdentBufferLen));
3016 GenericDataEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3018 return InterchangeObject::InitFromBuffer(p, l);
3023 GenericDataEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3025 return InterchangeObject::WriteToBuffer(Buffer);
3028 //------------------------------------------------------------------------------------------
3029 // TimedTextDescriptor
3033 TimedTextDescriptor::TimedTextDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d)
3036 m_UL = m_Dict->ul(MDD_TimedTextDescriptor);
3039 TimedTextDescriptor::TimedTextDescriptor(const TimedTextDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3042 m_UL = m_Dict->ul(MDD_TimedTextDescriptor);
3049 TimedTextDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3052 Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet);
3053 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, ResourceID));
3054 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, UCSEncoding));
3055 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, NamespaceURI));
3056 if ( ASDCP_SUCCESS(result) ) {
3057 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(TimedTextDescriptor, RFC5646LanguageTagList));
3058 RFC5646LanguageTagList.set_has_value( result == RESULT_OK );
3065 TimedTextDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3068 Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet);
3069 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, ResourceID));
3070 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, UCSEncoding));
3071 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, NamespaceURI));
3072 if ( ASDCP_SUCCESS(result) && ! RFC5646LanguageTagList.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(TimedTextDescriptor, RFC5646LanguageTagList));
3078 TimedTextDescriptor::Copy(const TimedTextDescriptor& rhs)
3080 GenericDataEssenceDescriptor::Copy(rhs);
3081 ResourceID = rhs.ResourceID;
3082 UCSEncoding = rhs.UCSEncoding;
3083 NamespaceURI = rhs.NamespaceURI;
3084 RFC5646LanguageTagList = rhs.RFC5646LanguageTagList;
3089 TimedTextDescriptor::Dump(FILE* stream)
3091 char identbuf[IdentBufferLen];
3097 GenericDataEssenceDescriptor::Dump(stream);
3098 fprintf(stream, " %22s = %s\n", "ResourceID", ResourceID.EncodeString(identbuf, IdentBufferLen));
3099 fprintf(stream, " %22s = %s\n", "UCSEncoding", UCSEncoding.EncodeString(identbuf, IdentBufferLen));
3100 fprintf(stream, " %22s = %s\n", "NamespaceURI", NamespaceURI.EncodeString(identbuf, IdentBufferLen));
3101 if ( ! RFC5646LanguageTagList.empty() ) {
3102 fprintf(stream, " %22s = %s\n", "RFC5646LanguageTagList", RFC5646LanguageTagList.get().EncodeString(identbuf, IdentBufferLen));
3108 TimedTextDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3110 return InterchangeObject::InitFromBuffer(p, l);
3115 TimedTextDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3117 return InterchangeObject::WriteToBuffer(Buffer);
3120 //------------------------------------------------------------------------------------------
3121 // TimedTextResourceSubDescriptor
3125 TimedTextResourceSubDescriptor::TimedTextResourceSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), EssenceStreamID(0)
3128 m_UL = m_Dict->ul(MDD_TimedTextResourceSubDescriptor);
3131 TimedTextResourceSubDescriptor::TimedTextResourceSubDescriptor(const TimedTextResourceSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3134 m_UL = m_Dict->ul(MDD_TimedTextResourceSubDescriptor);
3141 TimedTextResourceSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3144 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3145 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextResourceSubDescriptor, AncillaryResourceID));
3146 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextResourceSubDescriptor, MIMEMediaType));
3147 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(TimedTextResourceSubDescriptor, EssenceStreamID));
3153 TimedTextResourceSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3156 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3157 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextResourceSubDescriptor, AncillaryResourceID));
3158 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextResourceSubDescriptor, MIMEMediaType));
3159 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(TimedTextResourceSubDescriptor, EssenceStreamID));
3165 TimedTextResourceSubDescriptor::Copy(const TimedTextResourceSubDescriptor& rhs)
3167 InterchangeObject::Copy(rhs);
3168 AncillaryResourceID = rhs.AncillaryResourceID;
3169 MIMEMediaType = rhs.MIMEMediaType;
3170 EssenceStreamID = rhs.EssenceStreamID;
3175 TimedTextResourceSubDescriptor::Dump(FILE* stream)
3177 char identbuf[IdentBufferLen];
3183 InterchangeObject::Dump(stream);
3184 fprintf(stream, " %22s = %s\n", "AncillaryResourceID", AncillaryResourceID.EncodeString(identbuf, IdentBufferLen));
3185 fprintf(stream, " %22s = %s\n", "MIMEMediaType", MIMEMediaType.EncodeString(identbuf, IdentBufferLen));
3186 fprintf(stream, " %22s = %d\n", "EssenceStreamID", EssenceStreamID);
3191 TimedTextResourceSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3193 return InterchangeObject::InitFromBuffer(p, l);
3198 TimedTextResourceSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3200 return InterchangeObject::WriteToBuffer(Buffer);
3203 //------------------------------------------------------------------------------------------
3204 // StereoscopicPictureSubDescriptor
3208 StereoscopicPictureSubDescriptor::StereoscopicPictureSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
3211 m_UL = m_Dict->ul(MDD_StereoscopicPictureSubDescriptor);
3214 StereoscopicPictureSubDescriptor::StereoscopicPictureSubDescriptor(const StereoscopicPictureSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3217 m_UL = m_Dict->ul(MDD_StereoscopicPictureSubDescriptor);
3224 StereoscopicPictureSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3227 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3233 StereoscopicPictureSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3236 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3242 StereoscopicPictureSubDescriptor::Copy(const StereoscopicPictureSubDescriptor& rhs)
3244 InterchangeObject::Copy(rhs);
3249 StereoscopicPictureSubDescriptor::Dump(FILE* stream)
3251 char identbuf[IdentBufferLen];
3257 InterchangeObject::Dump(stream);
3262 StereoscopicPictureSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3264 return InterchangeObject::InitFromBuffer(p, l);
3269 StereoscopicPictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3271 return InterchangeObject::WriteToBuffer(Buffer);
3274 //------------------------------------------------------------------------------------------
3275 // ContainerConstraintSubDescriptor
3279 ContainerConstraintSubDescriptor::ContainerConstraintSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
3282 m_UL = m_Dict->ul(MDD_ContainerConstraintSubDescriptor);
3285 ContainerConstraintSubDescriptor::ContainerConstraintSubDescriptor(const ContainerConstraintSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3288 m_UL = m_Dict->ul(MDD_ContainerConstraintSubDescriptor);
3295 ContainerConstraintSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3298 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3304 ContainerConstraintSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3307 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3313 ContainerConstraintSubDescriptor::Copy(const ContainerConstraintSubDescriptor& rhs)
3315 InterchangeObject::Copy(rhs);
3320 ContainerConstraintSubDescriptor::Dump(FILE* stream)
3322 char identbuf[IdentBufferLen];
3328 InterchangeObject::Dump(stream);
3333 ContainerConstraintSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3335 return InterchangeObject::InitFromBuffer(p, l);
3340 ContainerConstraintSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3342 return InterchangeObject::WriteToBuffer(Buffer);
3345 //------------------------------------------------------------------------------------------
3350 NetworkLocator::NetworkLocator(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
3353 m_UL = m_Dict->ul(MDD_NetworkLocator);
3356 NetworkLocator::NetworkLocator(const NetworkLocator& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3359 m_UL = m_Dict->ul(MDD_NetworkLocator);
3366 NetworkLocator::InitFromTLVSet(TLVReader& TLVSet)
3369 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3370 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(NetworkLocator, URLString));
3376 NetworkLocator::WriteToTLVSet(TLVWriter& TLVSet)
3379 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3380 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(NetworkLocator, URLString));
3386 NetworkLocator::Copy(const NetworkLocator& rhs)
3388 InterchangeObject::Copy(rhs);
3389 URLString = rhs.URLString;
3394 NetworkLocator::Dump(FILE* stream)
3396 char identbuf[IdentBufferLen];
3402 InterchangeObject::Dump(stream);
3403 fprintf(stream, " %22s = %s\n", "URLString", URLString.EncodeString(identbuf, IdentBufferLen));
3408 NetworkLocator::InitFromBuffer(const byte_t* p, ui32_t l)
3410 return InterchangeObject::InitFromBuffer(p, l);
3415 NetworkLocator::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3417 return InterchangeObject::WriteToBuffer(Buffer);
3420 //------------------------------------------------------------------------------------------
3421 // MCALabelSubDescriptor
3425 MCALabelSubDescriptor::MCALabelSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
3428 m_UL = m_Dict->ul(MDD_MCALabelSubDescriptor);
3431 MCALabelSubDescriptor::MCALabelSubDescriptor(const MCALabelSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3434 m_UL = m_Dict->ul(MDD_MCALabelSubDescriptor);
3441 MCALabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3444 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3445 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(MCALabelSubDescriptor, MCALabelDictionaryID));
3446 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(MCALabelSubDescriptor, MCALinkID));
3447 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(MCALabelSubDescriptor, MCATagSymbol));
3448 if ( ASDCP_SUCCESS(result) ) {
3449 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCATagName));
3450 MCATagName.set_has_value( result == RESULT_OK );
3452 if ( ASDCP_SUCCESS(result) ) {
3453 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAChannelID));
3454 MCAChannelID.set_has_value( result == RESULT_OK );
3456 if ( ASDCP_SUCCESS(result) ) {
3457 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, RFC5646SpokenLanguage));
3458 RFC5646SpokenLanguage.set_has_value( result == RESULT_OK );
3460 if ( ASDCP_SUCCESS(result) ) {
3461 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCATitle));
3462 MCATitle.set_has_value( result == RESULT_OK );
3464 if ( ASDCP_SUCCESS(result) ) {
3465 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCATitleVersion));
3466 MCATitleVersion.set_has_value( result == RESULT_OK );
3468 if ( ASDCP_SUCCESS(result) ) {
3469 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCATitleSubVersion));
3470 MCATitleSubVersion.set_has_value( result == RESULT_OK );
3472 if ( ASDCP_SUCCESS(result) ) {
3473 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAEpisode));
3474 MCAEpisode.set_has_value( result == RESULT_OK );
3476 if ( ASDCP_SUCCESS(result) ) {
3477 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAPartitionKind));
3478 MCAPartitionKind.set_has_value( result == RESULT_OK );
3480 if ( ASDCP_SUCCESS(result) ) {
3481 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAPartitionNumber));
3482 MCAPartitionNumber.set_has_value( result == RESULT_OK );
3484 if ( ASDCP_SUCCESS(result) ) {
3485 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAAudioContentKind));
3486 MCAAudioContentKind.set_has_value( result == RESULT_OK );
3488 if ( ASDCP_SUCCESS(result) ) {
3489 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAAudioElementKind));
3490 MCAAudioElementKind.set_has_value( result == RESULT_OK );
3497 MCALabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3500 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3501 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(MCALabelSubDescriptor, MCALabelDictionaryID));
3502 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(MCALabelSubDescriptor, MCALinkID));
3503 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(MCALabelSubDescriptor, MCATagSymbol));
3504 if ( ASDCP_SUCCESS(result) && ! MCATagName.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCATagName));
3505 if ( ASDCP_SUCCESS(result) && ! MCAChannelID.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAChannelID));
3506 if ( ASDCP_SUCCESS(result) && ! RFC5646SpokenLanguage.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, RFC5646SpokenLanguage));
3507 if ( ASDCP_SUCCESS(result) && ! MCATitle.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCATitle));
3508 if ( ASDCP_SUCCESS(result) && ! MCATitleVersion.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCATitleVersion));
3509 if ( ASDCP_SUCCESS(result) && ! MCATitleSubVersion.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCATitleSubVersion));
3510 if ( ASDCP_SUCCESS(result) && ! MCAEpisode.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAEpisode));
3511 if ( ASDCP_SUCCESS(result) && ! MCAPartitionKind.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAPartitionKind));
3512 if ( ASDCP_SUCCESS(result) && ! MCAPartitionNumber.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAPartitionNumber));
3513 if ( ASDCP_SUCCESS(result) && ! MCAAudioContentKind.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAAudioContentKind));
3514 if ( ASDCP_SUCCESS(result) && ! MCAAudioElementKind.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAAudioElementKind));
3520 MCALabelSubDescriptor::Copy(const MCALabelSubDescriptor& rhs)
3522 InterchangeObject::Copy(rhs);
3523 MCALabelDictionaryID = rhs.MCALabelDictionaryID;
3524 MCALinkID = rhs.MCALinkID;
3525 MCATagSymbol = rhs.MCATagSymbol;
3526 MCATagName = rhs.MCATagName;
3527 MCAChannelID = rhs.MCAChannelID;
3528 RFC5646SpokenLanguage = rhs.RFC5646SpokenLanguage;
3529 MCATitle = rhs.MCATitle;
3530 MCATitleVersion = rhs.MCATitleVersion;
3531 MCATitleSubVersion = rhs.MCATitleSubVersion;
3532 MCAEpisode = rhs.MCAEpisode;
3533 MCAPartitionKind = rhs.MCAPartitionKind;
3534 MCAPartitionNumber = rhs.MCAPartitionNumber;
3535 MCAAudioContentKind = rhs.MCAAudioContentKind;
3536 MCAAudioElementKind = rhs.MCAAudioElementKind;
3541 MCALabelSubDescriptor::Dump(FILE* stream)
3543 char identbuf[IdentBufferLen];
3549 InterchangeObject::Dump(stream);
3550 fprintf(stream, " %22s = %s\n", "MCALabelDictionaryID", MCALabelDictionaryID.EncodeString(identbuf, IdentBufferLen));
3551 fprintf(stream, " %22s = %s\n", "MCALinkID", MCALinkID.EncodeString(identbuf, IdentBufferLen));
3552 fprintf(stream, " %22s = %s\n", "MCATagSymbol", MCATagSymbol.EncodeString(identbuf, IdentBufferLen));
3553 if ( ! MCATagName.empty() ) {
3554 fprintf(stream, " %22s = %s\n", "MCATagName", MCATagName.get().EncodeString(identbuf, IdentBufferLen));
3556 if ( ! MCAChannelID.empty() ) {
3557 fprintf(stream, " %22s = %d\n", "MCAChannelID", MCAChannelID.get());
3559 if ( ! RFC5646SpokenLanguage.empty() ) {
3560 fprintf(stream, " %22s = %s\n", "RFC5646SpokenLanguage", RFC5646SpokenLanguage.get().EncodeString(identbuf, IdentBufferLen));
3562 if ( ! MCATitle.empty() ) {
3563 fprintf(stream, " %22s = %s\n", "MCATitle", MCATitle.get().EncodeString(identbuf, IdentBufferLen));
3565 if ( ! MCATitleVersion.empty() ) {
3566 fprintf(stream, " %22s = %s\n", "MCATitleVersion", MCATitleVersion.get().EncodeString(identbuf, IdentBufferLen));
3568 if ( ! MCATitleSubVersion.empty() ) {
3569 fprintf(stream, " %22s = %s\n", "MCATitleSubVersion", MCATitleSubVersion.get().EncodeString(identbuf, IdentBufferLen));
3571 if ( ! MCAEpisode.empty() ) {
3572 fprintf(stream, " %22s = %s\n", "MCAEpisode", MCAEpisode.get().EncodeString(identbuf, IdentBufferLen));
3574 if ( ! MCAPartitionKind.empty() ) {
3575 fprintf(stream, " %22s = %s\n", "MCAPartitionKind", MCAPartitionKind.get().EncodeString(identbuf, IdentBufferLen));
3577 if ( ! MCAPartitionNumber.empty() ) {
3578 fprintf(stream, " %22s = %s\n", "MCAPartitionNumber", MCAPartitionNumber.get().EncodeString(identbuf, IdentBufferLen));
3580 if ( ! MCAAudioContentKind.empty() ) {
3581 fprintf(stream, " %22s = %s\n", "MCAAudioContentKind", MCAAudioContentKind.get().EncodeString(identbuf, IdentBufferLen));
3583 if ( ! MCAAudioElementKind.empty() ) {
3584 fprintf(stream, " %22s = %s\n", "MCAAudioElementKind", MCAAudioElementKind.get().EncodeString(identbuf, IdentBufferLen));
3590 MCALabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3592 return InterchangeObject::InitFromBuffer(p, l);
3597 MCALabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3599 return InterchangeObject::WriteToBuffer(Buffer);
3602 //------------------------------------------------------------------------------------------
3603 // AudioChannelLabelSubDescriptor
3607 AudioChannelLabelSubDescriptor::AudioChannelLabelSubDescriptor(const Dictionary*& d) : MCALabelSubDescriptor(d), m_Dict(d)
3610 m_UL = m_Dict->ul(MDD_AudioChannelLabelSubDescriptor);
3613 AudioChannelLabelSubDescriptor::AudioChannelLabelSubDescriptor(const AudioChannelLabelSubDescriptor& rhs) : MCALabelSubDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3616 m_UL = m_Dict->ul(MDD_AudioChannelLabelSubDescriptor);
3623 AudioChannelLabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3626 Result_t result = MCALabelSubDescriptor::InitFromTLVSet(TLVSet);
3627 if ( ASDCP_SUCCESS(result) ) {
3628 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(AudioChannelLabelSubDescriptor, SoundfieldGroupLinkID));
3629 SoundfieldGroupLinkID.set_has_value( result == RESULT_OK );
3636 AudioChannelLabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3639 Result_t result = MCALabelSubDescriptor::WriteToTLVSet(TLVSet);
3640 if ( ASDCP_SUCCESS(result) && ! SoundfieldGroupLinkID.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(AudioChannelLabelSubDescriptor, SoundfieldGroupLinkID));
3646 AudioChannelLabelSubDescriptor::Copy(const AudioChannelLabelSubDescriptor& rhs)
3648 MCALabelSubDescriptor::Copy(rhs);
3649 SoundfieldGroupLinkID = rhs.SoundfieldGroupLinkID;
3654 AudioChannelLabelSubDescriptor::Dump(FILE* stream)
3656 char identbuf[IdentBufferLen];
3662 MCALabelSubDescriptor::Dump(stream);
3663 if ( ! SoundfieldGroupLinkID.empty() ) {
3664 fprintf(stream, " %22s = %s\n", "SoundfieldGroupLinkID", SoundfieldGroupLinkID.get().EncodeString(identbuf, IdentBufferLen));
3670 AudioChannelLabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3672 return InterchangeObject::InitFromBuffer(p, l);
3677 AudioChannelLabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3679 return InterchangeObject::WriteToBuffer(Buffer);
3682 //------------------------------------------------------------------------------------------
3683 // SoundfieldGroupLabelSubDescriptor
3687 SoundfieldGroupLabelSubDescriptor::SoundfieldGroupLabelSubDescriptor(const Dictionary*& d) : MCALabelSubDescriptor(d), m_Dict(d)
3690 m_UL = m_Dict->ul(MDD_SoundfieldGroupLabelSubDescriptor);
3693 SoundfieldGroupLabelSubDescriptor::SoundfieldGroupLabelSubDescriptor(const SoundfieldGroupLabelSubDescriptor& rhs) : MCALabelSubDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3696 m_UL = m_Dict->ul(MDD_SoundfieldGroupLabelSubDescriptor);
3703 SoundfieldGroupLabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3706 Result_t result = MCALabelSubDescriptor::InitFromTLVSet(TLVSet);
3707 if ( ASDCP_SUCCESS(result) ) {
3708 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(SoundfieldGroupLabelSubDescriptor, GroupOfSoundfieldGroupsLinkID));
3715 SoundfieldGroupLabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3718 Result_t result = MCALabelSubDescriptor::WriteToTLVSet(TLVSet);
3719 if ( ASDCP_SUCCESS(result) && ! GroupOfSoundfieldGroupsLinkID.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(SoundfieldGroupLabelSubDescriptor, GroupOfSoundfieldGroupsLinkID));
3725 SoundfieldGroupLabelSubDescriptor::Copy(const SoundfieldGroupLabelSubDescriptor& rhs)
3727 MCALabelSubDescriptor::Copy(rhs);
3728 GroupOfSoundfieldGroupsLinkID = rhs.GroupOfSoundfieldGroupsLinkID;
3733 SoundfieldGroupLabelSubDescriptor::Dump(FILE* stream)
3735 char identbuf[IdentBufferLen];
3741 MCALabelSubDescriptor::Dump(stream);
3742 if ( ! GroupOfSoundfieldGroupsLinkID.empty() ) {
3743 fprintf(stream, " %22s:\n", "GroupOfSoundfieldGroupsLinkID");
3744 GroupOfSoundfieldGroupsLinkID.get().Dump(stream);
3750 SoundfieldGroupLabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3752 return InterchangeObject::InitFromBuffer(p, l);
3757 SoundfieldGroupLabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3759 return InterchangeObject::WriteToBuffer(Buffer);
3762 //------------------------------------------------------------------------------------------
3763 // GroupOfSoundfieldGroupsLabelSubDescriptor
3767 GroupOfSoundfieldGroupsLabelSubDescriptor::GroupOfSoundfieldGroupsLabelSubDescriptor(const Dictionary*& d) : MCALabelSubDescriptor(d), m_Dict(d)
3770 m_UL = m_Dict->ul(MDD_GroupOfSoundfieldGroupsLabelSubDescriptor);
3773 GroupOfSoundfieldGroupsLabelSubDescriptor::GroupOfSoundfieldGroupsLabelSubDescriptor(const GroupOfSoundfieldGroupsLabelSubDescriptor& rhs) : MCALabelSubDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3776 m_UL = m_Dict->ul(MDD_GroupOfSoundfieldGroupsLabelSubDescriptor);
3783 GroupOfSoundfieldGroupsLabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3786 Result_t result = MCALabelSubDescriptor::InitFromTLVSet(TLVSet);
3792 GroupOfSoundfieldGroupsLabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3795 Result_t result = MCALabelSubDescriptor::WriteToTLVSet(TLVSet);
3801 GroupOfSoundfieldGroupsLabelSubDescriptor::Copy(const GroupOfSoundfieldGroupsLabelSubDescriptor& rhs)
3803 MCALabelSubDescriptor::Copy(rhs);
3808 GroupOfSoundfieldGroupsLabelSubDescriptor::Dump(FILE* stream)
3810 char identbuf[IdentBufferLen];
3816 MCALabelSubDescriptor::Dump(stream);
3821 GroupOfSoundfieldGroupsLabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3823 return InterchangeObject::InitFromBuffer(p, l);
3828 GroupOfSoundfieldGroupsLabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3830 return InterchangeObject::WriteToBuffer(Buffer);
3833 //------------------------------------------------------------------------------------------
3838 DCDataDescriptor::DCDataDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d)
3841 m_UL = m_Dict->ul(MDD_DCDataDescriptor);
3844 DCDataDescriptor::DCDataDescriptor(const DCDataDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3847 m_UL = m_Dict->ul(MDD_DCDataDescriptor);
3854 DCDataDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3857 Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet);
3863 DCDataDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3866 Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet);
3872 DCDataDescriptor::Copy(const DCDataDescriptor& rhs)
3874 GenericDataEssenceDescriptor::Copy(rhs);
3879 DCDataDescriptor::Dump(FILE* stream)
3881 char identbuf[IdentBufferLen];
3887 GenericDataEssenceDescriptor::Dump(stream);
3892 DCDataDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3894 return InterchangeObject::InitFromBuffer(p, l);
3899 DCDataDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3901 return InterchangeObject::WriteToBuffer(Buffer);
3904 //------------------------------------------------------------------------------------------
3905 // PrivateDCDataDescriptor
3909 PrivateDCDataDescriptor::PrivateDCDataDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d)
3912 m_UL = m_Dict->ul(MDD_PrivateDCDataDescriptor);
3915 PrivateDCDataDescriptor::PrivateDCDataDescriptor(const PrivateDCDataDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3918 m_UL = m_Dict->ul(MDD_PrivateDCDataDescriptor);
3925 PrivateDCDataDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3928 Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet);
3934 PrivateDCDataDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3937 Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet);
3943 PrivateDCDataDescriptor::Copy(const PrivateDCDataDescriptor& rhs)
3945 GenericDataEssenceDescriptor::Copy(rhs);
3950 PrivateDCDataDescriptor::Dump(FILE* stream)
3952 char identbuf[IdentBufferLen];
3958 GenericDataEssenceDescriptor::Dump(stream);
3963 PrivateDCDataDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3965 return InterchangeObject::InitFromBuffer(p, l);
3970 PrivateDCDataDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3972 return InterchangeObject::WriteToBuffer(Buffer);
3975 //------------------------------------------------------------------------------------------
3976 // DolbyAtmosSubDescriptor
3980 DolbyAtmosSubDescriptor::DolbyAtmosSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), FirstFrame(0), MaxChannelCount(0), MaxObjectCount(0), AtmosVersion(0)
3983 m_UL = m_Dict->ul(MDD_DolbyAtmosSubDescriptor);
3986 DolbyAtmosSubDescriptor::DolbyAtmosSubDescriptor(const DolbyAtmosSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3989 m_UL = m_Dict->ul(MDD_DolbyAtmosSubDescriptor);
3996 DolbyAtmosSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3999 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
4000 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, AtmosID));
4001 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, FirstFrame));
4002 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, MaxChannelCount));
4003 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, MaxObjectCount));
4004 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, AtmosVersion));
4010 DolbyAtmosSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
4013 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
4014 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, AtmosID));
4015 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, FirstFrame));
4016 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, MaxChannelCount));
4017 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, MaxObjectCount));
4018 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, AtmosVersion));
4024 DolbyAtmosSubDescriptor::Copy(const DolbyAtmosSubDescriptor& rhs)
4026 InterchangeObject::Copy(rhs);
4027 AtmosID = rhs.AtmosID;
4028 FirstFrame = rhs.FirstFrame;
4029 MaxChannelCount = rhs.MaxChannelCount;
4030 MaxObjectCount = rhs.MaxObjectCount;
4031 AtmosVersion = rhs.AtmosVersion;
4036 DolbyAtmosSubDescriptor::Dump(FILE* stream)
4038 char identbuf[IdentBufferLen];
4044 InterchangeObject::Dump(stream);
4045 fprintf(stream, " %22s = %s\n", "AtmosID", AtmosID.EncodeString(identbuf, IdentBufferLen));
4046 fprintf(stream, " %22s = %d\n", "FirstFrame", FirstFrame);
4047 fprintf(stream, " %22s = %d\n", "MaxChannelCount", MaxChannelCount);
4048 fprintf(stream, " %22s = %d\n", "MaxObjectCount", MaxObjectCount);
4049 fprintf(stream, " %22s = %d\n", "AtmosVersion", AtmosVersion);
4054 DolbyAtmosSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
4056 return InterchangeObject::InitFromBuffer(p, l);
4061 DolbyAtmosSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4063 return InterchangeObject::WriteToBuffer(Buffer);
4066 //------------------------------------------------------------------------------------------
4067 // ACESPictureSubDescriptor
4071 ACESPictureSubDescriptor::ACESPictureSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
4074 m_UL = m_Dict->ul(MDD_ACESPictureSubDescriptor);
4077 ACESPictureSubDescriptor::ACESPictureSubDescriptor(const ACESPictureSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
4080 m_UL = m_Dict->ul(MDD_ACESPictureSubDescriptor);
4087 ACESPictureSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
4090 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
4091 if ( ASDCP_SUCCESS(result) ) {
4092 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(ACESPictureSubDescriptor, ACESAuthoringInformation));
4093 ACESAuthoringInformation.set_has_value( result == RESULT_OK );
4095 if ( ASDCP_SUCCESS(result) ) {
4096 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayPrimaries));
4097 ACESMasteringDisplayPrimaries.set_has_value( result == RESULT_OK );
4099 if ( ASDCP_SUCCESS(result) ) {
4100 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayWhitePointChromaticity));
4101 ACESMasteringDisplayWhitePointChromaticity.set_has_value( result == RESULT_OK );
4103 if ( ASDCP_SUCCESS(result) ) {
4104 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayMaximumLuminance));
4105 ACESMasteringDisplayMaximumLuminance.set_has_value( result == RESULT_OK );
4107 if ( ASDCP_SUCCESS(result) ) {
4108 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayMinimumLuminance));
4109 ACESMasteringDisplayMinimumLuminance.set_has_value( result == RESULT_OK );
4116 ACESPictureSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
4119 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
4120 if ( ASDCP_SUCCESS(result) && ! ACESAuthoringInformation.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(ACESPictureSubDescriptor, ACESAuthoringInformation));
4121 if ( ASDCP_SUCCESS(result) && ! ACESMasteringDisplayPrimaries.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayPrimaries));
4122 if ( ASDCP_SUCCESS(result) && ! ACESMasteringDisplayWhitePointChromaticity.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayWhitePointChromaticity));
4123 if ( ASDCP_SUCCESS(result) && ! ACESMasteringDisplayMaximumLuminance.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayMaximumLuminance));
4124 if ( ASDCP_SUCCESS(result) && ! ACESMasteringDisplayMinimumLuminance.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(ACESPictureSubDescriptor, ACESMasteringDisplayMinimumLuminance));
4130 ACESPictureSubDescriptor::Copy(const ACESPictureSubDescriptor& rhs)
4132 InterchangeObject::Copy(rhs);
4133 ACESAuthoringInformation = rhs.ACESAuthoringInformation;
4134 ACESMasteringDisplayPrimaries = rhs.ACESMasteringDisplayPrimaries;
4135 ACESMasteringDisplayWhitePointChromaticity = rhs.ACESMasteringDisplayWhitePointChromaticity;
4136 ACESMasteringDisplayMaximumLuminance = rhs.ACESMasteringDisplayMaximumLuminance;
4137 ACESMasteringDisplayMinimumLuminance = rhs.ACESMasteringDisplayMinimumLuminance;
4142 ACESPictureSubDescriptor::Dump(FILE* stream)
4144 char identbuf[IdentBufferLen];
4150 InterchangeObject::Dump(stream);
4151 if ( ! ACESAuthoringInformation.empty() ) {
4152 fprintf(stream, " %22s = %s\n", "ACESAuthoringInformation", ACESAuthoringInformation.get().EncodeString(identbuf, IdentBufferLen));
4154 if ( ! ACESMasteringDisplayPrimaries.empty() ) {
4155 fprintf(stream, " %22s = %s\n", "ACESMasteringDisplayPrimaries", ACESMasteringDisplayPrimaries.get().EncodeString(identbuf, IdentBufferLen));
4157 if ( ! ACESMasteringDisplayWhitePointChromaticity.empty() ) {
4158 fprintf(stream, " %22s = %s\n", "ACESMasteringDisplayWhitePointChromaticity", ACESMasteringDisplayWhitePointChromaticity.get().EncodeString(identbuf, IdentBufferLen));
4160 if ( ! ACESMasteringDisplayMaximumLuminance.empty() ) {
4161 fprintf(stream, " %22s = %d\n", "ACESMasteringDisplayMaximumLuminance", ACESMasteringDisplayMaximumLuminance.get());
4163 if ( ! ACESMasteringDisplayMinimumLuminance.empty() ) {
4164 fprintf(stream, " %22s = %d\n", "ACESMasteringDisplayMinimumLuminance", ACESMasteringDisplayMinimumLuminance.get());
4170 ACESPictureSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
4172 return InterchangeObject::InitFromBuffer(p, l);
4177 ACESPictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4179 return InterchangeObject::WriteToBuffer(Buffer);
4182 //------------------------------------------------------------------------------------------
4183 // TargetFrameSubDescriptor
4187 TargetFrameSubDescriptor::TargetFrameSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), TargetFrameIndex(0), TargetFrameComponentMaxRef(0), TargetFrameComponentMinRef(0), TargetFrameEssenceStreamID(0)
4190 m_UL = m_Dict->ul(MDD_TargetFrameSubDescriptor);
4193 TargetFrameSubDescriptor::TargetFrameSubDescriptor(const TargetFrameSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
4196 m_UL = m_Dict->ul(MDD_TargetFrameSubDescriptor);
4203 TargetFrameSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
4206 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
4207 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameAncillaryResourceID));
4208 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TargetFrameSubDescriptor, MediaType));
4209 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameIndex));
4210 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameTransferCharacteristic));
4211 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameColorPrimaries));
4212 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameComponentMaxRef));
4213 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameComponentMinRef));
4214 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(TargetFrameSubDescriptor, TargetFrameEssenceStreamID));
4215 if ( ASDCP_SUCCESS(result) ) {
4216 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(TargetFrameSubDescriptor, ACESPictureSubDescriptorInstanceID));
4217 ACESPictureSubDescriptorInstanceID.set_has_value( result == RESULT_OK );
4219 if ( ASDCP_SUCCESS(result) ) {
4220 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(TargetFrameSubDescriptor, TargetFrameViewingEnvironment));
4221 TargetFrameViewingEnvironment.set_has_value( result == RESULT_OK );
4228 TargetFrameSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
4231 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
4232 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameAncillaryResourceID));
4233 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, MediaType));
4234 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameIndex));
4235 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameTransferCharacteristic));
4236 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameColorPrimaries));
4237 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameComponentMaxRef));
4238 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameComponentMinRef));
4239 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(TargetFrameSubDescriptor, TargetFrameEssenceStreamID));
4240 if ( ASDCP_SUCCESS(result) && ! ACESPictureSubDescriptorInstanceID.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(TargetFrameSubDescriptor, ACESPictureSubDescriptorInstanceID));
4241 if ( ASDCP_SUCCESS(result) && ! TargetFrameViewingEnvironment.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(TargetFrameSubDescriptor, TargetFrameViewingEnvironment));
4247 TargetFrameSubDescriptor::Copy(const TargetFrameSubDescriptor& rhs)
4249 InterchangeObject::Copy(rhs);
4250 TargetFrameAncillaryResourceID = rhs.TargetFrameAncillaryResourceID;
4251 MediaType = rhs.MediaType;
4252 TargetFrameIndex = rhs.TargetFrameIndex;
4253 TargetFrameTransferCharacteristic = rhs.TargetFrameTransferCharacteristic;
4254 TargetFrameColorPrimaries = rhs.TargetFrameColorPrimaries;
4255 TargetFrameComponentMaxRef = rhs.TargetFrameComponentMaxRef;
4256 TargetFrameComponentMinRef = rhs.TargetFrameComponentMinRef;
4257 TargetFrameEssenceStreamID = rhs.TargetFrameEssenceStreamID;
4258 ACESPictureSubDescriptorInstanceID = rhs.ACESPictureSubDescriptorInstanceID;
4259 TargetFrameViewingEnvironment = rhs.TargetFrameViewingEnvironment;
4264 TargetFrameSubDescriptor::Dump(FILE* stream)
4266 char identbuf[IdentBufferLen];
4272 InterchangeObject::Dump(stream);
4273 fprintf(stream, " %22s = %s\n", "TargetFrameAncillaryResourceID", TargetFrameAncillaryResourceID.EncodeString(identbuf, IdentBufferLen));
4274 fprintf(stream, " %22s = %s\n", "MediaType", MediaType.EncodeString(identbuf, IdentBufferLen));
4275 fprintf(stream, " %22s = %s\n", "TargetFrameIndex", i64sz(TargetFrameIndex, identbuf));
4276 fprintf(stream, " %22s = %s\n", "TargetFrameTransferCharacteristic", TargetFrameTransferCharacteristic.EncodeString(identbuf, IdentBufferLen));
4277 fprintf(stream, " %22s = %s\n", "TargetFrameColorPrimaries", TargetFrameColorPrimaries.EncodeString(identbuf, IdentBufferLen));
4278 fprintf(stream, " %22s = %d\n", "TargetFrameComponentMaxRef", TargetFrameComponentMaxRef);
4279 fprintf(stream, " %22s = %d\n", "TargetFrameComponentMinRef", TargetFrameComponentMinRef);
4280 fprintf(stream, " %22s = %d\n", "TargetFrameEssenceStreamID", TargetFrameEssenceStreamID);
4281 if ( ! ACESPictureSubDescriptorInstanceID.empty() ) {
4282 fprintf(stream, " %22s = %s\n", "ACESPictureSubDescriptorInstanceID", ACESPictureSubDescriptorInstanceID.get().EncodeString(identbuf, IdentBufferLen));
4284 if ( ! TargetFrameViewingEnvironment.empty() ) {
4285 fprintf(stream, " %22s = %s\n", "TargetFrameViewingEnvironment", TargetFrameViewingEnvironment.get().EncodeString(identbuf, IdentBufferLen));
4291 TargetFrameSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
4293 return InterchangeObject::InitFromBuffer(p, l);
4298 TargetFrameSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4300 return InterchangeObject::WriteToBuffer(Buffer);
4303 //------------------------------------------------------------------------------------------
4304 // TextBasedDMFramework
4308 TextBasedDMFramework::TextBasedDMFramework(const Dictionary*& d) : DescriptiveFramework(d), m_Dict(d)
4311 m_UL = m_Dict->ul(MDD_TextBasedDMFramework);
4314 TextBasedDMFramework::TextBasedDMFramework(const TextBasedDMFramework& rhs) : DescriptiveFramework(rhs.m_Dict), m_Dict(rhs.m_Dict)
4317 m_UL = m_Dict->ul(MDD_TextBasedDMFramework);
4324 TextBasedDMFramework::InitFromTLVSet(TLVReader& TLVSet)
4327 Result_t result = DescriptiveFramework::InitFromTLVSet(TLVSet);
4328 if ( ASDCP_SUCCESS(result) ) {
4329 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(TextBasedDMFramework, ObjectRef));
4330 ObjectRef.set_has_value( result == RESULT_OK );
4337 TextBasedDMFramework::WriteToTLVSet(TLVWriter& TLVSet)
4340 Result_t result = DescriptiveFramework::WriteToTLVSet(TLVSet);
4341 if ( ASDCP_SUCCESS(result) && ! ObjectRef.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(TextBasedDMFramework, ObjectRef));
4347 TextBasedDMFramework::Copy(const TextBasedDMFramework& rhs)
4349 DescriptiveFramework::Copy(rhs);
4350 ObjectRef = rhs.ObjectRef;
4355 TextBasedDMFramework::Dump(FILE* stream)
4357 char identbuf[IdentBufferLen];
4363 DescriptiveFramework::Dump(stream);
4364 if ( ! ObjectRef.empty() ) {
4365 fprintf(stream, " %22s = %s\n", "ObjectRef", ObjectRef.get().EncodeString(identbuf, IdentBufferLen));
4371 TextBasedDMFramework::InitFromBuffer(const byte_t* p, ui32_t l)
4373 return InterchangeObject::InitFromBuffer(p, l);
4378 TextBasedDMFramework::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4380 return InterchangeObject::WriteToBuffer(Buffer);
4383 //------------------------------------------------------------------------------------------
4388 TextBasedObject::TextBasedObject(const Dictionary*& d) : DescriptiveObject(d), m_Dict(d)
4391 m_UL = m_Dict->ul(MDD_TextBasedObject);
4394 TextBasedObject::TextBasedObject(const TextBasedObject& rhs) : DescriptiveObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
4397 m_UL = m_Dict->ul(MDD_TextBasedObject);
4404 TextBasedObject::InitFromTLVSet(TLVReader& TLVSet)
4407 Result_t result = DescriptiveObject::InitFromTLVSet(TLVSet);
4408 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TextBasedObject, PayloadSchemeID));
4409 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TextBasedObject, TextMIMEMediaType));
4410 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TextBasedObject, RFC5646TextLanguageCode));
4411 if ( ASDCP_SUCCESS(result) ) {
4412 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(TextBasedObject, TextDataDescription));
4413 TextDataDescription.set_has_value( result == RESULT_OK );
4420 TextBasedObject::WriteToTLVSet(TLVWriter& TLVSet)
4423 Result_t result = DescriptiveObject::WriteToTLVSet(TLVSet);
4424 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TextBasedObject, PayloadSchemeID));
4425 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TextBasedObject, TextMIMEMediaType));
4426 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TextBasedObject, RFC5646TextLanguageCode));
4427 if ( ASDCP_SUCCESS(result) && ! TextDataDescription.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(TextBasedObject, TextDataDescription));
4433 TextBasedObject::Copy(const TextBasedObject& rhs)
4435 DescriptiveObject::Copy(rhs);
4436 PayloadSchemeID = rhs.PayloadSchemeID;
4437 TextMIMEMediaType = rhs.TextMIMEMediaType;
4438 RFC5646TextLanguageCode = rhs.RFC5646TextLanguageCode;
4439 TextDataDescription = rhs.TextDataDescription;
4444 TextBasedObject::Dump(FILE* stream)
4446 char identbuf[IdentBufferLen];
4452 DescriptiveObject::Dump(stream);
4453 fprintf(stream, " %22s = %s\n", "PayloadSchemeID", PayloadSchemeID.EncodeString(identbuf, IdentBufferLen));
4454 fprintf(stream, " %22s = %s\n", "TextMIMEMediaType", TextMIMEMediaType.EncodeString(identbuf, IdentBufferLen));
4455 fprintf(stream, " %22s = %s\n", "RFC5646TextLanguageCode", RFC5646TextLanguageCode.EncodeString(identbuf, IdentBufferLen));
4456 if ( ! TextDataDescription.empty() ) {
4457 fprintf(stream, " %22s = %s\n", "TextDataDescription", TextDataDescription.get().EncodeString(identbuf, IdentBufferLen));
4463 TextBasedObject::InitFromBuffer(const byte_t* p, ui32_t l)
4465 return InterchangeObject::InitFromBuffer(p, l);
4470 TextBasedObject::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4472 return InterchangeObject::WriteToBuffer(Buffer);
4475 //------------------------------------------------------------------------------------------
4476 // GenericStreamTextBasedSet
4480 GenericStreamTextBasedSet::GenericStreamTextBasedSet(const Dictionary*& d) : TextBasedObject(d), m_Dict(d), GenericStreamSID(0)
4483 m_UL = m_Dict->ul(MDD_GenericStreamTextBasedSet);
4486 GenericStreamTextBasedSet::GenericStreamTextBasedSet(const GenericStreamTextBasedSet& rhs) : TextBasedObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
4489 m_UL = m_Dict->ul(MDD_GenericStreamTextBasedSet);
4496 GenericStreamTextBasedSet::InitFromTLVSet(TLVReader& TLVSet)
4499 Result_t result = TextBasedObject::InitFromTLVSet(TLVSet);
4500 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericStreamTextBasedSet, GenericStreamSID));
4506 GenericStreamTextBasedSet::WriteToTLVSet(TLVWriter& TLVSet)
4509 Result_t result = TextBasedObject::WriteToTLVSet(TLVSet);
4510 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericStreamTextBasedSet, GenericStreamSID));
4516 GenericStreamTextBasedSet::Copy(const GenericStreamTextBasedSet& rhs)
4518 TextBasedObject::Copy(rhs);
4519 GenericStreamSID = rhs.GenericStreamSID;
4524 GenericStreamTextBasedSet::Dump(FILE* stream)
4526 char identbuf[IdentBufferLen];
4532 TextBasedObject::Dump(stream);
4533 fprintf(stream, " %22s = %d\n", "GenericStreamSID", GenericStreamSID);
4538 GenericStreamTextBasedSet::InitFromBuffer(const byte_t* p, ui32_t l)
4540 return InterchangeObject::InitFromBuffer(p, l);
4545 GenericStreamTextBasedSet::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4547 return InterchangeObject::WriteToBuffer(Buffer);
4550 //------------------------------------------------------------------------------------------
4551 // ISXDDataEssenceDescriptor
4555 ISXDDataEssenceDescriptor::ISXDDataEssenceDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d)
4558 m_UL = m_Dict->ul(MDD_ISXDDataEssenceDescriptor);
4561 ISXDDataEssenceDescriptor::ISXDDataEssenceDescriptor(const ISXDDataEssenceDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
4564 m_UL = m_Dict->ul(MDD_ISXDDataEssenceDescriptor);
4571 ISXDDataEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
4574 Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet);
4575 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(ISXDDataEssenceDescriptor, NamespaceURI));
4581 ISXDDataEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
4584 Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet);
4585 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(ISXDDataEssenceDescriptor, NamespaceURI));
4591 ISXDDataEssenceDescriptor::Copy(const ISXDDataEssenceDescriptor& rhs)
4593 GenericDataEssenceDescriptor::Copy(rhs);
4594 NamespaceURI = rhs.NamespaceURI;
4599 ISXDDataEssenceDescriptor::Dump(FILE* stream)
4601 char identbuf[IdentBufferLen];
4607 GenericDataEssenceDescriptor::Dump(stream);
4608 fprintf(stream, " %22s = %s\n", "NamespaceURI", NamespaceURI.EncodeString(identbuf, IdentBufferLen));
4613 ISXDDataEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
4615 return InterchangeObject::InitFromBuffer(p, l);
4620 ISXDDataEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4622 return InterchangeObject::WriteToBuffer(Buffer);
4625 //------------------------------------------------------------------------------------------
4626 // PHDRMetadataTrackSubDescriptor
4630 PHDRMetadataTrackSubDescriptor::PHDRMetadataTrackSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), SourceTrackID(0), SimplePayloadSID(0)
4633 m_UL = m_Dict->ul(MDD_PHDRMetadataTrackSubDescriptor);
4636 PHDRMetadataTrackSubDescriptor::PHDRMetadataTrackSubDescriptor(const PHDRMetadataTrackSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
4639 m_UL = m_Dict->ul(MDD_PHDRMetadataTrackSubDescriptor);
4646 PHDRMetadataTrackSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
4649 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
4650 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(PHDRMetadataTrackSubDescriptor, DataDefinition));
4651 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(PHDRMetadataTrackSubDescriptor, SourceTrackID));
4652 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(PHDRMetadataTrackSubDescriptor, SimplePayloadSID));
4658 PHDRMetadataTrackSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
4661 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
4662 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(PHDRMetadataTrackSubDescriptor, DataDefinition));
4663 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(PHDRMetadataTrackSubDescriptor, SourceTrackID));
4664 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(PHDRMetadataTrackSubDescriptor, SimplePayloadSID));
4670 PHDRMetadataTrackSubDescriptor::Copy(const PHDRMetadataTrackSubDescriptor& rhs)
4672 InterchangeObject::Copy(rhs);
4673 DataDefinition = rhs.DataDefinition;
4674 SourceTrackID = rhs.SourceTrackID;
4675 SimplePayloadSID = rhs.SimplePayloadSID;
4680 PHDRMetadataTrackSubDescriptor::Dump(FILE* stream)
4682 char identbuf[IdentBufferLen];
4688 InterchangeObject::Dump(stream);
4689 fprintf(stream, " %22s = %s\n", "DataDefinition", DataDefinition.EncodeString(identbuf, IdentBufferLen));
4690 fprintf(stream, " %22s = %d\n", "SourceTrackID", SourceTrackID);
4691 fprintf(stream, " %22s = %d\n", "SimplePayloadSID", SimplePayloadSID);
4696 PHDRMetadataTrackSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
4698 return InterchangeObject::InitFromBuffer(p, l);
4703 PHDRMetadataTrackSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4705 return InterchangeObject::WriteToBuffer(Buffer);
4708 //------------------------------------------------------------------------------------------
4709 // PIMFDynamicMetadataDescriptor
4713 PIMFDynamicMetadataDescriptor::PIMFDynamicMetadataDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d), GlobalPayloadSID(0)
4716 m_UL = m_Dict->ul(MDD_PIMFDynamicMetadataDescriptor);
4719 PIMFDynamicMetadataDescriptor::PIMFDynamicMetadataDescriptor(const PIMFDynamicMetadataDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
4722 m_UL = m_Dict->ul(MDD_PIMFDynamicMetadataDescriptor);
4729 PIMFDynamicMetadataDescriptor::InitFromTLVSet(TLVReader& TLVSet)
4732 Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet);
4733 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(PIMFDynamicMetadataDescriptor, GlobalPayloadSID));
4739 PIMFDynamicMetadataDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
4742 Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet);
4743 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(PIMFDynamicMetadataDescriptor, GlobalPayloadSID));
4749 PIMFDynamicMetadataDescriptor::Copy(const PIMFDynamicMetadataDescriptor& rhs)
4751 GenericDataEssenceDescriptor::Copy(rhs);
4752 GlobalPayloadSID = rhs.GlobalPayloadSID;
4757 PIMFDynamicMetadataDescriptor::Dump(FILE* stream)
4759 char identbuf[IdentBufferLen];
4765 GenericDataEssenceDescriptor::Dump(stream);
4766 fprintf(stream, " %22s = %d\n", "GlobalPayloadSID", GlobalPayloadSID);
4771 PIMFDynamicMetadataDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
4773 return InterchangeObject::InitFromBuffer(p, l);
4778 PIMFDynamicMetadataDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4780 return InterchangeObject::WriteToBuffer(Buffer);