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.
29 \brief MXF metadata objects
41 void Metadata_InitTypes(const Dictionary*& Dict);
46 class Identification : public InterchangeObject
51 const Dictionary*& m_Dict;
52 UUID ThisGenerationUID;
53 UTF16String CompanyName;
54 UTF16String ProductName;
55 VersionType ProductVersion;
56 UTF16String VersionString;
58 Kumu::Timestamp ModificationDate;
59 VersionType ToolkitVersion;
62 Identification(const Dictionary*& d);
63 Identification(const Identification& rhs);
64 virtual ~Identification() {}
66 const Identification& operator=(const Identification& rhs) { Copy(rhs); return *this; }
67 virtual void Copy(const Identification& rhs);
68 virtual const char* HasName() { return "Identification"; }
69 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
70 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
71 virtual void Dump(FILE* = 0);
72 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
73 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
77 class ContentStorage : public InterchangeObject
82 const Dictionary*& m_Dict;
84 Batch<UUID> EssenceContainerData;
86 ContentStorage(const Dictionary*& d);
87 ContentStorage(const ContentStorage& rhs);
88 virtual ~ContentStorage() {}
90 const ContentStorage& operator=(const ContentStorage& rhs) { Copy(rhs); return *this; }
91 virtual void Copy(const ContentStorage& rhs);
92 virtual const char* HasName() { return "ContentStorage"; }
93 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
94 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
95 virtual void Dump(FILE* = 0);
96 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
97 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
101 class EssenceContainerData : public InterchangeObject
103 EssenceContainerData();
106 const Dictionary*& m_Dict;
107 UMID LinkedPackageUID;
111 EssenceContainerData(const Dictionary*& d);
112 EssenceContainerData(const EssenceContainerData& rhs);
113 virtual ~EssenceContainerData() {}
115 const EssenceContainerData& operator=(const EssenceContainerData& rhs) { Copy(rhs); return *this; }
116 virtual void Copy(const EssenceContainerData& rhs);
117 virtual const char* HasName() { return "EssenceContainerData"; }
118 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
119 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
120 virtual void Dump(FILE* = 0);
121 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
122 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
126 class GenericPackage : public InterchangeObject
131 const Dictionary*& m_Dict;
134 Kumu::Timestamp PackageCreationDate;
135 Kumu::Timestamp PackageModifiedDate;
138 GenericPackage(const Dictionary*& d);
139 GenericPackage(const GenericPackage& rhs);
140 virtual ~GenericPackage() {}
142 const GenericPackage& operator=(const GenericPackage& rhs) { Copy(rhs); return *this; }
143 virtual void Copy(const GenericPackage& rhs);
144 virtual const char* HasName() { return "GenericPackage"; }
145 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
146 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
147 virtual void Dump(FILE* = 0);
151 class MaterialPackage : public GenericPackage
156 const Dictionary*& m_Dict;
158 MaterialPackage(const Dictionary*& d);
159 MaterialPackage(const MaterialPackage& rhs);
160 virtual ~MaterialPackage() {}
162 const MaterialPackage& operator=(const MaterialPackage& rhs) { Copy(rhs); return *this; }
163 virtual void Copy(const MaterialPackage& rhs);
164 virtual const char* HasName() { return "MaterialPackage"; }
165 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
166 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
167 virtual void Dump(FILE* = 0);
168 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
169 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
173 class SourcePackage : public GenericPackage
178 const Dictionary*& m_Dict;
181 SourcePackage(const Dictionary*& d);
182 SourcePackage(const SourcePackage& rhs);
183 virtual ~SourcePackage() {}
185 const SourcePackage& operator=(const SourcePackage& rhs) { Copy(rhs); return *this; }
186 virtual void Copy(const SourcePackage& rhs);
187 virtual const char* HasName() { return "SourcePackage"; }
188 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
189 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
190 virtual void Dump(FILE* = 0);
191 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
192 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
196 class GenericTrack : public InterchangeObject
201 const Dictionary*& m_Dict;
204 UTF16String TrackName;
207 GenericTrack(const Dictionary*& d);
208 GenericTrack(const GenericTrack& rhs);
209 virtual ~GenericTrack() {}
211 const GenericTrack& operator=(const GenericTrack& rhs) { Copy(rhs); return *this; }
212 virtual void Copy(const GenericTrack& rhs);
213 virtual const char* HasName() { return "GenericTrack"; }
214 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
215 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
216 virtual void Dump(FILE* = 0);
220 class StaticTrack : public GenericTrack
225 const Dictionary*& m_Dict;
227 StaticTrack(const Dictionary*& d);
228 StaticTrack(const StaticTrack& rhs);
229 virtual ~StaticTrack() {}
231 const StaticTrack& operator=(const StaticTrack& rhs) { Copy(rhs); return *this; }
232 virtual void Copy(const StaticTrack& rhs);
233 virtual const char* HasName() { return "StaticTrack"; }
234 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
235 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
236 virtual void Dump(FILE* = 0);
237 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
238 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
242 class Track : public GenericTrack
247 const Dictionary*& m_Dict;
251 Track(const Dictionary*& d);
252 Track(const Track& rhs);
255 const Track& operator=(const Track& rhs) { Copy(rhs); return *this; }
256 virtual void Copy(const Track& rhs);
257 virtual const char* HasName() { return "Track"; }
258 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
259 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
260 virtual void Dump(FILE* = 0);
261 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
262 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
266 class StructuralComponent : public InterchangeObject
268 StructuralComponent();
271 const Dictionary*& m_Dict;
275 StructuralComponent(const Dictionary*& d);
276 StructuralComponent(const StructuralComponent& rhs);
277 virtual ~StructuralComponent() {}
279 const StructuralComponent& operator=(const StructuralComponent& rhs) { Copy(rhs); return *this; }
280 virtual void Copy(const StructuralComponent& rhs);
281 virtual const char* HasName() { return "StructuralComponent"; }
282 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
283 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
284 virtual void Dump(FILE* = 0);
288 class Sequence : public StructuralComponent
293 const Dictionary*& m_Dict;
294 Batch<UUID> StructuralComponents;
296 Sequence(const Dictionary*& d);
297 Sequence(const Sequence& rhs);
298 virtual ~Sequence() {}
300 const Sequence& operator=(const Sequence& rhs) { Copy(rhs); return *this; }
301 virtual void Copy(const Sequence& rhs);
302 virtual const char* HasName() { return "Sequence"; }
303 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
304 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
305 virtual void Dump(FILE* = 0);
306 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
307 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
311 class SourceClip : public StructuralComponent
316 const Dictionary*& m_Dict;
317 ui64_t StartPosition;
318 UMID SourcePackageID;
319 ui32_t SourceTrackID;
321 SourceClip(const Dictionary*& d);
322 SourceClip(const SourceClip& rhs);
323 virtual ~SourceClip() {}
325 const SourceClip& operator=(const SourceClip& rhs) { Copy(rhs); return *this; }
326 virtual void Copy(const SourceClip& rhs);
327 virtual const char* HasName() { return "SourceClip"; }
328 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
329 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
330 virtual void Dump(FILE* = 0);
331 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
332 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
336 class TimecodeComponent : public StructuralComponent
341 const Dictionary*& m_Dict;
342 ui16_t RoundedTimecodeBase;
343 ui64_t StartTimecode;
346 TimecodeComponent(const Dictionary*& d);
347 TimecodeComponent(const TimecodeComponent& rhs);
348 virtual ~TimecodeComponent() {}
350 const TimecodeComponent& operator=(const TimecodeComponent& rhs) { Copy(rhs); return *this; }
351 virtual void Copy(const TimecodeComponent& rhs);
352 virtual const char* HasName() { return "TimecodeComponent"; }
353 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
354 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
355 virtual void Dump(FILE* = 0);
356 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
357 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
361 class GenericDescriptor : public InterchangeObject
366 const Dictionary*& m_Dict;
367 Batch<UUID> Locators;
368 Batch<UUID> SubDescriptors;
370 GenericDescriptor(const Dictionary*& d);
371 GenericDescriptor(const GenericDescriptor& rhs);
372 virtual ~GenericDescriptor() {}
374 const GenericDescriptor& operator=(const GenericDescriptor& rhs) { Copy(rhs); return *this; }
375 virtual void Copy(const GenericDescriptor& rhs);
376 virtual const char* HasName() { return "GenericDescriptor"; }
377 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
378 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
379 virtual void Dump(FILE* = 0);
383 class FileDescriptor : public GenericDescriptor
388 const Dictionary*& m_Dict;
389 ui32_t LinkedTrackID;
391 ui64_t ContainerDuration;
395 FileDescriptor(const Dictionary*& d);
396 FileDescriptor(const FileDescriptor& rhs);
397 virtual ~FileDescriptor() {}
399 const FileDescriptor& operator=(const FileDescriptor& rhs) { Copy(rhs); return *this; }
400 virtual void Copy(const FileDescriptor& rhs);
401 virtual const char* HasName() { return "FileDescriptor"; }
402 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
403 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
404 virtual void Dump(FILE* = 0);
405 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
406 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
410 class GenericSoundEssenceDescriptor : public FileDescriptor
412 GenericSoundEssenceDescriptor();
415 const Dictionary*& m_Dict;
416 Rational AudioSamplingRate;
420 ui32_t QuantizationBits;
423 GenericSoundEssenceDescriptor(const Dictionary*& d);
424 GenericSoundEssenceDescriptor(const GenericSoundEssenceDescriptor& rhs);
425 virtual ~GenericSoundEssenceDescriptor() {}
427 const GenericSoundEssenceDescriptor& operator=(const GenericSoundEssenceDescriptor& rhs) { Copy(rhs); return *this; }
428 virtual void Copy(const GenericSoundEssenceDescriptor& rhs);
429 virtual const char* HasName() { return "GenericSoundEssenceDescriptor"; }
430 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
431 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
432 virtual void Dump(FILE* = 0);
433 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
434 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
438 class WaveAudioDescriptor : public GenericSoundEssenceDescriptor
440 WaveAudioDescriptor();
443 const Dictionary*& m_Dict;
445 ui8_t SequenceOffset;
447 UL ChannelAssignment;
449 WaveAudioDescriptor(const Dictionary*& d);
450 WaveAudioDescriptor(const WaveAudioDescriptor& rhs);
451 virtual ~WaveAudioDescriptor() {}
453 const WaveAudioDescriptor& operator=(const WaveAudioDescriptor& rhs) { Copy(rhs); return *this; }
454 virtual void Copy(const WaveAudioDescriptor& rhs);
455 virtual const char* HasName() { return "WaveAudioDescriptor"; }
456 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
457 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
458 virtual void Dump(FILE* = 0);
459 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
460 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
464 class GenericPictureEssenceDescriptor : public FileDescriptor
466 GenericPictureEssenceDescriptor();
469 const Dictionary*& m_Dict;
473 Rational AspectRatio;
474 UL PictureEssenceCoding;
475 optional_property<ui32_t> DisplayWidth;
476 optional_property<ui32_t> DisplayHeight;
477 optional_property<UL> Gamma;
478 optional_property<ui8_t> FieldDominance;
480 GenericPictureEssenceDescriptor(const Dictionary*& d);
481 GenericPictureEssenceDescriptor(const GenericPictureEssenceDescriptor& rhs);
482 virtual ~GenericPictureEssenceDescriptor() {}
484 const GenericPictureEssenceDescriptor& operator=(const GenericPictureEssenceDescriptor& rhs) { Copy(rhs); return *this; }
485 virtual void Copy(const GenericPictureEssenceDescriptor& rhs);
486 virtual const char* HasName() { return "GenericPictureEssenceDescriptor"; }
487 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
488 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
489 virtual void Dump(FILE* = 0);
490 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
491 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
495 class RGBAEssenceDescriptor : public GenericPictureEssenceDescriptor
497 RGBAEssenceDescriptor();
500 const Dictionary*& m_Dict;
501 ui32_t ComponentMaxRef;
502 ui32_t ComponentMinRef;
504 RGBAEssenceDescriptor(const Dictionary*& d);
505 RGBAEssenceDescriptor(const RGBAEssenceDescriptor& rhs);
506 virtual ~RGBAEssenceDescriptor() {}
508 const RGBAEssenceDescriptor& operator=(const RGBAEssenceDescriptor& rhs) { Copy(rhs); return *this; }
509 virtual void Copy(const RGBAEssenceDescriptor& rhs);
510 virtual const char* HasName() { return "RGBAEssenceDescriptor"; }
511 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
512 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
513 virtual void Dump(FILE* = 0);
514 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
515 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
519 class JPEG2000PictureSubDescriptor : public InterchangeObject
521 JPEG2000PictureSubDescriptor();
524 const Dictionary*& m_Dict;
535 Raw PictureComponentSizing;
536 Raw CodingStyleDefault;
537 Raw QuantizationDefault;
539 JPEG2000PictureSubDescriptor(const Dictionary*& d);
540 JPEG2000PictureSubDescriptor(const JPEG2000PictureSubDescriptor& rhs);
541 virtual ~JPEG2000PictureSubDescriptor() {}
543 const JPEG2000PictureSubDescriptor& operator=(const JPEG2000PictureSubDescriptor& rhs) { Copy(rhs); return *this; }
544 virtual void Copy(const JPEG2000PictureSubDescriptor& rhs);
545 virtual const char* HasName() { return "JPEG2000PictureSubDescriptor"; }
546 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
547 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
548 virtual void Dump(FILE* = 0);
549 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
550 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
554 class CDCIEssenceDescriptor : public GenericPictureEssenceDescriptor
556 CDCIEssenceDescriptor();
559 const Dictionary*& m_Dict;
560 ui32_t ComponentDepth;
561 ui32_t HorizontalSubsampling;
562 ui32_t VerticalSubsampling;
565 CDCIEssenceDescriptor(const Dictionary*& d);
566 CDCIEssenceDescriptor(const CDCIEssenceDescriptor& rhs);
567 virtual ~CDCIEssenceDescriptor() {}
569 const CDCIEssenceDescriptor& operator=(const CDCIEssenceDescriptor& rhs) { Copy(rhs); return *this; }
570 virtual void Copy(const CDCIEssenceDescriptor& rhs);
571 virtual const char* HasName() { return "CDCIEssenceDescriptor"; }
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 MPEG2VideoDescriptor : public CDCIEssenceDescriptor
582 MPEG2VideoDescriptor();
585 const Dictionary*& m_Dict;
586 ui8_t CodedContentType;
589 ui8_t ProfileAndLevel;
591 MPEG2VideoDescriptor(const Dictionary*& d);
592 MPEG2VideoDescriptor(const MPEG2VideoDescriptor& rhs);
593 virtual ~MPEG2VideoDescriptor() {}
595 const MPEG2VideoDescriptor& operator=(const MPEG2VideoDescriptor& rhs) { Copy(rhs); return *this; }
596 virtual void Copy(const MPEG2VideoDescriptor& rhs);
597 virtual const char* HasName() { return "MPEG2VideoDescriptor"; }
598 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
599 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
600 virtual void Dump(FILE* = 0);
601 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
602 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
606 class DMSegment : public InterchangeObject
611 const Dictionary*& m_Dict;
613 ui64_t EventStartPosition;
615 UTF16String EventComment;
618 DMSegment(const Dictionary*& d);
619 DMSegment(const DMSegment& rhs);
620 virtual ~DMSegment() {}
622 const DMSegment& operator=(const DMSegment& rhs) { Copy(rhs); return *this; }
623 virtual void Copy(const DMSegment& rhs);
624 virtual const char* HasName() { return "DMSegment"; }
625 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
626 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
627 virtual void Dump(FILE* = 0);
628 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
629 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
633 class CryptographicFramework : public InterchangeObject
635 CryptographicFramework();
638 const Dictionary*& m_Dict;
641 CryptographicFramework(const Dictionary*& d);
642 CryptographicFramework(const CryptographicFramework& rhs);
643 virtual ~CryptographicFramework() {}
645 const CryptographicFramework& operator=(const CryptographicFramework& rhs) { Copy(rhs); return *this; }
646 virtual void Copy(const CryptographicFramework& rhs);
647 virtual const char* HasName() { return "CryptographicFramework"; }
648 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
649 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
650 virtual void Dump(FILE* = 0);
651 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
652 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
656 class CryptographicContext : public InterchangeObject
658 CryptographicContext();
661 const Dictionary*& m_Dict;
663 UL SourceEssenceContainer;
666 UUID CryptographicKeyID;
668 CryptographicContext(const Dictionary*& d);
669 CryptographicContext(const CryptographicContext& rhs);
670 virtual ~CryptographicContext() {}
672 const CryptographicContext& operator=(const CryptographicContext& rhs) { Copy(rhs); return *this; }
673 virtual void Copy(const CryptographicContext& rhs);
674 virtual const char* HasName() { return "CryptographicContext"; }
675 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
676 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
677 virtual void Dump(FILE* = 0);
678 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
679 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
683 class GenericDataEssenceDescriptor : public FileDescriptor
685 GenericDataEssenceDescriptor();
688 const Dictionary*& m_Dict;
689 UL DataEssenceCoding;
691 GenericDataEssenceDescriptor(const Dictionary*& d);
692 GenericDataEssenceDescriptor(const GenericDataEssenceDescriptor& rhs);
693 virtual ~GenericDataEssenceDescriptor() {}
695 const GenericDataEssenceDescriptor& operator=(const GenericDataEssenceDescriptor& rhs) { Copy(rhs); return *this; }
696 virtual void Copy(const GenericDataEssenceDescriptor& rhs);
697 virtual const char* HasName() { return "GenericDataEssenceDescriptor"; }
698 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
699 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
700 virtual void Dump(FILE* = 0);
701 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
702 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
706 class TimedTextDescriptor : public GenericDataEssenceDescriptor
708 TimedTextDescriptor();
711 const Dictionary*& m_Dict;
713 UTF16String UCSEncoding;
714 UTF16String NamespaceURI;
716 TimedTextDescriptor(const Dictionary*& d);
717 TimedTextDescriptor(const TimedTextDescriptor& rhs);
718 virtual ~TimedTextDescriptor() {}
720 const TimedTextDescriptor& operator=(const TimedTextDescriptor& rhs) { Copy(rhs); return *this; }
721 virtual void Copy(const TimedTextDescriptor& rhs);
722 virtual const char* HasName() { return "TimedTextDescriptor"; }
723 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
724 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
725 virtual void Dump(FILE* = 0);
726 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
727 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
731 class TimedTextResourceSubDescriptor : public InterchangeObject
733 TimedTextResourceSubDescriptor();
736 const Dictionary*& m_Dict;
737 UUID AncillaryResourceID;
738 UTF16String MIMEMediaType;
739 ui32_t EssenceStreamID;
741 TimedTextResourceSubDescriptor(const Dictionary*& d);
742 TimedTextResourceSubDescriptor(const TimedTextResourceSubDescriptor& rhs);
743 virtual ~TimedTextResourceSubDescriptor() {}
745 const TimedTextResourceSubDescriptor& operator=(const TimedTextResourceSubDescriptor& rhs) { Copy(rhs); return *this; }
746 virtual void Copy(const TimedTextResourceSubDescriptor& rhs);
747 virtual const char* HasName() { return "TimedTextResourceSubDescriptor"; }
748 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
749 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
750 virtual void Dump(FILE* = 0);
751 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
752 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
756 class StereoscopicPictureSubDescriptor : public InterchangeObject
758 StereoscopicPictureSubDescriptor();
761 const Dictionary*& m_Dict;
763 StereoscopicPictureSubDescriptor(const Dictionary*& d);
764 StereoscopicPictureSubDescriptor(const StereoscopicPictureSubDescriptor& rhs);
765 virtual ~StereoscopicPictureSubDescriptor() {}
767 const StereoscopicPictureSubDescriptor& operator=(const StereoscopicPictureSubDescriptor& rhs) { Copy(rhs); return *this; }
768 virtual void Copy(const StereoscopicPictureSubDescriptor& rhs);
769 virtual const char* HasName() { return "StereoscopicPictureSubDescriptor"; }
770 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
771 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
772 virtual void Dump(FILE* = 0);
773 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
774 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
778 class NetworkLocator : public InterchangeObject
783 const Dictionary*& m_Dict;
784 UTF16String URLString;
786 NetworkLocator(const Dictionary*& d);
787 NetworkLocator(const NetworkLocator& rhs);
788 virtual ~NetworkLocator() {}
790 const NetworkLocator& operator=(const NetworkLocator& rhs) { Copy(rhs); return *this; }
791 virtual void Copy(const NetworkLocator& rhs);
792 virtual const char* HasName() { return "NetworkLocator"; }
793 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
794 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
795 virtual void Dump(FILE* = 0);
796 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
797 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
801 class MCALabelSubDescriptor : public InterchangeObject
803 MCALabelSubDescriptor();
806 const Dictionary*& m_Dict;
807 UL MCALabelDictionaryID;
809 UTF16String MCATagSymbol;
810 UTF16String MCATagName;
812 ISO8String RFC5646SpokenLanguage;
814 MCALabelSubDescriptor(const Dictionary*& d);
815 MCALabelSubDescriptor(const MCALabelSubDescriptor& rhs);
816 virtual ~MCALabelSubDescriptor() {}
818 const MCALabelSubDescriptor& operator=(const MCALabelSubDescriptor& rhs) { Copy(rhs); return *this; }
819 virtual void Copy(const MCALabelSubDescriptor& rhs);
820 virtual const char* HasName() { return "MCALabelSubDescriptor"; }
821 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
822 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
823 virtual void Dump(FILE* = 0);
824 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
825 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
829 class AudioChannelLabelSubDescriptor : public MCALabelSubDescriptor
831 AudioChannelLabelSubDescriptor();
834 const Dictionary*& m_Dict;
835 UUID SoundfieldGroupLinkID;
837 AudioChannelLabelSubDescriptor(const Dictionary*& d);
838 AudioChannelLabelSubDescriptor(const AudioChannelLabelSubDescriptor& rhs);
839 virtual ~AudioChannelLabelSubDescriptor() {}
841 const AudioChannelLabelSubDescriptor& operator=(const AudioChannelLabelSubDescriptor& rhs) { Copy(rhs); return *this; }
842 virtual void Copy(const AudioChannelLabelSubDescriptor& rhs);
843 virtual const char* HasName() { return "AudioChannelLabelSubDescriptor"; }
844 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
845 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
846 virtual void Dump(FILE* = 0);
847 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
848 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
852 class SoundfieldGroupLabelSubDescriptor : public MCALabelSubDescriptor
854 SoundfieldGroupLabelSubDescriptor();
857 const Dictionary*& m_Dict;
858 Array<UUID> GroupOfSoundfieldGroupsLinkID;
860 SoundfieldGroupLabelSubDescriptor(const Dictionary*& d);
861 SoundfieldGroupLabelSubDescriptor(const SoundfieldGroupLabelSubDescriptor& rhs);
862 virtual ~SoundfieldGroupLabelSubDescriptor() {}
864 const SoundfieldGroupLabelSubDescriptor& operator=(const SoundfieldGroupLabelSubDescriptor& rhs) { Copy(rhs); return *this; }
865 virtual void Copy(const SoundfieldGroupLabelSubDescriptor& rhs);
866 virtual const char* HasName() { return "SoundfieldGroupLabelSubDescriptor"; }
867 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
868 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
869 virtual void Dump(FILE* = 0);
870 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
871 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
875 class GroupOfSoundfieldGroupsLabelSubDescriptor : public MCALabelSubDescriptor
877 GroupOfSoundfieldGroupsLabelSubDescriptor();
880 const Dictionary*& m_Dict;
882 GroupOfSoundfieldGroupsLabelSubDescriptor(const Dictionary*& d);
883 GroupOfSoundfieldGroupsLabelSubDescriptor(const GroupOfSoundfieldGroupsLabelSubDescriptor& rhs);
884 virtual ~GroupOfSoundfieldGroupsLabelSubDescriptor() {}
886 const GroupOfSoundfieldGroupsLabelSubDescriptor& operator=(const GroupOfSoundfieldGroupsLabelSubDescriptor& rhs) { Copy(rhs); return *this; }
887 virtual void Copy(const GroupOfSoundfieldGroupsLabelSubDescriptor& rhs);
888 virtual const char* HasName() { return "GroupOfSoundfieldGroupsLabelSubDescriptor"; }
889 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
890 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
891 virtual void Dump(FILE* = 0);
892 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
893 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
897 class DCDataDescriptor : public GenericDataEssenceDescriptor
902 const Dictionary*& m_Dict;
904 DCDataDescriptor(const Dictionary*& d);
905 DCDataDescriptor(const DCDataDescriptor& rhs);
906 virtual ~DCDataDescriptor() {}
908 const DCDataDescriptor& operator=(const DCDataDescriptor& rhs) { Copy(rhs); return *this; }
909 virtual void Copy(const DCDataDescriptor& rhs);
910 virtual const char* HasName() { return "DCDataDescriptor"; }
911 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
912 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
913 virtual void Dump(FILE* = 0);
914 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
915 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
919 class DolbyAtmosSubDescriptor : public InterchangeObject
921 DolbyAtmosSubDescriptor();
924 const Dictionary*& m_Dict;
927 ui16_t MaxChannelCount;
928 ui16_t MaxObjectCount;
931 DolbyAtmosSubDescriptor(const Dictionary*& d);
932 DolbyAtmosSubDescriptor(const DolbyAtmosSubDescriptor& rhs);
933 virtual ~DolbyAtmosSubDescriptor() {}
935 const DolbyAtmosSubDescriptor& operator=(const DolbyAtmosSubDescriptor& rhs) { Copy(rhs); return *this; }
936 virtual void Copy(const DolbyAtmosSubDescriptor& rhs);
937 virtual const char* HasName() { return "DolbyAtmosSubDescriptor"; }
938 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
939 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
940 virtual void Dump(FILE* = 0);
941 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
942 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
949 #endif // _Metadata_H_