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;
476 GenericPictureEssenceDescriptor(const Dictionary*& d);
477 GenericPictureEssenceDescriptor(const GenericPictureEssenceDescriptor& rhs);
478 virtual ~GenericPictureEssenceDescriptor() {}
480 const GenericPictureEssenceDescriptor& operator=(const GenericPictureEssenceDescriptor& rhs) { Copy(rhs); return *this; }
481 virtual void Copy(const GenericPictureEssenceDescriptor& rhs);
482 virtual const char* HasName() { return "GenericPictureEssenceDescriptor"; }
483 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
484 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
485 virtual void Dump(FILE* = 0);
486 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
487 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
491 class RGBAEssenceDescriptor : public GenericPictureEssenceDescriptor
493 RGBAEssenceDescriptor();
496 const Dictionary*& m_Dict;
497 ui32_t ComponentMaxRef;
498 ui32_t ComponentMinRef;
500 RGBAEssenceDescriptor(const Dictionary*& d);
501 RGBAEssenceDescriptor(const RGBAEssenceDescriptor& rhs);
502 virtual ~RGBAEssenceDescriptor() {}
504 const RGBAEssenceDescriptor& operator=(const RGBAEssenceDescriptor& rhs) { Copy(rhs); return *this; }
505 virtual void Copy(const RGBAEssenceDescriptor& rhs);
506 virtual const char* HasName() { return "RGBAEssenceDescriptor"; }
507 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
508 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
509 virtual void Dump(FILE* = 0);
510 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
511 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
515 class JPEG2000PictureSubDescriptor : public InterchangeObject
517 JPEG2000PictureSubDescriptor();
520 const Dictionary*& m_Dict;
531 Raw PictureComponentSizing;
532 Raw CodingStyleDefault;
533 Raw QuantizationDefault;
535 JPEG2000PictureSubDescriptor(const Dictionary*& d);
536 JPEG2000PictureSubDescriptor(const JPEG2000PictureSubDescriptor& rhs);
537 virtual ~JPEG2000PictureSubDescriptor() {}
539 const JPEG2000PictureSubDescriptor& operator=(const JPEG2000PictureSubDescriptor& rhs) { Copy(rhs); return *this; }
540 virtual void Copy(const JPEG2000PictureSubDescriptor& rhs);
541 virtual const char* HasName() { return "JPEG2000PictureSubDescriptor"; }
542 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
543 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
544 virtual void Dump(FILE* = 0);
545 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
546 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
550 class CDCIEssenceDescriptor : public GenericPictureEssenceDescriptor
552 CDCIEssenceDescriptor();
555 const Dictionary*& m_Dict;
556 ui32_t ComponentDepth;
557 ui32_t HorizontalSubsampling;
558 ui32_t VerticalSubsampling;
561 CDCIEssenceDescriptor(const Dictionary*& d);
562 CDCIEssenceDescriptor(const CDCIEssenceDescriptor& rhs);
563 virtual ~CDCIEssenceDescriptor() {}
565 const CDCIEssenceDescriptor& operator=(const CDCIEssenceDescriptor& rhs) { Copy(rhs); return *this; }
566 virtual void Copy(const CDCIEssenceDescriptor& rhs);
567 virtual const char* HasName() { return "CDCIEssenceDescriptor"; }
568 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
569 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
570 virtual void Dump(FILE* = 0);
571 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
572 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
576 class MPEG2VideoDescriptor : public CDCIEssenceDescriptor
578 MPEG2VideoDescriptor();
581 const Dictionary*& m_Dict;
582 ui8_t CodedContentType;
585 ui8_t ProfileAndLevel;
587 MPEG2VideoDescriptor(const Dictionary*& d);
588 MPEG2VideoDescriptor(const MPEG2VideoDescriptor& rhs);
589 virtual ~MPEG2VideoDescriptor() {}
591 const MPEG2VideoDescriptor& operator=(const MPEG2VideoDescriptor& rhs) { Copy(rhs); return *this; }
592 virtual void Copy(const MPEG2VideoDescriptor& rhs);
593 virtual const char* HasName() { return "MPEG2VideoDescriptor"; }
594 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
595 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
596 virtual void Dump(FILE* = 0);
597 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
598 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
602 class DMSegment : public InterchangeObject
607 const Dictionary*& m_Dict;
609 ui64_t EventStartPosition;
611 UTF16String EventComment;
614 DMSegment(const Dictionary*& d);
615 DMSegment(const DMSegment& rhs);
616 virtual ~DMSegment() {}
618 const DMSegment& operator=(const DMSegment& rhs) { Copy(rhs); return *this; }
619 virtual void Copy(const DMSegment& rhs);
620 virtual const char* HasName() { return "DMSegment"; }
621 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
622 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
623 virtual void Dump(FILE* = 0);
624 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
625 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
629 class CryptographicFramework : public InterchangeObject
631 CryptographicFramework();
634 const Dictionary*& m_Dict;
637 CryptographicFramework(const Dictionary*& d);
638 CryptographicFramework(const CryptographicFramework& rhs);
639 virtual ~CryptographicFramework() {}
641 const CryptographicFramework& operator=(const CryptographicFramework& rhs) { Copy(rhs); return *this; }
642 virtual void Copy(const CryptographicFramework& rhs);
643 virtual const char* HasName() { return "CryptographicFramework"; }
644 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
645 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
646 virtual void Dump(FILE* = 0);
647 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
648 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
652 class CryptographicContext : public InterchangeObject
654 CryptographicContext();
657 const Dictionary*& m_Dict;
659 UL SourceEssenceContainer;
662 UUID CryptographicKeyID;
664 CryptographicContext(const Dictionary*& d);
665 CryptographicContext(const CryptographicContext& rhs);
666 virtual ~CryptographicContext() {}
668 const CryptographicContext& operator=(const CryptographicContext& rhs) { Copy(rhs); return *this; }
669 virtual void Copy(const CryptographicContext& rhs);
670 virtual const char* HasName() { return "CryptographicContext"; }
671 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
672 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
673 virtual void Dump(FILE* = 0);
674 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
675 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
679 class GenericDataEssenceDescriptor : public FileDescriptor
681 GenericDataEssenceDescriptor();
684 const Dictionary*& m_Dict;
685 UL DataEssenceCoding;
687 GenericDataEssenceDescriptor(const Dictionary*& d);
688 GenericDataEssenceDescriptor(const GenericDataEssenceDescriptor& rhs);
689 virtual ~GenericDataEssenceDescriptor() {}
691 const GenericDataEssenceDescriptor& operator=(const GenericDataEssenceDescriptor& rhs) { Copy(rhs); return *this; }
692 virtual void Copy(const GenericDataEssenceDescriptor& rhs);
693 virtual const char* HasName() { return "GenericDataEssenceDescriptor"; }
694 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
695 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
696 virtual void Dump(FILE* = 0);
697 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
698 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
702 class TimedTextDescriptor : public GenericDataEssenceDescriptor
704 TimedTextDescriptor();
707 const Dictionary*& m_Dict;
709 UTF16String UCSEncoding;
710 UTF16String NamespaceURI;
712 TimedTextDescriptor(const Dictionary*& d);
713 TimedTextDescriptor(const TimedTextDescriptor& rhs);
714 virtual ~TimedTextDescriptor() {}
716 const TimedTextDescriptor& operator=(const TimedTextDescriptor& rhs) { Copy(rhs); return *this; }
717 virtual void Copy(const TimedTextDescriptor& rhs);
718 virtual const char* HasName() { return "TimedTextDescriptor"; }
719 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
720 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
721 virtual void Dump(FILE* = 0);
722 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
723 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
727 class TimedTextResourceSubDescriptor : public InterchangeObject
729 TimedTextResourceSubDescriptor();
732 const Dictionary*& m_Dict;
733 UUID AncillaryResourceID;
734 UTF16String MIMEMediaType;
735 ui32_t EssenceStreamID;
737 TimedTextResourceSubDescriptor(const Dictionary*& d);
738 TimedTextResourceSubDescriptor(const TimedTextResourceSubDescriptor& rhs);
739 virtual ~TimedTextResourceSubDescriptor() {}
741 const TimedTextResourceSubDescriptor& operator=(const TimedTextResourceSubDescriptor& rhs) { Copy(rhs); return *this; }
742 virtual void Copy(const TimedTextResourceSubDescriptor& rhs);
743 virtual const char* HasName() { return "TimedTextResourceSubDescriptor"; }
744 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
745 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
746 virtual void Dump(FILE* = 0);
747 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
748 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
752 class StereoscopicPictureSubDescriptor : public InterchangeObject
754 StereoscopicPictureSubDescriptor();
757 const Dictionary*& m_Dict;
759 StereoscopicPictureSubDescriptor(const Dictionary*& d);
760 StereoscopicPictureSubDescriptor(const StereoscopicPictureSubDescriptor& rhs);
761 virtual ~StereoscopicPictureSubDescriptor() {}
763 const StereoscopicPictureSubDescriptor& operator=(const StereoscopicPictureSubDescriptor& rhs) { Copy(rhs); return *this; }
764 virtual void Copy(const StereoscopicPictureSubDescriptor& rhs);
765 virtual const char* HasName() { return "StereoscopicPictureSubDescriptor"; }
766 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
767 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
768 virtual void Dump(FILE* = 0);
769 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
770 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
774 class NetworkLocator : public InterchangeObject
779 const Dictionary*& m_Dict;
780 UTF16String URLString;
782 NetworkLocator(const Dictionary*& d);
783 NetworkLocator(const NetworkLocator& rhs);
784 virtual ~NetworkLocator() {}
786 const NetworkLocator& operator=(const NetworkLocator& rhs) { Copy(rhs); return *this; }
787 virtual void Copy(const NetworkLocator& rhs);
788 virtual const char* HasName() { return "NetworkLocator"; }
789 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
790 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
791 virtual void Dump(FILE* = 0);
792 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
793 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
797 class MCALabelSubDescriptor : public InterchangeObject
799 MCALabelSubDescriptor();
802 const Dictionary*& m_Dict;
803 UL MCALabelDictionaryID;
805 UTF16String MCATagSymbol;
806 UTF16String MCATagName;
808 ISO8String RFC5646SpokenLanguage;
810 MCALabelSubDescriptor(const Dictionary*& d);
811 MCALabelSubDescriptor(const MCALabelSubDescriptor& rhs);
812 virtual ~MCALabelSubDescriptor() {}
814 const MCALabelSubDescriptor& operator=(const MCALabelSubDescriptor& rhs) { Copy(rhs); return *this; }
815 virtual void Copy(const MCALabelSubDescriptor& rhs);
816 virtual const char* HasName() { return "MCALabelSubDescriptor"; }
817 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
818 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
819 virtual void Dump(FILE* = 0);
820 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
821 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
825 class AudioChannelLabelSubDescriptor : public MCALabelSubDescriptor
827 AudioChannelLabelSubDescriptor();
830 const Dictionary*& m_Dict;
831 UUID SoundfieldGroupLinkID;
833 AudioChannelLabelSubDescriptor(const Dictionary*& d);
834 AudioChannelLabelSubDescriptor(const AudioChannelLabelSubDescriptor& rhs);
835 virtual ~AudioChannelLabelSubDescriptor() {}
837 const AudioChannelLabelSubDescriptor& operator=(const AudioChannelLabelSubDescriptor& rhs) { Copy(rhs); return *this; }
838 virtual void Copy(const AudioChannelLabelSubDescriptor& rhs);
839 virtual const char* HasName() { return "AudioChannelLabelSubDescriptor"; }
840 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
841 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
842 virtual void Dump(FILE* = 0);
843 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
844 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
848 class SoundfieldGroupLabelSubDescriptor : public MCALabelSubDescriptor
850 SoundfieldGroupLabelSubDescriptor();
853 const Dictionary*& m_Dict;
854 Array<UUID> GroupOfSoundfieldGroupsLinkID;
856 SoundfieldGroupLabelSubDescriptor(const Dictionary*& d);
857 SoundfieldGroupLabelSubDescriptor(const SoundfieldGroupLabelSubDescriptor& rhs);
858 virtual ~SoundfieldGroupLabelSubDescriptor() {}
860 const SoundfieldGroupLabelSubDescriptor& operator=(const SoundfieldGroupLabelSubDescriptor& rhs) { Copy(rhs); return *this; }
861 virtual void Copy(const SoundfieldGroupLabelSubDescriptor& rhs);
862 virtual const char* HasName() { return "SoundfieldGroupLabelSubDescriptor"; }
863 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
864 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
865 virtual void Dump(FILE* = 0);
866 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
867 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
871 class GroupOfSoundfieldGroupsLabelSubDescriptor : public MCALabelSubDescriptor
873 GroupOfSoundfieldGroupsLabelSubDescriptor();
876 const Dictionary*& m_Dict;
878 GroupOfSoundfieldGroupsLabelSubDescriptor(const Dictionary*& d);
879 GroupOfSoundfieldGroupsLabelSubDescriptor(const GroupOfSoundfieldGroupsLabelSubDescriptor& rhs);
880 virtual ~GroupOfSoundfieldGroupsLabelSubDescriptor() {}
882 const GroupOfSoundfieldGroupsLabelSubDescriptor& operator=(const GroupOfSoundfieldGroupsLabelSubDescriptor& rhs) { Copy(rhs); return *this; }
883 virtual void Copy(const GroupOfSoundfieldGroupsLabelSubDescriptor& rhs);
884 virtual const char* HasName() { return "GroupOfSoundfieldGroupsLabelSubDescriptor"; }
885 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
886 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
887 virtual void Dump(FILE* = 0);
888 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
889 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
896 #endif // _Metadata_H_