summaryrefslogtreecommitdiff
path: root/src/AS_02_ISXD.cpp
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/AS_02_ISXD.cpp
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/AS_02_ISXD.cpp')
-rw-r--r--src/AS_02_ISXD.cpp10
1 files changed, 5 insertions, 5 deletions
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,