2 Copyright (c) 2005-2009, 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.
29 \brief MXF metadata objects
41 void Metadata_InitTypes(const Dictionary& Dict);
46 class Identification : public InterchangeObject
48 ASDCP_NO_COPY_CONSTRUCT(Identification);
52 const Dictionary& m_Dict;
53 UUID ThisGenerationUID;
54 UTF16String CompanyName;
55 UTF16String ProductName;
56 VersionType ProductVersion;
57 UTF16String VersionString;
59 Timestamp ModificationDate;
60 VersionType ToolkitVersion;
63 Identification(const Dictionary& d) : InterchangeObject(d), m_Dict(d) {}
64 virtual ~Identification() {}
65 virtual const char* HasName() { return "Identification"; }
66 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
67 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
68 virtual void Dump(FILE* = 0);
69 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
70 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
74 class ContentStorage : public InterchangeObject
76 ASDCP_NO_COPY_CONSTRUCT(ContentStorage);
80 const Dictionary& m_Dict;
82 Batch<UUID> EssenceContainerData;
84 ContentStorage(const Dictionary& d) : InterchangeObject(d), m_Dict(d) {}
85 virtual ~ContentStorage() {}
86 virtual const char* HasName() { return "ContentStorage"; }
87 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
88 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
89 virtual void Dump(FILE* = 0);
90 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
91 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
95 class EssenceContainerData : public InterchangeObject
97 ASDCP_NO_COPY_CONSTRUCT(EssenceContainerData);
98 EssenceContainerData();
101 const Dictionary& m_Dict;
102 UMID LinkedPackageUID;
106 EssenceContainerData(const Dictionary& d) : InterchangeObject(d), m_Dict(d), IndexSID(0), BodySID(0) {}
107 virtual ~EssenceContainerData() {}
108 virtual const char* HasName() { return "EssenceContainerData"; }
109 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
110 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
111 virtual void Dump(FILE* = 0);
112 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
113 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
117 class GenericPackage : public InterchangeObject
119 ASDCP_NO_COPY_CONSTRUCT(GenericPackage);
123 const Dictionary& m_Dict;
126 Timestamp PackageCreationDate;
127 Timestamp PackageModifiedDate;
130 GenericPackage(const Dictionary& d) : InterchangeObject(d), m_Dict(d) {}
131 virtual ~GenericPackage() {}
132 virtual const char* HasName() { return "GenericPackage"; }
133 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
134 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
135 virtual void Dump(FILE* = 0);
139 class MaterialPackage : public GenericPackage
141 ASDCP_NO_COPY_CONSTRUCT(MaterialPackage);
145 const Dictionary& m_Dict;
147 MaterialPackage(const Dictionary& d) : GenericPackage(d), m_Dict(d) {}
148 virtual ~MaterialPackage() {}
149 virtual const char* HasName() { return "MaterialPackage"; }
150 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
151 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
152 virtual void Dump(FILE* = 0);
153 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
154 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
158 class SourcePackage : public GenericPackage
160 ASDCP_NO_COPY_CONSTRUCT(SourcePackage);
164 const Dictionary& m_Dict;
167 SourcePackage(const Dictionary& d) : GenericPackage(d), m_Dict(d) {}
168 virtual ~SourcePackage() {}
169 virtual const char* HasName() { return "SourcePackage"; }
170 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
171 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
172 virtual void Dump(FILE* = 0);
173 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
174 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
178 class GenericTrack : public InterchangeObject
180 ASDCP_NO_COPY_CONSTRUCT(GenericTrack);
184 const Dictionary& m_Dict;
187 UTF16String TrackName;
190 GenericTrack(const Dictionary& d) : InterchangeObject(d), m_Dict(d), TrackID(0), TrackNumber(0) {}
191 virtual ~GenericTrack() {}
192 virtual const char* HasName() { return "GenericTrack"; }
193 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
194 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
195 virtual void Dump(FILE* = 0);
199 class StaticTrack : public GenericTrack
201 ASDCP_NO_COPY_CONSTRUCT(StaticTrack);
205 const Dictionary& m_Dict;
207 StaticTrack(const Dictionary& d) : GenericTrack(d), m_Dict(d) {}
208 virtual ~StaticTrack() {}
209 virtual const char* HasName() { return "StaticTrack"; }
210 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
211 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
212 virtual void Dump(FILE* = 0);
213 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
214 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
218 class Track : public GenericTrack
220 ASDCP_NO_COPY_CONSTRUCT(Track);
224 const Dictionary& m_Dict;
228 Track(const Dictionary& d) : GenericTrack(d), m_Dict(d), Origin(0) {}
230 virtual const char* HasName() { return "Track"; }
231 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
232 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
233 virtual void Dump(FILE* = 0);
234 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
235 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
239 class StructuralComponent : public InterchangeObject
241 ASDCP_NO_COPY_CONSTRUCT(StructuralComponent);
242 StructuralComponent();
245 const Dictionary& m_Dict;
249 StructuralComponent(const Dictionary& d) : InterchangeObject(d), m_Dict(d), Duration(0) {}
250 virtual ~StructuralComponent() {}
251 virtual const char* HasName() { return "StructuralComponent"; }
252 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
253 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
254 virtual void Dump(FILE* = 0);
258 class Sequence : public StructuralComponent
260 ASDCP_NO_COPY_CONSTRUCT(Sequence);
264 const Dictionary& m_Dict;
265 Batch<UUID> StructuralComponents;
267 Sequence(const Dictionary& d) : StructuralComponent(d), m_Dict(d) {}
268 virtual ~Sequence() {}
269 virtual const char* HasName() { return "Sequence"; }
270 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
271 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
272 virtual void Dump(FILE* = 0);
273 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
274 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
278 class SourceClip : public StructuralComponent
280 ASDCP_NO_COPY_CONSTRUCT(SourceClip);
284 const Dictionary& m_Dict;
285 ui64_t StartPosition;
286 UMID SourcePackageID;
287 ui32_t SourceTrackID;
289 SourceClip(const Dictionary& d) : StructuralComponent(d), m_Dict(d), StartPosition(0), SourceTrackID(0) {}
290 virtual ~SourceClip() {}
291 virtual const char* HasName() { return "SourceClip"; }
292 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
293 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
294 virtual void Dump(FILE* = 0);
295 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
296 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
300 class TimecodeComponent : public StructuralComponent
302 ASDCP_NO_COPY_CONSTRUCT(TimecodeComponent);
306 const Dictionary& m_Dict;
307 ui16_t RoundedTimecodeBase;
308 ui64_t StartTimecode;
311 TimecodeComponent(const Dictionary& d) : StructuralComponent(d), m_Dict(d), RoundedTimecodeBase(0), StartTimecode(0), DropFrame(0) {}
312 virtual ~TimecodeComponent() {}
313 virtual const char* HasName() { return "TimecodeComponent"; }
314 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
315 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
316 virtual void Dump(FILE* = 0);
317 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
318 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
322 class GenericDescriptor : public InterchangeObject
324 ASDCP_NO_COPY_CONSTRUCT(GenericDescriptor);
328 const Dictionary& m_Dict;
329 Batch<UUID> Locators;
330 Batch<UUID> SubDescriptors;
332 GenericDescriptor(const Dictionary& d) : InterchangeObject(d), m_Dict(d) {}
333 virtual ~GenericDescriptor() {}
334 virtual const char* HasName() { return "GenericDescriptor"; }
335 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
336 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
337 virtual void Dump(FILE* = 0);
341 class FileDescriptor : public GenericDescriptor
343 ASDCP_NO_COPY_CONSTRUCT(FileDescriptor);
347 const Dictionary& m_Dict;
348 ui32_t LinkedTrackID;
350 ui64_t ContainerDuration;
354 FileDescriptor(const Dictionary& d) : GenericDescriptor(d), m_Dict(d), LinkedTrackID(0), ContainerDuration(0) {}
355 virtual ~FileDescriptor() {}
356 virtual const char* HasName() { return "FileDescriptor"; }
357 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
358 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
359 virtual void Dump(FILE* = 0);
360 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
361 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
365 class GenericSoundEssenceDescriptor : public FileDescriptor
367 ASDCP_NO_COPY_CONSTRUCT(GenericSoundEssenceDescriptor);
368 GenericSoundEssenceDescriptor();
371 const Dictionary& m_Dict;
372 Rational AudioSamplingRate;
376 ui32_t QuantizationBits;
379 GenericSoundEssenceDescriptor(const Dictionary& d) : FileDescriptor(d), m_Dict(d), Locked(0), AudioRefLevel(0), ChannelCount(0), QuantizationBits(0), DialNorm(0) {}
380 virtual ~GenericSoundEssenceDescriptor() {}
381 virtual const char* HasName() { return "GenericSoundEssenceDescriptor"; }
382 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
383 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
384 virtual void Dump(FILE* = 0);
385 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
386 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
390 class WaveAudioDescriptor : public GenericSoundEssenceDescriptor
392 ASDCP_NO_COPY_CONSTRUCT(WaveAudioDescriptor);
393 WaveAudioDescriptor();
396 const Dictionary& m_Dict;
398 ui8_t SequenceOffset;
400 UL ChannelAssignment;
402 WaveAudioDescriptor(const Dictionary& d) : GenericSoundEssenceDescriptor(d), m_Dict(d), BlockAlign(0), SequenceOffset(0), AvgBps(0) {}
403 virtual ~WaveAudioDescriptor() {}
404 virtual const char* HasName() { return "WaveAudioDescriptor"; }
405 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
406 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
407 virtual void Dump(FILE* = 0);
408 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
409 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
413 class GenericPictureEssenceDescriptor : public FileDescriptor
415 ASDCP_NO_COPY_CONSTRUCT(GenericPictureEssenceDescriptor);
416 GenericPictureEssenceDescriptor();
419 const Dictionary& m_Dict;
423 Rational AspectRatio;
424 UL PictureEssenceCoding;
426 GenericPictureEssenceDescriptor(const Dictionary& d) : FileDescriptor(d), m_Dict(d), FrameLayout(0), StoredWidth(0), StoredHeight(0) {}
427 virtual ~GenericPictureEssenceDescriptor() {}
428 virtual const char* HasName() { return "GenericPictureEssenceDescriptor"; }
429 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
430 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
431 virtual void Dump(FILE* = 0);
432 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
433 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
437 class RGBAEssenceDescriptor : public GenericPictureEssenceDescriptor
439 ASDCP_NO_COPY_CONSTRUCT(RGBAEssenceDescriptor);
440 RGBAEssenceDescriptor();
443 const Dictionary& m_Dict;
444 ui32_t ComponentMaxRef;
445 ui32_t ComponentMinRef;
447 RGBAEssenceDescriptor(const Dictionary& d) : GenericPictureEssenceDescriptor(d), m_Dict(d), ComponentMaxRef(0), ComponentMinRef(0) {}
448 virtual ~RGBAEssenceDescriptor() {}
449 virtual const char* HasName() { return "RGBAEssenceDescriptor"; }
450 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
451 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
452 virtual void Dump(FILE* = 0);
453 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
454 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
458 class JPEG2000PictureSubDescriptor : public InterchangeObject
460 ASDCP_NO_COPY_CONSTRUCT(JPEG2000PictureSubDescriptor);
461 JPEG2000PictureSubDescriptor();
464 const Dictionary& m_Dict;
475 Raw PictureComponentSizing;
476 Raw CodingStyleDefault;
477 Raw QuantizationDefault;
479 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) {}
480 virtual ~JPEG2000PictureSubDescriptor() {}
481 virtual const char* HasName() { return "JPEG2000PictureSubDescriptor"; }
482 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
483 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
484 virtual void Dump(FILE* = 0);
485 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
486 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
490 class CDCIEssenceDescriptor : public GenericPictureEssenceDescriptor
492 ASDCP_NO_COPY_CONSTRUCT(CDCIEssenceDescriptor);
493 CDCIEssenceDescriptor();
496 const Dictionary& m_Dict;
497 ui32_t ComponentDepth;
498 ui32_t HorizontalSubsampling;
499 ui32_t VerticalSubsampling;
502 CDCIEssenceDescriptor(const Dictionary& d) : GenericPictureEssenceDescriptor(d), m_Dict(d), ComponentDepth(0), HorizontalSubsampling(0), VerticalSubsampling(0), ColorSiting(0) {}
503 virtual ~CDCIEssenceDescriptor() {}
504 virtual const char* HasName() { return "CDCIEssenceDescriptor"; }
505 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
506 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
507 virtual void Dump(FILE* = 0);
508 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
509 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
513 class MPEG2VideoDescriptor : public CDCIEssenceDescriptor
515 ASDCP_NO_COPY_CONSTRUCT(MPEG2VideoDescriptor);
516 MPEG2VideoDescriptor();
519 const Dictionary& m_Dict;
520 ui8_t CodedContentType;
523 ui8_t ProfileAndLevel;
525 MPEG2VideoDescriptor(const Dictionary& d) : CDCIEssenceDescriptor(d), m_Dict(d), CodedContentType(0), LowDelay(0), BitRate(0), ProfileAndLevel(0) {}
526 virtual ~MPEG2VideoDescriptor() {}
527 virtual const char* HasName() { return "MPEG2VideoDescriptor"; }
528 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
529 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
530 virtual void Dump(FILE* = 0);
531 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
532 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
536 class DMSegment : public InterchangeObject
538 ASDCP_NO_COPY_CONSTRUCT(DMSegment);
542 const Dictionary& m_Dict;
544 ui64_t EventStartPosition;
546 UTF16String EventComment;
549 DMSegment(const Dictionary& d) : InterchangeObject(d), m_Dict(d), EventStartPosition(0), Duration(0) {}
550 virtual ~DMSegment() {}
551 virtual const char* HasName() { return "DMSegment"; }
552 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
553 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
554 virtual void Dump(FILE* = 0);
555 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
556 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
560 class CryptographicFramework : public InterchangeObject
562 ASDCP_NO_COPY_CONSTRUCT(CryptographicFramework);
563 CryptographicFramework();
566 const Dictionary& m_Dict;
569 CryptographicFramework(const Dictionary& d) : InterchangeObject(d), m_Dict(d) {}
570 virtual ~CryptographicFramework() {}
571 virtual const char* HasName() { return "CryptographicFramework"; }
572 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
573 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
574 virtual void Dump(FILE* = 0);
575 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
576 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
580 class CryptographicContext : public InterchangeObject
582 ASDCP_NO_COPY_CONSTRUCT(CryptographicContext);
583 CryptographicContext();
586 const Dictionary& m_Dict;
588 UL SourceEssenceContainer;
591 UUID CryptographicKeyID;
593 CryptographicContext(const Dictionary& d) : InterchangeObject(d), m_Dict(d) {}
594 virtual ~CryptographicContext() {}
595 virtual const char* HasName() { return "CryptographicContext"; }
596 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
597 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
598 virtual void Dump(FILE* = 0);
599 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
600 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
604 class GenericDataEssenceDescriptor : public FileDescriptor
606 ASDCP_NO_COPY_CONSTRUCT(GenericDataEssenceDescriptor);
607 GenericDataEssenceDescriptor();
610 const Dictionary& m_Dict;
611 UL DataEssenceCoding;
613 GenericDataEssenceDescriptor(const Dictionary& d) : FileDescriptor(d), m_Dict(d) {}
614 virtual ~GenericDataEssenceDescriptor() {}
615 virtual const char* HasName() { return "GenericDataEssenceDescriptor"; }
616 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
617 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
618 virtual void Dump(FILE* = 0);
619 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
620 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
624 class TimedTextDescriptor : public GenericDataEssenceDescriptor
626 ASDCP_NO_COPY_CONSTRUCT(TimedTextDescriptor);
627 TimedTextDescriptor();
630 const Dictionary& m_Dict;
632 UTF16String UCSEncoding;
633 UTF16String NamespaceURI;
635 TimedTextDescriptor(const Dictionary& d) : GenericDataEssenceDescriptor(d), m_Dict(d) {}
636 virtual ~TimedTextDescriptor() {}
637 virtual const char* HasName() { return "TimedTextDescriptor"; }
638 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
639 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
640 virtual void Dump(FILE* = 0);
641 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
642 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
646 class TimedTextResourceSubDescriptor : public InterchangeObject
648 ASDCP_NO_COPY_CONSTRUCT(TimedTextResourceSubDescriptor);
649 TimedTextResourceSubDescriptor();
652 const Dictionary& m_Dict;
653 UUID AncillaryResourceID;
654 UTF16String MIMEMediaType;
655 ui32_t EssenceStreamID;
657 TimedTextResourceSubDescriptor(const Dictionary& d) : InterchangeObject(d), m_Dict(d), EssenceStreamID(0) {}
658 virtual ~TimedTextResourceSubDescriptor() {}
659 virtual const char* HasName() { return "TimedTextResourceSubDescriptor"; }
660 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
661 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
662 virtual void Dump(FILE* = 0);
663 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
664 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
668 class StereoscopicPictureSubDescriptor : public InterchangeObject
670 ASDCP_NO_COPY_CONSTRUCT(StereoscopicPictureSubDescriptor);
671 StereoscopicPictureSubDescriptor();
674 const Dictionary& m_Dict;
676 StereoscopicPictureSubDescriptor(const Dictionary& d) : InterchangeObject(d), m_Dict(d) {}
677 virtual ~StereoscopicPictureSubDescriptor() {}
678 virtual const char* HasName() { return "StereoscopicPictureSubDescriptor"; }
679 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
680 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
681 virtual void Dump(FILE* = 0);
682 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
683 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
690 #endif // _Metadata_H_