2 Copyright (c) 2005-2007, 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() { return new Preface; }
44 static InterchangeObject* IndexTableSegment_Factory() { return new IndexTableSegment; }
46 static InterchangeObject* Identification_Factory() { return new Identification; }
47 static InterchangeObject* ContentStorage_Factory() { return new ContentStorage; }
48 static InterchangeObject* EssenceContainerData_Factory() { return new EssenceContainerData; }
49 static InterchangeObject* MaterialPackage_Factory() { return new MaterialPackage; }
50 static InterchangeObject* SourcePackage_Factory() { return new SourcePackage; }
51 static InterchangeObject* StaticTrack_Factory() { return new StaticTrack; }
52 static InterchangeObject* Track_Factory() { return new Track; }
53 static InterchangeObject* Sequence_Factory() { return new Sequence; }
54 static InterchangeObject* SourceClip_Factory() { return new SourceClip; }
55 static InterchangeObject* TimecodeComponent_Factory() { return new TimecodeComponent; }
56 static InterchangeObject* FileDescriptor_Factory() { return new FileDescriptor; }
57 static InterchangeObject* GenericSoundEssenceDescriptor_Factory() { return new GenericSoundEssenceDescriptor; }
58 static InterchangeObject* WaveAudioDescriptor_Factory() { return new WaveAudioDescriptor; }
59 static InterchangeObject* GenericPictureEssenceDescriptor_Factory() { return new GenericPictureEssenceDescriptor; }
60 static InterchangeObject* RGBAEssenceDescriptor_Factory() { return new RGBAEssenceDescriptor; }
61 static InterchangeObject* JPEG2000PictureSubDescriptor_Factory() { return new JPEG2000PictureSubDescriptor; }
62 static InterchangeObject* CDCIEssenceDescriptor_Factory() { return new CDCIEssenceDescriptor; }
63 static InterchangeObject* MPEG2VideoDescriptor_Factory() { return new MPEG2VideoDescriptor; }
64 static InterchangeObject* DMSegment_Factory() { return new DMSegment; }
65 static InterchangeObject* CryptographicFramework_Factory() { return new CryptographicFramework; }
66 static InterchangeObject* CryptographicContext_Factory() { return new CryptographicContext; }
67 static InterchangeObject* GenericDataEssenceDescriptor_Factory() { return new GenericDataEssenceDescriptor; }
68 static InterchangeObject* TimedTextDescriptor_Factory() { return new TimedTextDescriptor; }
69 static InterchangeObject* TimedTextResourceSubDescriptor_Factory() { return new TimedTextResourceSubDescriptor; }
70 static InterchangeObject* StereoscopicPictureSubDescriptor_Factory() { return new StereoscopicPictureSubDescriptor; }
74 ASDCP::MXF::Metadata_InitTypes()
76 SetObjectFactory(Dict::ul(MDD_Preface), Preface_Factory);
77 SetObjectFactory(Dict::ul(MDD_IndexTableSegment), IndexTableSegment_Factory);
79 SetObjectFactory(Dict::ul(MDD_Identification), Identification_Factory);
80 SetObjectFactory(Dict::ul(MDD_ContentStorage), ContentStorage_Factory);
81 SetObjectFactory(Dict::ul(MDD_EssenceContainerData), EssenceContainerData_Factory);
82 SetObjectFactory(Dict::ul(MDD_MaterialPackage), MaterialPackage_Factory);
83 SetObjectFactory(Dict::ul(MDD_SourcePackage), SourcePackage_Factory);
84 SetObjectFactory(Dict::ul(MDD_StaticTrack), StaticTrack_Factory);
85 SetObjectFactory(Dict::ul(MDD_Track), Track_Factory);
86 SetObjectFactory(Dict::ul(MDD_Sequence), Sequence_Factory);
87 SetObjectFactory(Dict::ul(MDD_SourceClip), SourceClip_Factory);
88 SetObjectFactory(Dict::ul(MDD_TimecodeComponent), TimecodeComponent_Factory);
89 SetObjectFactory(Dict::ul(MDD_FileDescriptor), FileDescriptor_Factory);
90 SetObjectFactory(Dict::ul(MDD_GenericSoundEssenceDescriptor), GenericSoundEssenceDescriptor_Factory);
91 SetObjectFactory(Dict::ul(MDD_WaveAudioDescriptor), WaveAudioDescriptor_Factory);
92 SetObjectFactory(Dict::ul(MDD_GenericPictureEssenceDescriptor), GenericPictureEssenceDescriptor_Factory);
93 SetObjectFactory(Dict::ul(MDD_RGBAEssenceDescriptor), RGBAEssenceDescriptor_Factory);
94 SetObjectFactory(Dict::ul(MDD_JPEG2000PictureSubDescriptor), JPEG2000PictureSubDescriptor_Factory);
95 SetObjectFactory(Dict::ul(MDD_CDCIEssenceDescriptor), CDCIEssenceDescriptor_Factory);
96 SetObjectFactory(Dict::ul(MDD_MPEG2VideoDescriptor), MPEG2VideoDescriptor_Factory);
97 SetObjectFactory(Dict::ul(MDD_DMSegment), DMSegment_Factory);
98 SetObjectFactory(Dict::ul(MDD_CryptographicFramework), CryptographicFramework_Factory);
99 SetObjectFactory(Dict::ul(MDD_CryptographicContext), CryptographicContext_Factory);
100 SetObjectFactory(Dict::ul(MDD_GenericDataEssenceDescriptor), GenericDataEssenceDescriptor_Factory);
101 SetObjectFactory(Dict::ul(MDD_TimedTextDescriptor), TimedTextDescriptor_Factory);
102 SetObjectFactory(Dict::ul(MDD_TimedTextResourceSubDescriptor), TimedTextResourceSubDescriptor_Factory);
103 SetObjectFactory(Dict::ul(MDD_StereoscopicPictureSubDescriptor), StereoscopicPictureSubDescriptor_Factory);
106 //------------------------------------------------------------------------------------------
111 //------------------------------------------------------------------------------------------
116 Identification::InitFromTLVSet(TLVReader& TLVSet)
118 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
119 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ThisGenerationUID));
120 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, CompanyName));
121 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ProductName));
122 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ProductVersion));
123 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, VersionString));
124 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ProductUID));
125 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ModificationDate));
126 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ToolkitVersion));
127 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, Platform));
133 Identification::WriteToTLVSet(TLVWriter& TLVSet)
135 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
136 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ThisGenerationUID));
137 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, CompanyName));
138 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ProductName));
139 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ProductVersion));
140 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, VersionString));
141 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ProductUID));
142 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ModificationDate));
143 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ToolkitVersion));
144 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, Platform));
150 Identification::Dump(FILE* stream)
152 char identbuf[IdentBufferLen];
158 InterchangeObject::Dump(stream);
159 fprintf(stream, " %22s = %s\n", "ThisGenerationUID", ThisGenerationUID.EncodeString(identbuf, IdentBufferLen));
160 fprintf(stream, " %22s = %s\n", "CompanyName", CompanyName.EncodeString(identbuf, IdentBufferLen));
161 fprintf(stream, " %22s = %s\n", "ProductName", ProductName.EncodeString(identbuf, IdentBufferLen));
162 fprintf(stream, " %22s = %s\n", "ProductVersion", ProductVersion.EncodeString(identbuf, IdentBufferLen));
163 fprintf(stream, " %22s = %s\n", "VersionString", VersionString.EncodeString(identbuf, IdentBufferLen));
164 fprintf(stream, " %22s = %s\n", "ProductUID", ProductUID.EncodeString(identbuf, IdentBufferLen));
165 fprintf(stream, " %22s = %s\n", "ModificationDate", ModificationDate.EncodeString(identbuf, IdentBufferLen));
166 fprintf(stream, " %22s = %s\n", "ToolkitVersion", ToolkitVersion.EncodeString(identbuf, IdentBufferLen));
167 fprintf(stream, " %22s = %s\n", "Platform", Platform.EncodeString(identbuf, IdentBufferLen));
172 Identification::InitFromBuffer(const byte_t* p, ui32_t l)
174 m_Typeinfo = &Dict::Type(MDD_Identification);
175 return InterchangeObject::InitFromBuffer(p, l);
180 Identification::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
182 m_Typeinfo = &Dict::Type(MDD_Identification);
183 return InterchangeObject::WriteToBuffer(Buffer);
186 //------------------------------------------------------------------------------------------
191 ContentStorage::InitFromTLVSet(TLVReader& TLVSet)
193 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
194 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(ContentStorage, Packages));
195 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(ContentStorage, EssenceContainerData));
201 ContentStorage::WriteToTLVSet(TLVWriter& TLVSet)
203 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
204 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(ContentStorage, Packages));
205 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(ContentStorage, EssenceContainerData));
211 ContentStorage::Dump(FILE* stream)
213 char identbuf[IdentBufferLen];
219 InterchangeObject::Dump(stream);
220 fprintf(stream, " %22s:\n", "Packages");
221 Packages.Dump(stream);
222 fprintf(stream, " %22s:\n", "EssenceContainerData");
223 EssenceContainerData.Dump(stream);
228 ContentStorage::InitFromBuffer(const byte_t* p, ui32_t l)
230 m_Typeinfo = &Dict::Type(MDD_ContentStorage);
231 return InterchangeObject::InitFromBuffer(p, l);
236 ContentStorage::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
238 m_Typeinfo = &Dict::Type(MDD_ContentStorage);
239 return InterchangeObject::WriteToBuffer(Buffer);
242 //------------------------------------------------------------------------------------------
243 // EssenceContainerData
247 EssenceContainerData::InitFromTLVSet(TLVReader& TLVSet)
249 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
250 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(EssenceContainerData, LinkedPackageUID));
251 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(EssenceContainerData, IndexSID));
252 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(EssenceContainerData, BodySID));
258 EssenceContainerData::WriteToTLVSet(TLVWriter& TLVSet)
260 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
261 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(EssenceContainerData, LinkedPackageUID));
262 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(EssenceContainerData, IndexSID));
263 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(EssenceContainerData, BodySID));
269 EssenceContainerData::Dump(FILE* stream)
271 char identbuf[IdentBufferLen];
277 InterchangeObject::Dump(stream);
278 fprintf(stream, " %22s = %s\n", "LinkedPackageUID", LinkedPackageUID.EncodeString(identbuf, IdentBufferLen));
279 fprintf(stream, " %22s = %d\n", "IndexSID", IndexSID);
280 fprintf(stream, " %22s = %d\n", "BodySID", BodySID);
285 EssenceContainerData::InitFromBuffer(const byte_t* p, ui32_t l)
287 m_Typeinfo = &Dict::Type(MDD_EssenceContainerData);
288 return InterchangeObject::InitFromBuffer(p, l);
293 EssenceContainerData::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
295 m_Typeinfo = &Dict::Type(MDD_EssenceContainerData);
296 return InterchangeObject::WriteToBuffer(Buffer);
299 //------------------------------------------------------------------------------------------
304 GenericPackage::InitFromTLVSet(TLVReader& TLVSet)
306 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
307 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageUID));
308 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, Name));
309 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageCreationDate));
310 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageModifiedDate));
311 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, Tracks));
317 GenericPackage::WriteToTLVSet(TLVWriter& TLVSet)
319 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
320 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, PackageUID));
321 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, Name));
322 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, PackageCreationDate));
323 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, PackageModifiedDate));
324 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, Tracks));
330 GenericPackage::Dump(FILE* stream)
332 char identbuf[IdentBufferLen];
338 InterchangeObject::Dump(stream);
339 fprintf(stream, " %22s = %s\n", "PackageUID", PackageUID.EncodeString(identbuf, IdentBufferLen));
340 fprintf(stream, " %22s = %s\n", "Name", Name.EncodeString(identbuf, IdentBufferLen));
341 fprintf(stream, " %22s = %s\n", "PackageCreationDate", PackageCreationDate.EncodeString(identbuf, IdentBufferLen));
342 fprintf(stream, " %22s = %s\n", "PackageModifiedDate", PackageModifiedDate.EncodeString(identbuf, IdentBufferLen));
343 fprintf(stream, " %22s:\n", "Tracks");
348 //------------------------------------------------------------------------------------------
353 MaterialPackage::InitFromTLVSet(TLVReader& TLVSet)
355 Result_t result = GenericPackage::InitFromTLVSet(TLVSet);
361 MaterialPackage::WriteToTLVSet(TLVWriter& TLVSet)
363 Result_t result = GenericPackage::WriteToTLVSet(TLVSet);
369 MaterialPackage::Dump(FILE* stream)
371 char identbuf[IdentBufferLen];
377 GenericPackage::Dump(stream);
382 MaterialPackage::InitFromBuffer(const byte_t* p, ui32_t l)
384 m_Typeinfo = &Dict::Type(MDD_MaterialPackage);
385 return InterchangeObject::InitFromBuffer(p, l);
390 MaterialPackage::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
392 m_Typeinfo = &Dict::Type(MDD_MaterialPackage);
393 return InterchangeObject::WriteToBuffer(Buffer);
396 //------------------------------------------------------------------------------------------
401 SourcePackage::InitFromTLVSet(TLVReader& TLVSet)
403 Result_t result = GenericPackage::InitFromTLVSet(TLVSet);
404 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(SourcePackage, Descriptor));
410 SourcePackage::WriteToTLVSet(TLVWriter& TLVSet)
412 Result_t result = GenericPackage::WriteToTLVSet(TLVSet);
413 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(SourcePackage, Descriptor));
419 SourcePackage::Dump(FILE* stream)
421 char identbuf[IdentBufferLen];
427 GenericPackage::Dump(stream);
428 fprintf(stream, " %22s = %s\n", "Descriptor", Descriptor.EncodeString(identbuf, IdentBufferLen));
433 SourcePackage::InitFromBuffer(const byte_t* p, ui32_t l)
435 m_Typeinfo = &Dict::Type(MDD_SourcePackage);
436 return InterchangeObject::InitFromBuffer(p, l);
441 SourcePackage::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
443 m_Typeinfo = &Dict::Type(MDD_SourcePackage);
444 return InterchangeObject::WriteToBuffer(Buffer);
447 //------------------------------------------------------------------------------------------
452 GenericTrack::InitFromTLVSet(TLVReader& TLVSet)
454 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
455 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericTrack, TrackID));
456 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericTrack, TrackNumber));
457 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericTrack, TrackName));
458 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericTrack, Sequence));
464 GenericTrack::WriteToTLVSet(TLVWriter& TLVSet)
466 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
467 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericTrack, TrackID));
468 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericTrack, TrackNumber));
469 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericTrack, TrackName));
470 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericTrack, Sequence));
476 GenericTrack::Dump(FILE* stream)
478 char identbuf[IdentBufferLen];
484 InterchangeObject::Dump(stream);
485 fprintf(stream, " %22s = %d\n", "TrackID", TrackID);
486 fprintf(stream, " %22s = %d\n", "TrackNumber", TrackNumber);
487 fprintf(stream, " %22s = %s\n", "TrackName", TrackName.EncodeString(identbuf, IdentBufferLen));
488 fprintf(stream, " %22s = %s\n", "Sequence", Sequence.EncodeString(identbuf, IdentBufferLen));
492 //------------------------------------------------------------------------------------------
497 StaticTrack::InitFromTLVSet(TLVReader& TLVSet)
499 Result_t result = GenericTrack::InitFromTLVSet(TLVSet);
505 StaticTrack::WriteToTLVSet(TLVWriter& TLVSet)
507 Result_t result = GenericTrack::WriteToTLVSet(TLVSet);
513 StaticTrack::Dump(FILE* stream)
515 char identbuf[IdentBufferLen];
521 GenericTrack::Dump(stream);
526 StaticTrack::InitFromBuffer(const byte_t* p, ui32_t l)
528 m_Typeinfo = &Dict::Type(MDD_StaticTrack);
529 return InterchangeObject::InitFromBuffer(p, l);
534 StaticTrack::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
536 m_Typeinfo = &Dict::Type(MDD_StaticTrack);
537 return InterchangeObject::WriteToBuffer(Buffer);
540 //------------------------------------------------------------------------------------------
545 Track::InitFromTLVSet(TLVReader& TLVSet)
547 Result_t result = GenericTrack::InitFromTLVSet(TLVSet);
548 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Track, EditRate));
549 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(Track, Origin));
555 Track::WriteToTLVSet(TLVWriter& TLVSet)
557 Result_t result = GenericTrack::WriteToTLVSet(TLVSet);
558 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Track, EditRate));
559 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(Track, Origin));
565 Track::Dump(FILE* stream)
567 char identbuf[IdentBufferLen];
573 GenericTrack::Dump(stream);
574 fprintf(stream, " %22s = %s\n", "EditRate", EditRate.EncodeString(identbuf, IdentBufferLen));
575 fprintf(stream, " %22s = %s\n", "Origin", i64sz(Origin, identbuf));
580 Track::InitFromBuffer(const byte_t* p, ui32_t l)
582 m_Typeinfo = &Dict::Type(MDD_Track);
583 return InterchangeObject::InitFromBuffer(p, l);
588 Track::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
590 m_Typeinfo = &Dict::Type(MDD_Track);
591 return InterchangeObject::WriteToBuffer(Buffer);
594 //------------------------------------------------------------------------------------------
595 // StructuralComponent
599 StructuralComponent::InitFromTLVSet(TLVReader& TLVSet)
601 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
602 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(StructuralComponent, DataDefinition));
603 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(StructuralComponent, Duration));
609 StructuralComponent::WriteToTLVSet(TLVWriter& TLVSet)
611 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
612 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(StructuralComponent, DataDefinition));
613 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(StructuralComponent, Duration));
619 StructuralComponent::Dump(FILE* stream)
621 char identbuf[IdentBufferLen];
627 InterchangeObject::Dump(stream);
628 fprintf(stream, " %22s = %s\n", "DataDefinition", DataDefinition.EncodeString(identbuf, IdentBufferLen));
629 fprintf(stream, " %22s = %s\n", "Duration", i64sz(Duration, identbuf));
633 //------------------------------------------------------------------------------------------
638 Sequence::InitFromTLVSet(TLVReader& TLVSet)
640 Result_t result = StructuralComponent::InitFromTLVSet(TLVSet);
641 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Sequence, StructuralComponents));
647 Sequence::WriteToTLVSet(TLVWriter& TLVSet)
649 Result_t result = StructuralComponent::WriteToTLVSet(TLVSet);
650 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Sequence, StructuralComponents));
656 Sequence::Dump(FILE* stream)
658 char identbuf[IdentBufferLen];
664 StructuralComponent::Dump(stream);
665 fprintf(stream, " %22s:\n", "StructuralComponents");
666 StructuralComponents.Dump(stream);
671 Sequence::InitFromBuffer(const byte_t* p, ui32_t l)
673 m_Typeinfo = &Dict::Type(MDD_Sequence);
674 return InterchangeObject::InitFromBuffer(p, l);
679 Sequence::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
681 m_Typeinfo = &Dict::Type(MDD_Sequence);
682 return InterchangeObject::WriteToBuffer(Buffer);
685 //------------------------------------------------------------------------------------------
690 SourceClip::InitFromTLVSet(TLVReader& TLVSet)
692 Result_t result = StructuralComponent::InitFromTLVSet(TLVSet);
693 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(SourceClip, StartPosition));
694 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(SourceClip, SourcePackageID));
695 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(SourceClip, SourceTrackID));
701 SourceClip::WriteToTLVSet(TLVWriter& TLVSet)
703 Result_t result = StructuralComponent::WriteToTLVSet(TLVSet);
704 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(SourceClip, StartPosition));
705 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(SourceClip, SourcePackageID));
706 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(SourceClip, SourceTrackID));
712 SourceClip::Dump(FILE* stream)
714 char identbuf[IdentBufferLen];
720 StructuralComponent::Dump(stream);
721 fprintf(stream, " %22s = %s\n", "StartPosition", i64sz(StartPosition, identbuf));
722 fprintf(stream, " %22s = %s\n", "SourcePackageID", SourcePackageID.EncodeString(identbuf, IdentBufferLen));
723 fprintf(stream, " %22s = %d\n", "SourceTrackID", SourceTrackID);
728 SourceClip::InitFromBuffer(const byte_t* p, ui32_t l)
730 m_Typeinfo = &Dict::Type(MDD_SourceClip);
731 return InterchangeObject::InitFromBuffer(p, l);
736 SourceClip::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
738 m_Typeinfo = &Dict::Type(MDD_SourceClip);
739 return InterchangeObject::WriteToBuffer(Buffer);
742 //------------------------------------------------------------------------------------------
747 TimecodeComponent::InitFromTLVSet(TLVReader& TLVSet)
749 Result_t result = StructuralComponent::InitFromTLVSet(TLVSet);
750 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(TimecodeComponent, RoundedTimecodeBase));
751 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(TimecodeComponent, StartTimecode));
752 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(TimecodeComponent, DropFrame));
758 TimecodeComponent::WriteToTLVSet(TLVWriter& TLVSet)
760 Result_t result = StructuralComponent::WriteToTLVSet(TLVSet);
761 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(TimecodeComponent, RoundedTimecodeBase));
762 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(TimecodeComponent, StartTimecode));
763 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(TimecodeComponent, DropFrame));
769 TimecodeComponent::Dump(FILE* stream)
771 char identbuf[IdentBufferLen];
777 StructuralComponent::Dump(stream);
778 fprintf(stream, " %22s = %d\n", "RoundedTimecodeBase", RoundedTimecodeBase);
779 fprintf(stream, " %22s = %s\n", "StartTimecode", i64sz(StartTimecode, identbuf));
780 fprintf(stream, " %22s = %d\n", "DropFrame", DropFrame);
785 TimecodeComponent::InitFromBuffer(const byte_t* p, ui32_t l)
787 m_Typeinfo = &Dict::Type(MDD_TimecodeComponent);
788 return InterchangeObject::InitFromBuffer(p, l);
793 TimecodeComponent::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
795 m_Typeinfo = &Dict::Type(MDD_TimecodeComponent);
796 return InterchangeObject::WriteToBuffer(Buffer);
799 //------------------------------------------------------------------------------------------
804 GenericDescriptor::InitFromTLVSet(TLVReader& TLVSet)
806 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
807 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericDescriptor, Locators));
808 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericDescriptor, SubDescriptors));
814 GenericDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
816 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
817 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericDescriptor, Locators));
818 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericDescriptor, SubDescriptors));
824 GenericDescriptor::Dump(FILE* stream)
826 char identbuf[IdentBufferLen];
832 InterchangeObject::Dump(stream);
833 fprintf(stream, " %22s:\n", "Locators");
834 Locators.Dump(stream);
835 fprintf(stream, " %22s:\n", "SubDescriptors");
836 SubDescriptors.Dump(stream);
840 //------------------------------------------------------------------------------------------
845 FileDescriptor::InitFromTLVSet(TLVReader& TLVSet)
847 Result_t result = GenericDescriptor::InitFromTLVSet(TLVSet);
848 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(FileDescriptor, LinkedTrackID));
849 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(FileDescriptor, SampleRate));
850 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(FileDescriptor, ContainerDuration));
851 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(FileDescriptor, EssenceContainer));
852 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(FileDescriptor, Codec));
858 FileDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
860 Result_t result = GenericDescriptor::WriteToTLVSet(TLVSet);
861 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(FileDescriptor, LinkedTrackID));
862 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(FileDescriptor, SampleRate));
863 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(FileDescriptor, ContainerDuration));
864 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(FileDescriptor, EssenceContainer));
865 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(FileDescriptor, Codec));
871 FileDescriptor::Dump(FILE* stream)
873 char identbuf[IdentBufferLen];
879 GenericDescriptor::Dump(stream);
880 fprintf(stream, " %22s = %d\n", "LinkedTrackID", LinkedTrackID);
881 fprintf(stream, " %22s = %s\n", "SampleRate", SampleRate.EncodeString(identbuf, IdentBufferLen));
882 fprintf(stream, " %22s = %s\n", "ContainerDuration", i64sz(ContainerDuration, identbuf));
883 fprintf(stream, " %22s = %s\n", "EssenceContainer", EssenceContainer.EncodeString(identbuf, IdentBufferLen));
884 fprintf(stream, " %22s = %s\n", "Codec", Codec.EncodeString(identbuf, IdentBufferLen));
889 FileDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
891 m_Typeinfo = &Dict::Type(MDD_FileDescriptor);
892 return InterchangeObject::InitFromBuffer(p, l);
897 FileDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
899 m_Typeinfo = &Dict::Type(MDD_FileDescriptor);
900 return InterchangeObject::WriteToBuffer(Buffer);
903 //------------------------------------------------------------------------------------------
904 // GenericSoundEssenceDescriptor
908 GenericSoundEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
910 Result_t result = FileDescriptor::InitFromTLVSet(TLVSet);
911 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, AudioSamplingRate));
912 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, Locked));
913 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, AudioRefLevel));
914 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, ChannelCount));
915 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, QuantizationBits));
916 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, DialNorm));
922 GenericSoundEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
924 Result_t result = FileDescriptor::WriteToTLVSet(TLVSet);
925 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, AudioSamplingRate));
926 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, Locked));
927 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, AudioRefLevel));
928 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, ChannelCount));
929 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, QuantizationBits));
930 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, DialNorm));
936 GenericSoundEssenceDescriptor::Dump(FILE* stream)
938 char identbuf[IdentBufferLen];
944 FileDescriptor::Dump(stream);
945 fprintf(stream, " %22s = %s\n", "AudioSamplingRate", AudioSamplingRate.EncodeString(identbuf, IdentBufferLen));
946 fprintf(stream, " %22s = %d\n", "Locked", Locked);
947 fprintf(stream, " %22s = %d\n", "AudioRefLevel", AudioRefLevel);
948 fprintf(stream, " %22s = %d\n", "ChannelCount", ChannelCount);
949 fprintf(stream, " %22s = %d\n", "QuantizationBits", QuantizationBits);
950 fprintf(stream, " %22s = %d\n", "DialNorm", DialNorm);
955 GenericSoundEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
957 m_Typeinfo = &Dict::Type(MDD_GenericSoundEssenceDescriptor);
958 return InterchangeObject::InitFromBuffer(p, l);
963 GenericSoundEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
965 m_Typeinfo = &Dict::Type(MDD_GenericSoundEssenceDescriptor);
966 return InterchangeObject::WriteToBuffer(Buffer);
969 //------------------------------------------------------------------------------------------
970 // WaveAudioDescriptor
974 WaveAudioDescriptor::InitFromTLVSet(TLVReader& TLVSet)
976 Result_t result = GenericSoundEssenceDescriptor::InitFromTLVSet(TLVSet);
977 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(WaveAudioDescriptor, BlockAlign));
978 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(WaveAudioDescriptor, SequenceOffset));
979 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(WaveAudioDescriptor, AvgBps));
985 WaveAudioDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
987 Result_t result = GenericSoundEssenceDescriptor::WriteToTLVSet(TLVSet);
988 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(WaveAudioDescriptor, BlockAlign));
989 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(WaveAudioDescriptor, SequenceOffset));
990 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(WaveAudioDescriptor, AvgBps));
996 WaveAudioDescriptor::Dump(FILE* stream)
998 char identbuf[IdentBufferLen];
1004 GenericSoundEssenceDescriptor::Dump(stream);
1005 fprintf(stream, " %22s = %d\n", "BlockAlign", BlockAlign);
1006 fprintf(stream, " %22s = %d\n", "SequenceOffset", SequenceOffset);
1007 fprintf(stream, " %22s = %d\n", "AvgBps", AvgBps);
1012 WaveAudioDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1014 m_Typeinfo = &Dict::Type(MDD_WaveAudioDescriptor);
1015 return InterchangeObject::InitFromBuffer(p, l);
1020 WaveAudioDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1022 m_Typeinfo = &Dict::Type(MDD_WaveAudioDescriptor);
1023 return InterchangeObject::WriteToBuffer(Buffer);
1026 //------------------------------------------------------------------------------------------
1027 // GenericPictureEssenceDescriptor
1031 GenericPictureEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1033 Result_t result = FileDescriptor::InitFromTLVSet(TLVSet);
1034 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, FrameLayout));
1035 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, StoredWidth));
1036 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, StoredHeight));
1037 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, AspectRatio));
1038 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, PictureEssenceCoding));
1044 GenericPictureEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1046 Result_t result = FileDescriptor::WriteToTLVSet(TLVSet);
1047 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, FrameLayout));
1048 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, StoredWidth));
1049 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, StoredHeight));
1050 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, AspectRatio));
1051 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, PictureEssenceCoding));
1057 GenericPictureEssenceDescriptor::Dump(FILE* stream)
1059 char identbuf[IdentBufferLen];
1065 FileDescriptor::Dump(stream);
1066 fprintf(stream, " %22s = %d\n", "FrameLayout", FrameLayout);
1067 fprintf(stream, " %22s = %d\n", "StoredWidth", StoredWidth);
1068 fprintf(stream, " %22s = %d\n", "StoredHeight", StoredHeight);
1069 fprintf(stream, " %22s = %s\n", "AspectRatio", AspectRatio.EncodeString(identbuf, IdentBufferLen));
1070 fprintf(stream, " %22s = %s\n", "PictureEssenceCoding", PictureEssenceCoding.EncodeString(identbuf, IdentBufferLen));
1075 GenericPictureEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1077 m_Typeinfo = &Dict::Type(MDD_GenericPictureEssenceDescriptor);
1078 return InterchangeObject::InitFromBuffer(p, l);
1083 GenericPictureEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1085 m_Typeinfo = &Dict::Type(MDD_GenericPictureEssenceDescriptor);
1086 return InterchangeObject::WriteToBuffer(Buffer);
1089 //------------------------------------------------------------------------------------------
1090 // RGBAEssenceDescriptor
1094 RGBAEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1096 Result_t result = GenericPictureEssenceDescriptor::InitFromTLVSet(TLVSet);
1097 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(RGBAEssenceDescriptor, ComponentMaxRef));
1098 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(RGBAEssenceDescriptor, ComponentMinRef));
1104 RGBAEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1106 Result_t result = GenericPictureEssenceDescriptor::WriteToTLVSet(TLVSet);
1107 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(RGBAEssenceDescriptor, ComponentMaxRef));
1108 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(RGBAEssenceDescriptor, ComponentMinRef));
1114 RGBAEssenceDescriptor::Dump(FILE* stream)
1116 char identbuf[IdentBufferLen];
1122 GenericPictureEssenceDescriptor::Dump(stream);
1123 fprintf(stream, " %22s = %d\n", "ComponentMaxRef", ComponentMaxRef);
1124 fprintf(stream, " %22s = %d\n", "ComponentMinRef", ComponentMinRef);
1129 RGBAEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1131 m_Typeinfo = &Dict::Type(MDD_RGBAEssenceDescriptor);
1132 return InterchangeObject::InitFromBuffer(p, l);
1137 RGBAEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1139 m_Typeinfo = &Dict::Type(MDD_RGBAEssenceDescriptor);
1140 return InterchangeObject::WriteToBuffer(Buffer);
1143 //------------------------------------------------------------------------------------------
1144 // JPEG2000PictureSubDescriptor
1148 JPEG2000PictureSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1150 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
1151 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Rsize));
1152 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Xsize));
1153 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Ysize));
1154 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XOsize));
1155 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YOsize));
1156 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XTsize));
1157 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YTsize));
1158 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XTOsize));
1159 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YTOsize));
1160 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Csize));
1161 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, PictureComponentSizing));
1162 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, CodingStyleDefault));
1163 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, QuantizationDefault));
1169 JPEG2000PictureSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1171 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
1172 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Rsize));
1173 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Xsize));
1174 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Ysize));
1175 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XOsize));
1176 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YOsize));
1177 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XTsize));
1178 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YTsize));
1179 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XTOsize));
1180 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YTOsize));
1181 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Csize));
1182 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, PictureComponentSizing));
1183 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, CodingStyleDefault));
1184 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, QuantizationDefault));
1190 JPEG2000PictureSubDescriptor::Dump(FILE* stream)
1192 char identbuf[IdentBufferLen];
1198 InterchangeObject::Dump(stream);
1199 fprintf(stream, " %22s = %d\n", "Rsize", Rsize);
1200 fprintf(stream, " %22s = %d\n", "Xsize", Xsize);
1201 fprintf(stream, " %22s = %d\n", "Ysize", Ysize);
1202 fprintf(stream, " %22s = %d\n", "XOsize", XOsize);
1203 fprintf(stream, " %22s = %d\n", "YOsize", YOsize);
1204 fprintf(stream, " %22s = %d\n", "XTsize", XTsize);
1205 fprintf(stream, " %22s = %d\n", "YTsize", YTsize);
1206 fprintf(stream, " %22s = %d\n", "XTOsize", XTOsize);
1207 fprintf(stream, " %22s = %d\n", "YTOsize", YTOsize);
1208 fprintf(stream, " %22s = %d\n", "Csize", Csize);
1209 fprintf(stream, " %22s = %s\n", "PictureComponentSizing", PictureComponentSizing.EncodeString(identbuf, IdentBufferLen));
1210 fprintf(stream, " %22s = %s\n", "CodingStyleDefault", CodingStyleDefault.EncodeString(identbuf, IdentBufferLen));
1211 fprintf(stream, " %22s = %s\n", "QuantizationDefault", QuantizationDefault.EncodeString(identbuf, IdentBufferLen));
1216 JPEG2000PictureSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1218 m_Typeinfo = &Dict::Type(MDD_JPEG2000PictureSubDescriptor);
1219 return InterchangeObject::InitFromBuffer(p, l);
1224 JPEG2000PictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1226 m_Typeinfo = &Dict::Type(MDD_JPEG2000PictureSubDescriptor);
1227 return InterchangeObject::WriteToBuffer(Buffer);
1230 //------------------------------------------------------------------------------------------
1231 // CDCIEssenceDescriptor
1235 CDCIEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1237 Result_t result = GenericPictureEssenceDescriptor::InitFromTLVSet(TLVSet);
1238 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, ComponentDepth));
1239 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, HorizontalSubsampling));
1240 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, VerticalSubsampling));
1241 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(CDCIEssenceDescriptor, ColorSiting));
1247 CDCIEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1249 Result_t result = GenericPictureEssenceDescriptor::WriteToTLVSet(TLVSet);
1250 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, ComponentDepth));
1251 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, HorizontalSubsampling));
1252 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, VerticalSubsampling));
1253 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, ColorSiting));
1259 CDCIEssenceDescriptor::Dump(FILE* stream)
1261 char identbuf[IdentBufferLen];
1267 GenericPictureEssenceDescriptor::Dump(stream);
1268 fprintf(stream, " %22s = %d\n", "ComponentDepth", ComponentDepth);
1269 fprintf(stream, " %22s = %d\n", "HorizontalSubsampling", HorizontalSubsampling);
1270 fprintf(stream, " %22s = %d\n", "VerticalSubsampling", VerticalSubsampling);
1271 fprintf(stream, " %22s = %d\n", "ColorSiting", ColorSiting);
1276 CDCIEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1278 m_Typeinfo = &Dict::Type(MDD_CDCIEssenceDescriptor);
1279 return InterchangeObject::InitFromBuffer(p, l);
1284 CDCIEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1286 m_Typeinfo = &Dict::Type(MDD_CDCIEssenceDescriptor);
1287 return InterchangeObject::WriteToBuffer(Buffer);
1290 //------------------------------------------------------------------------------------------
1291 // MPEG2VideoDescriptor
1295 MPEG2VideoDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1297 Result_t result = CDCIEssenceDescriptor::InitFromTLVSet(TLVSet);
1298 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(MPEG2VideoDescriptor, CodedContentType));
1299 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(MPEG2VideoDescriptor, LowDelay));
1300 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(MPEG2VideoDescriptor, BitRate));
1301 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(MPEG2VideoDescriptor, ProfileAndLevel));
1307 MPEG2VideoDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1309 Result_t result = CDCIEssenceDescriptor::WriteToTLVSet(TLVSet);
1310 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(MPEG2VideoDescriptor, CodedContentType));
1311 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(MPEG2VideoDescriptor, LowDelay));
1312 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(MPEG2VideoDescriptor, BitRate));
1313 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(MPEG2VideoDescriptor, ProfileAndLevel));
1319 MPEG2VideoDescriptor::Dump(FILE* stream)
1321 char identbuf[IdentBufferLen];
1327 CDCIEssenceDescriptor::Dump(stream);
1328 fprintf(stream, " %22s = %d\n", "CodedContentType", CodedContentType);
1329 fprintf(stream, " %22s = %d\n", "LowDelay", LowDelay);
1330 fprintf(stream, " %22s = %d\n", "BitRate", BitRate);
1331 fprintf(stream, " %22s = %d\n", "ProfileAndLevel", ProfileAndLevel);
1336 MPEG2VideoDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1338 m_Typeinfo = &Dict::Type(MDD_MPEG2VideoDescriptor);
1339 return InterchangeObject::InitFromBuffer(p, l);
1344 MPEG2VideoDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1346 m_Typeinfo = &Dict::Type(MDD_MPEG2VideoDescriptor);
1347 return InterchangeObject::WriteToBuffer(Buffer);
1350 //------------------------------------------------------------------------------------------
1355 DMSegment::InitFromTLVSet(TLVReader& TLVSet)
1357 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
1358 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DMSegment, DataDefinition));
1359 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(DMSegment, EventStartPosition));
1360 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(DMSegment, Duration));
1361 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DMSegment, EventComment));
1362 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DMSegment, DMFramework));
1368 DMSegment::WriteToTLVSet(TLVWriter& TLVSet)
1370 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
1371 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DMSegment, DataDefinition));
1372 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(DMSegment, EventStartPosition));
1373 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(DMSegment, Duration));
1374 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DMSegment, EventComment));
1375 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DMSegment, DMFramework));
1381 DMSegment::Dump(FILE* stream)
1383 char identbuf[IdentBufferLen];
1389 InterchangeObject::Dump(stream);
1390 fprintf(stream, " %22s = %s\n", "DataDefinition", DataDefinition.EncodeString(identbuf, IdentBufferLen));
1391 fprintf(stream, " %22s = %s\n", "EventStartPosition", i64sz(EventStartPosition, identbuf));
1392 fprintf(stream, " %22s = %s\n", "Duration", i64sz(Duration, identbuf));
1393 fprintf(stream, " %22s = %s\n", "EventComment", EventComment.EncodeString(identbuf, IdentBufferLen));
1394 fprintf(stream, " %22s = %s\n", "DMFramework", DMFramework.EncodeString(identbuf, IdentBufferLen));
1399 DMSegment::InitFromBuffer(const byte_t* p, ui32_t l)
1401 m_Typeinfo = &Dict::Type(MDD_DMSegment);
1402 return InterchangeObject::InitFromBuffer(p, l);
1407 DMSegment::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1409 m_Typeinfo = &Dict::Type(MDD_DMSegment);
1410 return InterchangeObject::WriteToBuffer(Buffer);
1413 //------------------------------------------------------------------------------------------
1414 // CryptographicFramework
1418 CryptographicFramework::InitFromTLVSet(TLVReader& TLVSet)
1420 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
1421 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicFramework, ContextSR));
1427 CryptographicFramework::WriteToTLVSet(TLVWriter& TLVSet)
1429 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
1430 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicFramework, ContextSR));
1436 CryptographicFramework::Dump(FILE* stream)
1438 char identbuf[IdentBufferLen];
1444 InterchangeObject::Dump(stream);
1445 fprintf(stream, " %22s = %s\n", "ContextSR", ContextSR.EncodeString(identbuf, IdentBufferLen));
1450 CryptographicFramework::InitFromBuffer(const byte_t* p, ui32_t l)
1452 m_Typeinfo = &Dict::Type(MDD_CryptographicFramework);
1453 return InterchangeObject::InitFromBuffer(p, l);
1458 CryptographicFramework::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1460 m_Typeinfo = &Dict::Type(MDD_CryptographicFramework);
1461 return InterchangeObject::WriteToBuffer(Buffer);
1464 //------------------------------------------------------------------------------------------
1465 // CryptographicContext
1469 CryptographicContext::InitFromTLVSet(TLVReader& TLVSet)
1471 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
1472 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, ContextID));
1473 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, SourceEssenceContainer));
1474 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, CipherAlgorithm));
1475 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, MICAlgorithm));
1476 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, CryptographicKeyID));
1482 CryptographicContext::WriteToTLVSet(TLVWriter& TLVSet)
1484 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
1485 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, ContextID));
1486 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, SourceEssenceContainer));
1487 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, CipherAlgorithm));
1488 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, MICAlgorithm));
1489 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, CryptographicKeyID));
1495 CryptographicContext::Dump(FILE* stream)
1497 char identbuf[IdentBufferLen];
1503 InterchangeObject::Dump(stream);
1504 fprintf(stream, " %22s = %s\n", "ContextID", ContextID.EncodeString(identbuf, IdentBufferLen));
1505 fprintf(stream, " %22s = %s\n", "SourceEssenceContainer", SourceEssenceContainer.EncodeString(identbuf, IdentBufferLen));
1506 fprintf(stream, " %22s = %s\n", "CipherAlgorithm", CipherAlgorithm.EncodeString(identbuf, IdentBufferLen));
1507 fprintf(stream, " %22s = %s\n", "MICAlgorithm", MICAlgorithm.EncodeString(identbuf, IdentBufferLen));
1508 fprintf(stream, " %22s = %s\n", "CryptographicKeyID", CryptographicKeyID.EncodeString(identbuf, IdentBufferLen));
1513 CryptographicContext::InitFromBuffer(const byte_t* p, ui32_t l)
1515 m_Typeinfo = &Dict::Type(MDD_CryptographicContext);
1516 return InterchangeObject::InitFromBuffer(p, l);
1521 CryptographicContext::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1523 m_Typeinfo = &Dict::Type(MDD_CryptographicContext);
1524 return InterchangeObject::WriteToBuffer(Buffer);
1527 //------------------------------------------------------------------------------------------
1528 // GenericDataEssenceDescriptor
1532 GenericDataEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1534 Result_t result = FileDescriptor::InitFromTLVSet(TLVSet);
1535 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericDataEssenceDescriptor, DataEssenceCoding));
1541 GenericDataEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1543 Result_t result = FileDescriptor::WriteToTLVSet(TLVSet);
1544 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericDataEssenceDescriptor, DataEssenceCoding));
1550 GenericDataEssenceDescriptor::Dump(FILE* stream)
1552 char identbuf[IdentBufferLen];
1558 FileDescriptor::Dump(stream);
1559 fprintf(stream, " %22s = %s\n", "DataEssenceCoding", DataEssenceCoding.EncodeString(identbuf, IdentBufferLen));
1564 GenericDataEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1566 m_Typeinfo = &Dict::Type(MDD_GenericDataEssenceDescriptor);
1567 return InterchangeObject::InitFromBuffer(p, l);
1572 GenericDataEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1574 m_Typeinfo = &Dict::Type(MDD_GenericDataEssenceDescriptor);
1575 return InterchangeObject::WriteToBuffer(Buffer);
1578 //------------------------------------------------------------------------------------------
1579 // TimedTextDescriptor
1583 TimedTextDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1585 Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet);
1586 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, ResourceID));
1587 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, UCSEncoding));
1588 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, NamespaceURI));
1594 TimedTextDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1596 Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet);
1597 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, ResourceID));
1598 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, UCSEncoding));
1599 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, NamespaceURI));
1605 TimedTextDescriptor::Dump(FILE* stream)
1607 char identbuf[IdentBufferLen];
1613 GenericDataEssenceDescriptor::Dump(stream);
1614 fprintf(stream, " %22s = %s\n", "ResourceID", ResourceID.EncodeString(identbuf, IdentBufferLen));
1615 fprintf(stream, " %22s = %s\n", "UCSEncoding", UCSEncoding.EncodeString(identbuf, IdentBufferLen));
1616 fprintf(stream, " %22s = %s\n", "NamespaceURI", NamespaceURI.EncodeString(identbuf, IdentBufferLen));
1621 TimedTextDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1623 m_Typeinfo = &Dict::Type(MDD_TimedTextDescriptor);
1624 return InterchangeObject::InitFromBuffer(p, l);
1629 TimedTextDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1631 m_Typeinfo = &Dict::Type(MDD_TimedTextDescriptor);
1632 return InterchangeObject::WriteToBuffer(Buffer);
1635 //------------------------------------------------------------------------------------------
1636 // TimedTextResourceSubDescriptor
1640 TimedTextResourceSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1642 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
1643 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextResourceSubDescriptor, AncillaryResourceID));
1644 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextResourceSubDescriptor, MIMEMediaType));
1645 if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(TimedTextResourceSubDescriptor, EssenceStreamID));
1651 TimedTextResourceSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1653 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
1654 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextResourceSubDescriptor, AncillaryResourceID));
1655 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextResourceSubDescriptor, MIMEMediaType));
1656 if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(TimedTextResourceSubDescriptor, EssenceStreamID));
1662 TimedTextResourceSubDescriptor::Dump(FILE* stream)
1664 char identbuf[IdentBufferLen];
1670 InterchangeObject::Dump(stream);
1671 fprintf(stream, " %22s = %s\n", "AncillaryResourceID", AncillaryResourceID.EncodeString(identbuf, IdentBufferLen));
1672 fprintf(stream, " %22s = %s\n", "MIMEMediaType", MIMEMediaType.EncodeString(identbuf, IdentBufferLen));
1673 fprintf(stream, " %22s = %d\n", "EssenceStreamID", EssenceStreamID);
1678 TimedTextResourceSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1680 m_Typeinfo = &Dict::Type(MDD_TimedTextResourceSubDescriptor);
1681 return InterchangeObject::InitFromBuffer(p, l);
1686 TimedTextResourceSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1688 m_Typeinfo = &Dict::Type(MDD_TimedTextResourceSubDescriptor);
1689 return InterchangeObject::WriteToBuffer(Buffer);
1692 //------------------------------------------------------------------------------------------
1693 // StereoscopicPictureSubDescriptor
1697 StereoscopicPictureSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
1699 Result_t result = InterchangeObject::InitFromTLVSet(TLVSet);
1705 StereoscopicPictureSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
1707 Result_t result = InterchangeObject::WriteToTLVSet(TLVSet);
1713 StereoscopicPictureSubDescriptor::Dump(FILE* stream)
1715 char identbuf[IdentBufferLen];
1721 InterchangeObject::Dump(stream);
1726 StereoscopicPictureSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
1728 m_Typeinfo = &Dict::Type(MDD_StereoscopicPictureSubDescriptor);
1729 return InterchangeObject::InitFromBuffer(p, l);
1734 StereoscopicPictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
1736 m_Typeinfo = &Dict::Type(MDD_StereoscopicPictureSubDescriptor);
1737 return InterchangeObject::WriteToBuffer(Buffer);