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* NetworkLocator_Factory(const Dictionary*& Dict) { return new NetworkLocator(Dict); }
72 static InterchangeObject* MCALabelSubDescriptor_Factory(const Dictionary*& Dict) { return new MCALabelSubDescriptor(Dict); }
73 static InterchangeObject* AudioChannelLabelSubDescriptor_Factory(const Dictionary*& Dict) { return new AudioChannelLabelSubDescriptor(Dict); }
74 static InterchangeObject* SoundfieldGroupLabelSubDescriptor_Factory(const Dictionary*& Dict) { return new SoundfieldGroupLabelSubDescriptor(Dict); }
75 static InterchangeObject* GroupOfSoundfieldGroupsLabelSubDescriptor_Factory(const Dictionary*& Dict) { return new GroupOfSoundfieldGroupsLabelSubDescriptor(Dict); }
76 static InterchangeObject* DCDataDescriptor_Factory(const Dictionary*& Dict) { return new DCDataDescriptor(Dict); }
77 static InterchangeObject* DolbyAtmosSubDescriptor_Factory(const Dictionary*& Dict) { return new DolbyAtmosSubDescriptor(Dict); }
81 ASDCP::MXF::Metadata_InitTypes(const Dictionary*& Dict)
84 SetObjectFactory(Dict->ul(MDD_Preface), Preface_Factory);
85 SetObjectFactory(Dict->ul(MDD_IndexTableSegment), IndexTableSegment_Factory);
87 SetObjectFactory(Dict->ul(MDD_Identification), Identification_Factory);
88 SetObjectFactory(Dict->ul(MDD_ContentStorage), ContentStorage_Factory);
89 SetObjectFactory(Dict->ul(MDD_EssenceContainerData), EssenceContainerData_Factory);
90 SetObjectFactory(Dict->ul(MDD_MaterialPackage), MaterialPackage_Factory);
91 SetObjectFactory(Dict->ul(MDD_SourcePackage), SourcePackage_Factory);
92 SetObjectFactory(Dict->ul(MDD_StaticTrack), StaticTrack_Factory);
93 SetObjectFactory(Dict->ul(MDD_Track), Track_Factory);
94 SetObjectFactory(Dict->ul(MDD_Sequence), Sequence_Factory);
95 SetObjectFactory(Dict->ul(MDD_SourceClip), SourceClip_Factory);
96 SetObjectFactory(Dict->ul(MDD_TimecodeComponent), TimecodeComponent_Factory);
97 SetObjectFactory(Dict->ul(MDD_FileDescriptor), FileDescriptor_Factory);
98 SetObjectFactory(Dict->ul(MDD_GenericSoundEssenceDescriptor), GenericSoundEssenceDescriptor_Factory);
99 SetObjectFactory(Dict->ul(MDD_WaveAudioDescriptor), WaveAudioDescriptor_Factory);
100 SetObjectFactory(Dict->ul(MDD_GenericPictureEssenceDescriptor), GenericPictureEssenceDescriptor_Factory);
101 SetObjectFactory(Dict->ul(MDD_RGBAEssenceDescriptor), RGBAEssenceDescriptor_Factory);
102 SetObjectFactory(Dict->ul(MDD_JPEG2000PictureSubDescriptor), JPEG2000PictureSubDescriptor_Factory);
103 SetObjectFactory(Dict->ul(MDD_CDCIEssenceDescriptor), CDCIEssenceDescriptor_Factory);
104 SetObjectFactory(Dict->ul(MDD_MPEG2VideoDescriptor), MPEG2VideoDescriptor_Factory);
105 SetObjectFactory(Dict->ul(MDD_DMSegment), DMSegment_Factory);
106 SetObjectFactory(Dict->ul(MDD_CryptographicFramework), CryptographicFramework_Factory);
107 SetObjectFactory(Dict->ul(MDD_CryptographicContext), CryptographicContext_Factory);
108 SetObjectFactory(Dict->ul(MDD_GenericDataEssenceDescriptor), GenericDataEssenceDescriptor_Factory);
109 SetObjectFactory(Dict->ul(MDD_TimedTextDescriptor), TimedTextDescriptor_Factory);
110 SetObjectFactory(Dict->ul(MDD_TimedTextResourceSubDescriptor), TimedTextResourceSubDescriptor_Factory);
111 SetObjectFactory(Dict->ul(MDD_StereoscopicPictureSubDescriptor), StereoscopicPictureSubDescriptor_Factory);
112 SetObjectFactory(Dict->ul(MDD_NetworkLocator), NetworkLocator_Factory);
113 SetObjectFactory(Dict->ul(MDD_MCALabelSubDescriptor), MCALabelSubDescriptor_Factory);
114 SetObjectFactory(Dict->ul(MDD_AudioChannelLabelSubDescriptor), AudioChannelLabelSubDescriptor_Factory);
115 SetObjectFactory(Dict->ul(MDD_SoundfieldGroupLabelSubDescriptor), SoundfieldGroupLabelSubDescriptor_Factory);
116 SetObjectFactory(Dict->ul(MDD_GroupOfSoundfieldGroupsLabelSubDescriptor), GroupOfSoundfieldGroupsLabelSubDescriptor_Factory);
117 SetObjectFactory(Dict->ul(MDD_DCDataDescriptor), DCDataDescriptor_Factory);
118 SetObjectFactory(Dict->ul(MDD_DolbyAtmosSubDescriptor), DolbyAtmosSubDescriptor_Factory);
121 //------------------------------------------------------------------------------------------
126 //------------------------------------------------------------------------------------------
131 Identification::Identification(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
134 m_UL = m_Dict->ul(MDD_Identification);
137 Identification::Identification(const Identification& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
140 m_UL = m_Dict->ul(MDD_Identification);
147 Identification::InitFromTLVSet(TLVReader& TLVSet)
150 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
151 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ThisGenerationUID));
152 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, CompanyName));
153 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ProductName));
154 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ProductVersion));
155 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, VersionString));
156 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ProductUID));
157 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ModificationDate));
158 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ToolkitVersion));
159 if ( ASDCP_SUCCESS(result) ) {
160 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(Identification, Platform));
161 Platform.set_has_value( result == RESULT_OK );
168 Identification::WriteToTLVSet(TLVWriter& TLVSet)
171 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
172 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ThisGenerationUID));
173 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, CompanyName));
174 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ProductName));
175 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ProductVersion));
176 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, VersionString));
177 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ProductUID));
178 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ModificationDate));
179 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ToolkitVersion));
180 if ( ASDCP_SUCCESS(result) && ! Platform.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(Identification, Platform));
186 Identification::Copy(const Identification& rhs)
188 InterchangeObject::Copy(rhs);
189 ThisGenerationUID = rhs.ThisGenerationUID;
190 CompanyName = rhs.CompanyName;
191 ProductName = rhs.ProductName;
192 ProductVersion = rhs.ProductVersion;
193 VersionString = rhs.VersionString;
194 ProductUID = rhs.ProductUID;
195 ModificationDate = rhs.ModificationDate;
196 ToolkitVersion = rhs.ToolkitVersion;
197 Platform = rhs.Platform;
202 Identification::Dump(FILE* stream)
204 char identbuf[IdentBufferLen];
210 InterchangeObject::Dump(stream);
211 fprintf(stream, " %22s = %s\n", "ThisGenerationUID", ThisGenerationUID.EncodeString(identbuf, IdentBufferLen));
212 fprintf(stream, " %22s = %s\n", "CompanyName", CompanyName.EncodeString(identbuf, IdentBufferLen));
213 fprintf(stream, " %22s = %s\n", "ProductName", ProductName.EncodeString(identbuf, IdentBufferLen));
214 fprintf(stream, " %22s = %s\n", "ProductVersion", ProductVersion.EncodeString(identbuf, IdentBufferLen));
215 fprintf(stream, " %22s = %s\n", "VersionString", VersionString.EncodeString(identbuf, IdentBufferLen));
216 fprintf(stream, " %22s = %s\n", "ProductUID", ProductUID.EncodeString(identbuf, IdentBufferLen));
217 fprintf(stream, " %22s = %s\n", "ModificationDate", ModificationDate.EncodeString(identbuf, IdentBufferLen));
218 fprintf(stream, " %22s = %s\n", "ToolkitVersion", ToolkitVersion.EncodeString(identbuf, IdentBufferLen));
219 if ( ! Platform.empty() ) {
220 fprintf(stream, " %22s = %s\n", "Platform", Platform.get().EncodeString(identbuf, IdentBufferLen));
226 Identification::InitFromBuffer(const byte_t* p, ui32_t l)
228 return InterchangeObject::InitFromBuffer(p, l);
233 Identification::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
235 return InterchangeObject::WriteToBuffer(Buffer);
238 //------------------------------------------------------------------------------------------
243 ContentStorage::ContentStorage(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
246 m_UL = m_Dict->ul(MDD_ContentStorage);
249 ContentStorage::ContentStorage(const ContentStorage& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
252 m_UL = m_Dict->ul(MDD_ContentStorage);
259 ContentStorage::InitFromTLVSet(TLVReader& TLVSet)
262 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
263 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(ContentStorage, Packages));
264 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(ContentStorage, EssenceContainerData));
270 ContentStorage::WriteToTLVSet(TLVWriter& TLVSet)
273 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
274 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(ContentStorage, Packages));
275 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(ContentStorage, EssenceContainerData));
281 ContentStorage::Copy(const ContentStorage& rhs)
283 InterchangeObject::Copy(rhs);
284 Packages = rhs.Packages;
285 EssenceContainerData = rhs.EssenceContainerData;
290 ContentStorage::Dump(FILE* stream)
292 char identbuf[IdentBufferLen];
298 InterchangeObject::Dump(stream);
299 fprintf(stream, " %22s:\n", "Packages");
300 Packages.Dump(stream);
301 fprintf(stream, " %22s:\n", "EssenceContainerData");
302 EssenceContainerData.Dump(stream);
307 ContentStorage::InitFromBuffer(const byte_t* p, ui32_t l)
309 return InterchangeObject::InitFromBuffer(p, l);
314 ContentStorage::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
316 return InterchangeObject::WriteToBuffer(Buffer);
319 //------------------------------------------------------------------------------------------
320 // EssenceContainerData
324 EssenceContainerData::EssenceContainerData(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), IndexSID(0)
327 m_UL = m_Dict->ul(MDD_EssenceContainerData);
330 EssenceContainerData::EssenceContainerData(const EssenceContainerData& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
333 m_UL = m_Dict->ul(MDD_EssenceContainerData);
340 EssenceContainerData::InitFromTLVSet(TLVReader& TLVSet)
343 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
344 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(EssenceContainerData, LinkedPackageUID));
345 if ( ASDCP_SUCCESS(result) ) {
346 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(EssenceContainerData, IndexSID));
347 IndexSID.set_has_value( result == RESULT_OK );
349 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(EssenceContainerData, BodySID));
355 EssenceContainerData::WriteToTLVSet(TLVWriter& TLVSet)
358 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
359 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(EssenceContainerData, LinkedPackageUID));
360 if ( ASDCP_SUCCESS(result) && ! IndexSID.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(EssenceContainerData, IndexSID));
361 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(EssenceContainerData, BodySID));
367 EssenceContainerData::Copy(const EssenceContainerData& rhs)
369 InterchangeObject::Copy(rhs);
370 LinkedPackageUID = rhs.LinkedPackageUID;
371 IndexSID = rhs.IndexSID;
372 BodySID = rhs.BodySID;
377 EssenceContainerData::Dump(FILE* stream)
379 char identbuf[IdentBufferLen];
385 InterchangeObject::Dump(stream);
386 fprintf(stream, " %22s = %s\n", "LinkedPackageUID", LinkedPackageUID.EncodeString(identbuf, IdentBufferLen));
387 if ( ! IndexSID.empty() ) {
388 fprintf(stream, " %22s = %d\n", "IndexSID", IndexSID.get());
390 fprintf(stream, " %22s = %d\n", "BodySID", BodySID);
395 EssenceContainerData::InitFromBuffer(const byte_t* p, ui32_t l)
397 return InterchangeObject::InitFromBuffer(p, l);
402 EssenceContainerData::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
404 return InterchangeObject::WriteToBuffer(Buffer);
407 //------------------------------------------------------------------------------------------
411 GenericPackage::GenericPackage(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) {}
413 GenericPackage::GenericPackage(const GenericPackage& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
421 GenericPackage::InitFromTLVSet(TLVReader& TLVSet)
424 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
425 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageUID));
426 if ( ASDCP_SUCCESS(result) ) {
427 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPackage, Name));
428 Name.set_has_value( result == RESULT_OK );
430 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageCreationDate));
431 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageModifiedDate));
432 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, Tracks));
438 GenericPackage::WriteToTLVSet(TLVWriter& TLVSet)
441 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
442 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, PackageUID));
443 if ( ASDCP_SUCCESS(result) && ! Name.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPackage, Name));
444 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, PackageCreationDate));
445 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, PackageModifiedDate));
446 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, Tracks));
452 GenericPackage::Copy(const GenericPackage& rhs)
454 InterchangeObject::Copy(rhs);
455 PackageUID = rhs.PackageUID;
457 PackageCreationDate = rhs.PackageCreationDate;
458 PackageModifiedDate = rhs.PackageModifiedDate;
464 GenericPackage::Dump(FILE* stream)
466 char identbuf[IdentBufferLen];
472 InterchangeObject::Dump(stream);
473 fprintf(stream, " %22s = %s\n", "PackageUID", PackageUID.EncodeString(identbuf, IdentBufferLen));
474 if ( ! Name.empty() ) {
475 fprintf(stream, " %22s = %s\n", "Name", Name.get().EncodeString(identbuf, IdentBufferLen));
477 fprintf(stream, " %22s = %s\n", "PackageCreationDate", PackageCreationDate.EncodeString(identbuf, IdentBufferLen));
478 fprintf(stream, " %22s = %s\n", "PackageModifiedDate", PackageModifiedDate.EncodeString(identbuf, IdentBufferLen));
479 fprintf(stream, " %22s:\n", "Tracks");
484 //------------------------------------------------------------------------------------------
489 MaterialPackage::MaterialPackage(const Dictionary*& d) : GenericPackage(d), m_Dict(d)
492 m_UL = m_Dict->ul(MDD_MaterialPackage);
495 MaterialPackage::MaterialPackage(const MaterialPackage& rhs) : GenericPackage(rhs.m_Dict), m_Dict(rhs.m_Dict)
498 m_UL = m_Dict->ul(MDD_MaterialPackage);
505 MaterialPackage::InitFromTLVSet(TLVReader& TLVSet)
508 Result_t result = GenericPackage::InitFromTLVSet(TLVSet);
509 if ( ASDCP_SUCCESS(result) ) {
510 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MaterialPackage, PackageMarker));
511 PackageMarker.set_has_value( result == RESULT_OK );
518 MaterialPackage::WriteToTLVSet(TLVWriter& TLVSet)
521 Result_t result = GenericPackage::WriteToTLVSet(TLVSet);
522 if ( ASDCP_SUCCESS(result) && ! PackageMarker.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MaterialPackage, PackageMarker));
528 MaterialPackage::Copy(const MaterialPackage& rhs)
530 GenericPackage::Copy(rhs);
531 PackageMarker = rhs.PackageMarker;
536 MaterialPackage::Dump(FILE* stream)
538 char identbuf[IdentBufferLen];
544 GenericPackage::Dump(stream);
545 if ( ! PackageMarker.empty() ) {
546 fprintf(stream, " %22s = %s\n", "PackageMarker", PackageMarker.get().EncodeString(identbuf, IdentBufferLen));
552 MaterialPackage::InitFromBuffer(const byte_t* p, ui32_t l)
554 return InterchangeObject::InitFromBuffer(p, l);
559 MaterialPackage::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
561 return InterchangeObject::WriteToBuffer(Buffer);
564 //------------------------------------------------------------------------------------------
569 SourcePackage::SourcePackage(const Dictionary*& d) : GenericPackage(d), m_Dict(d)
572 m_UL = m_Dict->ul(MDD_SourcePackage);
575 SourcePackage::SourcePackage(const SourcePackage& rhs) : GenericPackage(rhs.m_Dict), m_Dict(rhs.m_Dict)
578 m_UL = m_Dict->ul(MDD_SourcePackage);
585 SourcePackage::InitFromTLVSet(TLVReader& TLVSet)
588 Result_t result = GenericPackage::InitFromTLVSet(TLVSet);
589 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(SourcePackage, Descriptor));
595 SourcePackage::WriteToTLVSet(TLVWriter& TLVSet)
598 Result_t result = GenericPackage::WriteToTLVSet(TLVSet);
599 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(SourcePackage, Descriptor));
605 SourcePackage::Copy(const SourcePackage& rhs)
607 GenericPackage::Copy(rhs);
608 Descriptor = rhs.Descriptor;
613 SourcePackage::Dump(FILE* stream)
615 char identbuf[IdentBufferLen];
621 GenericPackage::Dump(stream);
622 fprintf(stream, " %22s = %s\n", "Descriptor", Descriptor.EncodeString(identbuf, IdentBufferLen));
627 SourcePackage::InitFromBuffer(const byte_t* p, ui32_t l)
629 return InterchangeObject::InitFromBuffer(p, l);
634 SourcePackage::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
636 return InterchangeObject::WriteToBuffer(Buffer);
639 //------------------------------------------------------------------------------------------
643 GenericTrack::GenericTrack(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), TrackID(0), TrackNumber(0) {}
645 GenericTrack::GenericTrack(const GenericTrack& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
653 GenericTrack::InitFromTLVSet(TLVReader& TLVSet)
656 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
657 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericTrack, TrackID));
658 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericTrack, TrackNumber));
659 if ( ASDCP_SUCCESS(result) ) {
660 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericTrack, TrackName));
661 TrackName.set_has_value( result == RESULT_OK );
663 if ( ASDCP_SUCCESS(result) ) {
664 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericTrack, Sequence));
665 Sequence.set_has_value( result == RESULT_OK );
672 GenericTrack::WriteToTLVSet(TLVWriter& TLVSet)
675 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
676 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericTrack, TrackID));
677 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericTrack, TrackNumber));
678 if ( ASDCP_SUCCESS(result) && ! TrackName.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericTrack, TrackName));
679 if ( ASDCP_SUCCESS(result) && ! Sequence.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericTrack, Sequence));
685 GenericTrack::Copy(const GenericTrack& rhs)
687 InterchangeObject::Copy(rhs);
688 TrackID = rhs.TrackID;
689 TrackNumber = rhs.TrackNumber;
690 TrackName = rhs.TrackName;
691 Sequence = rhs.Sequence;
696 GenericTrack::Dump(FILE* stream)
698 char identbuf[IdentBufferLen];
704 InterchangeObject::Dump(stream);
705 fprintf(stream, " %22s = %d\n", "TrackID", TrackID);
706 fprintf(stream, " %22s = %d\n", "TrackNumber", TrackNumber);
707 if ( ! TrackName.empty() ) {
708 fprintf(stream, " %22s = %s\n", "TrackName", TrackName.get().EncodeString(identbuf, IdentBufferLen));
710 if ( ! Sequence.empty() ) {
711 fprintf(stream, " %22s = %s\n", "Sequence", Sequence.get().EncodeString(identbuf, IdentBufferLen));
716 //------------------------------------------------------------------------------------------
721 StaticTrack::StaticTrack(const Dictionary*& d) : GenericTrack(d), m_Dict(d)
724 m_UL = m_Dict->ul(MDD_StaticTrack);
727 StaticTrack::StaticTrack(const StaticTrack& rhs) : GenericTrack(rhs.m_Dict), m_Dict(rhs.m_Dict)
730 m_UL = m_Dict->ul(MDD_StaticTrack);
737 StaticTrack::InitFromTLVSet(TLVReader& TLVSet)
740 Result_t result = GenericTrack::InitFromTLVSet(TLVSet);
746 StaticTrack::WriteToTLVSet(TLVWriter& TLVSet)
749 Result_t result = GenericTrack::WriteToTLVSet(TLVSet);
755 StaticTrack::Copy(const StaticTrack& rhs)
757 GenericTrack::Copy(rhs);
762 StaticTrack::Dump(FILE* stream)
764 char identbuf[IdentBufferLen];
770 GenericTrack::Dump(stream);
775 StaticTrack::InitFromBuffer(const byte_t* p, ui32_t l)
777 return InterchangeObject::InitFromBuffer(p, l);
782 StaticTrack::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
784 return InterchangeObject::WriteToBuffer(Buffer);
787 //------------------------------------------------------------------------------------------
792 Track::Track(const Dictionary*& d) : GenericTrack(d), m_Dict(d), Origin(0)
795 m_UL = m_Dict->ul(MDD_Track);
798 Track::Track(const Track& rhs) : GenericTrack(rhs.m_Dict), m_Dict(rhs.m_Dict)
801 m_UL = m_Dict->ul(MDD_Track);
808 Track::InitFromTLVSet(TLVReader& TLVSet)
811 Result_t result = GenericTrack::InitFromTLVSet(TLVSet);
812 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Track, EditRate));
813 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(Track, Origin));
819 Track::WriteToTLVSet(TLVWriter& TLVSet)
822 Result_t result = GenericTrack::WriteToTLVSet(TLVSet);
823 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Track, EditRate));
824 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(Track, Origin));
830 Track::Copy(const Track& rhs)
832 GenericTrack::Copy(rhs);
833 EditRate = rhs.EditRate;
839 Track::Dump(FILE* stream)
841 char identbuf[IdentBufferLen];
847 GenericTrack::Dump(stream);
848 fprintf(stream, " %22s = %s\n", "EditRate", EditRate.EncodeString(identbuf, IdentBufferLen));
849 fprintf(stream, " %22s = %s\n", "Origin", i64sz(Origin, identbuf));
854 Track::InitFromBuffer(const byte_t* p, ui32_t l)
856 return InterchangeObject::InitFromBuffer(p, l);
861 Track::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
863 return InterchangeObject::WriteToBuffer(Buffer);
866 //------------------------------------------------------------------------------------------
867 // StructuralComponent
870 StructuralComponent::StructuralComponent(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), Duration(0) {}
872 StructuralComponent::StructuralComponent(const StructuralComponent& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
880 StructuralComponent::InitFromTLVSet(TLVReader& TLVSet)
883 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
884 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(StructuralComponent, DataDefinition));
885 if ( ASDCP_SUCCESS(result) ) {
886 result = TLVSet.ReadUi64(OBJ_READ_ARGS_OPT(StructuralComponent, Duration));
887 Duration.set_has_value( result == RESULT_OK );
894 StructuralComponent::WriteToTLVSet(TLVWriter& TLVSet)
897 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
898 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(StructuralComponent, DataDefinition));
899 if ( ASDCP_SUCCESS(result) && ! Duration.empty() ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS_OPT(StructuralComponent, Duration));
905 StructuralComponent::Copy(const StructuralComponent& rhs)
907 InterchangeObject::Copy(rhs);
908 DataDefinition = rhs.DataDefinition;
909 Duration = rhs.Duration;
914 StructuralComponent::Dump(FILE* stream)
916 char identbuf[IdentBufferLen];
922 InterchangeObject::Dump(stream);
923 fprintf(stream, " %22s = %s\n", "DataDefinition", DataDefinition.EncodeString(identbuf, IdentBufferLen));
924 if ( ! Duration.empty() ) {
925 fprintf(stream, " %22s = %s\n", "Duration", i64sz(Duration.get(), identbuf));
930 //------------------------------------------------------------------------------------------
935 Sequence::Sequence(const Dictionary*& d) : StructuralComponent(d), m_Dict(d)
938 m_UL = m_Dict->ul(MDD_Sequence);
941 Sequence::Sequence(const Sequence& rhs) : StructuralComponent(rhs.m_Dict), m_Dict(rhs.m_Dict)
944 m_UL = m_Dict->ul(MDD_Sequence);
951 Sequence::InitFromTLVSet(TLVReader& TLVSet)
954 Result_t result = StructuralComponent::InitFromTLVSet(TLVSet);
955 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Sequence, StructuralComponents));
961 Sequence::WriteToTLVSet(TLVWriter& TLVSet)
964 Result_t result = StructuralComponent::WriteToTLVSet(TLVSet);
965 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Sequence, StructuralComponents));
971 Sequence::Copy(const Sequence& rhs)
973 StructuralComponent::Copy(rhs);
974 StructuralComponents = rhs.StructuralComponents;
979 Sequence::Dump(FILE* stream)
981 char identbuf[IdentBufferLen];
987 StructuralComponent::Dump(stream);
988 fprintf(stream, " %22s:\n", "StructuralComponents");
989 StructuralComponents.Dump(stream);
994 Sequence::InitFromBuffer(const byte_t* p, ui32_t l)
996 return InterchangeObject::InitFromBuffer(p, l);
1001 Sequence::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1003 return InterchangeObject::WriteToBuffer(Buffer);
1006 //------------------------------------------------------------------------------------------
1011 SourceClip::SourceClip(const Dictionary*& d) : StructuralComponent(d), m_Dict(d), StartPosition(0), SourceTrackID(0)
1014 m_UL = m_Dict->ul(MDD_SourceClip);
1017 SourceClip::SourceClip(const SourceClip& rhs) : StructuralComponent(rhs.m_Dict), m_Dict(rhs.m_Dict)
1020 m_UL = m_Dict->ul(MDD_SourceClip);
1027 SourceClip::InitFromTLVSet(TLVReader& TLVSet)
1030 Result_t result = StructuralComponent::InitFromTLVSet(TLVSet);
1031 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(SourceClip, StartPosition));
1032 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(SourceClip, SourcePackageID));
1033 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(SourceClip, SourceTrackID));
1039 SourceClip::WriteToTLVSet(TLVWriter& TLVSet)
1042 Result_t result = StructuralComponent::WriteToTLVSet(TLVSet);
1043 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(SourceClip, StartPosition));
1044 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(SourceClip, SourcePackageID));
1045 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(SourceClip, SourceTrackID));
1051 SourceClip::Copy(const SourceClip& rhs)
1053 StructuralComponent::Copy(rhs);
1054 StartPosition = rhs.StartPosition;
1055 SourcePackageID = rhs.SourcePackageID;
1056 SourceTrackID = rhs.SourceTrackID;
1061 SourceClip::Dump(FILE* stream)
1063 char identbuf[IdentBufferLen];
1069 StructuralComponent::Dump(stream);
1070 fprintf(stream, " %22s = %s\n", "StartPosition", i64sz(StartPosition, identbuf));
1071 fprintf(stream, " %22s = %s\n", "SourcePackageID", SourcePackageID.EncodeString(identbuf, IdentBufferLen));
1072 fprintf(stream, " %22s = %d\n", "SourceTrackID", SourceTrackID);
1077 SourceClip::InitFromBuffer(const byte_t* p, ui32_t l)
1079 return InterchangeObject::InitFromBuffer(p, l);
1084 SourceClip::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1086 return InterchangeObject::WriteToBuffer(Buffer);
1089 //------------------------------------------------------------------------------------------
1090 // TimecodeComponent
1094 TimecodeComponent::TimecodeComponent(const Dictionary*& d) : StructuralComponent(d), m_Dict(d), RoundedTimecodeBase(0), StartTimecode(0), DropFrame(0)
1097 m_UL = m_Dict->ul(MDD_TimecodeComponent);
1100 TimecodeComponent::TimecodeComponent(const TimecodeComponent& rhs) : StructuralComponent(rhs.m_Dict), m_Dict(rhs.m_Dict)
1103 m_UL = m_Dict->ul(MDD_TimecodeComponent);
1110 TimecodeComponent::InitFromTLVSet(TLVReader& TLVSet)
1113 Result_t result = StructuralComponent::InitFromTLVSet(TLVSet);
1114 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(TimecodeComponent, RoundedTimecodeBase));
1115 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(TimecodeComponent, StartTimecode));
1116 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(TimecodeComponent, DropFrame));
1122 TimecodeComponent::WriteToTLVSet(TLVWriter& TLVSet)
1125 Result_t result = StructuralComponent::WriteToTLVSet(TLVSet);
1126 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(TimecodeComponent, RoundedTimecodeBase));
1127 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(TimecodeComponent, StartTimecode));
1128 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(TimecodeComponent, DropFrame));
1134 TimecodeComponent::Copy(const TimecodeComponent& rhs)
1136 StructuralComponent::Copy(rhs);
1137 RoundedTimecodeBase = rhs.RoundedTimecodeBase;
1138 StartTimecode = rhs.StartTimecode;
1139 DropFrame = rhs.DropFrame;
1144 TimecodeComponent::Dump(FILE* stream)
1146 char identbuf[IdentBufferLen];
1152 StructuralComponent::Dump(stream);
1153 fprintf(stream, " %22s = %d\n", "RoundedTimecodeBase", RoundedTimecodeBase);
1154 fprintf(stream, " %22s = %s\n", "StartTimecode", i64sz(StartTimecode, identbuf));
1155 fprintf(stream, " %22s = %d\n", "DropFrame", DropFrame);
1160 TimecodeComponent::InitFromBuffer(const byte_t* p, ui32_t l)
1162 return InterchangeObject::InitFromBuffer(p, l);
1167 TimecodeComponent::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1169 return InterchangeObject::WriteToBuffer(Buffer);
1172 //------------------------------------------------------------------------------------------
1173 // GenericDescriptor
1176 GenericDescriptor::GenericDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) {}
1178 GenericDescriptor::GenericDescriptor(const GenericDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
1186 GenericDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1189 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
1190 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericDescriptor, Locators));
1191 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericDescriptor, SubDescriptors));
1197 GenericDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1200 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
1201 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericDescriptor, Locators));
1202 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericDescriptor, SubDescriptors));
1208 GenericDescriptor::Copy(const GenericDescriptor& rhs)
1210 InterchangeObject::Copy(rhs);
1211 Locators = rhs.Locators;
1212 SubDescriptors = rhs.SubDescriptors;
1217 GenericDescriptor::Dump(FILE* stream)
1219 char identbuf[IdentBufferLen];
1225 InterchangeObject::Dump(stream);
1226 fprintf(stream, " %22s:\n", "Locators");
1227 Locators.Dump(stream);
1228 fprintf(stream, " %22s:\n", "SubDescriptors");
1229 SubDescriptors.Dump(stream);
1233 //------------------------------------------------------------------------------------------
1238 FileDescriptor::FileDescriptor(const Dictionary*& d) : GenericDescriptor(d), m_Dict(d), LinkedTrackID(0)
1241 m_UL = m_Dict->ul(MDD_FileDescriptor);
1244 FileDescriptor::FileDescriptor(const FileDescriptor& rhs) : GenericDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
1247 m_UL = m_Dict->ul(MDD_FileDescriptor);
1254 FileDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1257 Result_t result = GenericDescriptor::InitFromTLVSet(TLVSet);
1258 if ( ASDCP_SUCCESS(result) ) {
1259 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(FileDescriptor, LinkedTrackID));
1260 LinkedTrackID.set_has_value( result == RESULT_OK );
1262 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(FileDescriptor, SampleRate));
1263 if ( ASDCP_SUCCESS(result) ) {
1264 result = TLVSet.ReadUi64(OBJ_READ_ARGS_OPT(FileDescriptor, ContainerDuration));
1265 ContainerDuration.set_has_value( result == RESULT_OK );
1267 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(FileDescriptor, EssenceContainer));
1268 if ( ASDCP_SUCCESS(result) ) {
1269 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(FileDescriptor, Codec));
1270 Codec.set_has_value( result == RESULT_OK );
1277 FileDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1280 Result_t result = GenericDescriptor::WriteToTLVSet(TLVSet);
1281 if ( ASDCP_SUCCESS(result) && ! LinkedTrackID.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(FileDescriptor, LinkedTrackID));
1282 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(FileDescriptor, SampleRate));
1283 if ( ASDCP_SUCCESS(result) && ! ContainerDuration.empty() ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS_OPT(FileDescriptor, ContainerDuration));
1284 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(FileDescriptor, EssenceContainer));
1285 if ( ASDCP_SUCCESS(result) && ! Codec.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(FileDescriptor, Codec));
1291 FileDescriptor::Copy(const FileDescriptor& rhs)
1293 GenericDescriptor::Copy(rhs);
1294 LinkedTrackID = rhs.LinkedTrackID;
1295 SampleRate = rhs.SampleRate;
1296 ContainerDuration = rhs.ContainerDuration;
1297 EssenceContainer = rhs.EssenceContainer;
1303 FileDescriptor::Dump(FILE* stream)
1305 char identbuf[IdentBufferLen];
1311 GenericDescriptor::Dump(stream);
1312 if ( ! LinkedTrackID.empty() ) {
1313 fprintf(stream, " %22s = %d\n", "LinkedTrackID", LinkedTrackID.get());
1315 fprintf(stream, " %22s = %s\n", "SampleRate", SampleRate.EncodeString(identbuf, IdentBufferLen));
1316 if ( ! ContainerDuration.empty() ) {
1317 fprintf(stream, " %22s = %s\n", "ContainerDuration", i64sz(ContainerDuration.get(), identbuf));
1319 fprintf(stream, " %22s = %s\n", "EssenceContainer", EssenceContainer.EncodeString(identbuf, IdentBufferLen));
1320 if ( ! Codec.empty() ) {
1321 fprintf(stream, " %22s = %s\n", "Codec", Codec.get().EncodeString(identbuf, IdentBufferLen));
1327 FileDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1329 return InterchangeObject::InitFromBuffer(p, l);
1334 FileDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1336 return InterchangeObject::WriteToBuffer(Buffer);
1339 //------------------------------------------------------------------------------------------
1340 // GenericSoundEssenceDescriptor
1344 GenericSoundEssenceDescriptor::GenericSoundEssenceDescriptor(const Dictionary*& d) : FileDescriptor(d), m_Dict(d), Locked(0), AudioRefLevel(0), ChannelCount(0), QuantizationBits(0), DialNorm(0)
1347 m_UL = m_Dict->ul(MDD_GenericSoundEssenceDescriptor);
1350 GenericSoundEssenceDescriptor::GenericSoundEssenceDescriptor(const GenericSoundEssenceDescriptor& rhs) : FileDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
1353 m_UL = m_Dict->ul(MDD_GenericSoundEssenceDescriptor);
1360 GenericSoundEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1363 Result_t result = FileDescriptor::InitFromTLVSet(TLVSet);
1364 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, AudioSamplingRate));
1365 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, Locked));
1366 if ( ASDCP_SUCCESS(result) ) {
1367 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericSoundEssenceDescriptor, AudioRefLevel));
1368 AudioRefLevel.set_has_value( result == RESULT_OK );
1370 if ( ASDCP_SUCCESS(result) ) {
1371 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericSoundEssenceDescriptor, ElectroSpatialFormulation));
1372 ElectroSpatialFormulation.set_has_value( result == RESULT_OK );
1374 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, ChannelCount));
1375 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, QuantizationBits));
1376 if ( ASDCP_SUCCESS(result) ) {
1377 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericSoundEssenceDescriptor, DialNorm));
1378 DialNorm.set_has_value( result == RESULT_OK );
1380 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, SoundEssenceCoding));
1386 GenericSoundEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1389 Result_t result = FileDescriptor::WriteToTLVSet(TLVSet);
1390 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, AudioSamplingRate));
1391 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, Locked));
1392 if ( ASDCP_SUCCESS(result) && ! AudioRefLevel.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericSoundEssenceDescriptor, AudioRefLevel));
1393 if ( ASDCP_SUCCESS(result) && ! ElectroSpatialFormulation.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericSoundEssenceDescriptor, ElectroSpatialFormulation));
1394 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, ChannelCount));
1395 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, QuantizationBits));
1396 if ( ASDCP_SUCCESS(result) && ! DialNorm.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericSoundEssenceDescriptor, DialNorm));
1397 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, SoundEssenceCoding));
1403 GenericSoundEssenceDescriptor::Copy(const GenericSoundEssenceDescriptor& rhs)
1405 FileDescriptor::Copy(rhs);
1406 AudioSamplingRate = rhs.AudioSamplingRate;
1407 Locked = rhs.Locked;
1408 AudioRefLevel = rhs.AudioRefLevel;
1409 ElectroSpatialFormulation = rhs.ElectroSpatialFormulation;
1410 ChannelCount = rhs.ChannelCount;
1411 QuantizationBits = rhs.QuantizationBits;
1412 DialNorm = rhs.DialNorm;
1413 SoundEssenceCoding = rhs.SoundEssenceCoding;
1418 GenericSoundEssenceDescriptor::Dump(FILE* stream)
1420 char identbuf[IdentBufferLen];
1426 FileDescriptor::Dump(stream);
1427 fprintf(stream, " %22s = %s\n", "AudioSamplingRate", AudioSamplingRate.EncodeString(identbuf, IdentBufferLen));
1428 fprintf(stream, " %22s = %d\n", "Locked", Locked);
1429 if ( ! AudioRefLevel.empty() ) {
1430 fprintf(stream, " %22s = %d\n", "AudioRefLevel", AudioRefLevel.get());
1432 if ( ! ElectroSpatialFormulation.empty() ) {
1433 fprintf(stream, " %22s = %d\n", "ElectroSpatialFormulation", ElectroSpatialFormulation.get());
1435 fprintf(stream, " %22s = %d\n", "ChannelCount", ChannelCount);
1436 fprintf(stream, " %22s = %d\n", "QuantizationBits", QuantizationBits);
1437 if ( ! DialNorm.empty() ) {
1438 fprintf(stream, " %22s = %d\n", "DialNorm", DialNorm.get());
1440 fprintf(stream, " %22s = %s\n", "SoundEssenceCoding", SoundEssenceCoding.EncodeString(identbuf, IdentBufferLen));
1445 GenericSoundEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1447 return InterchangeObject::InitFromBuffer(p, l);
1452 GenericSoundEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1454 return InterchangeObject::WriteToBuffer(Buffer);
1457 //------------------------------------------------------------------------------------------
1458 // WaveAudioDescriptor
1462 WaveAudioDescriptor::WaveAudioDescriptor(const Dictionary*& d) : GenericSoundEssenceDescriptor(d), m_Dict(d), BlockAlign(0), SequenceOffset(0)
1465 m_UL = m_Dict->ul(MDD_WaveAudioDescriptor);
1468 WaveAudioDescriptor::WaveAudioDescriptor(const WaveAudioDescriptor& rhs) : GenericSoundEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
1471 m_UL = m_Dict->ul(MDD_WaveAudioDescriptor);
1478 WaveAudioDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1481 Result_t result = GenericSoundEssenceDescriptor::InitFromTLVSet(TLVSet);
1482 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(WaveAudioDescriptor, BlockAlign));
1483 if ( ASDCP_SUCCESS(result) ) {
1484 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(WaveAudioDescriptor, SequenceOffset));
1485 SequenceOffset.set_has_value( result == RESULT_OK );
1487 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(WaveAudioDescriptor, AvgBps));
1488 if ( ASDCP_SUCCESS(result) ) {
1489 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(WaveAudioDescriptor, ChannelAssignment));
1490 ChannelAssignment.set_has_value( result == RESULT_OK );
1492 if ( ASDCP_SUCCESS(result) ) {
1493 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(WaveAudioDescriptor, ReferenceImageEditRate));
1494 ReferenceImageEditRate.set_has_value( result == RESULT_OK );
1496 if ( ASDCP_SUCCESS(result) ) {
1497 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(WaveAudioDescriptor, ReferenceAudioAlignmentLevel));
1498 ReferenceAudioAlignmentLevel.set_has_value( result == RESULT_OK );
1505 WaveAudioDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1508 Result_t result = GenericSoundEssenceDescriptor::WriteToTLVSet(TLVSet);
1509 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(WaveAudioDescriptor, BlockAlign));
1510 if ( ASDCP_SUCCESS(result) && ! SequenceOffset.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(WaveAudioDescriptor, SequenceOffset));
1511 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(WaveAudioDescriptor, AvgBps));
1512 if ( ASDCP_SUCCESS(result) && ! ChannelAssignment.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(WaveAudioDescriptor, ChannelAssignment));
1513 if ( ASDCP_SUCCESS(result) && ! ReferenceImageEditRate.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(WaveAudioDescriptor, ReferenceImageEditRate));
1514 if ( ASDCP_SUCCESS(result) && ! ReferenceAudioAlignmentLevel.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(WaveAudioDescriptor, ReferenceAudioAlignmentLevel));
1520 WaveAudioDescriptor::Copy(const WaveAudioDescriptor& rhs)
1522 GenericSoundEssenceDescriptor::Copy(rhs);
1523 BlockAlign = rhs.BlockAlign;
1524 SequenceOffset = rhs.SequenceOffset;
1525 AvgBps = rhs.AvgBps;
1526 ChannelAssignment = rhs.ChannelAssignment;
1527 ReferenceImageEditRate = rhs.ReferenceImageEditRate;
1528 ReferenceAudioAlignmentLevel = rhs.ReferenceAudioAlignmentLevel;
1533 WaveAudioDescriptor::Dump(FILE* stream)
1535 char identbuf[IdentBufferLen];
1541 GenericSoundEssenceDescriptor::Dump(stream);
1542 fprintf(stream, " %22s = %d\n", "BlockAlign", BlockAlign);
1543 if ( ! SequenceOffset.empty() ) {
1544 fprintf(stream, " %22s = %d\n", "SequenceOffset", SequenceOffset.get());
1546 fprintf(stream, " %22s = %d\n", "AvgBps", AvgBps);
1547 if ( ! ChannelAssignment.empty() ) {
1548 fprintf(stream, " %22s = %s\n", "ChannelAssignment", ChannelAssignment.get().EncodeString(identbuf, IdentBufferLen));
1550 if ( ! ReferenceImageEditRate.empty() ) {
1551 fprintf(stream, " %22s = %s\n", "ReferenceImageEditRate", ReferenceImageEditRate.get().EncodeString(identbuf, IdentBufferLen));
1553 if ( ! ReferenceAudioAlignmentLevel.empty() ) {
1554 fprintf(stream, " %22s = %d\n", "ReferenceAudioAlignmentLevel", ReferenceAudioAlignmentLevel.get());
1560 WaveAudioDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1562 return InterchangeObject::InitFromBuffer(p, l);
1567 WaveAudioDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1569 return InterchangeObject::WriteToBuffer(Buffer);
1572 //------------------------------------------------------------------------------------------
1573 // GenericPictureEssenceDescriptor
1577 GenericPictureEssenceDescriptor::GenericPictureEssenceDescriptor(const Dictionary*& d) : FileDescriptor(d), m_Dict(d), SignalStandard(0), SampledWidth(0), SampledXOffset(0), DisplayHeight(0), DisplayXOffset(0), DisplayF2Offset(0), AlphaTransparency(0), ImageAlignmentOffset(0), ImageEndOffset(0), ActiveWidth(0), ActiveXOffset(0)
1580 m_UL = m_Dict->ul(MDD_GenericPictureEssenceDescriptor);
1583 GenericPictureEssenceDescriptor::GenericPictureEssenceDescriptor(const GenericPictureEssenceDescriptor& rhs) : FileDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
1586 m_UL = m_Dict->ul(MDD_GenericPictureEssenceDescriptor);
1593 GenericPictureEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1596 Result_t result = FileDescriptor::InitFromTLVSet(TLVSet);
1597 if ( ASDCP_SUCCESS(result) ) {
1598 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, SignalStandard));
1599 SignalStandard.set_has_value( result == RESULT_OK );
1601 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, FrameLayout));
1602 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, StoredWidth));
1603 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, StoredHeight));
1604 if ( ASDCP_SUCCESS(result) ) {
1605 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, StoredF2Offset));
1606 StoredF2Offset.set_has_value( result == RESULT_OK );
1608 if ( ASDCP_SUCCESS(result) ) {
1609 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, SampledWidth));
1610 SampledWidth.set_has_value( result == RESULT_OK );
1612 if ( ASDCP_SUCCESS(result) ) {
1613 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, SampledHeight));
1614 SampledHeight.set_has_value( result == RESULT_OK );
1616 if ( ASDCP_SUCCESS(result) ) {
1617 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, SampledXOffset));
1618 SampledXOffset.set_has_value( result == RESULT_OK );
1620 if ( ASDCP_SUCCESS(result) ) {
1621 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, SampledYOffset));
1622 SampledYOffset.set_has_value( result == RESULT_OK );
1624 if ( ASDCP_SUCCESS(result) ) {
1625 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayHeight));
1626 DisplayHeight.set_has_value( result == RESULT_OK );
1628 if ( ASDCP_SUCCESS(result) ) {
1629 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayWidth));
1630 DisplayWidth.set_has_value( result == RESULT_OK );
1632 if ( ASDCP_SUCCESS(result) ) {
1633 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayXOffset));
1634 DisplayXOffset.set_has_value( result == RESULT_OK );
1636 if ( ASDCP_SUCCESS(result) ) {
1637 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayYOffset));
1638 DisplayYOffset.set_has_value( result == RESULT_OK );
1640 if ( ASDCP_SUCCESS(result) ) {
1641 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayF2Offset));
1642 DisplayF2Offset.set_has_value( result == RESULT_OK );
1644 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, AspectRatio));
1645 if ( ASDCP_SUCCESS(result) ) {
1646 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveFormatDescriptor));
1647 ActiveFormatDescriptor.set_has_value( result == RESULT_OK );
1649 if ( ASDCP_SUCCESS(result) ) {
1650 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, AlphaTransparency));
1651 AlphaTransparency.set_has_value( result == RESULT_OK );
1653 if ( ASDCP_SUCCESS(result) ) {
1654 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, TransferCharacteristic));
1655 TransferCharacteristic.set_has_value( result == RESULT_OK );
1657 if ( ASDCP_SUCCESS(result) ) {
1658 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ImageAlignmentOffset));
1659 ImageAlignmentOffset.set_has_value( result == RESULT_OK );
1661 if ( ASDCP_SUCCESS(result) ) {
1662 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ImageStartOffset));
1663 ImageStartOffset.set_has_value( result == RESULT_OK );
1665 if ( ASDCP_SUCCESS(result) ) {
1666 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ImageEndOffset));
1667 ImageEndOffset.set_has_value( result == RESULT_OK );
1669 if ( ASDCP_SUCCESS(result) ) {
1670 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, FieldDominance));
1671 FieldDominance.set_has_value( result == RESULT_OK );
1673 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, PictureEssenceCoding));
1674 if ( ASDCP_SUCCESS(result) ) {
1675 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, CodingEquations));
1676 CodingEquations.set_has_value( result == RESULT_OK );
1678 if ( ASDCP_SUCCESS(result) ) {
1679 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ColorPrimaries));
1680 ColorPrimaries.set_has_value( result == RESULT_OK );
1682 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, AlternativeCenterCuts));
1683 if ( ASDCP_SUCCESS(result) ) {
1684 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveWidth));
1685 ActiveWidth.set_has_value( result == RESULT_OK );
1687 if ( ASDCP_SUCCESS(result) ) {
1688 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveHeight));
1689 ActiveHeight.set_has_value( result == RESULT_OK );
1691 if ( ASDCP_SUCCESS(result) ) {
1692 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveXOffset));
1693 ActiveXOffset.set_has_value( result == RESULT_OK );
1695 if ( ASDCP_SUCCESS(result) ) {
1696 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveYOffset));
1697 ActiveYOffset.set_has_value( result == RESULT_OK );
1704 GenericPictureEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1707 Result_t result = FileDescriptor::WriteToTLVSet(TLVSet);
1708 if ( ASDCP_SUCCESS(result) && ! SignalStandard.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, SignalStandard));
1709 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, FrameLayout));
1710 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, StoredWidth));
1711 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, StoredHeight));
1712 if ( ASDCP_SUCCESS(result) && ! StoredF2Offset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, StoredF2Offset));
1713 if ( ASDCP_SUCCESS(result) && ! SampledWidth.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, SampledWidth));
1714 if ( ASDCP_SUCCESS(result) && ! SampledHeight.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, SampledHeight));
1715 if ( ASDCP_SUCCESS(result) && ! SampledXOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, SampledXOffset));
1716 if ( ASDCP_SUCCESS(result) && ! SampledYOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, SampledYOffset));
1717 if ( ASDCP_SUCCESS(result) && ! DisplayHeight.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayHeight));
1718 if ( ASDCP_SUCCESS(result) && ! DisplayWidth.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayWidth));
1719 if ( ASDCP_SUCCESS(result) && ! DisplayXOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayXOffset));
1720 if ( ASDCP_SUCCESS(result) && ! DisplayYOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayYOffset));
1721 if ( ASDCP_SUCCESS(result) && ! DisplayF2Offset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, DisplayF2Offset));
1722 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, AspectRatio));
1723 if ( ASDCP_SUCCESS(result) && ! ActiveFormatDescriptor.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveFormatDescriptor));
1724 if ( ASDCP_SUCCESS(result) && ! AlphaTransparency.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, AlphaTransparency));
1725 if ( ASDCP_SUCCESS(result) && ! TransferCharacteristic.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, TransferCharacteristic));
1726 if ( ASDCP_SUCCESS(result) && ! ImageAlignmentOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ImageAlignmentOffset));
1727 if ( ASDCP_SUCCESS(result) && ! ImageStartOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ImageStartOffset));
1728 if ( ASDCP_SUCCESS(result) && ! ImageEndOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ImageEndOffset));
1729 if ( ASDCP_SUCCESS(result) && ! FieldDominance.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, FieldDominance));
1730 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, PictureEssenceCoding));
1731 if ( ASDCP_SUCCESS(result) && ! CodingEquations.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, CodingEquations));
1732 if ( ASDCP_SUCCESS(result) && ! ColorPrimaries.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ColorPrimaries));
1733 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, AlternativeCenterCuts));
1734 if ( ASDCP_SUCCESS(result) && ! ActiveWidth.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveWidth));
1735 if ( ASDCP_SUCCESS(result) && ! ActiveHeight.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveHeight));
1736 if ( ASDCP_SUCCESS(result) && ! ActiveXOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveXOffset));
1737 if ( ASDCP_SUCCESS(result) && ! ActiveYOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveYOffset));
1743 GenericPictureEssenceDescriptor::Copy(const GenericPictureEssenceDescriptor& rhs)
1745 FileDescriptor::Copy(rhs);
1746 SignalStandard = rhs.SignalStandard;
1747 FrameLayout = rhs.FrameLayout;
1748 StoredWidth = rhs.StoredWidth;
1749 StoredHeight = rhs.StoredHeight;
1750 StoredF2Offset = rhs.StoredF2Offset;
1751 SampledWidth = rhs.SampledWidth;
1752 SampledHeight = rhs.SampledHeight;
1753 SampledXOffset = rhs.SampledXOffset;
1754 SampledYOffset = rhs.SampledYOffset;
1755 DisplayHeight = rhs.DisplayHeight;
1756 DisplayWidth = rhs.DisplayWidth;
1757 DisplayXOffset = rhs.DisplayXOffset;
1758 DisplayYOffset = rhs.DisplayYOffset;
1759 DisplayF2Offset = rhs.DisplayF2Offset;
1760 AspectRatio = rhs.AspectRatio;
1761 ActiveFormatDescriptor = rhs.ActiveFormatDescriptor;
1762 AlphaTransparency = rhs.AlphaTransparency;
1763 TransferCharacteristic = rhs.TransferCharacteristic;
1764 ImageAlignmentOffset = rhs.ImageAlignmentOffset;
1765 ImageStartOffset = rhs.ImageStartOffset;
1766 ImageEndOffset = rhs.ImageEndOffset;
1767 FieldDominance = rhs.FieldDominance;
1768 PictureEssenceCoding = rhs.PictureEssenceCoding;
1769 CodingEquations = rhs.CodingEquations;
1770 ColorPrimaries = rhs.ColorPrimaries;
1771 AlternativeCenterCuts = rhs.AlternativeCenterCuts;
1772 ActiveWidth = rhs.ActiveWidth;
1773 ActiveHeight = rhs.ActiveHeight;
1774 ActiveXOffset = rhs.ActiveXOffset;
1775 ActiveYOffset = rhs.ActiveYOffset;
1780 GenericPictureEssenceDescriptor::Dump(FILE* stream)
1782 char identbuf[IdentBufferLen];
1788 FileDescriptor::Dump(stream);
1789 if ( ! SignalStandard.empty() ) {
1790 fprintf(stream, " %22s = %d\n", "SignalStandard", SignalStandard.get());
1792 fprintf(stream, " %22s = %d\n", "FrameLayout", FrameLayout);
1793 fprintf(stream, " %22s = %d\n", "StoredWidth", StoredWidth);
1794 fprintf(stream, " %22s = %d\n", "StoredHeight", StoredHeight);
1795 if ( ! StoredF2Offset.empty() ) {
1796 fprintf(stream, " %22s = %d\n", "StoredF2Offset", StoredF2Offset.get());
1798 if ( ! SampledWidth.empty() ) {
1799 fprintf(stream, " %22s = %d\n", "SampledWidth", SampledWidth.get());
1801 if ( ! SampledHeight.empty() ) {
1802 fprintf(stream, " %22s = %d\n", "SampledHeight", SampledHeight.get());
1804 if ( ! SampledXOffset.empty() ) {
1805 fprintf(stream, " %22s = %d\n", "SampledXOffset", SampledXOffset.get());
1807 if ( ! SampledYOffset.empty() ) {
1808 fprintf(stream, " %22s = %d\n", "SampledYOffset", SampledYOffset.get());
1810 if ( ! DisplayHeight.empty() ) {
1811 fprintf(stream, " %22s = %d\n", "DisplayHeight", DisplayHeight.get());
1813 if ( ! DisplayWidth.empty() ) {
1814 fprintf(stream, " %22s = %d\n", "DisplayWidth", DisplayWidth.get());
1816 if ( ! DisplayXOffset.empty() ) {
1817 fprintf(stream, " %22s = %d\n", "DisplayXOffset", DisplayXOffset.get());
1819 if ( ! DisplayYOffset.empty() ) {
1820 fprintf(stream, " %22s = %d\n", "DisplayYOffset", DisplayYOffset.get());
1822 if ( ! DisplayF2Offset.empty() ) {
1823 fprintf(stream, " %22s = %d\n", "DisplayF2Offset", DisplayF2Offset.get());
1825 fprintf(stream, " %22s = %s\n", "AspectRatio", AspectRatio.EncodeString(identbuf, IdentBufferLen));
1826 if ( ! ActiveFormatDescriptor.empty() ) {
1827 fprintf(stream, " %22s = %d\n", "ActiveFormatDescriptor", ActiveFormatDescriptor.get());
1829 if ( ! AlphaTransparency.empty() ) {
1830 fprintf(stream, " %22s = %d\n", "AlphaTransparency", AlphaTransparency.get());
1832 if ( ! TransferCharacteristic.empty() ) {
1833 fprintf(stream, " %22s = %s\n", "TransferCharacteristic", TransferCharacteristic.get().EncodeString(identbuf, IdentBufferLen));
1835 if ( ! ImageAlignmentOffset.empty() ) {
1836 fprintf(stream, " %22s = %d\n", "ImageAlignmentOffset", ImageAlignmentOffset.get());
1838 if ( ! ImageStartOffset.empty() ) {
1839 fprintf(stream, " %22s = %d\n", "ImageStartOffset", ImageStartOffset.get());
1841 if ( ! ImageEndOffset.empty() ) {
1842 fprintf(stream, " %22s = %d\n", "ImageEndOffset", ImageEndOffset.get());
1844 if ( ! FieldDominance.empty() ) {
1845 fprintf(stream, " %22s = %d\n", "FieldDominance", FieldDominance.get());
1847 fprintf(stream, " %22s = %s\n", "PictureEssenceCoding", PictureEssenceCoding.EncodeString(identbuf, IdentBufferLen));
1848 if ( ! CodingEquations.empty() ) {
1849 fprintf(stream, " %22s = %s\n", "CodingEquations", CodingEquations.get().EncodeString(identbuf, IdentBufferLen));
1851 if ( ! ColorPrimaries.empty() ) {
1852 fprintf(stream, " %22s = %s\n", "ColorPrimaries", ColorPrimaries.get().EncodeString(identbuf, IdentBufferLen));
1854 fprintf(stream, " %22s:\n", "AlternativeCenterCuts");
1855 AlternativeCenterCuts.Dump(stream);
1856 if ( ! ActiveWidth.empty() ) {
1857 fprintf(stream, " %22s = %d\n", "ActiveWidth", ActiveWidth.get());
1859 if ( ! ActiveHeight.empty() ) {
1860 fprintf(stream, " %22s = %d\n", "ActiveHeight", ActiveHeight.get());
1862 if ( ! ActiveXOffset.empty() ) {
1863 fprintf(stream, " %22s = %d\n", "ActiveXOffset", ActiveXOffset.get());
1865 if ( ! ActiveYOffset.empty() ) {
1866 fprintf(stream, " %22s = %d\n", "ActiveYOffset", ActiveYOffset.get());
1872 GenericPictureEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1874 return InterchangeObject::InitFromBuffer(p, l);
1879 GenericPictureEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1881 return InterchangeObject::WriteToBuffer(Buffer);
1884 //------------------------------------------------------------------------------------------
1885 // RGBAEssenceDescriptor
1889 RGBAEssenceDescriptor::RGBAEssenceDescriptor(const Dictionary*& d) : GenericPictureEssenceDescriptor(d), m_Dict(d), ComponentMaxRef(0), AlphaMinRef(0), ScanningDirection(0)
1892 m_UL = m_Dict->ul(MDD_RGBAEssenceDescriptor);
1895 RGBAEssenceDescriptor::RGBAEssenceDescriptor(const RGBAEssenceDescriptor& rhs) : GenericPictureEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
1898 m_UL = m_Dict->ul(MDD_RGBAEssenceDescriptor);
1905 RGBAEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1908 Result_t result = GenericPictureEssenceDescriptor::InitFromTLVSet(TLVSet);
1909 if ( ASDCP_SUCCESS(result) ) {
1910 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(RGBAEssenceDescriptor, ComponentMaxRef));
1911 ComponentMaxRef.set_has_value( result == RESULT_OK );
1913 if ( ASDCP_SUCCESS(result) ) {
1914 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(RGBAEssenceDescriptor, ComponentMinRef));
1915 ComponentMinRef.set_has_value( result == RESULT_OK );
1917 if ( ASDCP_SUCCESS(result) ) {
1918 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(RGBAEssenceDescriptor, AlphaMinRef));
1919 AlphaMinRef.set_has_value( result == RESULT_OK );
1921 if ( ASDCP_SUCCESS(result) ) {
1922 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(RGBAEssenceDescriptor, AlphaMaxRef));
1923 AlphaMaxRef.set_has_value( result == RESULT_OK );
1925 if ( ASDCP_SUCCESS(result) ) {
1926 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(RGBAEssenceDescriptor, ScanningDirection));
1927 ScanningDirection.set_has_value( result == RESULT_OK );
1934 RGBAEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1937 Result_t result = GenericPictureEssenceDescriptor::WriteToTLVSet(TLVSet);
1938 if ( ASDCP_SUCCESS(result) && ! ComponentMaxRef.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(RGBAEssenceDescriptor, ComponentMaxRef));
1939 if ( ASDCP_SUCCESS(result) && ! ComponentMinRef.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(RGBAEssenceDescriptor, ComponentMinRef));
1940 if ( ASDCP_SUCCESS(result) && ! AlphaMinRef.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(RGBAEssenceDescriptor, AlphaMinRef));
1941 if ( ASDCP_SUCCESS(result) && ! AlphaMaxRef.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(RGBAEssenceDescriptor, AlphaMaxRef));
1942 if ( ASDCP_SUCCESS(result) && ! ScanningDirection.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(RGBAEssenceDescriptor, ScanningDirection));
1948 RGBAEssenceDescriptor::Copy(const RGBAEssenceDescriptor& rhs)
1950 GenericPictureEssenceDescriptor::Copy(rhs);
1951 ComponentMaxRef = rhs.ComponentMaxRef;
1952 ComponentMinRef = rhs.ComponentMinRef;
1953 AlphaMinRef = rhs.AlphaMinRef;
1954 AlphaMaxRef = rhs.AlphaMaxRef;
1955 ScanningDirection = rhs.ScanningDirection;
1960 RGBAEssenceDescriptor::Dump(FILE* stream)
1962 char identbuf[IdentBufferLen];
1968 GenericPictureEssenceDescriptor::Dump(stream);
1969 if ( ! ComponentMaxRef.empty() ) {
1970 fprintf(stream, " %22s = %d\n", "ComponentMaxRef", ComponentMaxRef.get());
1972 if ( ! ComponentMinRef.empty() ) {
1973 fprintf(stream, " %22s = %d\n", "ComponentMinRef", ComponentMinRef.get());
1975 if ( ! AlphaMinRef.empty() ) {
1976 fprintf(stream, " %22s = %d\n", "AlphaMinRef", AlphaMinRef.get());
1978 if ( ! AlphaMaxRef.empty() ) {
1979 fprintf(stream, " %22s = %d\n", "AlphaMaxRef", AlphaMaxRef.get());
1981 if ( ! ScanningDirection.empty() ) {
1982 fprintf(stream, " %22s = %d\n", "ScanningDirection", ScanningDirection.get());
1988 RGBAEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1990 return InterchangeObject::InitFromBuffer(p, l);
1995 RGBAEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1997 return InterchangeObject::WriteToBuffer(Buffer);
2000 //------------------------------------------------------------------------------------------
2001 // JPEG2000PictureSubDescriptor
2005 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)
2008 m_UL = m_Dict->ul(MDD_JPEG2000PictureSubDescriptor);
2011 JPEG2000PictureSubDescriptor::JPEG2000PictureSubDescriptor(const JPEG2000PictureSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2014 m_UL = m_Dict->ul(MDD_JPEG2000PictureSubDescriptor);
2021 JPEG2000PictureSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
2024 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2025 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Rsize));
2026 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Xsize));
2027 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Ysize));
2028 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XOsize));
2029 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YOsize));
2030 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XTsize));
2031 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YTsize));
2032 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XTOsize));
2033 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YTOsize));
2034 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Csize));
2035 if ( ASDCP_SUCCESS(result) ) {
2036 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(JPEG2000PictureSubDescriptor, PictureComponentSizing));
2037 PictureComponentSizing.set_has_value( result == RESULT_OK );
2039 if ( ASDCP_SUCCESS(result) ) {
2040 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(JPEG2000PictureSubDescriptor, CodingStyleDefault));
2041 CodingStyleDefault.set_has_value( result == RESULT_OK );
2043 if ( ASDCP_SUCCESS(result) ) {
2044 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(JPEG2000PictureSubDescriptor, QuantizationDefault));
2045 QuantizationDefault.set_has_value( result == RESULT_OK );
2052 JPEG2000PictureSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2055 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2056 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Rsize));
2057 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Xsize));
2058 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Ysize));
2059 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XOsize));
2060 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YOsize));
2061 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XTsize));
2062 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YTsize));
2063 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XTOsize));
2064 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YTOsize));
2065 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Csize));
2066 if ( ASDCP_SUCCESS(result) && ! PictureComponentSizing.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, PictureComponentSizing));
2067 if ( ASDCP_SUCCESS(result) && ! CodingStyleDefault.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, CodingStyleDefault));
2068 if ( ASDCP_SUCCESS(result) && ! QuantizationDefault.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(JPEG2000PictureSubDescriptor, QuantizationDefault));
2074 JPEG2000PictureSubDescriptor::Copy(const JPEG2000PictureSubDescriptor& rhs)
2076 InterchangeObject::Copy(rhs);
2080 XOsize = rhs.XOsize;
2081 YOsize = rhs.YOsize;
2082 XTsize = rhs.XTsize;
2083 YTsize = rhs.YTsize;
2084 XTOsize = rhs.XTOsize;
2085 YTOsize = rhs.YTOsize;
2087 PictureComponentSizing = rhs.PictureComponentSizing;
2088 CodingStyleDefault = rhs.CodingStyleDefault;
2089 QuantizationDefault = rhs.QuantizationDefault;
2094 JPEG2000PictureSubDescriptor::Dump(FILE* stream)
2096 char identbuf[IdentBufferLen];
2102 InterchangeObject::Dump(stream);
2103 fprintf(stream, " %22s = %d\n", "Rsize", Rsize);
2104 fprintf(stream, " %22s = %d\n", "Xsize", Xsize);
2105 fprintf(stream, " %22s = %d\n", "Ysize", Ysize);
2106 fprintf(stream, " %22s = %d\n", "XOsize", XOsize);
2107 fprintf(stream, " %22s = %d\n", "YOsize", YOsize);
2108 fprintf(stream, " %22s = %d\n", "XTsize", XTsize);
2109 fprintf(stream, " %22s = %d\n", "YTsize", YTsize);
2110 fprintf(stream, " %22s = %d\n", "XTOsize", XTOsize);
2111 fprintf(stream, " %22s = %d\n", "YTOsize", YTOsize);
2112 fprintf(stream, " %22s = %d\n", "Csize", Csize);
2113 if ( ! PictureComponentSizing.empty() ) {
2114 fprintf(stream, " %22s = %s\n", "PictureComponentSizing", PictureComponentSizing.get().EncodeString(identbuf, IdentBufferLen));
2116 if ( ! CodingStyleDefault.empty() ) {
2117 fprintf(stream, " %22s = %s\n", "CodingStyleDefault", CodingStyleDefault.get().EncodeString(identbuf, IdentBufferLen));
2119 if ( ! QuantizationDefault.empty() ) {
2120 fprintf(stream, " %22s = %s\n", "QuantizationDefault", QuantizationDefault.get().EncodeString(identbuf, IdentBufferLen));
2126 JPEG2000PictureSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
2128 return InterchangeObject::InitFromBuffer(p, l);
2133 JPEG2000PictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2135 return InterchangeObject::WriteToBuffer(Buffer);
2138 //------------------------------------------------------------------------------------------
2139 // CDCIEssenceDescriptor
2143 CDCIEssenceDescriptor::CDCIEssenceDescriptor(const Dictionary*& d) : GenericPictureEssenceDescriptor(d), m_Dict(d), ComponentDepth(0), HorizontalSubsampling(0), VerticalSubsampling(0), ReversedByteOrder(0), AlphaSampleDepth(0), WhiteReflevel(0)
2146 m_UL = m_Dict->ul(MDD_CDCIEssenceDescriptor);
2149 CDCIEssenceDescriptor::CDCIEssenceDescriptor(const CDCIEssenceDescriptor& rhs) : GenericPictureEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
2152 m_UL = m_Dict->ul(MDD_CDCIEssenceDescriptor);
2159 CDCIEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
2162 Result_t result = GenericPictureEssenceDescriptor::InitFromTLVSet(TLVSet);
2163 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, ComponentDepth));
2164 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, HorizontalSubsampling));
2165 if ( ASDCP_SUCCESS(result) ) {
2166 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, VerticalSubsampling));
2167 VerticalSubsampling.set_has_value( result == RESULT_OK );
2169 if ( ASDCP_SUCCESS(result) ) {
2170 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, ColorSiting));
2171 ColorSiting.set_has_value( result == RESULT_OK );
2173 if ( ASDCP_SUCCESS(result) ) {
2174 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, ReversedByteOrder));
2175 ReversedByteOrder.set_has_value( result == RESULT_OK );
2177 if ( ASDCP_SUCCESS(result) ) {
2178 result = TLVSet.ReadUi16(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, PaddingBits));
2179 PaddingBits.set_has_value( result == RESULT_OK );
2181 if ( ASDCP_SUCCESS(result) ) {
2182 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, AlphaSampleDepth));
2183 AlphaSampleDepth.set_has_value( result == RESULT_OK );
2185 if ( ASDCP_SUCCESS(result) ) {
2186 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, BlackRefLevel));
2187 BlackRefLevel.set_has_value( result == RESULT_OK );
2189 if ( ASDCP_SUCCESS(result) ) {
2190 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, WhiteReflevel));
2191 WhiteReflevel.set_has_value( result == RESULT_OK );
2193 if ( ASDCP_SUCCESS(result) ) {
2194 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(CDCIEssenceDescriptor, ColorRange));
2195 ColorRange.set_has_value( result == RESULT_OK );
2202 CDCIEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2205 Result_t result = GenericPictureEssenceDescriptor::WriteToTLVSet(TLVSet);
2206 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, ComponentDepth));
2207 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, HorizontalSubsampling));
2208 if ( ASDCP_SUCCESS(result) && ! VerticalSubsampling.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, VerticalSubsampling));
2209 if ( ASDCP_SUCCESS(result) && ! ColorSiting.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, ColorSiting));
2210 if ( ASDCP_SUCCESS(result) && ! ReversedByteOrder.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, ReversedByteOrder));
2211 if ( ASDCP_SUCCESS(result) && ! PaddingBits.empty() ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, PaddingBits));
2212 if ( ASDCP_SUCCESS(result) && ! AlphaSampleDepth.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, AlphaSampleDepth));
2213 if ( ASDCP_SUCCESS(result) && ! BlackRefLevel.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, BlackRefLevel));
2214 if ( ASDCP_SUCCESS(result) && ! WhiteReflevel.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, WhiteReflevel));
2215 if ( ASDCP_SUCCESS(result) && ! ColorRange.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(CDCIEssenceDescriptor, ColorRange));
2221 CDCIEssenceDescriptor::Copy(const CDCIEssenceDescriptor& rhs)
2223 GenericPictureEssenceDescriptor::Copy(rhs);
2224 ComponentDepth = rhs.ComponentDepth;
2225 HorizontalSubsampling = rhs.HorizontalSubsampling;
2226 VerticalSubsampling = rhs.VerticalSubsampling;
2227 ColorSiting = rhs.ColorSiting;
2228 ReversedByteOrder = rhs.ReversedByteOrder;
2229 PaddingBits = rhs.PaddingBits;
2230 AlphaSampleDepth = rhs.AlphaSampleDepth;
2231 BlackRefLevel = rhs.BlackRefLevel;
2232 WhiteReflevel = rhs.WhiteReflevel;
2233 ColorRange = rhs.ColorRange;
2238 CDCIEssenceDescriptor::Dump(FILE* stream)
2240 char identbuf[IdentBufferLen];
2246 GenericPictureEssenceDescriptor::Dump(stream);
2247 fprintf(stream, " %22s = %d\n", "ComponentDepth", ComponentDepth);
2248 fprintf(stream, " %22s = %d\n", "HorizontalSubsampling", HorizontalSubsampling);
2249 if ( ! VerticalSubsampling.empty() ) {
2250 fprintf(stream, " %22s = %d\n", "VerticalSubsampling", VerticalSubsampling.get());
2252 if ( ! ColorSiting.empty() ) {
2253 fprintf(stream, " %22s = %d\n", "ColorSiting", ColorSiting.get());
2255 if ( ! ReversedByteOrder.empty() ) {
2256 fprintf(stream, " %22s = %d\n", "ReversedByteOrder", ReversedByteOrder.get());
2258 if ( ! PaddingBits.empty() ) {
2259 fprintf(stream, " %22s = %d\n", "PaddingBits", PaddingBits.get());
2261 if ( ! AlphaSampleDepth.empty() ) {
2262 fprintf(stream, " %22s = %d\n", "AlphaSampleDepth", AlphaSampleDepth.get());
2264 if ( ! BlackRefLevel.empty() ) {
2265 fprintf(stream, " %22s = %d\n", "BlackRefLevel", BlackRefLevel.get());
2267 if ( ! WhiteReflevel.empty() ) {
2268 fprintf(stream, " %22s = %d\n", "WhiteReflevel", WhiteReflevel.get());
2270 if ( ! ColorRange.empty() ) {
2271 fprintf(stream, " %22s = %d\n", "ColorRange", ColorRange.get());
2277 CDCIEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
2279 return InterchangeObject::InitFromBuffer(p, l);
2284 CDCIEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2286 return InterchangeObject::WriteToBuffer(Buffer);
2289 //------------------------------------------------------------------------------------------
2290 // MPEG2VideoDescriptor
2294 MPEG2VideoDescriptor::MPEG2VideoDescriptor(const Dictionary*& d) : CDCIEssenceDescriptor(d), m_Dict(d), SingleSequence(0), CodedContentType(0), ClosedGOP(0), MaxGOP(0), BitRate(0)
2297 m_UL = m_Dict->ul(MDD_MPEG2VideoDescriptor);
2300 MPEG2VideoDescriptor::MPEG2VideoDescriptor(const MPEG2VideoDescriptor& rhs) : CDCIEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
2303 m_UL = m_Dict->ul(MDD_MPEG2VideoDescriptor);
2310 MPEG2VideoDescriptor::InitFromTLVSet(TLVReader& TLVSet)
2313 Result_t result = CDCIEssenceDescriptor::InitFromTLVSet(TLVSet);
2314 if ( ASDCP_SUCCESS(result) ) {
2315 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, SingleSequence));
2316 SingleSequence.set_has_value( result == RESULT_OK );
2318 if ( ASDCP_SUCCESS(result) ) {
2319 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, ConstantBFrames));
2320 ConstantBFrames.set_has_value( result == RESULT_OK );
2322 if ( ASDCP_SUCCESS(result) ) {
2323 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, CodedContentType));
2324 CodedContentType.set_has_value( result == RESULT_OK );
2326 if ( ASDCP_SUCCESS(result) ) {
2327 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, LowDelay));
2328 LowDelay.set_has_value( result == RESULT_OK );
2330 if ( ASDCP_SUCCESS(result) ) {
2331 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, ClosedGOP));
2332 ClosedGOP.set_has_value( result == RESULT_OK );
2334 if ( ASDCP_SUCCESS(result) ) {
2335 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, IdenticalGOP));
2336 IdenticalGOP.set_has_value( result == RESULT_OK );
2338 if ( ASDCP_SUCCESS(result) ) {
2339 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, MaxGOP));
2340 MaxGOP.set_has_value( result == RESULT_OK );
2342 if ( ASDCP_SUCCESS(result) ) {
2343 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, BPictureCount));
2344 BPictureCount.set_has_value( result == RESULT_OK );
2346 if ( ASDCP_SUCCESS(result) ) {
2347 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, BitRate));
2348 BitRate.set_has_value( result == RESULT_OK );
2350 if ( ASDCP_SUCCESS(result) ) {
2351 result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(MPEG2VideoDescriptor, ProfileAndLevel));
2352 ProfileAndLevel.set_has_value( result == RESULT_OK );
2359 MPEG2VideoDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2362 Result_t result = CDCIEssenceDescriptor::WriteToTLVSet(TLVSet);
2363 if ( ASDCP_SUCCESS(result) && ! SingleSequence.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, SingleSequence));
2364 if ( ASDCP_SUCCESS(result) && ! ConstantBFrames.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, ConstantBFrames));
2365 if ( ASDCP_SUCCESS(result) && ! CodedContentType.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, CodedContentType));
2366 if ( ASDCP_SUCCESS(result) && ! LowDelay.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, LowDelay));
2367 if ( ASDCP_SUCCESS(result) && ! ClosedGOP.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, ClosedGOP));
2368 if ( ASDCP_SUCCESS(result) && ! IdenticalGOP.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, IdenticalGOP));
2369 if ( ASDCP_SUCCESS(result) && ! MaxGOP.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, MaxGOP));
2370 if ( ASDCP_SUCCESS(result) && ! BPictureCount.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, BPictureCount));
2371 if ( ASDCP_SUCCESS(result) && ! BitRate.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, BitRate));
2372 if ( ASDCP_SUCCESS(result) && ! ProfileAndLevel.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(MPEG2VideoDescriptor, ProfileAndLevel));
2378 MPEG2VideoDescriptor::Copy(const MPEG2VideoDescriptor& rhs)
2380 CDCIEssenceDescriptor::Copy(rhs);
2381 SingleSequence = rhs.SingleSequence;
2382 ConstantBFrames = rhs.ConstantBFrames;
2383 CodedContentType = rhs.CodedContentType;
2384 LowDelay = rhs.LowDelay;
2385 ClosedGOP = rhs.ClosedGOP;
2386 IdenticalGOP = rhs.IdenticalGOP;
2387 MaxGOP = rhs.MaxGOP;
2388 BPictureCount = rhs.BPictureCount;
2389 BitRate = rhs.BitRate;
2390 ProfileAndLevel = rhs.ProfileAndLevel;
2395 MPEG2VideoDescriptor::Dump(FILE* stream)
2397 char identbuf[IdentBufferLen];
2403 CDCIEssenceDescriptor::Dump(stream);
2404 if ( ! SingleSequence.empty() ) {
2405 fprintf(stream, " %22s = %d\n", "SingleSequence", SingleSequence.get());
2407 if ( ! ConstantBFrames.empty() ) {
2408 fprintf(stream, " %22s = %d\n", "ConstantBFrames", ConstantBFrames.get());
2410 if ( ! CodedContentType.empty() ) {
2411 fprintf(stream, " %22s = %d\n", "CodedContentType", CodedContentType.get());
2413 if ( ! LowDelay.empty() ) {
2414 fprintf(stream, " %22s = %d\n", "LowDelay", LowDelay.get());
2416 if ( ! ClosedGOP.empty() ) {
2417 fprintf(stream, " %22s = %d\n", "ClosedGOP", ClosedGOP.get());
2419 if ( ! IdenticalGOP.empty() ) {
2420 fprintf(stream, " %22s = %d\n", "IdenticalGOP", IdenticalGOP.get());
2422 if ( ! MaxGOP.empty() ) {
2423 fprintf(stream, " %22s = %d\n", "MaxGOP", MaxGOP.get());
2425 if ( ! BPictureCount.empty() ) {
2426 fprintf(stream, " %22s = %d\n", "BPictureCount", BPictureCount.get());
2428 if ( ! BitRate.empty() ) {
2429 fprintf(stream, " %22s = %d\n", "BitRate", BitRate.get());
2431 if ( ! ProfileAndLevel.empty() ) {
2432 fprintf(stream, " %22s = %d\n", "ProfileAndLevel", ProfileAndLevel.get());
2438 MPEG2VideoDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
2440 return InterchangeObject::InitFromBuffer(p, l);
2445 MPEG2VideoDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2447 return InterchangeObject::WriteToBuffer(Buffer);
2450 //------------------------------------------------------------------------------------------
2455 DMSegment::DMSegment(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), EventStartPosition(0), Duration(0)
2458 m_UL = m_Dict->ul(MDD_DMSegment);
2461 DMSegment::DMSegment(const DMSegment& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2464 m_UL = m_Dict->ul(MDD_DMSegment);
2471 DMSegment::InitFromTLVSet(TLVReader& TLVSet)
2474 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2475 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DMSegment, DataDefinition));
2476 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(DMSegment, EventStartPosition));
2477 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(DMSegment, Duration));
2478 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DMSegment, EventComment));
2479 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DMSegment, DMFramework));
2485 DMSegment::WriteToTLVSet(TLVWriter& TLVSet)
2488 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2489 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DMSegment, DataDefinition));
2490 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(DMSegment, EventStartPosition));
2491 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(DMSegment, Duration));
2492 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DMSegment, EventComment));
2493 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DMSegment, DMFramework));
2499 DMSegment::Copy(const DMSegment& rhs)
2501 InterchangeObject::Copy(rhs);
2502 DataDefinition = rhs.DataDefinition;
2503 EventStartPosition = rhs.EventStartPosition;
2504 Duration = rhs.Duration;
2505 EventComment = rhs.EventComment;
2506 DMFramework = rhs.DMFramework;
2511 DMSegment::Dump(FILE* stream)
2513 char identbuf[IdentBufferLen];
2519 InterchangeObject::Dump(stream);
2520 fprintf(stream, " %22s = %s\n", "DataDefinition", DataDefinition.EncodeString(identbuf, IdentBufferLen));
2521 fprintf(stream, " %22s = %s\n", "EventStartPosition", i64sz(EventStartPosition, identbuf));
2522 fprintf(stream, " %22s = %s\n", "Duration", i64sz(Duration, identbuf));
2523 fprintf(stream, " %22s = %s\n", "EventComment", EventComment.EncodeString(identbuf, IdentBufferLen));
2524 fprintf(stream, " %22s = %s\n", "DMFramework", DMFramework.EncodeString(identbuf, IdentBufferLen));
2529 DMSegment::InitFromBuffer(const byte_t* p, ui32_t l)
2531 return InterchangeObject::InitFromBuffer(p, l);
2536 DMSegment::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2538 return InterchangeObject::WriteToBuffer(Buffer);
2541 //------------------------------------------------------------------------------------------
2542 // CryptographicFramework
2546 CryptographicFramework::CryptographicFramework(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
2549 m_UL = m_Dict->ul(MDD_CryptographicFramework);
2552 CryptographicFramework::CryptographicFramework(const CryptographicFramework& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2555 m_UL = m_Dict->ul(MDD_CryptographicFramework);
2562 CryptographicFramework::InitFromTLVSet(TLVReader& TLVSet)
2565 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2566 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicFramework, ContextSR));
2572 CryptographicFramework::WriteToTLVSet(TLVWriter& TLVSet)
2575 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2576 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicFramework, ContextSR));
2582 CryptographicFramework::Copy(const CryptographicFramework& rhs)
2584 InterchangeObject::Copy(rhs);
2585 ContextSR = rhs.ContextSR;
2590 CryptographicFramework::Dump(FILE* stream)
2592 char identbuf[IdentBufferLen];
2598 InterchangeObject::Dump(stream);
2599 fprintf(stream, " %22s = %s\n", "ContextSR", ContextSR.EncodeString(identbuf, IdentBufferLen));
2604 CryptographicFramework::InitFromBuffer(const byte_t* p, ui32_t l)
2606 return InterchangeObject::InitFromBuffer(p, l);
2611 CryptographicFramework::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2613 return InterchangeObject::WriteToBuffer(Buffer);
2616 //------------------------------------------------------------------------------------------
2617 // CryptographicContext
2621 CryptographicContext::CryptographicContext(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
2624 m_UL = m_Dict->ul(MDD_CryptographicContext);
2627 CryptographicContext::CryptographicContext(const CryptographicContext& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2630 m_UL = m_Dict->ul(MDD_CryptographicContext);
2637 CryptographicContext::InitFromTLVSet(TLVReader& TLVSet)
2640 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2641 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, ContextID));
2642 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, SourceEssenceContainer));
2643 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, CipherAlgorithm));
2644 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, MICAlgorithm));
2645 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, CryptographicKeyID));
2651 CryptographicContext::WriteToTLVSet(TLVWriter& TLVSet)
2654 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2655 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, ContextID));
2656 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, SourceEssenceContainer));
2657 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, CipherAlgorithm));
2658 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, MICAlgorithm));
2659 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, CryptographicKeyID));
2665 CryptographicContext::Copy(const CryptographicContext& rhs)
2667 InterchangeObject::Copy(rhs);
2668 ContextID = rhs.ContextID;
2669 SourceEssenceContainer = rhs.SourceEssenceContainer;
2670 CipherAlgorithm = rhs.CipherAlgorithm;
2671 MICAlgorithm = rhs.MICAlgorithm;
2672 CryptographicKeyID = rhs.CryptographicKeyID;
2677 CryptographicContext::Dump(FILE* stream)
2679 char identbuf[IdentBufferLen];
2685 InterchangeObject::Dump(stream);
2686 fprintf(stream, " %22s = %s\n", "ContextID", ContextID.EncodeString(identbuf, IdentBufferLen));
2687 fprintf(stream, " %22s = %s\n", "SourceEssenceContainer", SourceEssenceContainer.EncodeString(identbuf, IdentBufferLen));
2688 fprintf(stream, " %22s = %s\n", "CipherAlgorithm", CipherAlgorithm.EncodeString(identbuf, IdentBufferLen));
2689 fprintf(stream, " %22s = %s\n", "MICAlgorithm", MICAlgorithm.EncodeString(identbuf, IdentBufferLen));
2690 fprintf(stream, " %22s = %s\n", "CryptographicKeyID", CryptographicKeyID.EncodeString(identbuf, IdentBufferLen));
2695 CryptographicContext::InitFromBuffer(const byte_t* p, ui32_t l)
2697 return InterchangeObject::InitFromBuffer(p, l);
2702 CryptographicContext::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2704 return InterchangeObject::WriteToBuffer(Buffer);
2707 //------------------------------------------------------------------------------------------
2708 // GenericDataEssenceDescriptor
2712 GenericDataEssenceDescriptor::GenericDataEssenceDescriptor(const Dictionary*& d) : FileDescriptor(d), m_Dict(d)
2715 m_UL = m_Dict->ul(MDD_GenericDataEssenceDescriptor);
2718 GenericDataEssenceDescriptor::GenericDataEssenceDescriptor(const GenericDataEssenceDescriptor& rhs) : FileDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
2721 m_UL = m_Dict->ul(MDD_GenericDataEssenceDescriptor);
2728 GenericDataEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
2731 Result_t result = FileDescriptor::InitFromTLVSet(TLVSet);
2732 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericDataEssenceDescriptor, DataEssenceCoding));
2738 GenericDataEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2741 Result_t result = FileDescriptor::WriteToTLVSet(TLVSet);
2742 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericDataEssenceDescriptor, DataEssenceCoding));
2748 GenericDataEssenceDescriptor::Copy(const GenericDataEssenceDescriptor& rhs)
2750 FileDescriptor::Copy(rhs);
2751 DataEssenceCoding = rhs.DataEssenceCoding;
2756 GenericDataEssenceDescriptor::Dump(FILE* stream)
2758 char identbuf[IdentBufferLen];
2764 FileDescriptor::Dump(stream);
2765 fprintf(stream, " %22s = %s\n", "DataEssenceCoding", DataEssenceCoding.EncodeString(identbuf, IdentBufferLen));
2770 GenericDataEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
2772 return InterchangeObject::InitFromBuffer(p, l);
2777 GenericDataEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2779 return InterchangeObject::WriteToBuffer(Buffer);
2782 //------------------------------------------------------------------------------------------
2783 // TimedTextDescriptor
2787 TimedTextDescriptor::TimedTextDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d)
2790 m_UL = m_Dict->ul(MDD_TimedTextDescriptor);
2793 TimedTextDescriptor::TimedTextDescriptor(const TimedTextDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
2796 m_UL = m_Dict->ul(MDD_TimedTextDescriptor);
2803 TimedTextDescriptor::InitFromTLVSet(TLVReader& TLVSet)
2806 Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet);
2807 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, ResourceID));
2808 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, UCSEncoding));
2809 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, NamespaceURI));
2810 if ( ASDCP_SUCCESS(result) ) {
2811 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(TimedTextDescriptor, RFC5646LanguageTagList));
2812 RFC5646LanguageTagList.set_has_value( result == RESULT_OK );
2819 TimedTextDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2822 Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet);
2823 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, ResourceID));
2824 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, UCSEncoding));
2825 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, NamespaceURI));
2826 if ( ASDCP_SUCCESS(result) && ! RFC5646LanguageTagList.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(TimedTextDescriptor, RFC5646LanguageTagList));
2832 TimedTextDescriptor::Copy(const TimedTextDescriptor& rhs)
2834 GenericDataEssenceDescriptor::Copy(rhs);
2835 ResourceID = rhs.ResourceID;
2836 UCSEncoding = rhs.UCSEncoding;
2837 NamespaceURI = rhs.NamespaceURI;
2838 RFC5646LanguageTagList = rhs.RFC5646LanguageTagList;
2843 TimedTextDescriptor::Dump(FILE* stream)
2845 char identbuf[IdentBufferLen];
2851 GenericDataEssenceDescriptor::Dump(stream);
2852 fprintf(stream, " %22s = %s\n", "ResourceID", ResourceID.EncodeString(identbuf, IdentBufferLen));
2853 fprintf(stream, " %22s = %s\n", "UCSEncoding", UCSEncoding.EncodeString(identbuf, IdentBufferLen));
2854 fprintf(stream, " %22s = %s\n", "NamespaceURI", NamespaceURI.EncodeString(identbuf, IdentBufferLen));
2855 if ( ! RFC5646LanguageTagList.empty() ) {
2856 fprintf(stream, " %22s = %s\n", "RFC5646LanguageTagList", RFC5646LanguageTagList.get().EncodeString(identbuf, IdentBufferLen));
2862 TimedTextDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
2864 return InterchangeObject::InitFromBuffer(p, l);
2869 TimedTextDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2871 return InterchangeObject::WriteToBuffer(Buffer);
2874 //------------------------------------------------------------------------------------------
2875 // TimedTextResourceSubDescriptor
2879 TimedTextResourceSubDescriptor::TimedTextResourceSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), EssenceStreamID(0)
2882 m_UL = m_Dict->ul(MDD_TimedTextResourceSubDescriptor);
2885 TimedTextResourceSubDescriptor::TimedTextResourceSubDescriptor(const TimedTextResourceSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2888 m_UL = m_Dict->ul(MDD_TimedTextResourceSubDescriptor);
2895 TimedTextResourceSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
2898 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2899 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextResourceSubDescriptor, AncillaryResourceID));
2900 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextResourceSubDescriptor, MIMEMediaType));
2901 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(TimedTextResourceSubDescriptor, EssenceStreamID));
2907 TimedTextResourceSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2910 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2911 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextResourceSubDescriptor, AncillaryResourceID));
2912 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextResourceSubDescriptor, MIMEMediaType));
2913 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(TimedTextResourceSubDescriptor, EssenceStreamID));
2919 TimedTextResourceSubDescriptor::Copy(const TimedTextResourceSubDescriptor& rhs)
2921 InterchangeObject::Copy(rhs);
2922 AncillaryResourceID = rhs.AncillaryResourceID;
2923 MIMEMediaType = rhs.MIMEMediaType;
2924 EssenceStreamID = rhs.EssenceStreamID;
2929 TimedTextResourceSubDescriptor::Dump(FILE* stream)
2931 char identbuf[IdentBufferLen];
2937 InterchangeObject::Dump(stream);
2938 fprintf(stream, " %22s = %s\n", "AncillaryResourceID", AncillaryResourceID.EncodeString(identbuf, IdentBufferLen));
2939 fprintf(stream, " %22s = %s\n", "MIMEMediaType", MIMEMediaType.EncodeString(identbuf, IdentBufferLen));
2940 fprintf(stream, " %22s = %d\n", "EssenceStreamID", EssenceStreamID);
2945 TimedTextResourceSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
2947 return InterchangeObject::InitFromBuffer(p, l);
2952 TimedTextResourceSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
2954 return InterchangeObject::WriteToBuffer(Buffer);
2957 //------------------------------------------------------------------------------------------
2958 // StereoscopicPictureSubDescriptor
2962 StereoscopicPictureSubDescriptor::StereoscopicPictureSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
2965 m_UL = m_Dict->ul(MDD_StereoscopicPictureSubDescriptor);
2968 StereoscopicPictureSubDescriptor::StereoscopicPictureSubDescriptor(const StereoscopicPictureSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
2971 m_UL = m_Dict->ul(MDD_StereoscopicPictureSubDescriptor);
2978 StereoscopicPictureSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
2981 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
2987 StereoscopicPictureSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
2990 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
2996 StereoscopicPictureSubDescriptor::Copy(const StereoscopicPictureSubDescriptor& rhs)
2998 InterchangeObject::Copy(rhs);
3003 StereoscopicPictureSubDescriptor::Dump(FILE* stream)
3005 char identbuf[IdentBufferLen];
3011 InterchangeObject::Dump(stream);
3016 StereoscopicPictureSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3018 return InterchangeObject::InitFromBuffer(p, l);
3023 StereoscopicPictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3025 return InterchangeObject::WriteToBuffer(Buffer);
3028 //------------------------------------------------------------------------------------------
3033 NetworkLocator::NetworkLocator(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
3036 m_UL = m_Dict->ul(MDD_NetworkLocator);
3039 NetworkLocator::NetworkLocator(const NetworkLocator& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3042 m_UL = m_Dict->ul(MDD_NetworkLocator);
3049 NetworkLocator::InitFromTLVSet(TLVReader& TLVSet)
3052 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3053 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(NetworkLocator, URLString));
3059 NetworkLocator::WriteToTLVSet(TLVWriter& TLVSet)
3062 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3063 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(NetworkLocator, URLString));
3069 NetworkLocator::Copy(const NetworkLocator& rhs)
3071 InterchangeObject::Copy(rhs);
3072 URLString = rhs.URLString;
3077 NetworkLocator::Dump(FILE* stream)
3079 char identbuf[IdentBufferLen];
3085 InterchangeObject::Dump(stream);
3086 fprintf(stream, " %22s = %s\n", "URLString", URLString.EncodeString(identbuf, IdentBufferLen));
3091 NetworkLocator::InitFromBuffer(const byte_t* p, ui32_t l)
3093 return InterchangeObject::InitFromBuffer(p, l);
3098 NetworkLocator::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3100 return InterchangeObject::WriteToBuffer(Buffer);
3103 //------------------------------------------------------------------------------------------
3104 // MCALabelSubDescriptor
3108 MCALabelSubDescriptor::MCALabelSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d)
3111 m_UL = m_Dict->ul(MDD_MCALabelSubDescriptor);
3114 MCALabelSubDescriptor::MCALabelSubDescriptor(const MCALabelSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3117 m_UL = m_Dict->ul(MDD_MCALabelSubDescriptor);
3124 MCALabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3127 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3128 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(MCALabelSubDescriptor, MCALabelDictionaryID));
3129 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(MCALabelSubDescriptor, MCALinkID));
3130 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(MCALabelSubDescriptor, MCATagSymbol));
3131 if ( ASDCP_SUCCESS(result) ) {
3132 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCATagName));
3133 MCATagName.set_has_value( result == RESULT_OK );
3135 if ( ASDCP_SUCCESS(result) ) {
3136 result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAChannelID));
3137 MCAChannelID.set_has_value( result == RESULT_OK );
3139 if ( ASDCP_SUCCESS(result) ) {
3140 result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, RFC5646SpokenLanguage));
3141 RFC5646SpokenLanguage.set_has_value( result == RESULT_OK );
3148 MCALabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3151 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3152 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(MCALabelSubDescriptor, MCALabelDictionaryID));
3153 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(MCALabelSubDescriptor, MCALinkID));
3154 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(MCALabelSubDescriptor, MCATagSymbol));
3155 if ( ASDCP_SUCCESS(result) && ! MCATagName.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCATagName));
3156 if ( ASDCP_SUCCESS(result) && ! MCAChannelID.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAChannelID));
3157 if ( ASDCP_SUCCESS(result) && ! RFC5646SpokenLanguage.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, RFC5646SpokenLanguage));
3163 MCALabelSubDescriptor::Copy(const MCALabelSubDescriptor& rhs)
3165 InterchangeObject::Copy(rhs);
3166 MCALabelDictionaryID = rhs.MCALabelDictionaryID;
3167 MCALinkID = rhs.MCALinkID;
3168 MCATagSymbol = rhs.MCATagSymbol;
3169 MCATagName = rhs.MCATagName;
3170 MCAChannelID = rhs.MCAChannelID;
3171 RFC5646SpokenLanguage = rhs.RFC5646SpokenLanguage;
3176 MCALabelSubDescriptor::Dump(FILE* stream)
3178 char identbuf[IdentBufferLen];
3184 InterchangeObject::Dump(stream);
3185 fprintf(stream, " %22s = %s\n", "MCALabelDictionaryID", MCALabelDictionaryID.EncodeString(identbuf, IdentBufferLen));
3186 fprintf(stream, " %22s = %s\n", "MCALinkID", MCALinkID.EncodeString(identbuf, IdentBufferLen));
3187 fprintf(stream, " %22s = %s\n", "MCATagSymbol", MCATagSymbol.EncodeString(identbuf, IdentBufferLen));
3188 if ( ! MCATagName.empty() ) {
3189 fprintf(stream, " %22s = %s\n", "MCATagName", MCATagName.get().EncodeString(identbuf, IdentBufferLen));
3191 if ( ! MCAChannelID.empty() ) {
3192 fprintf(stream, " %22s = %d\n", "MCAChannelID", MCAChannelID.get());
3194 if ( ! RFC5646SpokenLanguage.empty() ) {
3195 fprintf(stream, " %22s = %s\n", "RFC5646SpokenLanguage", RFC5646SpokenLanguage.get().EncodeString(identbuf, IdentBufferLen));
3201 MCALabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3203 return InterchangeObject::InitFromBuffer(p, l);
3208 MCALabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3210 return InterchangeObject::WriteToBuffer(Buffer);
3213 //------------------------------------------------------------------------------------------
3214 // AudioChannelLabelSubDescriptor
3218 AudioChannelLabelSubDescriptor::AudioChannelLabelSubDescriptor(const Dictionary*& d) : MCALabelSubDescriptor(d), m_Dict(d)
3221 m_UL = m_Dict->ul(MDD_AudioChannelLabelSubDescriptor);
3224 AudioChannelLabelSubDescriptor::AudioChannelLabelSubDescriptor(const AudioChannelLabelSubDescriptor& rhs) : MCALabelSubDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3227 m_UL = m_Dict->ul(MDD_AudioChannelLabelSubDescriptor);
3234 AudioChannelLabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3237 Result_t result = MCALabelSubDescriptor::InitFromTLVSet(TLVSet);
3238 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(AudioChannelLabelSubDescriptor, SoundfieldGroupLinkID));
3244 AudioChannelLabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3247 Result_t result = MCALabelSubDescriptor::WriteToTLVSet(TLVSet);
3248 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(AudioChannelLabelSubDescriptor, SoundfieldGroupLinkID));
3254 AudioChannelLabelSubDescriptor::Copy(const AudioChannelLabelSubDescriptor& rhs)
3256 MCALabelSubDescriptor::Copy(rhs);
3257 SoundfieldGroupLinkID = rhs.SoundfieldGroupLinkID;
3262 AudioChannelLabelSubDescriptor::Dump(FILE* stream)
3264 char identbuf[IdentBufferLen];
3270 MCALabelSubDescriptor::Dump(stream);
3271 fprintf(stream, " %22s = %s\n", "SoundfieldGroupLinkID", SoundfieldGroupLinkID.EncodeString(identbuf, IdentBufferLen));
3276 AudioChannelLabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3278 return InterchangeObject::InitFromBuffer(p, l);
3283 AudioChannelLabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3285 return InterchangeObject::WriteToBuffer(Buffer);
3288 //------------------------------------------------------------------------------------------
3289 // SoundfieldGroupLabelSubDescriptor
3293 SoundfieldGroupLabelSubDescriptor::SoundfieldGroupLabelSubDescriptor(const Dictionary*& d) : MCALabelSubDescriptor(d), m_Dict(d)
3296 m_UL = m_Dict->ul(MDD_SoundfieldGroupLabelSubDescriptor);
3299 SoundfieldGroupLabelSubDescriptor::SoundfieldGroupLabelSubDescriptor(const SoundfieldGroupLabelSubDescriptor& rhs) : MCALabelSubDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3302 m_UL = m_Dict->ul(MDD_SoundfieldGroupLabelSubDescriptor);
3309 SoundfieldGroupLabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3312 Result_t result = MCALabelSubDescriptor::InitFromTLVSet(TLVSet);
3313 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(SoundfieldGroupLabelSubDescriptor, GroupOfSoundfieldGroupsLinkID));
3319 SoundfieldGroupLabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3322 Result_t result = MCALabelSubDescriptor::WriteToTLVSet(TLVSet);
3323 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(SoundfieldGroupLabelSubDescriptor, GroupOfSoundfieldGroupsLinkID));
3329 SoundfieldGroupLabelSubDescriptor::Copy(const SoundfieldGroupLabelSubDescriptor& rhs)
3331 MCALabelSubDescriptor::Copy(rhs);
3332 GroupOfSoundfieldGroupsLinkID = rhs.GroupOfSoundfieldGroupsLinkID;
3337 SoundfieldGroupLabelSubDescriptor::Dump(FILE* stream)
3339 char identbuf[IdentBufferLen];
3345 MCALabelSubDescriptor::Dump(stream);
3346 fprintf(stream, " %22s:\n", "GroupOfSoundfieldGroupsLinkID");
3347 GroupOfSoundfieldGroupsLinkID.Dump(stream);
3352 SoundfieldGroupLabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3354 return InterchangeObject::InitFromBuffer(p, l);
3359 SoundfieldGroupLabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3361 return InterchangeObject::WriteToBuffer(Buffer);
3364 //------------------------------------------------------------------------------------------
3365 // GroupOfSoundfieldGroupsLabelSubDescriptor
3369 GroupOfSoundfieldGroupsLabelSubDescriptor::GroupOfSoundfieldGroupsLabelSubDescriptor(const Dictionary*& d) : MCALabelSubDescriptor(d), m_Dict(d)
3372 m_UL = m_Dict->ul(MDD_GroupOfSoundfieldGroupsLabelSubDescriptor);
3375 GroupOfSoundfieldGroupsLabelSubDescriptor::GroupOfSoundfieldGroupsLabelSubDescriptor(const GroupOfSoundfieldGroupsLabelSubDescriptor& rhs) : MCALabelSubDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3378 m_UL = m_Dict->ul(MDD_GroupOfSoundfieldGroupsLabelSubDescriptor);
3385 GroupOfSoundfieldGroupsLabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3388 Result_t result = MCALabelSubDescriptor::InitFromTLVSet(TLVSet);
3394 GroupOfSoundfieldGroupsLabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3397 Result_t result = MCALabelSubDescriptor::WriteToTLVSet(TLVSet);
3403 GroupOfSoundfieldGroupsLabelSubDescriptor::Copy(const GroupOfSoundfieldGroupsLabelSubDescriptor& rhs)
3405 MCALabelSubDescriptor::Copy(rhs);
3410 GroupOfSoundfieldGroupsLabelSubDescriptor::Dump(FILE* stream)
3412 char identbuf[IdentBufferLen];
3418 MCALabelSubDescriptor::Dump(stream);
3423 GroupOfSoundfieldGroupsLabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3425 return InterchangeObject::InitFromBuffer(p, l);
3430 GroupOfSoundfieldGroupsLabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3432 return InterchangeObject::WriteToBuffer(Buffer);
3435 //------------------------------------------------------------------------------------------
3440 DCDataDescriptor::DCDataDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d)
3443 m_UL = m_Dict->ul(MDD_DCDataDescriptor);
3446 DCDataDescriptor::DCDataDescriptor(const DCDataDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
3449 m_UL = m_Dict->ul(MDD_DCDataDescriptor);
3456 DCDataDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3459 Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet);
3465 DCDataDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3468 Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet);
3474 DCDataDescriptor::Copy(const DCDataDescriptor& rhs)
3476 GenericDataEssenceDescriptor::Copy(rhs);
3481 DCDataDescriptor::Dump(FILE* stream)
3483 char identbuf[IdentBufferLen];
3489 GenericDataEssenceDescriptor::Dump(stream);
3494 DCDataDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3496 return InterchangeObject::InitFromBuffer(p, l);
3501 DCDataDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3503 return InterchangeObject::WriteToBuffer(Buffer);
3506 //------------------------------------------------------------------------------------------
3507 // DolbyAtmosSubDescriptor
3511 DolbyAtmosSubDescriptor::DolbyAtmosSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), FirstFrame(0), MaxChannelCount(0), MaxObjectCount(0), AtmosVersion(0)
3514 m_UL = m_Dict->ul(MDD_DolbyAtmosSubDescriptor);
3517 DolbyAtmosSubDescriptor::DolbyAtmosSubDescriptor(const DolbyAtmosSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict)
3520 m_UL = m_Dict->ul(MDD_DolbyAtmosSubDescriptor);
3527 DolbyAtmosSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
3530 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
3531 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, AtmosID));
3532 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, FirstFrame));
3533 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, MaxChannelCount));
3534 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, MaxObjectCount));
3535 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(DolbyAtmosSubDescriptor, AtmosVersion));
3541 DolbyAtmosSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
3544 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
3545 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, AtmosID));
3546 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, FirstFrame));
3547 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, MaxChannelCount));
3548 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, MaxObjectCount));
3549 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(DolbyAtmosSubDescriptor, AtmosVersion));
3555 DolbyAtmosSubDescriptor::Copy(const DolbyAtmosSubDescriptor& rhs)
3557 InterchangeObject::Copy(rhs);
3558 AtmosID = rhs.AtmosID;
3559 FirstFrame = rhs.FirstFrame;
3560 MaxChannelCount = rhs.MaxChannelCount;
3561 MaxObjectCount = rhs.MaxObjectCount;
3562 AtmosVersion = rhs.AtmosVersion;
3567 DolbyAtmosSubDescriptor::Dump(FILE* stream)
3569 char identbuf[IdentBufferLen];
3575 InterchangeObject::Dump(stream);
3576 fprintf(stream, " %22s = %s\n", "AtmosID", AtmosID.EncodeString(identbuf, IdentBufferLen));
3577 fprintf(stream, " %22s = %d\n", "FirstFrame", FirstFrame);
3578 fprintf(stream, " %22s = %d\n", "MaxChannelCount", MaxChannelCount);
3579 fprintf(stream, " %22s = %d\n", "MaxObjectCount", MaxObjectCount);
3580 fprintf(stream, " %22s = %d\n", "AtmosVersion", AtmosVersion);
3585 DolbyAtmosSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
3587 return InterchangeObject::InitFromBuffer(p, l);
3592 DolbyAtmosSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
3594 return InterchangeObject::WriteToBuffer(Buffer);