diff options
| author | jhurst <jhurst@cinecert.com> | 2021-04-13 15:50:50 -0700 |
|---|---|---|
| committer | jhurst <jhurst@cinecert.com> | 2021-04-13 15:50:50 -0700 |
| commit | b14d706a72c706c9c59dbdf64a9e41f32465e060 (patch) | |
| tree | 642c62a644544afb531a8fdbfd4e610bb72728ed /src | |
| parent | 4e0891ab9ee94b822043126ea07e97641015e9b7 (diff) | |
o Added a Clone() method to InterchangeObject and derivatives
that allows making a descriptor copy that is not owned by
any other strucure. The caller must arrange to delete the
object pointer returned.
o While implementing the above it became obvious that the
reference-to-a-pointer-to-the-dictionary idiom that is used
throughout the lower levels of the MXF library was the
cause of much more grief than it was originally designed to
prevent. This was made even more obvious when I replaced all
of it with simple pointers, which revealed several shadow
instances of m_Dict that were only reliable while the object
that held them was valid.
Diffstat (limited to 'src')
| -rw-r--r-- | src/AS_02.h | 3 | ||||
| -rw-r--r-- | src/AS_02_ACES.cpp | 10 | ||||
| -rw-r--r-- | src/AS_02_IAB.cpp | 6 | ||||
| -rw-r--r-- | src/AS_02_ISXD.cpp | 10 | ||||
| -rw-r--r-- | src/AS_02_JP2K.cpp | 10 | ||||
| -rw-r--r-- | src/AS_02_PCM.cpp | 10 | ||||
| -rw-r--r-- | src/AS_02_PHDR.cpp | 10 | ||||
| -rw-r--r-- | src/AS_02_TimedText.cpp | 10 | ||||
| -rw-r--r-- | src/AS_02_internal.h | 20 | ||||
| -rw-r--r-- | src/AS_DCP_ATMOS.cpp | 10 | ||||
| -rw-r--r-- | src/AS_DCP_DCData.cpp | 10 | ||||
| -rw-r--r-- | src/AS_DCP_DCData_internal.h | 6 | ||||
| -rwxr-xr-x | src/AS_DCP_JP2K.cpp | 26 | ||||
| -rwxr-xr-x | src/AS_DCP_MPEG2.cpp | 12 | ||||
| -rwxr-xr-x | src/AS_DCP_PCM.cpp | 12 | ||||
| -rw-r--r-- | src/AS_DCP_TimedText.cpp | 10 | ||||
| -rwxr-xr-x | src/AS_DCP_internal.h | 26 | ||||
| -rwxr-xr-x | src/Index.cpp | 20 | ||||
| -rwxr-xr-x | src/MXF.cpp | 58 | ||||
| -rwxr-xr-x | src/MXF.h | 54 | ||||
| -rw-r--r--[-rwxr-xr-x] | src/Metadata.cpp | 652 | ||||
| -rw-r--r--[-rwxr-xr-x] | src/Metadata.h | 204 | ||||
| -rw-r--r-- | src/h__02_Reader.cpp | 13 | ||||
| -rw-r--r-- | src/h__02_Writer.cpp | 10 | ||||
| -rwxr-xr-x | src/h__Reader.cpp | 3 | ||||
| -rwxr-xr-x | src/h__Writer.cpp | 10 |
26 files changed, 814 insertions, 411 deletions
diff --git a/src/AS_02.h b/src/AS_02.h index 61a2c1e..ab58f31 100644 --- a/src/AS_02.h +++ b/src/AS_02.h @@ -82,10 +82,9 @@ namespace AS_02 AS02IndexReader(); public: - const ASDCP::Dictionary*& m_Dict; ASDCP::IPrimerLookup *m_Lookup; - AS02IndexReader(const ASDCP::Dictionary*&); + AS02IndexReader(const ASDCP::Dictionary*); virtual ~AS02IndexReader(); Result_t InitFromFile(const Kumu::FileReader& reader, const ASDCP::MXF::RIP& rip, const bool has_header_essence); diff --git a/src/AS_02_ACES.cpp b/src/AS_02_ACES.cpp index c8eeca3..0d3105a 100644 --- a/src/AS_02_ACES.cpp +++ b/src/AS_02_ACES.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2018, Bjoern Stresing, Patrick Bichiou, Wolfgang Ruppel, +Copyright (c) 2018-2021, Bjoern Stresing, Patrick Bichiou, Wolfgang Ruppel, John Hurst All rights reserved. @@ -290,7 +290,7 @@ class AS_02::ACES::MXFReader::h__Reader : public AS_02::h__AS02Reader ASDCP::MXF::RGBAEssenceDescriptor *m_EssenceDescriptor; public: - h__Reader(const Dictionary& d) : + h__Reader(const Dictionary *d) : AS_02::h__AS02Reader(d), m_EssenceDescriptor(NULL) {} AS_02::ACES::ResourceList_t m_Anc_Resources; @@ -501,7 +501,7 @@ public: byte_t m_EssenceUL[SMPTE_UL_LENGTH]; ui32_t m_EssenceStreamID; - h__Writer(const Dictionary& d) : h__AS02WriterFrame(d), m_EssenceStreamID(10) + h__Writer(const Dictionary *d) : h__AS02WriterFrame(d), m_EssenceStreamID(10) { memset(m_EssenceUL, 0, SMPTE_UL_LENGTH); @@ -747,7 +747,7 @@ AS_02::Result_t AS_02::ACES::MXFWriter::OpenWrite(const std::string &filename, c return RESULT_PARAM; } - m_Writer = new AS_02::ACES::MXFWriter::h__Writer(DefaultSMPTEDict()); + m_Writer = new AS_02::ACES::MXFWriter::h__Writer(&DefaultSMPTEDict()); m_Writer->m_Info = Info; Result_t result = m_Writer->OpenWrite(filename, essence_descriptor, essence_sub_descriptor_list, strategy, partition_space, header_size); @@ -785,7 +785,7 @@ AS_02::Result_t AS_02::ACES::MXFWriter::WriteAncillaryResource(const AS_02::ACES AS_02::ACES::MXFReader::MXFReader() { - m_Reader = new h__Reader(DefaultCompositeDict()); + m_Reader = new h__Reader(&DefaultCompositeDict()); } AS_02::ACES::MXFReader::~MXFReader() diff --git a/src/AS_02_IAB.cpp b/src/AS_02_IAB.cpp index e7c1fc6..aa551d9 100644 --- a/src/AS_02_IAB.cpp +++ b/src/AS_02_IAB.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2011-2020, Robert Scheler, Heiko Sparenberg Fraunhofer IIS, +Copyright (c) 2011-2021, Robert Scheler, Heiko Sparenberg Fraunhofer IIS, John Hurst, Pierre-Anthony Lemieux All rights reserved. @@ -96,7 +96,7 @@ AS_02::IAB::MXFWriter::OpenWrite( /* initialize the writer */ - this->m_Writer = new AS_02::IAB::MXFWriter::h__Writer(DefaultSMPTEDict()); + this->m_Writer = new AS_02::IAB::MXFWriter::h__Writer(&DefaultSMPTEDict()); this->m_Writer->m_Info = Info; @@ -372,7 +372,7 @@ AS_02::IAB::MXFReader::OpenRead(const std::string& filename) { /* initialize the writer */ - this->m_Reader = new h__Reader(DefaultCompositeDict()); + this->m_Reader = new h__Reader(&DefaultCompositeDict()); try { diff --git a/src/AS_02_ISXD.cpp b/src/AS_02_ISXD.cpp index a374664..f7165a3 100644 --- a/src/AS_02_ISXD.cpp +++ b/src/AS_02_ISXD.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2018, John Hurst +Copyright (c) 2018-2021, John Hurst All rights reserved. @@ -54,7 +54,7 @@ class AS_02::ISXD::MXFReader::h__Reader : public AS_02::h__AS02Reader ASDCP_NO_COPY_CONSTRUCT(h__Reader); public: - h__Reader(const Dictionary& d) : + h__Reader(const Dictionary *d) : AS_02::h__AS02Reader(d) {} virtual ~h__Reader() {} @@ -115,7 +115,7 @@ AS_02::ISXD::MXFReader::h__Reader::ReadFrame(ui32_t FrameNum, ASDCP::FrameBuffer AS_02::ISXD::MXFReader::MXFReader() { - m_Reader = new h__Reader(DefaultCompositeDict()); + m_Reader = new h__Reader(&DefaultCompositeDict()); } @@ -262,7 +262,7 @@ public: byte_t m_EssenceUL[SMPTE_UL_LENGTH]; ISXDDataEssenceDescriptor *m_DataEssenceDescriptor; - h__Writer(const Dictionary& d) : h__AS02WriterFrame(d) { + h__Writer(const Dictionary *d) : h__AS02WriterFrame(d) { memset(m_EssenceUL, 0, SMPTE_UL_LENGTH); } @@ -451,7 +451,7 @@ AS_02::ISXD::MXFWriter::OpenWrite(const std::string& filename, const ASDCP::Writ const ASDCP::Rational& edit_rate, const ui32_t& header_size, const IndexStrategy_t& strategy, const ui32_t& partition_space) { - m_Writer = new AS_02::ISXD::MXFWriter::h__Writer(DefaultSMPTEDict()); + m_Writer = new AS_02::ISXD::MXFWriter::h__Writer(&DefaultSMPTEDict()); m_Writer->m_Info = Info; Result_t result = m_Writer->OpenWrite(filename, Info, isxd_document_namespace, edit_rate, diff --git a/src/AS_02_JP2K.cpp b/src/AS_02_JP2K.cpp index ac951e4..4817f21 100644 --- a/src/AS_02_JP2K.cpp +++ b/src/AS_02_JP2K.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2011-2018, Robert Scheler, Heiko Sparenberg Fraunhofer IIS, +Copyright (c) 2011-2021, Robert Scheler, Heiko Sparenberg Fraunhofer IIS, John Hurst All rights reserved. @@ -55,7 +55,7 @@ class AS_02::JP2K::MXFReader::h__Reader : public AS_02::h__AS02Reader ASDCP_NO_COPY_CONSTRUCT(h__Reader); public: - h__Reader(const Dictionary& d) : + h__Reader(const Dictionary *d) : AS_02::h__AS02Reader(d) {} virtual ~h__Reader() {} @@ -124,7 +124,7 @@ AS_02::JP2K::MXFReader::h__Reader::ReadFrame(ui32_t FrameNum, ASDCP::JP2K::Frame AS_02::JP2K::MXFReader::MXFReader() { - m_Reader = new h__Reader(DefaultCompositeDict()); + m_Reader = new h__Reader(&DefaultCompositeDict()); } @@ -257,7 +257,7 @@ class AS_02::JP2K::MXFWriter::h__Writer : public AS_02::h__AS02WriterFrame public: byte_t m_EssenceUL[SMPTE_UL_LENGTH]; - h__Writer(const Dictionary& d) : h__AS02WriterFrame(d), m_EssenceSubDescriptor(0) { + h__Writer(const Dictionary *d) : h__AS02WriterFrame(d), m_EssenceSubDescriptor(0) { memset(m_EssenceUL, 0, SMPTE_UL_LENGTH); } @@ -485,7 +485,7 @@ AS_02::JP2K::MXFWriter::OpenWrite(const std::string& filename, const ASDCP::Writ return RESULT_PARAM; } - m_Writer = new AS_02::JP2K::MXFWriter::h__Writer(DefaultSMPTEDict()); + m_Writer = new AS_02::JP2K::MXFWriter::h__Writer(&DefaultSMPTEDict()); m_Writer->m_Info = Info; Result_t result = m_Writer->OpenWrite(filename, essence_descriptor, essence_sub_descriptor_list, diff --git a/src/AS_02_PCM.cpp b/src/AS_02_PCM.cpp index 4287a5e..fd00198 100644 --- a/src/AS_02_PCM.cpp +++ b/src/AS_02_PCM.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2011-2015, Robert Scheler, Heiko Sparenberg Fraunhofer IIS, +Copyright (c) 2011-2021, Robert Scheler, Heiko Sparenberg Fraunhofer IIS, John Hurst All rights reserved. @@ -56,7 +56,7 @@ class AS_02::PCM::MXFReader::h__Reader : public AS_02::h__AS02Reader h__Reader(); public: - h__Reader(const Dictionary& d) : AS_02::h__AS02Reader(d), m_ClipEssenceBegin(0), m_ClipSize(0), + h__Reader(const Dictionary *d) : AS_02::h__AS02Reader(d), m_ClipEssenceBegin(0), m_ClipSize(0), m_ClipDurationFrames(0) {} virtual ~h__Reader() {} @@ -200,7 +200,7 @@ AS_02::PCM::MXFReader::h__Reader::ReadFrame(ui32_t FrameNum, ASDCP::PCM::FrameBu AS_02::PCM::MXFReader::MXFReader() { - m_Reader = new h__Reader(DefaultCompositeDict()); + m_Reader = new h__Reader(&DefaultCompositeDict()); } AS_02::PCM::MXFReader::~MXFReader() @@ -336,7 +336,7 @@ public: byte_t m_EssenceUL[SMPTE_UL_LENGTH]; ui32_t m_BytesPerSample; - h__Writer(const Dictionary& d) : AS_02::h__AS02WriterClip(d), m_WaveAudioDescriptor(0), m_BytesPerSample(0) + h__Writer(const Dictionary *d) : AS_02::h__AS02WriterClip(d), m_WaveAudioDescriptor(0), m_BytesPerSample(0) { memset(m_EssenceUL, 0, SMPTE_UL_LENGTH); } @@ -558,7 +558,7 @@ AS_02::PCM::MXFWriter::OpenWrite(const std::string& filename, const WriterInfo& return Kumu::RESULT_NOTIMPL; } - m_Writer = new h__Writer(DefaultSMPTEDict()); + m_Writer = new h__Writer(&DefaultSMPTEDict()); m_Writer->m_Info = Info; Result_t result = m_Writer->OpenWrite(filename, essence_descriptor, essence_sub_descriptor_list, header_size); diff --git a/src/AS_02_PHDR.cpp b/src/AS_02_PHDR.cpp index 471d226..d08c823 100644 --- a/src/AS_02_PHDR.cpp +++ b/src/AS_02_PHDR.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2011-2018, John Hurst +Copyright (c) 2011-2021, John Hurst All rights reserved. @@ -76,7 +76,7 @@ class AS_02::PHDR::MXFReader::h__Reader : public AS_02::h__AS02Reader ASDCP_NO_COPY_CONSTRUCT(h__Reader); public: - h__Reader(const Dictionary& d) : + h__Reader(const Dictionary *d) : AS_02::h__AS02Reader(d) {} virtual ~h__Reader() {} @@ -235,7 +235,7 @@ AS_02::PHDR::MXFReader::h__Reader::ReadFrame(ui32_t FrameNum, AS_02::PHDR::Frame AS_02::PHDR::MXFReader::MXFReader() { - m_Reader = new h__Reader(DefaultCompositeDict()); + m_Reader = new h__Reader(&DefaultCompositeDict()); } @@ -355,7 +355,7 @@ public: byte_t m_EssenceUL[SMPTE_UL_LENGTH]; byte_t m_MetadataUL[SMPTE_UL_LENGTH]; - h__Writer(const Dictionary& d) : h__AS02WriterFrame(d), m_EssenceSubDescriptor(0), m_MetadataTrackSubDescriptor(0) { + h__Writer(const Dictionary *d) : h__AS02WriterFrame(d), m_EssenceSubDescriptor(0), m_MetadataTrackSubDescriptor(0) { memset(m_EssenceUL, 0, SMPTE_UL_LENGTH); memset(m_MetadataUL, 0, SMPTE_UL_LENGTH); } @@ -735,7 +735,7 @@ AS_02::PHDR::MXFWriter::OpenWrite(const std::string& filename, const ASDCP::Writ return RESULT_PARAM; } - m_Writer = new AS_02::PHDR::MXFWriter::h__Writer(DefaultSMPTEDict()); + m_Writer = new AS_02::PHDR::MXFWriter::h__Writer(&DefaultSMPTEDict()); m_Writer->m_Info = Info; Result_t result = m_Writer->OpenWrite(filename, essence_descriptor, essence_sub_descriptor_list, diff --git a/src/AS_02_TimedText.cpp b/src/AS_02_TimedText.cpp index 7477ae9..aa593a1 100644 --- a/src/AS_02_TimedText.cpp +++ b/src/AS_02_TimedText.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2008-2018, John Hurst +Copyright (c) 2008-2021, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -69,7 +69,7 @@ class AS_02::TimedText::MXFReader::h__Reader : public AS_02::h__AS02Reader public: TimedTextDescriptor m_TDesc; - h__Reader(const Dictionary& d) : AS_02::h__AS02Reader(d), m_EssenceDescriptor(0) { + h__Reader(const Dictionary *d) : AS_02::h__AS02Reader(d), m_EssenceDescriptor(0) { memset(&m_TDesc.AssetID, 0, UUIDlen); } @@ -225,7 +225,7 @@ AS_02::TimedText::MXFReader::h__Reader::ReadAncillaryResource(const Kumu::UUID& AS_02::TimedText::MXFReader::MXFReader() { - m_Reader = new h__Reader(DefaultSMPTEDict()); + m_Reader = new h__Reader(&DefaultSMPTEDict()); } @@ -397,7 +397,7 @@ public: ui32_t m_EssenceStreamID; ASDCP::Rational m_EditRate; - h__Writer(const Dictionary& d) : AS_02::h__AS02WriterClip(d), m_EssenceStreamID(10) + h__Writer(const Dictionary *d) : AS_02::h__AS02WriterClip(d), m_EssenceStreamID(10) { memset(m_EssenceUL, 0, SMPTE_UL_LENGTH); } @@ -705,7 +705,7 @@ AS_02::TimedText::MXFWriter::OpenWrite(const std::string& filename, const Writer return RESULT_FORMAT; } - m_Writer = new h__Writer(DefaultSMPTEDict()); + m_Writer = new h__Writer(&DefaultSMPTEDict()); m_Writer->m_Info = Info; Result_t result = m_Writer->OpenWrite(filename, HeaderSize); diff --git a/src/AS_02_internal.h b/src/AS_02_internal.h index b5d8282..c998003 100644 --- a/src/AS_02_internal.h +++ b/src/AS_02_internal.h @@ -1,5 +1,5 @@ /* -Copyright (c) 2011-2018, Robert Scheler, Heiko Sparenberg Fraunhofer IIS, +Copyright (c) 2011-2021, Robert Scheler, Heiko Sparenberg Fraunhofer IIS, John Hurst All rights reserved. @@ -60,7 +60,7 @@ namespace AS_02 h__AS02Reader(); public: - h__AS02Reader(const ASDCP::Dictionary&); + h__AS02Reader(const ASDCP::Dictionary*); virtual ~h__AS02Reader(); Result_t OpenMXFRead(const std::string& filename); @@ -90,10 +90,10 @@ namespace AS_02 AS02IndexWriterVBR(); public: - const ASDCP::Dictionary*& m_Dict; + const ASDCP::Dictionary* m_Dict; ASDCP::IPrimerLookup* m_Lookup; - AS02IndexWriterVBR(const ASDCP::Dictionary*&); + AS02IndexWriterVBR(const ASDCP::Dictionary*); virtual ~AS02IndexWriterVBR(); // @@ -121,12 +121,12 @@ namespace AS_02 AS02IndexWriterCBR(); public: - const ASDCP::Dictionary*& m_Dict; + const ASDCP::Dictionary* m_Dict; ASDCP::IPrimerLookup* m_Lookup; ui32_t m_Duration; ui32_t m_SampleSize; - AS02IndexWriterCBR(const ASDCP::Dictionary*&); + AS02IndexWriterCBR(const ASDCP::Dictionary*); virtual ~AS02IndexWriterCBR(); // @@ -154,8 +154,8 @@ namespace AS_02 ui64_t m_ECStart; // offset of the first essence element // - h__AS02Writer(const ASDCP::Dictionary& d) : - ASDCP::MXF::TrackFileWriter<ASDCP::MXF::OP1aHeader>(d), m_IndexWriter(m_Dict), m_ECStart(0) {} + h__AS02Writer(const ASDCP::Dictionary *d) : + ASDCP::MXF::TrackFileWriter<ASDCP::MXF::OP1aHeader>(d), m_IndexWriter(d), m_ECStart(0) {} ~h__AS02Writer() {} @@ -305,7 +305,7 @@ namespace AS_02 public: IndexStrategy_t m_IndexStrategy; // per SMPTE ST 2067-5 - h__AS02WriterFrame(const Dictionary&); + h__AS02WriterFrame(const Dictionary*); virtual ~h__AS02WriterFrame(); Result_t WriteEKLVPacket(const ASDCP::FrameBuffer& FrameBuf,const byte_t* EssenceUL, @@ -324,7 +324,7 @@ namespace AS_02 ui64_t m_ClipStart; // state variable for clip-wrap-in-progress IndexStrategy_t m_IndexStrategy; // per SMPTE ST 2067-5 - h__AS02WriterClip(const Dictionary&); + h__AS02WriterClip(const Dictionary*); virtual ~h__AS02WriterClip(); bool HasOpenClip() const; diff --git a/src/AS_DCP_ATMOS.cpp b/src/AS_DCP_ATMOS.cpp index cdba985..d476e20 100644 --- a/src/AS_DCP_ATMOS.cpp +++ b/src/AS_DCP_ATMOS.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2004-2016, John Hurst +Copyright (c) 2004-2021, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -117,7 +117,7 @@ class ASDCP::ATMOS::MXFReader::h__Reader : public ASDCP::h__ASDCPReader ASDCP::DCData::DCDataDescriptor m_DDesc; AtmosDescriptor m_ADesc; - h__Reader(const Dictionary& d) : + h__Reader(const Dictionary *d) : ASDCP::h__ASDCPReader(d), m_EssenceDescriptor(0), m_EssenceSubDescriptor(0) {} virtual ~h__Reader() {} Result_t OpenRead(const std::string&); @@ -251,7 +251,7 @@ ASDCP::ATMOS::MXFReader::h__Reader::ReadFrame(ui32_t FrameNum, FrameBuffer& Fram ASDCP::ATMOS::MXFReader::MXFReader() { - m_Reader = new h__Reader(AtmosSMPTEDict()); + m_Reader = new h__Reader(&AtmosSMPTEDict()); } @@ -406,7 +406,7 @@ class ASDCP::ATMOS::MXFWriter::h__Writer : public ASDCP::h__ASDCPWriter public: AtmosDescriptor m_ADesc; - h__Writer(const Dictionary& d) : ASDCP::h__ASDCPWriter(d), + h__Writer(const Dictionary *d) : ASDCP::h__ASDCPWriter(d), m_EssenceSubDescriptor(0), m_ADesc() { memset(m_EssenceUL, 0, SMPTE_UL_LENGTH); } @@ -650,7 +650,7 @@ ASDCP::ATMOS::MXFWriter::OpenWrite(const std::string& filename, const WriterInfo return RESULT_FORMAT; } - m_Writer = new h__Writer(AtmosSMPTEDict()); + m_Writer = new h__Writer(&AtmosSMPTEDict()); m_Writer->m_Info = Info; Result_t result = m_Writer->OpenWrite(filename, HeaderSize, ADesc); diff --git a/src/AS_DCP_DCData.cpp b/src/AS_DCP_DCData.cpp index b957d6c..fee3ff8 100644 --- a/src/AS_DCP_DCData.cpp +++ b/src/AS_DCP_DCData.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2004-2018, John Hurst +Copyright (c) 2004-2021, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -85,7 +85,7 @@ class ASDCP::DCData::MXFReader::h__Reader : public ASDCP::h__ASDCPReader public: DCDataDescriptor m_DDesc; - h__Reader(const Dictionary& d) : ASDCP::h__ASDCPReader(d), m_PrivateLabelCompatibilityMode(false), m_DDesc() {} + h__Reader(const Dictionary *d) : ASDCP::h__ASDCPReader(d), m_PrivateLabelCompatibilityMode(false), m_DDesc() {} ~h__Reader() {} Result_t OpenRead(const std::string&); Result_t ReadFrame(ui32_t, FrameBuffer&, AESDecContext*, HMACContext*); @@ -226,7 +226,7 @@ ASDCP::DCData::FrameBuffer::Dump(FILE* stream, ui32_t dump_len) const ASDCP::DCData::MXFReader::MXFReader() { - m_Reader = new h__Reader(DefaultSMPTEDict()); + m_Reader = new h__Reader(&DefaultSMPTEDict()); } @@ -379,7 +379,7 @@ public: DCDataDescriptor m_DDesc; byte_t m_EssenceUL[SMPTE_UL_LENGTH]; - h__Writer(const Dictionary& d) : ASDCP::h__ASDCPWriter(d) { + h__Writer(const Dictionary *d) : ASDCP::h__ASDCPWriter(d) { memset(m_EssenceUL, 0, SMPTE_UL_LENGTH); } @@ -595,7 +595,7 @@ ASDCP::DCData::MXFWriter::OpenWrite(const std::string& filename, const WriterInf return RESULT_FORMAT; } - m_Writer = new h__Writer(DefaultSMPTEDict()); + m_Writer = new h__Writer(&DefaultSMPTEDict()); m_Writer->m_Info = Info; Result_t result = m_Writer->OpenWrite(filename, HeaderSize, SubDescriptorList_t()); diff --git a/src/AS_DCP_DCData_internal.h b/src/AS_DCP_DCData_internal.h index a9e510d..b3f95f6 100644 --- a/src/AS_DCP_DCData_internal.h +++ b/src/AS_DCP_DCData_internal.h @@ -1,5 +1,5 @@ /* -Copyright (c) 2004-2013, John Hurst +Copyright (c) 2004-2021, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -57,7 +57,7 @@ namespace DCData public: DCDataDescriptor m_DDesc; - h__Reader(const Dictionary& d) : ASDCP::h__ASDCPReader(d), m_EssenceDescriptor(0), + h__Reader(const Dictionary *d) : ASDCP::h__ASDCPReader(d), m_EssenceDescriptor(0), m_DDesc() {} ~h__Reader() {} Result_t OpenRead(const std::string&); @@ -74,7 +74,7 @@ namespace DCData DCDataDescriptor m_DDesc; byte_t m_EssenceUL[SMPTE_UL_LENGTH]; - h__Writer(const Dictionary& d) : ASDCP::h__ASDCPWriter(d) { + h__Writer(const Dictionary *d) : ASDCP::h__ASDCPWriter(d) { memset(m_EssenceUL, 0, SMPTE_UL_LENGTH); } diff --git a/src/AS_DCP_JP2K.cpp b/src/AS_DCP_JP2K.cpp index 6ad9eef..a8e7e46 100755 --- a/src/AS_DCP_JP2K.cpp +++ b/src/AS_DCP_JP2K.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2004-2016, John Hurst +Copyright (c) 2004-2021, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -527,7 +527,7 @@ class lh__Reader : public ASDCP::h__ASDCPReader public: PictureDescriptor m_PDesc; // codestream parameter list - lh__Reader(const Dictionary& d) : + lh__Reader(const Dictionary *d) : ASDCP::h__ASDCPReader(d), m_EssenceDescriptor(0), m_EssenceSubDescriptor(0), m_Format(ESS_UNKNOWN) {} virtual ~lh__Reader() {} @@ -716,7 +716,7 @@ class ASDCP::JP2K::MXFReader::h__Reader : public lh__Reader h__Reader(); public: - h__Reader(const Dictionary& d) : lh__Reader(d) {} + h__Reader(const Dictionary *d) : lh__Reader(d) {} }; @@ -744,7 +744,7 @@ ASDCP::JP2K::FrameBuffer::Dump(FILE* stream, ui32_t dump_len) const ASDCP::JP2K::MXFReader::MXFReader() { - m_Reader = new h__Reader(DefaultCompositeDict()); + m_Reader = new h__Reader(&DefaultCompositeDict()); } @@ -893,7 +893,7 @@ class ASDCP::JP2K::MXFSReader::h__SReader : public lh__Reader ui32_t m_StereoFrameReady; public: - h__SReader(const Dictionary& d) : lh__Reader(d), m_StereoFrameReady(0xffffffff) {} + h__SReader(const Dictionary *d) : lh__Reader(d), m_StereoFrameReady(0xffffffff) {} // Result_t ReadFrame(ui32_t FrameNum, StereoscopicPhase_t phase, FrameBuffer& FrameBuf, @@ -970,7 +970,7 @@ public: ASDCP::JP2K::MXFSReader::MXFSReader() { - m_Reader = new h__SReader(DefaultCompositeDict()); + m_Reader = new h__SReader(&DefaultCompositeDict()); } @@ -1142,7 +1142,7 @@ public: PictureDescriptor m_PDesc; byte_t m_EssenceUL[SMPTE_UL_LENGTH]; - lh__Writer(const Dictionary& d) : ASDCP::h__ASDCPWriter(d), m_EssenceSubDescriptor(0) { + lh__Writer(const Dictionary *d) : ASDCP::h__ASDCPWriter(d), m_EssenceSubDescriptor(0) { memset(m_EssenceUL, 0, SMPTE_UL_LENGTH); } @@ -1292,7 +1292,7 @@ class ASDCP::JP2K::MXFWriter::h__Writer : public lh__Writer h__Writer(); public: - h__Writer(const Dictionary& d) : lh__Writer(d) {} + h__Writer(const Dictionary *d) : lh__Writer(d) {} }; @@ -1360,9 +1360,9 @@ ASDCP::JP2K::MXFWriter::OpenWrite(const std::string& filename, const WriterInfo& const PictureDescriptor& PDesc, ui32_t HeaderSize) { if ( Info.LabelSetType == LS_MXF_SMPTE ) - m_Writer = new h__Writer(DefaultSMPTEDict()); + m_Writer = new h__Writer(&DefaultSMPTEDict()); else - m_Writer = new h__Writer(DefaultInteropDict()); + m_Writer = new h__Writer(&DefaultInteropDict()); m_Writer->m_Info = Info; @@ -1413,7 +1413,7 @@ class ASDCP::JP2K::MXFSWriter::h__SWriter : public lh__Writer StereoscopicPhase_t m_NextPhase; public: - h__SWriter(const Dictionary& d) : lh__Writer(d), m_NextPhase(SP_LEFT) {} + h__SWriter(const Dictionary *d) : lh__Writer(d), m_NextPhase(SP_LEFT) {} // Result_t WriteFrame(const FrameBuffer& FrameBuf, StereoscopicPhase_t phase, @@ -1506,9 +1506,9 @@ ASDCP::JP2K::MXFSWriter::OpenWrite(const std::string& filename, const WriterInfo const PictureDescriptor& PDesc, ui32_t HeaderSize) { if ( Info.LabelSetType == LS_MXF_SMPTE ) - m_Writer = new h__SWriter(DefaultSMPTEDict()); + m_Writer = new h__SWriter(&DefaultSMPTEDict()); else - m_Writer = new h__SWriter(DefaultInteropDict()); + m_Writer = new h__SWriter(&DefaultInteropDict()); if ( PDesc.EditRate != ASDCP::EditRate_24 && PDesc.EditRate != ASDCP::EditRate_25 diff --git a/src/AS_DCP_MPEG2.cpp b/src/AS_DCP_MPEG2.cpp index b7e6252..b47b2dc 100755 --- a/src/AS_DCP_MPEG2.cpp +++ b/src/AS_DCP_MPEG2.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2004-2013, John Hurst +Copyright (c) 2004-2021, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -185,7 +185,7 @@ class ASDCP::MPEG2::MXFReader::h__Reader : public ASDCP::h__ASDCPReader public: VideoDescriptor m_VDesc; // video parameter list - h__Reader(const Dictionary& d) : ASDCP::h__ASDCPReader(d) {} + h__Reader(const Dictionary *d) : ASDCP::h__ASDCPReader(d) {} virtual ~h__Reader() {} Result_t OpenRead(const std::string&); Result_t ReadFrame(ui32_t, FrameBuffer&, AESDecContext*, HMACContext*); @@ -342,7 +342,7 @@ ASDCP::MPEG2::FrameBuffer::Dump(FILE* stream, ui32_t dump_len) const ASDCP::MPEG2::MXFReader::MXFReader() { - m_Reader = new h__Reader(DefaultCompositeDict()); + m_Reader = new h__Reader(&DefaultCompositeDict()); } @@ -530,7 +530,7 @@ public: ui32_t m_GOPOffset; byte_t m_EssenceUL[SMPTE_UL_LENGTH]; - h__Writer(const Dictionary& d) : ASDCP::h__ASDCPWriter(d), m_GOPOffset(0) { + h__Writer(const Dictionary *d) : ASDCP::h__ASDCPWriter(d), m_GOPOffset(0) { memset(m_EssenceUL, 0, SMPTE_UL_LENGTH); } @@ -732,9 +732,9 @@ ASDCP::MPEG2::MXFWriter::OpenWrite(const std::string& filename, const WriterInfo const VideoDescriptor& VDesc, ui32_t HeaderSize) { if ( Info.LabelSetType == LS_MXF_SMPTE ) - m_Writer = new h__Writer(DefaultSMPTEDict()); + m_Writer = new h__Writer(&DefaultSMPTEDict()); else - m_Writer = new h__Writer(DefaultInteropDict()); + m_Writer = new h__Writer(&DefaultInteropDict()); m_Writer->m_Info = Info; diff --git a/src/AS_DCP_PCM.cpp b/src/AS_DCP_PCM.cpp index 6241d15..01b02ba 100755 --- a/src/AS_DCP_PCM.cpp +++ b/src/AS_DCP_PCM.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2004-2016, John Hurst +Copyright (c) 2004-2021, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -250,7 +250,7 @@ class ASDCP::PCM::MXFReader::h__Reader : public ASDCP::h__ASDCPReader public: AudioDescriptor m_ADesc; - h__Reader(const Dictionary& d) : ASDCP::h__ASDCPReader(d) {} + h__Reader(const Dictionary *d) : ASDCP::h__ASDCPReader(d) {} virtual ~h__Reader() {} Result_t OpenRead(const std::string&); Result_t ReadFrame(ui32_t, FrameBuffer&, AESDecContext*, HMACContext*); @@ -368,7 +368,7 @@ ASDCP::PCM::FrameBuffer::Dump(FILE* stream, ui32_t dump_len) const ASDCP::PCM::MXFReader::MXFReader() { - m_Reader = new h__Reader(DefaultCompositeDict()); + m_Reader = new h__Reader(&DefaultCompositeDict()); } @@ -523,7 +523,7 @@ public: AudioDescriptor m_ADesc; byte_t m_EssenceUL[SMPTE_UL_LENGTH]; - h__Writer(const Dictionary& d) : ASDCP::h__ASDCPWriter(d) { + h__Writer(const Dictionary *d) : ASDCP::h__ASDCPWriter(d) { memset(m_EssenceUL, 0, SMPTE_UL_LENGTH); } @@ -718,9 +718,9 @@ ASDCP::PCM::MXFWriter::OpenWrite(const std::string& filename, const WriterInfo& const AudioDescriptor& ADesc, ui32_t HeaderSize) { if ( Info.LabelSetType == LS_MXF_SMPTE ) - m_Writer = new h__Writer(DefaultSMPTEDict()); + m_Writer = new h__Writer(&DefaultSMPTEDict()); else - m_Writer = new h__Writer(DefaultInteropDict()); + m_Writer = new h__Writer(&DefaultInteropDict()); m_Writer->m_Info = Info; diff --git a/src/AS_DCP_TimedText.cpp b/src/AS_DCP_TimedText.cpp index 3bea4e3..f04c7d8 100644 --- a/src/AS_DCP_TimedText.cpp +++ b/src/AS_DCP_TimedText.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2008-2018, John Hurst +Copyright (c) 2008-2021, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -134,7 +134,7 @@ class ASDCP::TimedText::MXFReader::h__Reader : public ASDCP::h__ASDCPReader public: TimedTextDescriptor m_TDesc; - h__Reader(const Dictionary& d) : ASDCP::h__ASDCPReader(d), m_EssenceDescriptor(0) { + h__Reader(const Dictionary *d) : ASDCP::h__ASDCPReader(d), m_EssenceDescriptor(0) { memset(&m_TDesc.AssetID, 0, UUIDlen); } @@ -287,7 +287,7 @@ ASDCP::TimedText::MXFReader::h__Reader::ReadAncillaryResource(const byte_t* uuid ASDCP::TimedText::MXFReader::MXFReader() { - m_Reader = new h__Reader(DefaultSMPTEDict()); + m_Reader = new h__Reader(&DefaultSMPTEDict()); } @@ -458,7 +458,7 @@ public: byte_t m_EssenceUL[SMPTE_UL_LENGTH]; ui32_t m_EssenceStreamID; - h__Writer(const Dictionary& d) : ASDCP::h__ASDCPWriter(d), m_EssenceStreamID(10) { + h__Writer(const Dictionary *d) : ASDCP::h__ASDCPWriter(d), m_EssenceStreamID(10) { memset(m_EssenceUL, 0, SMPTE_UL_LENGTH); } @@ -793,7 +793,7 @@ ASDCP::TimedText::MXFWriter::OpenWrite(const std::string& filename, const Writer return RESULT_FORMAT; } - m_Writer = new h__Writer(DefaultSMPTEDict()); + m_Writer = new h__Writer(&DefaultSMPTEDict()); m_Writer->m_Info = Info; Result_t result = m_Writer->OpenWrite(filename, HeaderSize); diff --git a/src/AS_DCP_internal.h b/src/AS_DCP_internal.h index 7162368..a86783e 100755 --- a/src/AS_DCP_internal.h +++ b/src/AS_DCP_internal.h @@ -1,5 +1,5 @@ /* -Copyright (c) 2004-2018, John Hurst +Copyright (c) 2004-2021, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -166,12 +166,12 @@ namespace ASDCP Result_t MD_to_PCM_ADesc(ASDCP::MXF::WaveAudioDescriptor* ADescObj, PCM::AudioDescriptor& ADesc); void AddDmsCrypt(Partition& HeaderPart, SourcePackage& Package, - WriterInfo& Descr, const UL& WrappingUL, const Dictionary*& Dict); + WriterInfo& Descr, const UL& WrappingUL, const Dictionary *Dict); Result_t AddDmsTrackGenericPartUtf8Text(Kumu::FileWriter&, ASDCP::MXF::OP1aHeader&, SourcePackage&, - ASDCP::MXF::RIP&, const Dictionary*&); + ASDCP::MXF::RIP&, const Dictionary*); // - Result_t WriteGenericStreamPartition(Kumu::FileWriter&, ASDCP::MXF::OP1aHeader&, ASDCP::MXF::RIP&, const Dictionary*&, + Result_t WriteGenericStreamPartition(Kumu::FileWriter&, ASDCP::MXF::OP1aHeader&, ASDCP::MXF::RIP&, const Dictionary*, const ASDCP::FrameBuffer&, ASDCP::AESEncContext* = 0, ASDCP::HMACContext* = 0); Result_t Read_EKLV_Packet(Kumu::FileReader& File, const ASDCP::Dictionary& Dict, @@ -216,7 +216,7 @@ namespace ASDCP TrackFileReader(); public: - const Dictionary* m_Dict; + const Dictionary *m_Dict; Kumu::FileReader m_File; HeaderType m_HeaderPart; IndexAccessType m_IndexAccess; @@ -225,8 +225,8 @@ namespace ASDCP ASDCP::FrameBuffer m_CtFrameBuf; Kumu::fpos_t m_LastPosition; - TrackFileReader(const Dictionary& d) : - m_HeaderPart(m_Dict), m_IndexAccess(m_Dict), m_RIP(m_Dict), m_Dict(&d) + TrackFileReader(const Dictionary *d) : + m_HeaderPart(d), m_IndexAccess(d), m_RIP(d), m_Dict(d) { default_md_object_init(); } @@ -496,7 +496,7 @@ namespace ASDCP template <class PackageT, class ClipT> TrackSet<ClipT> CreateTrackAndSequence(OP1aHeader& Header, PackageT& Package, const std::string TrackName, - const MXF::Rational& clip_edit_rate, const UL& Definition, ui32_t TrackID, const Dictionary*& Dict) + const MXF::Rational& clip_edit_rate, const UL& Definition, ui32_t TrackID, const Dictionary *Dict) { TrackSet<ClipT> NewTrack; @@ -519,7 +519,7 @@ namespace ASDCP template <class PackageT> TrackSet<TimecodeComponent> CreateTimecodeTrack(OP1aHeader& Header, PackageT& Package, - const MXF::Rational& tc_edit_rate, ui32_t tc_frame_rate, ui64_t TCStart, const Dictionary*& Dict) + const MXF::Rational& tc_edit_rate, ui32_t tc_frame_rate, ui64_t TCStart, const Dictionary *Dict) { assert(Dict); UL TCUL(Dict->ul(MDD_TimecodeDataDef)); @@ -610,8 +610,8 @@ namespace ASDCP typedef std::list<ui64_t*> DurationElementList_t; DurationElementList_t m_DurationUpdateList; - TrackFileWriter(const Dictionary& d) : - m_Dict(&d), m_HeaderSize(0), m_HeaderPart(m_Dict), m_RIP(m_Dict), + TrackFileWriter(const Dictionary *d) : + m_Dict(d), m_HeaderSize(0), m_HeaderPart(m_Dict), m_RIP(m_Dict), m_MaterialPackage(0), m_FilePackage(0), m_ContentStorage(0), m_EssenceDescriptor(0), m_FramesWritten(0), m_StreamOffset(0) { @@ -909,7 +909,7 @@ namespace ASDCP public: Partition m_BodyPart; - h__ASDCPReader(const Dictionary&); + h__ASDCPReader(const Dictionary*); virtual ~h__ASDCPReader(); Result_t OpenMXFRead(const std::string& filename); @@ -929,7 +929,7 @@ namespace ASDCP Partition m_BodyPart; OPAtomIndexFooter m_FooterPart; - h__ASDCPWriter(const Dictionary&); + h__ASDCPWriter(const Dictionary*); virtual ~h__ASDCPWriter(); // all the above for a single source clip diff --git a/src/Index.cpp b/src/Index.cpp index 6406e0f..0815f25 100755 --- a/src/Index.cpp +++ b/src/Index.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2005-2012, John Hurst +Copyright (c) 2005-2021, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -34,8 +34,8 @@ const ui32_t kl_length = ASDCP::SMPTE_UL_LENGTH + ASDCP::MXF_BER_LENGTH; // -ASDCP::MXF::IndexTableSegment::IndexTableSegment(const Dictionary*& d) : - InterchangeObject(d), m_Dict(d), RtFileOffset(0), RtEntryOffset(0), +ASDCP::MXF::IndexTableSegment::IndexTableSegment(const Dictionary* d) : + InterchangeObject(d), RtFileOffset(0), RtEntryOffset(0), IndexStartPosition(0), IndexDuration(0), EditUnitByteCount(0), IndexSID(129), BodySID(1), SliceCount(0), PosTableCount(0) { @@ -48,6 +48,13 @@ ASDCP::MXF::IndexTableSegment::~IndexTableSegment() { } +ASDCP::MXF::IndexTableSegment::IndexTableSegment(const IndexTableSegment& rhs) : InterchangeObject(rhs.m_Dict) +{ + assert(m_Dict); + m_UL = m_Dict->ul(MDD_IndexTableSegment); + Copy(rhs); +} + // void ASDCP::MXF::IndexTableSegment::Copy(const IndexTableSegment& rhs) @@ -66,6 +73,13 @@ ASDCP::MXF::IndexTableSegment::Copy(const IndexTableSegment& rhs) } // +ASDCP::MXF::InterchangeObject* +ASDCP::MXF::IndexTableSegment::Clone() const +{ + return new IndexTableSegment(*this); +} + +// ASDCP::Result_t ASDCP::MXF::IndexTableSegment::InitFromTLVSet(TLVReader& TLVSet) { diff --git a/src/MXF.cpp b/src/MXF.cpp index 83954f7..173f97b 100755 --- a/src/MXF.cpp +++ b/src/MXF.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2005-2015, John Hurst +Copyright (c) 2005-2021, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -262,13 +262,14 @@ ASDCP::MXF::Partition::PacketList::GetMDObjectsByType(const byte_t* ObjectID, st // -ASDCP::MXF::Partition::Partition(const Dictionary*& d) : +ASDCP::MXF::Partition::Partition(const Dictionary* d) : m_Dict(d), MajorVersion(1), MinorVersion(2), KAGSize(1), ThisPartition(0), PreviousPartition(0), FooterPartition(0), HeaderByteCount(0), IndexByteCount(0), IndexSID(0), BodyOffset(0), BodySID(0) { + assert(d); m_PacketList = new PacketList; } @@ -429,7 +430,7 @@ public: // -ASDCP::MXF::Primer::Primer(const Dictionary*& d) : m_LocalTag(0xff), m_Dict(d) { +ASDCP::MXF::Primer::Primer(const Dictionary* d) : m_LocalTag(0xff), m_Dict(d) { m_UL = m_Dict->ul(MDD_Primer); } @@ -595,14 +596,21 @@ ASDCP::MXF::Primer::Dump(FILE* stream) // // -ASDCP::MXF::Preface::Preface(const Dictionary*& d) : - InterchangeObject(d), m_Dict(d), Version(258) +ASDCP::MXF::Preface::Preface(const Dictionary* d) : + InterchangeObject(d), Version(258) { assert(m_Dict); m_UL = m_Dict->Type(MDD_Preface).ul; ObjectModelVersion = 0; } +ASDCP::MXF::Preface::Preface(const Preface& rhs) : InterchangeObject(rhs.m_Dict) +{ + assert(m_Dict); + m_UL = rhs.m_UL; + Copy(rhs); +} + // void ASDCP::MXF::Preface::Copy(const Preface& rhs) @@ -623,6 +631,13 @@ ASDCP::MXF::Preface::Copy(const Preface& rhs) } // +ASDCP::MXF::InterchangeObject* +ASDCP::MXF::Preface::Clone() const +{ + return new Preface(*this); +} + +// ASDCP::Result_t ASDCP::MXF::Preface::InitFromTLVSet(TLVReader& TLVSet) { @@ -725,7 +740,12 @@ ASDCP::MXF::Preface::Dump(FILE* stream) //------------------------------------------------------------------------------------------ // -ASDCP::MXF::OP1aHeader::OP1aHeader(const Dictionary*& d) : Partition(d), m_Dict(d), m_Primer(d), m_Preface(0) {} +ASDCP::MXF::OP1aHeader::OP1aHeader(const Dictionary* d) : + Partition(d), m_Primer(d), m_Preface(0) +{ + assert(m_Dict); +} + ASDCP::MXF::OP1aHeader::~OP1aHeader() {} // @@ -1025,8 +1045,8 @@ ASDCP::MXF::OP1aHeader::Dump(FILE* stream) //------------------------------------------------------------------------------------------ // -ASDCP::MXF::OPAtomIndexFooter::OPAtomIndexFooter(const Dictionary*& d) : - Partition(d), m_Dict(d), +ASDCP::MXF::OPAtomIndexFooter::OPAtomIndexFooter(const Dictionary* d) : + Partition(d), m_CurrentSegment(0), m_BytesPerEditUnit(0), m_BodySID(0), m_ECOffset(0), m_Lookup(0) { @@ -1367,6 +1387,11 @@ ASDCP::MXF::OPAtomIndexFooter::PushIndexEntry(const IndexTableSegment::IndexEntr //------------------------------------------------------------------------------------------ // +ASDCP::MXF::InterchangeObject::InterchangeObject(const Dictionary* d) : + KLVPacket(), m_Dict(d), m_Lookup(0) {} + +ASDCP::MXF::InterchangeObject::~InterchangeObject() {} + // void ASDCP::MXF::InterchangeObject::Copy(const InterchangeObject& rhs) @@ -1377,6 +1402,15 @@ ASDCP::MXF::InterchangeObject::Copy(const InterchangeObject& rhs) } // +ASDCP::MXF::InterchangeObject* +ASDCP::MXF::InterchangeObject::Clone() const +{ + ASDCP::MXF::InterchangeObject* obj = new ASDCP::MXF::InterchangeObject(m_Dict); + obj->Copy(*this); + return obj; +} + +// ASDCP::Result_t ASDCP::MXF::InterchangeObject::InitFromTLVSet(TLVReader& TLVSet) { @@ -1540,7 +1574,7 @@ ASDCP::MXF::SetObjectFactory(const ASDCP::UL& label, ASDCP::MXF::MXFObjectFactor // ASDCP::MXF::InterchangeObject* -ASDCP::MXF::CreateObject(const Dictionary*& Dict, const UL& label) +ASDCP::MXF::CreateObject(const Dictionary* Dict, const UL& label) { if ( ! s_TypesInit ) { @@ -1595,7 +1629,7 @@ ul_is_an_mca_channel(const ASDCP::UL& ul) // bool -ASDCP::MXF::decode_mca_string(const std::string& s, const mca_label_map_t& labels, const Dictionary*& dict, const std::string& language, +ASDCP::MXF::decode_mca_string(const std::string& s, const mca_label_map_t& labels, const Dictionary* dict, const std::string& language, InterchangeObject_list_t& descriptor_list, ui32_t& channel_count) { std::string symbol_buf; @@ -1788,7 +1822,7 @@ ASDCP::MXF::decode_mca_string(const std::string& s, const mca_label_map_t& label } // -ASDCP::MXF::ASDCP_MCAConfigParser::ASDCP_MCAConfigParser(const Dictionary*& d) : m_Dict(d), m_ChannelCount(0) +ASDCP::MXF::ASDCP_MCAConfigParser::ASDCP_MCAConfigParser(const Dictionary* d) : m_Dict(d), m_ChannelCount(0) { typedef mca_label_map_t::value_type pair; m_LabelMap.insert(pair("L", label_traits("Left" , true, m_Dict->ul(MDD_DCAudioChannel_L)))); @@ -1832,7 +1866,7 @@ ASDCP::MXF::ASDCP_MCAConfigParser::DecodeString(const std::string& s, const std: } // ST(L,R),DNS(NSC001,NSC002),-,VIN -ASDCP::MXF::AS02_MCAConfigParser::AS02_MCAConfigParser(const Dictionary*& d) : ASDCP::MXF::ASDCP_MCAConfigParser(d) +ASDCP::MXF::AS02_MCAConfigParser::AS02_MCAConfigParser(const Dictionary* d) : ASDCP::MXF::ASDCP_MCAConfigParser(d) { typedef mca_label_map_t::value_type pair; m_LabelMap.insert(pair("M1", label_traits("Mono One", true, m_Dict->ul(MDD_IMFAudioChannel_M1)))); @@ -1,5 +1,5 @@ /* -Copyright (c) 2005-2018, John Hurst +Copyright (c) 2005-2021, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -44,13 +44,13 @@ namespace ASDCP const ui32_t kl_length = ASDCP::SMPTE_UL_LENGTH + ASDCP::MXF_BER_LENGTH; // - typedef ASDCP::MXF::InterchangeObject* (*MXFObjectFactory_t)(const Dictionary*&); + typedef ASDCP::MXF::InterchangeObject* (*MXFObjectFactory_t)(const Dictionary*); // void SetObjectFactory(const UL& label, MXFObjectFactory_t factory); // - InterchangeObject* CreateObject(const Dictionary*& Dict, const UL& label); + InterchangeObject* CreateObject(const Dictionary* Dict, const UL& label); // seek an open file handle to the start of the RIP KLV packet @@ -98,14 +98,14 @@ namespace ASDCP } }; - const Dictionary*& m_Dict; + const Dictionary* m_Dict; typedef SimpleArray<PartitionPair>::iterator pair_iterator; typedef SimpleArray<PartitionPair>::const_iterator const_pair_iterator; SimpleArray<PartitionPair> PairArray; - RIP(const Dictionary*& d) : m_Dict(d) {} + RIP(const Dictionary* d) : m_Dict(d) {} virtual ~RIP() {} virtual Result_t InitFromFile(const Kumu::FileReader& Reader); virtual Result_t WriteToFile(Kumu::FileWriter& Writer); @@ -137,7 +137,7 @@ namespace ASDCP mem_ptr<PacketList> m_PacketList; public: - const Dictionary*& m_Dict; + const Dictionary* m_Dict; ui16_t MajorVersion; ui16_t MinorVersion; @@ -153,7 +153,7 @@ namespace ASDCP UL OperationalPattern; Batch<UL> EssenceContainers; - Partition(const Dictionary*&); + Partition(const Dictionary*); virtual ~Partition(); virtual void AddChildObject(InterchangeObject*); // takes ownership virtual Result_t InitFromFile(const Kumu::FileReader& Reader); @@ -221,9 +221,9 @@ namespace ASDCP }; Batch<LocalTagEntry> LocalTagEntryBatch; - const Dictionary*& m_Dict; + const Dictionary* m_Dict; - Primer(const Dictionary*&); + Primer(const Dictionary*); virtual ~Primer(); virtual void ClearTagList(); @@ -290,18 +290,20 @@ namespace ASDCP // class InterchangeObject : public ASDCP::KLVPacket { + ASDCP_NO_COPY_CONSTRUCT(InterchangeObject); InterchangeObject(); public: - const Dictionary*& m_Dict; + const Dictionary* m_Dict; IPrimerLookup* m_Lookup; UUID InstanceUID; optional_property<UUID> GenerationUID; - InterchangeObject(const Dictionary*& d) : m_Dict(d), m_Lookup(0) {} - virtual ~InterchangeObject() {} + InterchangeObject(const Dictionary* d); + virtual ~InterchangeObject(); virtual void Copy(const InterchangeObject& rhs); + virtual InterchangeObject *Clone() const; virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -317,11 +319,9 @@ namespace ASDCP // class Preface : public InterchangeObject { - ASDCP_NO_COPY_CONSTRUCT(Preface); Preface(); public: - const Dictionary*& m_Dict; Kumu::Timestamp LastModifiedDate; ui16_t Version; optional_property<ui32_t> ObjectModelVersion; @@ -334,10 +334,13 @@ namespace ASDCP optional_property<Batch<UL> > ApplicationSchemes; optional_property<Batch<UL> > ConformsToSpecifications; - Preface(const Dictionary*& d); + Preface(const Dictionary* d); + Preface(const Preface& rhs); virtual ~Preface() {} + const Preface& operator=(const Preface& rhs) { Copy(rhs); return *this; } virtual void Copy(const Preface& rhs); + virtual InterchangeObject *Clone() const; virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -351,7 +354,6 @@ namespace ASDCP class IndexTableSegment : public InterchangeObject { IndexTableSegment(); - ASDCP_NO_COPY_CONSTRUCT(IndexTableSegment); public: // @@ -395,7 +397,6 @@ namespace ASDCP const char* EncodeString(char* str_buf, ui32_t buf_len) const; }; - const Dictionary*& m_Dict; ui64_t RtFileOffset; // not part of the MXF structure: used to manage runtime index access ui64_t RtEntryOffset; @@ -410,10 +411,13 @@ namespace ASDCP Array<DeltaEntry> DeltaEntryArray; Array<IndexEntry> IndexEntryArray; - IndexTableSegment(const Dictionary*&); + IndexTableSegment(const Dictionary*); + IndexTableSegment(const IndexTableSegment&); virtual ~IndexTableSegment(); + const IndexTableSegment& operator=(const IndexTableSegment& rhs) { Copy(rhs); return *this; } virtual void Copy(const IndexTableSegment& rhs); + virtual InterchangeObject *Clone() const; virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -434,11 +438,10 @@ namespace ASDCP OP1aHeader(); public: - const Dictionary*& m_Dict; ASDCP::MXF::Primer m_Primer; Preface* m_Preface; - OP1aHeader(const Dictionary*&); + OP1aHeader(const Dictionary*); virtual ~OP1aHeader(); virtual Result_t InitFromFile(const Kumu::FileReader& Reader); virtual Result_t InitFromPartitionBuffer(const byte_t* p, ui32_t l); @@ -470,11 +473,10 @@ namespace ASDCP OPAtomIndexFooter(); public: - const Dictionary*& m_Dict; Kumu::fpos_t m_ECOffset; IPrimerLookup* m_Lookup; - OPAtomIndexFooter(const Dictionary*&); + OPAtomIndexFooter(const Dictionary*); virtual ~OPAtomIndexFooter(); virtual Result_t InitFromFile(const Kumu::FileReader& Reader); virtual Result_t InitFromPartitionBuffer(const byte_t* p, ui32_t l); @@ -524,7 +526,7 @@ namespace ASDCP typedef std::map<const std::string, const label_traits, ci_comp> mca_label_map_t; bool decode_mca_string(const std::string& s, const mca_label_map_t& labels, - const Dictionary*& dict, const std::string& language, InterchangeObject_list_t&, ui32_t&); + const Dictionary* dict, const std::string& language, InterchangeObject_list_t&, ui32_t&); // class ASDCP_MCAConfigParser : public InterchangeObject_list_t @@ -535,11 +537,11 @@ namespace ASDCP protected: mca_label_map_t m_LabelMap; ui32_t m_ChannelCount; - const Dictionary*& m_Dict; + const Dictionary* m_Dict; public: - ASDCP_MCAConfigParser(const Dictionary*&); + ASDCP_MCAConfigParser(const Dictionary*); bool DecodeString(const std::string& s, const std::string& language = "en-US"); // Valid only after a successful call to DecodeString @@ -553,7 +555,7 @@ namespace ASDCP AS02_MCAConfigParser(); public: - AS02_MCAConfigParser(const Dictionary*&); + AS02_MCAConfigParser(const Dictionary*); }; } // namespace MXF diff --git a/src/Metadata.cpp b/src/Metadata.cpp index 9ca3d66..455ba2a 100755..100644 --- a/src/Metadata.cpp +++ b/src/Metadata.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2005-2017, John Hurst +Copyright (c) 2005-2021, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -40,59 +40,59 @@ const ui32_t kl_length = ASDCP::SMPTE_UL_LENGTH + ASDCP::MXF_BER_LENGTH; //------------------------------------------------------------------------------------------ -static InterchangeObject* Preface_Factory(const Dictionary*& Dict) { return new Preface(Dict); } -static InterchangeObject* IndexTableSegment_Factory(const Dictionary*& Dict) { return new IndexTableSegment(Dict); } - -static InterchangeObject* Identification_Factory(const Dictionary*& Dict) { return new Identification(Dict); } -static InterchangeObject* ContentStorage_Factory(const Dictionary*& Dict) { return new ContentStorage(Dict); } -static InterchangeObject* EssenceContainerData_Factory(const Dictionary*& Dict) { return new EssenceContainerData(Dict); } -static InterchangeObject* MaterialPackage_Factory(const Dictionary*& Dict) { return new MaterialPackage(Dict); } -static InterchangeObject* SourcePackage_Factory(const Dictionary*& Dict) { return new SourcePackage(Dict); } -static InterchangeObject* StaticTrack_Factory(const Dictionary*& Dict) { return new StaticTrack(Dict); } -static InterchangeObject* Track_Factory(const Dictionary*& Dict) { return new Track(Dict); } -static InterchangeObject* Sequence_Factory(const Dictionary*& Dict) { return new Sequence(Dict); } -static InterchangeObject* SourceClip_Factory(const Dictionary*& Dict) { return new SourceClip(Dict); } -static InterchangeObject* TimecodeComponent_Factory(const Dictionary*& Dict) { return new TimecodeComponent(Dict); } -static InterchangeObject* FileDescriptor_Factory(const Dictionary*& Dict) { return new FileDescriptor(Dict); } -static InterchangeObject* GenericSoundEssenceDescriptor_Factory(const Dictionary*& Dict) { return new GenericSoundEssenceDescriptor(Dict); } -static InterchangeObject* WaveAudioDescriptor_Factory(const Dictionary*& Dict) { return new WaveAudioDescriptor(Dict); } -static InterchangeObject* GenericPictureEssenceDescriptor_Factory(const Dictionary*& Dict) { return new GenericPictureEssenceDescriptor(Dict); } -static InterchangeObject* RGBAEssenceDescriptor_Factory(const Dictionary*& Dict) { return new RGBAEssenceDescriptor(Dict); } -static InterchangeObject* JPEG2000PictureSubDescriptor_Factory(const Dictionary*& Dict) { return new JPEG2000PictureSubDescriptor(Dict); } -static InterchangeObject* CDCIEssenceDescriptor_Factory(const Dictionary*& Dict) { return new CDCIEssenceDescriptor(Dict); } -static InterchangeObject* MPEG2VideoDescriptor_Factory(const Dictionary*& Dict) { return new MPEG2VideoDescriptor(Dict); } -static InterchangeObject* DMSegment_Factory(const Dictionary*& Dict) { return new DMSegment(Dict); } -static InterchangeObject* CryptographicFramework_Factory(const Dictionary*& Dict) { return new CryptographicFramework(Dict); } -static InterchangeObject* CryptographicContext_Factory(const Dictionary*& Dict) { return new CryptographicContext(Dict); } -static InterchangeObject* DescriptiveFramework_Factory(const Dictionary*& Dict) { return new DescriptiveFramework(Dict); } -static InterchangeObject* DescriptiveObject_Factory(const Dictionary*& Dict) { return new DescriptiveObject(Dict); } -static InterchangeObject* GenericDataEssenceDescriptor_Factory(const Dictionary*& Dict) { return new GenericDataEssenceDescriptor(Dict); } -static InterchangeObject* TimedTextDescriptor_Factory(const Dictionary*& Dict) { return new TimedTextDescriptor(Dict); } -static InterchangeObject* TimedTextResourceSubDescriptor_Factory(const Dictionary*& Dict) { return new TimedTextResourceSubDescriptor(Dict); } -static InterchangeObject* StereoscopicPictureSubDescriptor_Factory(const Dictionary*& Dict) { return new StereoscopicPictureSubDescriptor(Dict); } -static InterchangeObject* ContainerConstraintsSubDescriptor_Factory(const Dictionary*& Dict) { return new ContainerConstraintsSubDescriptor(Dict); } -static InterchangeObject* NetworkLocator_Factory(const Dictionary*& Dict) { return new NetworkLocator(Dict); } -static InterchangeObject* MCALabelSubDescriptor_Factory(const Dictionary*& Dict) { return new MCALabelSubDescriptor(Dict); } -static InterchangeObject* AudioChannelLabelSubDescriptor_Factory(const Dictionary*& Dict) { return new AudioChannelLabelSubDescriptor(Dict); } -static InterchangeObject* SoundfieldGroupLabelSubDescriptor_Factory(const Dictionary*& Dict) { return new SoundfieldGroupLabelSubDescriptor(Dict); } -static InterchangeObject* GroupOfSoundfieldGroupsLabelSubDescriptor_Factory(const Dictionary*& Dict) { return new GroupOfSoundfieldGroupsLabelSubDescriptor(Dict); } -static InterchangeObject* DCDataDescriptor_Factory(const Dictionary*& Dict) { return new DCDataDescriptor(Dict); } -static InterchangeObject* PrivateDCDataDescriptor_Factory(const Dictionary*& Dict) { return new PrivateDCDataDescriptor(Dict); } -static InterchangeObject* DolbyAtmosSubDescriptor_Factory(const Dictionary*& Dict) { return new DolbyAtmosSubDescriptor(Dict); } -static InterchangeObject* ACESPictureSubDescriptor_Factory(const Dictionary*& Dict) { return new ACESPictureSubDescriptor(Dict); } -static InterchangeObject* TargetFrameSubDescriptor_Factory(const Dictionary*& Dict) { return new TargetFrameSubDescriptor(Dict); } -static InterchangeObject* TextBasedDMFramework_Factory(const Dictionary*& Dict) { return new TextBasedDMFramework(Dict); } -static InterchangeObject* TextBasedObject_Factory(const Dictionary*& Dict) { return new TextBasedObject(Dict); } -static InterchangeObject* GenericStreamTextBasedSet_Factory(const Dictionary*& Dict) { return new GenericStreamTextBasedSet(Dict); } -static InterchangeObject* ISXDDataEssenceDescriptor_Factory(const Dictionary*& Dict) { return new ISXDDataEssenceDescriptor(Dict); } -static InterchangeObject* PHDRMetadataTrackSubDescriptor_Factory(const Dictionary*& Dict) { return new PHDRMetadataTrackSubDescriptor(Dict); } -static InterchangeObject* PIMFDynamicMetadataDescriptor_Factory(const Dictionary*& Dict) { return new PIMFDynamicMetadataDescriptor(Dict); } -static InterchangeObject* IABEssenceDescriptor_Factory(const Dictionary*& Dict) { return new IABEssenceDescriptor(Dict); } -static InterchangeObject* IABSoundfieldLabelSubDescriptor_Factory(const Dictionary*& Dict) { return new IABSoundfieldLabelSubDescriptor(Dict); } +static InterchangeObject* Preface_Factory(const Dictionary* Dict) { return new Preface(Dict); } +static InterchangeObject* IndexTableSegment_Factory(const Dictionary* Dict) { return new IndexTableSegment(Dict); } + +static InterchangeObject* Identification_Factory(const Dictionary* Dict) { return new Identification(Dict); } +static InterchangeObject* ContentStorage_Factory(const Dictionary* Dict) { return new ContentStorage(Dict); } +static InterchangeObject* EssenceContainerData_Factory(const Dictionary* Dict) { return new EssenceContainerData(Dict); } +static InterchangeObject* MaterialPackage_Factory(const Dictionary* Dict) { return new MaterialPackage(Dict); } +static InterchangeObject* SourcePackage_Factory(const Dictionary* Dict) { return new SourcePackage(Dict); } +static InterchangeObject* StaticTrack_Factory(const Dictionary* Dict) { return new StaticTrack(Dict); } +static InterchangeObject* Track_Factory(const Dictionary* Dict) { return new Track(Dict); } +static InterchangeObject* Sequence_Factory(const Dictionary* Dict) { return new Sequence(Dict); } +static InterchangeObject* SourceClip_Factory(const Dictionary* Dict) { return new SourceClip(Dict); } +static InterchangeObject* TimecodeComponent_Factory(const Dictionary* Dict) { return new TimecodeComponent(Dict); } +static InterchangeObject* FileDescriptor_Factory(const Dictionary* Dict) { return new FileDescriptor(Dict); } +static InterchangeObject* GenericSoundEssenceDescriptor_Factory(const Dictionary* Dict) { return new GenericSoundEssenceDescriptor(Dict); } +static InterchangeObject* WaveAudioDescriptor_Factory(const Dictionary* Dict) { return new WaveAudioDescriptor(Dict); } +static InterchangeObject* GenericPictureEssenceDescriptor_Factory(const Dictionary* Dict) { return new GenericPictureEssenceDescriptor(Dict); } +static InterchangeObject* RGBAEssenceDescriptor_Factory(const Dictionary* Dict) { return new RGBAEssenceDescriptor(Dict); } +static InterchangeObject* JPEG2000PictureSubDescriptor_Factory(const Dictionary* Dict) { return new JPEG2000PictureSubDescriptor(Dict); } +static InterchangeObject* CDCIEssenceDescriptor_Factory(const Dictionary* Dict) { return new CDCIEssenceDescriptor(Dict); } +static InterchangeObject* MPEG2VideoDescriptor_Factory(const Dictionary* Dict) { return new MPEG2VideoDescriptor(Dict); } +static InterchangeObject* DMSegment_Factory(const Dictionary* Dict) { return new DMSegment(Dict); } +static InterchangeObject* CryptographicFramework_Factory(const Dictionary* Dict) { return new CryptographicFramework(Dict); } +static InterchangeObject* CryptographicContext_Factory(const Dictionary* Dict) { return new CryptographicContext(Dict); } +static InterchangeObject* DescriptiveFramework_Factory(const Dictionary* Dict) { return new DescriptiveFramework(Dict); } +static InterchangeObject* DescriptiveObject_Factory(const Dictionary* Dict) { return new DescriptiveObject(Dict); } +static InterchangeObject* GenericDataEssenceDescriptor_Factory(const Dictionary* Dict) { return new GenericDataEssenceDescriptor(Dict); } +static InterchangeObject* TimedTextDescriptor_Factory(const Dictionary* Dict) { return new TimedTextDescriptor(Dict); } +static InterchangeObject* TimedTextResourceSubDescriptor_Factory(const Dictionary* Dict) { return new TimedTextResourceSubDescriptor(Dict); } +static InterchangeObject* StereoscopicPictureSubDescriptor_Factory(const Dictionary* Dict) { return new StereoscopicPictureSubDescriptor(Dict); } +static InterchangeObject* ContainerConstraintsSubDescriptor_Factory(const Dictionary* Dict) { return new ContainerConstraintsSubDescriptor(Dict); } +static InterchangeObject* NetworkLocator_Factory(const Dictionary* Dict) { return new NetworkLocator(Dict); } +static InterchangeObject* MCALabelSubDescriptor_Factory(const Dictionary* Dict) { return new MCALabelSubDescriptor(Dict); } +static InterchangeObject* AudioChannelLabelSubDescriptor_Factory(const Dictionary* Dict) { return new AudioChannelLabelSubDescriptor(Dict); } +static InterchangeObject* SoundfieldGroupLabelSubDescriptor_Factory(const Dictionary* Dict) { return new SoundfieldGroupLabelSubDescriptor(Dict); } +static InterchangeObject* GroupOfSoundfieldGroupsLabelSubDescriptor_Factory(const Dictionary* Dict) { return new GroupOfSoundfieldGroupsLabelSubDescriptor(Dict); } +static InterchangeObject* DCDataDescriptor_Factory(const Dictionary* Dict) { return new DCDataDescriptor(Dict); } +static InterchangeObject* PrivateDCDataDescriptor_Factory(const Dictionary* Dict) { return new PrivateDCDataDescriptor(Dict); } +static InterchangeObject* DolbyAtmosSubDescriptor_Factory(const Dictionary* Dict) { return new DolbyAtmosSubDescriptor(Dict); } +static InterchangeObject* ACESPictureSubDescriptor_Factory(const Dictionary* Dict) { return new ACESPictureSubDescriptor(Dict); } +static InterchangeObject* TargetFrameSubDescriptor_Factory(const Dictionary* Dict) { return new TargetFrameSubDescriptor(Dict); } +static InterchangeObject* TextBasedDMFramework_Factory(const Dictionary* Dict) { return new TextBasedDMFramework(Dict); } +static InterchangeObject* TextBasedObject_Factory(const Dictionary* Dict) { return new TextBasedObject(Dict); } +static InterchangeObject* GenericStreamTextBasedSet_Factory(const Dictionary* Dict) { return new GenericStreamTextBasedSet(Dict); } +static InterchangeObject* ISXDDataEssenceDescriptor_Factory(const Dictionary* Dict) { return new ISXDDataEssenceDescriptor(Dict); } +static InterchangeObject* PHDRMetadataTrackSubDescriptor_Factory(const Dictionary* Dict) { return new PHDRMetadataTrackSubDescriptor(Dict); } +static InterchangeObject* PIMFDynamicMetadataDescriptor_Factory(const Dictionary* Dict) { return new PIMFDynamicMetadataDescriptor(Dict); } +static InterchangeObject* IABEssenceDescriptor_Factory(const Dictionary* Dict) { return new IABEssenceDescriptor(Dict); } +static InterchangeObject* IABSoundfieldLabelSubDescriptor_Factory(const Dictionary* Dict) { return new IABSoundfieldLabelSubDescriptor(Dict); } void -ASDCP::MXF::Metadata_InitTypes(const Dictionary*& Dict) +ASDCP::MXF::Metadata_InitTypes(const Dictionary* Dict) { assert(Dict); SetObjectFactory(Dict->ul(MDD_Preface), Preface_Factory); @@ -156,13 +156,13 @@ ASDCP::MXF::Metadata_InitTypes(const Dictionary*& Dict) // -Identification::Identification(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) +Identification::Identification(const Dictionary* d) : InterchangeObject(d) { assert(m_Dict); m_UL = m_Dict->ul(MDD_Identification); } -Identification::Identification(const Identification& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) +Identification::Identification(const Identification& rhs) : InterchangeObject(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_Identification); @@ -226,6 +226,13 @@ Identification::Copy(const Identification& rhs) } // +InterchangeObject* +Identification::Clone() const +{ + return new Identification(*this); +} + +// void Identification::Dump(FILE* stream) { @@ -268,13 +275,13 @@ Identification::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -ContentStorage::ContentStorage(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) +ContentStorage::ContentStorage(const Dictionary* d) : InterchangeObject(d) { assert(m_Dict); m_UL = m_Dict->ul(MDD_ContentStorage); } -ContentStorage::ContentStorage(const ContentStorage& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) +ContentStorage::ContentStorage(const ContentStorage& rhs) : InterchangeObject(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_ContentStorage); @@ -314,6 +321,13 @@ ContentStorage::Copy(const ContentStorage& rhs) } // +InterchangeObject* +ContentStorage::Clone() const +{ + return new ContentStorage(*this); +} + +// void ContentStorage::Dump(FILE* stream) { @@ -349,13 +363,13 @@ ContentStorage::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -EssenceContainerData::EssenceContainerData(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), BodySID(0) +EssenceContainerData::EssenceContainerData(const Dictionary* d) : InterchangeObject(d), BodySID(0) { assert(m_Dict); m_UL = m_Dict->ul(MDD_EssenceContainerData); } -EssenceContainerData::EssenceContainerData(const EssenceContainerData& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) +EssenceContainerData::EssenceContainerData(const EssenceContainerData& rhs) : InterchangeObject(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_EssenceContainerData); @@ -401,6 +415,13 @@ EssenceContainerData::Copy(const EssenceContainerData& rhs) } // +InterchangeObject* +EssenceContainerData::Clone() const +{ + return new EssenceContainerData(*this); +} + +// void EssenceContainerData::Dump(FILE* stream) { @@ -436,9 +457,9 @@ EssenceContainerData::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // GenericPackage // -GenericPackage::GenericPackage(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) {} +GenericPackage::GenericPackage(const Dictionary* d) : InterchangeObject(d) {} -GenericPackage::GenericPackage(const GenericPackage& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) +GenericPackage::GenericPackage(const GenericPackage& rhs) : InterchangeObject(rhs.m_Dict) { Copy(rhs); } @@ -488,6 +509,13 @@ GenericPackage::Copy(const GenericPackage& rhs) } // +InterchangeObject* +GenericPackage::Clone() const +{ + return new GenericPackage(*this); +} + +// void GenericPackage::Dump(FILE* stream) { @@ -514,13 +542,13 @@ GenericPackage::Dump(FILE* stream) // -MaterialPackage::MaterialPackage(const Dictionary*& d) : GenericPackage(d), m_Dict(d) +MaterialPackage::MaterialPackage(const Dictionary* d) : GenericPackage(d) { assert(m_Dict); m_UL = m_Dict->ul(MDD_MaterialPackage); } -MaterialPackage::MaterialPackage(const MaterialPackage& rhs) : GenericPackage(rhs.m_Dict), m_Dict(rhs.m_Dict) +MaterialPackage::MaterialPackage(const MaterialPackage& rhs) : GenericPackage(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_MaterialPackage); @@ -560,6 +588,13 @@ MaterialPackage::Copy(const MaterialPackage& rhs) } // +InterchangeObject* +MaterialPackage::Clone() const +{ + return new MaterialPackage(*this); +} + +// void MaterialPackage::Dump(FILE* stream) { @@ -594,13 +629,13 @@ MaterialPackage::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -SourcePackage::SourcePackage(const Dictionary*& d) : GenericPackage(d), m_Dict(d) +SourcePackage::SourcePackage(const Dictionary* d) : GenericPackage(d) { assert(m_Dict); m_UL = m_Dict->ul(MDD_SourcePackage); } -SourcePackage::SourcePackage(const SourcePackage& rhs) : GenericPackage(rhs.m_Dict), m_Dict(rhs.m_Dict) +SourcePackage::SourcePackage(const SourcePackage& rhs) : GenericPackage(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_SourcePackage); @@ -637,6 +672,13 @@ SourcePackage::Copy(const SourcePackage& rhs) } // +InterchangeObject* +SourcePackage::Clone() const +{ + return new SourcePackage(*this); +} + +// void SourcePackage::Dump(FILE* stream) { @@ -668,9 +710,9 @@ SourcePackage::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // GenericTrack // -GenericTrack::GenericTrack(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), TrackID(0), TrackNumber(0) {} +GenericTrack::GenericTrack(const Dictionary* d) : InterchangeObject(d), TrackID(0), TrackNumber(0) {} -GenericTrack::GenericTrack(const GenericTrack& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) +GenericTrack::GenericTrack(const GenericTrack& rhs) : InterchangeObject(rhs.m_Dict) { Copy(rhs); } @@ -720,6 +762,13 @@ GenericTrack::Copy(const GenericTrack& rhs) } // +InterchangeObject* +GenericTrack::Clone() const +{ + return new GenericTrack(*this); +} + +// void GenericTrack::Dump(FILE* stream) { @@ -746,13 +795,13 @@ GenericTrack::Dump(FILE* stream) // -StaticTrack::StaticTrack(const Dictionary*& d) : GenericTrack(d), m_Dict(d) +StaticTrack::StaticTrack(const Dictionary* d) : GenericTrack(d) { assert(m_Dict); m_UL = m_Dict->ul(MDD_StaticTrack); } -StaticTrack::StaticTrack(const StaticTrack& rhs) : GenericTrack(rhs.m_Dict), m_Dict(rhs.m_Dict) +StaticTrack::StaticTrack(const StaticTrack& rhs) : GenericTrack(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_StaticTrack); @@ -786,6 +835,13 @@ StaticTrack::Copy(const StaticTrack& rhs) } // +InterchangeObject* +StaticTrack::Clone() const +{ + return new StaticTrack(*this); +} + +// void StaticTrack::Dump(FILE* stream) { @@ -817,13 +873,13 @@ StaticTrack::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -Track::Track(const Dictionary*& d) : GenericTrack(d), m_Dict(d), Origin(0) +Track::Track(const Dictionary* d) : GenericTrack(d), Origin(0) { assert(m_Dict); m_UL = m_Dict->ul(MDD_Track); } -Track::Track(const Track& rhs) : GenericTrack(rhs.m_Dict), m_Dict(rhs.m_Dict) +Track::Track(const Track& rhs) : GenericTrack(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_Track); @@ -863,6 +919,13 @@ Track::Copy(const Track& rhs) } // +InterchangeObject* +Track::Clone() const +{ + return new Track(*this); +} + +// void Track::Dump(FILE* stream) { @@ -895,9 +958,9 @@ Track::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // StructuralComponent // -StructuralComponent::StructuralComponent(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) {} +StructuralComponent::StructuralComponent(const Dictionary* d) : InterchangeObject(d) {} -StructuralComponent::StructuralComponent(const StructuralComponent& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) +StructuralComponent::StructuralComponent(const StructuralComponent& rhs) : InterchangeObject(rhs.m_Dict) { Copy(rhs); } @@ -938,6 +1001,13 @@ StructuralComponent::Copy(const StructuralComponent& rhs) } // +InterchangeObject* +StructuralComponent::Clone() const +{ + return new StructuralComponent(*this); +} + +// void StructuralComponent::Dump(FILE* stream) { @@ -960,13 +1030,13 @@ StructuralComponent::Dump(FILE* stream) // -Sequence::Sequence(const Dictionary*& d) : StructuralComponent(d), m_Dict(d) +Sequence::Sequence(const Dictionary* d) : StructuralComponent(d) { assert(m_Dict); m_UL = m_Dict->ul(MDD_Sequence); } -Sequence::Sequence(const Sequence& rhs) : StructuralComponent(rhs.m_Dict), m_Dict(rhs.m_Dict) +Sequence::Sequence(const Sequence& rhs) : StructuralComponent(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_Sequence); @@ -1003,6 +1073,13 @@ Sequence::Copy(const Sequence& rhs) } // +InterchangeObject* +Sequence::Clone() const +{ + return new Sequence(*this); +} + +// void Sequence::Dump(FILE* stream) { @@ -1036,13 +1113,13 @@ Sequence::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -SourceClip::SourceClip(const Dictionary*& d) : StructuralComponent(d), m_Dict(d), StartPosition(0), SourceTrackID(0) +SourceClip::SourceClip(const Dictionary* d) : StructuralComponent(d), StartPosition(0), SourceTrackID(0) { assert(m_Dict); m_UL = m_Dict->ul(MDD_SourceClip); } -SourceClip::SourceClip(const SourceClip& rhs) : StructuralComponent(rhs.m_Dict), m_Dict(rhs.m_Dict) +SourceClip::SourceClip(const SourceClip& rhs) : StructuralComponent(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_SourceClip); @@ -1085,6 +1162,13 @@ SourceClip::Copy(const SourceClip& rhs) } // +InterchangeObject* +SourceClip::Clone() const +{ + return new SourceClip(*this); +} + +// void SourceClip::Dump(FILE* stream) { @@ -1119,13 +1203,13 @@ SourceClip::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -TimecodeComponent::TimecodeComponent(const Dictionary*& d) : StructuralComponent(d), m_Dict(d), RoundedTimecodeBase(0), StartTimecode(0), DropFrame(0) +TimecodeComponent::TimecodeComponent(const Dictionary* d) : StructuralComponent(d), RoundedTimecodeBase(0), StartTimecode(0), DropFrame(0) { assert(m_Dict); m_UL = m_Dict->ul(MDD_TimecodeComponent); } -TimecodeComponent::TimecodeComponent(const TimecodeComponent& rhs) : StructuralComponent(rhs.m_Dict), m_Dict(rhs.m_Dict) +TimecodeComponent::TimecodeComponent(const TimecodeComponent& rhs) : StructuralComponent(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_TimecodeComponent); @@ -1168,6 +1252,13 @@ TimecodeComponent::Copy(const TimecodeComponent& rhs) } // +InterchangeObject* +TimecodeComponent::Clone() const +{ + return new TimecodeComponent(*this); +} + +// void TimecodeComponent::Dump(FILE* stream) { @@ -1201,9 +1292,9 @@ TimecodeComponent::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // GenericDescriptor // -GenericDescriptor::GenericDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) {} +GenericDescriptor::GenericDescriptor(const Dictionary* d) : InterchangeObject(d) {} -GenericDescriptor::GenericDescriptor(const GenericDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) +GenericDescriptor::GenericDescriptor(const GenericDescriptor& rhs) : InterchangeObject(rhs.m_Dict) { Copy(rhs); } @@ -1241,6 +1332,13 @@ GenericDescriptor::Copy(const GenericDescriptor& rhs) } // +InterchangeObject* +GenericDescriptor::Clone() const +{ + return new GenericDescriptor(*this); +} + +// void GenericDescriptor::Dump(FILE* stream) { @@ -1263,13 +1361,13 @@ GenericDescriptor::Dump(FILE* stream) // -FileDescriptor::FileDescriptor(const Dictionary*& d) : GenericDescriptor(d), m_Dict(d) +FileDescriptor::FileDescriptor(const Dictionary* d) : GenericDescriptor(d) { assert(m_Dict); m_UL = m_Dict->ul(MDD_FileDescriptor); } -FileDescriptor::FileDescriptor(const FileDescriptor& rhs) : GenericDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict) +FileDescriptor::FileDescriptor(const FileDescriptor& rhs) : GenericDescriptor(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_FileDescriptor); @@ -1327,6 +1425,13 @@ FileDescriptor::Copy(const FileDescriptor& rhs) } // +InterchangeObject* +FileDescriptor::Clone() const +{ + return new FileDescriptor(*this); +} + +// void FileDescriptor::Dump(FILE* stream) { @@ -1369,13 +1474,13 @@ FileDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -GenericSoundEssenceDescriptor::GenericSoundEssenceDescriptor(const Dictionary*& d) : FileDescriptor(d), m_Dict(d), Locked(0), ChannelCount(0), QuantizationBits(0) +GenericSoundEssenceDescriptor::GenericSoundEssenceDescriptor(const Dictionary* d) : FileDescriptor(d), Locked(0), ChannelCount(0), QuantizationBits(0) { assert(m_Dict); m_UL = m_Dict->ul(MDD_GenericSoundEssenceDescriptor); } -GenericSoundEssenceDescriptor::GenericSoundEssenceDescriptor(const GenericSoundEssenceDescriptor& rhs) : FileDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict) +GenericSoundEssenceDescriptor::GenericSoundEssenceDescriptor(const GenericSoundEssenceDescriptor& rhs) : FileDescriptor(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_GenericSoundEssenceDescriptor); @@ -1454,6 +1559,13 @@ GenericSoundEssenceDescriptor::Copy(const GenericSoundEssenceDescriptor& rhs) } // +InterchangeObject* +GenericSoundEssenceDescriptor::Clone() const +{ + return new GenericSoundEssenceDescriptor(*this); +} + +// void GenericSoundEssenceDescriptor::Dump(FILE* stream) { @@ -1505,13 +1617,13 @@ GenericSoundEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -WaveAudioDescriptor::WaveAudioDescriptor(const Dictionary*& d) : GenericSoundEssenceDescriptor(d), m_Dict(d), BlockAlign(0), AvgBps(0) +WaveAudioDescriptor::WaveAudioDescriptor(const Dictionary* d) : GenericSoundEssenceDescriptor(d), BlockAlign(0), AvgBps(0) { assert(m_Dict); m_UL = m_Dict->ul(MDD_WaveAudioDescriptor); } -WaveAudioDescriptor::WaveAudioDescriptor(const WaveAudioDescriptor& rhs) : GenericSoundEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict) +WaveAudioDescriptor::WaveAudioDescriptor(const WaveAudioDescriptor& rhs) : GenericSoundEssenceDescriptor(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_WaveAudioDescriptor); @@ -1563,6 +1675,13 @@ WaveAudioDescriptor::Copy(const WaveAudioDescriptor& rhs) } // +InterchangeObject* +WaveAudioDescriptor::Clone() const +{ + return new WaveAudioDescriptor(*this); +} + +// void WaveAudioDescriptor::Dump(FILE* stream) { @@ -1602,13 +1721,13 @@ WaveAudioDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -GenericPictureEssenceDescriptor::GenericPictureEssenceDescriptor(const Dictionary*& d) : FileDescriptor(d), m_Dict(d), FrameLayout(0), StoredWidth(0), StoredHeight(0) +GenericPictureEssenceDescriptor::GenericPictureEssenceDescriptor(const Dictionary* d) : FileDescriptor(d), FrameLayout(0), StoredWidth(0), StoredHeight(0) { assert(m_Dict); m_UL = m_Dict->ul(MDD_GenericPictureEssenceDescriptor); } -GenericPictureEssenceDescriptor::GenericPictureEssenceDescriptor(const GenericPictureEssenceDescriptor& rhs) : FileDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict) +GenericPictureEssenceDescriptor::GenericPictureEssenceDescriptor(const GenericPictureEssenceDescriptor& rhs) : FileDescriptor(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_GenericPictureEssenceDescriptor); @@ -1836,6 +1955,13 @@ GenericPictureEssenceDescriptor::Copy(const GenericPictureEssenceDescriptor& rhs } // +InterchangeObject* +GenericPictureEssenceDescriptor::Clone() const +{ + return new GenericPictureEssenceDescriptor(*this); +} + +// void GenericPictureEssenceDescriptor::Dump(FILE* stream) { @@ -1963,13 +2089,13 @@ GenericPictureEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -RGBAEssenceDescriptor::RGBAEssenceDescriptor(const Dictionary*& d) : GenericPictureEssenceDescriptor(d), m_Dict(d) +RGBAEssenceDescriptor::RGBAEssenceDescriptor(const Dictionary* d) : GenericPictureEssenceDescriptor(d) { assert(m_Dict); m_UL = m_Dict->ul(MDD_RGBAEssenceDescriptor); } -RGBAEssenceDescriptor::RGBAEssenceDescriptor(const RGBAEssenceDescriptor& rhs) : GenericPictureEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict) +RGBAEssenceDescriptor::RGBAEssenceDescriptor(const RGBAEssenceDescriptor& rhs) : GenericPictureEssenceDescriptor(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_RGBAEssenceDescriptor); @@ -2036,6 +2162,13 @@ RGBAEssenceDescriptor::Copy(const RGBAEssenceDescriptor& rhs) } // +InterchangeObject* +RGBAEssenceDescriptor::Clone() const +{ + return new RGBAEssenceDescriptor(*this); +} + +// void RGBAEssenceDescriptor::Dump(FILE* stream) { @@ -2083,13 +2216,13 @@ RGBAEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -JPEG2000PictureSubDescriptor::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) +JPEG2000PictureSubDescriptor::JPEG2000PictureSubDescriptor(const Dictionary* d) : InterchangeObject(d), Rsize(0), Xsize(0), Ysize(0), XOsize(0), YOsize(0), XTsize(0), YTsize(0), XTOsize(0), YTOsize(0), Csize(0) { assert(m_Dict); m_UL = m_Dict->ul(MDD_JPEG2000PictureSubDescriptor); } -JPEG2000PictureSubDescriptor::JPEG2000PictureSubDescriptor(const JPEG2000PictureSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) +JPEG2000PictureSubDescriptor::JPEG2000PictureSubDescriptor(const JPEG2000PictureSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_JPEG2000PictureSubDescriptor); @@ -2195,6 +2328,13 @@ JPEG2000PictureSubDescriptor::Copy(const JPEG2000PictureSubDescriptor& rhs) } // +InterchangeObject* +JPEG2000PictureSubDescriptor::Clone() const +{ + return new JPEG2000PictureSubDescriptor(*this); +} + +// void JPEG2000PictureSubDescriptor::Dump(FILE* stream) { @@ -2259,13 +2399,13 @@ JPEG2000PictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -CDCIEssenceDescriptor::CDCIEssenceDescriptor(const Dictionary*& d) : GenericPictureEssenceDescriptor(d), m_Dict(d), ComponentDepth(0), HorizontalSubsampling(0) +CDCIEssenceDescriptor::CDCIEssenceDescriptor(const Dictionary* d) : GenericPictureEssenceDescriptor(d), ComponentDepth(0), HorizontalSubsampling(0) { assert(m_Dict); m_UL = m_Dict->ul(MDD_CDCIEssenceDescriptor); } -CDCIEssenceDescriptor::CDCIEssenceDescriptor(const CDCIEssenceDescriptor& rhs) : GenericPictureEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict) +CDCIEssenceDescriptor::CDCIEssenceDescriptor(const CDCIEssenceDescriptor& rhs) : GenericPictureEssenceDescriptor(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_CDCIEssenceDescriptor); @@ -2353,6 +2493,13 @@ CDCIEssenceDescriptor::Copy(const CDCIEssenceDescriptor& rhs) } // +InterchangeObject* +CDCIEssenceDescriptor::Clone() const +{ + return new CDCIEssenceDescriptor(*this); +} + +// void CDCIEssenceDescriptor::Dump(FILE* stream) { @@ -2410,13 +2557,13 @@ CDCIEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -MPEG2VideoDescriptor::MPEG2VideoDescriptor(const Dictionary*& d) : CDCIEssenceDescriptor(d), m_Dict(d) +MPEG2VideoDescriptor::MPEG2VideoDescriptor(const Dictionary* d) : CDCIEssenceDescriptor(d) { assert(m_Dict); m_UL = m_Dict->ul(MDD_MPEG2VideoDescriptor); } -MPEG2VideoDescriptor::MPEG2VideoDescriptor(const MPEG2VideoDescriptor& rhs) : CDCIEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict) +MPEG2VideoDescriptor::MPEG2VideoDescriptor(const MPEG2VideoDescriptor& rhs) : CDCIEssenceDescriptor(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_MPEG2VideoDescriptor); @@ -2510,6 +2657,13 @@ MPEG2VideoDescriptor::Copy(const MPEG2VideoDescriptor& rhs) } // +InterchangeObject* +MPEG2VideoDescriptor::Clone() const +{ + return new MPEG2VideoDescriptor(*this); +} + +// void MPEG2VideoDescriptor::Dump(FILE* stream) { @@ -2571,13 +2725,13 @@ MPEG2VideoDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -DMSegment::DMSegment(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) +DMSegment::DMSegment(const Dictionary* d) : InterchangeObject(d) { assert(m_Dict); m_UL = m_Dict->ul(MDD_DMSegment); } -DMSegment::DMSegment(const DMSegment& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) +DMSegment::DMSegment(const DMSegment& rhs) : InterchangeObject(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_DMSegment); @@ -2635,6 +2789,13 @@ DMSegment::Copy(const DMSegment& rhs) } // +InterchangeObject* +DMSegment::Clone() const +{ + return new DMSegment(*this); +} + +// void DMSegment::Dump(FILE* stream) { @@ -2677,13 +2838,13 @@ DMSegment::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -CryptographicFramework::CryptographicFramework(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) +CryptographicFramework::CryptographicFramework(const Dictionary* d) : InterchangeObject(d) { assert(m_Dict); m_UL = m_Dict->ul(MDD_CryptographicFramework); } -CryptographicFramework::CryptographicFramework(const CryptographicFramework& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) +CryptographicFramework::CryptographicFramework(const CryptographicFramework& rhs) : InterchangeObject(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_CryptographicFramework); @@ -2720,6 +2881,13 @@ CryptographicFramework::Copy(const CryptographicFramework& rhs) } // +InterchangeObject* +CryptographicFramework::Clone() const +{ + return new CryptographicFramework(*this); +} + +// void CryptographicFramework::Dump(FILE* stream) { @@ -2752,13 +2920,13 @@ CryptographicFramework::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -CryptographicContext::CryptographicContext(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) +CryptographicContext::CryptographicContext(const Dictionary* d) : InterchangeObject(d) { assert(m_Dict); m_UL = m_Dict->ul(MDD_CryptographicContext); } -CryptographicContext::CryptographicContext(const CryptographicContext& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) +CryptographicContext::CryptographicContext(const CryptographicContext& rhs) : InterchangeObject(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_CryptographicContext); @@ -2807,6 +2975,13 @@ CryptographicContext::Copy(const CryptographicContext& rhs) } // +InterchangeObject* +CryptographicContext::Clone() const +{ + return new CryptographicContext(*this); +} + +// void CryptographicContext::Dump(FILE* stream) { @@ -2843,13 +3018,13 @@ CryptographicContext::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -DescriptiveFramework::DescriptiveFramework(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) +DescriptiveFramework::DescriptiveFramework(const Dictionary* d) : InterchangeObject(d) { assert(m_Dict); m_UL = m_Dict->ul(MDD_DescriptiveFramework); } -DescriptiveFramework::DescriptiveFramework(const DescriptiveFramework& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) +DescriptiveFramework::DescriptiveFramework(const DescriptiveFramework& rhs) : InterchangeObject(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_DescriptiveFramework); @@ -2889,6 +3064,13 @@ DescriptiveFramework::Copy(const DescriptiveFramework& rhs) } // +InterchangeObject* +DescriptiveFramework::Clone() const +{ + return new DescriptiveFramework(*this); +} + +// void DescriptiveFramework::Dump(FILE* stream) { @@ -2923,13 +3105,13 @@ DescriptiveFramework::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -DescriptiveObject::DescriptiveObject(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) +DescriptiveObject::DescriptiveObject(const Dictionary* d) : InterchangeObject(d) { assert(m_Dict); m_UL = m_Dict->ul(MDD_DescriptiveObject); } -DescriptiveObject::DescriptiveObject(const DescriptiveObject& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) +DescriptiveObject::DescriptiveObject(const DescriptiveObject& rhs) : InterchangeObject(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_DescriptiveObject); @@ -2969,6 +3151,13 @@ DescriptiveObject::Copy(const DescriptiveObject& rhs) } // +InterchangeObject* +DescriptiveObject::Clone() const +{ + return new DescriptiveObject(*this); +} + +// void DescriptiveObject::Dump(FILE* stream) { @@ -3003,13 +3192,13 @@ DescriptiveObject::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -GenericDataEssenceDescriptor::GenericDataEssenceDescriptor(const Dictionary*& d) : FileDescriptor(d), m_Dict(d) +GenericDataEssenceDescriptor::GenericDataEssenceDescriptor(const Dictionary* d) : FileDescriptor(d) { assert(m_Dict); m_UL = m_Dict->ul(MDD_GenericDataEssenceDescriptor); } -GenericDataEssenceDescriptor::GenericDataEssenceDescriptor(const GenericDataEssenceDescriptor& rhs) : FileDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict) +GenericDataEssenceDescriptor::GenericDataEssenceDescriptor(const GenericDataEssenceDescriptor& rhs) : FileDescriptor(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_GenericDataEssenceDescriptor); @@ -3046,6 +3235,13 @@ GenericDataEssenceDescriptor::Copy(const GenericDataEssenceDescriptor& rhs) } // +InterchangeObject* +GenericDataEssenceDescriptor::Clone() const +{ + return new GenericDataEssenceDescriptor(*this); +} + +// void GenericDataEssenceDescriptor::Dump(FILE* stream) { @@ -3078,13 +3274,13 @@ GenericDataEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -TimedTextDescriptor::TimedTextDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d) +TimedTextDescriptor::TimedTextDescriptor(const Dictionary* d) : GenericDataEssenceDescriptor(d) { assert(m_Dict); m_UL = m_Dict->ul(MDD_TimedTextDescriptor); } -TimedTextDescriptor::TimedTextDescriptor(const TimedTextDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict) +TimedTextDescriptor::TimedTextDescriptor(const TimedTextDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_TimedTextDescriptor); @@ -3151,6 +3347,13 @@ TimedTextDescriptor::Copy(const TimedTextDescriptor& rhs) } // +InterchangeObject* +TimedTextDescriptor::Clone() const +{ + return new TimedTextDescriptor(*this); +} + +// void TimedTextDescriptor::Dump(FILE* stream) { @@ -3197,13 +3400,13 @@ TimedTextDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -TimedTextResourceSubDescriptor::TimedTextResourceSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), EssenceStreamID(0) +TimedTextResourceSubDescriptor::TimedTextResourceSubDescriptor(const Dictionary* d) : InterchangeObject(d), EssenceStreamID(0) { assert(m_Dict); m_UL = m_Dict->ul(MDD_TimedTextResourceSubDescriptor); } -TimedTextResourceSubDescriptor::TimedTextResourceSubDescriptor(const TimedTextResourceSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) +TimedTextResourceSubDescriptor::TimedTextResourceSubDescriptor(const TimedTextResourceSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_TimedTextResourceSubDescriptor); @@ -3246,6 +3449,13 @@ TimedTextResourceSubDescriptor::Copy(const TimedTextResourceSubDescriptor& rhs) } // +InterchangeObject* +TimedTextResourceSubDescriptor::Clone() const +{ + return new TimedTextResourceSubDescriptor(*this); +} + +// void TimedTextResourceSubDescriptor::Dump(FILE* stream) { @@ -3280,13 +3490,13 @@ TimedTextResourceSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -StereoscopicPictureSubDescriptor::StereoscopicPictureSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) +StereoscopicPictureSubDescriptor::StereoscopicPictureSubDescriptor(const Dictionary* d) : InterchangeObject(d) { assert(m_Dict); m_UL = m_Dict->ul(MDD_StereoscopicPictureSubDescriptor); } -StereoscopicPictureSubDescriptor::StereoscopicPictureSubDescriptor(const StereoscopicPictureSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) +StereoscopicPictureSubDescriptor::StereoscopicPictureSubDescriptor(const StereoscopicPictureSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_StereoscopicPictureSubDescriptor); @@ -3320,6 +3530,13 @@ StereoscopicPictureSubDescriptor::Copy(const StereoscopicPictureSubDescriptor& r } // +InterchangeObject* +StereoscopicPictureSubDescriptor::Clone() const +{ + return new StereoscopicPictureSubDescriptor(*this); +} + +// void StereoscopicPictureSubDescriptor::Dump(FILE* stream) { @@ -3351,13 +3568,13 @@ StereoscopicPictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -ContainerConstraintsSubDescriptor::ContainerConstraintsSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) +ContainerConstraintsSubDescriptor::ContainerConstraintsSubDescriptor(const Dictionary* d) : InterchangeObject(d) { assert(m_Dict); m_UL = m_Dict->ul(MDD_ContainerConstraintsSubDescriptor); } -ContainerConstraintsSubDescriptor::ContainerConstraintsSubDescriptor(const ContainerConstraintsSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) +ContainerConstraintsSubDescriptor::ContainerConstraintsSubDescriptor(const ContainerConstraintsSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_ContainerConstraintsSubDescriptor); @@ -3391,6 +3608,13 @@ ContainerConstraintsSubDescriptor::Copy(const ContainerConstraintsSubDescriptor& } // +InterchangeObject* +ContainerConstraintsSubDescriptor::Clone() const +{ + return new ContainerConstraintsSubDescriptor(*this); +} + +// void ContainerConstraintsSubDescriptor::Dump(FILE* stream) { @@ -3422,13 +3646,13 @@ ContainerConstraintsSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -NetworkLocator::NetworkLocator(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) +NetworkLocator::NetworkLocator(const Dictionary* d) : InterchangeObject(d) { assert(m_Dict); m_UL = m_Dict->ul(MDD_NetworkLocator); } -NetworkLocator::NetworkLocator(const NetworkLocator& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) +NetworkLocator::NetworkLocator(const NetworkLocator& rhs) : InterchangeObject(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_NetworkLocator); @@ -3465,6 +3689,13 @@ NetworkLocator::Copy(const NetworkLocator& rhs) } // +InterchangeObject* +NetworkLocator::Clone() const +{ + return new NetworkLocator(*this); +} + +// void NetworkLocator::Dump(FILE* stream) { @@ -3497,13 +3728,13 @@ NetworkLocator::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -MCALabelSubDescriptor::MCALabelSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) +MCALabelSubDescriptor::MCALabelSubDescriptor(const Dictionary* d) : InterchangeObject(d) { assert(m_Dict); m_UL = m_Dict->ul(MDD_MCALabelSubDescriptor); } -MCALabelSubDescriptor::MCALabelSubDescriptor(const MCALabelSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) +MCALabelSubDescriptor::MCALabelSubDescriptor(const MCALabelSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_MCALabelSubDescriptor); @@ -3612,6 +3843,13 @@ MCALabelSubDescriptor::Copy(const MCALabelSubDescriptor& rhs) } // +InterchangeObject* +MCALabelSubDescriptor::Clone() const +{ + return new MCALabelSubDescriptor(*this); +} + +// void MCALabelSubDescriptor::Dump(FILE* stream) { @@ -3679,13 +3917,13 @@ MCALabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -AudioChannelLabelSubDescriptor::AudioChannelLabelSubDescriptor(const Dictionary*& d) : MCALabelSubDescriptor(d), m_Dict(d) +AudioChannelLabelSubDescriptor::AudioChannelLabelSubDescriptor(const Dictionary* d) : MCALabelSubDescriptor(d) { assert(m_Dict); m_UL = m_Dict->ul(MDD_AudioChannelLabelSubDescriptor); } -AudioChannelLabelSubDescriptor::AudioChannelLabelSubDescriptor(const AudioChannelLabelSubDescriptor& rhs) : MCALabelSubDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict) +AudioChannelLabelSubDescriptor::AudioChannelLabelSubDescriptor(const AudioChannelLabelSubDescriptor& rhs) : MCALabelSubDescriptor(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_AudioChannelLabelSubDescriptor); @@ -3725,6 +3963,13 @@ AudioChannelLabelSubDescriptor::Copy(const AudioChannelLabelSubDescriptor& rhs) } // +InterchangeObject* +AudioChannelLabelSubDescriptor::Clone() const +{ + return new AudioChannelLabelSubDescriptor(*this); +} + +// void AudioChannelLabelSubDescriptor::Dump(FILE* stream) { @@ -3759,13 +4004,13 @@ AudioChannelLabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -SoundfieldGroupLabelSubDescriptor::SoundfieldGroupLabelSubDescriptor(const Dictionary*& d) : MCALabelSubDescriptor(d), m_Dict(d) +SoundfieldGroupLabelSubDescriptor::SoundfieldGroupLabelSubDescriptor(const Dictionary* d) : MCALabelSubDescriptor(d) { assert(m_Dict); m_UL = m_Dict->ul(MDD_SoundfieldGroupLabelSubDescriptor); } -SoundfieldGroupLabelSubDescriptor::SoundfieldGroupLabelSubDescriptor(const SoundfieldGroupLabelSubDescriptor& rhs) : MCALabelSubDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict) +SoundfieldGroupLabelSubDescriptor::SoundfieldGroupLabelSubDescriptor(const SoundfieldGroupLabelSubDescriptor& rhs) : MCALabelSubDescriptor(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_SoundfieldGroupLabelSubDescriptor); @@ -3804,6 +4049,13 @@ SoundfieldGroupLabelSubDescriptor::Copy(const SoundfieldGroupLabelSubDescriptor& } // +InterchangeObject* +SoundfieldGroupLabelSubDescriptor::Clone() const +{ + return new SoundfieldGroupLabelSubDescriptor(*this); +} + +// void SoundfieldGroupLabelSubDescriptor::Dump(FILE* stream) { @@ -3839,13 +4091,13 @@ SoundfieldGroupLabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -GroupOfSoundfieldGroupsLabelSubDescriptor::GroupOfSoundfieldGroupsLabelSubDescriptor(const Dictionary*& d) : MCALabelSubDescriptor(d), m_Dict(d) +GroupOfSoundfieldGroupsLabelSubDescriptor::GroupOfSoundfieldGroupsLabelSubDescriptor(const Dictionary* d) : MCALabelSubDescriptor(d) { assert(m_Dict); m_UL = m_Dict->ul(MDD_GroupOfSoundfieldGroupsLabelSubDescriptor); } -GroupOfSoundfieldGroupsLabelSubDescriptor::GroupOfSoundfieldGroupsLabelSubDescriptor(const GroupOfSoundfieldGroupsLabelSubDescriptor& rhs) : MCALabelSubDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict) +GroupOfSoundfieldGroupsLabelSubDescriptor::GroupOfSoundfieldGroupsLabelSubDescriptor(const GroupOfSoundfieldGroupsLabelSubDescriptor& rhs) : MCALabelSubDescriptor(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_GroupOfSoundfieldGroupsLabelSubDescriptor); @@ -3879,6 +4131,13 @@ GroupOfSoundfieldGroupsLabelSubDescriptor::Copy(const GroupOfSoundfieldGroupsLab } // +InterchangeObject* +GroupOfSoundfieldGroupsLabelSubDescriptor::Clone() const +{ + return new GroupOfSoundfieldGroupsLabelSubDescriptor(*this); +} + +// void GroupOfSoundfieldGroupsLabelSubDescriptor::Dump(FILE* stream) { @@ -3910,13 +4169,13 @@ GroupOfSoundfieldGroupsLabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buf // -DCDataDescriptor::DCDataDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d) +DCDataDescriptor::DCDataDescriptor(const Dictionary* d) : GenericDataEssenceDescriptor(d) { assert(m_Dict); m_UL = m_Dict->ul(MDD_DCDataDescriptor); } -DCDataDescriptor::DCDataDescriptor(const DCDataDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict) +DCDataDescriptor::DCDataDescriptor(const DCDataDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_DCDataDescriptor); @@ -3950,6 +4209,13 @@ DCDataDescriptor::Copy(const DCDataDescriptor& rhs) } // +InterchangeObject* +DCDataDescriptor::Clone() const +{ + return new DCDataDescriptor(*this); +} + +// void DCDataDescriptor::Dump(FILE* stream) { @@ -3981,13 +4247,13 @@ DCDataDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -PrivateDCDataDescriptor::PrivateDCDataDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d) +PrivateDCDataDescriptor::PrivateDCDataDescriptor(const Dictionary* d) : GenericDataEssenceDescriptor(d) { assert(m_Dict); m_UL = m_Dict->ul(MDD_PrivateDCDataDescriptor); } -PrivateDCDataDescriptor::PrivateDCDataDescriptor(const PrivateDCDataDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict) +PrivateDCDataDescriptor::PrivateDCDataDescriptor(const PrivateDCDataDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_PrivateDCDataDescriptor); @@ -4021,6 +4287,13 @@ PrivateDCDataDescriptor::Copy(const PrivateDCDataDescriptor& rhs) } // +InterchangeObject* +PrivateDCDataDescriptor::Clone() const +{ + return new PrivateDCDataDescriptor(*this); +} + +// void PrivateDCDataDescriptor::Dump(FILE* stream) { @@ -4052,13 +4325,13 @@ PrivateDCDataDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -DolbyAtmosSubDescriptor::DolbyAtmosSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), FirstFrame(0), MaxChannelCount(0), MaxObjectCount(0), AtmosVersion(0) +DolbyAtmosSubDescriptor::DolbyAtmosSubDescriptor(const Dictionary* d) : InterchangeObject(d), FirstFrame(0), MaxChannelCount(0), MaxObjectCount(0), AtmosVersion(0) { assert(m_Dict); m_UL = m_Dict->ul(MDD_DolbyAtmosSubDescriptor); } -DolbyAtmosSubDescriptor::DolbyAtmosSubDescriptor(const DolbyAtmosSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) +DolbyAtmosSubDescriptor::DolbyAtmosSubDescriptor(const DolbyAtmosSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_DolbyAtmosSubDescriptor); @@ -4107,6 +4380,13 @@ DolbyAtmosSubDescriptor::Copy(const DolbyAtmosSubDescriptor& rhs) } // +InterchangeObject* +DolbyAtmosSubDescriptor::Clone() const +{ + return new DolbyAtmosSubDescriptor(*this); +} + +// void DolbyAtmosSubDescriptor::Dump(FILE* stream) { @@ -4143,13 +4423,13 @@ DolbyAtmosSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -ACESPictureSubDescriptor::ACESPictureSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) +ACESPictureSubDescriptor::ACESPictureSubDescriptor(const Dictionary* d) : InterchangeObject(d) { assert(m_Dict); m_UL = m_Dict->ul(MDD_ACESPictureSubDescriptor); } -ACESPictureSubDescriptor::ACESPictureSubDescriptor(const ACESPictureSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) +ACESPictureSubDescriptor::ACESPictureSubDescriptor(const ACESPictureSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_ACESPictureSubDescriptor); @@ -4213,6 +4493,13 @@ ACESPictureSubDescriptor::Copy(const ACESPictureSubDescriptor& rhs) } // +InterchangeObject* +ACESPictureSubDescriptor::Clone() const +{ + return new ACESPictureSubDescriptor(*this); +} + +// void ACESPictureSubDescriptor::Dump(FILE* stream) { @@ -4259,13 +4546,13 @@ ACESPictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -TargetFrameSubDescriptor::TargetFrameSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), TargetFrameIndex(0), TargetFrameComponentMaxRef(0), TargetFrameComponentMinRef(0), TargetFrameEssenceStreamID(0) +TargetFrameSubDescriptor::TargetFrameSubDescriptor(const Dictionary* d) : InterchangeObject(d), TargetFrameIndex(0), TargetFrameComponentMaxRef(0), TargetFrameComponentMinRef(0), TargetFrameEssenceStreamID(0) { assert(m_Dict); m_UL = m_Dict->ul(MDD_TargetFrameSubDescriptor); } -TargetFrameSubDescriptor::TargetFrameSubDescriptor(const TargetFrameSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) +TargetFrameSubDescriptor::TargetFrameSubDescriptor(const TargetFrameSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_TargetFrameSubDescriptor); @@ -4335,6 +4622,13 @@ TargetFrameSubDescriptor::Copy(const TargetFrameSubDescriptor& rhs) } // +InterchangeObject* +TargetFrameSubDescriptor::Clone() const +{ + return new TargetFrameSubDescriptor(*this); +} + +// void TargetFrameSubDescriptor::Dump(FILE* stream) { @@ -4380,13 +4674,13 @@ TargetFrameSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -TextBasedDMFramework::TextBasedDMFramework(const Dictionary*& d) : DescriptiveFramework(d), m_Dict(d) +TextBasedDMFramework::TextBasedDMFramework(const Dictionary* d) : DescriptiveFramework(d) { assert(m_Dict); m_UL = m_Dict->ul(MDD_TextBasedDMFramework); } -TextBasedDMFramework::TextBasedDMFramework(const TextBasedDMFramework& rhs) : DescriptiveFramework(rhs.m_Dict), m_Dict(rhs.m_Dict) +TextBasedDMFramework::TextBasedDMFramework(const TextBasedDMFramework& rhs) : DescriptiveFramework(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_TextBasedDMFramework); @@ -4426,6 +4720,13 @@ TextBasedDMFramework::Copy(const TextBasedDMFramework& rhs) } // +InterchangeObject* +TextBasedDMFramework::Clone() const +{ + return new TextBasedDMFramework(*this); +} + +// void TextBasedDMFramework::Dump(FILE* stream) { @@ -4460,13 +4761,13 @@ TextBasedDMFramework::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -TextBasedObject::TextBasedObject(const Dictionary*& d) : DescriptiveObject(d), m_Dict(d) +TextBasedObject::TextBasedObject(const Dictionary* d) : DescriptiveObject(d) { assert(m_Dict); m_UL = m_Dict->ul(MDD_TextBasedObject); } -TextBasedObject::TextBasedObject(const TextBasedObject& rhs) : DescriptiveObject(rhs.m_Dict), m_Dict(rhs.m_Dict) +TextBasedObject::TextBasedObject(const TextBasedObject& rhs) : DescriptiveObject(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_TextBasedObject); @@ -4515,6 +4816,13 @@ TextBasedObject::Copy(const TextBasedObject& rhs) } // +InterchangeObject* +TextBasedObject::Clone() const +{ + return new TextBasedObject(*this); +} + +// void TextBasedObject::Dump(FILE* stream) { @@ -4552,13 +4860,13 @@ TextBasedObject::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -GenericStreamTextBasedSet::GenericStreamTextBasedSet(const Dictionary*& d) : TextBasedObject(d), m_Dict(d), GenericStreamSID(0) +GenericStreamTextBasedSet::GenericStreamTextBasedSet(const Dictionary* d) : TextBasedObject(d), GenericStreamSID(0) { assert(m_Dict); m_UL = m_Dict->ul(MDD_GenericStreamTextBasedSet); } -GenericStreamTextBasedSet::GenericStreamTextBasedSet(const GenericStreamTextBasedSet& rhs) : TextBasedObject(rhs.m_Dict), m_Dict(rhs.m_Dict) +GenericStreamTextBasedSet::GenericStreamTextBasedSet(const GenericStreamTextBasedSet& rhs) : TextBasedObject(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_GenericStreamTextBasedSet); @@ -4595,6 +4903,13 @@ GenericStreamTextBasedSet::Copy(const GenericStreamTextBasedSet& rhs) } // +InterchangeObject* +GenericStreamTextBasedSet::Clone() const +{ + return new GenericStreamTextBasedSet(*this); +} + +// void GenericStreamTextBasedSet::Dump(FILE* stream) { @@ -4627,13 +4942,13 @@ GenericStreamTextBasedSet::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -ISXDDataEssenceDescriptor::ISXDDataEssenceDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d) +ISXDDataEssenceDescriptor::ISXDDataEssenceDescriptor(const Dictionary* d) : GenericDataEssenceDescriptor(d) { assert(m_Dict); m_UL = m_Dict->ul(MDD_ISXDDataEssenceDescriptor); } -ISXDDataEssenceDescriptor::ISXDDataEssenceDescriptor(const ISXDDataEssenceDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict) +ISXDDataEssenceDescriptor::ISXDDataEssenceDescriptor(const ISXDDataEssenceDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_ISXDDataEssenceDescriptor); @@ -4670,6 +4985,13 @@ ISXDDataEssenceDescriptor::Copy(const ISXDDataEssenceDescriptor& rhs) } // +InterchangeObject* +ISXDDataEssenceDescriptor::Clone() const +{ + return new ISXDDataEssenceDescriptor(*this); +} + +// void ISXDDataEssenceDescriptor::Dump(FILE* stream) { @@ -4702,13 +5024,13 @@ ISXDDataEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -PHDRMetadataTrackSubDescriptor::PHDRMetadataTrackSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), SourceTrackID(0), SimplePayloadSID(0) +PHDRMetadataTrackSubDescriptor::PHDRMetadataTrackSubDescriptor(const Dictionary* d) : InterchangeObject(d), SourceTrackID(0), SimplePayloadSID(0) { assert(m_Dict); m_UL = m_Dict->ul(MDD_PHDRMetadataTrackSubDescriptor); } -PHDRMetadataTrackSubDescriptor::PHDRMetadataTrackSubDescriptor(const PHDRMetadataTrackSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) +PHDRMetadataTrackSubDescriptor::PHDRMetadataTrackSubDescriptor(const PHDRMetadataTrackSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_PHDRMetadataTrackSubDescriptor); @@ -4751,6 +5073,13 @@ PHDRMetadataTrackSubDescriptor::Copy(const PHDRMetadataTrackSubDescriptor& rhs) } // +InterchangeObject* +PHDRMetadataTrackSubDescriptor::Clone() const +{ + return new PHDRMetadataTrackSubDescriptor(*this); +} + +// void PHDRMetadataTrackSubDescriptor::Dump(FILE* stream) { @@ -4785,13 +5114,13 @@ PHDRMetadataTrackSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -PIMFDynamicMetadataDescriptor::PIMFDynamicMetadataDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d), GlobalPayloadSID(0) +PIMFDynamicMetadataDescriptor::PIMFDynamicMetadataDescriptor(const Dictionary* d) : GenericDataEssenceDescriptor(d), GlobalPayloadSID(0) { assert(m_Dict); m_UL = m_Dict->ul(MDD_PIMFDynamicMetadataDescriptor); } -PIMFDynamicMetadataDescriptor::PIMFDynamicMetadataDescriptor(const PIMFDynamicMetadataDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict) +PIMFDynamicMetadataDescriptor::PIMFDynamicMetadataDescriptor(const PIMFDynamicMetadataDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_PIMFDynamicMetadataDescriptor); @@ -4828,6 +5157,13 @@ PIMFDynamicMetadataDescriptor::Copy(const PIMFDynamicMetadataDescriptor& rhs) } // +InterchangeObject* +PIMFDynamicMetadataDescriptor::Clone() const +{ + return new PIMFDynamicMetadataDescriptor(*this); +} + +// void PIMFDynamicMetadataDescriptor::Dump(FILE* stream) { @@ -4860,13 +5196,13 @@ PIMFDynamicMetadataDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -IABEssenceDescriptor::IABEssenceDescriptor(const Dictionary*& d) : GenericSoundEssenceDescriptor(d), m_Dict(d) +IABEssenceDescriptor::IABEssenceDescriptor(const Dictionary* d) : GenericSoundEssenceDescriptor(d) { assert(m_Dict); m_UL = m_Dict->ul(MDD_IABEssenceDescriptor); } -IABEssenceDescriptor::IABEssenceDescriptor(const IABEssenceDescriptor& rhs) : GenericSoundEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict) +IABEssenceDescriptor::IABEssenceDescriptor(const IABEssenceDescriptor& rhs) : GenericSoundEssenceDescriptor(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_IABEssenceDescriptor); @@ -4900,6 +5236,13 @@ IABEssenceDescriptor::Copy(const IABEssenceDescriptor& rhs) } // +InterchangeObject* +IABEssenceDescriptor::Clone() const +{ + return new IABEssenceDescriptor(*this); +} + +// void IABEssenceDescriptor::Dump(FILE* stream) { @@ -4931,13 +5274,13 @@ IABEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -IABSoundfieldLabelSubDescriptor::IABSoundfieldLabelSubDescriptor(const Dictionary*& d) : MCALabelSubDescriptor(d), m_Dict(d) +IABSoundfieldLabelSubDescriptor::IABSoundfieldLabelSubDescriptor(const Dictionary* d) : MCALabelSubDescriptor(d) { assert(m_Dict); m_UL = m_Dict->ul(MDD_IABSoundfieldLabelSubDescriptor); } -IABSoundfieldLabelSubDescriptor::IABSoundfieldLabelSubDescriptor(const IABSoundfieldLabelSubDescriptor& rhs) : MCALabelSubDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict) +IABSoundfieldLabelSubDescriptor::IABSoundfieldLabelSubDescriptor(const IABSoundfieldLabelSubDescriptor& rhs) : MCALabelSubDescriptor(rhs.m_Dict) { assert(m_Dict); m_UL = m_Dict->ul(MDD_IABSoundfieldLabelSubDescriptor); @@ -4971,6 +5314,13 @@ IABSoundfieldLabelSubDescriptor::Copy(const IABSoundfieldLabelSubDescriptor& rhs } // +InterchangeObject* +IABSoundfieldLabelSubDescriptor::Clone() const +{ + return new IABSoundfieldLabelSubDescriptor(*this); +} + +// void IABSoundfieldLabelSubDescriptor::Dump(FILE* stream) { diff --git a/src/Metadata.h b/src/Metadata.h index ab11034..e559909 100755..100644 --- a/src/Metadata.h +++ b/src/Metadata.h @@ -1,5 +1,5 @@ /* -Copyright (c) 2005-2017, John Hurst +Copyright (c) 2005-2021, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -38,7 +38,7 @@ namespace ASDCP { namespace MXF { - void Metadata_InitTypes(const Dictionary*& Dict); + void Metadata_InitTypes(const Dictionary* Dict); // @@ -48,7 +48,6 @@ namespace ASDCP Identification(); public: - const Dictionary*& m_Dict; UUID ThisGenerationUID; UTF16String CompanyName; UTF16String ProductName; @@ -59,12 +58,13 @@ namespace ASDCP VersionType ToolkitVersion; optional_property<UTF16String > Platform; - Identification(const Dictionary*& d); + Identification(const Dictionary* d); Identification(const Identification& rhs); virtual ~Identification() {} const Identification& operator=(const Identification& rhs) { Copy(rhs); return *this; } virtual void Copy(const Identification& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "Identification"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -79,16 +79,16 @@ namespace ASDCP ContentStorage(); public: - const Dictionary*& m_Dict; Batch<UUID> Packages; Batch<UUID> EssenceContainerData; - ContentStorage(const Dictionary*& d); + ContentStorage(const Dictionary* d); ContentStorage(const ContentStorage& rhs); virtual ~ContentStorage() {} const ContentStorage& operator=(const ContentStorage& rhs) { Copy(rhs); return *this; } virtual void Copy(const ContentStorage& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "ContentStorage"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -103,17 +103,17 @@ namespace ASDCP EssenceContainerData(); public: - const Dictionary*& m_Dict; UMID LinkedPackageUID; optional_property<ui32_t > IndexSID; ui32_t BodySID; - EssenceContainerData(const Dictionary*& d); + EssenceContainerData(const Dictionary* d); EssenceContainerData(const EssenceContainerData& rhs); virtual ~EssenceContainerData() {} const EssenceContainerData& operator=(const EssenceContainerData& rhs) { Copy(rhs); return *this; } virtual void Copy(const EssenceContainerData& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "EssenceContainerData"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -128,19 +128,19 @@ namespace ASDCP GenericPackage(); public: - const Dictionary*& m_Dict; UMID PackageUID; optional_property<UTF16String > Name; Kumu::Timestamp PackageCreationDate; Kumu::Timestamp PackageModifiedDate; Array<UUID> Tracks; - GenericPackage(const Dictionary*& d); + GenericPackage(const Dictionary* d); GenericPackage(const GenericPackage& rhs); virtual ~GenericPackage() {} const GenericPackage& operator=(const GenericPackage& rhs) { Copy(rhs); return *this; } virtual void Copy(const GenericPackage& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "GenericPackage"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -153,15 +153,15 @@ namespace ASDCP MaterialPackage(); public: - const Dictionary*& m_Dict; optional_property<UUID > PackageMarker; - MaterialPackage(const Dictionary*& d); + MaterialPackage(const Dictionary* d); MaterialPackage(const MaterialPackage& rhs); virtual ~MaterialPackage() {} const MaterialPackage& operator=(const MaterialPackage& rhs) { Copy(rhs); return *this; } virtual void Copy(const MaterialPackage& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "MaterialPackage"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -176,15 +176,15 @@ namespace ASDCP SourcePackage(); public: - const Dictionary*& m_Dict; UUID Descriptor; - SourcePackage(const Dictionary*& d); + SourcePackage(const Dictionary* d); SourcePackage(const SourcePackage& rhs); virtual ~SourcePackage() {} const SourcePackage& operator=(const SourcePackage& rhs) { Copy(rhs); return *this; } virtual void Copy(const SourcePackage& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "SourcePackage"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -199,18 +199,18 @@ namespace ASDCP GenericTrack(); public: - const Dictionary*& m_Dict; ui32_t TrackID; ui32_t TrackNumber; optional_property<UTF16String > TrackName; optional_property<UUID > Sequence; - GenericTrack(const Dictionary*& d); + GenericTrack(const Dictionary* d); GenericTrack(const GenericTrack& rhs); virtual ~GenericTrack() {} const GenericTrack& operator=(const GenericTrack& rhs) { Copy(rhs); return *this; } virtual void Copy(const GenericTrack& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "GenericTrack"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -223,14 +223,14 @@ namespace ASDCP StaticTrack(); public: - const Dictionary*& m_Dict; - StaticTrack(const Dictionary*& d); + StaticTrack(const Dictionary* d); StaticTrack(const StaticTrack& rhs); virtual ~StaticTrack() {} const StaticTrack& operator=(const StaticTrack& rhs) { Copy(rhs); return *this; } virtual void Copy(const StaticTrack& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "StaticTrack"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -245,16 +245,16 @@ namespace ASDCP Track(); public: - const Dictionary*& m_Dict; Rational EditRate; ui64_t Origin; - Track(const Dictionary*& d); + Track(const Dictionary* d); Track(const Track& rhs); virtual ~Track() {} const Track& operator=(const Track& rhs) { Copy(rhs); return *this; } virtual void Copy(const Track& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "Track"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -269,16 +269,16 @@ namespace ASDCP StructuralComponent(); public: - const Dictionary*& m_Dict; UL DataDefinition; optional_property<ui64_t > Duration; - StructuralComponent(const Dictionary*& d); + StructuralComponent(const Dictionary* d); StructuralComponent(const StructuralComponent& rhs); virtual ~StructuralComponent() {} const StructuralComponent& operator=(const StructuralComponent& rhs) { Copy(rhs); return *this; } virtual void Copy(const StructuralComponent& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "StructuralComponent"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -291,15 +291,15 @@ namespace ASDCP Sequence(); public: - const Dictionary*& m_Dict; Array<UUID> StructuralComponents; - Sequence(const Dictionary*& d); + Sequence(const Dictionary* d); Sequence(const Sequence& rhs); virtual ~Sequence() {} const Sequence& operator=(const Sequence& rhs) { Copy(rhs); return *this; } virtual void Copy(const Sequence& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "Sequence"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -314,17 +314,17 @@ namespace ASDCP SourceClip(); public: - const Dictionary*& m_Dict; ui64_t StartPosition; UMID SourcePackageID; ui32_t SourceTrackID; - SourceClip(const Dictionary*& d); + SourceClip(const Dictionary* d); SourceClip(const SourceClip& rhs); virtual ~SourceClip() {} const SourceClip& operator=(const SourceClip& rhs) { Copy(rhs); return *this; } virtual void Copy(const SourceClip& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "SourceClip"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -339,17 +339,17 @@ namespace ASDCP TimecodeComponent(); public: - const Dictionary*& m_Dict; ui16_t RoundedTimecodeBase; ui64_t StartTimecode; ui8_t DropFrame; - TimecodeComponent(const Dictionary*& d); + TimecodeComponent(const Dictionary* d); TimecodeComponent(const TimecodeComponent& rhs); virtual ~TimecodeComponent() {} const TimecodeComponent& operator=(const TimecodeComponent& rhs) { Copy(rhs); return *this; } virtual void Copy(const TimecodeComponent& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "TimecodeComponent"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -364,16 +364,16 @@ namespace ASDCP GenericDescriptor(); public: - const Dictionary*& m_Dict; Array<UUID> Locators; Array<UUID> SubDescriptors; - GenericDescriptor(const Dictionary*& d); + GenericDescriptor(const Dictionary* d); GenericDescriptor(const GenericDescriptor& rhs); virtual ~GenericDescriptor() {} const GenericDescriptor& operator=(const GenericDescriptor& rhs) { Copy(rhs); return *this; } virtual void Copy(const GenericDescriptor& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "GenericDescriptor"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -386,19 +386,19 @@ namespace ASDCP FileDescriptor(); public: - const Dictionary*& m_Dict; optional_property<ui32_t > LinkedTrackID; Rational SampleRate; optional_property<ui64_t > ContainerDuration; UL EssenceContainer; optional_property<UL > Codec; - FileDescriptor(const Dictionary*& d); + FileDescriptor(const Dictionary* d); FileDescriptor(const FileDescriptor& rhs); virtual ~FileDescriptor() {} const FileDescriptor& operator=(const FileDescriptor& rhs) { Copy(rhs); return *this; } virtual void Copy(const FileDescriptor& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "FileDescriptor"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -413,7 +413,6 @@ namespace ASDCP GenericSoundEssenceDescriptor(); public: - const Dictionary*& m_Dict; Rational AudioSamplingRate; ui8_t Locked; optional_property<ui8_t > AudioRefLevel; @@ -425,12 +424,13 @@ namespace ASDCP optional_property<ui8_t > ReferenceAudioAlignmentLevel; optional_property<Rational > ReferenceImageEditRate; - GenericSoundEssenceDescriptor(const Dictionary*& d); + GenericSoundEssenceDescriptor(const Dictionary* d); GenericSoundEssenceDescriptor(const GenericSoundEssenceDescriptor& rhs); virtual ~GenericSoundEssenceDescriptor() {} const GenericSoundEssenceDescriptor& operator=(const GenericSoundEssenceDescriptor& rhs) { Copy(rhs); return *this; } virtual void Copy(const GenericSoundEssenceDescriptor& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "GenericSoundEssenceDescriptor"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -445,18 +445,18 @@ namespace ASDCP WaveAudioDescriptor(); public: - const Dictionary*& m_Dict; ui16_t BlockAlign; optional_property<ui8_t > SequenceOffset; ui32_t AvgBps; optional_property<UL > ChannelAssignment; - WaveAudioDescriptor(const Dictionary*& d); + WaveAudioDescriptor(const Dictionary* d); WaveAudioDescriptor(const WaveAudioDescriptor& rhs); virtual ~WaveAudioDescriptor() {} const WaveAudioDescriptor& operator=(const WaveAudioDescriptor& rhs) { Copy(rhs); return *this; } virtual void Copy(const WaveAudioDescriptor& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "WaveAudioDescriptor"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -471,7 +471,6 @@ namespace ASDCP GenericPictureEssenceDescriptor(); public: - const Dictionary*& m_Dict; optional_property<ui8_t > SignalStandard; ui8_t FrameLayout; ui32_t StoredWidth; @@ -508,12 +507,13 @@ namespace ASDCP optional_property<ui32_t > MasteringDisplayMaximumLuminance; optional_property<ui32_t > MasteringDisplayMinimumLuminance; - GenericPictureEssenceDescriptor(const Dictionary*& d); + GenericPictureEssenceDescriptor(const Dictionary* d); GenericPictureEssenceDescriptor(const GenericPictureEssenceDescriptor& rhs); virtual ~GenericPictureEssenceDescriptor() {} const GenericPictureEssenceDescriptor& operator=(const GenericPictureEssenceDescriptor& rhs) { Copy(rhs); return *this; } virtual void Copy(const GenericPictureEssenceDescriptor& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "GenericPictureEssenceDescriptor"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -528,7 +528,6 @@ namespace ASDCP RGBAEssenceDescriptor(); public: - const Dictionary*& m_Dict; optional_property<ui32_t > ComponentMaxRef; optional_property<ui32_t > ComponentMinRef; optional_property<ui32_t > AlphaMinRef; @@ -536,12 +535,13 @@ namespace ASDCP optional_property<ui8_t > ScanningDirection; RGBALayout PixelLayout; - RGBAEssenceDescriptor(const Dictionary*& d); + RGBAEssenceDescriptor(const Dictionary* d); RGBAEssenceDescriptor(const RGBAEssenceDescriptor& rhs); virtual ~RGBAEssenceDescriptor() {} const RGBAEssenceDescriptor& operator=(const RGBAEssenceDescriptor& rhs) { Copy(rhs); return *this; } virtual void Copy(const RGBAEssenceDescriptor& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "RGBAEssenceDescriptor"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -556,7 +556,6 @@ namespace ASDCP JPEG2000PictureSubDescriptor(); public: - const Dictionary*& m_Dict; ui16_t Rsize; ui32_t Xsize; ui32_t Ysize; @@ -575,12 +574,13 @@ namespace ASDCP optional_property<Array<Kumu::ArchivableUi16> > J2KProfile; optional_property<Array<Kumu::ArchivableUi16> > J2KCorrespondingProfile; - JPEG2000PictureSubDescriptor(const Dictionary*& d); + JPEG2000PictureSubDescriptor(const Dictionary* d); JPEG2000PictureSubDescriptor(const JPEG2000PictureSubDescriptor& rhs); virtual ~JPEG2000PictureSubDescriptor() {} const JPEG2000PictureSubDescriptor& operator=(const JPEG2000PictureSubDescriptor& rhs) { Copy(rhs); return *this; } virtual void Copy(const JPEG2000PictureSubDescriptor& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "JPEG2000PictureSubDescriptor"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -595,7 +595,6 @@ namespace ASDCP CDCIEssenceDescriptor(); public: - const Dictionary*& m_Dict; ui32_t ComponentDepth; ui32_t HorizontalSubsampling; optional_property<ui32_t > VerticalSubsampling; @@ -607,12 +606,13 @@ namespace ASDCP optional_property<ui32_t > WhiteReflevel; optional_property<ui32_t > ColorRange; - CDCIEssenceDescriptor(const Dictionary*& d); + CDCIEssenceDescriptor(const Dictionary* d); CDCIEssenceDescriptor(const CDCIEssenceDescriptor& rhs); virtual ~CDCIEssenceDescriptor() {} const CDCIEssenceDescriptor& operator=(const CDCIEssenceDescriptor& rhs) { Copy(rhs); return *this; } virtual void Copy(const CDCIEssenceDescriptor& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "CDCIEssenceDescriptor"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -627,7 +627,6 @@ namespace ASDCP MPEG2VideoDescriptor(); public: - const Dictionary*& m_Dict; optional_property<ui8_t > SingleSequence; optional_property<ui8_t > ConstantBFrames; optional_property<ui8_t > CodedContentType; @@ -639,12 +638,13 @@ namespace ASDCP optional_property<ui32_t > BitRate; optional_property<ui8_t > ProfileAndLevel; - MPEG2VideoDescriptor(const Dictionary*& d); + MPEG2VideoDescriptor(const Dictionary* d); MPEG2VideoDescriptor(const MPEG2VideoDescriptor& rhs); virtual ~MPEG2VideoDescriptor() {} const MPEG2VideoDescriptor& operator=(const MPEG2VideoDescriptor& rhs) { Copy(rhs); return *this; } virtual void Copy(const MPEG2VideoDescriptor& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "MPEG2VideoDescriptor"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -659,19 +659,19 @@ namespace ASDCP DMSegment(); public: - const Dictionary*& m_Dict; UL DataDefinition; optional_property<ui64_t > Duration; optional_property<ui64_t > EventStartPosition; optional_property<UTF16String > EventComment; UUID DMFramework; - DMSegment(const Dictionary*& d); + DMSegment(const Dictionary* d); DMSegment(const DMSegment& rhs); virtual ~DMSegment() {} const DMSegment& operator=(const DMSegment& rhs) { Copy(rhs); return *this; } virtual void Copy(const DMSegment& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "DMSegment"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -686,15 +686,15 @@ namespace ASDCP CryptographicFramework(); public: - const Dictionary*& m_Dict; UUID ContextSR; - CryptographicFramework(const Dictionary*& d); + CryptographicFramework(const Dictionary* d); CryptographicFramework(const CryptographicFramework& rhs); virtual ~CryptographicFramework() {} const CryptographicFramework& operator=(const CryptographicFramework& rhs) { Copy(rhs); return *this; } virtual void Copy(const CryptographicFramework& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "CryptographicFramework"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -709,19 +709,19 @@ namespace ASDCP CryptographicContext(); public: - const Dictionary*& m_Dict; UUID ContextID; UL SourceEssenceContainer; UL CipherAlgorithm; UL MICAlgorithm; UUID CryptographicKeyID; - CryptographicContext(const Dictionary*& d); + CryptographicContext(const Dictionary* d); CryptographicContext(const CryptographicContext& rhs); virtual ~CryptographicContext() {} const CryptographicContext& operator=(const CryptographicContext& rhs) { Copy(rhs); return *this; } virtual void Copy(const CryptographicContext& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "CryptographicContext"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -736,15 +736,15 @@ namespace ASDCP DescriptiveFramework(); public: - const Dictionary*& m_Dict; optional_property<UUID > LinkedDescriptiveFrameworkPlugInId; - DescriptiveFramework(const Dictionary*& d); + DescriptiveFramework(const Dictionary* d); DescriptiveFramework(const DescriptiveFramework& rhs); virtual ~DescriptiveFramework() {} const DescriptiveFramework& operator=(const DescriptiveFramework& rhs) { Copy(rhs); return *this; } virtual void Copy(const DescriptiveFramework& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "DescriptiveFramework"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -759,15 +759,15 @@ namespace ASDCP DescriptiveObject(); public: - const Dictionary*& m_Dict; optional_property<UUID > LinkedDescriptiveObjectPlugInId; - DescriptiveObject(const Dictionary*& d); + DescriptiveObject(const Dictionary* d); DescriptiveObject(const DescriptiveObject& rhs); virtual ~DescriptiveObject() {} const DescriptiveObject& operator=(const DescriptiveObject& rhs) { Copy(rhs); return *this; } virtual void Copy(const DescriptiveObject& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "DescriptiveObject"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -782,15 +782,15 @@ namespace ASDCP GenericDataEssenceDescriptor(); public: - const Dictionary*& m_Dict; UL DataEssenceCoding; - GenericDataEssenceDescriptor(const Dictionary*& d); + GenericDataEssenceDescriptor(const Dictionary* d); GenericDataEssenceDescriptor(const GenericDataEssenceDescriptor& rhs); virtual ~GenericDataEssenceDescriptor() {} const GenericDataEssenceDescriptor& operator=(const GenericDataEssenceDescriptor& rhs) { Copy(rhs); return *this; } virtual void Copy(const GenericDataEssenceDescriptor& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "GenericDataEssenceDescriptor"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -805,7 +805,6 @@ namespace ASDCP TimedTextDescriptor(); public: - const Dictionary*& m_Dict; UUID ResourceID; UTF16String UCSEncoding; UTF16String NamespaceURI; @@ -814,12 +813,13 @@ namespace ASDCP optional_property<UTF16String > IntrinsicPictureResolution; optional_property<ui8_t > ZPositionInUse; - TimedTextDescriptor(const Dictionary*& d); + TimedTextDescriptor(const Dictionary* d); TimedTextDescriptor(const TimedTextDescriptor& rhs); virtual ~TimedTextDescriptor() {} const TimedTextDescriptor& operator=(const TimedTextDescriptor& rhs) { Copy(rhs); return *this; } virtual void Copy(const TimedTextDescriptor& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "TimedTextDescriptor"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -834,17 +834,17 @@ namespace ASDCP TimedTextResourceSubDescriptor(); public: - const Dictionary*& m_Dict; UUID AncillaryResourceID; UTF16String MIMEMediaType; ui32_t EssenceStreamID; - TimedTextResourceSubDescriptor(const Dictionary*& d); + TimedTextResourceSubDescriptor(const Dictionary* d); TimedTextResourceSubDescriptor(const TimedTextResourceSubDescriptor& rhs); virtual ~TimedTextResourceSubDescriptor() {} const TimedTextResourceSubDescriptor& operator=(const TimedTextResourceSubDescriptor& rhs) { Copy(rhs); return *this; } virtual void Copy(const TimedTextResourceSubDescriptor& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "TimedTextResourceSubDescriptor"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -859,14 +859,14 @@ namespace ASDCP StereoscopicPictureSubDescriptor(); public: - const Dictionary*& m_Dict; - StereoscopicPictureSubDescriptor(const Dictionary*& d); + StereoscopicPictureSubDescriptor(const Dictionary* d); StereoscopicPictureSubDescriptor(const StereoscopicPictureSubDescriptor& rhs); virtual ~StereoscopicPictureSubDescriptor() {} const StereoscopicPictureSubDescriptor& operator=(const StereoscopicPictureSubDescriptor& rhs) { Copy(rhs); return *this; } virtual void Copy(const StereoscopicPictureSubDescriptor& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "StereoscopicPictureSubDescriptor"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -881,14 +881,14 @@ namespace ASDCP ContainerConstraintsSubDescriptor(); public: - const Dictionary*& m_Dict; - ContainerConstraintsSubDescriptor(const Dictionary*& d); + ContainerConstraintsSubDescriptor(const Dictionary* d); ContainerConstraintsSubDescriptor(const ContainerConstraintsSubDescriptor& rhs); virtual ~ContainerConstraintsSubDescriptor() {} const ContainerConstraintsSubDescriptor& operator=(const ContainerConstraintsSubDescriptor& rhs) { Copy(rhs); return *this; } virtual void Copy(const ContainerConstraintsSubDescriptor& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "ContainerConstraintsSubDescriptor"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -903,15 +903,15 @@ namespace ASDCP NetworkLocator(); public: - const Dictionary*& m_Dict; UTF16String URLString; - NetworkLocator(const Dictionary*& d); + NetworkLocator(const Dictionary* d); NetworkLocator(const NetworkLocator& rhs); virtual ~NetworkLocator() {} const NetworkLocator& operator=(const NetworkLocator& rhs) { Copy(rhs); return *this; } virtual void Copy(const NetworkLocator& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "NetworkLocator"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -926,7 +926,6 @@ namespace ASDCP MCALabelSubDescriptor(); public: - const Dictionary*& m_Dict; UL MCALabelDictionaryID; UUID MCALinkID; UTF16String MCATagSymbol; @@ -942,12 +941,13 @@ namespace ASDCP optional_property<UTF16String > MCAAudioContentKind; optional_property<UTF16String > MCAAudioElementKind; - MCALabelSubDescriptor(const Dictionary*& d); + MCALabelSubDescriptor(const Dictionary* d); MCALabelSubDescriptor(const MCALabelSubDescriptor& rhs); virtual ~MCALabelSubDescriptor() {} const MCALabelSubDescriptor& operator=(const MCALabelSubDescriptor& rhs) { Copy(rhs); return *this; } virtual void Copy(const MCALabelSubDescriptor& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "MCALabelSubDescriptor"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -962,15 +962,15 @@ namespace ASDCP AudioChannelLabelSubDescriptor(); public: - const Dictionary*& m_Dict; optional_property<UUID > SoundfieldGroupLinkID; - AudioChannelLabelSubDescriptor(const Dictionary*& d); + AudioChannelLabelSubDescriptor(const Dictionary* d); AudioChannelLabelSubDescriptor(const AudioChannelLabelSubDescriptor& rhs); virtual ~AudioChannelLabelSubDescriptor() {} const AudioChannelLabelSubDescriptor& operator=(const AudioChannelLabelSubDescriptor& rhs) { Copy(rhs); return *this; } virtual void Copy(const AudioChannelLabelSubDescriptor& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "AudioChannelLabelSubDescriptor"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -985,15 +985,15 @@ namespace ASDCP SoundfieldGroupLabelSubDescriptor(); public: - const Dictionary*& m_Dict; optional_property<Array<UUID> > GroupOfSoundfieldGroupsLinkID; - SoundfieldGroupLabelSubDescriptor(const Dictionary*& d); + SoundfieldGroupLabelSubDescriptor(const Dictionary* d); SoundfieldGroupLabelSubDescriptor(const SoundfieldGroupLabelSubDescriptor& rhs); virtual ~SoundfieldGroupLabelSubDescriptor() {} const SoundfieldGroupLabelSubDescriptor& operator=(const SoundfieldGroupLabelSubDescriptor& rhs) { Copy(rhs); return *this; } virtual void Copy(const SoundfieldGroupLabelSubDescriptor& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "SoundfieldGroupLabelSubDescriptor"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -1008,14 +1008,14 @@ namespace ASDCP GroupOfSoundfieldGroupsLabelSubDescriptor(); public: - const Dictionary*& m_Dict; - GroupOfSoundfieldGroupsLabelSubDescriptor(const Dictionary*& d); + GroupOfSoundfieldGroupsLabelSubDescriptor(const Dictionary* d); GroupOfSoundfieldGroupsLabelSubDescriptor(const GroupOfSoundfieldGroupsLabelSubDescriptor& rhs); virtual ~GroupOfSoundfieldGroupsLabelSubDescriptor() {} const GroupOfSoundfieldGroupsLabelSubDescriptor& operator=(const GroupOfSoundfieldGroupsLabelSubDescriptor& rhs) { Copy(rhs); return *this; } virtual void Copy(const GroupOfSoundfieldGroupsLabelSubDescriptor& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "GroupOfSoundfieldGroupsLabelSubDescriptor"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -1030,14 +1030,14 @@ namespace ASDCP DCDataDescriptor(); public: - const Dictionary*& m_Dict; - DCDataDescriptor(const Dictionary*& d); + DCDataDescriptor(const Dictionary* d); DCDataDescriptor(const DCDataDescriptor& rhs); virtual ~DCDataDescriptor() {} const DCDataDescriptor& operator=(const DCDataDescriptor& rhs) { Copy(rhs); return *this; } virtual void Copy(const DCDataDescriptor& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "DCDataDescriptor"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -1052,14 +1052,14 @@ namespace ASDCP PrivateDCDataDescriptor(); public: - const Dictionary*& m_Dict; - PrivateDCDataDescriptor(const Dictionary*& d); + PrivateDCDataDescriptor(const Dictionary* d); PrivateDCDataDescriptor(const PrivateDCDataDescriptor& rhs); virtual ~PrivateDCDataDescriptor() {} const PrivateDCDataDescriptor& operator=(const PrivateDCDataDescriptor& rhs) { Copy(rhs); return *this; } virtual void Copy(const PrivateDCDataDescriptor& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "PrivateDCDataDescriptor"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -1074,19 +1074,19 @@ namespace ASDCP DolbyAtmosSubDescriptor(); public: - const Dictionary*& m_Dict; UUID AtmosID; ui32_t FirstFrame; ui16_t MaxChannelCount; ui16_t MaxObjectCount; ui8_t AtmosVersion; - DolbyAtmosSubDescriptor(const Dictionary*& d); + DolbyAtmosSubDescriptor(const Dictionary* d); DolbyAtmosSubDescriptor(const DolbyAtmosSubDescriptor& rhs); virtual ~DolbyAtmosSubDescriptor() {} const DolbyAtmosSubDescriptor& operator=(const DolbyAtmosSubDescriptor& rhs) { Copy(rhs); return *this; } virtual void Copy(const DolbyAtmosSubDescriptor& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "DolbyAtmosSubDescriptor"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -1101,19 +1101,19 @@ namespace ASDCP ACESPictureSubDescriptor(); public: - const Dictionary*& m_Dict; optional_property<UTF16String > ACESAuthoringInformation; optional_property<ThreeColorPrimaries > ACESMasteringDisplayPrimaries; optional_property<ColorPrimary > ACESMasteringDisplayWhitePointChromaticity; optional_property<ui32_t > ACESMasteringDisplayMaximumLuminance; optional_property<ui32_t > ACESMasteringDisplayMinimumLuminance; - ACESPictureSubDescriptor(const Dictionary*& d); + ACESPictureSubDescriptor(const Dictionary* d); ACESPictureSubDescriptor(const ACESPictureSubDescriptor& rhs); virtual ~ACESPictureSubDescriptor() {} const ACESPictureSubDescriptor& operator=(const ACESPictureSubDescriptor& rhs) { Copy(rhs); return *this; } virtual void Copy(const ACESPictureSubDescriptor& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "ACESPictureSubDescriptor"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -1128,7 +1128,6 @@ namespace ASDCP TargetFrameSubDescriptor(); public: - const Dictionary*& m_Dict; UUID TargetFrameAncillaryResourceID; UTF16String MediaType; ui64_t TargetFrameIndex; @@ -1140,12 +1139,13 @@ namespace ASDCP optional_property<UUID > ACESPictureSubDescriptorInstanceID; optional_property<UL > TargetFrameViewingEnvironment; - TargetFrameSubDescriptor(const Dictionary*& d); + TargetFrameSubDescriptor(const Dictionary* d); TargetFrameSubDescriptor(const TargetFrameSubDescriptor& rhs); virtual ~TargetFrameSubDescriptor() {} const TargetFrameSubDescriptor& operator=(const TargetFrameSubDescriptor& rhs) { Copy(rhs); return *this; } virtual void Copy(const TargetFrameSubDescriptor& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "TargetFrameSubDescriptor"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -1160,15 +1160,15 @@ namespace ASDCP TextBasedDMFramework(); public: - const Dictionary*& m_Dict; optional_property<UUID > ObjectRef; - TextBasedDMFramework(const Dictionary*& d); + TextBasedDMFramework(const Dictionary* d); TextBasedDMFramework(const TextBasedDMFramework& rhs); virtual ~TextBasedDMFramework() {} const TextBasedDMFramework& operator=(const TextBasedDMFramework& rhs) { Copy(rhs); return *this; } virtual void Copy(const TextBasedDMFramework& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "TextBasedDMFramework"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -1183,18 +1183,18 @@ namespace ASDCP TextBasedObject(); public: - const Dictionary*& m_Dict; UL PayloadSchemeID; UTF16String TextMIMEMediaType; UTF16String RFC5646TextLanguageCode; optional_property<UTF16String > TextDataDescription; - TextBasedObject(const Dictionary*& d); + TextBasedObject(const Dictionary* d); TextBasedObject(const TextBasedObject& rhs); virtual ~TextBasedObject() {} const TextBasedObject& operator=(const TextBasedObject& rhs) { Copy(rhs); return *this; } virtual void Copy(const TextBasedObject& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "TextBasedObject"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -1209,15 +1209,15 @@ namespace ASDCP GenericStreamTextBasedSet(); public: - const Dictionary*& m_Dict; ui32_t GenericStreamSID; - GenericStreamTextBasedSet(const Dictionary*& d); + GenericStreamTextBasedSet(const Dictionary* d); GenericStreamTextBasedSet(const GenericStreamTextBasedSet& rhs); virtual ~GenericStreamTextBasedSet() {} const GenericStreamTextBasedSet& operator=(const GenericStreamTextBasedSet& rhs) { Copy(rhs); return *this; } virtual void Copy(const GenericStreamTextBasedSet& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "GenericStreamTextBasedSet"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -1232,15 +1232,15 @@ namespace ASDCP ISXDDataEssenceDescriptor(); public: - const Dictionary*& m_Dict; ISO8String NamespaceURI; - ISXDDataEssenceDescriptor(const Dictionary*& d); + ISXDDataEssenceDescriptor(const Dictionary* d); ISXDDataEssenceDescriptor(const ISXDDataEssenceDescriptor& rhs); virtual ~ISXDDataEssenceDescriptor() {} const ISXDDataEssenceDescriptor& operator=(const ISXDDataEssenceDescriptor& rhs) { Copy(rhs); return *this; } virtual void Copy(const ISXDDataEssenceDescriptor& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "ISXDDataEssenceDescriptor"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -1255,17 +1255,17 @@ namespace ASDCP PHDRMetadataTrackSubDescriptor(); public: - const Dictionary*& m_Dict; UL DataDefinition; ui32_t SourceTrackID; ui32_t SimplePayloadSID; - PHDRMetadataTrackSubDescriptor(const Dictionary*& d); + PHDRMetadataTrackSubDescriptor(const Dictionary* d); PHDRMetadataTrackSubDescriptor(const PHDRMetadataTrackSubDescriptor& rhs); virtual ~PHDRMetadataTrackSubDescriptor() {} const PHDRMetadataTrackSubDescriptor& operator=(const PHDRMetadataTrackSubDescriptor& rhs) { Copy(rhs); return *this; } virtual void Copy(const PHDRMetadataTrackSubDescriptor& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "PHDRMetadataTrackSubDescriptor"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -1280,15 +1280,15 @@ namespace ASDCP PIMFDynamicMetadataDescriptor(); public: - const Dictionary*& m_Dict; ui32_t GlobalPayloadSID; - PIMFDynamicMetadataDescriptor(const Dictionary*& d); + PIMFDynamicMetadataDescriptor(const Dictionary* d); PIMFDynamicMetadataDescriptor(const PIMFDynamicMetadataDescriptor& rhs); virtual ~PIMFDynamicMetadataDescriptor() {} const PIMFDynamicMetadataDescriptor& operator=(const PIMFDynamicMetadataDescriptor& rhs) { Copy(rhs); return *this; } virtual void Copy(const PIMFDynamicMetadataDescriptor& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "PIMFDynamicMetadataDescriptor"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -1303,14 +1303,14 @@ namespace ASDCP IABEssenceDescriptor(); public: - const Dictionary*& m_Dict; - IABEssenceDescriptor(const Dictionary*& d); + IABEssenceDescriptor(const Dictionary* d); IABEssenceDescriptor(const IABEssenceDescriptor& rhs); virtual ~IABEssenceDescriptor() {} const IABEssenceDescriptor& operator=(const IABEssenceDescriptor& rhs) { Copy(rhs); return *this; } virtual void Copy(const IABEssenceDescriptor& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "IABEssenceDescriptor"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); @@ -1325,14 +1325,14 @@ namespace ASDCP IABSoundfieldLabelSubDescriptor(); public: - const Dictionary*& m_Dict; - IABSoundfieldLabelSubDescriptor(const Dictionary*& d); + IABSoundfieldLabelSubDescriptor(const Dictionary* d); IABSoundfieldLabelSubDescriptor(const IABSoundfieldLabelSubDescriptor& rhs); virtual ~IABSoundfieldLabelSubDescriptor() {} const IABSoundfieldLabelSubDescriptor& operator=(const IABSoundfieldLabelSubDescriptor& rhs) { Copy(rhs); return *this; } virtual void Copy(const IABSoundfieldLabelSubDescriptor& rhs); + virtual InterchangeObject *Clone() const; virtual const char* HasName() { return "IABSoundfieldLabelSubDescriptor"; } virtual Result_t InitFromTLVSet(TLVReader& TLVSet); virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); diff --git a/src/h__02_Reader.cpp b/src/h__02_Reader.cpp index b3c092b..ff4af7c 100644 --- a/src/h__02_Reader.cpp +++ b/src/h__02_Reader.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2011-2018, Robert Scheler, Heiko Sparenberg Fraunhofer IIS, +Copyright (c) 2011-2021, Robert Scheler, Heiko Sparenberg Fraunhofer IIS, John Hurst All rights reserved. @@ -63,9 +63,10 @@ AS_02::default_md_object_init() // -AS_02::MXF::AS02IndexReader::AS02IndexReader(const ASDCP::Dictionary*& d) : - m_Duration(0), m_BytesPerEditUnit(0), - ASDCP::MXF::Partition(d), m_Dict(d) {} +AS_02::MXF::AS02IndexReader::AS02IndexReader(const ASDCP::Dictionary* d) : + ASDCP::MXF::Partition(d), m_Duration(0), m_BytesPerEditUnit(0) { + assert(d); +} AS_02::MXF::AS02IndexReader::~AS02IndexReader() {} @@ -251,6 +252,7 @@ AS_02::MXF::AS02IndexReader::InitFromFile(const Kumu::FileReader& reader, const ASDCP::Result_t AS_02::MXF::AS02IndexReader::InitFromBuffer(const byte_t* p, ui32_t l, const ui64_t& body_offset, const ui64_t& essence_container_offset) { + assert(m_Dict); Result_t result = RESULT_OK; const byte_t* end_p = p + l; @@ -393,7 +395,8 @@ AS_02::MXF::AS02IndexReader::Lookup(ui32_t frame_num, ASDCP::MXF::IndexTableSegm // -AS_02::h__AS02Reader::h__AS02Reader(const ASDCP::Dictionary& d) : ASDCP::MXF::TrackFileReader<ASDCP::MXF::OP1aHeader, AS_02::MXF::AS02IndexReader>(d) {} +AS_02::h__AS02Reader::h__AS02Reader(const ASDCP::Dictionary *d) : + ASDCP::MXF::TrackFileReader<ASDCP::MXF::OP1aHeader, AS_02::MXF::AS02IndexReader>(d) {} AS_02::h__AS02Reader::~h__AS02Reader() {} diff --git a/src/h__02_Writer.cpp b/src/h__02_Writer.cpp index d7cfaa3..fbd2e20 100644 --- a/src/h__02_Writer.cpp +++ b/src/h__02_Writer.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2011-2018, Robert Scheler, Heiko Sparenberg Fraunhofer IIS, +Copyright (c) 2011-2021, Robert Scheler, Heiko Sparenberg Fraunhofer IIS, John Hurst All rights reserved. @@ -42,7 +42,7 @@ static const ui32_t CBRIndexEntriesPerSegment = 5000; //------------------------------------------------------------------------------------------ // -AS_02::MXF::AS02IndexWriterVBR::AS02IndexWriterVBR(const ASDCP::Dictionary*& d) : +AS_02::MXF::AS02IndexWriterVBR::AS02IndexWriterVBR(const ASDCP::Dictionary* d) : Partition(d), m_CurrentSegment(0), m_Dict(d), m_Lookup(0) { BodySID = 0; @@ -186,7 +186,7 @@ AS_02::MXF::AS02IndexWriterVBR::SetEditRate(const ASDCP::Rational& edit_rate) // // -AS_02::h__AS02WriterFrame::h__AS02WriterFrame(const ASDCP::Dictionary& d) : +AS_02::h__AS02WriterFrame::h__AS02WriterFrame(const ASDCP::Dictionary *d) : h__AS02Writer<AS_02::MXF::AS02IndexWriterVBR>(d), m_IndexStrategy(AS_02::IS_FOLLOW) {} AS_02::h__AS02WriterFrame::~h__AS02WriterFrame() {} @@ -236,7 +236,7 @@ AS_02::h__AS02WriterFrame::WriteEKLVPacket(const ASDCP::FrameBuffer& FrameBuf,co // -AS_02::MXF::AS02IndexWriterCBR::AS02IndexWriterCBR(const ASDCP::Dictionary*& d) : +AS_02::MXF::AS02IndexWriterCBR::AS02IndexWriterCBR(const ASDCP::Dictionary *d) : Partition(d), m_CurrentSegment(0), m_Dict(d), m_Lookup(0), m_Duration(0), m_SampleSize(0) { BodySID = 0; @@ -311,7 +311,7 @@ AS_02::MXF::AS02IndexWriterCBR::SetEditRate(const ASDCP::Rational& edit_rate, co // // -AS_02::h__AS02WriterClip::h__AS02WriterClip(const ASDCP::Dictionary& d) : +AS_02::h__AS02WriterClip::h__AS02WriterClip(const ASDCP::Dictionary* d) : h__AS02Writer<AS_02::MXF::AS02IndexWriterCBR>(d), m_ECStart(0), m_ClipStart(0), m_IndexStrategy(AS_02::IS_FOLLOW) {} diff --git a/src/h__Reader.cpp b/src/h__Reader.cpp index 77f532e..0e93257 100755 --- a/src/h__Reader.cpp +++ b/src/h__Reader.cpp @@ -64,7 +64,8 @@ ASDCP::default_md_object_init() // // -ASDCP::h__ASDCPReader::h__ASDCPReader(const Dictionary& d) : MXF::TrackFileReader<OP1aHeader, OPAtomIndexFooter>(d), m_BodyPart(m_Dict) {} +ASDCP::h__ASDCPReader::h__ASDCPReader(const Dictionary *d) : + MXF::TrackFileReader<OP1aHeader, OPAtomIndexFooter>(d), m_BodyPart(d) {} ASDCP::h__ASDCPReader::~h__ASDCPReader() {} diff --git a/src/h__Writer.cpp b/src/h__Writer.cpp index 0c56b4c..f6d49b6 100755 --- a/src/h__Writer.cpp +++ b/src/h__Writer.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2004-2018, John Hurst +Copyright (c) 2004-2021, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -46,7 +46,7 @@ ASDCP::derive_timecode_rate_from_edit_rate(const ASDCP::Rational& edit_rate) // add DMS CryptographicFramework entry to source package void ASDCP::AddDmsCrypt(Partition& HeaderPart, SourcePackage& Package, - WriterInfo& Descr, const UL& WrappingUL, const Dictionary*& Dict) + WriterInfo& Descr, const UL& WrappingUL, const Dictionary* Dict) { assert(Dict); // Essence Track @@ -102,7 +102,7 @@ id_batch_contains(const Array<Kumu::UUID>& batch, const Kumu::UUID& value) // Result_t ASDCP::AddDmsTrackGenericPartUtf8Text(Kumu::FileWriter& file_writer, MXF::OP1aHeader& header_part, - SourcePackage& source_package, MXF::RIP& rip, const Dictionary*& Dict) + SourcePackage& source_package, MXF::RIP& rip, const Dictionary* Dict) { Sequence* Sequence_obj = 0; InterchangeObject* tmp_iobj = 0; @@ -213,8 +213,8 @@ ASDCP::AddDmsTrackGenericPartUtf8Text(Kumu::FileWriter& file_writer, MXF::OP1aHe } // -ASDCP::h__ASDCPWriter::h__ASDCPWriter(const Dictionary& d) : - MXF::TrackFileWriter<OP1aHeader>(d), m_BodyPart(m_Dict), m_FooterPart(m_Dict) {} +ASDCP::h__ASDCPWriter::h__ASDCPWriter(const Dictionary* d) : + MXF::TrackFileWriter<OP1aHeader>(d), m_BodyPart(d), m_FooterPart(d) {} ASDCP::h__ASDCPWriter::~h__ASDCPWriter() {} |
