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;
60 optional_property<UTF16String> Platform;
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;
108 optional_property<ui32_t> IndexSID;
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;
133 optional_property<UTF16String> Name;
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;
157 optional_property<UUID> PackageMarker;
159 MaterialPackage(const Dictionary*& d);
160 MaterialPackage(const MaterialPackage& rhs);
161 virtual ~MaterialPackage() {}
163 const MaterialPackage& operator=(const MaterialPackage& rhs) { Copy(rhs); return *this; }
164 virtual void Copy(const MaterialPackage& rhs);
165 virtual const char* HasName() { return "MaterialPackage"; }
166 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
167 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
168 virtual void Dump(FILE* = 0);
169 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
170 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
174 class SourcePackage : public GenericPackage
179 const Dictionary*& m_Dict;
182 SourcePackage(const Dictionary*& d);
183 SourcePackage(const SourcePackage& rhs);
184 virtual ~SourcePackage() {}
186 const SourcePackage& operator=(const SourcePackage& rhs) { Copy(rhs); return *this; }
187 virtual void Copy(const SourcePackage& rhs);
188 virtual const char* HasName() { return "SourcePackage"; }
189 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
190 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
191 virtual void Dump(FILE* = 0);
192 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
193 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
197 class GenericTrack : public InterchangeObject
202 const Dictionary*& m_Dict;
205 optional_property<UTF16String> TrackName;
206 optional_property<UUID> Sequence;
208 GenericTrack(const Dictionary*& d);
209 GenericTrack(const GenericTrack& rhs);
210 virtual ~GenericTrack() {}
212 const GenericTrack& operator=(const GenericTrack& rhs) { Copy(rhs); return *this; }
213 virtual void Copy(const GenericTrack& rhs);
214 virtual const char* HasName() { return "GenericTrack"; }
215 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
216 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
217 virtual void Dump(FILE* = 0);
221 class StaticTrack : public GenericTrack
226 const Dictionary*& m_Dict;
228 StaticTrack(const Dictionary*& d);
229 StaticTrack(const StaticTrack& rhs);
230 virtual ~StaticTrack() {}
232 const StaticTrack& operator=(const StaticTrack& rhs) { Copy(rhs); return *this; }
233 virtual void Copy(const StaticTrack& rhs);
234 virtual const char* HasName() { return "StaticTrack"; }
235 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
236 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
237 virtual void Dump(FILE* = 0);
238 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
239 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
243 class Track : public GenericTrack
248 const Dictionary*& m_Dict;
252 Track(const Dictionary*& d);
253 Track(const Track& rhs);
256 const Track& operator=(const Track& rhs) { Copy(rhs); return *this; }
257 virtual void Copy(const Track& rhs);
258 virtual const char* HasName() { return "Track"; }
259 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
260 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
261 virtual void Dump(FILE* = 0);
262 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
263 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
267 class StructuralComponent : public InterchangeObject
269 StructuralComponent();
272 const Dictionary*& m_Dict;
274 optional_property<ui64_t> Duration;
276 StructuralComponent(const Dictionary*& d);
277 StructuralComponent(const StructuralComponent& rhs);
278 virtual ~StructuralComponent() {}
280 const StructuralComponent& operator=(const StructuralComponent& rhs) { Copy(rhs); return *this; }
281 virtual void Copy(const StructuralComponent& rhs);
282 virtual const char* HasName() { return "StructuralComponent"; }
283 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
284 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
285 virtual void Dump(FILE* = 0);
289 class Sequence : public StructuralComponent
294 const Dictionary*& m_Dict;
295 Batch<UUID> StructuralComponents;
297 Sequence(const Dictionary*& d);
298 Sequence(const Sequence& rhs);
299 virtual ~Sequence() {}
301 const Sequence& operator=(const Sequence& rhs) { Copy(rhs); return *this; }
302 virtual void Copy(const Sequence& rhs);
303 virtual const char* HasName() { return "Sequence"; }
304 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
305 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
306 virtual void Dump(FILE* = 0);
307 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
308 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
312 class SourceClip : public StructuralComponent
317 const Dictionary*& m_Dict;
318 ui64_t StartPosition;
319 UMID SourcePackageID;
320 ui32_t SourceTrackID;
322 SourceClip(const Dictionary*& d);
323 SourceClip(const SourceClip& rhs);
324 virtual ~SourceClip() {}
326 const SourceClip& operator=(const SourceClip& rhs) { Copy(rhs); return *this; }
327 virtual void Copy(const SourceClip& rhs);
328 virtual const char* HasName() { return "SourceClip"; }
329 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
330 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
331 virtual void Dump(FILE* = 0);
332 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
333 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
337 class TimecodeComponent : public StructuralComponent
342 const Dictionary*& m_Dict;
343 ui16_t RoundedTimecodeBase;
344 ui64_t StartTimecode;
347 TimecodeComponent(const Dictionary*& d);
348 TimecodeComponent(const TimecodeComponent& rhs);
349 virtual ~TimecodeComponent() {}
351 const TimecodeComponent& operator=(const TimecodeComponent& rhs) { Copy(rhs); return *this; }
352 virtual void Copy(const TimecodeComponent& rhs);
353 virtual const char* HasName() { return "TimecodeComponent"; }
354 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
355 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
356 virtual void Dump(FILE* = 0);
357 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
358 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
362 class GenericDescriptor : public InterchangeObject
367 const Dictionary*& m_Dict;
368 Batch<UUID> Locators;
369 Batch<UUID> SubDescriptors;
371 GenericDescriptor(const Dictionary*& d);
372 GenericDescriptor(const GenericDescriptor& rhs);
373 virtual ~GenericDescriptor() {}
375 const GenericDescriptor& operator=(const GenericDescriptor& rhs) { Copy(rhs); return *this; }
376 virtual void Copy(const GenericDescriptor& rhs);
377 virtual const char* HasName() { return "GenericDescriptor"; }
378 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
379 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
380 virtual void Dump(FILE* = 0);
384 class FileDescriptor : public GenericDescriptor
389 const Dictionary*& m_Dict;
390 optional_property<ui32_t> LinkedTrackID;
392 optional_property<ui64_t> ContainerDuration;
394 optional_property<UL> Codec;
396 FileDescriptor(const Dictionary*& d);
397 FileDescriptor(const FileDescriptor& rhs);
398 virtual ~FileDescriptor() {}
400 const FileDescriptor& operator=(const FileDescriptor& rhs) { Copy(rhs); return *this; }
401 virtual void Copy(const FileDescriptor& rhs);
402 virtual const char* HasName() { return "FileDescriptor"; }
403 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
404 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
405 virtual void Dump(FILE* = 0);
406 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
407 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
411 class GenericSoundEssenceDescriptor : public FileDescriptor
413 GenericSoundEssenceDescriptor();
416 const Dictionary*& m_Dict;
417 Rational AudioSamplingRate;
419 optional_property<ui8_t> AudioRefLevel;
420 optional_property<ui8_t> ElectroSpatialFormulation;
422 ui32_t QuantizationBits;
423 optional_property<ui8_t> DialNorm;
424 UL SoundEssenceCoding;
426 GenericSoundEssenceDescriptor(const Dictionary*& d);
427 GenericSoundEssenceDescriptor(const GenericSoundEssenceDescriptor& rhs);
428 virtual ~GenericSoundEssenceDescriptor() {}
430 const GenericSoundEssenceDescriptor& operator=(const GenericSoundEssenceDescriptor& rhs) { Copy(rhs); return *this; }
431 virtual void Copy(const GenericSoundEssenceDescriptor& rhs);
432 virtual const char* HasName() { return "GenericSoundEssenceDescriptor"; }
433 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
434 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
435 virtual void Dump(FILE* = 0);
436 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
437 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
441 class WaveAudioDescriptor : public GenericSoundEssenceDescriptor
443 WaveAudioDescriptor();
446 const Dictionary*& m_Dict;
448 optional_property<ui8_t> SequenceOffset;
450 optional_property<UL> ChannelAssignment;
452 WaveAudioDescriptor(const Dictionary*& d);
453 WaveAudioDescriptor(const WaveAudioDescriptor& rhs);
454 virtual ~WaveAudioDescriptor() {}
456 const WaveAudioDescriptor& operator=(const WaveAudioDescriptor& rhs) { Copy(rhs); return *this; }
457 virtual void Copy(const WaveAudioDescriptor& rhs);
458 virtual const char* HasName() { return "WaveAudioDescriptor"; }
459 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
460 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
461 virtual void Dump(FILE* = 0);
462 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
463 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
467 class GenericPictureEssenceDescriptor : public FileDescriptor
469 GenericPictureEssenceDescriptor();
472 const Dictionary*& m_Dict;
473 optional_property<ui8_t> SignalStandard;
477 optional_property<ui32_t> StoredF2Offset;
478 optional_property<ui32_t> SampledWidth;
479 optional_property<ui32_t> SampledHeight;
480 optional_property<ui32_t> SampledXOffset;
481 optional_property<ui32_t> SampledYOffset;
482 optional_property<ui32_t> DisplayHeight;
483 optional_property<ui32_t> DisplayWidth;
484 optional_property<ui32_t> DisplayXOffset;
485 optional_property<ui32_t> DisplayYOffset;
486 optional_property<ui32_t> DisplayF2Offset;
487 Rational AspectRatio;
488 optional_property<ui8_t> ActiveFormatDescriptor;
489 optional_property<ui8_t> AlphaTransparency;
490 optional_property<UL> TransferCharacteristic;
491 optional_property<ui32_t> ImageAlignmentOffset;
492 optional_property<ui32_t> ImageStartOffset;
493 optional_property<ui32_t> ImageEndOffset;
494 optional_property<ui8_t> FieldDominance;
495 UL PictureEssenceCoding;
496 optional_property<UL> CodingEquations;
497 optional_property<UL> ColorPrimaries;
499 GenericPictureEssenceDescriptor(const Dictionary*& d);
500 GenericPictureEssenceDescriptor(const GenericPictureEssenceDescriptor& rhs);
501 virtual ~GenericPictureEssenceDescriptor() {}
503 const GenericPictureEssenceDescriptor& operator=(const GenericPictureEssenceDescriptor& rhs) { Copy(rhs); return *this; }
504 virtual void Copy(const GenericPictureEssenceDescriptor& rhs);
505 virtual const char* HasName() { return "GenericPictureEssenceDescriptor"; }
506 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
507 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
508 virtual void Dump(FILE* = 0);
509 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
510 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
514 class RGBAEssenceDescriptor : public GenericPictureEssenceDescriptor
516 RGBAEssenceDescriptor();
519 const Dictionary*& m_Dict;
520 optional_property<ui32_t> ComponentMaxRef;
521 optional_property<ui32_t> ComponentMinRef;
522 optional_property<ui32_t> AlphaMinRef;
523 optional_property<ui32_t> AlphaMaxRef;
524 optional_property<ui8_t> ScanningDirection;
526 RGBAEssenceDescriptor(const Dictionary*& d);
527 RGBAEssenceDescriptor(const RGBAEssenceDescriptor& rhs);
528 virtual ~RGBAEssenceDescriptor() {}
530 const RGBAEssenceDescriptor& operator=(const RGBAEssenceDescriptor& rhs) { Copy(rhs); return *this; }
531 virtual void Copy(const RGBAEssenceDescriptor& rhs);
532 virtual const char* HasName() { return "RGBAEssenceDescriptor"; }
533 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
534 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
535 virtual void Dump(FILE* = 0);
536 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
537 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
541 class JPEG2000PictureSubDescriptor : public InterchangeObject
543 JPEG2000PictureSubDescriptor();
546 const Dictionary*& m_Dict;
557 optional_property<Raw> PictureComponentSizing;
558 optional_property<Raw> CodingStyleDefault;
559 optional_property<Raw> QuantizationDefault;
561 JPEG2000PictureSubDescriptor(const Dictionary*& d);
562 JPEG2000PictureSubDescriptor(const JPEG2000PictureSubDescriptor& rhs);
563 virtual ~JPEG2000PictureSubDescriptor() {}
565 const JPEG2000PictureSubDescriptor& operator=(const JPEG2000PictureSubDescriptor& rhs) { Copy(rhs); return *this; }
566 virtual void Copy(const JPEG2000PictureSubDescriptor& rhs);
567 virtual const char* HasName() { return "JPEG2000PictureSubDescriptor"; }
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 CDCIEssenceDescriptor : public GenericPictureEssenceDescriptor
578 CDCIEssenceDescriptor();
581 const Dictionary*& m_Dict;
582 ui32_t ComponentDepth;
583 ui32_t HorizontalSubsampling;
584 optional_property<ui32_t> VerticalSubsampling;
585 optional_property<ui8_t> ColorSiting;
586 optional_property<ui8_t> ReversedByteOrder;
587 optional_property<ui16_t> PaddingBits;
588 optional_property<ui32_t> AlphaSampleDepth;
589 optional_property<ui32_t> BlackRefLevel;
590 optional_property<ui32_t> WhiteReflevel;
591 optional_property<ui32_t> ColorRange;
593 CDCIEssenceDescriptor(const Dictionary*& d);
594 CDCIEssenceDescriptor(const CDCIEssenceDescriptor& rhs);
595 virtual ~CDCIEssenceDescriptor() {}
597 const CDCIEssenceDescriptor& operator=(const CDCIEssenceDescriptor& rhs) { Copy(rhs); return *this; }
598 virtual void Copy(const CDCIEssenceDescriptor& rhs);
599 virtual const char* HasName() { return "CDCIEssenceDescriptor"; }
600 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
601 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
602 virtual void Dump(FILE* = 0);
603 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
604 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
608 class MPEG2VideoDescriptor : public CDCIEssenceDescriptor
610 MPEG2VideoDescriptor();
613 const Dictionary*& m_Dict;
614 optional_property<ui8_t> SingleSequence;
615 optional_property<ui8_t> ConstantBFrames;
616 optional_property<ui8_t> CodedContentType;
617 optional_property<ui8_t> LowDelay;
618 optional_property<ui8_t> ClosedGOP;
619 optional_property<ui8_t> IdenticalGOP;
620 optional_property<ui8_t> MaxGOP;
621 optional_property<ui8_t> BPictureCount;
622 optional_property<ui32_t> BitRate;
623 optional_property<ui8_t> ProfileAndLevel;
625 MPEG2VideoDescriptor(const Dictionary*& d);
626 MPEG2VideoDescriptor(const MPEG2VideoDescriptor& rhs);
627 virtual ~MPEG2VideoDescriptor() {}
629 const MPEG2VideoDescriptor& operator=(const MPEG2VideoDescriptor& rhs) { Copy(rhs); return *this; }
630 virtual void Copy(const MPEG2VideoDescriptor& rhs);
631 virtual const char* HasName() { return "MPEG2VideoDescriptor"; }
632 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
633 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
634 virtual void Dump(FILE* = 0);
635 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
636 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
640 class DMSegment : public InterchangeObject
645 const Dictionary*& m_Dict;
647 ui64_t EventStartPosition;
649 UTF16String EventComment;
652 DMSegment(const Dictionary*& d);
653 DMSegment(const DMSegment& rhs);
654 virtual ~DMSegment() {}
656 const DMSegment& operator=(const DMSegment& rhs) { Copy(rhs); return *this; }
657 virtual void Copy(const DMSegment& rhs);
658 virtual const char* HasName() { return "DMSegment"; }
659 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
660 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
661 virtual void Dump(FILE* = 0);
662 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
663 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
667 class CryptographicFramework : public InterchangeObject
669 CryptographicFramework();
672 const Dictionary*& m_Dict;
675 CryptographicFramework(const Dictionary*& d);
676 CryptographicFramework(const CryptographicFramework& rhs);
677 virtual ~CryptographicFramework() {}
679 const CryptographicFramework& operator=(const CryptographicFramework& rhs) { Copy(rhs); return *this; }
680 virtual void Copy(const CryptographicFramework& rhs);
681 virtual const char* HasName() { return "CryptographicFramework"; }
682 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
683 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
684 virtual void Dump(FILE* = 0);
685 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
686 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
690 class CryptographicContext : public InterchangeObject
692 CryptographicContext();
695 const Dictionary*& m_Dict;
697 UL SourceEssenceContainer;
700 UUID CryptographicKeyID;
702 CryptographicContext(const Dictionary*& d);
703 CryptographicContext(const CryptographicContext& rhs);
704 virtual ~CryptographicContext() {}
706 const CryptographicContext& operator=(const CryptographicContext& rhs) { Copy(rhs); return *this; }
707 virtual void Copy(const CryptographicContext& rhs);
708 virtual const char* HasName() { return "CryptographicContext"; }
709 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
710 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
711 virtual void Dump(FILE* = 0);
712 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
713 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
717 class GenericDataEssenceDescriptor : public FileDescriptor
719 GenericDataEssenceDescriptor();
722 const Dictionary*& m_Dict;
723 UL DataEssenceCoding;
725 GenericDataEssenceDescriptor(const Dictionary*& d);
726 GenericDataEssenceDescriptor(const GenericDataEssenceDescriptor& rhs);
727 virtual ~GenericDataEssenceDescriptor() {}
729 const GenericDataEssenceDescriptor& operator=(const GenericDataEssenceDescriptor& rhs) { Copy(rhs); return *this; }
730 virtual void Copy(const GenericDataEssenceDescriptor& rhs);
731 virtual const char* HasName() { return "GenericDataEssenceDescriptor"; }
732 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
733 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
734 virtual void Dump(FILE* = 0);
735 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
736 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
740 class TimedTextDescriptor : public GenericDataEssenceDescriptor
742 TimedTextDescriptor();
745 const Dictionary*& m_Dict;
747 UTF16String UCSEncoding;
748 UTF16String NamespaceURI;
750 TimedTextDescriptor(const Dictionary*& d);
751 TimedTextDescriptor(const TimedTextDescriptor& rhs);
752 virtual ~TimedTextDescriptor() {}
754 const TimedTextDescriptor& operator=(const TimedTextDescriptor& rhs) { Copy(rhs); return *this; }
755 virtual void Copy(const TimedTextDescriptor& rhs);
756 virtual const char* HasName() { return "TimedTextDescriptor"; }
757 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
758 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
759 virtual void Dump(FILE* = 0);
760 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
761 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
765 class TimedTextResourceSubDescriptor : public InterchangeObject
767 TimedTextResourceSubDescriptor();
770 const Dictionary*& m_Dict;
771 UUID AncillaryResourceID;
772 UTF16String MIMEMediaType;
773 ui32_t EssenceStreamID;
775 TimedTextResourceSubDescriptor(const Dictionary*& d);
776 TimedTextResourceSubDescriptor(const TimedTextResourceSubDescriptor& rhs);
777 virtual ~TimedTextResourceSubDescriptor() {}
779 const TimedTextResourceSubDescriptor& operator=(const TimedTextResourceSubDescriptor& rhs) { Copy(rhs); return *this; }
780 virtual void Copy(const TimedTextResourceSubDescriptor& rhs);
781 virtual const char* HasName() { return "TimedTextResourceSubDescriptor"; }
782 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
783 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
784 virtual void Dump(FILE* = 0);
785 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
786 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
790 class StereoscopicPictureSubDescriptor : public InterchangeObject
792 StereoscopicPictureSubDescriptor();
795 const Dictionary*& m_Dict;
797 StereoscopicPictureSubDescriptor(const Dictionary*& d);
798 StereoscopicPictureSubDescriptor(const StereoscopicPictureSubDescriptor& rhs);
799 virtual ~StereoscopicPictureSubDescriptor() {}
801 const StereoscopicPictureSubDescriptor& operator=(const StereoscopicPictureSubDescriptor& rhs) { Copy(rhs); return *this; }
802 virtual void Copy(const StereoscopicPictureSubDescriptor& rhs);
803 virtual const char* HasName() { return "StereoscopicPictureSubDescriptor"; }
804 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
805 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
806 virtual void Dump(FILE* = 0);
807 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
808 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
812 class NetworkLocator : public InterchangeObject
817 const Dictionary*& m_Dict;
818 UTF16String URLString;
820 NetworkLocator(const Dictionary*& d);
821 NetworkLocator(const NetworkLocator& rhs);
822 virtual ~NetworkLocator() {}
824 const NetworkLocator& operator=(const NetworkLocator& rhs) { Copy(rhs); return *this; }
825 virtual void Copy(const NetworkLocator& rhs);
826 virtual const char* HasName() { return "NetworkLocator"; }
827 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
828 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
829 virtual void Dump(FILE* = 0);
830 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
831 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
835 class MCALabelSubDescriptor : public InterchangeObject
837 MCALabelSubDescriptor();
840 const Dictionary*& m_Dict;
841 UL MCALabelDictionaryID;
843 UTF16String MCATagSymbol;
844 optional_property<UTF16String> MCATagName;
845 optional_property<ui32_t> MCAChannelID;
846 optional_property<ISO8String> RFC5646SpokenLanguage;
848 MCALabelSubDescriptor(const Dictionary*& d);
849 MCALabelSubDescriptor(const MCALabelSubDescriptor& rhs);
850 virtual ~MCALabelSubDescriptor() {}
852 const MCALabelSubDescriptor& operator=(const MCALabelSubDescriptor& rhs) { Copy(rhs); return *this; }
853 virtual void Copy(const MCALabelSubDescriptor& rhs);
854 virtual const char* HasName() { return "MCALabelSubDescriptor"; }
855 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
856 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
857 virtual void Dump(FILE* = 0);
858 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
859 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
863 class AudioChannelLabelSubDescriptor : public MCALabelSubDescriptor
865 AudioChannelLabelSubDescriptor();
868 const Dictionary*& m_Dict;
869 UUID SoundfieldGroupLinkID;
871 AudioChannelLabelSubDescriptor(const Dictionary*& d);
872 AudioChannelLabelSubDescriptor(const AudioChannelLabelSubDescriptor& rhs);
873 virtual ~AudioChannelLabelSubDescriptor() {}
875 const AudioChannelLabelSubDescriptor& operator=(const AudioChannelLabelSubDescriptor& rhs) { Copy(rhs); return *this; }
876 virtual void Copy(const AudioChannelLabelSubDescriptor& rhs);
877 virtual const char* HasName() { return "AudioChannelLabelSubDescriptor"; }
878 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
879 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
880 virtual void Dump(FILE* = 0);
881 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
882 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
886 class SoundfieldGroupLabelSubDescriptor : public MCALabelSubDescriptor
888 SoundfieldGroupLabelSubDescriptor();
891 const Dictionary*& m_Dict;
892 Array<UUID> GroupOfSoundfieldGroupsLinkID;
894 SoundfieldGroupLabelSubDescriptor(const Dictionary*& d);
895 SoundfieldGroupLabelSubDescriptor(const SoundfieldGroupLabelSubDescriptor& rhs);
896 virtual ~SoundfieldGroupLabelSubDescriptor() {}
898 const SoundfieldGroupLabelSubDescriptor& operator=(const SoundfieldGroupLabelSubDescriptor& rhs) { Copy(rhs); return *this; }
899 virtual void Copy(const SoundfieldGroupLabelSubDescriptor& rhs);
900 virtual const char* HasName() { return "SoundfieldGroupLabelSubDescriptor"; }
901 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
902 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
903 virtual void Dump(FILE* = 0);
904 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
905 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
909 class GroupOfSoundfieldGroupsLabelSubDescriptor : public MCALabelSubDescriptor
911 GroupOfSoundfieldGroupsLabelSubDescriptor();
914 const Dictionary*& m_Dict;
916 GroupOfSoundfieldGroupsLabelSubDescriptor(const Dictionary*& d);
917 GroupOfSoundfieldGroupsLabelSubDescriptor(const GroupOfSoundfieldGroupsLabelSubDescriptor& rhs);
918 virtual ~GroupOfSoundfieldGroupsLabelSubDescriptor() {}
920 const GroupOfSoundfieldGroupsLabelSubDescriptor& operator=(const GroupOfSoundfieldGroupsLabelSubDescriptor& rhs) { Copy(rhs); return *this; }
921 virtual void Copy(const GroupOfSoundfieldGroupsLabelSubDescriptor& rhs);
922 virtual const char* HasName() { return "GroupOfSoundfieldGroupsLabelSubDescriptor"; }
923 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
924 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
925 virtual void Dump(FILE* = 0);
926 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
927 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
931 class DCDataDescriptor : public GenericDataEssenceDescriptor
936 const Dictionary*& m_Dict;
938 DCDataDescriptor(const Dictionary*& d);
939 DCDataDescriptor(const DCDataDescriptor& rhs);
940 virtual ~DCDataDescriptor() {}
942 const DCDataDescriptor& operator=(const DCDataDescriptor& rhs) { Copy(rhs); return *this; }
943 virtual void Copy(const DCDataDescriptor& rhs);
944 virtual const char* HasName() { return "DCDataDescriptor"; }
945 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
946 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
947 virtual void Dump(FILE* = 0);
948 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
949 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
953 class DolbyAtmosSubDescriptor : public InterchangeObject
955 DolbyAtmosSubDescriptor();
958 const Dictionary*& m_Dict;
961 ui16_t MaxChannelCount;
962 ui16_t MaxObjectCount;
965 DolbyAtmosSubDescriptor(const Dictionary*& d);
966 DolbyAtmosSubDescriptor(const DolbyAtmosSubDescriptor& rhs);
967 virtual ~DolbyAtmosSubDescriptor() {}
969 const DolbyAtmosSubDescriptor& operator=(const DolbyAtmosSubDescriptor& rhs) { Copy(rhs); return *this; }
970 virtual void Copy(const DolbyAtmosSubDescriptor& rhs);
971 virtual const char* HasName() { return "DolbyAtmosSubDescriptor"; }
972 virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
973 virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
974 virtual void Dump(FILE* = 0);
975 virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
976 virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
983 #endif // _Metadata_H_