diff options
| author | John Hurst <jhurst@cinecert.com> | 2021-05-20 16:52:29 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-05-20 16:52:29 -0700 |
| commit | face28d822719aa6028ffca21097225c2a94e4ca (patch) | |
| tree | 9063c8d62dd0309632c69c86d00b77993efae615 | |
| parent | 7db1295803aa777fc9bfe3c0f1b06c75f183102e (diff) | |
| parent | e5b0a7dbeaaa2b16ea63d7265ed7413f8de2df10 (diff) | |
Merge pull request #84 from cinecert/mxf_types_constructor
Dictionary reference refactor
| -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 | 60 | ||||
| -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, 815 insertions, 412 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 c8cb19f..d034ffb 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 6876e5b..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_MetadataTrackSubDescriptor(0), m_EssenceSubDescriptor(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 ef87b27..6236ee6 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() {} @@ -304,7 +304,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, @@ -323,7 +323,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 9be5a33..39aaa2a 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 109940f..0608abd 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); } @@ -733,9 +733,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 d56f727..4cca5d5 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 @@ -254,7 +254,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*); @@ -372,7 +372,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()); } @@ -527,7 +527,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); } @@ -722,9 +722,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 a08d56a..f3d3c96 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_Dict(&d), m_HeaderPart(m_Dict), m_IndexAccess(m_Dict), m_RIP(m_Dict) + TrackFileReader(const Dictionary *d) : + m_HeaderPart(d), m_IndexAccess(d), m_RIP(d), m_Dict(d) { default_md_object_init(); } @@ -495,7 +495,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; @@ -518,7 +518,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)); @@ -609,8 +609,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) { @@ -908,7 +908,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); @@ -928,7 +928,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 85bd567..94c94ad 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,9 +1045,9 @@ ASDCP::MXF::OP1aHeader::Dump(FILE* stream) //------------------------------------------------------------------------------------------ // -ASDCP::MXF::OPAtomIndexFooter::OPAtomIndexFooter(const Dictionary*& d) : - Partition(d), m_CurrentSegment(0), m_BytesPerEditUnit(0), - m_BodySID(0), 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) { BodySID = 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; @@ -1818,7 +1852,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_ChannelCount(0), m_Dict(d) +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)))); @@ -1862,7 +1896,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 e807387..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) : - ASDCP::MXF::Partition(d), - m_Duration(0), m_BytesPerEditUnit(0), 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 ee759c2..e35727e 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 62a7565..ce2abf6 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 1274e20..5f836fe 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() {} |
