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