2 Copyright (c) 2005-2012, John Hurst
5 Redistribution and use in source and binary forms, with or without
6 modification, are permitted provided that the following conditions
8 1. Redistributions of source code must retain the above copyright
9 notice, this list of conditions and the following disclaimer.
10 2. Redistributions in binary form must reproduce the above copyright
11 notice, this list of conditions and the following disclaimer in the
12 documentation and/or other materials provided with the distribution.
13 3. The name of the author may not be used to endorse or promote products
14 derived from this software without specific prior written permission.
16 THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18 OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19 IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25 THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 /*! \file Metadata.cpp
29 \brief AS-DCP library, MXF Metadata Sets implementation
36 using namespace ASDCP;
37 using namespace ASDCP::MXF;
39 const ui32_t kl_length = ASDCP::SMPTE_UL_LENGTH + ASDCP::MXF_BER_LENGTH;
41 //------------------------------------------------------------------------------------------
43 static InterchangeObject* Preface_Factory(const Dictionary*& Dict) { return new Preface(Dict); }
44 static InterchangeObject* IndexTableSegment_Factory(const Dictionary*& Dict) { return new IndexTableSegment(Dict); }
46 static InterchangeObject* Identification_Factory(const Dictionary*& Dict) { return new Identification(Dict); }
47 static InterchangeObject* ContentStorage_Factory(const Dictionary*& Dict) { return new ContentStorage(Dict); }
48 static InterchangeObject* EssenceContainerData_Factory(const Dictionary*& Dict) { return new EssenceContainerData(Dict); }
49 static InterchangeObject* MaterialPackage_Factory(const Dictionary*& Dict) { return new MaterialPackage(Dict); }
50 static InterchangeObject* SourcePackage_Factory(const Dictionary*& Dict) { return new SourcePackage(Dict); }
51 static InterchangeObject* StaticTrack_Factory(const Dictionary*& Dict) { return new StaticTrack(Dict); }
52 static InterchangeObject* Track_Factory(const Dictionary*& Dict) { return new Track(Dict); }
53 static InterchangeObject* Sequence_Factory(const Dictionary*& Dict) { return new Sequence(Dict); }
54 static InterchangeObject* SourceClip_Factory(const Dictionary*& Dict) { return new SourceClip(Dict); }
55 static InterchangeObject* TimecodeComponent_Factory(const Dictionary*& Dict) { return new TimecodeComponent(Dict); }
56 static InterchangeObject* FileDescriptor_Factory(const Dictionary*& Dict) { return new FileDescriptor(Dict); }
57 static InterchangeObject* GenericSoundEssenceDescriptor_Factory(const Dictionary*& Dict) { return new GenericSoundEssenceDescriptor(Dict); }
58 static InterchangeObject* WaveAudioDescriptor_Factory(const Dictionary*& Dict) { return new WaveAudioDescriptor(Dict); }
59 static InterchangeObject* GenericPictureEssenceDescriptor_Factory(const Dictionary*& Dict) { return new GenericPictureEssenceDescriptor(Dict); }
60 static InterchangeObject* RGBAEssenceDescriptor_Factory(const Dictionary*& Dict) { return new RGBAEssenceDescriptor(Dict); }
61 static InterchangeObject* JPEG2000PictureSubDescriptor_Factory(const Dictionary*& Dict) { return new JPEG2000PictureSubDescriptor(Dict); }
62 static InterchangeObject* CDCIEssenceDescriptor_Factory(const Dictionary*& Dict) { return new CDCIEssenceDescriptor(Dict); }
63 static InterchangeObject* MPEG2VideoDescriptor_Factory(const Dictionary*& Dict) { return new MPEG2VideoDescriptor(Dict); }
64 static InterchangeObject* DMSegment_Factory(const Dictionary*& Dict) { return new DMSegment(Dict); }
65 static InterchangeObject* CryptographicFramework_Factory(const Dictionary*& Dict) { return new CryptographicFramework(Dict); }
66 static InterchangeObject* CryptographicContext_Factory(const Dictionary*& Dict) { return new CryptographicContext(Dict); }
67 static InterchangeObject* GenericDataEssenceDescriptor_Factory(const Dictionary*& Dict) { return new GenericDataEssenceDescriptor(Dict); }
68 static InterchangeObject* TimedTextDescriptor_Factory(const Dictionary*& Dict) { return new TimedTextDescriptor(Dict); }
69 static InterchangeObject* TimedTextResourceSubDescriptor_Factory(const Dictionary*& Dict) { return new TimedTextResourceSubDescriptor(Dict); }
70 static InterchangeObject* StereoscopicPictureSubDescriptor_Factory(const Dictionary*& Dict) { return new StereoscopicPictureSubDescriptor(Dict); }
71 static InterchangeObject* ContainerConstraintSubDescriptor_Factory(const Dictionary*& Dict) { return new ContainerConstraintSubDescriptor(Dict); }
72 static InterchangeObject* NetworkLocator_Factory(const Dictionary*& Dict) { return new NetworkLocator(Dict); }
73 static InterchangeObject* MCALabelSubDescriptor_Factory(const Dictionary*& Dict) { return new MCALabelSubDescriptor(Dict); }
74 static InterchangeObject* AudioChannelLabelSubDescriptor_Factory(const Dictionary*& Dict) { return new AudioChannelLabelSubDescriptor(Dict); }
75 static InterchangeObject* SoundfieldGroupLabelSubDescriptor_Factory(const Dictionary*& Dict) { return new SoundfieldGroupLabelSubDescriptor(Dict); }
76 static InterchangeObject* GroupOfSoundfieldGroupsLabelSubDescriptor_Factory(const Dictionary*& Dict) { return new GroupOfSoundfieldGroupsLabelSubDescriptor(Dict); }
77 static InterchangeObject* DCDataDescriptor_Factory(const Dictionary*& Dict) { return new DCDataDescriptor(Dict); }
78 static InterchangeObject* PrivateDCDataDescriptor_Factory(const Dictionary*& Dict) { return new PrivateDCDataDescriptor(Dict); }
79 static InterchangeObject* DolbyAtmosSubDescriptor_Factory(const Dictionary*& Dict) { return new DolbyAtmosSubDescriptor(Dict); }
80 static InterchangeObject* PHDRMetadataTrackSubDescriptor_Factory(const Dictionary*& Dict) { return new PHDRMetadataTrackSubDescriptor(Dict); }
81 static InterchangeObject* PIMFDynamicMetadataDescriptor_Factory(const Dictionary*& Dict) { return new PIMFDynamicMetadataDescriptor(Dict); }
85 ASDCP::MXF::Metadata_InitTypes(const Dictionary*& Dict)
88 SetObjectFactory(Dict->ul(MDD_Preface), Preface_Factory);
89 SetObjectFactory(Dict->ul(MDD_IndexTableSegment), IndexTableSegment_Factory);
91 SetObjectFactory(Dict->ul(MDD_Identification), Identification_Factory);
92 SetObjectFactory(Dict->ul(MDD_ContentStorage), ContentStorage_Factory);
93 SetObjectFactory(Dict->ul(MDD_EssenceContainerData), EssenceContainerData_Factory);
94 SetObjectFactory(Dict->ul(MDD_MaterialPackage), MaterialPackage_Factory);
95 SetObjectFactory(Dict->ul(MDD_SourcePackage), SourcePackage_Factory);
96 SetObjectFactory(Dict->ul(MDD_StaticTrack), StaticTrack_Factory);
97 SetObjectFactory(Dict->ul(MDD_Track), Track_Factory);
98 SetObjectFactory(Dict->ul(MDD_Sequence), Sequence_Factory);
99 SetObjectFactory(Dict->ul(MDD_SourceClip), SourceClip_Factory);
100 SetObjectFactory(Dict->ul(MDD_TimecodeComponent), TimecodeComponent_Factory);
101 SetObjectFactory(Dict->ul(MDD_FileDescriptor), FileDescriptor_Factory);
102 SetObjectFactory(Dict->ul(MDD_GenericSoundEssenceDescriptor), GenericSoundEssenceDescriptor_Factory);
103 SetObjectFactory(Dict->ul(MDD_WaveAudioDescriptor), WaveAudioDescriptor_Factory);
104 SetObjectFactory(Dict->ul(MDD_GenericPictureEssenceDescriptor), GenericPictureEssenceDescriptor_Factory);
105 SetObjectFactory(Dict->ul(MDD_RGBAEssenceDescriptor), RGBAEssenceDescriptor_Factory);
106 SetObjectFactory(Dict->ul(MDD_JPEG2000PictureSubDescriptor), JPEG2000PictureSubDescriptor_Factory);
107 SetObjectFactory(Dict->ul(MDD_CDCIEssenceDescriptor), CDCIEssenceDescriptor_Factory);
108 SetObjectFactory(Dict->ul(MDD_MPEG2VideoDescriptor), MPEG2VideoDescriptor_Factory);
109 SetObjectFactory(Dict->ul(MDD_DMSegment), DMSegment_Factory);
110 SetObjectFactory(Dict->ul(MDD_CryptographicFramework), CryptographicFramework_Factory);
111 SetObjectFactory(Dict->ul(MDD_CryptographicContext), CryptographicContext_Factory);
112 SetObjectFactory(Dict->ul(MDD_GenericDataEssenceDescriptor), GenericDataEssenceDescriptor_Factory);
113 SetObjectFactory(Dict->ul(MDD_TimedTextDescriptor), TimedTextDescriptor_Factory);
114 SetObjectFactory(Dict->ul(MDD_TimedTextResourceSubDescriptor), TimedTextResourceSubDescriptor_Factory);
115 SetObjectFactory(Dict->ul(MDD_StereoscopicPictureSubDescriptor), StereoscopicPictureSubDescriptor_Factory);
116 SetObjectFactory(Dict->ul(MDD_ContainerConstraintSubDescriptor), ContainerConstraintSubDescriptor_Factory);
117 SetObjectFactory(Dict->ul(MDD_NetworkLocator), NetworkLocator_Factory);
118 SetObjectFactory(Dict->ul(MDD_MCALabelSubDescriptor), MCALabelSubDescriptor_Factory);
119 SetObjectFactory(Dict->ul(MDD_AudioChannelLabelSubDescriptor), AudioChannelLabelSubDescriptor_Factory);
120 SetObjectFactory(Dict->ul(MDD_SoundfieldGroupLabelSubDescriptor), SoundfieldGroupLabelSubDescriptor_Factory);
121 SetObjectFactory(Dict->ul(MDD_GroupOfSoundfieldGroupsLabelSubDescriptor), GroupOfSoundfieldGroupsLabelSubDescriptor_Factory);
122 SetObjectFactory(Dict->ul(MDD_DCDataDescriptor), DCDataDescriptor_Factory);
123 SetObjectFactory(Dict->ul(MDD_PrivateDCDataDescriptor), PrivateDCDataDescriptor_Factory);
124 SetObjectFactory(Dict->ul(MDD_DolbyAtmosSubDescriptor), DolbyAtmosSubDescriptor_Factory);
125 SetObjectFactory(Dict->ul(MDD_PHDRMetadataTrackSubDescriptor), PHDRMetadataTrackSubDescriptor_Factory);
126 SetObjectFactory(Dict->ul(MDD_PIMFDynamicMetadataDescriptor), PIMFDynamicMetadataDescriptor_Factory);
129 //------------------------------------------------------------------------------------------
134 //------------------------------------------------------------------------------------------
139 Identification::Identification(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
142 m_UL = m_Dict->ul(MDD_Identification);
145 Identification::Identification(const Identification& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
148 m_UL = m_Dict->ul(MDD_Identification);
155 Identification::InitFromTLVSet(TLVReader& TLVSet)
158 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
159 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ThisGenerationUID));
160 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, CompanyName));
161 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ProductName));
162 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ProductVersion));
163 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, VersionString));
164 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ProductUID));
165 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ModificationDate));
166 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ToolkitVersion));
167 if ( ASDCP_SUCCESS(result) ) {
168 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(Identification, Platform));
169 Platform.set_has_value( result == RESULT_OK );
176 Identification::WriteToTLVSet(TLVWriter& TLVSet)
179 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
180 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ThisGenerationUID));
181 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, CompanyName));
182 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ProductName));
183 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ProductVersion));
184 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, VersionString));
185 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ProductUID));
186 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ModificationDate));
187 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ToolkitVersion));
188 if ( ASDCP_SUCCESS(result) && ! Platform.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(Identification, Platform));
194 Identification::Copy(const Identification& rhs)
196 InterchangeObject::Copy(rhs);
197 ThisGenerationUID = rhs.ThisGenerationUID;
198 CompanyName = rhs.CompanyName;
199 ProductName = rhs.ProductName;
200 ProductVersion = rhs.ProductVersion;
201 VersionString = rhs.VersionString;
202 ProductUID = rhs.ProductUID;
203 ModificationDate = rhs.ModificationDate;
204 ToolkitVersion = rhs.ToolkitVersion;
205 Platform = rhs.Platform;
210 Identification::Dump(FILE* stream)
212 char identbuf[IdentBufferLen];
218 InterchangeObject::Dump(stream);
219 fprintf(stream, " %22s = %s\n", "ThisGenerationUID", ThisGenerationUID.EncodeString(identbuf, IdentBufferLen));
220 fprintf(stream, " %22s = %s\n", "CompanyName", CompanyName.EncodeString(identbuf, IdentBufferLen));
221 fprintf(stream, " %22s = %s\n", "ProductName", ProductName.EncodeString(identbuf, IdentBufferLen));
222 fprintf(stream, " %22s = %s\n", "ProductVersion", ProductVersion.EncodeString(identbuf, IdentBufferLen));
223 fprintf(stream, " %22s = %s\n", "VersionString", VersionString.EncodeString(identbuf, IdentBufferLen));
224 fprintf(stream, " %22s = %s\n", "ProductUID", ProductUID.EncodeString(identbuf, IdentBufferLen));
225 fprintf(stream, " %22s = %s\n", "ModificationDate", ModificationDate.EncodeString(identbuf, IdentBufferLen));
226 fprintf(stream, " %22s = %s\n", "ToolkitVersion", ToolkitVersion.EncodeString(identbuf, IdentBufferLen));
227 if ( ! Platform.empty() ) {
228 fprintf(stream, " %22s = %s\n", "Platform", Platform.get().EncodeString(identbuf, IdentBufferLen));
234 Identification::InitFromBuffer(const byte_t* p, ui32_t l)
236 return InterchangeObject::InitFromBuffer(p, l);
241 Identification::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
243 return InterchangeObject::WriteToBuffer(Buffer);
246 //------------------------------------------------------------------------------------------
251 ContentStorage::ContentStorage(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
254 m_UL = m_Dict->ul(MDD_ContentStorage);
257 ContentStorage::ContentStorage(const ContentStorage& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
260 m_UL = m_Dict->ul(MDD_ContentStorage);
267 ContentStorage::InitFromTLVSet(TLVReader& TLVSet)
270 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
271 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(ContentStorage, Packages));
272 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(ContentStorage, EssenceContainerData));
278 ContentStorage::WriteToTLVSet(TLVWriter& TLVSet)
281 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
282 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(ContentStorage, Packages));
283 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(ContentStorage, EssenceContainerData));
289 ContentStorage::Copy(const ContentStorage& rhs)
291 InterchangeObject::Copy(rhs);
292 Packages = rhs.Packages;
293 EssenceContainerData = rhs.EssenceContainerData;
298 ContentStorage::Dump(FILE* stream)
300 char identbuf[IdentBufferLen];
306 InterchangeObject::Dump(stream);
307 fprintf(stream, " %22s:\n", "Packages");
308 Packages.Dump(stream);
309 fprintf(stream, " %22s:\n", "EssenceContainerData");
310 EssenceContainerData.Dump(stream);
315 ContentStorage::InitFromBuffer(const byte_t* p, ui32_t l)
317 return InterchangeObject::InitFromBuffer(p, l);
322 ContentStorage::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
324 return InterchangeObject::WriteToBuffer(Buffer);
327 //------------------------------------------------------------------------------------------
328 // EssenceContainerData
332 EssenceContainerData::EssenceContainerData(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), BodySID(0)
335 m_UL = m_Dict->ul(MDD_EssenceContainerData);
338 EssenceContainerData::EssenceContainerData(const EssenceContainerData& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
341 m_UL = m_Dict->ul(MDD_EssenceContainerData);
348 EssenceContainerData::InitFromTLVSet(TLVReader& TLVSet)
351 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
352 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(EssenceContainerData, LinkedPackageUID));
353 if ( ASDCP_SUCCESS(result) ) {
354 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(EssenceContainerData, IndexSID));
355 IndexSID.set_has_value( result == RESULT_OK );
357 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(EssenceContainerData, BodySID));
363 EssenceContainerData::WriteToTLVSet(TLVWriter& TLVSet)
366 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
367 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(EssenceContainerData, LinkedPackageUID));
368 if ( ASDCP_SUCCESS(result) && ! IndexSID.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(EssenceContainerData, IndexSID));
369 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(EssenceContainerData, BodySID));
375 EssenceContainerData::Copy(const EssenceContainerData& rhs)
377 InterchangeObject::Copy(rhs);
378 LinkedPackageUID = rhs.LinkedPackageUID;
379 IndexSID = rhs.IndexSID;
380 BodySID = rhs.BodySID;
385 EssenceContainerData::Dump(FILE* stream)
387 char identbuf[IdentBufferLen];
393 InterchangeObject::Dump(stream);
394 fprintf(stream, " %22s = %s\n", "LinkedPackageUID", LinkedPackageUID.EncodeString(identbuf, IdentBufferLen));
395 if ( ! IndexSID.empty() ) {
396 fprintf(stream, " %22s = %d\n", "IndexSID", IndexSID.get());
398 fprintf(stream, " %22s = %d\n", "BodySID", BodySID);
403 EssenceContainerData::InitFromBuffer(const byte_t* p, ui32_t l)
405 return InterchangeObject::InitFromBuffer(p, l);
410 EssenceContainerData::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
412 return InterchangeObject::WriteToBuffer(Buffer);
415 //------------------------------------------------------------------------------------------
419 GenericPackage::GenericPackage(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) {}
421 GenericPackage::GenericPackage(const GenericPackage& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
429 GenericPackage::InitFromTLVSet(TLVReader& TLVSet)
432 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
433 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageUID));
434 if ( ASDCP_SUCCESS(result) ) {
435 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPackage, Name));
436 Name.set_has_value( result == RESULT_OK );
438 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageCreationDate));
439 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageModifiedDate));
440 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, Tracks));
446 GenericPackage::WriteToTLVSet(TLVWriter& TLVSet)
449 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
450 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, PackageUID));
451 if ( ASDCP_SUCCESS(result) && ! Name.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPackage, Name));
452 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, PackageCreationDate));
453 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, PackageModifiedDate));
454 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, Tracks));
460 GenericPackage::Copy(const GenericPackage& rhs)
462 InterchangeObject::Copy(rhs);
463 PackageUID = rhs.PackageUID;
465 PackageCreationDate = rhs.PackageCreationDate;
466 PackageModifiedDate = rhs.PackageModifiedDate;
472 GenericPackage::Dump(FILE* stream)
474 char identbuf[IdentBufferLen];
480 InterchangeObject::Dump(stream);
481 fprintf(stream, " %22s = %s\n", "PackageUID", PackageUID.EncodeString(identbuf, IdentBufferLen));
482 if ( ! Name.empty() ) {
483 fprintf(stream, " %22s = %s\n", "Name", Name.get().EncodeString(identbuf, IdentBufferLen));
485 fprintf(stream, " %22s = %s\n", "PackageCreationDate", PackageCreationDate.EncodeString(identbuf, IdentBufferLen));
486 fprintf(stream, " %22s = %s\n", "PackageModifiedDate", PackageModifiedDate.EncodeString(identbuf, IdentBufferLen));
487 fprintf(stream, " %22s:\n", "Tracks");
492 //------------------------------------------------------------------------------------------
497 MaterialPackage::MaterialPackage(const Dictionary*& d) : GenericPackage(d), m_Dict(d)
500 m_UL = m_Dict->ul(MDD_MaterialPackage);
503 MaterialPackage::MaterialPackage(const MaterialPackage& rhs) : GenericPackage(rhs.m_Dict), m_Dict(rhs.m_Dict)
506 m_UL = m_Dict->ul(MDD_MaterialPackage);
513 MaterialPackage::InitFromTLVSet(TLVReader& TLVSet)
516 Result_t result = GenericPackage::InitFromTLVSet(TLVSet);
517 if ( ASDCP_SUCCESS(result) ) {
518 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MaterialPackage, PackageMarker));
519 PackageMarker.set_has_value( result == RESULT_OK );
526 MaterialPackage::WriteToTLVSet(TLVWriter& TLVSet)
529 Result_t result = GenericPackage::WriteToTLVSet(TLVSet);
530 if ( ASDCP_SUCCESS(result) && ! PackageMarker.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MaterialPackage, PackageMarker));
536 MaterialPackage::Copy(const MaterialPackage& rhs)
538 GenericPackage::Copy(rhs);
539 PackageMarker = rhs.PackageMarker;
544 MaterialPackage::Dump(FILE* stream)
546 char identbuf[IdentBufferLen];
552 GenericPackage::Dump(stream);
553 if ( ! PackageMarker.empty() ) {
554 fprintf(stream, " %22s = %s\n", "PackageMarker", PackageMarker.get().EncodeString(identbuf, IdentBufferLen));
560 MaterialPackage::InitFromBuffer(const byte_t* p, ui32_t l)
562 return InterchangeObject::InitFromBuffer(p, l);
567 MaterialPackage::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
569 return InterchangeObject::WriteToBuffer(Buffer);
572 //------------------------------------------------------------------------------------------
577 SourcePackage::SourcePackage(const Dictionary*& d) : GenericPackage(d), m_Dict(d)
580 m_UL = m_Dict->ul(MDD_SourcePackage);
583 SourcePackage::SourcePackage(const SourcePackage& rhs) : GenericPackage(rhs.m_Dict), m_Dict(rhs.m_Dict)
586 m_UL = m_Dict->ul(MDD_SourcePackage);
593 SourcePackage::InitFromTLVSet(TLVReader& TLVSet)
596 Result_t result = GenericPackage::InitFromTLVSet(TLVSet);
597 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(SourcePackage, Descriptor));
603 SourcePackage::WriteToTLVSet(TLVWriter& TLVSet)
606 Result_t result = GenericPackage::WriteToTLVSet(TLVSet);
607 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(SourcePackage, Descriptor));
613 SourcePackage::Copy(const SourcePackage& rhs)
615 GenericPackage::Copy(rhs);
616 Descriptor = rhs.Descriptor;
621 SourcePackage::Dump(FILE* stream)
623 char identbuf[IdentBufferLen];
629 GenericPackage::Dump(stream);
630 fprintf(stream, " %22s = %s\n", "Descriptor", Descriptor.EncodeString(identbuf, IdentBufferLen));
635 SourcePackage::InitFromBuffer(const byte_t* p, ui32_t l)
637 return InterchangeObject::InitFromBuffer(p, l);
642 SourcePackage::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
644 return InterchangeObject::WriteToBuffer(Buffer);
647 //------------------------------------------------------------------------------------------
651 GenericTrack::GenericTrack(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), TrackID(0), TrackNumber(0) {}
653 GenericTrack::GenericTrack(const GenericTrack& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
661 GenericTrack::InitFromTLVSet(TLVReader& TLVSet)
664 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
665 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericTrack, TrackID));
666 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericTrack, TrackNumber));
667 if ( ASDCP_SUCCESS(result) ) {
668 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericTrack, TrackName));
669 TrackName.set_has_value( result == RESULT_OK );
671 if ( ASDCP_SUCCESS(result) ) {
672 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericTrack, Sequence));
673 Sequence.set_has_value( result == RESULT_OK );
680 GenericTrack::WriteToTLVSet(TLVWriter& TLVSet)
683 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
684 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericTrack, TrackID));
685 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericTrack, TrackNumber));
686 if ( ASDCP_SUCCESS(result) && ! TrackName.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericTrack, TrackName));
687 if ( ASDCP_SUCCESS(result) && ! Sequence.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericTrack, Sequence));
693 GenericTrack::Copy(const GenericTrack& rhs)
695 InterchangeObject::Copy(rhs);
696 TrackID = rhs.TrackID;
697 TrackNumber = rhs.TrackNumber;
698 TrackName = rhs.TrackName;
699 Sequence = rhs.Sequence;
704 GenericTrack::Dump(FILE* stream)
706 char identbuf[IdentBufferLen];
712 InterchangeObject::Dump(stream);
713 fprintf(stream, " %22s = %d\n", "TrackID", TrackID);
714 fprintf(stream, " %22s = %d\n", "TrackNumber", TrackNumber);
715 if ( ! TrackName.empty() ) {
716 fprintf(stream, " %22s = %s\n", "TrackName", TrackName.get().EncodeString(identbuf, IdentBufferLen));
718 if ( ! Sequence.empty() ) {
719 fprintf(stream, " %22s = %s\n", "Sequence", Sequence.get().EncodeString(identbuf, IdentBufferLen));
724 //------------------------------------------------------------------------------------------
729 StaticTrack::StaticTrack(const Dictionary*& d) : GenericTrack(d), m_Dict(d)
732 m_UL = m_Dict->ul(MDD_StaticTrack);
735 StaticTrack::StaticTrack(const StaticTrack& rhs) : GenericTrack(rhs.m_Dict), m_Dict(rhs.m_Dict)
738 m_UL = m_Dict->ul(MDD_StaticTrack);
745 StaticTrack::InitFromTLVSet(TLVReader& TLVSet)
748 Result_t result = GenericTrack::InitFromTLVSet(TLVSet);
754 StaticTrack::WriteToTLVSet(TLVWriter& TLVSet)
757 Result_t result = GenericTrack::WriteToTLVSet(TLVSet);
763 StaticTrack::Copy(const StaticTrack& rhs)
765 GenericTrack::Copy(rhs);
770 StaticTrack::Dump(FILE* stream)
772 char identbuf[IdentBufferLen];
778 GenericTrack::Dump(stream);
783 StaticTrack::InitFromBuffer(const byte_t* p, ui32_t l)
785 return InterchangeObject::InitFromBuffer(p, l);
790 StaticTrack::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
792 return InterchangeObject::WriteToBuffer(Buffer);
795 //------------------------------------------------------------------------------------------
800 Track::Track(const Dictionary*& d) : GenericTrack(d), m_Dict(d), Origin(0)
803 m_UL = m_Dict->ul(MDD_Track);
806 Track::Track(const Track& rhs) : GenericTrack(rhs.m_Dict), m_Dict(rhs.m_Dict)
809 m_UL = m_Dict->ul(MDD_Track);
816 Track::InitFromTLVSet(TLVReader& TLVSet)
819 Result_t result = GenericTrack::InitFromTLVSet(TLVSet);
820 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Track, EditRate));
821 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(Track, Origin));
827 Track::WriteToTLVSet(TLVWriter& TLVSet)
830 Result_t result = GenericTrack::WriteToTLVSet(TLVSet);
831 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Track, EditRate));
832 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(Track, Origin));
838 Track::Copy(const Track& rhs)
840 GenericTrack::Copy(rhs);
841 EditRate = rhs.EditRate;
847 Track::Dump(FILE* stream)
849 char identbuf[IdentBufferLen];
855 GenericTrack::Dump(stream);
856 fprintf(stream, " %22s = %s\n", "EditRate", EditRate.EncodeString(identbuf, IdentBufferLen));
857 fprintf(stream, " %22s = %s\n", "Origin", i64sz(Origin, identbuf));
862 Track::InitFromBuffer(const byte_t* p, ui32_t l)
864 return InterchangeObject::InitFromBuffer(p, l);
869 Track::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
871 return InterchangeObject::WriteToBuffer(Buffer);
874 //------------------------------------------------------------------------------------------
875 // StructuralComponent
878 StructuralComponent::StructuralComponent(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) {}
880 StructuralComponent::StructuralComponent(const StructuralComponent& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
888 StructuralComponent::InitFromTLVSet(TLVReader& TLVSet)
891 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
892 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(StructuralComponent, DataDefinition));
893 if ( ASDCP_SUCCESS(result) ) {
894 result = TLVSet.ReadUi64(OBJ_READ_ARGS_OPT(StructuralComponent, Duration));
895 Duration.set_has_value( result == RESULT_OK );
902 StructuralComponent::WriteToTLVSet(TLVWriter& TLVSet)
905 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
906 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(StructuralComponent, DataDefinition));
907 if ( ASDCP_SUCCESS(result) && ! Duration.empty() ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS_OPT(StructuralComponent, Duration));
913 StructuralComponent::Copy(const StructuralComponent& rhs)
915 InterchangeObject::Copy(rhs);
916 DataDefinition = rhs.DataDefinition;
917 Duration = rhs.Duration;
922 StructuralComponent::Dump(FILE* stream)
924 char identbuf[IdentBufferLen];
930 InterchangeObject::Dump(stream);
931 fprintf(stream, " %22s = %s\n", "DataDefinition", DataDefinition.EncodeString(identbuf, IdentBufferLen));
932 if ( ! Duration.empty() ) {
933 fprintf(stream, " %22s = %s\n", "Duration", i64sz(Duration.get(), identbuf));
938 //------------------------------------------------------------------------------------------
943 Sequence::Sequence(const Dictionary*& d) : StructuralComponent(d), m_Dict(d)
946 m_UL = m_Dict->ul(MDD_Sequence);
949 Sequence::Sequence(const Sequence& rhs) : StructuralComponent(rhs.m_Dict), m_Dict(rhs.m_Dict)
952 m_UL = m_Dict->ul(MDD_Sequence);
959 Sequence::InitFromTLVSet(TLVReader& TLVSet)
962 Result_t result = StructuralComponent::InitFromTLVSet(TLVSet);
963 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Sequence, StructuralComponents));
969 Sequence::WriteToTLVSet(TLVWriter& TLVSet)
972 Result_t result = StructuralComponent::WriteToTLVSet(TLVSet);
973 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Sequence, StructuralComponents));
979 Sequence::Copy(const Sequence& rhs)
981 StructuralComponent::Copy(rhs);
982 StructuralComponents = rhs.StructuralComponents;
987 Sequence::Dump(FILE* stream)
989 char identbuf[IdentBufferLen];
995 StructuralComponent::Dump(stream);
996 fprintf(stream, " %22s:\n", "StructuralComponents");
997 StructuralComponents.Dump(stream);
1002 Sequence::InitFromBuffer(const byte_t* p, ui32_t l)
1004 return InterchangeObject::InitFromBuffer(p, l);
1009 Sequence::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1011 return InterchangeObject::WriteToBuffer(Buffer);
1014 //------------------------------------------------------------------------------------------
1019 SourceClip::SourceClip(const Dictionary*& d) : StructuralComponent(d), m_Dict(d), StartPosition(0), SourceTrackID(0)
1022 m_UL = m_Dict->ul(MDD_SourceClip);
1025 SourceClip::SourceClip(const SourceClip& rhs) : StructuralComponent(rhs.m_Dict), m_Dict(rhs.m_Dict)
1028 m_UL = m_Dict->ul(MDD_SourceClip);
1035 SourceClip::InitFromTLVSet(TLVReader& TLVSet)
1038 Result_t result = StructuralComponent::InitFromTLVSet(TLVSet);
1039 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(SourceClip, StartPosition));
1040 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(SourceClip, SourcePackageID));
1041 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(SourceClip, SourceTrackID));
1047 SourceClip::WriteToTLVSet(TLVWriter& TLVSet)
1050 Result_t result = StructuralComponent::WriteToTLVSet(TLVSet);
1051 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(SourceClip, StartPosition));
1052 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(SourceClip, SourcePackageID));
1053 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(SourceClip, SourceTrackID));
1059 SourceClip::Copy(const SourceClip& rhs)
1061 StructuralComponent::Copy(rhs);
1062 StartPosition = rhs.StartPosition;
1063 SourcePackageID = rhs.SourcePackageID;
1064 SourceTrackID = rhs.SourceTrackID;
1069 SourceClip::Dump(FILE* stream)
1071 char identbuf[IdentBufferLen];
1077 StructuralComponent::Dump(stream);
1078 fprintf(stream, " %22s = %s\n", "StartPosition", i64sz(StartPosition, identbuf));
1079 fprintf(stream, " %22s = %s\n", "SourcePackageID", SourcePackageID.EncodeString(identbuf, IdentBufferLen));
1080 fprintf(stream, " %22s = %d\n", "SourceTrackID", SourceTrackID);
1085 SourceClip::InitFromBuffer(const byte_t* p, ui32_t l)
1087 return InterchangeObject::InitFromBuffer(p, l);
1092 SourceClip::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1094 return InterchangeObject::WriteToBuffer(Buffer);
1097 //------------------------------------------------------------------------------------------
1098 // TimecodeComponent
1102 TimecodeComponent::TimecodeComponent(const Dictionary*& d) : StructuralComponent(d), m_Dict(d), RoundedTimecodeBase(0), StartTimecode(0), DropFrame(0)
1105 m_UL = m_Dict->ul(MDD_TimecodeComponent);
1108 TimecodeComponent::TimecodeComponent(const TimecodeComponent& rhs) : StructuralComponent(rhs.m_Dict), m_Dict(rhs.m_Dict)
1111 m_UL = m_Dict->ul(MDD_TimecodeComponent);
1118 TimecodeComponent::InitFromTLVSet(TLVReader& TLVSet)
1121 Result_t result = StructuralComponent::InitFromTLVSet(TLVSet);
1122 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(TimecodeComponent, RoundedTimecodeBase));
1123 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(TimecodeComponent, StartTimecode));
1124 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(TimecodeComponent, DropFrame));
1130 TimecodeComponent::WriteToTLVSet(TLVWriter& TLVSet)
1133 Result_t result = StructuralComponent::WriteToTLVSet(TLVSet);
1134 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(TimecodeComponent, RoundedTimecodeBase));
1135 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(TimecodeComponent, StartTimecode));
1136 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(TimecodeComponent, DropFrame));
1142 TimecodeComponent::Copy(const TimecodeComponent& rhs)
1144 StructuralComponent::Copy(rhs);
1145 RoundedTimecodeBase = rhs.RoundedTimecodeBase;
1146 StartTimecode = rhs.StartTimecode;
1147 DropFrame = rhs.DropFrame;
1152 TimecodeComponent::Dump(FILE* stream)
1154 char identbuf[IdentBufferLen];
1160 StructuralComponent::Dump(stream);
1161 fprintf(stream, " %22s = %d\n", "RoundedTimecodeBase", RoundedTimecodeBase);
1162 fprintf(stream, " %22s = %s\n", "StartTimecode", i64sz(StartTimecode, identbuf));
1163 fprintf(stream, " %22s = %d\n", "DropFrame", DropFrame);
1168 TimecodeComponent::InitFromBuffer(const byte_t* p, ui32_t l)
1170 return InterchangeObject::InitFromBuffer(p, l);
1175 TimecodeComponent::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1177 return InterchangeObject::WriteToBuffer(Buffer);
1180 //------------------------------------------------------------------------------------------
1181 // GenericDescriptor
1184 GenericDescriptor::GenericDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) {}
1186 GenericDescriptor::GenericDescriptor(const GenericDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
1194 GenericDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1197 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
1198 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericDescriptor, Locators));
1199 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericDescriptor, SubDescriptors));
1205 GenericDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1208 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
1209 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericDescriptor, Locators));
1210 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericDescriptor, SubDescriptors));
1216 GenericDescriptor::Copy(const GenericDescriptor& rhs)
1218 InterchangeObject::Copy(rhs);
1219 Locators = rhs.Locators;
1220 SubDescriptors = rhs.SubDescriptors;
1225 GenericDescriptor::Dump(FILE* stream)
1227 char identbuf[IdentBufferLen];
1233 InterchangeObject::Dump(stream);
1234 fprintf(stream, " %22s:\n", "Locators");
1235 Locators.Dump(stream);
1236 fprintf(stream, " %22s:\n", "SubDescriptors");
1237 SubDescriptors.Dump(stream);
1241 //------------------------------------------------------------------------------------------
1246 FileDescriptor::FileDescriptor(const Dictionary*& d) : GenericDescriptor(d), m_Dict(d)
1249 m_UL = m_Dict->ul(MDD_FileDescriptor);
1252 FileDescriptor::FileDescriptor(const FileDescriptor& rhs) : GenericDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
1255 m_UL = m_Dict->ul(MDD_FileDescriptor);
1262 FileDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1265 Result_t result = GenericDescriptor::InitFromTLVSet(TLVSet);
1266 if ( ASDCP_SUCCESS(result) ) {
1267 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(FileDescriptor, LinkedTrackID));
1268 LinkedTrackID.set_has_value( result == RESULT_OK );
1270 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(FileDescriptor, SampleRate));
1271 if ( ASDCP_SUCCESS(result) ) {
1272 result = TLVSet.ReadUi64(OBJ_READ_ARGS_OPT(FileDescriptor, ContainerDuration));
1273 ContainerDuration.set_has_value( result == RESULT_OK );
1275 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(FileDescriptor, EssenceContainer));
1276 if ( ASDCP_SUCCESS(result) ) {
1277 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(FileDescriptor, Codec));
1278 Codec.set_has_value( result == RESULT_OK );
1285 FileDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1288 Result_t result = GenericDescriptor::WriteToTLVSet(TLVSet);
1289 if ( ASDCP_SUCCESS(result) && ! LinkedTrackID.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(FileDescriptor, LinkedTrackID));
1290 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(FileDescriptor, SampleRate));
1291 if ( ASDCP_SUCCESS(result) && ! ContainerDuration.empty() ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS_OPT(FileDescriptor, ContainerDuration));
1292 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(FileDescriptor, EssenceContainer));
1293 if ( ASDCP_SUCCESS(result) && ! Codec.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(FileDescriptor, Codec));
1299 FileDescriptor::Copy(const FileDescriptor& rhs)
1301 GenericDescriptor::Copy(rhs);
1302 LinkedTrackID = rhs.LinkedTrackID;
1303 SampleRate = rhs.SampleRate;
1304 ContainerDuration = rhs.ContainerDuration;
1305 EssenceContainer = rhs.EssenceContainer;
1311 FileDescriptor::Dump(FILE* stream)
1313 char identbuf[IdentBufferLen];
1319 GenericDescriptor::Dump(stream);
1320 if ( ! LinkedTrackID.empty() ) {
1321 fprintf(stream, " %22s = %d\n", "LinkedTrackID", LinkedTrackID.get());
1323 fprintf(stream, " %22s = %s\n", "SampleRate", SampleRate.EncodeString(identbuf, IdentBufferLen));
1324 if ( ! ContainerDuration.empty() ) {
1325 fprintf(stream, " %22s = %s\n", "ContainerDuration", i64sz(ContainerDuration.get(), identbuf));
1327 fprintf(stream, " %22s = %s\n", "EssenceContainer", EssenceContainer.EncodeString(identbuf, IdentBufferLen));
1328 if ( ! Codec.empty() ) {
1329 fprintf(stream, " %22s = %s\n", "Codec", Codec.get().EncodeString(identbuf, IdentBufferLen));
1335 FileDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1337 return InterchangeObject::InitFromBuffer(p, l);
1342 FileDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1344 return InterchangeObject::WriteToBuffer(Buffer);
1347 //------------------------------------------------------------------------------------------
1348 // GenericSoundEssenceDescriptor
1352 GenericSoundEssenceDescriptor::GenericSoundEssenceDescriptor(const Dictionary*& d) : FileDescriptor(d), m_Dict(d), Locked(0), ChannelCount(0), QuantizationBits(0)
1355 m_UL = m_Dict->ul(MDD_GenericSoundEssenceDescriptor);
1358 GenericSoundEssenceDescriptor::GenericSoundEssenceDescriptor(const GenericSoundEssenceDescriptor& rhs) : FileDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
1361 m_UL = m_Dict->ul(MDD_GenericSoundEssenceDescriptor);
1368 GenericSoundEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1371 Result_t result = FileDescriptor::InitFromTLVSet(TLVSet);
1372 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, AudioSamplingRate));
1373 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, Locked));
1374 if ( ASDCP_SUCCESS(result) ) {
1375 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericSoundEssenceDescriptor, AudioRefLevel));
1376 AudioRefLevel.set_has_value( result == RESULT_OK );
1378 if ( ASDCP_SUCCESS(result) ) {
1379 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericSoundEssenceDescriptor, ElectroSpatialFormulation));
1380 ElectroSpatialFormulation.set_has_value( result == RESULT_OK );
1382 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, ChannelCount));
1383 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, QuantizationBits));
1384 if ( ASDCP_SUCCESS(result) ) {
1385 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericSoundEssenceDescriptor, DialNorm));
1386 DialNorm.set_has_value( result == RESULT_OK );
1388 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, SoundEssenceCoding));
1394 GenericSoundEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1397 Result_t result = FileDescriptor::WriteToTLVSet(TLVSet);
1398 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, AudioSamplingRate));
1399 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, Locked));
1400 if ( ASDCP_SUCCESS(result) && ! AudioRefLevel.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericSoundEssenceDescriptor, AudioRefLevel));
1401 if ( ASDCP_SUCCESS(result) && ! ElectroSpatialFormulation.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericSoundEssenceDescriptor, ElectroSpatialFormulation));
1402 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, ChannelCount));
1403 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, QuantizationBits));
1404 if ( ASDCP_SUCCESS(result) && ! DialNorm.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericSoundEssenceDescriptor, DialNorm));
1405 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, SoundEssenceCoding));
1411 GenericSoundEssenceDescriptor::Copy(const GenericSoundEssenceDescriptor& rhs)
1413 FileDescriptor::Copy(rhs);
1414 AudioSamplingRate = rhs.AudioSamplingRate;
1415 Locked = rhs.Locked;
1416 AudioRefLevel = rhs.AudioRefLevel;
1417 ElectroSpatialFormulation = rhs.ElectroSpatialFormulation;
1418 ChannelCount = rhs.ChannelCount;
1419 QuantizationBits = rhs.QuantizationBits;
1420 DialNorm = rhs.DialNorm;
1421 SoundEssenceCoding = rhs.SoundEssenceCoding;
1426 GenericSoundEssenceDescriptor::Dump(FILE* stream)
1428 char identbuf[IdentBufferLen];
1434 FileDescriptor::Dump(stream);
1435 fprintf(stream, " %22s = %s\n", "AudioSamplingRate", AudioSamplingRate.EncodeString(identbuf, IdentBufferLen));
1436 fprintf(stream, " %22s = %d\n", "Locked", Locked);
1437 if ( ! AudioRefLevel.empty() ) {
1438 fprintf(stream, " %22s = %d\n", "AudioRefLevel", AudioRefLevel.get());
1440 if ( ! ElectroSpatialFormulation.empty() ) {
1441 fprintf(stream, " %22s = %d\n", "ElectroSpatialFormulation", ElectroSpatialFormulation.get());
1443 fprintf(stream, " %22s = %d\n", "ChannelCount", ChannelCount);
1444 fprintf(stream, " %22s = %d\n", "QuantizationBits", QuantizationBits);
1445 if ( ! DialNorm.empty() ) {
1446 fprintf(stream, " %22s = %d\n", "DialNorm", DialNorm.get());
1448 fprintf(stream, " %22s = %s\n", "SoundEssenceCoding", SoundEssenceCoding.EncodeString(identbuf, IdentBufferLen));
1453 GenericSoundEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1455 return InterchangeObject::InitFromBuffer(p, l);
1460 GenericSoundEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1462 return InterchangeObject::WriteToBuffer(Buffer);
1465 //------------------------------------------------------------------------------------------
1466 // WaveAudioDescriptor
1470 WaveAudioDescriptor::WaveAudioDescriptor(const Dictionary*& d) : GenericSoundEssenceDescriptor(d), m_Dict(d), BlockAlign(0), AvgBps(0)
1473 m_UL = m_Dict->ul(MDD_WaveAudioDescriptor);
1476 WaveAudioDescriptor::WaveAudioDescriptor(const WaveAudioDescriptor& rhs) : GenericSoundEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
1479 m_UL = m_Dict->ul(MDD_WaveAudioDescriptor);
1486 WaveAudioDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1489 Result_t result = GenericSoundEssenceDescriptor::InitFromTLVSet(TLVSet);
1490 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(WaveAudioDescriptor, BlockAlign));
1491 if ( ASDCP_SUCCESS(result) ) {
1492 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(WaveAudioDescriptor, SequenceOffset));
1493 SequenceOffset.set_has_value( result == RESULT_OK );
1495 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(WaveAudioDescriptor, AvgBps));
1496 if ( ASDCP_SUCCESS(result) ) {
1497 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(WaveAudioDescriptor, ChannelAssignment));
1498 ChannelAssignment.set_has_value( result == RESULT_OK );
1500 if ( ASDCP_SUCCESS(result) ) {
1501 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(WaveAudioDescriptor, ReferenceImageEditRate));
1502 ReferenceImageEditRate.set_has_value( result == RESULT_OK );
1504 if ( ASDCP_SUCCESS(result) ) {
1505 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(WaveAudioDescriptor, ReferenceAudioAlignmentLevel));
1506 ReferenceAudioAlignmentLevel.set_has_value( result == RESULT_OK );
1513 WaveAudioDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1516 Result_t result = GenericSoundEssenceDescriptor::WriteToTLVSet(TLVSet);
1517 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(WaveAudioDescriptor, BlockAlign));
1518 if ( ASDCP_SUCCESS(result) && ! SequenceOffset.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(WaveAudioDescriptor, SequenceOffset));
1519 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(WaveAudioDescriptor, AvgBps));
1520 if ( ASDCP_SUCCESS(result) && ! ChannelAssignment.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(WaveAudioDescriptor, ChannelAssignment));
1521 if ( ASDCP_SUCCESS(result) && ! ReferenceImageEditRate.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(WaveAudioDescriptor, ReferenceImageEditRate));
1522 if ( ASDCP_SUCCESS(result) && ! ReferenceAudioAlignmentLevel.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(WaveAudioDescriptor, ReferenceAudioAlignmentLevel));
1528 WaveAudioDescriptor::Copy(const WaveAudioDescriptor& rhs)
1530 GenericSoundEssenceDescriptor::Copy(rhs);
1531 BlockAlign = rhs.BlockAlign;
1532 SequenceOffset = rhs.SequenceOffset;
1533 AvgBps = rhs.AvgBps;
1534 ChannelAssignment = rhs.ChannelAssignment;
1535 ReferenceImageEditRate = rhs.ReferenceImageEditRate;
1536 ReferenceAudioAlignmentLevel = rhs.ReferenceAudioAlignmentLevel;
1541 WaveAudioDescriptor::Dump(FILE* stream)
1543 char identbuf[IdentBufferLen];
1549 GenericSoundEssenceDescriptor::Dump(stream);
1550 fprintf(stream, " %22s = %d\n", "BlockAlign", BlockAlign);
1551 if ( ! SequenceOffset.empty() ) {
1552 fprintf(stream, " %22s = %d\n", "SequenceOffset", SequenceOffset.get());
1554 fprintf(stream, " %22s = %d\n", "AvgBps", AvgBps);
1555 if ( ! ChannelAssignment.empty() ) {
1556 fprintf(stream, " %22s = %s\n", "ChannelAssignment", ChannelAssignment.get().EncodeString(identbuf, IdentBufferLen));
1558 if ( ! ReferenceImageEditRate.empty() ) {
1559 fprintf(stream, " %22s = %s\n", "ReferenceImageEditRate", ReferenceImageEditRate.get().EncodeString(identbuf, IdentBufferLen));
1561 if ( ! ReferenceAudioAlignmentLevel.empty() ) {
1562 fprintf(stream, " %22s = %d\n", "ReferenceAudioAlignmentLevel", ReferenceAudioAlignmentLevel.get());
1568 WaveAudioDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1570 return InterchangeObject::InitFromBuffer(p, l);
1575 WaveAudioDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1577 return InterchangeObject::WriteToBuffer(Buffer);
1580 //------------------------------------------------------------------------------------------
1581 // GenericPictureEssenceDescriptor
1585 GenericPictureEssenceDescriptor::GenericPictureEssenceDescriptor(const Dictionary*& d) : FileDescriptor(d), m_Dict(d), FrameLayout(0), StoredWidth(0), StoredHeight(0)
1588 m_UL = m_Dict->ul(MDD_GenericPictureEssenceDescriptor);
1591 GenericPictureEssenceDescriptor::GenericPictureEssenceDescriptor(const GenericPictureEssenceDescriptor& rhs) : FileDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
1594 m_UL = m_Dict->ul(MDD_GenericPictureEssenceDescriptor);
1601 GenericPictureEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1604 Result_t result = FileDescriptor::InitFromTLVSet(TLVSet);
1605 if ( ASDCP_SUCCESS(result) ) {
1606 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, SignalStandard));
1607 SignalStandard.set_has_value( result == RESULT_OK );
1609 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, FrameLayout));
1610 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, StoredWidth));
1611 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, StoredHeight));
1612 if ( ASDCP_SUCCESS(result) ) {
1613 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, StoredF2Offset));
1614 StoredF2Offset.set_has_value( result == RESULT_OK );
1616 if ( ASDCP_SUCCESS(result) ) {
1617 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, SampledWidth));
1618 SampledWidth.set_has_value( result == RESULT_OK );
1620 if ( ASDCP_SUCCESS(result) ) {
1621 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, SampledHeight));
1622 SampledHeight.set_has_value( result == RESULT_OK );
1624 if ( ASDCP_SUCCESS(result) ) {
1625 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, SampledXOffset));
1626 SampledXOffset.set_has_value( result == RESULT_OK );
1628 if ( ASDCP_SUCCESS(result) ) {
1629 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, SampledYOffset));
1630 SampledYOffset.set_has_value( result == RESULT_OK );
1632 if ( ASDCP_SUCCESS(result) ) {
1633 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayHeight));
1634 DisplayHeight.set_has_value( result == RESULT_OK );
1636 if ( ASDCP_SUCCESS(result) ) {
1637 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayWidth));
1638 DisplayWidth.set_has_value( result == RESULT_OK );
1640 if ( ASDCP_SUCCESS(result) ) {
1641 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayXOffset));
1642 DisplayXOffset.set_has_value( result == RESULT_OK );
1644 if ( ASDCP_SUCCESS(result) ) {
1645 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayYOffset));
1646 DisplayYOffset.set_has_value( result == RESULT_OK );
1648 if ( ASDCP_SUCCESS(result) ) {
1649 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayF2Offset));
1650 DisplayF2Offset.set_has_value( result == RESULT_OK );
1652 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, AspectRatio));
1653 if ( ASDCP_SUCCESS(result) ) {
1654 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveFormatDescriptor));
1655 ActiveFormatDescriptor.set_has_value( result == RESULT_OK );
1657 if ( ASDCP_SUCCESS(result) ) {
1658 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, AlphaTransparency));
1659 AlphaTransparency.set_has_value( result == RESULT_OK );
1661 if ( ASDCP_SUCCESS(result) ) {
1662 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, TransferCharacteristic));
1663 TransferCharacteristic.set_has_value( result == RESULT_OK );
1665 if ( ASDCP_SUCCESS(result) ) {
1666 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ImageAlignmentOffset));
1667 ImageAlignmentOffset.set_has_value( result == RESULT_OK );
1669 if ( ASDCP_SUCCESS(result) ) {
1670 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ImageStartOffset));
1671 ImageStartOffset.set_has_value( result == RESULT_OK );
1673 if ( ASDCP_SUCCESS(result) ) {
1674 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ImageEndOffset));
1675 ImageEndOffset.set_has_value( result == RESULT_OK );
1677 if ( ASDCP_SUCCESS(result) ) {
1678 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, FieldDominance));
1679 FieldDominance.set_has_value( result == RESULT_OK );
1681 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, PictureEssenceCoding));
1682 if ( ASDCP_SUCCESS(result) ) {
1683 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, CodingEquations));
1684 CodingEquations.set_has_value( result == RESULT_OK );
1686 if ( ASDCP_SUCCESS(result) ) {
1687 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ColorPrimaries));
1688 ColorPrimaries.set_has_value( result == RESULT_OK );
1690 if ( ASDCP_SUCCESS(result) ) {
1691 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, AlternativeCenterCuts));
1693 if ( ASDCP_SUCCESS(result) ) {
1694 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveWidth));
1695 ActiveWidth.set_has_value( result == RESULT_OK );
1697 if ( ASDCP_SUCCESS(result) ) {
1698 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveHeight));
1699 ActiveHeight.set_has_value( result == RESULT_OK );
1701 if ( ASDCP_SUCCESS(result) ) {
1702 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveXOffset));
1703 ActiveXOffset.set_has_value( result == RESULT_OK );
1705 if ( ASDCP_SUCCESS(result) ) {
1706 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveYOffset));
1707 ActiveYOffset.set_has_value( result == RESULT_OK );
1709 if ( ASDCP_SUCCESS(result) ) {
1710 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, VideoLineMap));
1711 VideoLineMap.set_has_value( result == RESULT_OK );
1718 GenericPictureEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1721 Result_t result = FileDescriptor::WriteToTLVSet(TLVSet);
1722 if ( ASDCP_SUCCESS(result) && ! SignalStandard.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, SignalStandard));
1723 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, FrameLayout));
1724 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, StoredWidth));
1725 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, StoredHeight));
1726 if ( ASDCP_SUCCESS(result) && ! StoredF2Offset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, StoredF2Offset));
1727 if ( ASDCP_SUCCESS(result) && ! SampledWidth.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, SampledWidth));
1728 if ( ASDCP_SUCCESS(result) && ! SampledHeight.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, SampledHeight));
1729 if ( ASDCP_SUCCESS(result) && ! SampledXOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, SampledXOffset));
1730 if ( ASDCP_SUCCESS(result) && ! SampledYOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, SampledYOffset));
1731 if ( ASDCP_SUCCESS(result) && ! DisplayHeight.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayHeight));
1732 if ( ASDCP_SUCCESS(result) && ! DisplayWidth.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayWidth));
1733 if ( ASDCP_SUCCESS(result) && ! DisplayXOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayXOffset));
1734 if ( ASDCP_SUCCESS(result) && ! DisplayYOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayYOffset));
1735 if ( ASDCP_SUCCESS(result) && ! DisplayF2Offset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayF2Offset));
1736 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, AspectRatio));
1737 if ( ASDCP_SUCCESS(result) && ! ActiveFormatDescriptor.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveFormatDescriptor));
1738 if ( ASDCP_SUCCESS(result) && ! AlphaTransparency.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, AlphaTransparency));
1739 if ( ASDCP_SUCCESS(result) && ! TransferCharacteristic.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, TransferCharacteristic));
1740 if ( ASDCP_SUCCESS(result) && ! ImageAlignmentOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ImageAlignmentOffset));
1741 if ( ASDCP_SUCCESS(result) && ! ImageStartOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ImageStartOffset));
1742 if ( ASDCP_SUCCESS(result) && ! ImageEndOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ImageEndOffset));
1743 if ( ASDCP_SUCCESS(result) && ! FieldDominance.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, FieldDominance));
1744 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, PictureEssenceCoding));
1745 if ( ASDCP_SUCCESS(result) && ! CodingEquations.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, CodingEquations));
1746 if ( ASDCP_SUCCESS(result) && ! ColorPrimaries.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ColorPrimaries));
1747 if ( ASDCP_SUCCESS(result) && ! AlternativeCenterCuts.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, AlternativeCenterCuts));
1748 if ( ASDCP_SUCCESS(result) && ! ActiveWidth.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveWidth));
1749 if ( ASDCP_SUCCESS(result) && ! ActiveHeight.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveHeight));
1750 if ( ASDCP_SUCCESS(result) && ! ActiveXOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveXOffset));
1751 if ( ASDCP_SUCCESS(result) && ! ActiveYOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveYOffset));
1752 if ( ASDCP_SUCCESS(result) && ! VideoLineMap.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, VideoLineMap));
1758 GenericPictureEssenceDescriptor::Copy(const GenericPictureEssenceDescriptor& rhs)
1760 FileDescriptor::Copy(rhs);
1761 SignalStandard = rhs.SignalStandard;
1762 FrameLayout = rhs.FrameLayout;
1763 StoredWidth = rhs.StoredWidth;
1764 StoredHeight = rhs.StoredHeight;
1765 StoredF2Offset = rhs.StoredF2Offset;
1766 SampledWidth = rhs.SampledWidth;
1767 SampledHeight = rhs.SampledHeight;
1768 SampledXOffset = rhs.SampledXOffset;
1769 SampledYOffset = rhs.SampledYOffset;
1770 DisplayHeight = rhs.DisplayHeight;
1771 DisplayWidth = rhs.DisplayWidth;
1772 DisplayXOffset = rhs.DisplayXOffset;
1773 DisplayYOffset = rhs.DisplayYOffset;
1774 DisplayF2Offset = rhs.DisplayF2Offset;
1775 AspectRatio = rhs.AspectRatio;
1776 ActiveFormatDescriptor = rhs.ActiveFormatDescriptor;
1777 AlphaTransparency = rhs.AlphaTransparency;
1778 TransferCharacteristic = rhs.TransferCharacteristic;
1779 ImageAlignmentOffset = rhs.ImageAlignmentOffset;
1780 ImageStartOffset = rhs.ImageStartOffset;
1781 ImageEndOffset = rhs.ImageEndOffset;
1782 FieldDominance = rhs.FieldDominance;
1783 PictureEssenceCoding = rhs.PictureEssenceCoding;
1784 CodingEquations = rhs.CodingEquations;
1785 ColorPrimaries = rhs.ColorPrimaries;
1786 AlternativeCenterCuts = rhs.AlternativeCenterCuts;
1787 ActiveWidth = rhs.ActiveWidth;
1788 ActiveHeight = rhs.ActiveHeight;
1789 ActiveXOffset = rhs.ActiveXOffset;
1790 ActiveYOffset = rhs.ActiveYOffset;
1791 VideoLineMap = rhs.VideoLineMap;
1796 GenericPictureEssenceDescriptor::Dump(FILE* stream)
1798 char identbuf[IdentBufferLen];
1804 FileDescriptor::Dump(stream);
1805 if ( ! SignalStandard.empty() ) {
1806 fprintf(stream, " %22s = %d\n", "SignalStandard", SignalStandard.get());
1808 fprintf(stream, " %22s = %d\n", "FrameLayout", FrameLayout);
1809 fprintf(stream, " %22s = %d\n", "StoredWidth", StoredWidth);
1810 fprintf(stream, " %22s = %d\n", "StoredHeight", StoredHeight);
1811 if ( ! StoredF2Offset.empty() ) {
1812 fprintf(stream, " %22s = %d\n", "StoredF2Offset", StoredF2Offset.get());
1814 if ( ! SampledWidth.empty() ) {
1815 fprintf(stream, " %22s = %d\n", "SampledWidth", SampledWidth.get());
1817 if ( ! SampledHeight.empty() ) {
1818 fprintf(stream, " %22s = %d\n", "SampledHeight", SampledHeight.get());
1820 if ( ! SampledXOffset.empty() ) {
1821 fprintf(stream, " %22s = %d\n", "SampledXOffset", SampledXOffset.get());
1823 if ( ! SampledYOffset.empty() ) {
1824 fprintf(stream, " %22s = %d\n", "SampledYOffset", SampledYOffset.get());
1826 if ( ! DisplayHeight.empty() ) {
1827 fprintf(stream, " %22s = %d\n", "DisplayHeight", DisplayHeight.get());
1829 if ( ! DisplayWidth.empty() ) {
1830 fprintf(stream, " %22s = %d\n", "DisplayWidth", DisplayWidth.get());
1832 if ( ! DisplayXOffset.empty() ) {
1833 fprintf(stream, " %22s = %d\n", "DisplayXOffset", DisplayXOffset.get());
1835 if ( ! DisplayYOffset.empty() ) {
1836 fprintf(stream, " %22s = %d\n", "DisplayYOffset", DisplayYOffset.get());
1838 if ( ! DisplayF2Offset.empty() ) {
1839 fprintf(stream, " %22s = %d\n", "DisplayF2Offset", DisplayF2Offset.get());
1841 fprintf(stream, " %22s = %s\n", "AspectRatio", AspectRatio.EncodeString(identbuf, IdentBufferLen));
1842 if ( ! ActiveFormatDescriptor.empty() ) {
1843 fprintf(stream, " %22s = %d\n", "ActiveFormatDescriptor", ActiveFormatDescriptor.get());
1845 if ( ! AlphaTransparency.empty() ) {
1846 fprintf(stream, " %22s = %d\n", "AlphaTransparency", AlphaTransparency.get());
1848 if ( ! TransferCharacteristic.empty() ) {
1849 fprintf(stream, " %22s = %s\n", "TransferCharacteristic", TransferCharacteristic.get().EncodeString(identbuf, IdentBufferLen));
1851 if ( ! ImageAlignmentOffset.empty() ) {
1852 fprintf(stream, " %22s = %d\n", "ImageAlignmentOffset", ImageAlignmentOffset.get());
1854 if ( ! ImageStartOffset.empty() ) {
1855 fprintf(stream, " %22s = %d\n", "ImageStartOffset", ImageStartOffset.get());
1857 if ( ! ImageEndOffset.empty() ) {
1858 fprintf(stream, " %22s = %d\n", "ImageEndOffset", ImageEndOffset.get());
1860 if ( ! FieldDominance.empty() ) {
1861 fprintf(stream, " %22s = %d\n", "FieldDominance", FieldDominance.get());
1863 fprintf(stream, " %22s = %s\n", "PictureEssenceCoding", PictureEssenceCoding.EncodeString(identbuf, IdentBufferLen));
1864 if ( ! CodingEquations.empty() ) {
1865 fprintf(stream, " %22s = %s\n", "CodingEquations", CodingEquations.get().EncodeString(identbuf, IdentBufferLen));
1867 if ( ! ColorPrimaries.empty() ) {
1868 fprintf(stream, " %22s = %s\n", "ColorPrimaries", ColorPrimaries.get().EncodeString(identbuf, IdentBufferLen));
1870 if ( ! AlternativeCenterCuts.empty() ) {
1871 fprintf(stream, " %22s:\n", "AlternativeCenterCuts");
1872 AlternativeCenterCuts.get().Dump(stream);
1874 if ( ! ActiveWidth.empty() ) {
1875 fprintf(stream, " %22s = %d\n", "ActiveWidth", ActiveWidth.get());
1877 if ( ! ActiveHeight.empty() ) {
1878 fprintf(stream, " %22s = %d\n", "ActiveHeight", ActiveHeight.get());
1880 if ( ! ActiveXOffset.empty() ) {
1881 fprintf(stream, " %22s = %d\n", "ActiveXOffset", ActiveXOffset.get());
1883 if ( ! ActiveYOffset.empty() ) {
1884 fprintf(stream, " %22s = %d\n", "ActiveYOffset", ActiveYOffset.get());
1886 if ( ! VideoLineMap.empty() ) {
1887 fprintf(stream, " %22s = %s\n", "VideoLineMap", VideoLineMap.get().EncodeString(identbuf, IdentBufferLen));
1893 GenericPictureEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1895 return InterchangeObject::InitFromBuffer(p, l);
1900 GenericPictureEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1902 return InterchangeObject::WriteToBuffer(Buffer);
1905 //------------------------------------------------------------------------------------------
1906 // RGBAEssenceDescriptor
1910 RGBAEssenceDescriptor::RGBAEssenceDescriptor(const Dictionary*& d) : GenericPictureEssenceDescriptor(d), m_Dict(d)
1913 m_UL = m_Dict->ul(MDD_RGBAEssenceDescriptor);
1916 RGBAEssenceDescriptor::RGBAEssenceDescriptor(const RGBAEssenceDescriptor& rhs) : GenericPictureEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
1919 m_UL = m_Dict->ul(MDD_RGBAEssenceDescriptor);
1926 RGBAEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1929 Result_t result = GenericPictureEssenceDescriptor::InitFromTLVSet(TLVSet);
1930 if ( ASDCP_SUCCESS(result) ) {
1931 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(RGBAEssenceDescriptor, ComponentMaxRef));
1932 ComponentMaxRef.set_has_value( result == RESULT_OK );
1934 if ( ASDCP_SUCCESS(result) ) {
1935 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(RGBAEssenceDescriptor, ComponentMinRef));
1936 ComponentMinRef.set_has_value( result == RESULT_OK );
1938 if ( ASDCP_SUCCESS(result) ) {
1939 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(RGBAEssenceDescriptor, AlphaMinRef));
1940 AlphaMinRef.set_has_value( result == RESULT_OK );
1942 if ( ASDCP_SUCCESS(result) ) {
1943 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(RGBAEssenceDescriptor, AlphaMaxRef));
1944 AlphaMaxRef.set_has_value( result == RESULT_OK );
1946 if ( ASDCP_SUCCESS(result) ) {
1947 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(RGBAEssenceDescriptor, ScanningDirection));
1948 ScanningDirection.set_has_value( result == RESULT_OK );
1950 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(RGBAEssenceDescriptor, PixelLayout));
1956 RGBAEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1959 Result_t result = GenericPictureEssenceDescriptor::WriteToTLVSet(TLVSet);
1960 if ( ASDCP_SUCCESS(result) && ! ComponentMaxRef.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(RGBAEssenceDescriptor, ComponentMaxRef));
1961 if ( ASDCP_SUCCESS(result) && ! ComponentMinRef.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(RGBAEssenceDescriptor, ComponentMinRef));
1962 if ( ASDCP_SUCCESS(result) && ! AlphaMinRef.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(RGBAEssenceDescriptor, AlphaMinRef));
1963 if ( ASDCP_SUCCESS(result) && ! AlphaMaxRef.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(RGBAEssenceDescriptor, AlphaMaxRef));
1964 if ( ASDCP_SUCCESS(result) && ! ScanningDirection.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(RGBAEssenceDescriptor, ScanningDirection));
1965 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(RGBAEssenceDescriptor, PixelLayout));
1971 RGBAEssenceDescriptor::Copy(const RGBAEssenceDescriptor& rhs)
1973 GenericPictureEssenceDescriptor::Copy(rhs);
1974 ComponentMaxRef = rhs.ComponentMaxRef;
1975 ComponentMinRef = rhs.ComponentMinRef;
1976 AlphaMinRef = rhs.AlphaMinRef;
1977 AlphaMaxRef = rhs.AlphaMaxRef;
1978 ScanningDirection = rhs.ScanningDirection;
1979 PixelLayout = rhs.PixelLayout;
1984 RGBAEssenceDescriptor::Dump(FILE* stream)
1986 char identbuf[IdentBufferLen];
1992 GenericPictureEssenceDescriptor::Dump(stream);
1993 if ( ! ComponentMaxRef.empty() ) {
1994 fprintf(stream, " %22s = %d\n", "ComponentMaxRef", ComponentMaxRef.get());
1996 if ( ! ComponentMinRef.empty() ) {
1997 fprintf(stream, " %22s = %d\n", "ComponentMinRef", ComponentMinRef.get());
1999 if ( ! AlphaMinRef.empty() ) {
2000 fprintf(stream, " %22s = %d\n", "AlphaMinRef", AlphaMinRef.get());
2002 if ( ! AlphaMaxRef.empty() ) {
2003 fprintf(stream, " %22s = %d\n", "AlphaMaxRef", AlphaMaxRef.get());
2005 if ( ! ScanningDirection.empty() ) {
2006 fprintf(stream, " %22s = %d\n", "ScanningDirection", ScanningDirection.get());
2008 fprintf(stream, " %22s = %s\n", "PixelLayout", PixelLayout.EncodeString(identbuf, IdentBufferLen));
2013 RGBAEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
2015 return InterchangeObject::InitFromBuffer(p, l);
2020 RGBAEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2022 return InterchangeObject::WriteToBuffer(Buffer);
2025 //------------------------------------------------------------------------------------------
2026 // JPEG2000PictureSubDescriptor
2030 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)
2033 m_UL = m_Dict->ul(MDD_JPEG2000PictureSubDescriptor);
2036 JPEG2000PictureSubDescriptor::JPEG2000PictureSubDescriptor(const JPEG2000PictureSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2039 m_UL = m_Dict->ul(MDD_JPEG2000PictureSubDescriptor);
2046 JPEG2000PictureSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
2049 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2050 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Rsize));
2051 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Xsize));
2052 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Ysize));
2053 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XOsize));
2054 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YOsize));
2055 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XTsize));
2056 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YTsize));
2057 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XTOsize));
2058 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YTOsize));
2059 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Csize));
2060 if ( ASDCP_SUCCESS(result) ) {
2061 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(JPEG2000PictureSubDescriptor, PictureComponentSizing));
2062 PictureComponentSizing.set_has_value( result == RESULT_OK );
2064 if ( ASDCP_SUCCESS(result) ) {
2065 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(JPEG2000PictureSubDescriptor, CodingStyleDefault));
2066 CodingStyleDefault.set_has_value( result == RESULT_OK );
2068 if ( ASDCP_SUCCESS(result) ) {
2069 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(JPEG2000PictureSubDescriptor, QuantizationDefault));
2070 QuantizationDefault.set_has_value( result == RESULT_OK );
2072 if ( ASDCP_SUCCESS(result) ) {
2073 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(JPEG2000PictureSubDescriptor, J2CLayout));
2074 J2CLayout.set_has_value( result == RESULT_OK );
2081 JPEG2000PictureSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2084 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2085 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Rsize));
2086 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Xsize));
2087 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Ysize));
2088 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XOsize));
2089 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YOsize));
2090 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XTsize));
2091 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YTsize));
2092 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XTOsize));
2093 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YTOsize));
2094 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Csize));
2095 if ( ASDCP_SUCCESS(result) && ! PictureComponentSizing.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, PictureComponentSizing));
2096 if ( ASDCP_SUCCESS(result) && ! CodingStyleDefault.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, CodingStyleDefault));
2097 if ( ASDCP_SUCCESS(result) && ! QuantizationDefault.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, QuantizationDefault));
2098 if ( ASDCP_SUCCESS(result) && ! J2CLayout.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, J2CLayout));
2104 JPEG2000PictureSubDescriptor::Copy(const JPEG2000PictureSubDescriptor& rhs)
2106 InterchangeObject::Copy(rhs);
2110 XOsize = rhs.XOsize;
2111 YOsize = rhs.YOsize;
2112 XTsize = rhs.XTsize;
2113 YTsize = rhs.YTsize;
2114 XTOsize = rhs.XTOsize;
2115 YTOsize = rhs.YTOsize;
2117 PictureComponentSizing = rhs.PictureComponentSizing;
2118 CodingStyleDefault = rhs.CodingStyleDefault;
2119 QuantizationDefault = rhs.QuantizationDefault;
2120 J2CLayout = rhs.J2CLayout;
2125 JPEG2000PictureSubDescriptor::Dump(FILE* stream)
2127 char identbuf[IdentBufferLen];
2133 InterchangeObject::Dump(stream);
2134 fprintf(stream, " %22s = %d\n", "Rsize", Rsize);
2135 fprintf(stream, " %22s = %d\n", "Xsize", Xsize);
2136 fprintf(stream, " %22s = %d\n", "Ysize", Ysize);
2137 fprintf(stream, " %22s = %d\n", "XOsize", XOsize);
2138 fprintf(stream, " %22s = %d\n", "YOsize", YOsize);
2139 fprintf(stream, " %22s = %d\n", "XTsize", XTsize);
2140 fprintf(stream, " %22s = %d\n", "YTsize", YTsize);
2141 fprintf(stream, " %22s = %d\n", "XTOsize", XTOsize);
2142 fprintf(stream, " %22s = %d\n", "YTOsize", YTOsize);
2143 fprintf(stream, " %22s = %d\n", "Csize", Csize);
2144 if ( ! PictureComponentSizing.empty() ) {
2145 fprintf(stream, " %22s = %s\n", "PictureComponentSizing", PictureComponentSizing.get().EncodeString(identbuf, IdentBufferLen));
2147 if ( ! CodingStyleDefault.empty() ) {
2148 fprintf(stream, " %22s = %s\n", "CodingStyleDefault", CodingStyleDefault.get().EncodeString(identbuf, IdentBufferLen));
2150 if ( ! QuantizationDefault.empty() ) {
2151 fprintf(stream, " %22s = %s\n", "QuantizationDefault", QuantizationDefault.get().EncodeString(identbuf, IdentBufferLen));
2153 if ( ! J2CLayout.empty() ) {
2154 fprintf(stream, " %22s = %s\n", "J2CLayout", J2CLayout.get().EncodeString(identbuf, IdentBufferLen));
2160 JPEG2000PictureSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
2162 return InterchangeObject::InitFromBuffer(p, l);
2167 JPEG2000PictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2169 return InterchangeObject::WriteToBuffer(Buffer);
2172 //------------------------------------------------------------------------------------------
2173 // CDCIEssenceDescriptor
2177 CDCIEssenceDescriptor::CDCIEssenceDescriptor(const Dictionary*& d) : GenericPictureEssenceDescriptor(d), m_Dict(d), ComponentDepth(0), HorizontalSubsampling(0)
2180 m_UL = m_Dict->ul(MDD_CDCIEssenceDescriptor);
2183 CDCIEssenceDescriptor::CDCIEssenceDescriptor(const CDCIEssenceDescriptor& rhs) : GenericPictureEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
2186 m_UL = m_Dict->ul(MDD_CDCIEssenceDescriptor);
2193 CDCIEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
2196 Result_t result = GenericPictureEssenceDescriptor::InitFromTLVSet(TLVSet);
2197 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, ComponentDepth));
2198 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, HorizontalSubsampling));
2199 if ( ASDCP_SUCCESS(result) ) {
2200 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, VerticalSubsampling));
2201 VerticalSubsampling.set_has_value( result == RESULT_OK );
2203 if ( ASDCP_SUCCESS(result) ) {
2204 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, ColorSiting));
2205 ColorSiting.set_has_value( result == RESULT_OK );
2207 if ( ASDCP_SUCCESS(result) ) {
2208 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, ReversedByteOrder));
2209 ReversedByteOrder.set_has_value( result == RESULT_OK );
2211 if ( ASDCP_SUCCESS(result) ) {
2212 result = TLVSet.ReadUi16(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, PaddingBits));
2213 PaddingBits.set_has_value( result == RESULT_OK );
2215 if ( ASDCP_SUCCESS(result) ) {
2216 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, AlphaSampleDepth));
2217 AlphaSampleDepth.set_has_value( result == RESULT_OK );
2219 if ( ASDCP_SUCCESS(result) ) {
2220 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, BlackRefLevel));
2221 BlackRefLevel.set_has_value( result == RESULT_OK );
2223 if ( ASDCP_SUCCESS(result) ) {
2224 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, WhiteReflevel));
2225 WhiteReflevel.set_has_value( result == RESULT_OK );
2227 if ( ASDCP_SUCCESS(result) ) {
2228 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, ColorRange));
2229 ColorRange.set_has_value( result == RESULT_OK );
2236 CDCIEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2239 Result_t result = GenericPictureEssenceDescriptor::WriteToTLVSet(TLVSet);
2240 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, ComponentDepth));
2241 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, HorizontalSubsampling));
2242 if ( ASDCP_SUCCESS(result) && ! VerticalSubsampling.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, VerticalSubsampling));
2243 if ( ASDCP_SUCCESS(result) && ! ColorSiting.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, ColorSiting));
2244 if ( ASDCP_SUCCESS(result) && ! ReversedByteOrder.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, ReversedByteOrder));
2245 if ( ASDCP_SUCCESS(result) && ! PaddingBits.empty() ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, PaddingBits));
2246 if ( ASDCP_SUCCESS(result) && ! AlphaSampleDepth.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, AlphaSampleDepth));
2247 if ( ASDCP_SUCCESS(result) && ! BlackRefLevel.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, BlackRefLevel));
2248 if ( ASDCP_SUCCESS(result) && ! WhiteReflevel.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, WhiteReflevel));
2249 if ( ASDCP_SUCCESS(result) && ! ColorRange.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, ColorRange));
2255 CDCIEssenceDescriptor::Copy(const CDCIEssenceDescriptor& rhs)
2257 GenericPictureEssenceDescriptor::Copy(rhs);
2258 ComponentDepth = rhs.ComponentDepth;
2259 HorizontalSubsampling = rhs.HorizontalSubsampling;
2260 VerticalSubsampling = rhs.VerticalSubsampling;
2261 ColorSiting = rhs.ColorSiting;
2262 ReversedByteOrder = rhs.ReversedByteOrder;
2263 PaddingBits = rhs.PaddingBits;
2264 AlphaSampleDepth = rhs.AlphaSampleDepth;
2265 BlackRefLevel = rhs.BlackRefLevel;
2266 WhiteReflevel = rhs.WhiteReflevel;
2267 ColorRange = rhs.ColorRange;
2272 CDCIEssenceDescriptor::Dump(FILE* stream)
2274 char identbuf[IdentBufferLen];
2280 GenericPictureEssenceDescriptor::Dump(stream);
2281 fprintf(stream, " %22s = %d\n", "ComponentDepth", ComponentDepth);
2282 fprintf(stream, " %22s = %d\n", "HorizontalSubsampling", HorizontalSubsampling);
2283 if ( ! VerticalSubsampling.empty() ) {
2284 fprintf(stream, " %22s = %d\n", "VerticalSubsampling", VerticalSubsampling.get());
2286 if ( ! ColorSiting.empty() ) {
2287 fprintf(stream, " %22s = %d\n", "ColorSiting", ColorSiting.get());
2289 if ( ! ReversedByteOrder.empty() ) {
2290 fprintf(stream, " %22s = %d\n", "ReversedByteOrder", ReversedByteOrder.get());
2292 if ( ! PaddingBits.empty() ) {
2293 fprintf(stream, " %22s = %d\n", "PaddingBits", PaddingBits.get());
2295 if ( ! AlphaSampleDepth.empty() ) {
2296 fprintf(stream, " %22s = %d\n", "AlphaSampleDepth", AlphaSampleDepth.get());
2298 if ( ! BlackRefLevel.empty() ) {
2299 fprintf(stream, " %22s = %d\n", "BlackRefLevel", BlackRefLevel.get());
2301 if ( ! WhiteReflevel.empty() ) {
2302 fprintf(stream, " %22s = %d\n", "WhiteReflevel", WhiteReflevel.get());
2304 if ( ! ColorRange.empty() ) {
2305 fprintf(stream, " %22s = %d\n", "ColorRange", ColorRange.get());
2311 CDCIEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
2313 return InterchangeObject::InitFromBuffer(p, l);
2318 CDCIEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2320 return InterchangeObject::WriteToBuffer(Buffer);
2323 //------------------------------------------------------------------------------------------
2324 // MPEG2VideoDescriptor
2328 MPEG2VideoDescriptor::MPEG2VideoDescriptor(const Dictionary*& d) : CDCIEssenceDescriptor(d), m_Dict(d)
2331 m_UL = m_Dict->ul(MDD_MPEG2VideoDescriptor);
2334 MPEG2VideoDescriptor::MPEG2VideoDescriptor(const MPEG2VideoDescriptor& rhs) : CDCIEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
2337 m_UL = m_Dict->ul(MDD_MPEG2VideoDescriptor);
2344 MPEG2VideoDescriptor::InitFromTLVSet(TLVReader& TLVSet)
2347 Result_t result = CDCIEssenceDescriptor::InitFromTLVSet(TLVSet);
2348 if ( ASDCP_SUCCESS(result) ) {
2349 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, SingleSequence));
2350 SingleSequence.set_has_value( result == RESULT_OK );
2352 if ( ASDCP_SUCCESS(result) ) {
2353 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, ConstantBFrames));
2354 ConstantBFrames.set_has_value( result == RESULT_OK );
2356 if ( ASDCP_SUCCESS(result) ) {
2357 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, CodedContentType));
2358 CodedContentType.set_has_value( result == RESULT_OK );
2360 if ( ASDCP_SUCCESS(result) ) {
2361 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, LowDelay));
2362 LowDelay.set_has_value( result == RESULT_OK );
2364 if ( ASDCP_SUCCESS(result) ) {
2365 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, ClosedGOP));
2366 ClosedGOP.set_has_value( result == RESULT_OK );
2368 if ( ASDCP_SUCCESS(result) ) {
2369 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, IdenticalGOP));
2370 IdenticalGOP.set_has_value( result == RESULT_OK );
2372 if ( ASDCP_SUCCESS(result) ) {
2373 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, MaxGOP));
2374 MaxGOP.set_has_value( result == RESULT_OK );
2376 if ( ASDCP_SUCCESS(result) ) {
2377 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, BPictureCount));
2378 BPictureCount.set_has_value( result == RESULT_OK );
2380 if ( ASDCP_SUCCESS(result) ) {
2381 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, BitRate));
2382 BitRate.set_has_value( result == RESULT_OK );
2384 if ( ASDCP_SUCCESS(result) ) {
2385 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, ProfileAndLevel));
2386 ProfileAndLevel.set_has_value( result == RESULT_OK );
2393 MPEG2VideoDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2396 Result_t result = CDCIEssenceDescriptor::WriteToTLVSet(TLVSet);
2397 if ( ASDCP_SUCCESS(result) && ! SingleSequence.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, SingleSequence));
2398 if ( ASDCP_SUCCESS(result) && ! ConstantBFrames.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, ConstantBFrames));
2399 if ( ASDCP_SUCCESS(result) && ! CodedContentType.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, CodedContentType));
2400 if ( ASDCP_SUCCESS(result) && ! LowDelay.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, LowDelay));
2401 if ( ASDCP_SUCCESS(result) && ! ClosedGOP.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, ClosedGOP));
2402 if ( ASDCP_SUCCESS(result) && ! IdenticalGOP.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, IdenticalGOP));
2403 if ( ASDCP_SUCCESS(result) && ! MaxGOP.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, MaxGOP));
2404 if ( ASDCP_SUCCESS(result) && ! BPictureCount.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, BPictureCount));
2405 if ( ASDCP_SUCCESS(result) && ! BitRate.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, BitRate));
2406 if ( ASDCP_SUCCESS(result) && ! ProfileAndLevel.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, ProfileAndLevel));
2412 MPEG2VideoDescriptor::Copy(const MPEG2VideoDescriptor& rhs)
2414 CDCIEssenceDescriptor::Copy(rhs);
2415 SingleSequence = rhs.SingleSequence;
2416 ConstantBFrames = rhs.ConstantBFrames;
2417 CodedContentType = rhs.CodedContentType;
2418 LowDelay = rhs.LowDelay;
2419 ClosedGOP = rhs.ClosedGOP;
2420 IdenticalGOP = rhs.IdenticalGOP;
2421 MaxGOP = rhs.MaxGOP;
2422 BPictureCount = rhs.BPictureCount;
2423 BitRate = rhs.BitRate;
2424 ProfileAndLevel = rhs.ProfileAndLevel;
2429 MPEG2VideoDescriptor::Dump(FILE* stream)
2431 char identbuf[IdentBufferLen];
2437 CDCIEssenceDescriptor::Dump(stream);
2438 if ( ! SingleSequence.empty() ) {
2439 fprintf(stream, " %22s = %d\n", "SingleSequence", SingleSequence.get());
2441 if ( ! ConstantBFrames.empty() ) {
2442 fprintf(stream, " %22s = %d\n", "ConstantBFrames", ConstantBFrames.get());
2444 if ( ! CodedContentType.empty() ) {
2445 fprintf(stream, " %22s = %d\n", "CodedContentType", CodedContentType.get());
2447 if ( ! LowDelay.empty() ) {
2448 fprintf(stream, " %22s = %d\n", "LowDelay", LowDelay.get());
2450 if ( ! ClosedGOP.empty() ) {
2451 fprintf(stream, " %22s = %d\n", "ClosedGOP", ClosedGOP.get());
2453 if ( ! IdenticalGOP.empty() ) {
2454 fprintf(stream, " %22s = %d\n", "IdenticalGOP", IdenticalGOP.get());
2456 if ( ! MaxGOP.empty() ) {
2457 fprintf(stream, " %22s = %d\n", "MaxGOP", MaxGOP.get());
2459 if ( ! BPictureCount.empty() ) {
2460 fprintf(stream, " %22s = %d\n", "BPictureCount", BPictureCount.get());
2462 if ( ! BitRate.empty() ) {
2463 fprintf(stream, " %22s = %d\n", "BitRate", BitRate.get());
2465 if ( ! ProfileAndLevel.empty() ) {
2466 fprintf(stream, " %22s = %d\n", "ProfileAndLevel", ProfileAndLevel.get());
2472 MPEG2VideoDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
2474 return InterchangeObject::InitFromBuffer(p, l);
2479 MPEG2VideoDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2481 return InterchangeObject::WriteToBuffer(Buffer);
2484 //------------------------------------------------------------------------------------------
2489 DMSegment::DMSegment(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), EventStartPosition(0), Duration(0)
2492 m_UL = m_Dict->ul(MDD_DMSegment);
2495 DMSegment::DMSegment(const DMSegment& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2498 m_UL = m_Dict->ul(MDD_DMSegment);
2505 DMSegment::InitFromTLVSet(TLVReader& TLVSet)
2508 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2509 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DMSegment, DataDefinition));
2510 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(DMSegment, EventStartPosition));
2511 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(DMSegment, Duration));
2512 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DMSegment, EventComment));
2513 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DMSegment, DMFramework));
2519 DMSegment::WriteToTLVSet(TLVWriter& TLVSet)
2522 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2523 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DMSegment, DataDefinition));
2524 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(DMSegment, EventStartPosition));
2525 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(DMSegment, Duration));
2526 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DMSegment, EventComment));
2527 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DMSegment, DMFramework));
2533 DMSegment::Copy(const DMSegment& rhs)
2535 InterchangeObject::Copy(rhs);
2536 DataDefinition = rhs.DataDefinition;
2537 EventStartPosition = rhs.EventStartPosition;
2538 Duration = rhs.Duration;
2539 EventComment = rhs.EventComment;
2540 DMFramework = rhs.DMFramework;
2545 DMSegment::Dump(FILE* stream)
2547 char identbuf[IdentBufferLen];
2553 InterchangeObject::Dump(stream);
2554 fprintf(stream, " %22s = %s\n", "DataDefinition", DataDefinition.EncodeString(identbuf, IdentBufferLen));
2555 fprintf(stream, " %22s = %s\n", "EventStartPosition", i64sz(EventStartPosition, identbuf));
2556 fprintf(stream, " %22s = %s\n", "Duration", i64sz(Duration, identbuf));
2557 fprintf(stream, " %22s = %s\n", "EventComment", EventComment.EncodeString(identbuf, IdentBufferLen));
2558 fprintf(stream, " %22s = %s\n", "DMFramework", DMFramework.EncodeString(identbuf, IdentBufferLen));
2563 DMSegment::InitFromBuffer(const byte_t* p, ui32_t l)
2565 return InterchangeObject::InitFromBuffer(p, l);
2570 DMSegment::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2572 return InterchangeObject::WriteToBuffer(Buffer);
2575 //------------------------------------------------------------------------------------------
2576 // CryptographicFramework
2580 CryptographicFramework::CryptographicFramework(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
2583 m_UL = m_Dict->ul(MDD_CryptographicFramework);
2586 CryptographicFramework::CryptographicFramework(const CryptographicFramework& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2589 m_UL = m_Dict->ul(MDD_CryptographicFramework);
2596 CryptographicFramework::InitFromTLVSet(TLVReader& TLVSet)
2599 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2600 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicFramework, ContextSR));
2606 CryptographicFramework::WriteToTLVSet(TLVWriter& TLVSet)
2609 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2610 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicFramework, ContextSR));
2616 CryptographicFramework::Copy(const CryptographicFramework& rhs)
2618 InterchangeObject::Copy(rhs);
2619 ContextSR = rhs.ContextSR;
2624 CryptographicFramework::Dump(FILE* stream)
2626 char identbuf[IdentBufferLen];
2632 InterchangeObject::Dump(stream);
2633 fprintf(stream, " %22s = %s\n", "ContextSR", ContextSR.EncodeString(identbuf, IdentBufferLen));
2638 CryptographicFramework::InitFromBuffer(const byte_t* p, ui32_t l)
2640 return InterchangeObject::InitFromBuffer(p, l);
2645 CryptographicFramework::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2647 return InterchangeObject::WriteToBuffer(Buffer);
2650 //------------------------------------------------------------------------------------------
2651 // CryptographicContext
2655 CryptographicContext::CryptographicContext(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
2658 m_UL = m_Dict->ul(MDD_CryptographicContext);
2661 CryptographicContext::CryptographicContext(const CryptographicContext& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2664 m_UL = m_Dict->ul(MDD_CryptographicContext);
2671 CryptographicContext::InitFromTLVSet(TLVReader& TLVSet)
2674 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2675 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, ContextID));
2676 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, SourceEssenceContainer));
2677 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, CipherAlgorithm));
2678 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, MICAlgorithm));
2679 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, CryptographicKeyID));
2685 CryptographicContext::WriteToTLVSet(TLVWriter& TLVSet)
2688 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2689 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, ContextID));
2690 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, SourceEssenceContainer));
2691 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, CipherAlgorithm));
2692 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, MICAlgorithm));
2693 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, CryptographicKeyID));
2699 CryptographicContext::Copy(const CryptographicContext& rhs)
2701 InterchangeObject::Copy(rhs);
2702 ContextID = rhs.ContextID;
2703 SourceEssenceContainer = rhs.SourceEssenceContainer;
2704 CipherAlgorithm = rhs.CipherAlgorithm;
2705 MICAlgorithm = rhs.MICAlgorithm;
2706 CryptographicKeyID = rhs.CryptographicKeyID;
2711 CryptographicContext::Dump(FILE* stream)
2713 char identbuf[IdentBufferLen];
2719 InterchangeObject::Dump(stream);
2720 fprintf(stream, " %22s = %s\n", "ContextID", ContextID.EncodeString(identbuf, IdentBufferLen));
2721 fprintf(stream, " %22s = %s\n", "SourceEssenceContainer", SourceEssenceContainer.EncodeString(identbuf, IdentBufferLen));
2722 fprintf(stream, " %22s = %s\n", "CipherAlgorithm", CipherAlgorithm.EncodeString(identbuf, IdentBufferLen));
2723 fprintf(stream, " %22s = %s\n", "MICAlgorithm", MICAlgorithm.EncodeString(identbuf, IdentBufferLen));
2724 fprintf(stream, " %22s = %s\n", "CryptographicKeyID", CryptographicKeyID.EncodeString(identbuf, IdentBufferLen));
2729 CryptographicContext::InitFromBuffer(const byte_t* p, ui32_t l)
2731 return InterchangeObject::InitFromBuffer(p, l);
2736 CryptographicContext::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2738 return InterchangeObject::WriteToBuffer(Buffer);
2741 //------------------------------------------------------------------------------------------
2742 // GenericDataEssenceDescriptor
2746 GenericDataEssenceDescriptor::GenericDataEssenceDescriptor(const Dictionary*& d) : FileDescriptor(d), m_Dict(d)
2749 m_UL = m_Dict->ul(MDD_GenericDataEssenceDescriptor);
2752 GenericDataEssenceDescriptor::GenericDataEssenceDescriptor(const GenericDataEssenceDescriptor& rhs) : FileDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
2755 m_UL = m_Dict->ul(MDD_GenericDataEssenceDescriptor);
2762 GenericDataEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
2765 Result_t result = FileDescriptor::InitFromTLVSet(TLVSet);
2766 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericDataEssenceDescriptor, DataEssenceCoding));
2772 GenericDataEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2775 Result_t result = FileDescriptor::WriteToTLVSet(TLVSet);
2776 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericDataEssenceDescriptor, DataEssenceCoding));
2782 GenericDataEssenceDescriptor::Copy(const GenericDataEssenceDescriptor& rhs)
2784 FileDescriptor::Copy(rhs);
2785 DataEssenceCoding = rhs.DataEssenceCoding;
2790 GenericDataEssenceDescriptor::Dump(FILE* stream)
2792 char identbuf[IdentBufferLen];
2798 FileDescriptor::Dump(stream);
2799 fprintf(stream, " %22s = %s\n", "DataEssenceCoding", DataEssenceCoding.EncodeString(identbuf, IdentBufferLen));
2804 GenericDataEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
2806 return InterchangeObject::InitFromBuffer(p, l);
2811 GenericDataEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2813 return InterchangeObject::WriteToBuffer(Buffer);
2816 //------------------------------------------------------------------------------------------
2817 // TimedTextDescriptor
2821 TimedTextDescriptor::TimedTextDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d)
2824 m_UL = m_Dict->ul(MDD_TimedTextDescriptor);
2827 TimedTextDescriptor::TimedTextDescriptor(const TimedTextDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
2830 m_UL = m_Dict->ul(MDD_TimedTextDescriptor);
2837 TimedTextDescriptor::InitFromTLVSet(TLVReader& TLVSet)
2840 Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet);
2841 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, ResourceID));
2842 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, UCSEncoding));
2843 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, NamespaceURI));
2844 if ( ASDCP_SUCCESS(result) ) {
2845 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(TimedTextDescriptor, RFC5646LanguageTagList));
2846 RFC5646LanguageTagList.set_has_value( result == RESULT_OK );
2853 TimedTextDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2856 Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet);
2857 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, ResourceID));
2858 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, UCSEncoding));
2859 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, NamespaceURI));
2860 if ( ASDCP_SUCCESS(result) && ! RFC5646LanguageTagList.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(TimedTextDescriptor, RFC5646LanguageTagList));
2866 TimedTextDescriptor::Copy(const TimedTextDescriptor& rhs)
2868 GenericDataEssenceDescriptor::Copy(rhs);
2869 ResourceID = rhs.ResourceID;
2870 UCSEncoding = rhs.UCSEncoding;
2871 NamespaceURI = rhs.NamespaceURI;
2872 RFC5646LanguageTagList = rhs.RFC5646LanguageTagList;
2877 TimedTextDescriptor::Dump(FILE* stream)
2879 char identbuf[IdentBufferLen];
2885 GenericDataEssenceDescriptor::Dump(stream);
2886 fprintf(stream, " %22s = %s\n", "ResourceID", ResourceID.EncodeString(identbuf, IdentBufferLen));
2887 fprintf(stream, " %22s = %s\n", "UCSEncoding", UCSEncoding.EncodeString(identbuf, IdentBufferLen));
2888 fprintf(stream, " %22s = %s\n", "NamespaceURI", NamespaceURI.EncodeString(identbuf, IdentBufferLen));
2889 if ( ! RFC5646LanguageTagList.empty() ) {
2890 fprintf(stream, " %22s = %s\n", "RFC5646LanguageTagList", RFC5646LanguageTagList.get().EncodeString(identbuf, IdentBufferLen));
2896 TimedTextDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
2898 return InterchangeObject::InitFromBuffer(p, l);
2903 TimedTextDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2905 return InterchangeObject::WriteToBuffer(Buffer);
2908 //------------------------------------------------------------------------------------------
2909 // TimedTextResourceSubDescriptor
2913 TimedTextResourceSubDescriptor::TimedTextResourceSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), EssenceStreamID(0)
2916 m_UL = m_Dict->ul(MDD_TimedTextResourceSubDescriptor);
2919 TimedTextResourceSubDescriptor::TimedTextResourceSubDescriptor(const TimedTextResourceSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2922 m_UL = m_Dict->ul(MDD_TimedTextResourceSubDescriptor);
2929 TimedTextResourceSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
2932 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2933 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextResourceSubDescriptor, AncillaryResourceID));
2934 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextResourceSubDescriptor, MIMEMediaType));
2935 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(TimedTextResourceSubDescriptor, EssenceStreamID));
2941 TimedTextResourceSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2944 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2945 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextResourceSubDescriptor, AncillaryResourceID));
2946 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextResourceSubDescriptor, MIMEMediaType));
2947 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(TimedTextResourceSubDescriptor, EssenceStreamID));
2953 TimedTextResourceSubDescriptor::Copy(const TimedTextResourceSubDescriptor& rhs)
2955 InterchangeObject::Copy(rhs);
2956 AncillaryResourceID = rhs.AncillaryResourceID;
2957 MIMEMediaType = rhs.MIMEMediaType;
2958 EssenceStreamID = rhs.EssenceStreamID;
2963 TimedTextResourceSubDescriptor::Dump(FILE* stream)
2965 char identbuf[IdentBufferLen];
2971 InterchangeObject::Dump(stream);
2972 fprintf(stream, " %22s = %s\n", "AncillaryResourceID", AncillaryResourceID.EncodeString(identbuf, IdentBufferLen));
2973 fprintf(stream, " %22s = %s\n", "MIMEMediaType", MIMEMediaType.EncodeString(identbuf, IdentBufferLen));
2974 fprintf(stream, " %22s = %d\n", "EssenceStreamID", EssenceStreamID);
2979 TimedTextResourceSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
2981 return InterchangeObject::InitFromBuffer(p, l);
2986 TimedTextResourceSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2988 return InterchangeObject::WriteToBuffer(Buffer);
2991 //------------------------------------------------------------------------------------------
2992 // StereoscopicPictureSubDescriptor
2996 StereoscopicPictureSubDescriptor::StereoscopicPictureSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
2999 m_UL = m_Dict->ul(MDD_StereoscopicPictureSubDescriptor);
3002 StereoscopicPictureSubDescriptor::StereoscopicPictureSubDescriptor(const StereoscopicPictureSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3005 m_UL = m_Dict->ul(MDD_StereoscopicPictureSubDescriptor);
3012 StereoscopicPictureSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3015 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3021 StereoscopicPictureSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3024 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3030 StereoscopicPictureSubDescriptor::Copy(const StereoscopicPictureSubDescriptor& rhs)
3032 InterchangeObject::Copy(rhs);
3037 StereoscopicPictureSubDescriptor::Dump(FILE* stream)
3039 char identbuf[IdentBufferLen];
3045 InterchangeObject::Dump(stream);
3050 StereoscopicPictureSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3052 return InterchangeObject::InitFromBuffer(p, l);
3057 StereoscopicPictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3059 return InterchangeObject::WriteToBuffer(Buffer);
3062 //------------------------------------------------------------------------------------------
3063 // ContainerConstraintSubDescriptor
3067 ContainerConstraintSubDescriptor::ContainerConstraintSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
3070 m_UL = m_Dict->ul(MDD_ContainerConstraintSubDescriptor);
3073 ContainerConstraintSubDescriptor::ContainerConstraintSubDescriptor(const ContainerConstraintSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3076 m_UL = m_Dict->ul(MDD_ContainerConstraintSubDescriptor);
3083 ContainerConstraintSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3086 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3092 ContainerConstraintSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3095 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3101 ContainerConstraintSubDescriptor::Copy(const ContainerConstraintSubDescriptor& rhs)
3103 InterchangeObject::Copy(rhs);
3108 ContainerConstraintSubDescriptor::Dump(FILE* stream)
3110 char identbuf[IdentBufferLen];
3116 InterchangeObject::Dump(stream);
3121 ContainerConstraintSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3123 return InterchangeObject::InitFromBuffer(p, l);
3128 ContainerConstraintSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3130 return InterchangeObject::WriteToBuffer(Buffer);
3133 //------------------------------------------------------------------------------------------
3138 NetworkLocator::NetworkLocator(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
3141 m_UL = m_Dict->ul(MDD_NetworkLocator);
3144 NetworkLocator::NetworkLocator(const NetworkLocator& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3147 m_UL = m_Dict->ul(MDD_NetworkLocator);
3154 NetworkLocator::InitFromTLVSet(TLVReader& TLVSet)
3157 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3158 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(NetworkLocator, URLString));
3164 NetworkLocator::WriteToTLVSet(TLVWriter& TLVSet)
3167 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3168 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(NetworkLocator, URLString));
3174 NetworkLocator::Copy(const NetworkLocator& rhs)
3176 InterchangeObject::Copy(rhs);
3177 URLString = rhs.URLString;
3182 NetworkLocator::Dump(FILE* stream)
3184 char identbuf[IdentBufferLen];
3190 InterchangeObject::Dump(stream);
3191 fprintf(stream, " %22s = %s\n", "URLString", URLString.EncodeString(identbuf, IdentBufferLen));
3196 NetworkLocator::InitFromBuffer(const byte_t* p, ui32_t l)
3198 return InterchangeObject::InitFromBuffer(p, l);
3203 NetworkLocator::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3205 return InterchangeObject::WriteToBuffer(Buffer);
3208 //------------------------------------------------------------------------------------------
3209 // MCALabelSubDescriptor
3213 MCALabelSubDescriptor::MCALabelSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
3216 m_UL = m_Dict->ul(MDD_MCALabelSubDescriptor);
3219 MCALabelSubDescriptor::MCALabelSubDescriptor(const MCALabelSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3222 m_UL = m_Dict->ul(MDD_MCALabelSubDescriptor);
3229 MCALabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3232 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3233 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(MCALabelSubDescriptor, MCALabelDictionaryID));
3234 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(MCALabelSubDescriptor, MCALinkID));
3235 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(MCALabelSubDescriptor, MCATagSymbol));
3236 if ( ASDCP_SUCCESS(result) ) {
3237 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCATagName));
3238 MCATagName.set_has_value( result == RESULT_OK );
3240 if ( ASDCP_SUCCESS(result) ) {
3241 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAChannelID));
3242 MCAChannelID.set_has_value( result == RESULT_OK );
3244 if ( ASDCP_SUCCESS(result) ) {
3245 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, RFC5646SpokenLanguage));
3246 RFC5646SpokenLanguage.set_has_value( result == RESULT_OK );
3248 if ( ASDCP_SUCCESS(result) ) {
3249 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCATitle));
3250 MCATitle.set_has_value( result == RESULT_OK );
3252 if ( ASDCP_SUCCESS(result) ) {
3253 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCATitleVersion));
3254 MCATitleVersion.set_has_value( result == RESULT_OK );
3256 if ( ASDCP_SUCCESS(result) ) {
3257 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCATitleSubVersion));
3258 MCATitleSubVersion.set_has_value( result == RESULT_OK );
3260 if ( ASDCP_SUCCESS(result) ) {
3261 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAEpisode));
3262 MCAEpisode.set_has_value( result == RESULT_OK );
3264 if ( ASDCP_SUCCESS(result) ) {
3265 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAPartitionKind));
3266 MCAPartitionKind.set_has_value( result == RESULT_OK );
3268 if ( ASDCP_SUCCESS(result) ) {
3269 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAPartitionNumber));
3270 MCAPartitionNumber.set_has_value( result == RESULT_OK );
3272 if ( ASDCP_SUCCESS(result) ) {
3273 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAAudioContentKind));
3274 MCAAudioContentKind.set_has_value( result == RESULT_OK );
3276 if ( ASDCP_SUCCESS(result) ) {
3277 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAAudioElementKind));
3278 MCAAudioElementKind.set_has_value( result == RESULT_OK );
3285 MCALabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3288 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3289 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(MCALabelSubDescriptor, MCALabelDictionaryID));
3290 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(MCALabelSubDescriptor, MCALinkID));
3291 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(MCALabelSubDescriptor, MCATagSymbol));
3292 if ( ASDCP_SUCCESS(result) && ! MCATagName.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCATagName));
3293 if ( ASDCP_SUCCESS(result) && ! MCAChannelID.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAChannelID));
3294 if ( ASDCP_SUCCESS(result) && ! RFC5646SpokenLanguage.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, RFC5646SpokenLanguage));
3295 if ( ASDCP_SUCCESS(result) && ! MCATitle.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCATitle));
3296 if ( ASDCP_SUCCESS(result) && ! MCATitleVersion.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCATitleVersion));
3297 if ( ASDCP_SUCCESS(result) && ! MCATitleSubVersion.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCATitleSubVersion));
3298 if ( ASDCP_SUCCESS(result) && ! MCAEpisode.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAEpisode));
3299 if ( ASDCP_SUCCESS(result) && ! MCAPartitionKind.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAPartitionKind));
3300 if ( ASDCP_SUCCESS(result) && ! MCAPartitionNumber.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAPartitionNumber));
3301 if ( ASDCP_SUCCESS(result) && ! MCAAudioContentKind.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAAudioContentKind));
3302 if ( ASDCP_SUCCESS(result) && ! MCAAudioElementKind.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAAudioElementKind));
3308 MCALabelSubDescriptor::Copy(const MCALabelSubDescriptor& rhs)
3310 InterchangeObject::Copy(rhs);
3311 MCALabelDictionaryID = rhs.MCALabelDictionaryID;
3312 MCALinkID = rhs.MCALinkID;
3313 MCATagSymbol = rhs.MCATagSymbol;
3314 MCATagName = rhs.MCATagName;
3315 MCAChannelID = rhs.MCAChannelID;
3316 RFC5646SpokenLanguage = rhs.RFC5646SpokenLanguage;
3317 MCATitle = rhs.MCATitle;
3318 MCATitleVersion = rhs.MCATitleVersion;
3319 MCATitleSubVersion = rhs.MCATitleSubVersion;
3320 MCAEpisode = rhs.MCAEpisode;
3321 MCAPartitionKind = rhs.MCAPartitionKind;
3322 MCAPartitionNumber = rhs.MCAPartitionNumber;
3323 MCAAudioContentKind = rhs.MCAAudioContentKind;
3324 MCAAudioElementKind = rhs.MCAAudioElementKind;
3329 MCALabelSubDescriptor::Dump(FILE* stream)
3331 char identbuf[IdentBufferLen];
3337 InterchangeObject::Dump(stream);
3338 fprintf(stream, " %22s = %s\n", "MCALabelDictionaryID", MCALabelDictionaryID.EncodeString(identbuf, IdentBufferLen));
3339 fprintf(stream, " %22s = %s\n", "MCALinkID", MCALinkID.EncodeString(identbuf, IdentBufferLen));
3340 fprintf(stream, " %22s = %s\n", "MCATagSymbol", MCATagSymbol.EncodeString(identbuf, IdentBufferLen));
3341 if ( ! MCATagName.empty() ) {
3342 fprintf(stream, " %22s = %s\n", "MCATagName", MCATagName.get().EncodeString(identbuf, IdentBufferLen));
3344 if ( ! MCAChannelID.empty() ) {
3345 fprintf(stream, " %22s = %d\n", "MCAChannelID", MCAChannelID.get());
3347 if ( ! RFC5646SpokenLanguage.empty() ) {
3348 fprintf(stream, " %22s = %s\n", "RFC5646SpokenLanguage", RFC5646SpokenLanguage.get().EncodeString(identbuf, IdentBufferLen));
3350 if ( ! MCATitle.empty() ) {
3351 fprintf(stream, " %22s = %s\n", "MCATitle", MCATitle.get().EncodeString(identbuf, IdentBufferLen));
3353 if ( ! MCATitleVersion.empty() ) {
3354 fprintf(stream, " %22s = %s\n", "MCATitleVersion", MCATitleVersion.get().EncodeString(identbuf, IdentBufferLen));
3356 if ( ! MCATitleSubVersion.empty() ) {
3357 fprintf(stream, " %22s = %s\n", "MCATitleSubVersion", MCATitleSubVersion.get().EncodeString(identbuf, IdentBufferLen));
3359 if ( ! MCAEpisode.empty() ) {
3360 fprintf(stream, " %22s = %s\n", "MCAEpisode", MCAEpisode.get().EncodeString(identbuf, IdentBufferLen));
3362 if ( ! MCAPartitionKind.empty() ) {
3363 fprintf(stream, " %22s = %s\n", "MCAPartitionKind", MCAPartitionKind.get().EncodeString(identbuf, IdentBufferLen));
3365 if ( ! MCAPartitionNumber.empty() ) {
3366 fprintf(stream, " %22s = %s\n", "MCAPartitionNumber", MCAPartitionNumber.get().EncodeString(identbuf, IdentBufferLen));
3368 if ( ! MCAAudioContentKind.empty() ) {
3369 fprintf(stream, " %22s = %s\n", "MCAAudioContentKind", MCAAudioContentKind.get().EncodeString(identbuf, IdentBufferLen));
3371 if ( ! MCAAudioElementKind.empty() ) {
3372 fprintf(stream, " %22s = %s\n", "MCAAudioElementKind", MCAAudioElementKind.get().EncodeString(identbuf, IdentBufferLen));
3378 MCALabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3380 return InterchangeObject::InitFromBuffer(p, l);
3385 MCALabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3387 return InterchangeObject::WriteToBuffer(Buffer);
3390 //------------------------------------------------------------------------------------------
3391 // AudioChannelLabelSubDescriptor
3395 AudioChannelLabelSubDescriptor::AudioChannelLabelSubDescriptor(const Dictionary*& d) : MCALabelSubDescriptor(d), m_Dict(d)
3398 m_UL = m_Dict->ul(MDD_AudioChannelLabelSubDescriptor);
3401 AudioChannelLabelSubDescriptor::AudioChannelLabelSubDescriptor(const AudioChannelLabelSubDescriptor& rhs) : MCALabelSubDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3404 m_UL = m_Dict->ul(MDD_AudioChannelLabelSubDescriptor);
3411 AudioChannelLabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3414 Result_t result = MCALabelSubDescriptor::InitFromTLVSet(TLVSet);
3415 if ( ASDCP_SUCCESS(result) ) {
3416 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(AudioChannelLabelSubDescriptor, SoundfieldGroupLinkID));
3417 SoundfieldGroupLinkID.set_has_value( result == RESULT_OK );
3424 AudioChannelLabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3427 Result_t result = MCALabelSubDescriptor::WriteToTLVSet(TLVSet);
3428 if ( ASDCP_SUCCESS(result) && ! SoundfieldGroupLinkID.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(AudioChannelLabelSubDescriptor, SoundfieldGroupLinkID));
3434 AudioChannelLabelSubDescriptor::Copy(const AudioChannelLabelSubDescriptor& rhs)
3436 MCALabelSubDescriptor::Copy(rhs);
3437 SoundfieldGroupLinkID = rhs.SoundfieldGroupLinkID;
3442 AudioChannelLabelSubDescriptor::Dump(FILE* stream)
3444 char identbuf[IdentBufferLen];
3450 MCALabelSubDescriptor::Dump(stream);
3451 if ( ! SoundfieldGroupLinkID.empty() ) {
3452 fprintf(stream, " %22s = %s\n", "SoundfieldGroupLinkID", SoundfieldGroupLinkID.get().EncodeString(identbuf, IdentBufferLen));
3458 AudioChannelLabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3460 return InterchangeObject::InitFromBuffer(p, l);
3465 AudioChannelLabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3467 return InterchangeObject::WriteToBuffer(Buffer);
3470 //------------------------------------------------------------------------------------------
3471 // SoundfieldGroupLabelSubDescriptor
3475 SoundfieldGroupLabelSubDescriptor::SoundfieldGroupLabelSubDescriptor(const Dictionary*& d) : MCALabelSubDescriptor(d), m_Dict(d)
3478 m_UL = m_Dict->ul(MDD_SoundfieldGroupLabelSubDescriptor);
3481 SoundfieldGroupLabelSubDescriptor::SoundfieldGroupLabelSubDescriptor(const SoundfieldGroupLabelSubDescriptor& rhs) : MCALabelSubDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3484 m_UL = m_Dict->ul(MDD_SoundfieldGroupLabelSubDescriptor);
3491 SoundfieldGroupLabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3494 Result_t result = MCALabelSubDescriptor::InitFromTLVSet(TLVSet);
3495 if ( ASDCP_SUCCESS(result) ) {
3496 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(SoundfieldGroupLabelSubDescriptor, GroupOfSoundfieldGroupsLinkID));
3503 SoundfieldGroupLabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3506 Result_t result = MCALabelSubDescriptor::WriteToTLVSet(TLVSet);
3507 if ( ASDCP_SUCCESS(result) && ! GroupOfSoundfieldGroupsLinkID.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(SoundfieldGroupLabelSubDescriptor, GroupOfSoundfieldGroupsLinkID));
3513 SoundfieldGroupLabelSubDescriptor::Copy(const SoundfieldGroupLabelSubDescriptor& rhs)
3515 MCALabelSubDescriptor::Copy(rhs);
3516 GroupOfSoundfieldGroupsLinkID = rhs.GroupOfSoundfieldGroupsLinkID;
3521 SoundfieldGroupLabelSubDescriptor::Dump(FILE* stream)
3523 char identbuf[IdentBufferLen];
3529 MCALabelSubDescriptor::Dump(stream);
3530 if ( ! GroupOfSoundfieldGroupsLinkID.empty() ) {
3531 fprintf(stream, " %22s:\n", "GroupOfSoundfieldGroupsLinkID");
3532 GroupOfSoundfieldGroupsLinkID.get().Dump(stream);
3538 SoundfieldGroupLabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3540 return InterchangeObject::InitFromBuffer(p, l);
3545 SoundfieldGroupLabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3547 return InterchangeObject::WriteToBuffer(Buffer);
3550 //------------------------------------------------------------------------------------------
3551 // GroupOfSoundfieldGroupsLabelSubDescriptor
3555 GroupOfSoundfieldGroupsLabelSubDescriptor::GroupOfSoundfieldGroupsLabelSubDescriptor(const Dictionary*& d) : MCALabelSubDescriptor(d), m_Dict(d)
3558 m_UL = m_Dict->ul(MDD_GroupOfSoundfieldGroupsLabelSubDescriptor);
3561 GroupOfSoundfieldGroupsLabelSubDescriptor::GroupOfSoundfieldGroupsLabelSubDescriptor(const GroupOfSoundfieldGroupsLabelSubDescriptor& rhs) : MCALabelSubDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3564 m_UL = m_Dict->ul(MDD_GroupOfSoundfieldGroupsLabelSubDescriptor);
3571 GroupOfSoundfieldGroupsLabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3574 Result_t result = MCALabelSubDescriptor::InitFromTLVSet(TLVSet);
3580 GroupOfSoundfieldGroupsLabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3583 Result_t result = MCALabelSubDescriptor::WriteToTLVSet(TLVSet);
3589 GroupOfSoundfieldGroupsLabelSubDescriptor::Copy(const GroupOfSoundfieldGroupsLabelSubDescriptor& rhs)
3591 MCALabelSubDescriptor::Copy(rhs);
3596 GroupOfSoundfieldGroupsLabelSubDescriptor::Dump(FILE* stream)
3598 char identbuf[IdentBufferLen];
3604 MCALabelSubDescriptor::Dump(stream);
3609 GroupOfSoundfieldGroupsLabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3611 return InterchangeObject::InitFromBuffer(p, l);
3616 GroupOfSoundfieldGroupsLabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3618 return InterchangeObject::WriteToBuffer(Buffer);
3621 //------------------------------------------------------------------------------------------
3626 DCDataDescriptor::DCDataDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d)
3629 m_UL = m_Dict->ul(MDD_DCDataDescriptor);
3632 DCDataDescriptor::DCDataDescriptor(const DCDataDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3635 m_UL = m_Dict->ul(MDD_DCDataDescriptor);
3642 DCDataDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3645 Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet);
3651 DCDataDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3654 Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet);
3660 DCDataDescriptor::Copy(const DCDataDescriptor& rhs)
3662 GenericDataEssenceDescriptor::Copy(rhs);
3667 DCDataDescriptor::Dump(FILE* stream)
3669 char identbuf[IdentBufferLen];
3675 GenericDataEssenceDescriptor::Dump(stream);
3680 DCDataDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3682 return InterchangeObject::InitFromBuffer(p, l);
3687 DCDataDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3689 return InterchangeObject::WriteToBuffer(Buffer);
3692 //------------------------------------------------------------------------------------------
3693 // PrivateDCDataDescriptor
3697 PrivateDCDataDescriptor::PrivateDCDataDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d)
3700 m_UL = m_Dict->ul(MDD_PrivateDCDataDescriptor);
3703 PrivateDCDataDescriptor::PrivateDCDataDescriptor(const PrivateDCDataDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3706 m_UL = m_Dict->ul(MDD_PrivateDCDataDescriptor);
3713 PrivateDCDataDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3716 Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet);
3722 PrivateDCDataDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3725 Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet);
3731 PrivateDCDataDescriptor::Copy(const PrivateDCDataDescriptor& rhs)
3733 GenericDataEssenceDescriptor::Copy(rhs);
3738 PrivateDCDataDescriptor::Dump(FILE* stream)
3740 char identbuf[IdentBufferLen];
3746 GenericDataEssenceDescriptor::Dump(stream);
3751 PrivateDCDataDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3753 return InterchangeObject::InitFromBuffer(p, l);
3758 PrivateDCDataDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3760 return InterchangeObject::WriteToBuffer(Buffer);
3763 //------------------------------------------------------------------------------------------
3764 // DolbyAtmosSubDescriptor
3768 DolbyAtmosSubDescriptor::DolbyAtmosSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), FirstFrame(0), MaxChannelCount(0), MaxObjectCount(0), AtmosVersion(0)
3771 m_UL = m_Dict->ul(MDD_DolbyAtmosSubDescriptor);
3774 DolbyAtmosSubDescriptor::DolbyAtmosSubDescriptor(const DolbyAtmosSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3777 m_UL = m_Dict->ul(MDD_DolbyAtmosSubDescriptor);
3784 DolbyAtmosSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3787 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3788 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, AtmosID));
3789 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, FirstFrame));
3790 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, MaxChannelCount));
3791 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, MaxObjectCount));
3792 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, AtmosVersion));
3798 DolbyAtmosSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3801 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3802 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, AtmosID));
3803 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, FirstFrame));
3804 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, MaxChannelCount));
3805 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, MaxObjectCount));
3806 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, AtmosVersion));
3812 DolbyAtmosSubDescriptor::Copy(const DolbyAtmosSubDescriptor& rhs)
3814 InterchangeObject::Copy(rhs);
3815 AtmosID = rhs.AtmosID;
3816 FirstFrame = rhs.FirstFrame;
3817 MaxChannelCount = rhs.MaxChannelCount;
3818 MaxObjectCount = rhs.MaxObjectCount;
3819 AtmosVersion = rhs.AtmosVersion;
3824 DolbyAtmosSubDescriptor::Dump(FILE* stream)
3826 char identbuf[IdentBufferLen];
3832 InterchangeObject::Dump(stream);
3833 fprintf(stream, " %22s = %s\n", "AtmosID", AtmosID.EncodeString(identbuf, IdentBufferLen));
3834 fprintf(stream, " %22s = %d\n", "FirstFrame", FirstFrame);
3835 fprintf(stream, " %22s = %d\n", "MaxChannelCount", MaxChannelCount);
3836 fprintf(stream, " %22s = %d\n", "MaxObjectCount", MaxObjectCount);
3837 fprintf(stream, " %22s = %d\n", "AtmosVersion", AtmosVersion);
3842 DolbyAtmosSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3844 return InterchangeObject::InitFromBuffer(p, l);
3849 DolbyAtmosSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3851 return InterchangeObject::WriteToBuffer(Buffer);
3854 //------------------------------------------------------------------------------------------
3855 // PHDRMetadataTrackSubDescriptor
3859 PHDRMetadataTrackSubDescriptor::PHDRMetadataTrackSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), SourceTrackID(0), SimplePayloadSID(0)
3862 m_UL = m_Dict->ul(MDD_PHDRMetadataTrackSubDescriptor);
3865 PHDRMetadataTrackSubDescriptor::PHDRMetadataTrackSubDescriptor(const PHDRMetadataTrackSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3868 m_UL = m_Dict->ul(MDD_PHDRMetadataTrackSubDescriptor);
3875 PHDRMetadataTrackSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3878 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3879 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(PHDRMetadataTrackSubDescriptor, DataDefinition));
3880 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(PHDRMetadataTrackSubDescriptor, SourceTrackID));
3881 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(PHDRMetadataTrackSubDescriptor, SimplePayloadSID));
3887 PHDRMetadataTrackSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3890 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3891 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(PHDRMetadataTrackSubDescriptor, DataDefinition));
3892 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(PHDRMetadataTrackSubDescriptor, SourceTrackID));
3893 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(PHDRMetadataTrackSubDescriptor, SimplePayloadSID));
3899 PHDRMetadataTrackSubDescriptor::Copy(const PHDRMetadataTrackSubDescriptor& rhs)
3901 InterchangeObject::Copy(rhs);
3902 DataDefinition = rhs.DataDefinition;
3903 SourceTrackID = rhs.SourceTrackID;
3904 SimplePayloadSID = rhs.SimplePayloadSID;
3909 PHDRMetadataTrackSubDescriptor::Dump(FILE* stream)
3911 char identbuf[IdentBufferLen];
3917 InterchangeObject::Dump(stream);
3918 fprintf(stream, " %22s = %s\n", "DataDefinition", DataDefinition.EncodeString(identbuf, IdentBufferLen));
3919 fprintf(stream, " %22s = %d\n", "SourceTrackID", SourceTrackID);
3920 fprintf(stream, " %22s = %d\n", "SimplePayloadSID", SimplePayloadSID);
3925 PHDRMetadataTrackSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3927 return InterchangeObject::InitFromBuffer(p, l);
3932 PHDRMetadataTrackSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3934 return InterchangeObject::WriteToBuffer(Buffer);
3937 //------------------------------------------------------------------------------------------
3938 // PIMFDynamicMetadataDescriptor
3942 PIMFDynamicMetadataDescriptor::PIMFDynamicMetadataDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d), GlobalPayloadSID(0)
3945 m_UL = m_Dict->ul(MDD_PIMFDynamicMetadataDescriptor);
3948 PIMFDynamicMetadataDescriptor::PIMFDynamicMetadataDescriptor(const PIMFDynamicMetadataDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3951 m_UL = m_Dict->ul(MDD_PIMFDynamicMetadataDescriptor);
3958 PIMFDynamicMetadataDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3961 Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet);
3962 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(PIMFDynamicMetadataDescriptor, GlobalPayloadSID));
3968 PIMFDynamicMetadataDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3971 Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet);
3972 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(PIMFDynamicMetadataDescriptor, GlobalPayloadSID));
3978 PIMFDynamicMetadataDescriptor::Copy(const PIMFDynamicMetadataDescriptor& rhs)
3980 GenericDataEssenceDescriptor::Copy(rhs);
3981 GlobalPayloadSID = rhs.GlobalPayloadSID;
3986 PIMFDynamicMetadataDescriptor::Dump(FILE* stream)
3988 char identbuf[IdentBufferLen];
3994 GenericDataEssenceDescriptor::Dump(stream);
3995 fprintf(stream, " %22s = %d\n", "GlobalPayloadSID", GlobalPayloadSID);
4000 PIMFDynamicMetadataDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
4002 return InterchangeObject::InitFromBuffer(p, l);
4007 PIMFDynamicMetadataDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
4009 return InterchangeObject::WriteToBuffer(Buffer);