summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjhurst <jhurst@cinecert.com>2020-04-09 12:28:12 -0700
committerjhurst <jhurst@cinecert.com>2020-04-09 12:28:12 -0700
commitdd323ce3297bb74dae1cd044206b8733b4757efa (patch)
tree5c33425196254bb9ac54e2f2bb5684e443194378 /src
parent5e63427d5b08481e85fc4703a9e88c3072b9a1ce (diff)
Added IAB in IMF ULs and Sets
Diffstat (limited to 'src')
-rw-r--r--src/MDD.cpp18
-rwxr-xr-xsrc/MDD.h6
-rwxr-xr-xsrc/Metadata.cpp146
-rwxr-xr-xsrc/Metadata.h44
4 files changed, 214 insertions, 0 deletions
diff --git a/src/MDD.cpp b/src/MDD.cpp
index 6db1bec..7507de4 100644
--- a/src/MDD.cpp
+++ b/src/MDD.cpp
@@ -1639,6 +1639,24 @@ static const ASDCP::MDDEntry s_MDD_Table[] = {
{ { 0x06, 0x0e, 0x2b, 0x34, 01, 0x01, 0x01, 0x0e,
06, 0x01, 0x01, 0x02, 06, 0x00, 0x00, 0x00 },
{0}, false, "TimedTextDescriptor_ZPositionInUse" }, // 528
+ { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x06, 0x01, 0x01, // 529
+ 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x7b, 0x00 },
+ {0}, false, "IABEssenceDescriptor" },
+ { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x06, 0x01, 0x01, // 530
+ 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x7c, 0x00 },
+ {0}, false, "IABSoundfieldLabelSubDescriptor" },
+ { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 531
+ 0x01, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x00 },
+ {0}, false, "IMF_IABTrackFileLevel0" },
+ { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 532
+ 0x0d, 0x01, 0x03, 0x01, 0x02, 0x1d, 0x01, 0x01 },
+ {0}, false, "IMF_IABEssenceClipWrappedContainer" },
+ { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 533
+ 0x03, 0x02, 0x02, 0x21, 0x00, 0x00, 0x00, 0x00 },
+ {0}, false, "IABSoundfield" },
+ { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x02, 0x01, 0x01, // 534
+ 0x0d, 0x01, 0x03, 0x01, 0x16, 0x7f, 0x0d, 0x7f },
+ {0}, false, "IMFIABEssenceClipWrappedElement" },
{ {0}, {0}, false, 0 },
};
diff --git a/src/MDD.h b/src/MDD.h
index 4e3dcaf..0850751 100755
--- a/src/MDD.h
+++ b/src/MDD.h
@@ -564,6 +564,12 @@ namespace ASDCP {
MDD_TimedTextDescriptor_DisplayType, // 526
MDD_TimedTextDescriptor_IntrinsicPictureResolution, // 527
MDD_TimedTextDescriptor_ZPositionInUse, // 528
+ MDD_IABEssenceDescriptor, // 529
+ MDD_IABSoundfieldLabelSubDescriptor, // 530
+ MDD_IMF_IABTrackFileLevel0, // 531
+ MDD_IMF_IABEssenceClipWrappedContaine, // 532
+ MDD_IABSoundfield, // 533
+ MDD_IMFIABEssenceClipWrappedElement, // 534
MDD_Max
}; // enum MDD_t
diff --git a/src/Metadata.cpp b/src/Metadata.cpp
index adaac11..4ab2044 100755
--- a/src/Metadata.cpp
+++ b/src/Metadata.cpp
@@ -87,6 +87,8 @@ static InterchangeObject* GenericStreamTextBasedSet_Factory(const Dictionary*& D
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
@@ -140,6 +142,8 @@ ASDCP::MXF::Metadata_InitTypes(const Dictionary*& Dict)
SetObjectFactory(Dict->ul(MDD_ISXDDataEssenceDescriptor), ISXDDataEssenceDescriptor_Factory);
SetObjectFactory(Dict->ul(MDD_PHDRMetadataTrackSubDescriptor), PHDRMetadataTrackSubDescriptor_Factory);
SetObjectFactory(Dict->ul(MDD_PIMFDynamicMetadataDescriptor), PIMFDynamicMetadataDescriptor_Factory);
+ SetObjectFactory(Dict->ul(MDD_IABEssenceDescriptor), IABEssenceDescriptor_Factory);
+ SetObjectFactory(Dict->ul(MDD_IABSoundfieldLabelSubDescriptor), IABSoundfieldLabelSubDescriptor_Factory);
}
//------------------------------------------------------------------------------------------
@@ -4851,6 +4855,148 @@ PIMFDynamicMetadataDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
return InterchangeObject::WriteToBuffer(Buffer);
}
+//------------------------------------------------------------------------------------------
+// IABEssenceDescriptor
+
+//
+
+IABEssenceDescriptor::IABEssenceDescriptor(const Dictionary*& d) : FileDescriptor(d), m_Dict(d)
+{
+ assert(m_Dict);
+ m_UL = m_Dict->ul(MDD_IABEssenceDescriptor);
+}
+
+IABEssenceDescriptor::IABEssenceDescriptor(const IABEssenceDescriptor& rhs) : FileDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict)
+{
+ assert(m_Dict);
+ m_UL = m_Dict->ul(MDD_IABEssenceDescriptor);
+ Copy(rhs);
+}
+
+
+//
+ASDCP::Result_t
+IABEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet)
+{
+ assert(m_Dict);
+ Result_t result = FileDescriptor::InitFromTLVSet(TLVSet);
+ return result;
+}
+
+//
+ASDCP::Result_t
+IABEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
+{
+ assert(m_Dict);
+ Result_t result = FileDescriptor::WriteToTLVSet(TLVSet);
+ return result;
+}
+
+//
+void
+IABEssenceDescriptor::Copy(const IABEssenceDescriptor& rhs)
+{
+ FileDescriptor::Copy(rhs);
+}
+
+//
+void
+IABEssenceDescriptor::Dump(FILE* stream)
+{
+ char identbuf[IdentBufferLen];
+ *identbuf = 0;
+
+ if ( stream == 0 )
+ stream = stderr;
+
+ FileDescriptor::Dump(stream);
+}
+
+//
+ASDCP::Result_t
+IABEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
+{
+ return InterchangeObject::InitFromBuffer(p, l);
+}
+
+//
+ASDCP::Result_t
+IABEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
+{
+ return InterchangeObject::WriteToBuffer(Buffer);
+}
+
+//------------------------------------------------------------------------------------------
+// IABSoundfieldLabelSubDescriptor
+
+//
+
+IABSoundfieldLabelSubDescriptor::IABSoundfieldLabelSubDescriptor(const Dictionary*& d) : MCALabelSubDescriptor(d), m_Dict(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)
+{
+ assert(m_Dict);
+ m_UL = m_Dict->ul(MDD_IABSoundfieldLabelSubDescriptor);
+ Copy(rhs);
+}
+
+
+//
+ASDCP::Result_t
+IABSoundfieldLabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet)
+{
+ assert(m_Dict);
+ Result_t result = MCALabelSubDescriptor::InitFromTLVSet(TLVSet);
+ return result;
+}
+
+//
+ASDCP::Result_t
+IABSoundfieldLabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet)
+{
+ assert(m_Dict);
+ Result_t result = MCALabelSubDescriptor::WriteToTLVSet(TLVSet);
+ return result;
+}
+
+//
+void
+IABSoundfieldLabelSubDescriptor::Copy(const IABSoundfieldLabelSubDescriptor& rhs)
+{
+ MCALabelSubDescriptor::Copy(rhs);
+}
+
+//
+void
+IABSoundfieldLabelSubDescriptor::Dump(FILE* stream)
+{
+ char identbuf[IdentBufferLen];
+ *identbuf = 0;
+
+ if ( stream == 0 )
+ stream = stderr;
+
+ MCALabelSubDescriptor::Dump(stream);
+}
+
+//
+ASDCP::Result_t
+IABSoundfieldLabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l)
+{
+ return InterchangeObject::InitFromBuffer(p, l);
+}
+
+//
+ASDCP::Result_t
+IABSoundfieldLabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer)
+{
+ return InterchangeObject::WriteToBuffer(Buffer);
+}
+
//
// end Metadata.cpp
//
diff --git a/src/Metadata.h b/src/Metadata.h
index c624784..78c3445 100755
--- a/src/Metadata.h
+++ b/src/Metadata.h
@@ -1297,6 +1297,50 @@ namespace ASDCP
virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
};
+ //
+ class IABEssenceDescriptor : public FileDescriptor
+ {
+ IABEssenceDescriptor();
+
+ public:
+ const Dictionary*& m_Dict;
+
+ 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 const char* HasName() { return "IABEssenceDescriptor"; }
+ virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
+ virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
+ virtual void Dump(FILE* = 0);
+ virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
+ virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
+ };
+
+ //
+ class IABSoundfieldLabelSubDescriptor : public MCALabelSubDescriptor
+ {
+ IABSoundfieldLabelSubDescriptor();
+
+ public:
+ const Dictionary*& m_Dict;
+
+ 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 const char* HasName() { return "IABSoundfieldLabelSubDescriptor"; }
+ virtual Result_t InitFromTLVSet(TLVReader& TLVSet);
+ virtual Result_t WriteToTLVSet(TLVWriter& TLVSet);
+ virtual void Dump(FILE* = 0);
+ virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l);
+ virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&);
+ };
+
} // namespace MXF
} // namespace ASDCP