diff options
| author | jhurst <jhurst@cinecert.com> | 2020-04-09 12:28:12 -0700 |
|---|---|---|
| committer | jhurst <jhurst@cinecert.com> | 2020-04-09 12:28:12 -0700 |
| commit | dd323ce3297bb74dae1cd044206b8733b4757efa (patch) | |
| tree | 5c33425196254bb9ac54e2f2bb5684e443194378 /src | |
| parent | 5e63427d5b08481e85fc4703a9e88c3072b9a1ce (diff) | |
Added IAB in IMF ULs and Sets
Diffstat (limited to 'src')
| -rw-r--r-- | src/MDD.cpp | 18 | ||||
| -rwxr-xr-x | src/MDD.h | 6 | ||||
| -rwxr-xr-x | src/Metadata.cpp | 146 | ||||
| -rwxr-xr-x | src/Metadata.h | 44 |
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 }, }; @@ -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 |
