summaryrefslogtreecommitdiff
path: root/src/MXF.cpp
diff options
context:
space:
mode:
authorjhurst <jhurst@cinecert.com>2005-12-20 19:16:21 +0000
committerjhurst <>2005-12-20 19:16:21 +0000
commitc6900386fb66832781456838804ed7e28c535d63 (patch)
tree3c387a66aec432229d1d987b9209e819bb80c5c3 /src/MXF.cpp
parentd440dbd72e7b3395c589a72e391eb33b6d2109f4 (diff)
pre-release commit
Diffstat (limited to 'src/MXF.cpp')
-rwxr-xr-xsrc/MXF.cpp48
1 files changed, 44 insertions, 4 deletions
diff --git a/src/MXF.cpp b/src/MXF.cpp
index 45570bb..a04cfe2 100755
--- a/src/MXF.cpp
+++ b/src/MXF.cpp
@@ -31,7 +31,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#define ASDCP_DECLARE_MDD
#include "MDD.h"
-
+#include "Mutex.h"
#include "MXF.h"
#include "Metadata.h"
#include <hex_utils.h>
@@ -673,6 +673,7 @@ ASDCP::MXF::OPAtomHeader::GetMDObjectByType(const byte_t* ObjectID, InterchangeO
return m_PacketList->GetMDObjectByType(ObjectID, Object);
}
+//
ASDCP::MXF::Identification*
ASDCP::MXF::OPAtomHeader::GetIdentification()
{
@@ -685,6 +686,18 @@ ASDCP::MXF::OPAtomHeader::GetIdentification()
}
//
+ASDCP::MXF::SourcePackage*
+ASDCP::MXF::OPAtomHeader::GetSourcePackage()
+{
+ InterchangeObject* Object;
+
+ if ( ASDCP_SUCCESS(GetMDObjectByType(OBJ_TYPE_ARGS(SourcePackage), &Object)) )
+ return (SourcePackage*)Object;
+
+ return 0;
+}
+
+//
ASDCP::Result_t
ASDCP::MXF::OPAtomHeader::WriteToFile(ASDCP::FileWriter& Writer, ui32_t HeaderSize)
{
@@ -974,10 +987,37 @@ enum FLT_t
};
//
-typedef std::map<ASDCP::UL, FLT_t> FactoryList;
-#define SETUP_IDX(t) const ui32_t FLT_##t = v;
+typedef std::map<ASDCP::UL, FLT_t>::iterator FLi_t;
+
+class FactoryList : public std::map<ASDCP::UL, FLT_t>
+{
+ ASDCP::Mutex m_Lock;
+public:
+ FactoryList() {}
+ ~FactoryList() {}
+
+ bool Empty() {
+ ASDCP::AutoMutex BlockLock(m_Lock);
+ return empty();
+ }
+
+ FLi_t Find(const byte_t* label) {
+ ASDCP::AutoMutex BlockLock(m_Lock);
+ return find(label);
+ }
+
+ FLi_t End() {
+ ASDCP::AutoMutex BlockLock(m_Lock);
+ return end();
+ }
+
+};
+
+//
static FactoryList s_FactoryList;
+
+#define SETUP_IDX(t) const ui32_t FLT_##t = v;
#define SETUP_FACTORY(t) s_FactoryList.insert(FactoryList::value_type(s_MDD_Table[MDDindex_##t].ul, FLT_##t));
#define CASE_FACTORY(t) case FLT_##t: return new t
@@ -1010,7 +1050,7 @@ ASDCP::MXF::CreateObject(const byte_t* label)
SETUP_FACTORY(CryptographicContext);
}
- FactoryList::iterator i = s_FactoryList.find(label);
+ FLi_t i = s_FactoryList.find(label);
if ( i == s_FactoryList.end() )
return new InterchangeObject;