diff --git a/contrib/CMakeLists.txt b/contrib/CMakeLists.txt index 80c4335..11da14d 100644 --- a/contrib/CMakeLists.txt +++ b/contrib/CMakeLists.txt @@ -163,9 +163,9 @@ IF(COMPILE_TIFF) ENDIF() EXTERNALPROJECT_ADD( 08_TIFF - URL ${URL}tiff-4.0.0.tar.gz + URL ${URL}tiff-4.0.9.tar.gz BUILD_IN_SOURCE 1 - PATCH_COMMAND patch -d -p0 -t -N < ${PROJECT_SOURCE_DIR}/contrib/libtiff-4.0.0.patch + PATCH_COMMAND patch -d -p0 -t -N < ${PROJECT_SOURCE_DIR}/contrib/libtiff-4.0.9.patch CONFIGURE_COMMAND ${CONFIGURE} ${PREFIX_ARG} ${AUTO_CFLAGS} ${AUTO_CXXFLAGS} ${AUTO_LDFLAGS} --disable-dependency-tracking --enable-static=yes --enable-shared=no --enable-jpeg=no diff --git a/contrib/libtiff-4.0.0.patch b/contrib/libtiff-4.0.9.patch similarity index 100% rename from contrib/libtiff-4.0.0.patch rename to contrib/libtiff-4.0.9.patch diff --git a/gui/resources/naming.xml b/gui/resources/naming.xml index c3a39fc..cc2a112 100644 --- a/gui/resources/naming.xml +++ b/gui/resources/naming.xml @@ -95,8 +95,6 @@ YUE CHINESE - CANTONESE -INT-TD International Texted -INT-TL International Textless AE UNITED ARAB EMIRATES AL ALBANIA AN CURACAO @@ -215,7 +213,6 @@ ZA SOUTH AFRICA -NR NOT RATED G General Admission PG Parental Guidance 13 PG-13 @@ -309,11 +306,12 @@ Y7 YELLOW CIRCLE 7 diff --git a/libasdcp/AS_DCP.h b/libasdcp/AS_DCP.h index 6cb1083..9e9702f 100644 --- a/libasdcp/AS_DCP.h +++ b/libasdcp/AS_DCP.h @@ -25,7 +25,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file AS_DCP.h - \version $Id: AS_DCP.h,v 1.54 2016/11/22 17:58:18 jhurst Exp $ + \version $Id: AS_DCP.h,v 1.52 2015/04/21 03:55:31 jhurst Exp $ \brief AS-DCP library, public interface The asdcplib library is a set of file access objects that offer simplified @@ -222,7 +222,6 @@ namespace ASDCP { ESS_AS02_PCM_24b_96k, // the file contains one or more PCM audio pairs, clip wrapped ESS_AS02_TIMED_TEXT, // the file contains a TTML document and zero or more resources - ESS_ACES, // the file contains one ACES codestream ESS_MAX }; @@ -302,9 +301,6 @@ namespace ASDCP { const Rational EditRate_96 = Rational(96,1); const Rational EditRate_100 = Rational(100,1); const Rational EditRate_120 = Rational(120,1); - const Rational EditRate_192 = Rational(192,1); - const Rational EditRate_200 = Rational(200,1); - const Rational EditRate_240 = Rational(240,1); // Archival frame rates, see ST 428-21 // These rates are new and not supported by all systems. Do not assume that @@ -950,8 +946,6 @@ namespace ASDCP { // Reads the next sequential frame in the input file and places it in the // frame buffer. Fails if the buffer is too small or the stream is empty. Result_t ReadFrame(FrameBuffer&) const; - - Result_t Seek(ui32_t frame_number) const; }; diff --git a/libasdcp/AS_DCP_AES.cpp b/libasdcp/AS_DCP_AES.cpp index 8af7a7b..bac6663 100644 --- a/libasdcp/AS_DCP_AES.cpp +++ b/libasdcp/AS_DCP_AES.cpp @@ -39,10 +39,9 @@ using Kumu::DefaultLogSink; using namespace ASDCP; const int KEY_SIZE_BITS = 128; -#include -#include -#include -#include +#include +#include +#include void @@ -177,7 +176,7 @@ ASDCP::AESDecContext::InitKey(const byte_t* key) KM_TEST_NULL_L(key); if ( m_Context ) - return RESULT_INIT; + return RESULT_INIT; m_Context = new h__AESContext; m_Context->m_KeyBuf.Set(key); diff --git a/libasdcp/AS_DCP_ATMOS.cpp b/libasdcp/AS_DCP_ATMOS.cpp index fe13bff..7e1b853 100644 --- a/libasdcp/AS_DCP_ATMOS.cpp +++ b/libasdcp/AS_DCP_ATMOS.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2004-2016, John Hurst +Copyright (c) 2004-2013, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -25,7 +25,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file AS_DCP_ATMOS.cpp - \version $Id: AS_DCP_ATMOS.cpp,v 1.8 2016/11/22 17:58:18 jhurst Exp $ + \version $Id: AS_DCP_ATMOS.cpp,v 1.4 2014/01/02 23:29:22 jhurst Exp $ \brief AS-DCP library, Dolby Atmos essence reader and writer implementation */ @@ -33,6 +33,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include "AS_DCP.h" +#include "AS_DCP_DCData_internal.h" #include "AS_DCP_internal.h" namespace ASDCP @@ -103,41 +104,24 @@ ASDCP::ATMOS::IsDolbyAtmos(const std::string& filename) //------------------------------------------------------------------------------------------ -typedef std::list SubDescriptorList_t; -class ASDCP::ATMOS::MXFReader::h__Reader : public ASDCP::h__ASDCPReader +class ASDCP::ATMOS::MXFReader::h__Reader : public ASDCP::DCData::h__Reader { - MXF::PrivateDCDataDescriptor* m_EssenceDescriptor; MXF::DolbyAtmosSubDescriptor* m_EssenceSubDescriptor; - KM_NO_COPY_CONSTRUCT(h__Reader); + ASDCP_NO_COPY_CONSTRUCT(h__Reader); h__Reader(); public: - ASDCP::DCData::DCDataDescriptor m_DDesc; AtmosDescriptor m_ADesc; - h__Reader(const Dictionary& d) : - ASDCP::h__ASDCPReader(d), m_EssenceDescriptor(0), m_EssenceSubDescriptor(0) {} + h__Reader(const Dictionary& d) : DCData::h__Reader(d), m_EssenceSubDescriptor(NULL), + m_ADesc() {} virtual ~h__Reader() {} Result_t OpenRead(const std::string&); - Result_t ReadFrame(ui32_t, FrameBuffer&, AESDecContext*, HMACContext*); - Result_t MD_to_DCData_DDesc(ASDCP::DCData::DCDataDescriptor& DDesc); Result_t MD_to_Atmos_ADesc(ATMOS::AtmosDescriptor& ADesc); }; -ASDCP::Result_t -ASDCP::ATMOS::MXFReader::h__Reader::MD_to_DCData_DDesc(ASDCP::DCData::DCDataDescriptor& DDesc) -{ - ASDCP_TEST_NULL(m_EssenceDescriptor); - MXF::PrivateDCDataDescriptor* DDescObj = m_EssenceDescriptor; - DDesc.EditRate = DDescObj->SampleRate; - assert(DDescObj->ContainerDuration <= 0xFFFFFFFFL); - DDesc.ContainerDuration = static_cast(DDescObj->ContainerDuration); - memcpy(DDesc.DataEssenceCoding, DDescObj->DataEssenceCoding.Value(), SMPTE_UL_LENGTH); - return RESULT_OK; -} - ASDCP::Result_t ASDCP::ATMOS::MXFReader::h__Reader::MD_to_Atmos_ADesc(ATMOS::AtmosDescriptor& ADesc) { @@ -160,51 +144,7 @@ ASDCP::ATMOS::MXFReader::h__Reader::MD_to_Atmos_ADesc(ATMOS::AtmosDescriptor& AD ASDCP::Result_t ASDCP::ATMOS::MXFReader::h__Reader::OpenRead(const std::string& filename) { - Result_t result = OpenMXFRead(filename); - m_EssenceDescriptor = 0; - - if ( KM_SUCCESS(result) ) - { - InterchangeObject* iObj = 0; - result = m_HeaderPart.GetMDObjectByType(OBJ_TYPE_ARGS(PrivateDCDataDescriptor), &iObj); - - if ( KM_SUCCESS(result) ) - { - m_EssenceDescriptor = static_cast(iObj); - } - } - - if ( m_EssenceDescriptor == 0 ) - { - DefaultLogSink().Error("DCDataDescriptor object not found in Atmos file.\n"); - result = RESULT_FORMAT; - } - - if ( KM_SUCCESS(result) ) - { - result = MD_to_DCData_DDesc(m_DDesc); - } - - // check for sample/frame rate sanity - if ( ASDCP_SUCCESS(result) - && m_DDesc.EditRate != EditRate_24 - && m_DDesc.EditRate != EditRate_25 - && m_DDesc.EditRate != EditRate_30 - && m_DDesc.EditRate != EditRate_48 - && m_DDesc.EditRate != EditRate_50 - && m_DDesc.EditRate != EditRate_60 - && m_DDesc.EditRate != EditRate_96 - && m_DDesc.EditRate != EditRate_100 - && m_DDesc.EditRate != EditRate_120 - && m_DDesc.EditRate != EditRate_192 - && m_DDesc.EditRate != EditRate_200 - && m_DDesc.EditRate != EditRate_240 ) - { - DefaultLogSink().Error("DC Data file EditRate is not a supported value: %d/%d\n", // lu - m_DDesc.EditRate.Numerator, m_DDesc.EditRate.Denominator); - - return RESULT_FORMAT; - } + Result_t result = DCData::h__Reader::OpenRead(filename); if( ASDCP_SUCCESS(result) ) { @@ -231,18 +171,6 @@ ASDCP::ATMOS::MXFReader::h__Reader::OpenRead(const std::string& filename) return result; } -// -ASDCP::Result_t -ASDCP::ATMOS::MXFReader::h__Reader::ReadFrame(ui32_t FrameNum, FrameBuffer& FrameBuf, - AESDecContext* Ctx, HMACContext* HMAC) -{ - if ( ! m_File.IsOpen() ) - return RESULT_INIT; - - assert(m_Dict); - return ReadEKLVFrame(FrameNum, FrameBuf, m_Dict->ul(MDD_PrivateDCDataEssence), Ctx, HMAC); -} - //------------------------------------------------------------------------------------------ @@ -391,10 +319,8 @@ ASDCP::ATMOS::MXFReader::Close() const //------------------------------------------------------------------------------------------ // -class ASDCP::ATMOS::MXFWriter::h__Writer : public ASDCP::h__ASDCPWriter +class ASDCP::ATMOS::MXFWriter::h__Writer : public DCData::h__Writer { - ASDCP::DCData::DCDataDescriptor m_DDesc; - byte_t m_EssenceUL[SMPTE_UL_LENGTH]; MXF::DolbyAtmosSubDescriptor* m_EssenceSubDescriptor; ASDCP_NO_COPY_CONSTRUCT(h__Writer); @@ -403,35 +329,15 @@ class ASDCP::ATMOS::MXFWriter::h__Writer : public ASDCP::h__ASDCPWriter public: AtmosDescriptor m_ADesc; - h__Writer(const Dictionary& d) : ASDCP::h__ASDCPWriter(d), - m_EssenceSubDescriptor(0), m_ADesc() { - memset(m_EssenceUL, 0, SMPTE_UL_LENGTH); - } + h__Writer(const Dictionary& d) : DCData::h__Writer(d), + m_EssenceSubDescriptor(NULL), m_ADesc() {} virtual ~h__Writer(){} Result_t OpenWrite(const std::string&, ui32_t HeaderSize, const AtmosDescriptor& ADesc); - Result_t SetSourceStream(const DCData::DCDataDescriptor&, const byte_t*, const std::string&, const std::string&); - Result_t WriteFrame(const FrameBuffer&, AESEncContext* = 0, HMACContext* = 0); - Result_t Finalize(); - Result_t DCData_DDesc_to_MD(ASDCP::DCData::DCDataDescriptor& DDesc); Result_t Atmos_ADesc_to_MD(const AtmosDescriptor& ADesc); }; -// -ASDCP::Result_t -ASDCP::ATMOS::MXFWriter::h__Writer::DCData_DDesc_to_MD(ASDCP::DCData::DCDataDescriptor& DDesc) -{ - ASDCP_TEST_NULL(m_EssenceDescriptor); - MXF::PrivateDCDataDescriptor* DDescObj = static_cast(m_EssenceDescriptor); - - DDescObj->SampleRate = DDesc.EditRate; - DDescObj->ContainerDuration = DDesc.ContainerDuration; - DDescObj->DataEssenceCoding.Set(DDesc.DataEssenceCoding); - - return RESULT_OK; -} - // ASDCP::Result_t ASDCP::ATMOS::MXFWriter::h__Writer::Atmos_ADesc_to_MD(const AtmosDescriptor& ADesc) @@ -451,30 +357,11 @@ ASDCP::ATMOS::MXFWriter::h__Writer::Atmos_ADesc_to_MD(const AtmosDescriptor& ADe ASDCP::Result_t ASDCP::ATMOS::MXFWriter::h__Writer::OpenWrite(const std::string& filename, ui32_t HeaderSize, const AtmosDescriptor& ADesc) { - if ( ! m_State.Test_BEGIN() ) - return RESULT_STATE; - - Result_t result = m_File.OpenWrite(filename); - - if ( ASDCP_SUCCESS(result) ) - { - m_HeaderSize = HeaderSize; - m_EssenceDescriptor = new MXF::PrivateDCDataDescriptor(m_Dict); - m_EssenceSubDescriptor = new DolbyAtmosSubDescriptor(m_Dict); - SubDescriptorList_t subDescriptors; - subDescriptors.push_back(m_EssenceSubDescriptor); - - SubDescriptorList_t::const_iterator sDObj; - SubDescriptorList_t::const_iterator lastDescriptor = subDescriptors.end(); - for (sDObj = subDescriptors.begin(); sDObj != lastDescriptor; ++sDObj) - { - m_EssenceSubDescriptorList.push_back(*sDObj); - GenRandomValue((*sDObj)->InstanceUID); - m_EssenceDescriptor->SubDescriptors.push_back((*sDObj)->InstanceUID); - } - result = m_State.Goto_INIT(); - } + m_EssenceSubDescriptor = new DolbyAtmosSubDescriptor(m_Dict); + DCData::SubDescriptorList_t subDescriptors; + subDescriptors.push_back(m_EssenceSubDescriptor); + Result_t result = DCData::h__Writer::OpenWrite(filename, HeaderSize, subDescriptors); if ( ASDCP_FAILURE(result) ) delete m_EssenceSubDescriptor; @@ -488,96 +375,6 @@ ASDCP::ATMOS::MXFWriter::h__Writer::OpenWrite(const std::string& filename, ui32_ return result; } -// -ASDCP::Result_t -ASDCP::ATMOS::MXFWriter::h__Writer::SetSourceStream(ASDCP::DCData::DCDataDescriptor const& DDesc, - const byte_t * essenceCoding, - const std::string& packageLabel, - const std::string& defLabel) -{ - if ( ! m_State.Test_INIT() ) - return RESULT_STATE; - - if ( DDesc.EditRate != EditRate_24 - && DDesc.EditRate != EditRate_25 - && DDesc.EditRate != EditRate_30 - && DDesc.EditRate != EditRate_48 - && DDesc.EditRate != EditRate_50 - && DDesc.EditRate != EditRate_60 - && DDesc.EditRate != EditRate_96 - && DDesc.EditRate != EditRate_100 - && DDesc.EditRate != EditRate_120 - && DDesc.EditRate != EditRate_192 - && DDesc.EditRate != EditRate_200 - && DDesc.EditRate != EditRate_240 ) - { - DefaultLogSink().Error("DCDataDescriptor.EditRate is not a supported value: %d/%d\n", - DDesc.EditRate.Numerator, DDesc.EditRate.Denominator); - return RESULT_RAW_FORMAT; - } - - assert(m_Dict); - m_DDesc = DDesc; - if (NULL != essenceCoding) - memcpy(m_DDesc.DataEssenceCoding, essenceCoding, SMPTE_UL_LENGTH); - Result_t result = DCData_DDesc_to_MD(m_DDesc); - - if ( ASDCP_SUCCESS(result) ) - { - memcpy(m_EssenceUL, m_Dict->ul(MDD_PrivateDCDataEssence), SMPTE_UL_LENGTH); - m_EssenceUL[SMPTE_UL_LENGTH-1] = 1; // first (and only) essence container - result = m_State.Goto_READY(); - } - - if ( ASDCP_SUCCESS(result) ) - { - ui32_t TCFrameRate = m_DDesc.EditRate.Numerator; - - result = WriteASDCPHeader(packageLabel, UL(m_Dict->ul(MDD_PrivateDCDataWrappingFrame)), - defLabel, UL(m_EssenceUL), UL(m_Dict->ul(MDD_DataDataDef)), - m_DDesc.EditRate, TCFrameRate); - } - - return result; -} - -// -ASDCP::Result_t -ASDCP::ATMOS::MXFWriter::h__Writer::WriteFrame(const FrameBuffer& FrameBuf, - ASDCP::AESEncContext* Ctx, ASDCP::HMACContext* HMAC) -{ - Result_t result = RESULT_OK; - - if ( m_State.Test_READY() ) - result = m_State.Goto_RUNNING(); // first time through - - ui64_t StreamOffset = m_StreamOffset; - - if ( ASDCP_SUCCESS(result) ) - result = WriteEKLVPacket(FrameBuf, m_EssenceUL, Ctx, HMAC); - - if ( ASDCP_SUCCESS(result) ) - { - IndexTableSegment::IndexEntry Entry; - Entry.StreamOffset = StreamOffset; - m_FooterPart.PushIndexEntry(Entry); - m_FramesWritten++; - } - return result; -} - -// Closes the MXF file, writing the index and other closing information. -// -ASDCP::Result_t -ASDCP::ATMOS::MXFWriter::h__Writer::Finalize() -{ - if ( ! m_State.Test_RUNNING() ) - return RESULT_STATE; - - m_State.Goto_FINAL(); - - return WriteASDCPFooter(); -} @@ -656,7 +453,7 @@ ASDCP::ATMOS::MXFWriter::OpenWrite(const std::string& filename, const WriterInfo if ( ASDCP_SUCCESS(result) ) result = m_Writer->SetSourceStream(ADesc, ATMOS_ESSENCE_CODING, ATMOS_PACKAGE_LABEL, ATMOS_DEF_LABEL); - + if ( ASDCP_FAILURE(result) ) m_Writer.release(); diff --git a/libasdcp/AS_DCP_DCData.cpp b/libasdcp/AS_DCP_DCData.cpp index d3d0c69..9c0950e 100644 --- a/libasdcp/AS_DCP_DCData.cpp +++ b/libasdcp/AS_DCP_DCData.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2004-2016, John Hurst +Copyright (c) 2004-2013, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -25,22 +25,23 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file AS_DCP_DCData.cpp - \version $Id: AS_DCP_DCData.cpp,v 1.9 2016/11/22 17:58:18 jhurst Exp $ + \version $Id: AS_DCP_DCData.cpp,v 1.5 2014/01/02 23:29:22 jhurst Exp $ \brief AS-DCP library, Dcinema generic data essence reader and writer implementation */ #include #include "AS_DCP.h" +#include "AS_DCP_DCData_internal.h" #include "AS_DCP_internal.h" namespace ASDCP { - namespace DCData - { - static std::string DC_DATA_PACKAGE_LABEL = "File Package: SMPTE-GC frame wrapping of D-Cinema Generic data"; - static std::string DC_DATA_DEF_LABEL = "D-Cinema Generic Data Track"; - } // namespace DCData +namespace DCData +{ + static std::string DC_DATA_PACKAGE_LABEL = "File Package: SMPTE-GC frame wrapping of D-Cinema Generic data"; + static std::string DC_DATA_DEF_LABEL = "D-Cinema Generic Data Track"; +} // namespace DCData } // namespace ASDCP // @@ -74,101 +75,58 @@ ASDCP::DCData::DCDataDescriptorDump(const DCDataDescriptor& DDesc, FILE* stream) //------------------------------------------------------------------------------------------ -typedef std::list SubDescriptorList_t; - -class ASDCP::DCData::MXFReader::h__Reader : public ASDCP::h__ASDCPReader -{ - bool m_PrivateLabelCompatibilityMode; - ASDCP_NO_COPY_CONSTRUCT(h__Reader); - h__Reader(); - - public: - DCDataDescriptor 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*); - Result_t MD_to_DCData_DDesc(const MXF::DCDataDescriptor& descriptor_object, DCData::DCDataDescriptor& DDesc); - Result_t MD_to_DCData_DDesc(const MXF::PrivateDCDataDescriptor& descriptor_object, DCData::DCDataDescriptor& DDesc); -}; - -// ASDCP::Result_t -ASDCP::DCData::MXFReader::h__Reader::MD_to_DCData_DDesc(const MXF::DCDataDescriptor& descriptor_object, - DCData::DCDataDescriptor& DDesc) +ASDCP::DCData::h__Reader::MD_to_DCData_DDesc(DCData::DCDataDescriptor& DDesc) { - DDesc.EditRate = descriptor_object.SampleRate; - assert(descriptor_object.ContainerDuration.const_get() <= 0xFFFFFFFFL); - DDesc.ContainerDuration = static_cast(descriptor_object.ContainerDuration.const_get()); - memcpy(DDesc.DataEssenceCoding, descriptor_object.DataEssenceCoding.Value(), SMPTE_UL_LENGTH); - return RESULT_OK; -} - -// -ASDCP::Result_t -ASDCP::DCData::MXFReader::h__Reader::MD_to_DCData_DDesc(const MXF::PrivateDCDataDescriptor& descriptor_object, - DCData::DCDataDescriptor& DDesc) -{ - DDesc.EditRate = descriptor_object.SampleRate; - assert(descriptor_object.ContainerDuration.const_get() <= 0xFFFFFFFFL); - DDesc.ContainerDuration = static_cast(descriptor_object.ContainerDuration.const_get()); - memcpy(DDesc.DataEssenceCoding, descriptor_object.DataEssenceCoding.Value(), SMPTE_UL_LENGTH); + ASDCP_TEST_NULL(m_EssenceDescriptor); + MXF::DCDataDescriptor* DDescObj = m_EssenceDescriptor; + DDesc.EditRate = DDescObj->SampleRate; + assert(DDescObj->ContainerDuration <= 0xFFFFFFFFL); + DDesc.ContainerDuration = static_cast(DDescObj->ContainerDuration); + memcpy(DDesc.DataEssenceCoding, DDescObj->DataEssenceCoding.Value(), SMPTE_UL_LENGTH); return RESULT_OK; } // // ASDCP::Result_t -ASDCP::DCData::MXFReader::h__Reader::OpenRead(const std::string& filename) +ASDCP::DCData::h__Reader::OpenRead(const std::string& filename) { Result_t result = OpenMXFRead(filename); - if( KM_SUCCESS(result) ) + if( ASDCP_SUCCESS(result) ) { - InterchangeObject* iObj = 0; - result = m_HeaderPart.GetMDObjectByType(OBJ_TYPE_ARGS(DCDataDescriptor), &iObj); - - if ( KM_SUCCESS(result) ) + if (NULL == m_EssenceDescriptor) { - const MXF::DCDataDescriptor* p = dynamic_cast(iObj); - assert(p); - result = MD_to_DCData_DDesc(*p, m_DDesc); - } - else - { - result = m_HeaderPart.GetMDObjectByType(OBJ_TYPE_ARGS(PrivateDCDataDescriptor), &iObj); - - if ( KM_SUCCESS(result) ) + InterchangeObject* iObj = NULL; + result = m_HeaderPart.GetMDObjectByType(OBJ_TYPE_ARGS(DCDataDescriptor), &iObj); + m_EssenceDescriptor = static_cast(iObj); + + if ( m_EssenceDescriptor == 0 ) { - m_PrivateLabelCompatibilityMode = true; - const MXF::PrivateDCDataDescriptor* p = dynamic_cast(iObj); - assert(p); - result = MD_to_DCData_DDesc(*p, m_DDesc); + DefaultLogSink().Error("DCDataDescriptor object not found.\n"); + return RESULT_FORMAT; } } - if ( KM_FAILURE(result) ) + if ( ASDCP_SUCCESS(result) ) { - DefaultLogSink().Error("DCDataDescriptor object not found in ST 429-14 file.\n"); - result = RESULT_FORMAT; + result = MD_to_DCData_DDesc(m_DDesc); } } // check for sample/frame rate sanity if ( ASDCP_SUCCESS(result) - && m_DDesc.EditRate != EditRate_24 - && m_DDesc.EditRate != EditRate_25 - && m_DDesc.EditRate != EditRate_30 - && m_DDesc.EditRate != EditRate_48 - && m_DDesc.EditRate != EditRate_50 - && m_DDesc.EditRate != EditRate_60 - && m_DDesc.EditRate != EditRate_96 - && m_DDesc.EditRate != EditRate_100 - && m_DDesc.EditRate != EditRate_120 - && m_DDesc.EditRate != EditRate_192 - && m_DDesc.EditRate != EditRate_200 - && m_DDesc.EditRate != EditRate_240 ) + && m_DDesc.EditRate != EditRate_24 + && m_DDesc.EditRate != EditRate_25 + && m_DDesc.EditRate != EditRate_30 + && m_DDesc.EditRate != EditRate_48 + && m_DDesc.EditRate != EditRate_50 + && m_DDesc.EditRate != EditRate_60 + && m_DDesc.EditRate != EditRate_96 + && m_DDesc.EditRate != EditRate_100 + && m_DDesc.EditRate != EditRate_120 ) { DefaultLogSink().Error("DC Data file EditRate is not a supported value: %d/%d\n", // lu m_DDesc.EditRate.Numerator, m_DDesc.EditRate.Denominator); @@ -182,22 +140,30 @@ ASDCP::DCData::MXFReader::h__Reader::OpenRead(const std::string& filename) // // ASDCP::Result_t -ASDCP::DCData::MXFReader::h__Reader::ReadFrame(ui32_t FrameNum, FrameBuffer& FrameBuf, +ASDCP::DCData::h__Reader::ReadFrame(ui32_t FrameNum, FrameBuffer& FrameBuf, AESDecContext* Ctx, HMACContext* HMAC) { if ( ! m_File.IsOpen() ) return RESULT_INIT; assert(m_Dict); - if ( m_PrivateLabelCompatibilityMode ) - { - return ReadEKLVFrame(FrameNum, FrameBuf, m_Dict->ul(MDD_PrivateDCDataEssence), Ctx, HMAC); - } - return ReadEKLVFrame(FrameNum, FrameBuf, m_Dict->ul(MDD_DCDataEssence), Ctx, HMAC); } +// +//------------------------------------------------------------------------------------------ + +class ASDCP::DCData::MXFReader::h__Reader : public DCData::h__Reader +{ + ASDCP_NO_COPY_CONSTRUCT(h__Reader); + h__Reader(); + + public: + h__Reader(const Dictionary& d) : DCData::h__Reader(d) {} + virtual ~h__Reader() {} +}; + //------------------------------------------------------------------------------------------ @@ -364,32 +330,9 @@ ASDCP::DCData::MXFReader::Close() const //------------------------------------------------------------------------------------------ -class ASDCP::DCData::MXFWriter::h__Writer : public ASDCP::h__ASDCPWriter -{ - ASDCP_NO_COPY_CONSTRUCT(h__Writer); - h__Writer(); - -public: - DCDataDescriptor m_DDesc; - byte_t m_EssenceUL[SMPTE_UL_LENGTH]; - - h__Writer(const Dictionary& d) : ASDCP::h__ASDCPWriter(d) { - memset(m_EssenceUL, 0, SMPTE_UL_LENGTH); - } - - ~h__Writer(){} - - Result_t OpenWrite(const std::string&, ui32_t HeaderSize, const SubDescriptorList_t& subDescriptors); - Result_t SetSourceStream(const DCDataDescriptor&, const byte_t*, const std::string&, const std::string&); - Result_t WriteFrame(const FrameBuffer&, AESEncContext* = 0, HMACContext* = 0); - Result_t Finalize(); - Result_t DCData_DDesc_to_MD(DCData::DCDataDescriptor& DDesc); -}; - - // ASDCP::Result_t -ASDCP::DCData::MXFWriter::h__Writer::DCData_DDesc_to_MD(DCData::DCDataDescriptor& DDesc) +ASDCP::DCData::h__Writer::DCData_DDesc_to_MD(DCData::DCDataDescriptor& DDesc) { ASDCP_TEST_NULL(m_EssenceDescriptor); MXF::DCDataDescriptor* DDescObj = static_cast(m_EssenceDescriptor); @@ -403,7 +346,7 @@ ASDCP::DCData::MXFWriter::h__Writer::DCData_DDesc_to_MD(DCData::DCDataDescriptor // ASDCP::Result_t -ASDCP::DCData::MXFWriter::h__Writer::OpenWrite(const std::string& filename, ui32_t HeaderSize, +ASDCP::DCData::h__Writer::OpenWrite(const std::string& filename, ui32_t HeaderSize, const SubDescriptorList_t& subDescriptors) { if ( ! m_State.Test_BEGIN() ) @@ -431,7 +374,7 @@ ASDCP::DCData::MXFWriter::h__Writer::OpenWrite(const std::string& filename, ui32 // ASDCP::Result_t -ASDCP::DCData::MXFWriter::h__Writer::SetSourceStream(DCDataDescriptor const& DDesc, +ASDCP::DCData::h__Writer::SetSourceStream(DCDataDescriptor const& DDesc, const byte_t * essenceCoding, const std::string& packageLabel, const std::string& defLabel) @@ -447,10 +390,7 @@ ASDCP::DCData::MXFWriter::h__Writer::SetSourceStream(DCDataDescriptor const& DDe && DDesc.EditRate != EditRate_60 && DDesc.EditRate != EditRate_96 && DDesc.EditRate != EditRate_100 - && DDesc.EditRate != EditRate_120 - && DDesc.EditRate != EditRate_192 - && DDesc.EditRate != EditRate_200 - && DDesc.EditRate != EditRate_240 ) + && DDesc.EditRate != EditRate_120 ) { DefaultLogSink().Error("DCDataDescriptor.EditRate is not a supported value: %d/%d\n", DDesc.EditRate.Numerator, DDesc.EditRate.Denominator); @@ -484,7 +424,7 @@ ASDCP::DCData::MXFWriter::h__Writer::SetSourceStream(DCDataDescriptor const& DDe // ASDCP::Result_t -ASDCP::DCData::MXFWriter::h__Writer::WriteFrame(const FrameBuffer& FrameBuf, +ASDCP::DCData::h__Writer::WriteFrame(const FrameBuffer& FrameBuf, ASDCP::AESEncContext* Ctx, ASDCP::HMACContext* HMAC) { Result_t result = RESULT_OK; @@ -510,7 +450,7 @@ ASDCP::DCData::MXFWriter::h__Writer::WriteFrame(const FrameBuffer& FrameBuf, // Closes the MXF file, writing the index and other closing information. // ASDCP::Result_t -ASDCP::DCData::MXFWriter::h__Writer::Finalize() +ASDCP::DCData::h__Writer::Finalize() { if ( ! m_State.Test_RUNNING() ) return RESULT_STATE; @@ -521,6 +461,20 @@ ASDCP::DCData::MXFWriter::h__Writer::Finalize() } +// +//------------------------------------------------------------------------------------------ + + +class ASDCP::DCData::MXFWriter::h__Writer : public DCData::h__Writer +{ + ASDCP_NO_COPY_CONSTRUCT(h__Writer); + h__Writer(); + + public: + h__Writer(const Dictionary& d) : DCData::h__Writer(d) {} + virtual ~h__Writer() {} +}; + //------------------------------------------------------------------------------------------ diff --git a/libasdcp/AS_DCP_JP2K.cpp b/libasdcp/AS_DCP_JP2K.cpp index 0905590..58781d6 100644 --- a/libasdcp/AS_DCP_JP2K.cpp +++ b/libasdcp/AS_DCP_JP2K.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2004-2016, John Hurst +Copyright (c) 2004-2014, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -25,7 +25,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file AS_DCP_JP2k.cpp - \version $Id: AS_DCP_JP2K.cpp,v 1.72 2016/12/01 20:12:37 jhurst Exp $ + \version $Id: AS_DCP_JP2K.cpp,v 1.69 2015/10/07 16:41:23 jhurst Exp $ \brief AS-DCP library, JPEG 2000 essence reader and writer implementation */ @@ -42,7 +42,7 @@ static std::string JP2K_PACKAGE_LABEL = "File Package: SMPTE 429-4 frame wrappin static std::string JP2K_S_PACKAGE_LABEL = "File Package: SMPTE 429-10 frame wrapping of stereoscopic JPEG 2000 codestreams"; static std::string PICT_DEF_LABEL = "Picture Track"; -static int s_exp_lookup[16] = { 0, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024,2048, 4096, 8192, 16384, 32768 }; +int s_exp_lookup[16] = { 0, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024,2048, 4096, 8192, 16384, 32768 }; // std::ostream& @@ -296,7 +296,7 @@ ASDCP::MD_to_JP2K_PDesc(const ASDCP::MXF::GenericPictureEssenceDescriptor& Esse } else { - DefaultLogSink().Warn("Unexpected PictureComponentSizing size: %u, should be 17.\n", tmp_size); + DefaultLogSink().Warn("Unexpected PictureComponentSizing size: %u, should be 17\n", tmp_size); } // CodingStyleDefault @@ -397,10 +397,7 @@ lh__Reader::OpenRead(const std::string& filename, EssenceType_t type) || ( m_EditRate == EditRate_30 && m_SampleRate == EditRate_60 ) || ( m_EditRate == EditRate_48 && m_SampleRate == EditRate_96 ) || ( m_EditRate == EditRate_50 && m_SampleRate == EditRate_100 ) - || ( m_EditRate == EditRate_60 && m_SampleRate == EditRate_120 ) - || ( m_EditRate == EditRate_96 && m_SampleRate == EditRate_192 ) - || ( m_EditRate == EditRate_100 && m_SampleRate == EditRate_200 ) - || ( m_EditRate == EditRate_120 && m_SampleRate == EditRate_240 ) ) + || ( m_EditRate == EditRate_60 && m_SampleRate == EditRate_120 ) ) { DefaultLogSink().Debug("File may contain JPEG Interop stereoscopic images.\n"); return RESULT_SFORMAT; @@ -459,30 +456,6 @@ lh__Reader::OpenRead(const std::string& filename, EssenceType_t type) return RESULT_FORMAT; } } - else if ( m_EditRate == EditRate_96 ) - { - if ( m_SampleRate != EditRate_192 ) - { - DefaultLogSink().Error("EditRate and SampleRate not correct for 96/192 stereoscopic essence.\n"); - return RESULT_FORMAT; - } - } - else if ( m_EditRate == EditRate_100 ) - { - if ( m_SampleRate != EditRate_200 ) - { - DefaultLogSink().Error("EditRate and SampleRate not correct for 100/200 stereoscopic essence.\n"); - return RESULT_FORMAT; - } - } - else if ( m_EditRate == EditRate_120 ) - { - if ( m_SampleRate != EditRate_240 ) - { - DefaultLogSink().Error("EditRate and SampleRate not correct for 120/240 stereoscopic essence.\n"); - return RESULT_FORMAT; - } - } else { DefaultLogSink().Error("EditRate not correct for stereoscopic essence: %d/%d.\n", @@ -1039,7 +1012,7 @@ lh__Writer::SetSourceStream(const PictureDescriptor& PDesc, const std::string& l if ( ASDCP_SUCCESS(result) ) { - result = WriteASDCPHeader(label, UL(m_Dict->ul(MDD_MXFGCFUFrameWrappedPictureElement)), + result = WriteASDCPHeader(label, UL(m_Dict->ul(MDD_JPEG_2000WrappingFrame)), PICT_DEF_LABEL, UL(m_EssenceUL), UL(m_Dict->ul(MDD_PictureDataDef)), LocalEditRate, derive_timecode_rate_from_edit_rate(m_PDesc.EditRate)); } @@ -1357,15 +1330,6 @@ ASDCP::JP2K::MXFSWriter::OpenWrite(const std::string& filename, const WriterInfo else if ( PDesc.EditRate == ASDCP::EditRate_60 ) TmpPDesc.EditRate = ASDCP::EditRate_120; - else if ( PDesc.EditRate == ASDCP::EditRate_96 ) - TmpPDesc.EditRate = ASDCP::EditRate_192; - - else if ( PDesc.EditRate == ASDCP::EditRate_100 ) - TmpPDesc.EditRate = ASDCP::EditRate_200; - - else if ( PDesc.EditRate == ASDCP::EditRate_120 ) - TmpPDesc.EditRate = ASDCP::EditRate_240; - result = m_Writer->SetSourceStream(TmpPDesc, JP2K_S_PACKAGE_LABEL, PDesc.EditRate); } diff --git a/libasdcp/AS_DCP_MXF.cpp b/libasdcp/AS_DCP_MXF.cpp index 66cac05..4ff490e 100644 --- a/libasdcp/AS_DCP_MXF.cpp +++ b/libasdcp/AS_DCP_MXF.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2004-2016, John Hurst +Copyright (c) 2004-2013, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -25,7 +25,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file AS_DCP_MXF.cpp - \version $Id: AS_DCP_MXF.cpp,v 1.43 2016/12/01 20:12:37 jhurst Exp $ + \version $Id: AS_DCP_MXF.cpp,v 1.39 2015/04/21 03:55:31 jhurst Exp $ \brief AS-DCP library, misc classes and subroutines */ @@ -213,8 +213,7 @@ ASDCP::EssenceType(const std::string& filename, EssenceType_t& type) { type = ESS_TIMED_TEXT; } - else if ( ASDCP_SUCCESS(TestHeader.GetMDObjectByType(OBJ_TYPE_ARGS(DCDataDescriptor))) - || ASDCP_SUCCESS(TestHeader.GetMDObjectByType(OBJ_TYPE_ARGS(PrivateDCDataDescriptor))) ) + else if ( ASDCP_SUCCESS(TestHeader.GetMDObjectByType(OBJ_TYPE_ARGS(DCDataDescriptor))) ) { if ( ASDCP_SUCCESS(TestHeader.GetMDObjectByType(OBJ_TYPE_ARGS(DolbyAtmosSubDescriptor))) ) { @@ -248,10 +247,6 @@ ASDCP::EssenceType(const std::string& filename, EssenceType_t& type) { type = ESS_AS02_TIMED_TEXT; } - else if ( ASDCP_SUCCESS(TestHeader.GetMDObjectByType(OBJ_TYPE_ARGS(PIMFDynamicMetadataDescriptor))) ) - { - type = ESS_DCDATA_UNKNOWN; - } } else { @@ -267,11 +262,11 @@ ASDCP::EssenceType(const std::string& filename, EssenceType_t& type) static bool string_is_xml(const ASDCP::FrameBuffer& buffer) { - return (strncmp((const char *)buffer.RoData(), "ul(MDD_TimedTextEssence))); UL TmpUL(m_Dict->ul(MDD_GenericStreamPartition)); Result_t result = GSPart.WriteToFile(m_File, TmpUL); diff --git a/libasdcp/AS_DCP_internal.h b/libasdcp/AS_DCP_internal.h index 2e7b112..a52bd75 100644 --- a/libasdcp/AS_DCP_internal.h +++ b/libasdcp/AS_DCP_internal.h @@ -1,5 +1,5 @@ /* -Copyright (c) 2004-2016, John Hurst +Copyright (c) 2004-2013, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -25,7 +25,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file AS_DCP_internal.h - \version $Id: AS_DCP_internal.h,v 1.46 2016/12/02 23:28:26 jhurst Exp $ + \version $Id: AS_DCP_internal.h,v 1.45 2014/09/21 13:27:43 jhurst Exp $ \brief AS-DCP library, non-public common elements */ @@ -122,14 +122,6 @@ namespace ASDCP { 0x43, 0x48, 0x55, 0x4b, 0x43, 0x48, 0x55, 0x4b, 0x43, 0x48, 0x55, 0x4b, 0x43, 0x48, 0x55, 0x4b }; - // Version of MXF spec to which an MXF file conforms - enum MXFVersion - { - MXFVersion_2004, - MXFVersion_2011, - MXFVersion_MAX - }; - //------------------------------------------------------------------------------------------ // @@ -536,11 +528,11 @@ namespace ASDCP const MXF::RIP& GetRIP() const { return m_RIP; } - void InitHeader(const MXFVersion& mxf_ver) + void InitHeader() { assert(m_Dict); assert(m_EssenceDescriptor); - + m_HeaderPart.m_Primer.ClearTagList(); m_HeaderPart.m_Preface = new Preface(m_Dict); m_HeaderPart.AddChildObject(m_HeaderPart.m_Preface); @@ -550,20 +542,6 @@ namespace ASDCP m_HeaderPart.m_Preface->OperationalPattern = UL(m_Dict->ul(MDD_OP1a)); m_HeaderPart.OperationalPattern = m_HeaderPart.m_Preface->OperationalPattern; - if ( mxf_ver == MXFVersion_2004 ) - { - m_HeaderPart.MinorVersion = 2; - m_HeaderPart.m_Preface->Version = 258; - m_HeaderPart.m_Preface->ObjectModelVersion = 1; - } - else - { - assert(mxf_ver == MXFVersion_2011); - m_HeaderPart.MinorVersion = 3; - m_HeaderPart.m_Preface->Version = 259; - m_HeaderPart.m_Preface->ObjectModelVersion = 1; - } - // Identification Identification* Ident = new Identification(m_Dict); m_HeaderPart.AddChildObject(Ident); diff --git a/libasdcp/DCData_ByteStream_Parser.cpp b/libasdcp/DCData_ByteStream_Parser.cpp index 703c279..dd2fe38 100644 --- a/libasdcp/DCData_ByteStream_Parser.cpp +++ b/libasdcp/DCData_ByteStream_Parser.cpp @@ -24,8 +24,8 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/*! \file DCData_ByteStream_Parser.cpp - \version $Id: DCData_ByteStream_Parser.cpp,v 1.3 2016/05/17 16:46:05 jhurst Exp $ +/*! \file AtmosSyncChannel_Mixer.h + \version $Id: DCData_ByteStream_Parser.cpp,v 1.2 2014/01/02 23:29:22 jhurst Exp $ \brief AS-DCP library, Digital Cinema Data bytestream essence reader */ diff --git a/libasdcp/DCData_Sequence_Parser.cpp b/libasdcp/DCData_Sequence_Parser.cpp index 4f82f0c..f30671e 100644 --- a/libasdcp/DCData_Sequence_Parser.cpp +++ b/libasdcp/DCData_Sequence_Parser.cpp @@ -24,8 +24,8 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/*! \file DCData_Sequence_Parser.cpp - \version $Id: DCData_Sequence_Parser.cpp,v 1.3 2016/05/17 16:46:05 jhurst Exp $ +/*! \file AtmosSyncChannel_Mixer.h + \version $Id: DCData_Sequence_Parser.cpp,v 1.2 2014/01/02 23:29:22 jhurst Exp $ \brief AS-DCP library, DCinema data seqence reader implementation */ diff --git a/libasdcp/Dict.cpp b/libasdcp/Dict.cpp index 8c7a8e1..7a64529 100644 --- a/libasdcp/Dict.cpp +++ b/libasdcp/Dict.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2006-2016, John Hurst +Copyright (c) 2006-2009, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -25,7 +25,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file Dict.cpp - \version $Id: Dict.cpp,v 1.17 2016/05/16 21:56:53 jhurst Exp $ + \version $Id: Dict.cpp,v 1.16 2013/06/07 00:41:00 jhurst Exp $ \brief MXF dictionary */ @@ -195,7 +195,6 @@ ASDCP::Dictionary::AddEntry(const MDDEntry& Entry, ui32_t index) UL TmpUL(Entry.ul); -#define MDD_AUTHORING_MODE #ifdef MDD_AUTHORING_MODE char buf[64]; std::map::iterator ii = m_md_lookup.find(TmpUL); @@ -254,57 +253,26 @@ ASDCP::Dictionary::Type(MDD_t type_id) const // const ASDCP::MDDEntry* -ASDCP::Dictionary::FindULAnyVersion(const byte_t* ul_buf) const -{ - assert(m_MDD_Table[0].name[0]); - byte_t search_ul[SMPTE_UL_LENGTH]; - memcpy(search_ul, ul_buf, SMPTE_UL_LENGTH); - memset(search_ul+7, 0, SMPTE_UL_LENGTH-7); - - UL target(ul_buf); - const ASDCP::MDDEntry *found_entry = 0; - - std::map::const_iterator lower = m_md_lookup.lower_bound(UL(search_ul)); - - for ( ; lower != m_md_lookup.end(); ++lower ) - { - if ( lower->first.MatchExact(target) ) - { - found_entry = &m_MDD_Table[lower->second]; - break; - } - else if ( found_entry == 0 && lower->first.MatchIgnoreStream(target) ) - { - found_entry = &m_MDD_Table[lower->second]; - } - else if ( found_entry != 0 && ! lower->first.MatchIgnoreStream(target) ) - { - break; - } - } - - if ( found_entry == 0 ) - { - char buf[64]; - Kumu::DefaultLogSink().Warn("UL Dictionary: unknown UL: %s\n", target.EncodeString(buf, 64)); - } - - return found_entry; -} - -// -const ASDCP::MDDEntry* -ASDCP::Dictionary::FindULExact(const byte_t* ul_buf) const +ASDCP::Dictionary::FindUL(const byte_t* ul_buf) const { assert(m_MDD_Table[0].name[0]); std::map::const_iterator i = m_md_lookup.find(UL(ul_buf)); if ( i == m_md_lookup.end() ) { - char buf[64]; - UL tmp_ul(ul_buf); - Kumu::DefaultLogSink().Warn("UL Dictionary: unknown UL: %s\n", tmp_ul.EncodeString(buf, 64)); - return 0; + byte_t tmp_ul[SMPTE_UL_LENGTH]; + memcpy(tmp_ul, ul_buf, SMPTE_UL_LENGTH); + tmp_ul[SMPTE_UL_LENGTH-1] = 0; + + i = m_md_lookup.find(UL(tmp_ul)); + + if ( i == m_md_lookup.end() ) + { + char buf[64]; + UL TmpUL(ul_buf); + Kumu::DefaultLogSink().Warn("UL Dictionary: unknown UL: %s\n", TmpUL.EncodeString(buf, 64)); + return 0; + } } return &m_MDD_Table[i->second]; diff --git a/libasdcp/Index.cpp b/libasdcp/Index.cpp index 76f0ed7..3f9a5cd 100644 --- a/libasdcp/Index.cpp +++ b/libasdcp/Index.cpp @@ -25,7 +25,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file Index.cpp - \version $Id: Index.cpp,v 1.26 2016/06/28 22:00:06 jhurst Exp $ + \version $Id: Index.cpp,v 1.25 2015/10/07 16:41:23 jhurst Exp $ \brief MXF index segment objects */ @@ -79,42 +79,7 @@ ASDCP::MXF::IndexTableSegment::InitFromTLVSet(TLVReader& TLVSet) if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(IndexTableSegmentBase, SliceCount)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(IndexTableSegmentBase, PosTableCount)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(IndexTableSegment, DeltaEntryArray)); - - if ( ASDCP_SUCCESS(result) ) - { - bool rc = TLVSet.FindTL(m_Dict->Type(MDD_IndexTableSegment_IndexEntryArray)); - - if ( rc ) - { - ui32_t item_count, item_size; - ui32_t const decoder_item_size = IndexEntryArray.ItemSize(); - - if ( TLVSet.ReadUi32BE(&item_count) ) - { - if ( TLVSet.ReadUi32BE(&item_size) ) - { - for ( ui32_t i = 0; i < item_count && rc; ++i ) - { - IndexEntry tmp_item; - rc = tmp_item.Unarchive(&TLVSet); - - if ( rc ) - { - IndexEntryArray.push_back(tmp_item); - - if ( decoder_item_size < item_size ) - { - TLVSet.SkipOffset(item_size - decoder_item_size); - } - } - } - } - } - } - - result = rc ? RESULT_OK : RESULT_FALSE; - } - + if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(IndexTableSegment, IndexEntryArray)); return result; } @@ -171,11 +136,7 @@ ASDCP::MXF::IndexTableSegment::Dump(FILE* stream) fprintf(stream, " DeltaEntryArray:\n"); DeltaEntryArray.Dump(stream); - if ( IndexEntryArray.empty() ) - { - fprintf(stream, " IndexEntryArray: NO ENTRIES\n"); - } - else if ( IndexEntryArray.size() < 1000 ) + if ( IndexEntryArray.size() < 1000 ) { fprintf(stream, " IndexEntryArray:\n"); IndexEntryArray.Dump(stream); diff --git a/libasdcp/KLV.cpp b/libasdcp/KLV.cpp index 2c0880b..5bc8868 100644 --- a/libasdcp/KLV.cpp +++ b/libasdcp/KLV.cpp @@ -25,7 +25,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file KLV.cpp - \version $Id: KLV.cpp,v 1.17 2016/05/16 21:56:53 jhurst Exp $ + \version $Id: KLV.cpp,v 1.16 2015/10/12 15:30:46 jhurst Exp $ \brief KLV objects */ @@ -171,7 +171,7 @@ ASDCP::KLVPacket::Dump(FILE* stream, const Dictionary& Dict, bool show_value) UL TmpUL(m_KeyStart); fprintf(stream, "%s", TmpUL.EncodeString(buf, 64)); - const MDDEntry* Entry = Dict.FindULAnyVersion(m_KeyStart); + const MDDEntry* Entry = Dict.FindUL(m_KeyStart); fprintf(stream, " len: %7qu (%s)\n", m_ValueLength, (Entry ? Entry->name : "Unknown")); if ( show_value && m_ValueLength < 1000 ) diff --git a/libasdcp/KLV.h b/libasdcp/KLV.h index 97a8c00..e525667 100644 --- a/libasdcp/KLV.h +++ b/libasdcp/KLV.h @@ -1,5 +1,5 @@ /* -Copyright (c) 2005-2016, John Hurst +Copyright (c) 2005-2011, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -25,7 +25,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file KLV.h - \version $Id: KLV.h,v 1.31 2016/05/16 21:56:53 jhurst Exp $ + \version $Id: KLV.h,v 1.29 2014/09/21 13:27:43 jhurst Exp $ \brief KLV objects */ @@ -108,7 +108,7 @@ inline const char* ui64sz(ui64_t i, char* buf) const char* EncodeString(char* str_buf, ui32_t buf_len) const; bool operator==(const UL& rhs) const; bool MatchIgnoreStream(const UL& rhs) const; - bool MatchExact(const UL& rhs) const; + bool ExactMatch(const UL& rhs) const; }; // UMID @@ -159,8 +159,7 @@ inline const char* ui64sz(ui64_t i, char* buf) bool AddEntry(const MDDEntry& Entry, ui32_t index); bool DeleteEntry(ui32_t index); - const MDDEntry* FindULAnyVersion(const byte_t*) const; - const MDDEntry* FindULExact(const byte_t*) const; + const MDDEntry* FindUL(const byte_t*) const; const MDDEntry* FindSymbol(const std::string&) const; const MDDEntry& Type(MDD_t type_id) const; diff --git a/libasdcp/KM_fileio.cpp b/libasdcp/KM_fileio.cpp index b83a4bb..459a08d 100644 --- a/libasdcp/KM_fileio.cpp +++ b/libasdcp/KM_fileio.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2004-2016, John Hurst +Copyright (c) 2004-2014, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -25,7 +25,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file KM_fileio.cpp - \version $Id: KM_fileio.cpp,v 1.47 2016/12/03 21:26:24 jhurst Exp $ + \version $Id: KM_fileio.cpp,v 1.40 2015/10/07 16:58:03 jhurst Exp $ \brief portable file i/o */ @@ -48,10 +48,6 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #endif -#if defined(__OpenBSD__) -#include -#endif - using namespace Kumu; #ifdef KM_WIN32 @@ -79,9 +75,6 @@ struct iovec { typedef struct stat fstat_t; #endif -#if defined(__sun) && defined(__SVR4) -#include -#endif // static Kumu::Result_t @@ -662,29 +655,18 @@ Kumu::GetExecutablePath(const std::string& default_path) size_t size = X_BUFSIZE; ssize_t rc = readlink("/proc/self/exe", path, size); success = ( rc != -1 ); -#elif defined(__OpenBSD__) - // This fails if the CWD changes after the program has started but before the - // call to GetExecutablePath(). For least surprise, call GetExecutablePath() - // immediately in main() and save the value for later use. - const, char* p = getenv("_"); - if ( p ) - { - return Kumu::PathMakeAbsolute(p); - } +#elif defined(__OpenBSD__) || defined(__FreeBSD__) + size_t size = X_BUFSIZE; + ssize_t rc = readlink("/proc/curproc/file", path, size); + success = ( rc != -1 ); #elif defined(__FreeBSD__) - // requires procfs size_t size = X_BUFSIZE; ssize_t rc = readlink("/proc/curproc/file", path, size); success = ( rc != -1 ); #elif defined(__NetBSD__) size_t size = X_BUFSIZE; - ssize_t rc = readlink("/proc/curproc/exe", path, size); + ssize_t rc = readlink("/proc/curproc/file", path, size); success = ( rc != -1 ); -#elif defined(__sun) && defined(__SVR4) - size_t size = X_BUFSIZE; - char program[MAXPATHLEN]; - snprintf(program, MAXPATHLEN, "/proc/%d/path/a.out", getpid()); - ssize_t rc = readlink(program, path, size); #else #error GetExecutablePath --> Create a method for obtaining the executable name #endif @@ -1070,7 +1052,7 @@ Kumu::Result_t Kumu::FileWriter::OpenWrite(const std::string& filename) { m_Filename = filename; - m_Handle = open(filename.c_str(), O_RDWR|O_CREAT|O_TRUNC, 0666); + m_Handle = open(filename.c_str(), O_RDWR|O_CREAT|O_TRUNC, 0664); if ( m_Handle == -1L ) { @@ -1087,7 +1069,7 @@ Kumu::Result_t Kumu::FileWriter::OpenModify(const std::string& filename) { m_Filename = filename; - m_Handle = open(filename.c_str(), O_RDWR|O_CREAT, 0666); + m_Handle = open(filename.c_str(), O_RDWR|O_CREAT, 0664); if ( m_Handle == -1L ) { @@ -1224,7 +1206,7 @@ Kumu::ReadFileIntoObject(const std::string& Filename, Kumu::IArchive& Object, ui if ( KM_SUCCESS(result) ) { ui32_t read_count = 0; - FileReader Reader; + FileWriter Reader; result = Reader.OpenRead(Filename); @@ -1284,7 +1266,7 @@ Kumu::ReadFileIntoBuffer(const std::string& Filename, Kumu::ByteString& Buffer, if ( KM_SUCCESS(result) ) { ui32_t read_count = 0; - FileReader Reader; + FileWriter Reader; result = Reader.OpenRead(Filename); @@ -1325,6 +1307,96 @@ Kumu::WriteBufferIntoFile(const Kumu::ByteString& Buffer, const std::string& Fil // +// Win32 directory scanner +// +#ifdef KM_WIN32 + +// +Kumu::DirScanner::DirScanner(void) : m_Handle(-1) {} + +// +// +Result_t +Kumu::DirScanner::Open(const std::string& filename) +{ + // we need to append a '*' to read the entire directory + ui32_t fn_len = filename.size(); + char* tmp_file = (char*)malloc(fn_len + 8); + + if ( tmp_file == 0 ) + return RESULT_ALLOC; + + strcpy(tmp_file, filename.c_str()); + char* p = &tmp_file[fn_len] - 1; + + if ( *p != '/' && *p != '\\' ) + { + p++; + *p++ = '/'; + } + + *p++ = '*'; + *p = 0; + // whew... + + m_Handle = _findfirsti64(tmp_file, &m_FileInfo); + Result_t result = RESULT_OK; + + if ( m_Handle == -1 ) + result = RESULT_NOT_FOUND; + + return result; +} + + +// +// +Result_t +Kumu::DirScanner::Close() +{ + if ( m_Handle == -1 ) + return RESULT_FILEOPEN; + + if ( _findclose((long)m_Handle) == -1 ) + return RESULT_FAIL; + + m_Handle = -1; + return RESULT_OK; +} + + +// This sets filename param to the same per-instance buffer every time, so +// the value will change on the next call +Result_t +Kumu::DirScanner::GetNext(char* filename) +{ + KM_TEST_NULL_L(filename); + + if ( m_Handle == -1 ) + return RESULT_FILEOPEN; + + if ( m_FileInfo.name[0] == '\0' ) + return RESULT_ENDOFFILE; + + strncpy(filename, m_FileInfo.name, MaxFilePath); + Result_t result = RESULT_OK; + + if ( _findnexti64((long)m_Handle, &m_FileInfo) == -1 ) + { + m_FileInfo.name[0] = '\0'; + + if ( errno != ENOENT ) + result = RESULT_FAIL; + } + + return result; +} + + +#else // KM_WIN32 + +// POSIX directory scanner + // Kumu::DirScanner::DirScanner(void) : m_Handle(NULL) {} @@ -1406,7 +1478,6 @@ Kumu::DirScanner::GetNext(char* filename) return RESULT_OK; } -//------------------------------------------------------------------------------------------ // Kumu::DirScannerEx::DirScannerEx() : m_Handle(0) {} @@ -1478,9 +1549,6 @@ Kumu::DirScannerEx::GetNext(std::string& next_item_name, DirectoryEntryType_t& n if ( m_Handle == 0 ) return RESULT_FILEOPEN; -#if defined(__sun) && defined(__SVR4) - struct stat s; -#endif struct dirent* entry; for (;;) @@ -1493,28 +1561,6 @@ Kumu::DirScannerEx::GetNext(std::string& next_item_name, DirectoryEntryType_t& n next_item_name.assign(entry->d_name, strlen(entry->d_name)); -#if defined(__sun) && defined(__SVR4) - - stat(entry->d_name, &s); - - switch ( s.st_mode ) - { - case S_IFDIR: - next_item_type = DET_DIR; - break; - - case S_IFREG: - next_item_type = DET_FILE; - break; - - case S_IFLNK: - next_item_type = DET_LINK; - break; - - default: - next_item_type = DET_DEV; - } -#else // __sun switch ( entry->d_type ) { case DT_DIR: @@ -1532,11 +1578,14 @@ Kumu::DirScannerEx::GetNext(std::string& next_item_name, DirectoryEntryType_t& n default: next_item_type = DET_DEV; } -#endif // __sun + return RESULT_OK; } +#endif // KM_WIN32 + + //------------------------------------------------------------------------------------------ // @@ -1565,7 +1614,7 @@ Kumu::CreateDirectoriesInPath(const std::string& Path) #ifdef KM_WIN32 if ( _mkdir(tmp_path.c_str()) != 0 ) #else // KM_WIN32 - if ( mkdir(tmp_path.c_str(), 0777) != 0 ) + if ( mkdir(tmp_path.c_str(), 0775) != 0 ) #endif // KM_WIN32 { DefaultLogSink().Error("CreateDirectoriesInPath mkdir %s: %s\n", @@ -1723,20 +1772,6 @@ Kumu::FreeSpaceForPath(const std::string& path, Kumu::fsize_t& free_space, Kumu: #else // KM_WIN32 struct statfs s; -#if defined(__sun) && defined(__SVR4) - if ( statfs(path.c_str(), &s, s.f_bsize, s.f_fstyp ) == 0 ) - { if ( s.f_blocks < 1 ) - { - DefaultLogSink().Error("File system %s has impossible size: %ld\n", - path.c_str(), s.f_blocks); - return RESULT_FAIL; - } - - free_space = (Kumu::fsize_t)s.f_bsize * (Kumu::fsize_t)s.f_bfree; - total_space = (Kumu::fsize_t)s.f_bsize * (Kumu::fsize_t)s.f_blocks; - return RESULT_OK; - } -#else if ( statfs(path.c_str(), &s) == 0 ) { if ( s.f_blocks < 1 ) @@ -1760,7 +1795,6 @@ Kumu::FreeSpaceForPath(const std::string& path, Kumu::fsize_t& free_space, Kumu: DefaultLogSink().Error("FreeSpaceForPath statfs %s: %s\n", path.c_str(), strerror(errno)); return RESULT_FAIL; -#endif // __sun #endif // KM_WIN32 } diff --git a/libasdcp/KM_fileio.h b/libasdcp/KM_fileio.h index 026f805..dd4d2ca 100644 --- a/libasdcp/KM_fileio.h +++ b/libasdcp/KM_fileio.h @@ -1,5 +1,5 @@ /* -Copyright (c) 2004-2016, John Hurst +Copyright (c) 2004-2014, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -25,7 +25,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file KM_fileio.h - \version $Id: KM_fileio.h,v 1.23 2016/12/02 18:45:14 jhurst Exp $ + \version $Id: KM_fileio.h,v 1.22 2015/10/07 16:41:23 jhurst Exp $ \brief portable file i/o */ @@ -37,7 +37,6 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifdef KM_WIN32 # include -# include "dirent_win.h" #else # include # include @@ -56,7 +55,12 @@ namespace Kumu class DirScanner { public: +#ifdef KM_WIN32 + __int64 m_Handle; + struct _finddatai64_t m_FileInfo; +#else DIR* m_Handle; +#endif DirScanner(void); ~DirScanner() { Close(); } @@ -79,7 +83,12 @@ namespace Kumu class DirScannerEx { std::string m_Dirname; +#ifdef KM_WIN32 + __int64 m_Handle; + struct _finddatai64_t m_FileInfo; +#else DIR* m_Handle; +#endif KM_NO_COPY_CONSTRUCT(DirScannerEx); diff --git a/libasdcp/KM_prng.cpp b/libasdcp/KM_prng.cpp index 5212595..ab9aa7a 100644 --- a/libasdcp/KM_prng.cpp +++ b/libasdcp/KM_prng.cpp @@ -34,9 +34,10 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include + +#include +#include #include -#include -#include using namespace Kumu; @@ -202,8 +203,6 @@ Kumu::Gen_FIPS_186_Value(const byte_t* key, ui32_t key_size, byte_t* out_buf, ui byte_t sha_buf[SHA_DIGEST_LENGTH]; ui32_t const xkey_len = 64; // 512/8 byte_t xkey[xkey_len]; - BN_CTX* ctx1 = BN_CTX_new(); // used by BN_* functions - assert(ctx1); if ( key_size > xkey_len ) DefaultLogSink().Warn("Key too large for FIPS 186 seed, truncating to 64 bytes.\n"); @@ -216,26 +215,29 @@ Kumu::Gen_FIPS_186_Value(const byte_t* key, ui32_t key_size, byte_t* out_buf, ui key_size = SHA_DIGEST_LENGTH; // pad short key ( b < 160 ) // create the 2^b constant - BIGNUM c_2powb, c_2, c_b; - BN_init(&c_2powb); BN_init(&c_2); BN_init(&c_b); - BN_set_word(&c_2, 2); - BN_set_word(&c_b, key_size * 8); - BN_exp(&c_2powb, &c_2, &c_b, ctx1); + ttmath::UInt<32> c_2powb, c_2, c_b; + c_2 = 2; + c_b = 8 * key_size; + c_2.Pow(c_b); + c_2powb = c_2; for (;;) { SHA_CTX SHA; + ui32_t hex_len = xkey_len; + char hex_s[hex_len]; // step c -- x = G(t,xkey) SHA1_Init(&SHA); // set t SHA1_Update(&SHA, xkey, xkey_len); - ui32_t* buf_p = (ui32_t*)sha_buf; - *buf_p++ = KM_i32_BE(SHA.h0); - *buf_p++ = KM_i32_BE(SHA.h1); - *buf_p++ = KM_i32_BE(SHA.h2); - *buf_p++ = KM_i32_BE(SHA.h3); - *buf_p++ = KM_i32_BE(SHA.h4); + ui32_t *buf_p = (ui32_t *)sha_buf; + ui32_t *data_p = (ui32_t *)SHA.data; + for (int i = 0; i < 5; i++) + { + *buf_p++ = KM_i32_BE(*data_p++); + } + memcpy(out_buf, sha_buf, xmin(out_buf_len, SHA_DIGEST_LENGTH)); if ( out_buf_len <= SHA_DIGEST_LENGTH ) @@ -245,22 +247,26 @@ Kumu::Gen_FIPS_186_Value(const byte_t* key, ui32_t key_size, byte_t* out_buf, ui out_buf += SHA_DIGEST_LENGTH; // step d -- XKEY = (1 + XKEY + x) mod 2^b - BIGNUM bn_tmp, bn_xkey, bn_x_n; - BN_init(&bn_tmp); BN_init(&bn_xkey); BN_init(&bn_x_n); + ttmath::UInt<4> tt_x_n, tt_xkey, tt_tmp; + + memset(hex_s, 0, hex_len); + bin2hex(xkey, key_size, hex_s, hex_len); + tt_xkey.FromString(hex_s, 16); - BN_bin2bn(xkey, key_size, &bn_xkey); - BN_bin2bn(sha_buf, SHA_DIGEST_LENGTH, &bn_x_n); - BN_add_word(&bn_xkey, 1); // xkey += 1 - BN_add(&bn_tmp, &bn_xkey, &bn_x_n); // xkey += x - BN_mod(&bn_xkey, &bn_tmp, &c_2powb, ctx1); // xkey = xkey mod (2^b) + memset(hex_s, 0, hex_len); + bin2hex(sha_buf, SHA_DIGEST_LENGTH, hex_s, hex_len); + tt_x_n.FromString(hex_s, 16); + + tt_xkey += 1; // xkey += 1 + tt_tmp = tt_xkey + tt_x_n; // xkey += x + tt_xkey = tt_tmp % c_2powb; // xkey = xkey mod (2^b) memset(xkey, 0, xkey_len); - ui32_t bn_buf_len = BN_num_bytes(&bn_xkey); - ui32_t idx = ( bn_buf_len < key_size ) ? key_size - bn_buf_len : 0; - BN_bn2bin(&bn_xkey, &xkey[idx]); + ui32_t x_len = strlen(tt_xkey.ToString(16).c_str()); + ui32_t idx = ( x_len < key_size ) ? key_size - x_len : 0; + ui32_t length; + hex2bin(tt_xkey.ToString(16).c_str(), xkey+idx, xkey_len, &length); } - - BN_CTX_free(ctx1); } // diff --git a/libasdcp/KM_tai.cpp b/libasdcp/KM_tai.cpp index b2788ae..2cbd125 100644 --- a/libasdcp/KM_tai.cpp +++ b/libasdcp/KM_tai.cpp @@ -44,7 +44,7 @@ The libtai source code is in the public domain. */ /*! \file KM_tai.cpp - \version $Id: KM_tai.cpp,v 1.6 2016/03/02 18:57:41 jhurst Exp $ + \version $Id: KM_tai.cpp,v 1.5 2012/03/07 17:30:52 mikey Exp $ \brief portable time functions */ @@ -190,7 +190,6 @@ Kumu::TAI::tai::now() ct.hour = st.wHour; ct.minute = st.wMinute; ct.second = st.wSecond; - ct.offset = 0; caltime_tai(&ct, this); #else struct timeval now; diff --git a/libasdcp/KM_util.h b/libasdcp/KM_util.h index 011bb0b..8b1db49 100644 --- a/libasdcp/KM_util.h +++ b/libasdcp/KM_util.h @@ -25,7 +25,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file KM_util.h - \version $Id: KM_util.h,v 1.40 2016/12/07 18:11:32 jhurst Exp $ + \version $Id: KM_util.h,v 1.39 2015/10/12 15:30:46 jhurst Exp $ \brief Utility functions */ @@ -543,27 +543,6 @@ namespace Kumu // adjacent instances of the separator. E.g., "/foo//bar/" will return ["", "foo", "", "bar", ""]. std::list km_token_split(const std::string& str, const std::string& separator); - // Join the tokens in the given list using delimiter. If prefix is defined then each token - // will be concatenated with the prefix before being added to the composite string. - template - std::string - km_join(const T& list, const std::string& delimiter, const std::string& prefix = "") - { - std::string result; - - for ( typename T::const_iterator i = list.begin(); i != list.end(); ++i ) - { - if ( i != list.begin() ) - { - result += delimiter; - } - - result += prefix + *i; - } - - return result; - } - } // namespace Kumu diff --git a/libasdcp/KM_xml.h b/libasdcp/KM_xml.h index fca05cd..695b486 100644 --- a/libasdcp/KM_xml.h +++ b/libasdcp/KM_xml.h @@ -25,7 +25,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file KM_xml.h - \version $Id: KM_xml.h,v 1.12 2016/12/07 18:11:32 jhurst Exp $ + \version $Id: KM_xml.h,v 1.11 2015/02/19 19:06:57 jhurst Exp $ \brief XML writer */ @@ -35,7 +35,6 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include -#include #include namespace Kumu @@ -144,77 +143,6 @@ namespace Kumu void DeleteChild(const XMLElement* element); void ForgetChild(const XMLElement* element); }; - - // - template - bool - apply_visitor(const XMLElement& element, VisitorType& visitor) - { - const ElementList& l = element.GetChildren(); - ElementList::const_iterator i; - - for ( i = l.begin(); i != l.end(); ++i ) - { - if ( ! visitor.Element(**i) ) - { - return false; - } - - if ( ! apply_visitor(**i, visitor) ) - { - return false; - } - } - - return true; - } - - // - class AttributeVisitor - { - std::string attr_name; - - public: - AttributeVisitor(const std::string& n) : attr_name(n) {} - std::set value_list; - - bool Element(const XMLElement& e) - { - const AttributeList& l = e.GetAttributes(); - AttributeList::const_iterator i; - - for ( i = l.begin(); i != l.end(); ++i ) - { - if ( i->name == attr_name ) - { - value_list.insert(i->value); - } - } - - return true; - } - }; - - // - class ElementVisitor - { - std::string element_name; - - public: - ElementVisitor(const std::string& n) : element_name(n) {} - std::set value_list; - - bool Element(const XMLElement& e) - { - if ( e.GetBody() == element_name ) - { - value_list.insert(e.GetBody()); - } - - return true; - } - }; - } // namespace Kumu #endif // _KM_XML_H_ diff --git a/libasdcp/MDD.cpp b/libasdcp/MDD.cpp index 319078e..e70d662 100644 --- a/libasdcp/MDD.cpp +++ b/libasdcp/MDD.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2006-2016, John Hurst +Copyright (c) 2006-2015, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -25,7 +25,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file MDD.[h|cpp] - \version $Id: MDD.cpp,v 1.58 2016/12/10 21:55:07 jhurst Exp $ + \version $Id: MDD.cpp,v 1.49 2015/04/21 03:55:31 jhurst Exp $ \brief MXF Metadata Dictionary */ // @@ -35,1426 +35,1160 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "KLV.h" static const ASDCP::MDDEntry s_MDD_Table[] = { - { { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "MICAlgorithm_NONE" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, // 1 - 0x0d, 0x01, 0x02, 0x01, 0x10, 0x00, 0x00, 0x00 }, - {0}, false, "MXFInterop_OPAtom" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x02, // 2 - 0x0d, 0x01, 0x02, 0x01, 0x10, 0x00, 0x00, 0x00 }, - {0}, false, "OPAtom" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, // 3 - 0x0d, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00 }, - {0}, false, "OP1a" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x03, // 4 - 0x0d, 0x01, 0x03, 0x01, 0x02, 0x7f, 0x01, 0x00 }, - {0}, false, "GCMulti" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, // 5 - 0x01, 0x03, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00 }, - {0}, false, "PictureDataDef" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, // 6 - 0x01, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00 }, - {0}, false, "SoundDataDef" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, // 7 - 0x01, 0x03, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00 }, - {0}, false, "TimecodeDataDef" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, // 8 - 0x01, 0x03, 0x02, 0x01, 0x10, 0x00, 0x00, 0x00 }, - {0}, false, "DescriptiveMetaDataDef" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, // 9 - 0x0d, 0x01, 0x03, 0x01, 0x02, 0x06, 0x01, 0x00 }, - {0}, false, "WAVWrappingFrame" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x02, // 10 - 0x0d, 0x01, 0x03, 0x01, 0x02, 0x04, 0x60, 0x00 }, - {0}, false, "MPEG2_VESWrappingFrame" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x07, // 11 - 0x0d, 0x01, 0x03, 0x01, 0x02, 0x0c, 0x01, 0x00 }, - {0}, false, "MXFGCFUFrameWrappedPictureElement" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x02, 0x01, 0x01, // 12 - 0x0d, 0x01, 0x03, 0x01, 0x15, 0x01, 0x08, 0x00 }, - {0}, false, "JPEG2000Essence" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x02, 0x01, 0x01, // 13 - 0x0d, 0x01, 0x03, 0x01, 0x15, 0x01, 0x05, 0x00 }, - {0}, false, "MPEG2Essence" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x04, 0x01, 0x07, // 14 - 0x0d, 0x01, 0x03, 0x01, 0x02, 0x7e, 0x01, 0x00 }, - {0}, false, "MXFInterop_CryptEssence" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x04, 0x01, 0x01, // 15 - 0x0d, 0x01, 0x03, 0x01, 0x02, 0x7e, 0x01, 0x00 }, - {0}, false, "CryptEssence" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x02, 0x01, 0x01, // 16 - 0x0d, 0x01, 0x03, 0x01, 0x16, 0x01, 0x01, 0x00 }, - {0}, false, "WAVEssence" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x09, // 17 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x01, 0x03 }, - {0}, false, "JP2KEssenceCompression_2K" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x09, // 18 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x01, 0x04 }, - {0}, false, "JP2KEssenceCompression_4K" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x07, // 19 - 0x02, 0x09, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00 }, - {0}, false, "CipherAlgorithm_AES" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x07, // 20 - 0x02, 0x09, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00 }, - {0}, false, "MICAlgorithm_HMAC_SHA1" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 21 - 0x03, 0x01, 0x02, 0x10, 0x01, 0x00, 0x00, 0x00 }, - {0}, false, "KLVFill" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 22 - 0x03, 0x01, 0x02, 0x01, 0x06, 0x00, 0x00, 0x00 }, - {0}, false, "PartitionMetadata_MajorVersion" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 23 - 0x03, 0x01, 0x02, 0x01, 0x07, 0x00, 0x00, 0x00 }, - {0}, false, "PartitionMetadata_MinorVersion" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 24 - 0x03, 0x01, 0x02, 0x01, 0x09, 0x00, 0x00, 0x00 }, - {0}, false, "PartitionMetadata_KAGSize" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 25 - 0x06, 0x10, 0x10, 0x03, 0x01, 0x00, 0x00, 0x00 }, - {0}, false, "PartitionMetadata_ThisPartition" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 26 - 0x06, 0x10, 0x10, 0x02, 0x01, 0x00, 0x00, 0x00 }, - {0}, false, "PartitionMetadata_PreviousPartition" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 27 - 0x06, 0x10, 0x10, 0x05, 0x01, 0x00, 0x00, 0x00 }, - {0}, false, "PartitionMetadata_FooterPartition" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 28 - 0x04, 0x06, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "PartitionMetadata_HeaderByteCount" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 29 - 0x04, 0x06, 0x09, 0x02, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "PartitionMetadata_IndexByteCount" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 30 - 0x01, 0x03, 0x04, 0x05, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "PartitionMetadata_IndexSID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 31 - 0x06, 0x08, 0x01, 0x02, 0x01, 0x03, 0x00, 0x00 }, - {0}, false, "PartitionMetadata_BodyOffset" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 32 - 0x01, 0x03, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "PartitionMetadata_BodySID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 33 - 0x01, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "PartitionMetadata_OperationalPattern" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 34 - 0x01, 0x02, 0x02, 0x10, 0x02, 0x01, 0x00, 0x00 }, - {0}, false, "PartitionMetadata_EssenceContainers" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 35 - 0x0d, 0x01, 0x02, 0x01, 0x01, 0x02, 0x01, 0x00 }, - {0}, false, "OpenHeader" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 36 - 0x0d, 0x01, 0x02, 0x01, 0x01, 0x02, 0x03, 0x00 }, - {0}, false, "OpenCompleteHeader" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 37 - 0x0d, 0x01, 0x02, 0x01, 0x01, 0x02, 0x02, 0x00 }, - {0}, false, "ClosedHeader" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 38 - 0x0d, 0x01, 0x02, 0x01, 0x01, 0x02, 0x04, 0x00 }, - {0}, false, "ClosedCompleteHeader" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 39 - 0x0d, 0x01, 0x02, 0x01, 0x01, 0x03, 0x01, 0x00 }, - {0}, false, "OpenBodyPartition" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 40 - 0x0d, 0x01, 0x02, 0x01, 0x01, 0x03, 0x03, 0x00 }, - {0}, false, "OpenCompleteBodyPartition" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 41 - 0x0d, 0x01, 0x02, 0x01, 0x01, 0x03, 0x02, 0x00 }, - {0}, false, "ClosedBodyPartition" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 42 - 0x0d, 0x01, 0x02, 0x01, 0x01, 0x03, 0x04, 0x00 }, - {0}, false, "ClosedCompleteBodyPartition" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 43 - 0x0d, 0x01, 0x02, 0x01, 0x01, 0x04, 0x02, 0x00 }, - {0}, false, "Footer" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 44 - 0x0d, 0x01, 0x02, 0x01, 0x01, 0x04, 0x04, 0x00 }, - {0}, false, "CompleteFooter" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 45 - 0x0d, 0x01, 0x02, 0x01, 0x01, 0x05, 0x01, 0x00 }, - {0}, false, "Primer" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 46 - 0x06, 0x01, 0x01, 0x07, 0x15, 0x00, 0x00, 0x00 }, - {0}, false, "Primer_LocalTagEntryBatch" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 47 - 0x01, 0x03, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "LocalTagEntryBatch_Primer_LocalTag" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 48 - 0x01, 0x03, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "LocalTagEntryBatch_Primer_UID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 49 - 0x01, 0x01, 0x15, 0x02, 0x00, 0x00, 0x00, 0x00 }, - {0x3c, 0x0a}, false, "InterchangeObject_InstanceUID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 50 - 0x05, 0x20, 0x07, 0x01, 0x08, 0x00, 0x00, 0x00 }, - {0x01, 0x02}, true, "GenerationInterchangeObject_GenerationUID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 51 - 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "DefaultObject" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 52 - 0x05, 0x30, 0x04, 0x06, 0x00, 0x00, 0x00, 0x00 }, - {0x3f, 0x0b}, false, "IndexTableSegmentBase_IndexEditRate" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 53 - 0x07, 0x02, 0x01, 0x03, 0x01, 0x0a, 0x00, 0x00 }, - {0x3f, 0x0c}, false, "IndexTableSegmentBase_IndexStartPosition" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 54 - 0x07, 0x02, 0x02, 0x01, 0x01, 0x02, 0x00, 0x00 }, - {0x3f, 0x0d}, false, "IndexTableSegmentBase_IndexDuration" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 55 - 0x04, 0x06, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00 }, - {0x3f, 0x05}, false, "IndexTableSegmentBase_EditUnitByteCount" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 56 - 0x01, 0x03, 0x04, 0x05, 0x00, 0x00, 0x00, 0x00 }, - {0x3f, 0x06}, false, "IndexTableSegmentBase_IndexSID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 57 - 0x01, 0x03, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00 }, - {0x3f, 0x07}, false, "IndexTableSegmentBase_BodySID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 58 - 0x04, 0x04, 0x04, 0x01, 0x01, 0x00, 0x00, 0x00 }, - {0x3f, 0x08}, false, "IndexTableSegmentBase_SliceCount" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 59 - 0x04, 0x04, 0x04, 0x01, 0x07, 0x00, 0x00, 0x00 }, - {0x3f, 0x0e}, true, "IndexTableSegmentBase_PosTableCount" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 60 - 0x0d, 0x01, 0x02, 0x01, 0x01, 0x10, 0x01, 0x00 }, - {0}, false, "IndexTableSegment" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 61 - 0x04, 0x04, 0x04, 0x01, 0x06, 0x00, 0x00, 0x00 }, - {0x3f, 0x09}, true, "IndexTableSegment_DeltaEntryArray" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 62 - 0x04, 0x04, 0x04, 0x01, 0x04, 0x00, 0x00, 0x00 }, - {0}, false, "DeltaEntryArray_IndexTableSegment_PosTableIndex" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 63 - 0x04, 0x04, 0x04, 0x01, 0x02, 0x00, 0x00, 0x00 }, - {0}, false, "DeltaEntryArray_IndexTableSegment_Slice" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 64 - 0x04, 0x04, 0x04, 0x01, 0x03, 0x00, 0x00, 0x00 }, - {0}, false, "DeltaEntryArray_IndexTableSegment_ElementDelta" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 65 - 0x04, 0x04, 0x04, 0x02, 0x05, 0x00, 0x00, 0x00 }, - {0x3f, 0x0a}, false, "IndexTableSegment_IndexEntryArray" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 66 - 0x04, 0x04, 0x04, 0x02, 0x03, 0x00, 0x00, 0x00 }, - {0}, false, "IndexEntryArray_IndexTableSegment_TemporalOffset" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 67 - 0x04, 0x04, 0x04, 0x02, 0x04, 0x00, 0x00, 0x00 }, - {0}, false, "IndexEntryArray_IndexTableSegment_AnchorOffset" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 68 - 0x04, 0x04, 0x04, 0x02, 0x02, 0x00, 0x00, 0x00 }, - {0}, false, "IndexEntryArray_IndexTableSegment_Flags" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 69 - 0x04, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00 }, - {0}, false, "IndexEntryArray_IndexTableSegment_StreamOffset" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 70 - 0x04, 0x04, 0x04, 0x01, 0x05, 0x00, 0x00, 0x00 }, - {0}, false, "IndexEntryArray_IndexTableSegment_SliceOffsetArray" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 71 - 0x04, 0x04, 0x04, 0x01, 0x08, 0x00, 0x00, 0x00 }, - {0}, false, "IndexEntryArray_IndexTableSegment_PosTableArray" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 72 - 0x0d, 0x01, 0x02, 0x01, 0x01, 0x11, 0x01, 0x00 }, - {0}, false, "RandomIndexMetadata" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 73 - 0x01, 0x03, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "PartitionArray_RandomIndexMetadata_BodySID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 74 - 0x06, 0x09, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00 }, - {0}, false, "PartitionArray_RandomIndexMetadata_ByteOffset" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 75 - 0x04, 0x06, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "RandomIndexMetadata_Length" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 76 - 0x0d, 0x01, 0x02, 0x01, 0x01, 0x11, 0x00, 0x00 }, - {0}, false, "RandomIndexMetadataV10" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 77 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x2f, 0x00 }, - {0}, false, "Preface" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 78 - 0x07, 0x02, 0x01, 0x10, 0x02, 0x04, 0x00, 0x00 }, - {0x3b, 0x02}, false, "Preface_LastModifiedDate" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 79 - 0x03, 0x01, 0x02, 0x01, 0x05, 0x00, 0x00, 0x00 }, - {0x3b, 0x05}, false, "Preface_Version" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 80 - 0x03, 0x01, 0x02, 0x01, 0x04, 0x00, 0x00, 0x00 }, - {0x3b, 0x07}, true, "Preface_ObjectModelVersion" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 81 - 0x06, 0x01, 0x01, 0x04, 0x01, 0x08, 0x00, 0x00 }, - {0x3b, 0x08}, true, "Preface_PrimaryPackage" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 82 - 0x06, 0x01, 0x01, 0x04, 0x06, 0x04, 0x00, 0x00 }, - {0x3b, 0x06}, false, "Preface_Identifications" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 83 - 0x06, 0x01, 0x01, 0x04, 0x02, 0x01, 0x00, 0x00 }, - {0x3b, 0x03}, false, "Preface_ContentStorage" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 84 - 0x01, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00 }, - {0x3b, 0x09}, false, "Preface_OperationalPattern" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 85 - 0x01, 0x02, 0x02, 0x10, 0x02, 0x01, 0x00, 0x00 }, - {0x3b, 0x0a}, false, "Preface_EssenceContainers" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 86 - 0x01, 0x02, 0x02, 0x10, 0x02, 0x02, 0x00, 0x00 }, - {0x3b, 0x0b}, false, "Preface_DMSchemes" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 87 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x30, 0x00 }, - {0}, false, "Identification" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 88 - 0x05, 0x20, 0x07, 0x01, 0x01, 0x00, 0x00, 0x00 }, - {0x3c, 0x09}, false, "Identification_ThisGenerationUID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 89 - 0x05, 0x20, 0x07, 0x01, 0x02, 0x01, 0x00, 0x00 }, - {0x3c, 0x01}, false, "Identification_CompanyName" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 90 - 0x05, 0x20, 0x07, 0x01, 0x03, 0x01, 0x00, 0x00 }, - {0x3c, 0x02}, false, "Identification_ProductName" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 91 - 0x05, 0x20, 0x07, 0x01, 0x04, 0x00, 0x00, 0x00 }, - {0x3c, 0x03}, true, "Identification_ProductVersion" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 92 - 0x05, 0x20, 0x07, 0x01, 0x05, 0x01, 0x00, 0x00 }, - {0x3c, 0x04}, false, "Identification_VersionString" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 93 - 0x05, 0x20, 0x07, 0x01, 0x07, 0x00, 0x00, 0x00 }, - {0x3c, 0x05}, false, "Identification_ProductUID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 94 - 0x07, 0x02, 0x01, 0x10, 0x02, 0x03, 0x00, 0x00 }, - {0x3c, 0x06}, false, "Identification_ModificationDate" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 95 - 0x05, 0x20, 0x07, 0x01, 0x0a, 0x00, 0x00, 0x00 }, - {0x3c, 0x07}, true, "Identification_ToolkitVersion" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 96 - 0x05, 0x20, 0x07, 0x01, 0x06, 0x01, 0x00, 0x00 }, - {0x3c, 0x08}, true, "Identification_Platform" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 97 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18, 0x00 }, - {0}, false, "ContentStorage" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 98 - 0x06, 0x01, 0x01, 0x04, 0x05, 0x01, 0x00, 0x00 }, - {0x19, 0x01}, false, "ContentStorage_Packages" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 99 - 0x06, 0x01, 0x01, 0x04, 0x05, 0x02, 0x00, 0x00 }, - {0x19, 0x02}, true, "ContentStorage_EssenceContainerData" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 100 - 0x06, 0x01, 0x01, 0x04, 0x05, 0x00, 0x00, 0x00 }, - {0x19, 0x01}, false, "ContentStorageKludge_V10Packages" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 101 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x23, 0x00 }, - {0}, false, "EssenceContainerData" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 102 - 0x06, 0x01, 0x01, 0x06, 0x01, 0x00, 0x00, 0x00 }, - {0x27, 0x01}, false, "EssenceContainerData_LinkedPackageUID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 103 - 0x01, 0x03, 0x04, 0x05, 0x00, 0x00, 0x00, 0x00 }, - {0x3f, 0x06}, true, "EssenceContainerData_IndexSID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 104 - 0x01, 0x03, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00 }, - {0x3f, 0x07}, false, "EssenceContainerData_BodySID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 105 - 0x01, 0x01, 0x15, 0x10, 0x00, 0x00, 0x00, 0x00 }, - {0x44, 0x01}, false, "GenericPackage_PackageUID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 106 - 0x01, 0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00 }, - {0x44, 0x02}, true, "GenericPackage_Name" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 107 - 0x07, 0x02, 0x01, 0x10, 0x01, 0x03, 0x00, 0x00 }, - {0x44, 0x05}, false, "GenericPackage_PackageCreationDate" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 108 - 0x07, 0x02, 0x01, 0x10, 0x02, 0x05, 0x00, 0x00 }, - {0x44, 0x04}, false, "GenericPackage_PackageModifiedDate" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 109 - 0x06, 0x01, 0x01, 0x04, 0x06, 0x05, 0x00, 0x00 }, - {0x44, 0x03}, false, "GenericPackage_Tracks" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 110 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x32, 0x00 }, - {0}, false, "NetworkLocator" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 111 - 0x01, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00 }, - {0x40, 0x01}, false, "NetworkLocator_URLString" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 112 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x33, 0x00 }, - {0}, false, "TextLocator" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 113 - 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00 }, - {0x41, 0x01}, false, "TextLocator_LocatorName" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 114 - 0x01, 0x07, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00 }, - {0x48, 0x01}, false, "GenericTrack_TrackID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 115 - 0x01, 0x04, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00 }, - {0x48, 0x04}, false, "GenericTrack_TrackNumber" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 116 - 0x01, 0x07, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00 }, - {0x48, 0x02}, true, "GenericTrack_TrackName" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 117 - 0x06, 0x01, 0x01, 0x04, 0x02, 0x04, 0x00, 0x00 }, - {0x48, 0x03}, false, "GenericTrack_Sequence" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 118 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x3a, 0x00 }, - {0}, false, "StaticTrack" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 119 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x3b, 0x00 }, - {0}, false, "Track" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 120 - 0x05, 0x30, 0x04, 0x05, 0x00, 0x00, 0x00, 0x00 }, - {0x4b, 0x01}, false, "Track_EditRate" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 121 - 0x07, 0x02, 0x01, 0x03, 0x01, 0x03, 0x00, 0x00 }, - {0x4b, 0x02}, false, "Track_Origin" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 122 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x39, 0x00 }, - {0}, false, "EventTrack" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 123 - 0x05, 0x30, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00 }, - {0x49, 0x01}, false, "EventTrack_EventEditRate" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 124 - 0x07, 0x02, 0x01, 0x03, 0x01, 0x0b, 0x00, 0x00 }, - {0x49, 0x02}, true, "EventTrack_EventOrigin" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 125 - 0x04, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 }, - {0x02, 0x01}, false, "StructuralComponent_DataDefinition" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 126 - 0x07, 0x02, 0x02, 0x01, 0x01, 0x03, 0x00, 0x00 }, - {0x02, 0x02}, false, "StructuralComponent_Duration" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 127 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x0f, 0x00 }, - {0}, false, "Sequence" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 128 - 0x06, 0x01, 0x01, 0x04, 0x06, 0x09, 0x00, 0x00 }, - {0x10, 0x01}, false, "Sequence_StructuralComponents" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 129 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x14, 0x00 }, - {0}, false, "TimecodeComponent" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 130 - 0x04, 0x04, 0x01, 0x01, 0x02, 0x06, 0x00, 0x00 }, - {0x15, 0x02}, false, "TimecodeComponent_RoundedTimecodeBase" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 131 - 0x07, 0x02, 0x01, 0x03, 0x01, 0x05, 0x00, 0x00 }, - {0x15, 0x01}, false, "TimecodeComponent_StartTimecode" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 132 - 0x04, 0x04, 0x01, 0x01, 0x05, 0x00, 0x00, 0x00 }, - {0x15, 0x03}, false, "TimecodeComponent_DropFrame" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 133 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x11, 0x00 }, - {0}, false, "SourceClip" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 134 - 0x07, 0x02, 0x01, 0x03, 0x01, 0x04, 0x00, 0x00 }, - {0x12, 0x01}, false, "SourceClip_StartPosition" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 135 - 0x06, 0x01, 0x01, 0x03, 0x01, 0x00, 0x00, 0x00 }, - {0x11, 0x01}, false, "SourceClip_SourcePackageID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 136 - 0x06, 0x01, 0x01, 0x03, 0x02, 0x00, 0x00, 0x00 }, - {0x11, 0x02}, false, "SourceClip_SourceTrackID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 137 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x41, 0x00 }, - {0}, false, "DMSegment" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 138 - 0x07, 0x02, 0x01, 0x03, 0x03, 0x03, 0x00, 0x00 }, - {0x06, 0x01}, false, "DMSegment_EventStartPosition" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 139 - 0x05, 0x30, 0x04, 0x04, 0x01, 0x00, 0x00, 0x00 }, - {0x06, 0x02}, true, "DMSegment_EventComment" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 140 - 0x01, 0x07, 0x01, 0x05, 0x00, 0x00, 0x00, 0x00 }, - {0x61, 0x02}, false, "DMSegment_TrackIDs" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 141 - 0x06, 0x01, 0x01, 0x04, 0x02, 0x0c, 0x00, 0x00 }, - {0x61, 0x01}, false, "DMSegment_DMFramework" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 142 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x45, 0x00 }, - {0}, false, "DMSourceClip" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 143 - 0x01, 0x07, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00 }, - {0x61, 0x03}, true, "DMSourceClip_DMSourceClipTrackIDs" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 144 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x36, 0x00 }, - {0}, false, "MaterialPackage" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 145 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x37, 0x00 }, - {0}, false, "SourcePackage" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 146 - 0x06, 0x01, 0x01, 0x04, 0x02, 0x03, 0x00, 0x00 }, - {0x47, 0x01}, false, "SourcePackage_Descriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 147 - 0x06, 0x01, 0x01, 0x04, 0x06, 0x03, 0x00, 0x00 }, - {0x2f, 0x01}, true, "GenericDescriptor_Locators" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x09, // 148 - 0x06, 0x01, 0x01, 0x04, 0x06, 0x10, 0x00, 0x00 }, - {0}, true, "GenericDescriptor_SubDescriptors" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 149 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x25, 0x00 }, - {0}, false, "FileDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 150 - 0x06, 0x01, 0x01, 0x03, 0x05, 0x00, 0x00, 0x00 }, - {0x30, 0x06}, true, "FileDescriptor_LinkedTrackID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 151 - 0x04, 0x06, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00 }, - {0x30, 0x01}, false, "FileDescriptor_SampleRate" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 152 - 0x04, 0x06, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00 }, - {0x30, 0x02}, true, "FileDescriptor_ContainerDuration" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 153 - 0x06, 0x01, 0x01, 0x04, 0x01, 0x02, 0x00, 0x00 }, - {0x30, 0x04}, false, "FileDescriptor_EssenceContainer" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 154 - 0x06, 0x01, 0x01, 0x04, 0x01, 0x03, 0x00, 0x00 }, - {0x30, 0x05}, true, "FileDescriptor_Codec" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 155 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x27, 0x00 }, - {0}, false, "GenericPictureEssenceDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 156 - 0x04, 0x05, 0x01, 0x13, 0x00, 0x00, 0x00, 0x00 }, - {0x32, 0x15}, true, "GenericPictureEssenceDescriptor_SignalStandard" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 157 - 0x04, 0x01, 0x03, 0x01, 0x04, 0x00, 0x00, 0x00 }, - {0x32, 0x0c}, false, "GenericPictureEssenceDescriptor_FrameLayout" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 158 - 0x04, 0x01, 0x05, 0x02, 0x02, 0x00, 0x00, 0x00 }, - {0x32, 0x03}, false, "GenericPictureEssenceDescriptor_StoredWidth" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 159 - 0x04, 0x01, 0x05, 0x02, 0x01, 0x00, 0x00, 0x00 }, - {0x32, 0x02}, false, "GenericPictureEssenceDescriptor_StoredHeight" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 160 - 0x04, 0x01, 0x03, 0x02, 0x08, 0x00, 0x00, 0x00 }, - {0x32, 0x16}, true, "GenericPictureEssenceDescriptor_StoredF2Offset" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 161 - 0x04, 0x01, 0x05, 0x01, 0x08, 0x00, 0x00, 0x00 }, - {0x32, 0x05}, true, "GenericPictureEssenceDescriptor_SampledWidth" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 162 - 0x04, 0x01, 0x05, 0x01, 0x07, 0x00, 0x00, 0x00 }, - {0x32, 0x04}, true, "GenericPictureEssenceDescriptor_SampledHeight" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 163 - 0x04, 0x01, 0x05, 0x01, 0x09, 0x00, 0x00, 0x00 }, - {0x32, 0x06}, true, "GenericPictureEssenceDescriptor_SampledXOffset" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 164 - 0x04, 0x01, 0x05, 0x01, 0x0a, 0x00, 0x00, 0x00 }, - {0x32, 0x07}, true, "GenericPictureEssenceDescriptor_SampledYOffset" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 165 - 0x04, 0x01, 0x05, 0x01, 0x0b, 0x00, 0x00, 0x00 }, - {0x32, 0x08}, true, "GenericPictureEssenceDescriptor_DisplayHeight" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 166 - 0x04, 0x01, 0x05, 0x01, 0x0c, 0x00, 0x00, 0x00 }, - {0x32, 0x09}, true, "GenericPictureEssenceDescriptor_DisplayWidth" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 167 - 0x04, 0x01, 0x05, 0x01, 0x0d, 0x00, 0x00, 0x00 }, - {0x32, 0x0a}, true, "GenericPictureEssenceDescriptor_DisplayXOffset" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 168 - 0x04, 0x01, 0x05, 0x01, 0x0e, 0x00, 0x00, 0x00 }, - {0x32, 0x0b}, true, "GenericPictureEssenceDescriptor_DisplayYOffset" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 169 - 0x04, 0x01, 0x03, 0x02, 0x07, 0x00, 0x00, 0x00 }, - {0x32, 0x17}, true, "GenericPictureEssenceDescriptor_DisplayF2Offset" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 170 - 0x04, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00 }, - {0x32, 0x0e}, false, "GenericPictureEssenceDescriptor_AspectRatio" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 171 - 0x04, 0x01, 0x03, 0x02, 0x09, 0x00, 0x00, 0x00 }, - {0x32, 0x18}, true, "GenericPictureEssenceDescriptor_ActiveFormatDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 172 - 0x04, 0x01, 0x03, 0x02, 0x05, 0x00, 0x00, 0x00 }, - {0x32, 0x0d}, false, "GenericPictureEssenceDescriptor_VideoLineMap" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 173 - 0x05, 0x20, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00 }, - {0x32, 0x0f}, true, "GenericPictureEssenceDescriptor_AlphaTransparency" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 174 - 0x04, 0x01, 0x02, 0x01, 0x01, 0x01, 0x02, 0x00 }, - {0x32, 0x10}, true, "GenericPictureEssenceDescriptor_TransferCharacteristic" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 175 - 0x04, 0x18, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00 }, - {0x32, 0x11}, true, "GenericPictureEssenceDescriptor_ImageAlignmentOffset" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 176 - 0x04, 0x18, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00 }, - {0x32, 0x13}, true, "GenericPictureEssenceDescriptor_ImageStartOffset" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 177 - 0x04, 0x18, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00 }, - {0x32, 0x14}, true, "GenericPictureEssenceDescriptor_ImageEndOffset" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 178 - 0x04, 0x01, 0x03, 0x01, 0x06, 0x00, 0x00, 0x00 }, - {0x32, 0x12}, true, "GenericPictureEssenceDescriptor_FieldDominance" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 179 - 0x04, 0x01, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00 }, - {0x32, 0x01}, false, "GenericPictureEssenceDescriptor_PictureEssenceCoding" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 180 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x28, 0x00 }, - {0}, false, "CDCIEssenceDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 181 - 0x04, 0x01, 0x05, 0x03, 0x0a, 0x00, 0x00, 0x00 }, - {0x33, 0x01}, false, "CDCIEssenceDescriptor_ComponentDepth" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 182 - 0x04, 0x01, 0x05, 0x01, 0x05, 0x00, 0x00, 0x00 }, - {0x33, 0x02}, false, "CDCIEssenceDescriptor_HorizontalSubsampling" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 183 - 0x04, 0x01, 0x05, 0x01, 0x10, 0x00, 0x00, 0x00 }, - {0x33, 0x08}, true, "CDCIEssenceDescriptor_VerticalSubsampling" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 184 - 0x04, 0x01, 0x05, 0x01, 0x06, 0x00, 0x00, 0x00 }, - {0x33, 0x03}, true, "CDCIEssenceDescriptor_ColorSiting" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 185 - 0x03, 0x01, 0x02, 0x01, 0x0a, 0x00, 0x00, 0x00 }, - {0x33, 0x0b}, true, "CDCIEssenceDescriptor_ReversedByteOrder" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 186 - 0x04, 0x18, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00 }, - {0x33, 0x07}, true, "CDCIEssenceDescriptor_PaddingBits" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 187 - 0x04, 0x01, 0x05, 0x03, 0x07, 0x00, 0x00, 0x00 }, - {0x33, 0x09}, true, "CDCIEssenceDescriptor_AlphaSampleDepth" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 188 - 0x04, 0x01, 0x05, 0x03, 0x03, 0x00, 0x00, 0x00 }, - {0x33, 0x04}, true, "CDCIEssenceDescriptor_BlackRefLevel" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 189 - 0x04, 0x01, 0x05, 0x03, 0x04, 0x00, 0x00, 0x00 }, - {0x33, 0x05}, true, "CDCIEssenceDescriptor_WhiteReflevel" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 190 - 0x04, 0x01, 0x05, 0x03, 0x05, 0x00, 0x00, 0x00 }, - {0x33, 0x06}, true, "CDCIEssenceDescriptor_ColorRange" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 191 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x29, 0x00 }, - {0}, false, "RGBAEssenceDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 192 - 0x04, 0x01, 0x05, 0x03, 0x0b, 0x00, 0x00, 0x00 }, - {0x34, 0x06}, true, "RGBAEssenceDescriptor_ComponentMaxRef" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 193 - 0x04, 0x01, 0x05, 0x03, 0x0c, 0x00, 0x00, 0x00 }, - {0x34, 0x07}, true, "RGBAEssenceDescriptor_ComponentMinRef" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 194 - 0x04, 0x01, 0x05, 0x03, 0x0d, 0x00, 0x00, 0x00 }, - {0x34, 0x08}, true, "RGBAEssenceDescriptor_AlphaMaxRef" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 195 - 0x04, 0x01, 0x05, 0x03, 0x0e, 0x00, 0x00, 0x00 }, - {0x34, 0x09}, true, "RGBAEssenceDescriptor_AlphaMinRef" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 196 - 0x04, 0x01, 0x04, 0x04, 0x01, 0x00, 0x00, 0x00 }, - {0x34, 0x05}, true, "RGBAEssenceDescriptor_ScanningDirection" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 197 - 0x04, 0x01, 0x05, 0x03, 0x06, 0x00, 0x00, 0x00 }, - {0x34, 0x01}, false, "RGBAEssenceDescriptor_PixelLayout" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 198 - 0x04, 0x01, 0x05, 0x03, 0x08, 0x00, 0x00, 0x00 }, - {0x34, 0x03}, true, "RGBAEssenceDescriptor_Palette" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 199 - 0x04, 0x01, 0x05, 0x03, 0x09, 0x00, 0x00, 0x00 }, - {0x34, 0x04}, true, "RGBAEssenceDescriptor_PaletteLayout" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 200 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x42, 0x00 }, - {0}, false, "GenericSoundEssenceDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 201 - 0x04, 0x02, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00 }, - {0x3d, 0x03}, false, "GenericSoundEssenceDescriptor_AudioSamplingRate" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 202 - 0x04, 0x02, 0x03, 0x01, 0x04, 0x00, 0x00, 0x00 }, - {0x3d, 0x02}, false, "GenericSoundEssenceDescriptor_Locked" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 203 - 0x04, 0x02, 0x01, 0x01, 0x03, 0x00, 0x00, 0x00 }, - {0x3d, 0x04}, true, "GenericSoundEssenceDescriptor_AudioRefLevel" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 204 - 0x04, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00 }, - {0x3d, 0x05}, true, "GenericSoundEssenceDescriptor_ElectroSpatialFormulation" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 205 - 0x04, 0x02, 0x01, 0x01, 0x04, 0x00, 0x00, 0x00 }, - {0x3d, 0x07}, false, "GenericSoundEssenceDescriptor_ChannelCount" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 206 - 0x04, 0x02, 0x03, 0x03, 0x04, 0x00, 0x00, 0x00 }, - {0x3d, 0x01}, false, "GenericSoundEssenceDescriptor_QuantizationBits" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 207 - 0x04, 0x02, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00 }, - {0x3d, 0x0c}, true, "GenericSoundEssenceDescriptor_DialNorm" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 208 - 0x04, 0x02, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00 }, - {0x3d, 0x06}, false, "GenericSoundEssenceDescriptor_SoundEssenceCoding" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 209 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x43, 0x00 }, - {0}, false, "GenericDataEssenceDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x03, // 210 - 0x04, 0x03, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00 }, - {0x3e, 0x01}, false, "GenericDataEssenceDescriptor_DataEssenceCoding" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 211 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x44, 0x00 }, - {0}, false, "MultipleDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 212 - 0x06, 0x01, 0x01, 0x04, 0x06, 0x0b, 0x00, 0x00 }, - {0x3f, 0x01}, false, "MultipleDescriptor_SubDescriptorUIDs" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 213 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x51, 0x00 }, - {0}, false, "MPEG2VideoDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 214 - 0x04, 0x01, 0x06, 0x02, 0x01, 0x02, 0x00, 0x00 }, - {0}, true, "MPEG2VideoDescriptor_SingleSequence" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 215 - 0x04, 0x01, 0x06, 0x02, 0x01, 0x03, 0x00, 0x00 }, - {0}, true, "MPEG2VideoDescriptor_ConstantBFrames" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 216 - 0x04, 0x01, 0x06, 0x02, 0x01, 0x04, 0x00, 0x00 }, - {0}, true, "MPEG2VideoDescriptor_CodedContentType" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 217 - 0x04, 0x01, 0x06, 0x02, 0x01, 0x05, 0x00, 0x00 }, - {0}, true, "MPEG2VideoDescriptor_LowDelay" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 218 - 0x04, 0x01, 0x06, 0x02, 0x01, 0x06, 0x00, 0x00 }, - {0}, true, "MPEG2VideoDescriptor_ClosedGOP" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 219 - 0x04, 0x01, 0x06, 0x02, 0x01, 0x07, 0x00, 0x00 }, - {0}, true, "MPEG2VideoDescriptor_IdenticalGOP" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 220 - 0x04, 0x01, 0x06, 0x02, 0x01, 0x08, 0x00, 0x00 }, - {0}, true, "MPEG2VideoDescriptor_MaxGOP" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 221 - 0x04, 0x01, 0x06, 0x02, 0x01, 0x09, 0x00, 0x00 }, - {0}, true, "MPEG2VideoDescriptor_BPictureCount" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 222 - 0x04, 0x01, 0x06, 0x02, 0x01, 0x0b, 0x00, 0x00 }, - {0}, true, "MPEG2VideoDescriptor_BitRate" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 223 - 0x04, 0x01, 0x06, 0x02, 0x01, 0x0a, 0x00, 0x00 }, - {0}, true, "MPEG2VideoDescriptor_ProfileAndLevel" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 224 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x48, 0x00 }, - {0}, false, "WaveAudioDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 225 - 0x04, 0x02, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00 }, - {0x3d, 0x0a}, false, "WaveAudioDescriptor_BlockAlign" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 226 - 0x04, 0x02, 0x03, 0x02, 0x02, 0x00, 0x00, 0x00 }, - {0x3d, 0x0b}, true, "WaveAudioDescriptor_SequenceOffset" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 227 - 0x04, 0x02, 0x03, 0x03, 0x05, 0x00, 0x00, 0x00 }, - {0x3d, 0x09}, false, "WaveAudioDescriptor_AvgBps" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 228 - 0x04, 0x02, 0x03, 0x01, 0x0e, 0x00, 0x00, 0x00 }, - {0x3d, 0x0e}, true, "WaveAudioDescriptor_PeakEnvelope" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 229 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x5a, 0x00 }, - {0}, false, "JPEG2000PictureSubDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 230 - 0x04, 0x01, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00 }, - {0}, false, "JPEG2000PictureSubDescriptor_Rsize" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 231 - 0x04, 0x01, 0x06, 0x03, 0x02, 0x00, 0x00, 0x00 }, - {0}, false, "JPEG2000PictureSubDescriptor_Xsize" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 232 - 0x04, 0x01, 0x06, 0x03, 0x03, 0x00, 0x00, 0x00 }, - {0}, false, "JPEG2000PictureSubDescriptor_Ysize" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 233 - 0x04, 0x01, 0x06, 0x03, 0x04, 0x00, 0x00, 0x00 }, - {0}, false, "JPEG2000PictureSubDescriptor_XOsize" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 234 - 0x04, 0x01, 0x06, 0x03, 0x05, 0x00, 0x00, 0x00 }, - {0}, false, "JPEG2000PictureSubDescriptor_YOsize" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 235 - 0x04, 0x01, 0x06, 0x03, 0x06, 0x00, 0x00, 0x00 }, - {0}, false, "JPEG2000PictureSubDescriptor_XTsize" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 236 - 0x04, 0x01, 0x06, 0x03, 0x07, 0x00, 0x00, 0x00 }, - {0}, false, "JPEG2000PictureSubDescriptor_YTsize" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 237 - 0x04, 0x01, 0x06, 0x03, 0x08, 0x00, 0x00, 0x00 }, - {0}, false, "JPEG2000PictureSubDescriptor_XTOsize" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 238 - 0x04, 0x01, 0x06, 0x03, 0x09, 0x00, 0x00, 0x00 }, - {0}, false, "JPEG2000PictureSubDescriptor_YTOsize" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 239 - 0x04, 0x01, 0x06, 0x03, 0x0a, 0x00, 0x00, 0x00 }, - {0}, false, "JPEG2000PictureSubDescriptor_Csize" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 240 - 0x04, 0x01, 0x06, 0x03, 0x0b, 0x00, 0x00, 0x00 }, - {0}, false, "JPEG2000PictureSubDescriptor_PictureComponentSizing" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 241 - 0x04, 0x01, 0x06, 0x03, 0x0c, 0x00, 0x00, 0x00 }, - {0}, true, "JPEG2000PictureSubDescriptor_CodingStyleDefault" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 242 - 0x04, 0x01, 0x06, 0x03, 0x0d, 0x00, 0x00, 0x00 }, - {0}, true, "JPEG2000PictureSubDescriptor_QuantizationDefault" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 243 - 0x0d, 0x01, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "DM_Framework" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 244 - 0x0d, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "DM_Set" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x07, // 245 - 0x0d, 0x01, 0x03, 0x01, 0x02, 0x0b, 0x01, 0x00 }, - {0}, false, "EncryptedContainerLabel" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x07, // 246 - 0x0d, 0x01, 0x04, 0x01, 0x02, 0x01, 0x01, 0x00 }, - {0}, false, "CryptographicFrameworkLabel" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 247 - 0x0d, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x00 }, - {0}, false, "CryptographicFramework" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x09, // 248 - 0x06, 0x01, 0x01, 0x04, 0x02, 0x0d, 0x00, 0x00 }, - {0}, false, "CryptographicFramework_ContextSR" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 249 - 0x0d, 0x01, 0x04, 0x01, 0x02, 0x02, 0x00, 0x00 }, - {0}, false, "CryptographicContext" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x09, // 250 - 0x01, 0x01, 0x15, 0x11, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "CryptographicContext_ContextID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x09, // 251 - 0x06, 0x01, 0x01, 0x02, 0x02, 0x00, 0x00, 0x00 }, - {0}, false, "CryptographicContext_SourceEssenceContainer" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x09, // 252 - 0x02, 0x09, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00 }, - {0}, false, "CryptographicContext_CipherAlgorithm" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x09, // 253 - 0x02, 0x09, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00 }, - {0}, false, "CryptographicContext_MICAlgorithm" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x09, // 254 - 0x02, 0x09, 0x03, 0x01, 0x02, 0x00, 0x00, 0x00 }, - {0}, false, "CryptographicContext_CryptographicKeyID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0a, // 255 - 0x0d, 0x01, 0x03, 0x01, 0x02, 0x13, 0x01, 0x01 }, - {0}, false, "TimedTextWrappingClip" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x02, 0x01, 0x01, // 256 - 0x0d, 0x01, 0x03, 0x01, 0x17, 0x01, 0x0b, 0x01 }, - {0}, false, "TimedTextEssence" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 257 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x64, 0x00 }, - {0}, false, "TimedTextDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0c, // 258 - 0x01, 0x01, 0x15, 0x12, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "TimedTextDescriptor_ResourceID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0c, // 259 - 0x04, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "TimedTextDescriptor_UCSEncoding" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x08, // 260 - 0x01, 0x02, 0x01, 0x05, 0x01, 0x00, 0x00, 0x00 }, - {0}, false, "TimedTextDescriptor_NamespaceURI" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 261 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x65, 0x00 }, - {0}, false, "TimedTextResourceSubDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0c, // 262 - 0x01, 0x01, 0x15, 0x13, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "TimedTextResourceSubDescriptor_AncillaryResourceID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x07, // 263 - 0x04, 0x09, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "TimedTextResourceSubDescriptor_MIMEMediaType" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 264 - 0x01, 0x03, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "TimedTextResourceSubDescriptor_EssenceStreamID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 265 - 0x0d, 0x01, 0x02, 0x01, 0x01, 0x03, 0x11, 0x00 }, - {0}, false, "GenericStreamPartition" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 266 - 0x04, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 }, - {0x02, 0x01}, false, "DMSegment_DataDefinition" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 267 - 0x07, 0x02, 0x02, 0x01, 0x01, 0x03, 0x00, 0x00 }, - {0x02, 0x02}, true, "DMSegment_Duration" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 268 - 0x01, 0x07, 0x01, 0x05, 0x00, 0x00, 0x00, 0x00 }, - {0x61, 0x02}, false, "DMSegment_TrackIDList" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 269 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x63, 0x00 }, - {0}, false, "StereoscopicPictureSubDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x07, // 270 - 0x04, 0x02, 0x01, 0x01, 0x05, 0x00, 0x00, 0x00 }, - {0x3d, 0x32}, true, "WaveAudioDescriptor_ChannelAssignment" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0c, // 271 - 0x0d, 0x01, 0x05, 0x09, 0x01, 0x00, 0x00, 0x00 }, - {0x00, 0x00}, false, "GenericStream_DataElement" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 272 - 0x06, 0x01, 0x01, 0x04, 0x06, 0x10, 0x00, 0x00 }, - {0}, true, "MXFInterop_GenericDescriptor_SubDescriptors" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 273 - 0x01, 0x03, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00 }, - {0x3f, 0x07}, false, "BodySID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 274 - 0x01, 0x03, 0x04, 0x05, 0x00, 0x00, 0x00, 0x00 }, - {0x3f, 0x06}, false, "IndexSID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 275 - 0x01, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00 }, - {0x3b, 0x09}, false, "OperationalPattern" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 276 - 0x01, 0x02, 0x02, 0x10, 0x02, 0x01, 0x00, 0x00 }, - {0x3b, 0x0a}, false, "EssenceContainers" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0b, // 277 - 0x04, 0x02, 0x02, 0x10, 0x03, 0x01, 0x01, 0x00 }, - {0}, false, "DCAudioChannelCfg_1_5p1" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0b, // 278 - 0x04, 0x02, 0x02, 0x10, 0x03, 0x01, 0x02, 0x00 }, - {0}, false, "DCAudioChannelCfg_2_6p1" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0b, // 279 - 0x04, 0x02, 0x02, 0x10, 0x03, 0x01, 0x03, 0x00 }, - {0}, false, "DCAudioChannelCfg_3_7p1" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0b, // 280 - 0x04, 0x02, 0x02, 0x10, 0x03, 0x01, 0x04, 0x00 }, - {0}, false, "DCAudioChannelCfg_4_WTF" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0b, // 281 - 0x04, 0x02, 0x02, 0x10, 0x03, 0x01, 0x05, 0x00 }, - {0}, false, "DCAudioChannelCfg_5_7p1_DS" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 282 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x6a, 0x00 }, - {0}, false, "MCALabelSubDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 283 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x6b, 0x00 }, - {0}, false, "AudioChannelLabelSubDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 284 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x6c, 0x00 }, - {0}, false, "SoundfieldGroupLabelSubDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 285 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x6d, 0x00 }, - {0}, false, "GroupOfSoundfieldGroupsLabelSubDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 286 - 0x01, 0x03, 0x07, 0x01, 0x01, 0x00, 0x00, 0x00 }, - {0}, false, "MCALabelSubDescriptor_MCALabelDictionaryID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 287 - 0x01, 0x03, 0x07, 0x01, 0x05, 0x00, 0x00, 0x00 }, - {0}, false, "MCALabelSubDescriptor_MCALinkID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 288 - 0x01, 0x03, 0x07, 0x01, 0x02, 0x00, 0x00, 0x00 }, - {0}, false, "MCALabelSubDescriptor_MCATagSymbol" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 289 - 0x01, 0x03, 0x07, 0x01, 0x03, 0x00, 0x00, 0x00 }, - {0}, false, "MCALabelSubDescriptor_MCATagName" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 290 - 0x01, 0x03, 0x04, 0x0a, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "MCALabelSubDescriptor_MCAChannelID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0d, // 291 - 0x03, 0x01, 0x01, 0x02, 0x03, 0x15, 0x00, 0x00 }, - {0}, false, "MCALabelSubDescriptor_RFC5646SpokenLanguage" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 292 - 0x01, 0x03, 0x07, 0x01, 0x06, 0x00, 0x00, 0x00 }, - {0}, false, "AudioChannelLabelSubDescriptor_SoundfieldGroupLinkID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 293 - 0x01, 0x03, 0x07, 0x01, 0x04, 0x00, 0x00, 0x00 }, - {0}, false, "SoundfieldGroupLabelSubDescriptor_GroupOfSoundfieldGroupsLinkID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 294 - 0x0d, 0x01, 0x03, 0x01, 0x02, 0x13, 0x02, 0x01 }, - {0}, false, "DCDataWrappingFrame" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x02, 0x01, 0x0d, // 295 - 0x0d, 0x01, 0x03, 0x01, 0x17, 0x01, 0x0d, 0x00 }, - {0}, false, "DCDataEssence" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x7f, 0x01, 0x01, // 296 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x73, 0x00 }, - {0}, false, "DCDataDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x05, // 297 - 0x0e, 0x09, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "DolbyAtmosSubDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 298 - 0x0e, 0x09, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00 }, - {0}, true, "DolbyAtmosSubDescriptor_AtmosVersion" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 299 - 0x0e, 0x09, 0x05, 0x07, 0x00, 0x00, 0x00, 0x00 }, - {0}, true, "DolbyAtmosSubDescriptor_MaxChannelCount" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 300 - 0x0e, 0x09, 0x05, 0x08, 0x00, 0x00, 0x00, 0x00 }, - {0}, true, "DolbyAtmosSubDescriptor_MaxObjectCount" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 301 - 0x0e, 0x09, 0x05, 0x09, 0x00, 0x00, 0x00, 0x00 }, - {0}, true, "DolbyAtmosSubDescriptor_AtmosID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 302 - 0x0e, 0x09, 0x05, 0x0A, 0x00, 0x00, 0x00, 0x00 }, - {0}, true, "DolbyAtmosSubDescriptor_FirstFrame" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, // 303 - 0x01, 0x03, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00 }, - {0}, false, "DataDataDef" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 304 - 0x04, 0x02, 0x02, 0x10, 0x03, 0x02, 0x00, 0x00 }, - {0}, false, "DCAudioChannelCfg_MCA" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 305 - 0x03, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "DCAudioChannel_L" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 306 - 0x03, 0x02, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "DCAudioChannel_R" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 307 - 0x03, 0x02, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "DCAudioChannel_C" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 308 - 0x03, 0x02, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "DCAudioChannel_LFE" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 309 - 0x03, 0x02, 0x01, 0x05, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "DCAudioChannel_Ls" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 310 - 0x03, 0x02, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "DCAudioChannel_Rs" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 311 - 0x03, 0x02, 0x01, 0x07, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "DCAudioChannel_Lss" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 312 - 0x03, 0x02, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "DCAudioChannel_Rss" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 313 - 0x03, 0x02, 0x01, 0x09, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "DCAudioChannel_Lrs" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 314 - 0x03, 0x02, 0x01, 0x0a, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "DCAudioChannel_Rrs" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 315 - 0x03, 0x02, 0x01, 0x0b, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "DCAudioChannel_Lc" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 316 - 0x03, 0x02, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "DCAudioChannel_Rc" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 317 - 0x03, 0x02, 0x01, 0x0d, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "DCAudioChannel_Cs" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 318 - 0x03, 0x02, 0x01, 0x0e, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "DCAudioChannel_HI" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 319 - 0x03, 0x02, 0x01, 0x0f, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "DCAudioChannel_VIN" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 320 - 0x03, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "DCAudioSoundfield_51" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 321 - 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "DCAudioSoundfield_71" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 322 - 0x03, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "DCAudioSoundfield_SDS" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 323 - 0x03, 0x02, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "DCAudioSoundfield_61" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 324 - 0x03, 0x02, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "DCAudioSoundfield_M" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x02, 0x01, 0x01, // 325 - 0x0d, 0x01, 0x03, 0x01, 0x16, 0x01, 0x02, 0x00 }, - {0}, false, "WAVEssenceClip" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 326 - 0x04, 0x02, 0x02, 0x10, 0x04, 0x01, 0x00, 0x00 }, - {0}, false, "IMFAudioChannelCfg_MCA" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 327 - 0x03, 0x02, 0x01, 0x20, 0x01, 0x00, 0x00, 0x00 }, - {0}, false, "IMFAudioChannel_M1" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 328 - 0x03, 0x02, 0x01, 0x20, 0x02, 0x00, 0x00, 0x00 }, - {0}, false, "IMFAudioChannel_M2" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 329 - 0x03, 0x02, 0x01, 0x20, 0x03, 0x00, 0x00, 0x00 }, - {0}, false, "IMFAudioChannel_Lt" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 330 - 0x03, 0x02, 0x01, 0x20, 0x04, 0x00, 0x00, 0x00 }, - {0}, false, "IMFAudioChannel_Rt" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 331 - 0x03, 0x02, 0x01, 0x20, 0x05, 0x00, 0x00, 0x00 }, - {0}, false, "IMFAudioChannel_Lst" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 332 - 0x03, 0x02, 0x01, 0x20, 0x06, 0x00, 0x00, 0x00 }, - {0}, false, "IMFAudioChannel_Rst" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 333 - 0x03, 0x02, 0x01, 0x20, 0x07, 0x00, 0x00, 0x00 }, - {0}, false, "IMFAudioChannel_S" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 334 - 0x03, 0x02, 0x01, 0x20, 0x08, 0x00, 0x00, 0x00 }, - {0}, false, "IMFNumberedSourceChannel" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 335 - 0x03, 0x02, 0x02, 0x20, 0x01, 0x00, 0x00, 0x00 }, - {0}, false, "IMFAudioSoundfield_ST" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 336 - 0x03, 0x02, 0x02, 0x20, 0x02, 0x00, 0x00, 0x00 }, - {0}, false, "IMFAudioSoundfield_DM" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 337 - 0x03, 0x02, 0x02, 0x20, 0x03, 0x00, 0x00, 0x00 }, - {0}, false, "IMFAudioSoundfield_DNS" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 338 - 0x03, 0x02, 0x02, 0x20, 0x04, 0x00, 0x00, 0x00 }, - {0}, false, "IMFAudioSoundfield_30" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 339 - 0x03, 0x02, 0x02, 0x20, 0x05, 0x00, 0x00, 0x00 }, - {0}, false, "IMFAudioSoundfield_40" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 340 - 0x03, 0x02, 0x02, 0x20, 0x06, 0x00, 0x00, 0x00 }, - {0}, false, "IMFAudioSoundfield_50" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 341 - 0x03, 0x02, 0x02, 0x20, 0x07, 0x00, 0x00, 0x00 }, - {0}, false, "IMFAudioSoundfield_60" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 342 - 0x03, 0x02, 0x02, 0x20, 0x08, 0x00, 0x00, 0x00 }, - {0}, false, "IMFAudioSoundfield_70" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 343 - 0x03, 0x02, 0x02, 0x20, 0x09, 0x00, 0x00, 0x00 }, - {0}, false, "IMFAudioSoundfield_LtRt" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 344 - 0x03, 0x02, 0x02, 0x20, 0x0a, 0x00, 0x00, 0x00 }, - {0}, false, "IMFAudioSoundfield_51Ex" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 345 - 0x03, 0x02, 0x02, 0x20, 0x0b, 0x00, 0x00, 0x00 }, - {0}, false, "IMFAudioSoundfield_HI" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 346 - 0x03, 0x02, 0x02, 0x20, 0x0c, 0x00, 0x00, 0x00 }, - {0}, false, "IMFAudioSoundfield_VIN" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 347 - 0x03, 0x02, 0x03, 0x20, 0x01, 0x00, 0x00, 0x00 }, - {0}, false, "IMFAudioGroup_MPg" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 348 - 0x03, 0x02, 0x03, 0x20, 0x02, 0x00, 0x00, 0x00 }, - {0}, false, "IMFAudioGroup_DVS" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 349 - 0x03, 0x02, 0x03, 0x20, 0x03, 0x00, 0x00, 0x00 }, - {0}, false, "IMFAudioGroup_Dcm" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0c, // 350 - 0x06, 0x01, 0x01, 0x04, 0x02, 0x0f, 0x00, 0x00 }, - {0}, false, "MaterialPackage_PackageMarker" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 351 - 0x04, 0x01, 0x02, 0x01, 0x01, 0x03, 0x01, 0x00 }, - {0x32, 0x1a}, false, "GenericPictureEssenceDescriptor_CodingEquations" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x09, // 352 - 0x04, 0x01, 0x02, 0x01, 0x01, 0x06, 0x01, 0x00 }, - {0x32, 0x19}, false, "GenericPictureEssenceDescriptor_ColorPrimaries" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 353 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x01, 0x11 }, - {0}, false, "JP2KEssenceCompression_BroadcastProfile_1" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 354 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x01, 0x12 }, - {0}, false, "JP2KEssenceCompression_BroadcastProfile_2" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 355 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x01, 0x13 }, - {0}, false, "JP2KEssenceCompression_BroadcastProfile_3" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 356 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x01, 0x14 }, - {0}, false, "JP2KEssenceCompression_BroadcastProfile_4" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 357 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x01, 0x15 }, - {0}, false, "JP2KEssenceCompression_BroadcastProfile_5" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 358 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x01, 0x16 }, - {0}, false, "JP2KEssenceCompression_BroadcastProfile_6" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 359 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x01, 0x17 }, - {0}, false, "JP2KEssenceCompression_BroadcastProfile_7" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 360 - 0x04, 0x02, 0x01, 0x01, 0x06, 0x00, 0x00, 0x00 }, - {0}, false, "WaveAudioDescriptor_ReferenceImageEditRate" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 361 - 0x04, 0x02, 0x01, 0x01, 0x07, 0x00, 0x00, 0x00 }, - {0}, false, "WaveAudioDescriptor_ReferenceAudioAlignmentLevel" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 362 - 0x04, 0x01, 0x03, 0x02, 0x0b, 0x00, 0x00, 0x00 }, - {0}, false, "GenericPictureEssenceDescriptor_AlternativeCenterCuts" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 363 - 0x04, 0x01, 0x05, 0x01, 0x13, 0x00, 0x00, 0x00 }, - {0}, true, "GenericPictureEssenceDescriptor_ActiveHeight" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 364 - 0x04, 0x01, 0x05, 0x01, 0x14, 0x00, 0x00, 0x00 }, - {0}, true, "GenericPictureEssenceDescriptor_ActiveWidth" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 365 - 0x04, 0x01, 0x05, 0x01, 0x15, 0x00, 0x00, 0x00 }, - {0}, true, "GenericPictureEssenceDescriptor_ActiveXOffset" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 366 - 0x04, 0x01, 0x05, 0x01, 0x16, 0x00, 0x00, 0x00 }, - {0}, true, "GenericPictureEssenceDescriptor_ActiveYOffset" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 367 - 0x03, 0x01, 0x01, 0x02, 0x02, 0x16, 0x00, 0x00 }, - {0}, false, "TimedTextDescriptor_RFC5646LanguageTagList" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 368 - 0x04, 0x01, 0x01, 0x01, 0x00, 0x04, 0x01, 0x00 }, - {0}, false, "AlternativeCenterCuts_4x3" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 369 - 0x04, 0x01, 0x01, 0x01, 0x00, 0x04, 0x02, 0x00 }, - {0}, false, "AlternativeCenterCuts_14x9" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, // 370 - 0x0d, 0x01, 0x03, 0x01, 0x02, 0x06, 0x02, 0x00 }, - {0}, false, "WAVWrappingClip" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 371 - 0x0e, 0x16, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01 }, - {0}, false, "DBOXMotionCodePrimaryStream" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 372 - 0x0e, 0x16, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02 }, - {0}, false, "DBOXMotionCodeSecondaryStream" }, + { { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "MICAlgorithm_NONE" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, // 1 + 0x0d, 0x01, 0x02, 0x01, 0x10, 0x00, 0x00, 0x00 }, + {0}, false, "MXFInterop_OPAtom" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x02, // 2 + 0x0d, 0x01, 0x02, 0x01, 0x10, 0x00, 0x00, 0x00 }, + {0}, false, "OPAtom" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, // 3 + 0x0d, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00 }, + {0}, false, "OP1a" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x03, // 4 + 0x0d, 0x01, 0x03, 0x01, 0x02, 0x7f, 0x01, 0x00 }, + {0}, false, "GCMulti" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, // 5 + 0x01, 0x03, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00 }, + {0}, false, "PictureDataDef" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, // 6 + 0x01, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00 }, + {0}, false, "SoundDataDef" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, // 7 + 0x01, 0x03, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00 }, + {0}, false, "TimecodeDataDef" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, // 8 + 0x01, 0x03, 0x02, 0x01, 0x10, 0x00, 0x00, 0x00 }, + {0}, false, "DescriptiveMetaDataDef" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, // 9 + 0x0d, 0x01, 0x03, 0x01, 0x02, 0x06, 0x01, 0x00 }, + {0}, false, "WAVWrappingFrame" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x02, // 10 + 0x0d, 0x01, 0x03, 0x01, 0x02, 0x04, 0x60, 0x00 }, + {0}, false, "MPEG2_VESWrappingFrame" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x07, // 11 + 0x0d, 0x01, 0x03, 0x01, 0x02, 0x0c, 0x01, 0x00 }, + {0}, false, "JPEG_2000WrappingFrame" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x02, 0x01, 0x01, // 12 + 0x0d, 0x01, 0x03, 0x01, 0x15, 0x01, 0x08, 0x00 }, + {0}, false, "JPEG2000Essence" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x02, 0x01, 0x01, // 13 + 0x0d, 0x01, 0x03, 0x01, 0x15, 0x01, 0x05, 0x00 }, + {0}, false, "MPEG2Essence" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x04, 0x01, 0x07, // 14 + 0x0d, 0x01, 0x03, 0x01, 0x02, 0x7e, 0x01, 0x00 }, + {0}, false, "MXFInterop_CryptEssence" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x04, 0x01, 0x01, // 15 + 0x0d, 0x01, 0x03, 0x01, 0x02, 0x7e, 0x01, 0x00 }, + {0}, false, "CryptEssence" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x02, 0x01, 0x01, // 16 + 0x0d, 0x01, 0x03, 0x01, 0x16, 0x01, 0x01, 0x00 }, + {0}, false, "WAVEssence" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x09, // 17 + 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x01, 0x03 }, + {0}, false, "JP2KEssenceCompression_2K" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x09, // 18 + 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x01, 0x04 }, + {0}, false, "JP2KEssenceCompression_4K" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x07, // 19 + 0x02, 0x09, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00 }, + {0}, false, "CipherAlgorithm_AES" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x07, // 20 + 0x02, 0x09, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00 }, + {0}, false, "MICAlgorithm_HMAC_SHA1" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 21 + 0x03, 0x01, 0x02, 0x10, 0x01, 0x00, 0x00, 0x00 }, + {0}, false, "KLVFill" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 22 + 0x03, 0x01, 0x02, 0x01, 0x06, 0x00, 0x00, 0x00 }, + {0}, false, "PartitionMetadata_MajorVersion" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 23 + 0x03, 0x01, 0x02, 0x01, 0x07, 0x00, 0x00, 0x00 }, + {0}, false, "PartitionMetadata_MinorVersion" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 24 + 0x03, 0x01, 0x02, 0x01, 0x09, 0x00, 0x00, 0x00 }, + {0}, false, "PartitionMetadata_KAGSize" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 25 + 0x06, 0x10, 0x10, 0x03, 0x01, 0x00, 0x00, 0x00 }, + {0}, false, "PartitionMetadata_ThisPartition" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 26 + 0x06, 0x10, 0x10, 0x02, 0x01, 0x00, 0x00, 0x00 }, + {0}, false, "PartitionMetadata_PreviousPartition" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 27 + 0x06, 0x10, 0x10, 0x05, 0x01, 0x00, 0x00, 0x00 }, + {0}, false, "PartitionMetadata_FooterPartition" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 28 + 0x04, 0x06, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "PartitionMetadata_HeaderByteCount" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 29 + 0x04, 0x06, 0x09, 0x02, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "PartitionMetadata_IndexByteCount" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 30 + 0x01, 0x03, 0x04, 0x05, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "PartitionMetadata_IndexSID" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 31 + 0x06, 0x08, 0x01, 0x02, 0x01, 0x03, 0x00, 0x00 }, + {0}, false, "PartitionMetadata_BodyOffset" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 32 + 0x01, 0x03, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "PartitionMetadata_BodySID" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 33 + 0x01, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "PartitionMetadata_OperationalPattern" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 34 + 0x01, 0x02, 0x02, 0x10, 0x02, 0x01, 0x00, 0x00 }, + {0}, false, "PartitionMetadata_EssenceContainers" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 35 + 0x0d, 0x01, 0x02, 0x01, 0x01, 0x02, 0x01, 0x00 }, + {0}, false, "OpenHeader" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 36 + 0x0d, 0x01, 0x02, 0x01, 0x01, 0x02, 0x03, 0x00 }, + {0}, false, "OpenCompleteHeader" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 37 + 0x0d, 0x01, 0x02, 0x01, 0x01, 0x02, 0x02, 0x00 }, + {0}, false, "ClosedHeader" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 38 + 0x0d, 0x01, 0x02, 0x01, 0x01, 0x02, 0x04, 0x00 }, + {0}, false, "ClosedCompleteHeader" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 39 + 0x0d, 0x01, 0x02, 0x01, 0x01, 0x03, 0x01, 0x00 }, + {0}, false, "OpenBodyPartition" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 40 + 0x0d, 0x01, 0x02, 0x01, 0x01, 0x03, 0x03, 0x00 }, + {0}, false, "OpenCompleteBodyPartition" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 41 + 0x0d, 0x01, 0x02, 0x01, 0x01, 0x03, 0x02, 0x00 }, + {0}, false, "ClosedBodyPartition" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 42 + 0x0d, 0x01, 0x02, 0x01, 0x01, 0x03, 0x04, 0x00 }, + {0}, false, "ClosedCompleteBodyPartition" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 43 + 0x0d, 0x01, 0x02, 0x01, 0x01, 0x04, 0x02, 0x00 }, + {0}, false, "Footer" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 44 + 0x0d, 0x01, 0x02, 0x01, 0x01, 0x04, 0x04, 0x00 }, + {0}, false, "CompleteFooter" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 45 + 0x0d, 0x01, 0x02, 0x01, 0x01, 0x05, 0x01, 0x00 }, + {0}, false, "Primer" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 46 + 0x06, 0x01, 0x01, 0x07, 0x15, 0x00, 0x00, 0x00 }, + {0}, false, "Primer_LocalTagEntryBatch" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 47 + 0x01, 0x03, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "LocalTagEntryBatch_Primer_LocalTag" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 48 + 0x01, 0x03, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "LocalTagEntryBatch_Primer_UID" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 49 + 0x01, 0x01, 0x15, 0x02, 0x00, 0x00, 0x00, 0x00 }, + {0x3c, 0x0a}, false, "InterchangeObject_InstanceUID" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 50 + 0x05, 0x20, 0x07, 0x01, 0x08, 0x00, 0x00, 0x00 }, + {0x01, 0x02}, true, "GenerationInterchangeObject_GenerationUID" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 51 + 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "DefaultObject" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 52 + 0x05, 0x30, 0x04, 0x06, 0x00, 0x00, 0x00, 0x00 }, + {0x3f, 0x0b}, false, "IndexTableSegmentBase_IndexEditRate" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 53 + 0x07, 0x02, 0x01, 0x03, 0x01, 0x0a, 0x00, 0x00 }, + {0x3f, 0x0c}, false, "IndexTableSegmentBase_IndexStartPosition" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 54 + 0x07, 0x02, 0x02, 0x01, 0x01, 0x02, 0x00, 0x00 }, + {0x3f, 0x0d}, false, "IndexTableSegmentBase_IndexDuration" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 55 + 0x04, 0x06, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00 }, + {0x3f, 0x05}, false, "IndexTableSegmentBase_EditUnitByteCount" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 56 + 0x01, 0x03, 0x04, 0x05, 0x00, 0x00, 0x00, 0x00 }, + {0x3f, 0x06}, false, "IndexTableSegmentBase_IndexSID" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 57 + 0x01, 0x03, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00 }, + {0x3f, 0x07}, false, "IndexTableSegmentBase_BodySID" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 58 + 0x04, 0x04, 0x04, 0x01, 0x01, 0x00, 0x00, 0x00 }, + {0x3f, 0x08}, false, "IndexTableSegmentBase_SliceCount" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 59 + 0x04, 0x04, 0x04, 0x01, 0x07, 0x00, 0x00, 0x00 }, + {0x3f, 0x0e}, true, "IndexTableSegmentBase_PosTableCount" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 60 + 0x0d, 0x01, 0x02, 0x01, 0x01, 0x10, 0x01, 0x00 }, + {0}, false, "IndexTableSegment" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 61 + 0x04, 0x04, 0x04, 0x01, 0x06, 0x00, 0x00, 0x00 }, + {0x3f, 0x09}, true, "IndexTableSegment_DeltaEntryArray" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 62 + 0x04, 0x04, 0x04, 0x01, 0x04, 0x00, 0x00, 0x00 }, + {0}, false, "DeltaEntryArray_IndexTableSegment_PosTableIndex" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 63 + 0x04, 0x04, 0x04, 0x01, 0x02, 0x00, 0x00, 0x00 }, + {0}, false, "DeltaEntryArray_IndexTableSegment_Slice" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 64 + 0x04, 0x04, 0x04, 0x01, 0x03, 0x00, 0x00, 0x00 }, + {0}, false, "DeltaEntryArray_IndexTableSegment_ElementDelta" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 65 + 0x04, 0x04, 0x04, 0x02, 0x05, 0x00, 0x00, 0x00 }, + {0x3f, 0x0a}, false, "IndexTableSegment_IndexEntryArray" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 66 + 0x04, 0x04, 0x04, 0x02, 0x03, 0x00, 0x00, 0x00 }, + {0}, false, "IndexEntryArray_IndexTableSegment_TemporalOffset" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 67 + 0x04, 0x04, 0x04, 0x02, 0x04, 0x00, 0x00, 0x00 }, + {0}, false, "IndexEntryArray_IndexTableSegment_AnchorOffset" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 68 + 0x04, 0x04, 0x04, 0x02, 0x02, 0x00, 0x00, 0x00 }, + {0}, false, "IndexEntryArray_IndexTableSegment_Flags" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 69 + 0x04, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00 }, + {0}, false, "IndexEntryArray_IndexTableSegment_StreamOffset" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 70 + 0x04, 0x04, 0x04, 0x01, 0x05, 0x00, 0x00, 0x00 }, + {0}, false, "IndexEntryArray_IndexTableSegment_SliceOffsetArray" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 71 + 0x04, 0x04, 0x04, 0x01, 0x08, 0x00, 0x00, 0x00 }, + {0}, false, "IndexEntryArray_IndexTableSegment_PosTableArray" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 72 + 0x0d, 0x01, 0x02, 0x01, 0x01, 0x11, 0x01, 0x00 }, + {0}, false, "RandomIndexMetadata" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 73 + 0x01, 0x03, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "PartitionArray_RandomIndexMetadata_BodySID" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 74 + 0x06, 0x09, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00 }, + {0}, false, "PartitionArray_RandomIndexMetadata_ByteOffset" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 75 + 0x04, 0x06, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "RandomIndexMetadata_Length" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 76 + 0x0d, 0x01, 0x02, 0x01, 0x01, 0x11, 0x00, 0x00 }, + {0}, false, "RandomIndexMetadataV10" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 77 + 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x2f, 0x00 }, + {0}, false, "Preface" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 78 + 0x07, 0x02, 0x01, 0x10, 0x02, 0x04, 0x00, 0x00 }, + {0x3b, 0x02}, false, "Preface_LastModifiedDate" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 79 + 0x03, 0x01, 0x02, 0x01, 0x05, 0x00, 0x00, 0x00 }, + {0x3b, 0x05}, false, "Preface_Version" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 80 + 0x03, 0x01, 0x02, 0x01, 0x04, 0x00, 0x00, 0x00 }, + {0x3b, 0x07}, true, "Preface_ObjectModelVersion" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 81 + 0x06, 0x01, 0x01, 0x04, 0x01, 0x08, 0x00, 0x00 }, + {0x3b, 0x08}, true, "Preface_PrimaryPackage" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 82 + 0x06, 0x01, 0x01, 0x04, 0x06, 0x04, 0x00, 0x00 }, + {0x3b, 0x06}, false, "Preface_Identifications" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 83 + 0x06, 0x01, 0x01, 0x04, 0x02, 0x01, 0x00, 0x00 }, + {0x3b, 0x03}, false, "Preface_ContentStorage" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 84 + 0x01, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00 }, + {0x3b, 0x09}, false, "Preface_OperationalPattern" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 85 + 0x01, 0x02, 0x02, 0x10, 0x02, 0x01, 0x00, 0x00 }, + {0x3b, 0x0a}, false, "Preface_EssenceContainers" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 86 + 0x01, 0x02, 0x02, 0x10, 0x02, 0x02, 0x00, 0x00 }, + {0x3b, 0x0b}, false, "Preface_DMSchemes" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 87 + 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x30, 0x00 }, + {0}, false, "Identification" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 88 + 0x05, 0x20, 0x07, 0x01, 0x01, 0x00, 0x00, 0x00 }, + {0x3c, 0x09}, false, "Identification_ThisGenerationUID" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 89 + 0x05, 0x20, 0x07, 0x01, 0x02, 0x01, 0x00, 0x00 }, + {0x3c, 0x01}, false, "Identification_CompanyName" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 90 + 0x05, 0x20, 0x07, 0x01, 0x03, 0x01, 0x00, 0x00 }, + {0x3c, 0x02}, false, "Identification_ProductName" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 91 + 0x05, 0x20, 0x07, 0x01, 0x04, 0x00, 0x00, 0x00 }, + {0x3c, 0x03}, true, "Identification_ProductVersion" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 92 + 0x05, 0x20, 0x07, 0x01, 0x05, 0x01, 0x00, 0x00 }, + {0x3c, 0x04}, false, "Identification_VersionString" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 93 + 0x05, 0x20, 0x07, 0x01, 0x07, 0x00, 0x00, 0x00 }, + {0x3c, 0x05}, false, "Identification_ProductUID" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 94 + 0x07, 0x02, 0x01, 0x10, 0x02, 0x03, 0x00, 0x00 }, + {0x3c, 0x06}, false, "Identification_ModificationDate" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 95 + 0x05, 0x20, 0x07, 0x01, 0x0a, 0x00, 0x00, 0x00 }, + {0x3c, 0x07}, true, "Identification_ToolkitVersion" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 96 + 0x05, 0x20, 0x07, 0x01, 0x06, 0x01, 0x00, 0x00 }, + {0x3c, 0x08}, true, "Identification_Platform" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 97 + 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18, 0x00 }, + {0}, false, "ContentStorage" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 98 + 0x06, 0x01, 0x01, 0x04, 0x05, 0x01, 0x00, 0x00 }, + {0x19, 0x01}, false, "ContentStorage_Packages" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 99 + 0x06, 0x01, 0x01, 0x04, 0x05, 0x02, 0x00, 0x00 }, + {0x19, 0x02}, true, "ContentStorage_EssenceContainerData" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 100 + 0x06, 0x01, 0x01, 0x04, 0x05, 0x00, 0x00, 0x00 }, + {0x19, 0x01}, false, "ContentStorageKludge_V10Packages" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 101 + 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x23, 0x00 }, + {0}, false, "EssenceContainerData" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 102 + 0x06, 0x01, 0x01, 0x06, 0x01, 0x00, 0x00, 0x00 }, + {0x27, 0x01}, false, "EssenceContainerData_LinkedPackageUID" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 103 + 0x01, 0x03, 0x04, 0x05, 0x00, 0x00, 0x00, 0x00 }, + {0x3f, 0x06}, true, "EssenceContainerData_IndexSID" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 104 + 0x01, 0x03, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00 }, + {0x3f, 0x07}, false, "EssenceContainerData_BodySID" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 105 + 0x01, 0x01, 0x15, 0x10, 0x00, 0x00, 0x00, 0x00 }, + {0x44, 0x01}, false, "GenericPackage_PackageUID" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 106 + 0x01, 0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00 }, + {0x44, 0x02}, true, "GenericPackage_Name" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 107 + 0x07, 0x02, 0x01, 0x10, 0x01, 0x03, 0x00, 0x00 }, + {0x44, 0x05}, false, "GenericPackage_PackageCreationDate" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 108 + 0x07, 0x02, 0x01, 0x10, 0x02, 0x05, 0x00, 0x00 }, + {0x44, 0x04}, false, "GenericPackage_PackageModifiedDate" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 109 + 0x06, 0x01, 0x01, 0x04, 0x06, 0x05, 0x00, 0x00 }, + {0x44, 0x03}, false, "GenericPackage_Tracks" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 110 + 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x32, 0x00 }, + {0}, false, "NetworkLocator" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 111 + 0x01, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00 }, + {0x40, 0x01}, false, "NetworkLocator_URLString" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 112 + 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x33, 0x00 }, + {0}, false, "TextLocator" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 113 + 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00 }, + {0x41, 0x01}, false, "TextLocator_LocatorName" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 114 + 0x01, 0x07, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00 }, + {0x48, 0x01}, false, "GenericTrack_TrackID" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 115 + 0x01, 0x04, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00 }, + {0x48, 0x04}, false, "GenericTrack_TrackNumber" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 116 + 0x01, 0x07, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00 }, + {0x48, 0x02}, true, "GenericTrack_TrackName" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 117 + 0x06, 0x01, 0x01, 0x04, 0x02, 0x04, 0x00, 0x00 }, + {0x48, 0x03}, false, "GenericTrack_Sequence" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 118 + 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x3a, 0x00 }, + {0}, false, "StaticTrack" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 119 + 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x3b, 0x00 }, + {0}, false, "Track" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 120 + 0x05, 0x30, 0x04, 0x05, 0x00, 0x00, 0x00, 0x00 }, + {0x4b, 0x01}, false, "Track_EditRate" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 121 + 0x07, 0x02, 0x01, 0x03, 0x01, 0x03, 0x00, 0x00 }, + {0x4b, 0x02}, false, "Track_Origin" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 122 + 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x39, 0x00 }, + {0}, false, "EventTrack" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 123 + 0x05, 0x30, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00 }, + {0x49, 0x01}, false, "EventTrack_EventEditRate" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 124 + 0x07, 0x02, 0x01, 0x03, 0x01, 0x0b, 0x00, 0x00 }, + {0x49, 0x02}, true, "EventTrack_EventOrigin" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 125 + 0x04, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 }, + {0x02, 0x01}, false, "StructuralComponent_DataDefinition" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 126 + 0x07, 0x02, 0x02, 0x01, 0x01, 0x03, 0x00, 0x00 }, + {0x02, 0x02}, false, "StructuralComponent_Duration" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 127 + 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x0f, 0x00 }, + {0}, false, "Sequence" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 128 + 0x06, 0x01, 0x01, 0x04, 0x06, 0x09, 0x00, 0x00 }, + {0x10, 0x01}, false, "Sequence_StructuralComponents" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 129 + 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x14, 0x00 }, + {0}, false, "TimecodeComponent" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 130 + 0x04, 0x04, 0x01, 0x01, 0x02, 0x06, 0x00, 0x00 }, + {0x15, 0x02}, false, "TimecodeComponent_RoundedTimecodeBase" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 131 + 0x07, 0x02, 0x01, 0x03, 0x01, 0x05, 0x00, 0x00 }, + {0x15, 0x01}, false, "TimecodeComponent_StartTimecode" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 132 + 0x04, 0x04, 0x01, 0x01, 0x05, 0x00, 0x00, 0x00 }, + {0x15, 0x03}, false, "TimecodeComponent_DropFrame" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 133 + 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x11, 0x00 }, + {0}, false, "SourceClip" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 134 + 0x07, 0x02, 0x01, 0x03, 0x01, 0x04, 0x00, 0x00 }, + {0x12, 0x01}, false, "SourceClip_StartPosition" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 135 + 0x06, 0x01, 0x01, 0x03, 0x01, 0x00, 0x00, 0x00 }, + {0x11, 0x01}, false, "SourceClip_SourcePackageID" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 136 + 0x06, 0x01, 0x01, 0x03, 0x02, 0x00, 0x00, 0x00 }, + {0x11, 0x02}, false, "SourceClip_SourceTrackID" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 137 + 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x41, 0x00 }, + {0}, false, "DMSegment" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 138 + 0x07, 0x02, 0x01, 0x03, 0x03, 0x03, 0x00, 0x00 }, + {0x06, 0x01}, false, "DMSegment_EventStartPosition" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 139 + 0x05, 0x30, 0x04, 0x04, 0x01, 0x00, 0x00, 0x00 }, + {0x06, 0x02}, true, "DMSegment_EventComment" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 140 + 0x01, 0x07, 0x01, 0x05, 0x00, 0x00, 0x00, 0x00 }, + {0x61, 0x02}, false, "DMSegment_TrackIDs" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 141 + 0x06, 0x01, 0x01, 0x04, 0x02, 0x0c, 0x00, 0x00 }, + {0x61, 0x01}, false, "DMSegment_DMFramework" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 142 + 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x45, 0x00 }, + {0}, false, "DMSourceClip" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 143 + 0x01, 0x07, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00 }, + {0x61, 0x03}, true, "DMSourceClip_DMSourceClipTrackIDs" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 144 + 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x36, 0x00 }, + {0}, false, "MaterialPackage" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 145 + 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x37, 0x00 }, + {0}, false, "SourcePackage" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 146 + 0x06, 0x01, 0x01, 0x04, 0x02, 0x03, 0x00, 0x00 }, + {0x47, 0x01}, false, "SourcePackage_Descriptor" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 147 + 0x06, 0x01, 0x01, 0x04, 0x06, 0x03, 0x00, 0x00 }, + {0x2f, 0x01}, true, "GenericDescriptor_Locators" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x09, // 148 + 0x06, 0x01, 0x01, 0x04, 0x06, 0x10, 0x00, 0x00 }, + {0}, true, "GenericDescriptor_SubDescriptors" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 149 + 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x25, 0x00 }, + {0}, false, "FileDescriptor" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 150 + 0x06, 0x01, 0x01, 0x03, 0x05, 0x00, 0x00, 0x00 }, + {0x30, 0x06}, true, "FileDescriptor_LinkedTrackID" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 151 + 0x04, 0x06, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00 }, + {0x30, 0x01}, false, "FileDescriptor_SampleRate" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 152 + 0x04, 0x06, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00 }, + {0x30, 0x02}, true, "FileDescriptor_ContainerDuration" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 153 + 0x06, 0x01, 0x01, 0x04, 0x01, 0x02, 0x00, 0x00 }, + {0x30, 0x04}, false, "FileDescriptor_EssenceContainer" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 154 + 0x06, 0x01, 0x01, 0x04, 0x01, 0x03, 0x00, 0x00 }, + {0x30, 0x05}, true, "FileDescriptor_Codec" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 155 + 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x27, 0x00 }, + {0}, false, "GenericPictureEssenceDescriptor" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 156 + 0x04, 0x05, 0x01, 0x13, 0x00, 0x00, 0x00, 0x00 }, + {0x32, 0x15}, true, "GenericPictureEssenceDescriptor_SignalStandard" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 157 + 0x04, 0x01, 0x03, 0x01, 0x04, 0x00, 0x00, 0x00 }, + {0x32, 0x0c}, false, "GenericPictureEssenceDescriptor_FrameLayout" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 158 + 0x04, 0x01, 0x05, 0x02, 0x02, 0x00, 0x00, 0x00 }, + {0x32, 0x03}, false, "GenericPictureEssenceDescriptor_StoredWidth" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 159 + 0x04, 0x01, 0x05, 0x02, 0x01, 0x00, 0x00, 0x00 }, + {0x32, 0x02}, false, "GenericPictureEssenceDescriptor_StoredHeight" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 160 + 0x04, 0x01, 0x03, 0x02, 0x08, 0x00, 0x00, 0x00 }, + {0x32, 0x16}, true, "GenericPictureEssenceDescriptor_StoredF2Offset" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 161 + 0x04, 0x01, 0x05, 0x01, 0x08, 0x00, 0x00, 0x00 }, + {0x32, 0x05}, true, "GenericPictureEssenceDescriptor_SampledWidth" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 162 + 0x04, 0x01, 0x05, 0x01, 0x07, 0x00, 0x00, 0x00 }, + {0x32, 0x04}, true, "GenericPictureEssenceDescriptor_SampledHeight" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 163 + 0x04, 0x01, 0x05, 0x01, 0x09, 0x00, 0x00, 0x00 }, + {0x32, 0x06}, true, "GenericPictureEssenceDescriptor_SampledXOffset" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 164 + 0x04, 0x01, 0x05, 0x01, 0x0a, 0x00, 0x00, 0x00 }, + {0x32, 0x07}, true, "GenericPictureEssenceDescriptor_SampledYOffset" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 165 + 0x04, 0x01, 0x05, 0x01, 0x0b, 0x00, 0x00, 0x00 }, + {0x32, 0x08}, true, "GenericPictureEssenceDescriptor_DisplayHeight" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 166 + 0x04, 0x01, 0x05, 0x01, 0x0c, 0x00, 0x00, 0x00 }, + {0x32, 0x09}, true, "GenericPictureEssenceDescriptor_DisplayWidth" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 167 + 0x04, 0x01, 0x05, 0x01, 0x0d, 0x00, 0x00, 0x00 }, + {0x32, 0x0a}, true, "GenericPictureEssenceDescriptor_DisplayXOffset" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 168 + 0x04, 0x01, 0x05, 0x01, 0x0e, 0x00, 0x00, 0x00 }, + {0x32, 0x0b}, true, "GenericPictureEssenceDescriptor_DisplayYOffset" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 169 + 0x04, 0x01, 0x03, 0x02, 0x07, 0x00, 0x00, 0x00 }, + {0x32, 0x17}, true, "GenericPictureEssenceDescriptor_DisplayF2Offset" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 170 + 0x04, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00 }, + {0x32, 0x0e}, false, "GenericPictureEssenceDescriptor_AspectRatio" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 171 + 0x04, 0x01, 0x03, 0x02, 0x09, 0x00, 0x00, 0x00 }, + {0x32, 0x18}, true, "GenericPictureEssenceDescriptor_ActiveFormatDescriptor" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 172 + 0x04, 0x01, 0x03, 0x02, 0x05, 0x00, 0x00, 0x00 }, + {0x32, 0x0d}, false, "GenericPictureEssenceDescriptor_VideoLineMap" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 173 + 0x05, 0x20, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00 }, + {0x32, 0x0f}, true, "GenericPictureEssenceDescriptor_AlphaTransparency" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 174 + 0x04, 0x01, 0x02, 0x01, 0x01, 0x01, 0x02, 0x00 }, + {0x32, 0x10}, true, "GenericPictureEssenceDescriptor_TransferCharacteristic" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 175 + 0x04, 0x18, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00 }, + {0x32, 0x11}, true, "GenericPictureEssenceDescriptor_ImageAlignmentOffset" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 176 + 0x04, 0x18, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00 }, + {0x32, 0x13}, true, "GenericPictureEssenceDescriptor_ImageStartOffset" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 177 + 0x04, 0x18, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00 }, + {0x32, 0x14}, true, "GenericPictureEssenceDescriptor_ImageEndOffset" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 178 + 0x04, 0x01, 0x03, 0x01, 0x06, 0x00, 0x00, 0x00 }, + {0x32, 0x12}, true, "GenericPictureEssenceDescriptor_FieldDominance" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 179 + 0x04, 0x01, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00 }, + {0x32, 0x01}, false, "GenericPictureEssenceDescriptor_PictureEssenceCoding" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 180 + 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x28, 0x00 }, + {0}, false, "CDCIEssenceDescriptor" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 181 + 0x04, 0x01, 0x05, 0x03, 0x0a, 0x00, 0x00, 0x00 }, + {0x33, 0x01}, false, "CDCIEssenceDescriptor_ComponentDepth" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 182 + 0x04, 0x01, 0x05, 0x01, 0x05, 0x00, 0x00, 0x00 }, + {0x33, 0x02}, false, "CDCIEssenceDescriptor_HorizontalSubsampling" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 183 + 0x04, 0x01, 0x05, 0x01, 0x10, 0x00, 0x00, 0x00 }, + {0x33, 0x08}, true, "CDCIEssenceDescriptor_VerticalSubsampling" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 184 + 0x04, 0x01, 0x05, 0x01, 0x06, 0x00, 0x00, 0x00 }, + {0x33, 0x03}, true, "CDCIEssenceDescriptor_ColorSiting" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 185 + 0x03, 0x01, 0x02, 0x01, 0x0a, 0x00, 0x00, 0x00 }, + {0x33, 0x0b}, true, "CDCIEssenceDescriptor_ReversedByteOrder" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 186 + 0x04, 0x18, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00 }, + {0x33, 0x07}, true, "CDCIEssenceDescriptor_PaddingBits" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 187 + 0x04, 0x01, 0x05, 0x03, 0x07, 0x00, 0x00, 0x00 }, + {0x33, 0x09}, true, "CDCIEssenceDescriptor_AlphaSampleDepth" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 188 + 0x04, 0x01, 0x05, 0x03, 0x03, 0x00, 0x00, 0x00 }, + {0x33, 0x04}, true, "CDCIEssenceDescriptor_BlackRefLevel" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 189 + 0x04, 0x01, 0x05, 0x03, 0x04, 0x00, 0x00, 0x00 }, + {0x33, 0x05}, true, "CDCIEssenceDescriptor_WhiteReflevel" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 190 + 0x04, 0x01, 0x05, 0x03, 0x05, 0x00, 0x00, 0x00 }, + {0x33, 0x06}, true, "CDCIEssenceDescriptor_ColorRange" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 191 + 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x29, 0x00 }, + {0}, false, "RGBAEssenceDescriptor" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 192 + 0x04, 0x01, 0x05, 0x03, 0x0b, 0x00, 0x00, 0x00 }, + {0x34, 0x06}, true, "RGBAEssenceDescriptor_ComponentMaxRef" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 193 + 0x04, 0x01, 0x05, 0x03, 0x0c, 0x00, 0x00, 0x00 }, + {0x34, 0x07}, true, "RGBAEssenceDescriptor_ComponentMinRef" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 194 + 0x04, 0x01, 0x05, 0x03, 0x0d, 0x00, 0x00, 0x00 }, + {0x34, 0x08}, true, "RGBAEssenceDescriptor_AlphaMaxRef" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 195 + 0x04, 0x01, 0x05, 0x03, 0x0e, 0x00, 0x00, 0x00 }, + {0x34, 0x09}, true, "RGBAEssenceDescriptor_AlphaMinRef" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 196 + 0x04, 0x01, 0x04, 0x04, 0x01, 0x00, 0x00, 0x00 }, + {0x34, 0x05}, true, "RGBAEssenceDescriptor_ScanningDirection" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 197 + 0x04, 0x01, 0x05, 0x03, 0x06, 0x00, 0x00, 0x00 }, + {0x34, 0x01}, false, "RGBAEssenceDescriptor_PixelLayout" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 198 + 0x04, 0x01, 0x05, 0x03, 0x08, 0x00, 0x00, 0x00 }, + {0x34, 0x03}, true, "RGBAEssenceDescriptor_Palette" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 199 + 0x04, 0x01, 0x05, 0x03, 0x09, 0x00, 0x00, 0x00 }, + {0x34, 0x04}, true, "RGBAEssenceDescriptor_PaletteLayout" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 200 + 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x42, 0x00 }, + {0}, false, "GenericSoundEssenceDescriptor" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 201 + 0x04, 0x02, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00 }, + {0x3d, 0x03}, false, "GenericSoundEssenceDescriptor_AudioSamplingRate" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 202 + 0x04, 0x02, 0x03, 0x01, 0x04, 0x00, 0x00, 0x00 }, + {0x3d, 0x02}, false, "GenericSoundEssenceDescriptor_Locked" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 203 + 0x04, 0x02, 0x01, 0x01, 0x03, 0x00, 0x00, 0x00 }, + {0x3d, 0x04}, true, "GenericSoundEssenceDescriptor_AudioRefLevel" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 204 + 0x04, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00 }, + {0x3d, 0x05}, true, "GenericSoundEssenceDescriptor_ElectroSpatialFormulation" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 205 + 0x04, 0x02, 0x01, 0x01, 0x04, 0x00, 0x00, 0x00 }, + {0x3d, 0x07}, false, "GenericSoundEssenceDescriptor_ChannelCount" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 206 + 0x04, 0x02, 0x03, 0x03, 0x04, 0x00, 0x00, 0x00 }, + {0x3d, 0x01}, false, "GenericSoundEssenceDescriptor_QuantizationBits" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 207 + 0x04, 0x02, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00 }, + {0x3d, 0x0c}, true, "GenericSoundEssenceDescriptor_DialNorm" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 208 + 0x04, 0x02, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00 }, + {0x3d, 0x06}, false, "GenericSoundEssenceDescriptor_SoundEssenceCoding" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 209 + 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x43, 0x00 }, + {0}, false, "GenericDataEssenceDescriptor" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 210 + 0x04, 0x03, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00 }, + {0x3e, 0x01}, false, "GenericDataEssenceDescriptor_DataEssenceCoding" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 211 + 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x44, 0x00 }, + {0}, false, "MultipleDescriptor" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 212 + 0x06, 0x01, 0x01, 0x04, 0x06, 0x0b, 0x00, 0x00 }, + {0x3f, 0x01}, false, "MultipleDescriptor_SubDescriptorUIDs" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 213 + 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x51, 0x00 }, + {0}, false, "MPEG2VideoDescriptor" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 214 + 0x04, 0x01, 0x06, 0x02, 0x01, 0x02, 0x00, 0x00 }, + {0}, true, "MPEG2VideoDescriptor_SingleSequence" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 215 + 0x04, 0x01, 0x06, 0x02, 0x01, 0x03, 0x00, 0x00 }, + {0}, true, "MPEG2VideoDescriptor_ConstantBFrames" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 216 + 0x04, 0x01, 0x06, 0x02, 0x01, 0x04, 0x00, 0x00 }, + {0}, true, "MPEG2VideoDescriptor_CodedContentType" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 217 + 0x04, 0x01, 0x06, 0x02, 0x01, 0x05, 0x00, 0x00 }, + {0}, true, "MPEG2VideoDescriptor_LowDelay" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 218 + 0x04, 0x01, 0x06, 0x02, 0x01, 0x06, 0x00, 0x00 }, + {0}, true, "MPEG2VideoDescriptor_ClosedGOP" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 219 + 0x04, 0x01, 0x06, 0x02, 0x01, 0x07, 0x00, 0x00 }, + {0}, true, "MPEG2VideoDescriptor_IdenticalGOP" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 220 + 0x04, 0x01, 0x06, 0x02, 0x01, 0x08, 0x00, 0x00 }, + {0}, true, "MPEG2VideoDescriptor_MaxGOP" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 221 + 0x04, 0x01, 0x06, 0x02, 0x01, 0x09, 0x00, 0x00 }, + {0}, true, "MPEG2VideoDescriptor_BPictureCount" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 222 + 0x04, 0x01, 0x06, 0x02, 0x01, 0x0b, 0x00, 0x00 }, + {0}, true, "MPEG2VideoDescriptor_BitRate" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 223 + 0x04, 0x01, 0x06, 0x02, 0x01, 0x0a, 0x00, 0x00 }, + {0}, true, "MPEG2VideoDescriptor_ProfileAndLevel" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 224 + 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x48, 0x00 }, + {0}, false, "WaveAudioDescriptor" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 225 + 0x04, 0x02, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00 }, + {0x3d, 0x0a}, false, "WaveAudioDescriptor_BlockAlign" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 226 + 0x04, 0x02, 0x03, 0x02, 0x02, 0x00, 0x00, 0x00 }, + {0x3d, 0x0b}, true, "WaveAudioDescriptor_SequenceOffset" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 227 + 0x04, 0x02, 0x03, 0x03, 0x05, 0x00, 0x00, 0x00 }, + {0x3d, 0x09}, false, "WaveAudioDescriptor_AvgBps" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 228 + 0x04, 0x02, 0x03, 0x01, 0x0e, 0x00, 0x00, 0x00 }, + {0x3d, 0x0e}, true, "WaveAudioDescriptor_PeakEnvelope" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 229 + 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x5a, 0x00 }, + {0}, false, "JPEG2000PictureSubDescriptor" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 230 + 0x04, 0x01, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00 }, + {0}, false, "JPEG2000PictureSubDescriptor_Rsize" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 231 + 0x04, 0x01, 0x06, 0x03, 0x02, 0x00, 0x00, 0x00 }, + {0}, false, "JPEG2000PictureSubDescriptor_Xsize" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 232 + 0x04, 0x01, 0x06, 0x03, 0x03, 0x00, 0x00, 0x00 }, + {0}, false, "JPEG2000PictureSubDescriptor_Ysize" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 233 + 0x04, 0x01, 0x06, 0x03, 0x04, 0x00, 0x00, 0x00 }, + {0}, false, "JPEG2000PictureSubDescriptor_XOsize" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 234 + 0x04, 0x01, 0x06, 0x03, 0x05, 0x00, 0x00, 0x00 }, + {0}, false, "JPEG2000PictureSubDescriptor_YOsize" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 235 + 0x04, 0x01, 0x06, 0x03, 0x06, 0x00, 0x00, 0x00 }, + {0}, false, "JPEG2000PictureSubDescriptor_XTsize" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 236 + 0x04, 0x01, 0x06, 0x03, 0x07, 0x00, 0x00, 0x00 }, + {0}, false, "JPEG2000PictureSubDescriptor_YTsize" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 237 + 0x04, 0x01, 0x06, 0x03, 0x08, 0x00, 0x00, 0x00 }, + {0}, false, "JPEG2000PictureSubDescriptor_XTOsize" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 238 + 0x04, 0x01, 0x06, 0x03, 0x09, 0x00, 0x00, 0x00 }, + {0}, false, "JPEG2000PictureSubDescriptor_YTOsize" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 239 + 0x04, 0x01, 0x06, 0x03, 0x0a, 0x00, 0x00, 0x00 }, + {0}, false, "JPEG2000PictureSubDescriptor_Csize" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 240 + 0x04, 0x01, 0x06, 0x03, 0x0b, 0x00, 0x00, 0x00 }, + {0}, false, "JPEG2000PictureSubDescriptor_PictureComponentSizing" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 241 + 0x04, 0x01, 0x06, 0x03, 0x0c, 0x00, 0x00, 0x00 }, + {0}, true, "JPEG2000PictureSubDescriptor_CodingStyleDefault" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 242 + 0x04, 0x01, 0x06, 0x03, 0x0d, 0x00, 0x00, 0x00 }, + {0}, true, "JPEG2000PictureSubDescriptor_QuantizationDefault" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 243 + 0x0d, 0x01, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "DM_Framework" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 244 + 0x0d, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "DM_Set" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x07, // 245 + 0x0d, 0x01, 0x03, 0x01, 0x02, 0x0b, 0x01, 0x00 }, + {0}, false, "EncryptedContainerLabel" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x07, // 246 + 0x0d, 0x01, 0x04, 0x01, 0x02, 0x01, 0x01, 0x00 }, + {0}, false, "CryptographicFrameworkLabel" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 247 + 0x0d, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x00 }, + {0}, false, "CryptographicFramework" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x09, // 248 + 0x06, 0x01, 0x01, 0x04, 0x02, 0x0d, 0x00, 0x00 }, + {0}, false, "CryptographicFramework_ContextSR" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 249 + 0x0d, 0x01, 0x04, 0x01, 0x02, 0x02, 0x00, 0x00 }, + {0}, false, "CryptographicContext" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x09, // 250 + 0x01, 0x01, 0x15, 0x11, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "CryptographicContext_ContextID" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x09, // 251 + 0x06, 0x01, 0x01, 0x02, 0x02, 0x00, 0x00, 0x00 }, + {0}, false, "CryptographicContext_SourceEssenceContainer" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x09, // 252 + 0x02, 0x09, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00 }, + {0}, false, "CryptographicContext_CipherAlgorithm" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x09, // 253 + 0x02, 0x09, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00 }, + {0}, false, "CryptographicContext_MICAlgorithm" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x09, // 254 + 0x02, 0x09, 0x03, 0x01, 0x02, 0x00, 0x00, 0x00 }, + {0}, false, "CryptographicContext_CryptographicKeyID" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0a, // 255 + 0x0d, 0x01, 0x03, 0x01, 0x02, 0x13, 0x01, 0x01 }, + {0}, false, "TimedTextWrappingClip" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x02, 0x01, 0x01, // 256 + 0x0d, 0x01, 0x03, 0x01, 0x17, 0x01, 0x0b, 0x01 }, + {0}, false, "TimedTextEssence" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 257 + 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x64, 0x00 }, + {0}, false, "TimedTextDescriptor" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0c, // 258 + 0x01, 0x01, 0x15, 0x12, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "TimedTextDescriptor_ResourceID" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0c, // 259 + 0x04, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "TimedTextDescriptor_UCSEncoding" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x08, // 260 + 0x01, 0x02, 0x01, 0x05, 0x01, 0x00, 0x00, 0x00 }, + {0}, false, "TimedTextDescriptor_NamespaceURI" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 261 + 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x65, 0x00 }, + {0}, false, "TimedTextResourceSubDescriptor" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0c, // 262 + 0x01, 0x01, 0x15, 0x13, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "TimedTextResourceSubDescriptor_AncillaryResourceID" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x07, // 263 + 0x04, 0x09, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "TimedTextResourceSubDescriptor_MIMEMediaType" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 264 + 0x01, 0x03, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "TimedTextResourceSubDescriptor_EssenceStreamID" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 265 + 0x0d, 0x01, 0x02, 0x01, 0x01, 0x03, 0x11, 0x00 }, + {0}, false, "GenericStreamPartition" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 266 + 0x04, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 }, + {0x02, 0x01}, false, "DMSegment_DataDefinition" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 267 + 0x07, 0x02, 0x02, 0x01, 0x01, 0x03, 0x00, 0x00 }, + {0x02, 0x02}, true, "DMSegment_Duration" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 268 + 0x01, 0x07, 0x01, 0x05, 0x00, 0x00, 0x00, 0x00 }, + {0x61, 0x02}, false, "DMSegment_TrackIDList" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 269 + 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x63, 0x00 }, + {0}, false, "StereoscopicPictureSubDescriptor" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x07, // 270 + 0x04, 0x02, 0x01, 0x01, 0x05, 0x00, 0x00, 0x00 }, + {0x3d, 0x32}, true, "WaveAudioDescriptor_ChannelAssignment" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0c, // 271 + 0x0d, 0x01, 0x05, 0x09, 0x01, 0x00, 0x00, 0x00 }, + {0x00, 0x00}, false, "GenericStream_DataElement" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 272 + 0x06, 0x01, 0x01, 0x04, 0x06, 0x10, 0x00, 0x00 }, + {0}, true, "MXFInterop_GenericDescriptor_SubDescriptors" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 273 + 0x01, 0x03, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00 }, + {0x3f, 0x07}, false, "BodySID" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 274 + 0x01, 0x03, 0x04, 0x05, 0x00, 0x00, 0x00, 0x00 }, + {0x3f, 0x06}, false, "IndexSID" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 275 + 0x01, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00 }, + {0x3b, 0x09}, false, "OperationalPattern" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 276 + 0x01, 0x02, 0x02, 0x10, 0x02, 0x01, 0x00, 0x00 }, + {0x3b, 0x0a}, false, "EssenceContainers" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0b, // 277 + 0x04, 0x02, 0x02, 0x10, 0x03, 0x01, 0x01, 0x00 }, + {0}, false, "DCAudioChannelCfg_1_5p1" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0b, // 278 + 0x04, 0x02, 0x02, 0x10, 0x03, 0x01, 0x02, 0x00 }, + {0}, false, "DCAudioChannelCfg_2_6p1" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0b, // 279 + 0x04, 0x02, 0x02, 0x10, 0x03, 0x01, 0x03, 0x00 }, + {0}, false, "DCAudioChannelCfg_3_7p1" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0b, // 280 + 0x04, 0x02, 0x02, 0x10, 0x03, 0x01, 0x04, 0x00 }, + {0}, false, "DCAudioChannelCfg_4_WTF" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0b, // 281 + 0x04, 0x02, 0x02, 0x10, 0x03, 0x01, 0x05, 0x00 }, + {0}, false, "DCAudioChannelCfg_5_7p1_DS" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 282 + 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x6a, 0x00 }, + {0}, false, "MCALabelSubDescriptor" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 283 + 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x6b, 0x00 }, + {0}, false, "AudioChannelLabelSubDescriptor" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 284 + 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x6c, 0x00 }, + {0}, false, "SoundfieldGroupLabelSubDescriptor" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 285 + 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x6d, 0x00 }, + {0}, false, "GroupOfSoundfieldGroupsLabelSubDescriptor" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 286 + 0x01, 0x03, 0x07, 0x01, 0x01, 0x00, 0x00, 0x00 }, + {0}, false, "MCALabelSubDescriptor_MCALabelDictionaryID" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 287 + 0x01, 0x03, 0x07, 0x01, 0x05, 0x00, 0x00, 0x00 }, + {0}, false, "MCALabelSubDescriptor_MCALinkID" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 288 + 0x01, 0x03, 0x07, 0x01, 0x02, 0x00, 0x00, 0x00 }, + {0}, false, "MCALabelSubDescriptor_MCATagSymbol" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 289 + 0x01, 0x03, 0x07, 0x01, 0x03, 0x00, 0x00, 0x00 }, + {0}, false, "MCALabelSubDescriptor_MCATagName" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 290 + 0x01, 0x03, 0x04, 0x0a, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "MCALabelSubDescriptor_MCAChannelID" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0d, // 291 + 0x03, 0x01, 0x01, 0x02, 0x03, 0x15, 0x00, 0x00 }, + {0}, false, "MCALabelSubDescriptor_RFC5646SpokenLanguage" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 292 + 0x01, 0x03, 0x07, 0x01, 0x06, 0x00, 0x00, 0x00 }, + {0}, false, "AudioChannelLabelSubDescriptor_SoundfieldGroupLinkID" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 293 + 0x01, 0x03, 0x07, 0x01, 0x04, 0x00, 0x00, 0x00 }, + {0}, false, "SoundfieldGroupLabelSubDescriptor_GroupOfSoundfieldGroupsLinkID" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x05, // 294 + 0x0e, 0x09, 0x06, 0x05, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "DCDataWrappingFrame" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x02, 0x01, 0x05, // 295 + 0x0e, 0x09, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "DCDataEssence" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x05, // 296 + 0x0e, 0x09, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "DCDataDescriptor" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x05, // 297 + 0x0e, 0x09, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "DolbyAtmosSubDescriptor" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 298 + 0x0e, 0x09, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00 }, + {0}, true, "DolbyAtmosSubDescriptor_AtmosVersion" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 299 + 0x0e, 0x09, 0x05, 0x07, 0x00, 0x00, 0x00, 0x00 }, + {0}, true, "DolbyAtmosSubDescriptor_MaxChannelCount" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 300 + 0x0e, 0x09, 0x05, 0x08, 0x00, 0x00, 0x00, 0x00 }, + {0}, true, "DolbyAtmosSubDescriptor_MaxObjectCount" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 301 + 0x0e, 0x09, 0x05, 0x09, 0x00, 0x00, 0x00, 0x00 }, + {0}, true, "DolbyAtmosSubDescriptor_AtmosID" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 302 + 0x0e, 0x09, 0x05, 0x0A, 0x00, 0x00, 0x00, 0x00 }, + {0}, true, "DolbyAtmosSubDescriptor_FirstFrame" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, // 303 + 0x01, 0x03, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00 }, + {0}, false, "DataDataDef" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 304 + 0x04, 0x02, 0x02, 0x10, 0x03, 0x02, 0x00, 0x00 }, + {0}, false, "DCAudioChannelCfg_MCA" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 305 + 0x03, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "DCAudioChannel_L" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 306 + 0x03, 0x02, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "DCAudioChannel_R" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 307 + 0x03, 0x02, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "DCAudioChannel_C" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 308 + 0x03, 0x02, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "DCAudioChannel_LFE" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 309 + 0x03, 0x02, 0x01, 0x05, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "DCAudioChannel_Ls" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 310 + 0x03, 0x02, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "DCAudioChannel_Rs" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 311 + 0x03, 0x02, 0x01, 0x07, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "DCAudioChannel_Lss" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 312 + 0x03, 0x02, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "DCAudioChannel_Rss" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 313 + 0x03, 0x02, 0x01, 0x09, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "DCAudioChannel_Lrs" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 314 + 0x03, 0x02, 0x01, 0x0a, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "DCAudioChannel_Rrs" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 315 + 0x03, 0x02, 0x01, 0x0b, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "DCAudioChannel_Lc" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 316 + 0x03, 0x02, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "DCAudioChannel_Rc" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 317 + 0x03, 0x02, 0x01, 0x0d, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "DCAudioChannel_Cs" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 318 + 0x03, 0x02, 0x01, 0x0e, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "DCAudioChannel_HI" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 319 + 0x03, 0x02, 0x01, 0x0f, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "DCAudioChannel_VIN" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 320 + 0x03, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "DCAudioSoundfield_51" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 321 + 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "DCAudioSoundfield_71" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 322 + 0x03, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "DCAudioSoundfield_SDS" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 323 + 0x03, 0x02, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "DCAudioSoundfield_61" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 324 + 0x03, 0x02, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00 }, + {0}, false, "DCAudioSoundfield_M" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x02, 0x01, 0x01, // 325 + 0x0d, 0x01, 0x03, 0x01, 0x16, 0x01, 0x02, 0x00 }, + {0}, false, "WAVEssenceClip" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 326 + 0x04, 0x02, 0x02, 0x10, 0x04, 0x01, 0x00, 0x00 }, + {0}, false, "IMFAudioChannelCfg_MCA" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 327 + 0x03, 0x02, 0x01, 0x20, 0x01, 0x00, 0x00, 0x00 }, + {0}, false, "IMFAudioChannel_M1" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 328 + 0x03, 0x02, 0x01, 0x20, 0x02, 0x00, 0x00, 0x00 }, + {0}, false, "IMFAudioChannel_M2" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 329 + 0x03, 0x02, 0x01, 0x20, 0x03, 0x00, 0x00, 0x00 }, + {0}, false, "IMFAudioChannel_Lt" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 330 + 0x03, 0x02, 0x01, 0x20, 0x04, 0x00, 0x00, 0x00 }, + {0}, false, "IMFAudioChannel_Rt" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 331 + 0x03, 0x02, 0x01, 0x20, 0x05, 0x00, 0x00, 0x00 }, + {0}, false, "IMFAudioChannel_Lst" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 332 + 0x03, 0x02, 0x01, 0x20, 0x06, 0x00, 0x00, 0x00 }, + {0}, false, "IMFAudioChannel_Rst" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 333 + 0x03, 0x02, 0x01, 0x20, 0x07, 0x00, 0x00, 0x00 }, + {0}, false, "IMFAudioChannel_S" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 334 + 0x03, 0x02, 0x01, 0x20, 0x08, 0x00, 0x00, 0x00 }, + {0}, false, "IMFNumberedSourceChannel" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 335 + 0x03, 0x02, 0x02, 0x20, 0x01, 0x00, 0x00, 0x00 }, + {0}, false, "IMFAudioSoundfield_ST" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 336 + 0x03, 0x02, 0x02, 0x20, 0x02, 0x00, 0x00, 0x00 }, + {0}, false, "IMFAudioSoundfield_DM" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 337 + 0x03, 0x02, 0x02, 0x20, 0x03, 0x00, 0x00, 0x00 }, + {0}, false, "IMFAudioSoundfield_DNS" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 338 + 0x03, 0x02, 0x02, 0x20, 0x04, 0x00, 0x00, 0x00 }, + {0}, false, "IMFAudioSoundfield_30" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 339 + 0x03, 0x02, 0x02, 0x20, 0x05, 0x00, 0x00, 0x00 }, + {0}, false, "IMFAudioSoundfield_40" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 340 + 0x03, 0x02, 0x02, 0x20, 0x06, 0x00, 0x00, 0x00 }, + {0}, false, "IMFAudioSoundfield_50" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 341 + 0x03, 0x02, 0x02, 0x20, 0x07, 0x00, 0x00, 0x00 }, + {0}, false, "IMFAudioSoundfield_60" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 342 + 0x03, 0x02, 0x02, 0x20, 0x08, 0x00, 0x00, 0x00 }, + {0}, false, "IMFAudioSoundfield_70" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 343 + 0x03, 0x02, 0x02, 0x20, 0x09, 0x00, 0x00, 0x00 }, + {0}, false, "IMFAudioSoundfield_LtRt" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 344 + 0x03, 0x02, 0x02, 0x20, 0x0a, 0x00, 0x00, 0x00 }, + {0}, false, "IMFAudioSoundfield_51Ex" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 345 + 0x03, 0x02, 0x02, 0x20, 0x0b, 0x00, 0x00, 0x00 }, + {0}, false, "IMFAudioSoundfield_HI" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 346 + 0x03, 0x02, 0x02, 0x20, 0x0c, 0x00, 0x00, 0x00 }, + {0}, false, "IMFAudioSoundfield_VIN" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 347 + 0x03, 0x02, 0x03, 0x20, 0x01, 0x00, 0x00, 0x00 }, + {0}, false, "IMFAudioGroup_MPg" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 348 + 0x03, 0x02, 0x03, 0x20, 0x02, 0x00, 0x00, 0x00 }, + {0}, false, "IMFAudioGroup_DVS" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 349 + 0x03, 0x02, 0x03, 0x20, 0x03, 0x00, 0x00, 0x00 }, + {0}, false, "IMFAudioGroup_Dcm" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0c, // 350 + 0x06, 0x01, 0x01, 0x04, 0x02, 0x0f, 0x00, 0x00 }, + {0}, false, "MaterialPackage_PackageMarker" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 351 + 0x04, 0x01, 0x02, 0x01, 0x01, 0x03, 0x01, 0x00 }, + {0}, false, "GenericPictureEssenceDescriptor_CodingEquations" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x09, // 352 + 0x04, 0x01, 0x02, 0x01, 0x01, 0x06, 0x01, 0x00 }, + {0}, false, "GenericPictureEssenceDescriptor_ColorPrimaries" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 353 + 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x01, 0x11 }, + {0}, false, "JP2KEssenceCompression_BroadcastProfile_1" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 354 + 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x01, 0x12 }, + {0}, false, "JP2KEssenceCompression_BroadcastProfile_2" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 355 + 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x01, 0x13 }, + {0}, false, "JP2KEssenceCompression_BroadcastProfile_3" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 356 + 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x01, 0x14 }, + {0}, false, "JP2KEssenceCompression_BroadcastProfile_4" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 357 + 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x01, 0x15 }, + {0}, false, "JP2KEssenceCompression_BroadcastProfile_5" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 358 + 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x01, 0x16 }, + {0}, false, "JP2KEssenceCompression_BroadcastProfile_6" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 359 + 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x01, 0x17 }, + {0}, false, "JP2KEssenceCompression_BroadcastProfile_7" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 360 + 0x04, 0x02, 0x01, 0x01, 0x06, 0x00, 0x00, 0x00 }, + {0}, false, "WaveAudioDescriptor_ReferenceImageEditRate" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 361 + 0x04, 0x02, 0x01, 0x01, 0x07, 0x00, 0x00, 0x00 }, + {0}, false, "WaveAudioDescriptor_ReferenceAudioAlignmentLevel" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 362 + 0x04, 0x01, 0x03, 0x02, 0x0b, 0x00, 0x00, 0x00 }, + {0}, false, "GenericPictureEssenceDescriptor_AlternativeCenterCuts" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 363 + 0x04, 0x01, 0x05, 0x01, 0x13, 0x00, 0x00, 0x00 }, + {0x32, 0x05}, true, "GenericPictureEssenceDescriptor_ActiveHeight" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 364 + 0x04, 0x01, 0x05, 0x01, 0x14, 0x00, 0x00, 0x00 }, + {0x32, 0x04}, true, "GenericPictureEssenceDescriptor_ActiveWidth" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 365 + 0x04, 0x01, 0x05, 0x01, 0x15, 0x00, 0x00, 0x00 }, + {0x32, 0x06}, true, "GenericPictureEssenceDescriptor_ActiveXOffset" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 366 + 0x04, 0x01, 0x05, 0x01, 0x16, 0x00, 0x00, 0x00 }, + {0x32, 0x07}, true, "GenericPictureEssenceDescriptor_ActiveYOffset" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 367 + 0x03, 0x01, 0x01, 0x02, 0x02, 0x16, 0x00, 0x00 }, + {0}, false, "TimedTextDescriptor_RFC5646LanguageTagList" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 368 + 0x04, 0x01, 0x01, 0x01, 0x00, 0x04, 0x01, 0x00 }, + {0}, false, "AlternativeCenterCuts_4x3" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 369 + 0x04, 0x01, 0x01, 0x01, 0x00, 0x04, 0x02, 0x00 }, + {0}, false, "AlternativeCenterCuts_14x9" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, // 370 + 0x0d, 0x01, 0x03, 0x01, 0x02, 0x06, 0x02, 0x00 }, + {0}, false, "WAVWrappingClip" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 371 + 0x0e, 0x16, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01 }, + {0}, false, "DBOXMotionCodePrimaryStream" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 372 + 0x0e, 0x16, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02 }, + {0}, false, "DBOXMotionCodeSecondaryStream" }, - // 379-2, Sec. 7: Encoders that conform to this specification shall add a - // ContainerConstraintSubDescriptor to the GenericDescriptor::SubDescriptors - // property of the top-most File Descriptor that describes the essence - // container. - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x7f, 0x01, 0x01, // 373 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x67, 0x00 }, - {0}, false, "ContainerConstraintSubDescriptor" }, + // 379-2, Sec. 7: Encoders that conform to this specification shall add a + // ContainerConstraintSubDescriptor to the GenericDescriptor::SubDescriptors + // property of the top-most File Descriptor that describes the essence + // container. + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x7f, 0x01, 0x01, // 373 + 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x67, 0x00 }, + {0}, false, "ContainerConstraintSubDescriptor" }, - // protype for high dynamic range, values recorded in Dolby registry - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x05, // 374 - 0x0e, 0x09, 0x06, 0x07, 0x01, 0x01, 0x01, 0x01 }, - {0}, false, "PHDRImageMetadataWrappingFrame" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x02, 0x01, 0x05, // 375 - 0x0e, 0x09, 0x06, 0x07, 0x01, 0x01, 0x01, 0x00 }, - {0}, false, "PHDRImageMetadataItem" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x05, // 376 - 0x0e, 0x09, 0x06, 0x07, 0x01, 0x01, 0x01, 0x03 }, - {0}, false, "PHDRMetadataTrackSubDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 377 - 0x0e, 0x09, 0x06, 0x07, 0x01, 0x01, 0x01, 0x04 }, - {0}, false, "PHDRMetadataTrackSubDescriptor_DataDefinition" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 378 - 0x0e, 0x09, 0x06, 0x07, 0x01, 0x01, 0x01, 0x05 }, - {0}, false, "PHDRMetadataTrackSubDescriptor_SourceTrackID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 379 - 0x0e, 0x09, 0x06, 0x07, 0x01, 0x01, 0x01, 0x06 }, - {0}, false, "PHDRMetadataTrackSubDescriptor_SimplePayloadSID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 380 - 0x04, 0x01, 0x06, 0x03, 0x0e, 0x00, 0x00, 0x00 }, - {0}, true, "JPEG2000PictureSubDescriptor_J2CLayout" }, + // protype for high dynamic range, values recorded in Dolby registry + { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x05, // 374 + 0x0e, 0x09, 0x06, 0x07, 0x01, 0x01, 0x01, 0x01 }, + {0}, false, "PHDRImageMetadataWrappingFrame" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x02, 0x01, 0x05, // 375 + 0x0e, 0x09, 0x06, 0x07, 0x01, 0x01, 0x01, 0x00 }, + {0}, false, "PHDRImageMetadataItem" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x05, // 376 + 0x0e, 0x09, 0x06, 0x07, 0x01, 0x01, 0x01, 0x03 }, + {0}, false, "PHDRMetadataTrackSubDescriptor" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 377 + 0x0e, 0x09, 0x06, 0x07, 0x01, 0x01, 0x01, 0x04 }, + {0}, false, "PHDRMetadataTrackSubDescriptor_DataDefinition" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 378 + 0x0e, 0x09, 0x06, 0x07, 0x01, 0x01, 0x01, 0x05 }, + {0}, false, "PHDRMetadataTrackSubDescriptor_SourceTrackID" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 379 + 0x0e, 0x09, 0x06, 0x07, 0x01, 0x01, 0x01, 0x06 }, + {0}, false, "PHDRMetadataTrackSubDescriptor_SimplePayloadSID" }, - // Old DCData UL values, needed for continued support of Atmos - // - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x05, // 381 - 0x0e, 0x09, 0x06, 0x05, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "PrivateDCDataWrappingFrame" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x02, 0x01, 0x05, // 382 - 0x0e, 0x09, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "PrivateDCDataEssence" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x05, // 383 - 0x0e, 0x09, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "PrivateDCDataDescriptor" }, + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 380 + 0x04, 0x01, 0x06, 0x03, 0x0e, 0x00, 0x00, 0x00 }, + {0}, true, "JPEG2000PictureSubDescriptor_J2CLayout" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 384 - 0x01, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "MCALabelSubDescriptor_MCATitle" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 385 - 0x01, 0x05, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "MCALabelSubDescriptor_MCATitleVersion" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 386 - 0x01, 0x05, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "MCALabelSubDescriptor_MCATitleSubVersion" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 387 - 0x01, 0x05, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "MCALabelSubDescriptor_MCAEpisode" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 388 - 0x01, 0x04, 0x01, 0x05, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "MCALabelSubDescriptor_MCAPartitionKind" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 389 - 0x01, 0x04, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00 }, - {0}, false, "MCALabelSubDescriptor_MCAPartitionNumber" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 390 - 0x03, 0x02, 0x01, 0x02, 0x20, 0x00, 0x00, 0x00 }, - {0}, false, "MCALabelSubDescriptor_MCAAudioContentKind" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 391 - 0x03, 0x02, 0x01, 0x02, 0x21, 0x00, 0x00, 0x00 }, - {0}, false, "MCALabelSubDescriptor_MCAAudioElementKind" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 392 - 0x0d, 0x01, 0x03, 0x01, 0x02, 0x0c, 0x03, 0x00 }, - {0}, false, "MXFGCI1FrameWrappedPictureElement" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 393 - 0x0d, 0x01, 0x03, 0x01, 0x02, 0x0c, 0x06, 0x00 }, - {0}, false, "MXFGCP1FrameWrappedPictureElement" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, // 394 - 0x04, 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x00 }, - {0}, false, "TransferCharacteristics_709" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0e, // 395 - 0x04, 0x01, 0x01, 0x01, 0x01, 0x09, 0x00, 0x00 }, - {0}, false, "TransferCharacteristics_2020" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 396 - 0x04, 0x01, 0x01, 0x01, 0x01, 0x08, 0x00, 0x00 }, - {0}, false, "TransferCharacteristics_xvYCC" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 397 - 0x04, 0x01, 0x01, 0x01, 0x01, 0x0a, 0x00, 0x00 }, - {0}, false, "TransferCharacteristics_St2084" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x06, // 398 - 0x04, 0x01, 0x01, 0x01, 0x01, 0x06, 0x00, 0x00 }, - {0}, false, "TransferCharacteristics_linear" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, // 399 - 0x04, 0x01, 0x01, 0x01, 0x02, 0x01, 0x00, 0x00 }, - {0}, false, "CodingEquations_601" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, // 400 - 0x04, 0x01, 0x01, 0x01, 0x02, 0x02, 0x00, 0x00 }, - {0}, false, "CodingEquations_709" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 401 - 0x04, 0x01, 0x01, 0x01, 0x02, 0x06, 0x00, 0x00 }, - {0}, false, "CodingEquations_Rec2020" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x06, // 402 - 0x04, 0x01, 0x01, 0x01, 0x03, 0x03, 0x00, 0x00 }, - {0}, false, "ColorPrimaries_BT709" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0D, // 403 - 0x04, 0x01, 0x01, 0x01, 0x03, 0x04, 0x00, 0x00 }, - {0}, false, "ColorPrimaries_BT2020" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 404 - 0x04, 0x01, 0x01, 0x01, 0x03, 0x06, 0x00, 0x00 }, - {0}, false, "ColorPrimaries_P3D65" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0e, // 405 - 0x04, 0x01, 0x01, 0x01, 0x03, 0x07, 0x00, 0x00 }, - {0}, false, "ColorPrimaries_XYZ" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 406 - 0x04, 0x20, 0x04, 0x01, 0x01, 0x01, 0x00, 0x00 }, - {0}, false, "GenericPictureEssenceDescriptor_MasteringDisplayPrimaries" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 407 - 0x04, 0x20, 0x04, 0x01, 0x01, 0x02, 0x00, 0x00 }, - {0}, false, "GenericPictureEssenceDescriptor_MasteringDisplayWhitePointChromaticity" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 408 - 0x04, 0x20, 0x04, 0x01, 0x01, 0x03, 0x00, 0x00 }, - {0}, false, "GenericPictureEssenceDescriptor_MasteringDisplayMaximumLuminance" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 409 - 0x04, 0x20, 0x04, 0x01, 0x01, 0x04, 0x00, 0x00 }, - {0}, false, "GenericPictureEssenceDescriptor_MasteringDisplayMinimumLuminance" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 410 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x02, 0x00 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_2K_Lossy" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 411 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x03, 0x00 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_4K_Lossy" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 412 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x04, 0x00 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_8K_Lossy" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 413 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x05, 0x00 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_2K_Reversible" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 414 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x06, 0x00 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_4K_Reversible" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 415 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x07, 0x00 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_8K_Reversible" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 416 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x03, 0x03 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_4K_Lossy_1_1" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 417 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x03, 0x05 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_4K_Lossy_2_1" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 418 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x03, 0x07 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_4K_Lossy_3_1" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 419 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x03, 0x09 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_4K_Lossy_4_1" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 420 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x03, 0x0a }, - {0}, false, "JP2KEssenceCompression_IMFProfile_4K_Lossy_4_2" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 421 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x03, 0x0c }, - {0}, false, "JP2KEssenceCompression_IMFProfile_4K_Lossy_5_1" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 422 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x03, 0x0d }, - {0}, false, "JP2KEssenceCompression_IMFProfile_4K_Lossy_5_2" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 423 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x03, 0x0e }, - {0}, false, "JP2KEssenceCompression_IMFProfile_4K_Lossy_5_3" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 424 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x03, 0x10 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_4K_Lossy_6_1" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 425 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x03, 0x11 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_4K_Lossy_6_2" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 426 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x03, 0x12 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_4K_Lossy_6_3" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 427 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x03, 0x13 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_4K_Lossy_6_4" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 428 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x03, 0x15 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_4K_Lossy_7_1" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 429 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x03, 0x16 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_4K_Lossy_7_2" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 430 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x03, 0x17 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_4K_Lossy_7_3" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 431 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x03, 0x18 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_4K_Lossy_7_4" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 432 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x03, 0x19 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_4K_Lossy_7_5" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 433 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x03, 0x1b }, - {0}, false, "JP2KEssenceCompression_IMFProfile_4K_Lossy_8_1" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 434 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x03, 0x1c }, - {0}, false, "JP2KEssenceCompression_IMFProfile_4K_Lossy_8_2" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 435 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x03, 0x1d }, - {0}, false, "JP2KEssenceCompression_IMFProfile_4K_Lossy_8_3" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 436 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x03, 0x1e }, - {0}, false, "JP2KEssenceCompression_IMFProfile_4K_Lossy_8_4" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 437 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x03, 0x1f }, - {0}, false, "JP2KEssenceCompression_IMFProfile_4K_Lossy_8_5" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 438 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x03, 0x20 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_4K_Lossy_8_6" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 439 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x05, 0x02 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_2K_Reversible_1_0" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 440 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x05, 0x04 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_2K_Reversible_2_0" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 441 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x05, 0x06 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_2K_Reversible_3_0" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 442 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x05, 0x08 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_2K_Reversible_4_0" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 443 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x05, 0x0b }, - {0}, false, "JP2KEssenceCompression_IMFProfile_2K_Reversible_5_0" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 444 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x05, 0x0f }, - {0}, false, "JP2KEssenceCompression_IMFProfile_2K_Reversible_6_0" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 445 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x06, 0x02 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_4K_Reversible_1_0" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 446 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x06, 0x04 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_4K_Reversible_2_0" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 447 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x06, 0x06 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_4K_Reversible_3_0" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 448 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x06, 0x08 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_4K_Reversible_4_0" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 449 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x06, 0x0b }, - {0}, false, "JP2KEssenceCompression_IMFProfile_4K_Reversible_5_0" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 450 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x06, 0x0f }, - {0}, false, "JP2KEssenceCompression_IMFProfile_4K_Reversible_6_0" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 451 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x06, 0x14 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_4K_Reversible_7_0" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 452 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x06, 0x1a }, - {0}, false, "JP2KEssenceCompression_IMFProfile_4K_Reversible_8_0" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 453 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x07, 0x02 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_8K_Reversible_1_0" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 454 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x07, 0x04 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_8K_Reversible_2_0" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 455 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x07, 0x06 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_8K_Reversible_3_0" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 456 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x07, 0x08 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_8K_Reversible_4_0" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 457 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x07, 0x0b }, - {0}, false, "JP2KEssenceCompression_IMFProfile_8K_Reversible_5_0" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 458 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x07, 0x0f }, - {0}, false, "JP2KEssenceCompression_IMFProfile_8K_Reversible_6_0" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 459 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x07, 0x14 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_8K_Reversible_7_0" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 460 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x07, 0x1a }, - {0}, false, "JP2KEssenceCompression_IMFProfile_8K_Reversible_8_0" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 461 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x07, 0x21 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_8K_Reversible_9_0" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0d, // 462 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x07, 0x29 }, - {0}, false, "JP2KEssenceCompression_IMFProfile_8K_Reversible_10_0" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0a, // 463 - 0x04, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00 }, - {0}, false, "SMPTE382MDefaultUncompressedSoundCoding" }, - - // protype for generic aux data (IMF) - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x05, // 464 - 0x0e, 0x09, 0x06, 0x07, 0x01, 0x01, 0x10, 0x00 }, - {0}, false, "PIMFDynamicMetadataWrappingFrame" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x02, 0x01, 0x05, // 465 - 0x0e, 0x09, 0x06, 0x07, 0x01, 0x01, 0x11, 0x00 }, - {0}, false, "PIMFDynamicMetadataEssence" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x05, // 466 - 0x0e, 0x09, 0x06, 0x07, 0x01, 0x01, 0x12, 0x00 }, - {0}, false, "PIMFDynamicMetadataDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 467 - 0x0e, 0x09, 0x06, 0x07, 0x01, 0x01, 0x13, 0x00 }, - {0}, false, "PIMFDynamicMetadataDescriptor_GlobalPayloadSID" }, - - { {0}, {0}, false, 0 } - }; + { {0}, {0}, false, 0 } +}; // // end MDD.cpp diff --git a/libasdcp/MDD.h b/libasdcp/MDD.h index 7c8adbd..fe18bee 100644 --- a/libasdcp/MDD.h +++ b/libasdcp/MDD.h @@ -1,5 +1,5 @@ /* -Copyright (c) 2006-2016, John Hurst +Copyright (c) 2006-2015, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -25,7 +25,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file MDD.[h|cpp] - \version $Id: MDD.h,v 1.41 2016/12/10 21:55:07 jhurst Exp $ + \version $Id: MDD.h,v 1.35 2015/01/22 21:05:58 jhurst Exp $ \brief MXF Metadata Dictionary */ @@ -46,7 +46,7 @@ namespace ASDCP { MDD_DescriptiveMetaDataDef, // 8 MDD_WAVWrappingFrame, // 9 MDD_MPEG2_VESWrappingFrame, // 10 - MDD_MXFGCFUFrameWrappedPictureElement, // 11 + MDD_JPEG_2000WrappingFrame, // 11 MDD_JPEG2000Essence, // 12 MDD_MPEG2Essence, // 13 MDD_MXFInterop_CryptEssence, // 14 @@ -416,94 +416,6 @@ namespace ASDCP { MDD_PHDRMetadataTrackSubDescriptor_SourceTrackID, // 378 MDD_PHDRMetadataTrackSubDescriptor_SimplePayloadSID, // 379 MDD_JPEG2000PictureSubDescriptor_J2CLayout, // 380 - MDD_PrivateDCDataWrappingFrame, // 381 - MDD_PrivateDCDataEssence, // 382 - MDD_PrivateDCDataDescriptor, // 383 - MDD_MCALabelSubDescriptor_MCATitle, // 384 - MDD_MCALabelSubDescriptor_MCATitleVersion, // 385 - MDD_MCALabelSubDescriptor_MCATitleSubVersion, // 386 - MDD_MCALabelSubDescriptor_MCAEpisode, // 387 - MDD_MCALabelSubDescriptor_MCAPartitionKind, // 388 - MDD_MCALabelSubDescriptor_MCAPartitionNumber, // 389 - MDD_MCALabelSubDescriptor_MCAAudioContentKind, // 390 - MDD_MCALabelSubDescriptor_MCAAudioElementKind, // 391 - MDD_MXFGCI1FrameWrappedPictureElement, // 392 - MDD_MXFGCP1FrameWrappedPictureElement, // 393 - MDD_TransferCharacteristics_709, // 394 - MDD_TransferCharacteristics_2020, // 395 - MDD_TransferCharacteristics_xvYCC, // 396 - MDD_TransferCharacteristics_St2084, // 397 - MDD_TransferCharacteristics_linear, // 398 - MDD_CodingEquations_601, // 399 - MDD_CodingEquations_709, // 400 - MDD_CodingEquations_Rec2020, // 401 - MDD_ColorPrimaries_BT709, // 402 - MDD_ColorPrimaries_BT2020, // 403 - MDD_ColorPrimaries_P3D65, // 404 - MDD_ColorPrimaries_XYZ, // 405 - MDD_GenericPictureEssenceDescriptor_MasteringDisplayPrimaries, // 406 - MDD_GenericPictureEssenceDescriptor_MasteringDisplayWhitePointChromaticity, // 407 - MDD_GenericPictureEssenceDescriptor_MasteringDisplayMaximumLuminance, // 408 - MDD_GenericPictureEssenceDescriptor_MasteringDisplayMinimumLuminance, // 409 - MDD_JP2KEssenceCompression_IMFProfile_2K_Lossy, // 410 - MDD_JP2KEssenceCompression_IMFProfile_4K_Lossy, // 411 - MDD_JP2KEssenceCompression_IMFProfile_8K_Lossy, // 412 - MDD_JP2KEssenceCompression_IMFProfile_2K_Reversible, // 413 - MDD_JP2KEssenceCompression_IMFProfile_4K_Reversible, // 414 - MDD_JP2KEssenceCompression_IMFProfile_8K_Reversible, // 415 - MDD_JP2KEssenceCompression_IMFProfile_4K_Lossy_1_1, // 416 - MDD_JP2KEssenceCompression_IMFProfile_4K_Lossy_2_1, // 417 - MDD_JP2KEssenceCompression_IMFProfile_4K_Lossy_3_1, // 418 - MDD_JP2KEssenceCompression_IMFProfile_4K_Lossy_4_1, // 419 - MDD_JP2KEssenceCompression_IMFProfile_4K_Lossy_4_2, // 420 - MDD_JP2KEssenceCompression_IMFProfile_4K_Lossy_5_1, // 421 - MDD_JP2KEssenceCompression_IMFProfile_4K_Lossy_5_2, // 422 - MDD_JP2KEssenceCompression_IMFProfile_4K_Lossy_5_3, // 423 - MDD_JP2KEssenceCompression_IMFProfile_4K_Lossy_6_1, // 424 - MDD_JP2KEssenceCompression_IMFProfile_4K_Lossy_6_2, // 425 - MDD_JP2KEssenceCompression_IMFProfile_4K_Lossy_6_3, // 426 - MDD_JP2KEssenceCompression_IMFProfile_4K_Lossy_6_4, // 427 - MDD_JP2KEssenceCompression_IMFProfile_4K_Lossy_7_1, // 428 - MDD_JP2KEssenceCompression_IMFProfile_4K_Lossy_7_2, // 429 - MDD_JP2KEssenceCompression_IMFProfile_4K_Lossy_7_3, // 430 - MDD_JP2KEssenceCompression_IMFProfile_4K_Lossy_7_4, // 431 - MDD_JP2KEssenceCompression_IMFProfile_4K_Lossy_7_5, // 432 - MDD_JP2KEssenceCompression_IMFProfile_4K_Lossy_8_1, // 433 - MDD_JP2KEssenceCompression_IMFProfile_4K_Lossy_8_2, // 434 - MDD_JP2KEssenceCompression_IMFProfile_4K_Lossy_8_3, // 435 - MDD_JP2KEssenceCompression_IMFProfile_4K_Lossy_8_4, // 436 - MDD_JP2KEssenceCompression_IMFProfile_4K_Lossy_8_5, // 437 - MDD_JP2KEssenceCompression_IMFProfile_4K_Lossy_8_6, // 438 - MDD_JP2KEssenceCompression_IMFProfile_2K_Reversible_1_0, // 439 - MDD_JP2KEssenceCompression_IMFProfile_2K_Reversible_2_0, // 440 - MDD_JP2KEssenceCompression_IMFProfile_2K_Reversible_3_0, // 441 - MDD_JP2KEssenceCompression_IMFProfile_2K_Reversible_4_0, // 442 - MDD_JP2KEssenceCompression_IMFProfile_2K_Reversible_5_0, // 443 - MDD_JP2KEssenceCompression_IMFProfile_2K_Reversible_6_0, // 444 - MDD_JP2KEssenceCompression_IMFProfile_4K_Reversible_1_0, // 445 - MDD_JP2KEssenceCompression_IMFProfile_4K_Reversible_2_0, // 446 - MDD_JP2KEssenceCompression_IMFProfile_4K_Reversible_3_0, // 447 - MDD_JP2KEssenceCompression_IMFProfile_4K_Reversible_4_0, // 448 - MDD_JP2KEssenceCompression_IMFProfile_4K_Reversible_5_0, // 449 - MDD_JP2KEssenceCompression_IMFProfile_4K_Reversible_6_0, // 450 - MDD_JP2KEssenceCompression_IMFProfile_4K_Reversible_7_0, // 451 - MDD_JP2KEssenceCompression_IMFProfile_4K_Reversible_8_0, // 452 - MDD_JP2KEssenceCompression_IMFProfile_8K_Reversible_1_0, // 453 - MDD_JP2KEssenceCompression_IMFProfile_8K_Reversible_2_0, // 454 - MDD_JP2KEssenceCompression_IMFProfile_8K_Reversible_3_0, // 455 - MDD_JP2KEssenceCompression_IMFProfile_8K_Reversible_4_0, // 456 - MDD_JP2KEssenceCompression_IMFProfile_8K_Reversible_5_0, // 457 - MDD_JP2KEssenceCompression_IMFProfile_8K_Reversible_6_0, // 458 - MDD_JP2KEssenceCompression_IMFProfile_8K_Reversible_7_0, // 459 - MDD_JP2KEssenceCompression_IMFProfile_8K_Reversible_8_0, // 460 - MDD_JP2KEssenceCompression_IMFProfile_8K_Reversible_9_0, // 461 - MDD_JP2KEssenceCompression_IMFProfile_8K_Reversible_10_0, // 462 - MDD_SMPTE382MDefaultUncompressedSoundCoding, // 463 - MDD_PIMFDynamicMetadataWrappingFrame, // 464 - MDD_PIMFDynamicMetadataEssence, // 465 - MDD_PIMFDynamicMetadataDescriptor, // 466 - MDD_PIMFDynamicMetadataDescriptor_GlobalPayloadSID, // 467 - MDD_Max }; // enum MDD_t diff --git a/libasdcp/MXF.cpp b/libasdcp/MXF.cpp index a3d024d..cc84797 100644 --- a/libasdcp/MXF.cpp +++ b/libasdcp/MXF.cpp @@ -25,7 +25,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file MXF.cpp - \version $Id: MXF.cpp,v 1.81 2016/06/28 22:00:06 jhurst Exp $ + \version $Id: MXF.cpp,v 1.79 2015/10/12 15:30:46 jhurst Exp $ \brief MXF objects */ @@ -575,7 +575,7 @@ ASDCP::MXF::Primer::Dump(FILE* stream) Batch::iterator i = LocalTagEntryBatch.begin(); for ( ; i != LocalTagEntryBatch.end(); i++ ) { - const MDDEntry* Entry = m_Dict->FindULAnyVersion((*i).UL.Value()); + const MDDEntry* Entry = m_Dict->FindUL((*i).UL.Value()); fprintf(stream, " %s %s\n", (*i).EncodeString(identbuf, IdentBufferLen), (Entry ? Entry->name : "Unknown")); } } @@ -702,11 +702,11 @@ ASDCP::MXF::OP1aHeader::InitFromFile(const Kumu::FileReader& Reader) if ( m_Dict == &DefaultCompositeDict() ) { // select more explicit dictionary if one is available - if ( OperationalPattern.MatchExact(MXFInterop_OPAtom_Entry().ul) ) + if ( OperationalPattern.ExactMatch(MXFInterop_OPAtom_Entry().ul) ) { m_Dict = &DefaultInteropDict(); } - else if ( OperationalPattern.MatchExact(SMPTE_390_OPAtom_Entry().ul) ) + else if ( OperationalPattern.ExactMatch(SMPTE_390_OPAtom_Entry().ul) ) { m_Dict = &DefaultSMPTEDict(); } @@ -1216,16 +1216,8 @@ ASDCP::MXF::OPAtomIndexFooter::Lookup(ui32_t frame_num, IndexTableSegment::Index { ui64_t tmp = frame_num - start_pos; assert(tmp <= 0xFFFFFFFFL); - - if ( tmp < segment->IndexEntryArray.size() ) - { - Entry = segment->IndexEntryArray[(ui32_t) tmp]; - return RESULT_OK; - } - else - { - DefaultLogSink().Error("Malformed index table segment, IndexDuration does not match entries.\n"); - } + Entry = segment->IndexEntryArray[(ui32_t) tmp]; + return RESULT_OK; } } } diff --git a/libasdcp/MXF.h b/libasdcp/MXF.h index 9b83dc1..93a4dbb 100644 --- a/libasdcp/MXF.h +++ b/libasdcp/MXF.h @@ -25,7 +25,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file MXF.h - \version $Id: MXF.h,v 1.58 2016/03/09 20:05:26 jhurst Exp $ + \version $Id: MXF.h,v 1.57 2015/10/10 20:26:29 jhurst Exp $ \brief MXF objects */ @@ -185,17 +185,7 @@ namespace ASDCP LocalTagEntry(const TagValue& tag, ASDCP::UL& ul) : Tag(tag), UL(ul) {} bool operator<(const LocalTagEntry& rhs) const { - if ( Tag.a < rhs.Tag.a ) - { - return true; - } - - if ( Tag.a == rhs.Tag.a && Tag.b < rhs.Tag.b ) - { - return true; - } - - return false; + return ( ( Tag.a < rhs.Tag.a ) || ( Tag.b < rhs.Tag.b ) ); } inline const char* EncodeString(char* str_buf, ui32_t buf_len) const { diff --git a/libasdcp/MXFTypes.cpp b/libasdcp/MXFTypes.cpp index d5c55f1..39a2521 100644 --- a/libasdcp/MXFTypes.cpp +++ b/libasdcp/MXFTypes.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2005-2016, John Hurst +Copyright (c) 2005-2015, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -25,7 +25,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file MXFTypes.cpp - \version $Id: MXFTypes.cpp,v 1.36 2016/12/02 17:23:14 jhurst Exp $ + \version $Id: MXFTypes.cpp,v 1.33 2015/10/12 15:30:46 jhurst Exp $ \brief MXF objects */ @@ -93,7 +93,7 @@ ASDCP::UL::MatchIgnoreStream(const UL& rhs) const // bool -ASDCP::UL::MatchExact(const UL& rhs) const +ASDCP::UL::ExactMatch(const UL& rhs) const { if ( m_Value[0] == rhs.m_Value[0] && m_Value[1] == rhs.m_Value[1] && @@ -561,7 +561,7 @@ ASDCP::MXF::TLVWriter::WriteTag(const MDDEntry& Entry) { if ( m_Lookup == 0 ) { - DefaultLogSink().Error("No Primer object available.\n"); + DefaultLogSink().Error("No Primer object available\n"); return RESULT_FAIL; } diff --git a/libasdcp/MXFTypes.h b/libasdcp/MXFTypes.h index 3f0396a..19f97c3 100644 --- a/libasdcp/MXFTypes.h +++ b/libasdcp/MXFTypes.h @@ -1,5 +1,5 @@ /* -Copyright (c) 2005-2016, John Hurst +Copyright (c) 2005-2015, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -25,7 +25,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file MXFTypes.h - \version $Id: MXFTypes.h,v 1.42 2016/12/10 19:57:45 jhurst Exp $ + \version $Id: MXFTypes.h,v 1.38 2015/10/12 15:30:46 jhurst Exp $ \brief MXF objects */ @@ -65,10 +65,10 @@ namespace ASDCP TLVReader(); ASDCP_NO_COPY_CONSTRUCT(TLVReader); + bool FindTL(const MDDEntry&); public: TLVReader(const byte_t* p, ui32_t c, IPrimerLookup* = 0); - bool FindTL(const MDDEntry&); Result_t ReadObject(const MDDEntry&, Kumu::IArchive*); Result_t ReadUi8(const MDDEntry&, ui8_t*); Result_t ReadUi16(const MDDEntry&, ui16_t*); @@ -352,157 +352,6 @@ namespace ASDCP } }; - // - class LineMapPair : public Kumu::IArchive - { - public: - ui32_t First; - ui32_t Second; - - LineMapPair() {} - ~LineMapPair() {} - - LineMapPair(const ui32_t& first, const ui32_t& second) : IArchive() { - First = first; - Second = second; - } - - LineMapPair(const LineMapPair& rhs) : IArchive() { - First = rhs.First; - Second = rhs.Second; - } - - const LineMapPair& operator=(const LineMapPair& rhs) { - First = rhs.First; - Second = rhs.Second; - return *this; - } - - // - inline const char* EncodeString(char* str_buf, ui32_t buf_len) const { - snprintf(str_buf, buf_len, "%d,%d", First, Second); - return str_buf; - } - - inline virtual bool Unarchive(Kumu::MemIOReader* Reader) { - ui32_t n; - if ( ! Reader->ReadUi32BE(&n) ) return false; - if ( n != 2 ) return false; - if ( ! Reader->ReadUi32BE(&n) ) return false; - if ( n != 4 ) return false; - if ( ! Reader->ReadUi32BE((ui32_t*)&First) ) return false; - if ( ! Reader->ReadUi32BE((ui32_t*)&Second) ) return false; - return true; - } - - inline virtual bool HasValue() const { return true; } - inline virtual ui32_t ArchiveLength() const { return sizeof(ui32_t)*4; } - - inline virtual bool Archive(Kumu::MemIOWriter* Writer) const { - if ( ! Writer->WriteUi32BE(2UL) ) return false; - if ( ! Writer->WriteUi32BE(4UL) ) return false; - if ( ! Writer->WriteUi32BE((ui32_t)First) ) return false; - if ( ! Writer->WriteUi32BE((ui32_t)Second) ) return false; - return true; - } - }; - - // - class ColorPrimary : public Kumu::IArchive - { - public: - ui16_t X; - ui16_t Y; - - ColorPrimary() : X(0), Y(0) {} - ~ColorPrimary() {} - - ColorPrimary(const ui16_t& x, const ui16_t& y) : X(x), Y(y) {} - - ColorPrimary(const ColorPrimary& rhs) { Copy(rhs); } - const ColorPrimary& operator=(const ColorPrimary& rhs) { Copy(rhs); return *this; } - - void Copy(const ColorPrimary& rhs) { - X = rhs.X; - Y = rhs.Y; - } - - // - inline const char* EncodeString(char* str_buf, ui32_t buf_len) const { - snprintf(str_buf, buf_len, "%d,%d", X, Y); - return str_buf; - } - - inline virtual bool Unarchive(Kumu::MemIOReader* Reader) { - if ( ! Reader->ReadUi16BE((ui16_t*)&X) ) return false; - if ( ! Reader->ReadUi16BE((ui16_t*)&Y) ) return false; - return true; - } - - inline virtual bool HasValue() const { return X || Y; } - inline virtual ui32_t ArchiveLength() const { return sizeof(ui16_t)*2; } - - inline virtual bool Archive(Kumu::MemIOWriter* Writer) const { - if ( ! Writer->WriteUi16BE((ui16_t)X) ) return false; - if ( ! Writer->WriteUi16BE((ui16_t)Y) ) return false; - return true; - } - }; - - // - class ThreeColorPrimaries : public Kumu::IArchive - { - public: - ColorPrimary First; - ColorPrimary Second; - ColorPrimary Third; - - ThreeColorPrimaries() {} - ~ThreeColorPrimaries() {} - - ThreeColorPrimaries(const ColorPrimary& first, const ColorPrimary& second, const ColorPrimary& third) : - First(first), Second(second), Third(third) {} - - ThreeColorPrimaries(const ThreeColorPrimaries& rhs) { Copy(rhs); } - const ThreeColorPrimaries& operator=(const ThreeColorPrimaries& rhs) { Copy(rhs); return *this; } - - void Copy(const ThreeColorPrimaries& rhs) { - First = rhs.First; - Second = rhs.Second; - Third = rhs.Third; - } - - // - inline const char* EncodeString(char* str_buf, ui32_t buf_len) const { - snprintf(str_buf, buf_len, "%d,%d;%d,%d;%d,%d", First.X, First.Y, Second.X, Second.Y, Third.X, Third.Y); - return str_buf; - } - - inline virtual bool Unarchive(Kumu::MemIOReader* Reader) { - First.Unarchive(Reader); - Second.Unarchive(Reader); - Third.Unarchive(Reader); - return true; - } - - inline virtual bool HasValue() const { - return First.HasValue() || Second.HasValue() || Third.HasValue(); - } - - inline virtual ui32_t ArchiveLength() const { - return First.ArchiveLength() - + Second.ArchiveLength() - + Third.ArchiveLength(); - } - - inline virtual bool Archive(Kumu::MemIOWriter* Writer) const { - First.Archive(Writer); - Second.Archive(Writer); - Third.Archive(Writer); - return true; - } - }; - // class VersionType : public Kumu::IArchive { diff --git a/libasdcp/Metadata.cpp b/libasdcp/Metadata.cpp index 5821656..2b25503 100644 --- a/libasdcp/Metadata.cpp +++ b/libasdcp/Metadata.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2005-2017, John Hurst +Copyright (c) 2005-2015, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -25,7 +25,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file Metadata.cpp - \version $Id: Metadata.cpp,v 1.45 2016/12/10 19:57:45 jhurst Exp $ + \version $Id: Metadata.cpp,v 1.40 2015/10/10 20:26:29 jhurst Exp $ \brief AS-DCP library, MXF Metadata Sets implementation */ @@ -75,10 +75,8 @@ static InterchangeObject* AudioChannelLabelSubDescriptor_Factory(const Dictionar 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* PHDRMetadataTrackSubDescriptor_Factory(const Dictionary*& Dict) { return new PHDRMetadataTrackSubDescriptor(Dict); } -static InterchangeObject* PIMFDynamicMetadataDescriptor_Factory(const Dictionary*& Dict) { return new PIMFDynamicMetadataDescriptor(Dict); } void @@ -120,10 +118,8 @@ ASDCP::MXF::Metadata_InitTypes(const Dictionary*& Dict) SetObjectFactory(Dict->ul(MDD_SoundfieldGroupLabelSubDescriptor), SoundfieldGroupLabelSubDescriptor_Factory); SetObjectFactory(Dict->ul(MDD_GroupOfSoundfieldGroupsLabelSubDescriptor), GroupOfSoundfieldGroupsLabelSubDescriptor_Factory); SetObjectFactory(Dict->ul(MDD_DCDataDescriptor), DCDataDescriptor_Factory); - SetObjectFactory(Dict->ul(MDD_PrivateDCDataDescriptor), PrivateDCDataDescriptor_Factory); SetObjectFactory(Dict->ul(MDD_DolbyAtmosSubDescriptor), DolbyAtmosSubDescriptor_Factory); SetObjectFactory(Dict->ul(MDD_PHDRMetadataTrackSubDescriptor), PHDRMetadataTrackSubDescriptor_Factory); - SetObjectFactory(Dict->ul(MDD_PIMFDynamicMetadataDescriptor), PIMFDynamicMetadataDescriptor_Factory); } //------------------------------------------------------------------------------------------ @@ -329,7 +325,7 @@ ContentStorage::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -EssenceContainerData::EssenceContainerData(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), BodySID(0) +EssenceContainerData::EssenceContainerData(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), IndexSID(0) { assert(m_Dict); m_UL = m_Dict->ul(MDD_EssenceContainerData); @@ -875,7 +871,7 @@ Track::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // StructuralComponent // -StructuralComponent::StructuralComponent(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) {} +StructuralComponent::StructuralComponent(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), Duration(0) {} StructuralComponent::StructuralComponent(const StructuralComponent& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) { @@ -1243,7 +1239,7 @@ GenericDescriptor::Dump(FILE* stream) // -FileDescriptor::FileDescriptor(const Dictionary*& d) : GenericDescriptor(d), m_Dict(d) +FileDescriptor::FileDescriptor(const Dictionary*& d) : GenericDescriptor(d), m_Dict(d), LinkedTrackID(0) { assert(m_Dict); m_UL = m_Dict->ul(MDD_FileDescriptor); @@ -1349,7 +1345,7 @@ 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), m_Dict(d), Locked(0), AudioRefLevel(0), ChannelCount(0), QuantizationBits(0), DialNorm(0) { assert(m_Dict); m_UL = m_Dict->ul(MDD_GenericSoundEssenceDescriptor); @@ -1467,7 +1463,7 @@ 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), m_Dict(d), BlockAlign(0), SequenceOffset(0) { assert(m_Dict); m_UL = m_Dict->ul(MDD_WaveAudioDescriptor); @@ -1582,7 +1578,7 @@ 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), m_Dict(d), SignalStandard(0), SampledWidth(0), SampledXOffset(0), DisplayHeight(0), DisplayXOffset(0), DisplayF2Offset(0), AlphaTransparency(0), ImageAlignmentOffset(0), ImageEndOffset(0), ActiveHeight(0), ActiveYOffset(0) { assert(m_Dict); m_UL = m_Dict->ul(MDD_GenericPictureEssenceDescriptor); @@ -1706,26 +1702,6 @@ GenericPictureEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet) result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveYOffset)); ActiveYOffset.set_has_value( result == RESULT_OK ); } - if ( ASDCP_SUCCESS(result) ) { - result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, VideoLineMap)); - VideoLineMap.set_has_value( result == RESULT_OK ); - } - if ( ASDCP_SUCCESS(result) ) { - result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayPrimaries)); - MasteringDisplayPrimaries.set_has_value( result == RESULT_OK ); - } - if ( ASDCP_SUCCESS(result) ) { - result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayWhitePointChromaticity)); - MasteringDisplayWhitePointChromaticity.set_has_value( result == RESULT_OK ); - } - if ( ASDCP_SUCCESS(result) ) { - result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayMaximumLuminance)); - MasteringDisplayMaximumLuminance.set_has_value( result == RESULT_OK ); - } - if ( ASDCP_SUCCESS(result) ) { - result = TLVSet.ReadUi32(OBJ_READ_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayMinimumLuminance)); - MasteringDisplayMinimumLuminance.set_has_value( result == RESULT_OK ); - } return result; } @@ -1765,11 +1741,6 @@ GenericPictureEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet) if ( ASDCP_SUCCESS(result) && ! ActiveHeight.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveHeight)); if ( ASDCP_SUCCESS(result) && ! ActiveXOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveXOffset)); if ( ASDCP_SUCCESS(result) && ! ActiveYOffset.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, ActiveYOffset)); - if ( ASDCP_SUCCESS(result) && ! VideoLineMap.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, VideoLineMap)); - if ( ASDCP_SUCCESS(result) && ! MasteringDisplayPrimaries.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayPrimaries)); - if ( ASDCP_SUCCESS(result) && ! MasteringDisplayWhitePointChromaticity.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayWhitePointChromaticity)); - if ( ASDCP_SUCCESS(result) && ! MasteringDisplayMaximumLuminance.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayMaximumLuminance)); - if ( ASDCP_SUCCESS(result) && ! MasteringDisplayMinimumLuminance.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(GenericPictureEssenceDescriptor, MasteringDisplayMinimumLuminance)); return result; } @@ -1808,11 +1779,6 @@ GenericPictureEssenceDescriptor::Copy(const GenericPictureEssenceDescriptor& rhs ActiveHeight = rhs.ActiveHeight; ActiveXOffset = rhs.ActiveXOffset; ActiveYOffset = rhs.ActiveYOffset; - VideoLineMap = rhs.VideoLineMap; - MasteringDisplayPrimaries = rhs.MasteringDisplayPrimaries; - MasteringDisplayWhitePointChromaticity = rhs.MasteringDisplayWhitePointChromaticity; - MasteringDisplayMaximumLuminance = rhs.MasteringDisplayMaximumLuminance; - MasteringDisplayMinimumLuminance = rhs.MasteringDisplayMinimumLuminance; } // @@ -1907,21 +1873,6 @@ GenericPictureEssenceDescriptor::Dump(FILE* stream) if ( ! ActiveYOffset.empty() ) { fprintf(stream, " %22s = %d\n", "ActiveYOffset", ActiveYOffset.get()); } - if ( ! VideoLineMap.empty() ) { - fprintf(stream, " %22s = %s\n", "VideoLineMap", VideoLineMap.get().EncodeString(identbuf, IdentBufferLen)); - } - if ( ! MasteringDisplayPrimaries.empty() ) { - fprintf(stream, " %22s = %s\n", "MasteringDisplayPrimaries", MasteringDisplayPrimaries.get().EncodeString(identbuf, IdentBufferLen)); - } - if ( ! MasteringDisplayWhitePointChromaticity.empty() ) { - fprintf(stream, " %22s = %s\n", "MasteringDisplayWhitePointChromaticity", MasteringDisplayWhitePointChromaticity.get().EncodeString(identbuf, IdentBufferLen)); - } - if ( ! MasteringDisplayMaximumLuminance.empty() ) { - fprintf(stream, " %22s = %d\n", "MasteringDisplayMaximumLuminance", MasteringDisplayMaximumLuminance.get()); - } - if ( ! MasteringDisplayMinimumLuminance.empty() ) { - fprintf(stream, " %22s = %d\n", "MasteringDisplayMinimumLuminance", MasteringDisplayMinimumLuminance.get()); - } } // @@ -1943,7 +1894,7 @@ GenericPictureEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -RGBAEssenceDescriptor::RGBAEssenceDescriptor(const Dictionary*& d) : GenericPictureEssenceDescriptor(d), m_Dict(d) +RGBAEssenceDescriptor::RGBAEssenceDescriptor(const Dictionary*& d) : GenericPictureEssenceDescriptor(d), m_Dict(d), ComponentMaxRef(0), AlphaMinRef(0), ScanningDirection(0) { assert(m_Dict); m_UL = m_Dict->ul(MDD_RGBAEssenceDescriptor); @@ -1983,7 +1934,6 @@ RGBAEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet) result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(RGBAEssenceDescriptor, ScanningDirection)); ScanningDirection.set_has_value( result == RESULT_OK ); } - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(RGBAEssenceDescriptor, PixelLayout)); return result; } @@ -1998,7 +1948,6 @@ RGBAEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet) if ( ASDCP_SUCCESS(result) && ! AlphaMinRef.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(RGBAEssenceDescriptor, AlphaMinRef)); if ( ASDCP_SUCCESS(result) && ! AlphaMaxRef.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(RGBAEssenceDescriptor, AlphaMaxRef)); if ( ASDCP_SUCCESS(result) && ! ScanningDirection.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(RGBAEssenceDescriptor, ScanningDirection)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(RGBAEssenceDescriptor, PixelLayout)); return result; } @@ -2012,7 +1961,6 @@ RGBAEssenceDescriptor::Copy(const RGBAEssenceDescriptor& rhs) AlphaMinRef = rhs.AlphaMinRef; AlphaMaxRef = rhs.AlphaMaxRef; ScanningDirection = rhs.ScanningDirection; - PixelLayout = rhs.PixelLayout; } // @@ -2041,7 +1989,6 @@ RGBAEssenceDescriptor::Dump(FILE* stream) if ( ! ScanningDirection.empty() ) { fprintf(stream, " %22s = %d\n", "ScanningDirection", ScanningDirection.get()); } - fprintf(stream, " %22s = %s\n", "PixelLayout", PixelLayout.EncodeString(identbuf, IdentBufferLen)); } // @@ -2210,7 +2157,7 @@ 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), m_Dict(d), ComponentDepth(0), HorizontalSubsampling(0), VerticalSubsampling(0), ReversedByteOrder(0), AlphaSampleDepth(0), WhiteReflevel(0) { assert(m_Dict); m_UL = m_Dict->ul(MDD_CDCIEssenceDescriptor); @@ -2361,7 +2308,7 @@ CDCIEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) // -MPEG2VideoDescriptor::MPEG2VideoDescriptor(const Dictionary*& d) : CDCIEssenceDescriptor(d), m_Dict(d) +MPEG2VideoDescriptor::MPEG2VideoDescriptor(const Dictionary*& d) : CDCIEssenceDescriptor(d), m_Dict(d), SingleSequence(0), CodedContentType(0), ClosedGOP(0), MaxGOP(0), BitRate(0) { assert(m_Dict); m_UL = m_Dict->ul(MDD_MPEG2VideoDescriptor); @@ -3281,38 +3228,6 @@ MCALabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet) result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, RFC5646SpokenLanguage)); RFC5646SpokenLanguage.set_has_value( result == RESULT_OK ); } - if ( ASDCP_SUCCESS(result) ) { - result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCATitle)); - MCATitle.set_has_value( result == RESULT_OK ); - } - if ( ASDCP_SUCCESS(result) ) { - result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCATitleVersion)); - MCATitleVersion.set_has_value( result == RESULT_OK ); - } - if ( ASDCP_SUCCESS(result) ) { - result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCATitleSubVersion)); - MCATitleSubVersion.set_has_value( result == RESULT_OK ); - } - if ( ASDCP_SUCCESS(result) ) { - result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAEpisode)); - MCAEpisode.set_has_value( result == RESULT_OK ); - } - if ( ASDCP_SUCCESS(result) ) { - result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAPartitionKind)); - MCAPartitionKind.set_has_value( result == RESULT_OK ); - } - if ( ASDCP_SUCCESS(result) ) { - result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAPartitionNumber)); - MCAPartitionNumber.set_has_value( result == RESULT_OK ); - } - if ( ASDCP_SUCCESS(result) ) { - result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAAudioContentKind)); - MCAAudioContentKind.set_has_value( result == RESULT_OK ); - } - if ( ASDCP_SUCCESS(result) ) { - result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(MCALabelSubDescriptor, MCAAudioElementKind)); - MCAAudioElementKind.set_has_value( result == RESULT_OK ); - } return result; } @@ -3328,14 +3243,6 @@ MCALabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet) if ( ASDCP_SUCCESS(result) && ! MCATagName.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCATagName)); if ( ASDCP_SUCCESS(result) && ! MCAChannelID.empty() ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAChannelID)); if ( ASDCP_SUCCESS(result) && ! RFC5646SpokenLanguage.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, RFC5646SpokenLanguage)); - if ( ASDCP_SUCCESS(result) && ! MCATitle.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCATitle)); - if ( ASDCP_SUCCESS(result) && ! MCATitleVersion.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCATitleVersion)); - if ( ASDCP_SUCCESS(result) && ! MCATitleSubVersion.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCATitleSubVersion)); - if ( ASDCP_SUCCESS(result) && ! MCAEpisode.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAEpisode)); - if ( ASDCP_SUCCESS(result) && ! MCAPartitionKind.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAPartitionKind)); - if ( ASDCP_SUCCESS(result) && ! MCAPartitionNumber.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAPartitionNumber)); - if ( ASDCP_SUCCESS(result) && ! MCAAudioContentKind.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAAudioContentKind)); - if ( ASDCP_SUCCESS(result) && ! MCAAudioElementKind.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(MCALabelSubDescriptor, MCAAudioElementKind)); return result; } @@ -3350,14 +3257,6 @@ MCALabelSubDescriptor::Copy(const MCALabelSubDescriptor& rhs) MCATagName = rhs.MCATagName; MCAChannelID = rhs.MCAChannelID; RFC5646SpokenLanguage = rhs.RFC5646SpokenLanguage; - MCATitle = rhs.MCATitle; - MCATitleVersion = rhs.MCATitleVersion; - MCATitleSubVersion = rhs.MCATitleSubVersion; - MCAEpisode = rhs.MCAEpisode; - MCAPartitionKind = rhs.MCAPartitionKind; - MCAPartitionNumber = rhs.MCAPartitionNumber; - MCAAudioContentKind = rhs.MCAAudioContentKind; - MCAAudioElementKind = rhs.MCAAudioElementKind; } // @@ -3383,30 +3282,6 @@ MCALabelSubDescriptor::Dump(FILE* stream) if ( ! RFC5646SpokenLanguage.empty() ) { fprintf(stream, " %22s = %s\n", "RFC5646SpokenLanguage", RFC5646SpokenLanguage.get().EncodeString(identbuf, IdentBufferLen)); } - if ( ! MCATitle.empty() ) { - fprintf(stream, " %22s = %s\n", "MCATitle", MCATitle.get().EncodeString(identbuf, IdentBufferLen)); - } - if ( ! MCATitleVersion.empty() ) { - fprintf(stream, " %22s = %s\n", "MCATitleVersion", MCATitleVersion.get().EncodeString(identbuf, IdentBufferLen)); - } - if ( ! MCATitleSubVersion.empty() ) { - fprintf(stream, " %22s = %s\n", "MCATitleSubVersion", MCATitleSubVersion.get().EncodeString(identbuf, IdentBufferLen)); - } - if ( ! MCAEpisode.empty() ) { - fprintf(stream, " %22s = %s\n", "MCAEpisode", MCAEpisode.get().EncodeString(identbuf, IdentBufferLen)); - } - if ( ! MCAPartitionKind.empty() ) { - fprintf(stream, " %22s = %s\n", "MCAPartitionKind", MCAPartitionKind.get().EncodeString(identbuf, IdentBufferLen)); - } - if ( ! MCAPartitionNumber.empty() ) { - fprintf(stream, " %22s = %s\n", "MCAPartitionNumber", MCAPartitionNumber.get().EncodeString(identbuf, IdentBufferLen)); - } - if ( ! MCAAudioContentKind.empty() ) { - fprintf(stream, " %22s = %s\n", "MCAAudioContentKind", MCAAudioContentKind.get().EncodeString(identbuf, IdentBufferLen)); - } - if ( ! MCAAudioElementKind.empty() ) { - fprintf(stream, " %22s = %s\n", "MCAAudioElementKind", MCAAudioElementKind.get().EncodeString(identbuf, IdentBufferLen)); - } } // @@ -3725,77 +3600,6 @@ DCDataDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) return InterchangeObject::WriteToBuffer(Buffer); } -//------------------------------------------------------------------------------------------ -// PrivateDCDataDescriptor - -// - -PrivateDCDataDescriptor::PrivateDCDataDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(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) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_PrivateDCDataDescriptor); - Copy(rhs); -} - - -// -ASDCP::Result_t -PrivateDCDataDescriptor::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet); - return result; -} - -// -ASDCP::Result_t -PrivateDCDataDescriptor::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet); - return result; -} - -// -void -PrivateDCDataDescriptor::Copy(const PrivateDCDataDescriptor& rhs) -{ - GenericDataEssenceDescriptor::Copy(rhs); -} - -// -void -PrivateDCDataDescriptor::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - GenericDataEssenceDescriptor::Dump(stream); -} - -// -ASDCP::Result_t -PrivateDCDataDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) -{ - return InterchangeObject::InitFromBuffer(p, l); -} - -// -ASDCP::Result_t -PrivateDCDataDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return InterchangeObject::WriteToBuffer(Buffer); -} - //------------------------------------------------------------------------------------------ // DolbyAtmosSubDescriptor @@ -3970,81 +3774,6 @@ PHDRMetadataTrackSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) return InterchangeObject::WriteToBuffer(Buffer); } -//------------------------------------------------------------------------------------------ -// PIMFDynamicMetadataDescriptor - -// - -PIMFDynamicMetadataDescriptor::PIMFDynamicMetadataDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(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) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_PIMFDynamicMetadataDescriptor); - Copy(rhs); -} - - -// -ASDCP::Result_t -PIMFDynamicMetadataDescriptor::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(PIMFDynamicMetadataDescriptor, GlobalPayloadSID)); - return result; -} - -// -ASDCP::Result_t -PIMFDynamicMetadataDescriptor::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(PIMFDynamicMetadataDescriptor, GlobalPayloadSID)); - return result; -} - -// -void -PIMFDynamicMetadataDescriptor::Copy(const PIMFDynamicMetadataDescriptor& rhs) -{ - GenericDataEssenceDescriptor::Copy(rhs); - GlobalPayloadSID = rhs.GlobalPayloadSID; -} - -// -void -PIMFDynamicMetadataDescriptor::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - GenericDataEssenceDescriptor::Dump(stream); - fprintf(stream, " %22s = %d\n", "GlobalPayloadSID", GlobalPayloadSID); -} - -// -ASDCP::Result_t -PIMFDynamicMetadataDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) -{ - return InterchangeObject::InitFromBuffer(p, l); -} - -// -ASDCP::Result_t -PIMFDynamicMetadataDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return InterchangeObject::WriteToBuffer(Buffer); -} - // // end Metadata.cpp // diff --git a/libasdcp/Metadata.h b/libasdcp/Metadata.h index 43cc969..3faa406 100644 --- a/libasdcp/Metadata.h +++ b/libasdcp/Metadata.h @@ -1,5 +1,5 @@ /* -Copyright (c) 2005-2017, John Hurst +Copyright (c) 2005-2015, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -25,7 +25,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file Metadata.h - \version $Id: Metadata.h,v 1.44 2016/12/10 19:57:45 jhurst Exp $ + \version $Id: Metadata.h,v 1.39 2015/10/10 20:26:29 jhurst Exp $ \brief MXF metadata objects */ @@ -502,11 +502,6 @@ namespace ASDCP optional_property ActiveHeight; optional_property ActiveXOffset; optional_property ActiveYOffset; - optional_property VideoLineMap; - optional_property MasteringDisplayPrimaries; - optional_property MasteringDisplayWhitePointChromaticity; - optional_property MasteringDisplayMaximumLuminance; - optional_property MasteringDisplayMinimumLuminance; GenericPictureEssenceDescriptor(const Dictionary*& d); GenericPictureEssenceDescriptor(const GenericPictureEssenceDescriptor& rhs); @@ -534,7 +529,6 @@ namespace ASDCP optional_property AlphaMinRef; optional_property AlphaMaxRef; optional_property ScanningDirection; - RGBALayout PixelLayout; RGBAEssenceDescriptor(const Dictionary*& d); RGBAEssenceDescriptor(const RGBAEssenceDescriptor& rhs); @@ -881,14 +875,6 @@ namespace ASDCP optional_property MCATagName; optional_property MCAChannelID; optional_property RFC5646SpokenLanguage; - optional_property MCATitle; - optional_property MCATitleVersion; - optional_property MCATitleSubVersion; - optional_property MCAEpisode; - optional_property MCAPartitionKind; - optional_property MCAPartitionNumber; - optional_property MCAAudioContentKind; - optional_property MCAAudioElementKind; MCALabelSubDescriptor(const Dictionary*& d); MCALabelSubDescriptor(const MCALabelSubDescriptor& rhs); @@ -994,28 +980,6 @@ namespace ASDCP virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); }; - // - class PrivateDCDataDescriptor : public GenericDataEssenceDescriptor - { - PrivateDCDataDescriptor(); - - public: - const Dictionary*& m_Dict; - - 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 const char* HasName() { return "PrivateDCDataDescriptor"; } - 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 DolbyAtmosSubDescriptor : public InterchangeObject { @@ -1068,29 +1032,6 @@ namespace ASDCP virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); }; - // - class PIMFDynamicMetadataDescriptor : public GenericDataEssenceDescriptor - { - PIMFDynamicMetadataDescriptor(); - - public: - const Dictionary*& m_Dict; - ui32_t GlobalPayloadSID; - - 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 const char* HasName() { return "PIMFDynamicMetadataDescriptor"; } - 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 diff --git a/libasdcp/PCMParserList.cpp b/libasdcp/PCMParserList.cpp index 7bbda64..ee5dd3e 100644 --- a/libasdcp/PCMParserList.cpp +++ b/libasdcp/PCMParserList.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2004-2016, John Hurst +Copyright (c) 2004-2015, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -25,7 +25,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file PCMParserList.cpp - \version $Id: PCMParserList.cpp,v 1.13 2016/03/09 20:05:26 jhurst Exp $ + \version $Id: PCMParserList.cpp,v 1.12 2015/02/19 19:06:57 jhurst Exp $ \brief Read WAV file(s), multiplex multiple PCM frame buffers into one */ @@ -300,20 +300,6 @@ ASDCP::PCMParserList::ReadFrame(PCM::FrameBuffer& OutFB) return result; } -// -ASDCP::Result_t ASDCP::PCMParserList::Seek(ui32_t frame_number) -{ - Result_t result = RESULT_OK; - PCMParserList::iterator self_i; - - for( self_i = begin(); self_i != end() && ASDCP_SUCCESS(result); self_i++ ) - { - result = (*self_i)->Parser.Seek(frame_number); - } - - return result; -} - // // end PCMParserList.cpp // diff --git a/libasdcp/PCMParserList.h b/libasdcp/PCMParserList.h index 5c49a06..7112269 100644 --- a/libasdcp/PCMParserList.h +++ b/libasdcp/PCMParserList.h @@ -1,5 +1,5 @@ /* -Copyright (c) 2004-2016, John Hurst +Copyright (c) 2004-2013, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -25,7 +25,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file PCMParserList.h - \version $Id: PCMParserList.h,v 1.6 2016/03/09 20:05:26 jhurst Exp $ + \version $Id: PCMParserList.h,v 1.5 2014/01/02 23:29:22 jhurst Exp $ \brief Read WAV file(s), multiplex multiple PCM frame buffers into one */ @@ -78,7 +78,6 @@ namespace ASDCP Result_t FillAudioDescriptor(PCM::AudioDescriptor& ADesc) const; Result_t Reset(); Result_t ReadFrame(PCM::FrameBuffer& OutFB); - Result_t Seek(ui32_t frame_number); }; } diff --git a/libasdcp/PCM_Parser.cpp b/libasdcp/PCM_Parser.cpp index 33b7937..c5f743f 100644 --- a/libasdcp/PCM_Parser.cpp +++ b/libasdcp/PCM_Parser.cpp @@ -25,7 +25,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file PCM_Parser.cpp - \version $Id: PCM_Parser.cpp,v 1.11 2016/03/09 20:05:26 jhurst Exp $ + \version $Id: PCM_Parser.cpp,v 1.10 2015/02/19 19:06:57 jhurst Exp $ \brief AS-DCP library, PCM raw essence reader implementation */ @@ -73,7 +73,6 @@ class ASDCP::PCM::WAVParser::h__WAVParser void Close(); void Reset(); Result_t ReadFrame(FrameBuffer&); - Result_t Seek(ui32_t frame_number); }; @@ -197,14 +196,6 @@ ASDCP::PCM::WAVParser::h__WAVParser::ReadFrame(FrameBuffer& FB) return result; } -// -ASDCP::Result_t ASDCP::PCM::WAVParser::h__WAVParser::Seek(ui32_t frame_number) -{ - m_FramesRead = frame_number - 1; - m_ReadCount = 0; - return m_FileReader.Seek(m_DataStart + m_FrameBufferSize * frame_number); -} - //------------------------------------------------------------------------------------------ @@ -263,13 +254,6 @@ ASDCP::PCM::WAVParser::FillAudioDescriptor(AudioDescriptor& ADesc) const return RESULT_OK; } -ASDCP::Result_t ASDCP::PCM::WAVParser::Seek(ui32_t frame_number) const -{ - if ( m_Parser.empty() ) - return RESULT_INIT; - - return m_Parser->Seek(frame_number);; -} // // end PCM_Parser.cpp diff --git a/libasdcp/TimedText_Parser.cpp b/libasdcp/TimedText_Parser.cpp index 2ffe3a3..11fce6c 100644 --- a/libasdcp/TimedText_Parser.cpp +++ b/libasdcp/TimedText_Parser.cpp @@ -25,7 +25,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file AS_DCP_TimedText.cpp - \version $Id: TimedText_Parser.cpp,v 1.25 2016/11/22 17:58:19 jhurst Exp $ + \version $Id: TimedText_Parser.cpp,v 1.23 2015/10/16 16:55:33 jhurst Exp $ \brief AS-DCP library, PCM essence reader and writer implementation */ @@ -246,13 +246,7 @@ ASDCP::TimedText::DCSubtitleParser::h__SubtitleParser::OpenRead() && m_TDesc.EditRate != EditRate_30 && m_TDesc.EditRate != EditRate_48 && m_TDesc.EditRate != EditRate_50 - && m_TDesc.EditRate != EditRate_60 - && m_TDesc.EditRate != EditRate_96 - && m_TDesc.EditRate != EditRate_100 - && m_TDesc.EditRate != EditRate_120 - && m_TDesc.EditRate != EditRate_192 - && m_TDesc.EditRate != EditRate_200 - && m_TDesc.EditRate != EditRate_240 ) + && m_TDesc.EditRate != EditRate_60 ) { DefaultLogSink(). Error("Unexpected EditRate: %d/%d\n", m_TDesc.EditRate.Numerator, m_TDesc.EditRate.Denominator); diff --git a/libasdcp/WavFileWriter.h b/libasdcp/WavFileWriter.h index e545f47..763930b 100644 --- a/libasdcp/WavFileWriter.h +++ b/libasdcp/WavFileWriter.h @@ -25,7 +25,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file WavFileWriter.h - \version $Id: WavFileWriter.h,v 1.9 2016/05/17 16:46:05 jhurst Exp $ + \version $Id: WavFileWriter.h,v 1.8 2013/06/17 17:55:54 jhurst Exp $ \brief demux and write PCM data to WAV file(s) */ @@ -154,7 +154,7 @@ class WavFileWriter { for ( ui32_t i = 0; i < file_count && ASDCP_SUCCESS(result); i++ ) { - snprintf(filename, Kumu::MaxFilePath, "%s_%02u.wav", file_root, (i + 1)); + snprintf(filename, Kumu::MaxFilePath, "%s_%u.wav", file_root, (i + 1)); m_OutFile.push_back(new WavFileElement(element_size)); result = m_OutFile.back()->OpenWrite(filename); diff --git a/libasdcp/h__Reader.cpp b/libasdcp/h__Reader.cpp index dd643d1..04f3123 100644 --- a/libasdcp/h__Reader.cpp +++ b/libasdcp/h__Reader.cpp @@ -25,7 +25,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file h__Reader.cpp - \version $Id: h__Reader.cpp,v 1.40 2016/05/16 21:56:54 jhurst Exp $ + \version $Id: h__Reader.cpp,v 1.39 2015/10/09 23:41:11 jhurst Exp $ \brief MXF file reader base class */ @@ -84,18 +84,18 @@ ASDCP::h__ASDCPReader::OpenMXFRead(const std::string& filename) m_Info.LabelSetType = LS_MXF_UNKNOWN; - if ( m_HeaderPart.OperationalPattern.MatchExact(MXFInterop_OPAtom_Entry().ul) ) + if ( m_HeaderPart.OperationalPattern.ExactMatch(MXFInterop_OPAtom_Entry().ul) ) { m_Info.LabelSetType = LS_MXF_INTEROP; } - else if ( m_HeaderPart.OperationalPattern.MatchExact(SMPTE_390_OPAtom_Entry().ul) ) + else if ( m_HeaderPart.OperationalPattern.ExactMatch(SMPTE_390_OPAtom_Entry().ul) ) { m_Info.LabelSetType = LS_MXF_SMPTE; } else { char strbuf[IdentBufferLen]; - const MDDEntry* Entry = m_Dict->FindULExact(m_HeaderPart.OperationalPattern.Value()); + const MDDEntry* Entry = m_Dict->FindUL(m_HeaderPart.OperationalPattern.Value()); if ( Entry == 0 ) { @@ -312,7 +312,7 @@ ASDCP::Read_EKLV_Packet(Kumu::FileReader& File, const ASDCP::Dictionary& Dict, if ( ! UL(ess_p).MatchIgnoreStream(EssenceUL) ) // ignore the stream number { char strbuf[IntBufferLen]; - const MDDEntry* Entry = Dict.FindULAnyVersion(Key.Value()); + const MDDEntry* Entry = Dict.FindUL(Key.Value()); if ( Entry == 0 ) { @@ -431,7 +431,7 @@ ASDCP::Read_EKLV_Packet(Kumu::FileReader& File, const ASDCP::Dictionary& Dict, else { char strbuf[IntBufferLen]; - const MDDEntry* Entry = Dict.FindULAnyVersion(Key.Value()); + const MDDEntry* Entry = Dict.FindUL(Key.Value()); if ( Entry == 0 ) { diff --git a/libasdcp/h__Writer.cpp b/libasdcp/h__Writer.cpp index 14c2bff..c0ed2d3 100644 --- a/libasdcp/h__Writer.cpp +++ b/libasdcp/h__Writer.cpp @@ -25,7 +25,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file h__Writer.cpp - \version $Id: h__Writer.cpp,v 1.60 2016/12/02 23:28:26 jhurst Exp $ + \version $Id: h__Writer.cpp,v 1.59 2015/10/09 23:41:11 jhurst Exp $ \brief MXF file writer base class */ @@ -141,7 +141,7 @@ ASDCP::h__ASDCPWriter::WriteASDCPHeader(const std::string& PackageLabel, const U const std::string& TrackName, const UL& EssenceUL, const UL& DataDefinition, const MXF::Rational& EditRate, ui32_t TCFrameRate, ui32_t BytesPerEditUnit) { - InitHeader(MXFVersion_2004); + InitHeader(); // First RIP Entry if ( m_Info.LabelSetType == LS_MXF_SMPTE ) // ERK diff --git a/libopendcp/codecs/opendcp_decoder_openexr.c b/libopendcp/codecs/opendcp_decoder_openexr.c index 5842ba7..81a8806 100644 --- a/libopendcp/codecs/opendcp_decoder_openexr.c +++ b/libopendcp/codecs/opendcp_decoder_openexr.c @@ -47,6 +47,7 @@ #include #include #include +#include #include "opendcp.h" #include "opendcp_image.h" @@ -58,11 +59,11 @@ typedef enum { EXR_COMPRESSION_ZIPS = 2, /* zip single line (not supported) */ EXR_COMPRESSION_ZIP = 3, /* zip 16 lines */ EXR_COMPRESSION_PIZ = 4, /* piz (not supported) */ - EXR_COMPRESSION_PXR24 = 5 /* pixar 24 bit (not supported) */ - EXR_COMPRESSION_B44 = 6 /* b44 (not supported) */ - EXR_COMPRESSION_B44A = 7 /* b44a (not supported) */ - EXR_COMPRESSION_DWAA = 8 /* dwaa 32 lines (not supported) */ - EXR_COMPRESSION_DWAB = 9 /* dwab 256 lines (not supported) */ + EXR_COMPRESSION_PXR24 = 5, /* pixar 24 bit (not supported) */ + EXR_COMPRESSION_B44 = 6, /* b44 (not supported) */ + EXR_COMPRESSION_B44A = 7, /* b44a (not supported) */ + EXR_COMPRESSION_DWAA = 8, /* dwaa 32 lines (not supported) */ + EXR_COMPRESSION_DWAB = 9, /* dwab 256 lines (not supported) */ } exr_compression_enum; typedef enum { @@ -73,7 +74,7 @@ typedef enum { typedef struct { char name[255]; /* channel name */ - unsigned char dataType; /* channel data type, int, half, float */ + unsigned char data_type; /* channel data type, int, half, float */ unsigned char non_linear; /* non linear, only use for B44 and B44A compression */ unsigned int sample_x; /* sample x direction, only support == 1 */ unsigned int sample_y; /* sample y direction, only support == 1 */ @@ -98,7 +99,8 @@ typedef struct { typedef struct { exr_channel_list channel_list; /* channel list */ unsigned char compression; /* compression */ - exr_window dataWindow; /* data window */ + exr_window data_window; /* data window */ + exr_window display_window; /* display window */ } exr_attributes; /* exr chunk data */ @@ -340,16 +342,16 @@ exr_attributes read_attributes( FILE *exr_fp ) { else if( !strcmp( "compression", attribute_name ) ) attributes.compression = fgetc( exr_fp ); else if( !strcmp( "dataWindow", attribute_name ) ) { - fread( &(attributes.dataWindow.left), 4, 1, exr_fp ); - fread( &(attributes.dataWindow.bottom), 4, 1, exr_fp ); - fread( &(attributes.dataWindow.right), 4, 1, exr_fp ); - fread( &(attributes.dataWindow.top), 4, 1, exr_fp ); + fread( &(attributes.data_window.left), 4, 1, exr_fp ); + fread( &(attributes.data_window.bottom), 4, 1, exr_fp ); + fread( &(attributes.data_window.right), 4, 1, exr_fp ); + fread( &(attributes.data_window.top), 4, 1, exr_fp ); } else if( !strcmp( "displayWindow", attribute_name ) ) { - fread( &(attributes.displayWindow.left), 4, 1, exr_fp ); - fread( &(attributes.displayWindow.bottom), 4, 1, exr_fp ); - fread( &(attributes.displayWindow.right), 4, 1, exr_fp ); - fread( &(attributes.displayWindow.top), 4, 1, exr_fp ); + fread( &(attributes.display_window.left), 4, 1, exr_fp ); + fread( &(attributes.display_window.bottom), 4, 1, exr_fp ); + fread( &(attributes.display_window.right), 4, 1, exr_fp ); + fread( &(attributes.display_window.top), 4, 1, exr_fp ); } else // ---- skip attribute @@ -367,7 +369,7 @@ exr_attributes read_attributes( FILE *exr_fp ) { exr_chunk_data read_chunk_data( FILE *exr_fp, exr_attributes *attributes ) { exr_chunk_data chunk_data; - unsigned short num_rows = (attributes->dataWindow.top - attributes->dataWindow.bottom) + 1; + unsigned short num_rows = (attributes->data_window.top - attributes->data_window.bottom) + 1; // ---- if EXR_COMPRESSION_ZIP, 16 rows per chunk if( attributes->compression == EXR_COMPRESSION_ZIP ) { // @@ -432,7 +434,8 @@ void unfilter_buffer( unsigned char *buffer, unsigned char *unfilteredBuffer, un } /* uncompress rle - from OpenEXR library */ -void uncompress_rle( unsigned char *compressed_buffer, unsigned int compressed_buffer_length, unsigned char *uncompressed_buffer, unsigned int uncompressed_buffer_length) { +void uncompress_rle( unsigned char *compressed_buffer, unsigned int compressed_buffer_length, + unsigned char *uncompressed_buffer, int uncompressed_buffer_length) { unsigned char *outStart = compressed_buffer; @@ -575,7 +578,7 @@ void copy_float_data( unsigned char *buffer, float *channel_data, unsigned short /* compression no */ void read_data_compression_no( FILE *exr_fp, exr_chunk_data *chunk_data, exr_attributes *attributes, exr_image_data *image_data ) { - unsigned int num_columns = (attributes->dataWindow.right - attributes->dataWindow.left) + 1; + unsigned int num_columns = (attributes->data_window.right - attributes->data_window.left) + 1; unsigned short channel_data_width = attributes->channel_list.data_width; @@ -621,7 +624,7 @@ void read_data_compression_no( FILE *exr_fp, exr_chunk_data *chunk_data, exr_att /* compression RLE */ void read_data_compression_rle( FILE *exr_fp, exr_chunk_data *chunk_data, exr_attributes *attributes, exr_image_data *image_data ) { - unsigned int num_columns = (attributes->dataWindow.right - attributes->dataWindow.left) + 1; + unsigned int num_columns = (attributes->data_window.right - attributes->data_window.left) + 1; unsigned short channel_data_width = attributes->channel_list.data_width; @@ -682,7 +685,7 @@ void read_data_compression_rle( FILE *exr_fp, exr_chunk_data *chunk_data, exr_at /* compression ZIPS an ZIP */ void read_data_compression_zip( FILE *exr_fp, exr_chunk_data *chunk_data, exr_attributes *attributes, exr_image_data *image_data ) { - unsigned int num_columns = (attributes->dataWindow.right - attributes->dataWindow.left) + 1; + unsigned int num_columns = (attributes->data_window.right - attributes->data_window.left) + 1; unsigned char num_rows = 1; unsigned char *compressed_buffer = NULL; unsigned char *uncompressed_buffer = NULL; @@ -785,7 +788,7 @@ int opendcp_decode_exr(opendcp_image_t **image_ptr, const char *sfile) { magicNumber |= fgetc(exr_fp) << 8; magicNumber |= fgetc(exr_fp); - if (readsize != MAGIC_NUMBER_EXR ) { + if ( magicNumber != MAGIC_NUMBER_EXR ) { OPENDCP_LOG(LOG_ERROR,"%-15.15s: failed to read magic number expected 0x%08x read 0x%08x","read_exr", MAGIC_NUMBER_EXR, magicNumber ); OPENDCP_LOG(LOG_ERROR,"%s is not a valid EXR file", sfile); return OPENDCP_FATAL; @@ -800,7 +803,7 @@ int opendcp_decode_exr(opendcp_image_t **image_ptr, const char *sfile) { // ---- file type: normal, deep pixel, multipart (only support normal) unsigned char type = fgetc(exr_fp); - if( type & 0x1a != 0x00 ) { + if( (type & 0x1a) != 0x00 ) { OPENDCP_LOG(LOG_ERROR,"Only support normal scanline exr file, no tile, deep pixel, multipart file"); return OPENDCP_FATAL; } @@ -810,7 +813,7 @@ int opendcp_decode_exr(opendcp_image_t **image_ptr, const char *sfile) { fgetc(exr_fp); // ---- read EXR attritubes need for dcp - exr_attributes attritbute = read_attributes( exr_fp ); + exr_attributes attributes = read_attributes( exr_fp ); // ---- check compression if( attributes.compression > EXR_COMPRESSION_ZIP ) { @@ -829,8 +832,8 @@ int opendcp_decode_exr(opendcp_image_t **image_ptr, const char *sfile) { // ---- for store image data exr_image_data image_data; - image_data.width = attributes.dataWindow.right - attributes.dataWindow.left + 1; - image_data.height = attributes.dataWindow.top - attributes.dataWindow.bottom + 1; + image_data.width = attributes.data_window.right - attributes.data_window.left + 1; + image_data.height = attributes.data_window.top - attributes.data_window.bottom + 1; // ---- create buffers for image data image_data.channel_b = malloc( image_data.width*image_data.height * sizeof( float ) ); image_data.channel_g = malloc( image_data.width*image_data.height * sizeof( float ) ); @@ -848,15 +851,17 @@ int opendcp_decode_exr(opendcp_image_t **image_ptr, const char *sfile) { fclose( exr_fp ); /* create the image (float data) */ - image = opendcp_image_create_float(3, image_data.width, mage_data.height); + opendcp_image_t *image = opendcp_image_create_float(3, image_data.width, image_data.height); - unsigned int image_size = image_data.width * mage_data.height; - for (index = 0; index < image_size; index++) { + unsigned int image_size = image_data.width * image_data.height; + unsigned int index = 0; + while( index < image_size ) { // ---- need copy float data from exr image data to float opendcp image data - // ----- correct channel order? + // ----- correct channel order? Use float data for OpenEXR image->component[0].float_data[index] = image_data.channel_b[index]; image->component[1].float_data[index] = image_data.channel_g[index]; image->component[2].float_data[index] = image_data.channel_r[index]; + index++; } // ---- free chunk table diff --git a/libopendcp/opendcp_image.c b/libopendcp/opendcp_image.c index 1673072..6c28a26 100644 --- a/libopendcp/opendcp_image.c +++ b/libopendcp/opendcp_image.c @@ -30,9 +30,10 @@ (m)<0?0:((m)>max?max:(m)) extern int rgb_to_xyz_calculate(opendcp_image_t *image, int index); +extern int rgb_to_xyz_calculate_float(opendcp_image_t *image, int index); extern int rgb_to_xyz_lut(opendcp_image_t *image, int index); -/* create opendcp image structure for int */ +/* create opendcp image structure (int data) */ opendcp_image_t *opendcp_image_create(int n_components, int w, int h) { int x; opendcp_image_t *image = 00; @@ -81,8 +82,8 @@ opendcp_image_t *opendcp_image_create(int n_components, int w, int h) { return image; } -/* create opendcp image structure for float */ -opendcp_image_t *opendcp_image_float_create(int n_components, int w, int h) { +/* create opendcp image structure (float data) */ +opendcp_image_t *opendcp_image_create_float(int n_components, int w, int h) { int x; opendcp_image_t *image = 00; @@ -102,11 +103,11 @@ opendcp_image_t *opendcp_image_float_create(int n_components, int w, int h) { for (x = 0; x < n_components; x++) { image->component[x].component_number = x; - image->component[x].float_data = (int *)malloc((w * h) * sizeof(int)); + image->component[x].float_data = (float *)malloc((w * h) * sizeof(float)); if (!image->component[x].float_data) { OPENDCP_LOG(LOG_ERROR, "unable to allocate memory for image float components"); - opendcp_image_free(image); + opendcp_image_free_float(image); return NULL; } } @@ -243,7 +244,8 @@ int opendcp_image_readline_float(opendcp_image_t *image, int y, unsigned char *d for (x = 0; x < image->w; x += 2) { i = (x + y + 0) + ((image->w - 1) * y); - /* get componets for two pixels, convert to 12 bit int */ + /* get componets for two pixels, convert to 12 bit int (multiply 4096 for 12 bit integer) */ + /* pixel 0 */ int pixel0_b = (int)4095*image->component[0].float_data[i]; int pixel0_g = (int)4095*image->component[1].float_data[i]; @@ -252,15 +254,49 @@ int opendcp_image_readline_float(opendcp_image_t *image, int y, unsigned char *d int pixel1_b = (int)4095*image->component[0].float_data[i+1]; int pixel1_g = (int)4095*image->component[1].float_data[i+1]; int pixel1_r = (int)4095*image->component[2].float_data[i+1]; + + /* check values before save them, OpenEXR file can have pixel value > 1.0f and < 0.0f */ + /* pixel 0 */ + if( pixel0_b > 4095 ) + pixel0_b = 4095; + else if( pixel0_b < 0 ) + pixel0_b = 0; + + if( pixel0_g > 4095 ) + pixel0_g = 4095; + else if( pixel0_g < 0 ) + pixel0_g = 0; + + if( pixel0_r > 4095 ) + pixel0_r = 4095; + else if( pixel0_r < 0 ) + pixel0_r = 0; + + /* pixel 1 */ + if( pixel1_b > 4095 ) + pixel1_b = 4095; + else if( pixel1_b < 0 ) + pixel1_b = 0; + + if( pixel1_g > 4095 ) + pixel1_g = 4095; + else if( pixel1_g < 0 ) + pixel1_g = 0; + + if( pixel1_r > 4095 ) + pixel1_r = 4095; + else if( pixel1_r < 0 ) + pixel1_r = 0; + /* put pixel data in dbuffer */ dbuffer[d + 0] = pixel0_b >> 4; - dbuffer[d + 1] = (pixel0_b & 0x0f) << 4 ) | ((pixel0_g >> 8) & 0x0f); + dbuffer[d + 1] = ((pixel0_b & 0x0f) << 4 ) | ((pixel0_g >> 8) & 0x0f); dbuffer[d + 2] = pixel0_g; dbuffer[d + 3] = pixel0_r >> 4; - dbuffer[d + 4] = (pixel0_r & 0x0f) << 4 ) | ((pixel1_b >> 8) & 0x0f); + dbuffer[d + 4] = ((pixel0_r & 0x0f) << 4 ) | ((pixel1_b >> 8) & 0x0f); dbuffer[d + 5] = pixel1_b; dbuffer[d + 6] = (pixel1_g >> 4); - dbuffer[d + 7] = (pixel1_g << 4 ) | (pixel1_r >> 8) & 0x0f); + dbuffer[d + 7] = ((pixel1_g & 0x0f) << 4 ) | ((pixel1_r >> 8) & 0x0f); dbuffer[d + 8] = pixel1_r; d += 9; } @@ -315,6 +351,54 @@ int check_image_compliance(int profile, opendcp_image_t *image, char *file) { return OPENDCP_NO_ERROR; } +/* check image compliance (float data) */ +int check_image_compliance_float(int profile, opendcp_image_t *image, char *file) { + int w, h; + int dci_w = MAX_WIDTH_2K; + int dci_h = MAX_HEIGHT_2K; + opendcp_image_t *tmp; + + if (image == NULL) { + OPENDCP_LOG(LOG_DEBUG, "reading file %s", file); + + if (read_image(&tmp, file) == OPENDCP_NO_ERROR) { + h = tmp->h; + w = tmp->w; + opendcp_image_free_float(tmp); + } + else { + opendcp_image_free_float(tmp); + return OPENDCP_ERROR; + } + } + else { + h = image->h; + w = image->w; + } + + if (profile == DCP_CINEMA4K) { + dci_w = dci_w *2; + dci_h = dci_h *2; + } + + if ((w != dci_w) && (h != dci_h)) { + OPENDCP_LOG(LOG_WARN, "image does not match at least one dimension of the DCI container"); + return OPENDCP_ERROR; + } + + if ((w > dci_w) || (h > dci_h)) { + OPENDCP_LOG(LOG_WARN, "image dimension exceeds DCI container"); + return OPENDCP_ERROR; + } + + if ((w % 2) || (h % 2)) { + OPENDCP_LOG(LOG_WARN, "image dimensions are not an even value"); + return OPENDCP_ERROR; + } + + return OPENDCP_NO_ERROR; +} + /* yuv444 to rgb 8888 (int data) */ rgb_pixel_float_t yuv444toRGB888(int y, int cb, int cr) { rgb_pixel_float_t p; @@ -337,7 +421,7 @@ rgb_pixel_float_t yuv444toRGB888_float(float y, float cb, float cr) { return(p); } -/* complex gamma function */ +/* complex gamma function (int data) */ float complex_gamma(float p, float gamma, int index) { float v; @@ -364,6 +448,32 @@ float complex_gamma(float p, float gamma, int index) { return v; } +/* complex gamma function (float data) */ +float complex_gamma_float(float p, float gamma, int index) { + float v; + + if (index) { + if (p > 0.081) { + v = pow((p + 0.099) / 1.099, gamma); + } + else { + v = p / 4.5; + v = pow((p + 0.099) / 1.099, gamma); + } + } + else { + if (p > 0.04045) { + v = pow((p + 0.055) / 1.055, gamma); + } + else { + v = p / 12.92; + } + } + + return v; +} + +/* adjust headroom (int data) */ int adjust_headroom(int p) { if (p < HEADROOM * 3) { return p - HEADROOM; @@ -372,6 +482,17 @@ int adjust_headroom(int p) { return p; } +/* adjust headroom (float data) */ +float adjust_headroom_float(float p) { + float h = HEADROOM/4095.0; + + if (p < h * 3) { + return p - h; + } + + return p; +} + /* dci transfer (int data) */ int dci_transfer(float p) { int v; @@ -384,12 +505,12 @@ int dci_transfer(float p) { } /* dci transfer (floatt data) */ -float dci_transfer(float p) { +float dci_transfer_float(float p) { float v; v = pow((p * DCI_COEFFICENT), DCI_DEGAMMA); // adjust value below full color pixel? - v -= HEADROOM/4096.0f; //<---- assume int data function give 12 bit data + v -= HEADROOM/4095.0f; //<---- assume int data function give 12 bit data return v; } @@ -402,7 +523,7 @@ int dci_transfer_inverse(float p) { } /* dci transfer inverse (float data) */ -float dci_transfer_inverse(float p) { +float dci_transfer_inverse_float(float p) { return (pow(p, 1 / DCI_GAMMA)); } @@ -505,9 +626,9 @@ int rgb_to_xyz_calculate_float(opendcp_image_t *image, int index) { OPENDCP_LOG(LOG_DEBUG, "gamma: %f", GAMMA[index]); for (i = 0; i < size; i++) { - s.r = complex_gamma(image->component[0].float_data[i], GAMMA[index], index); - s.g = complex_gamma(image->component[1].float_data[i], GAMMA[index], index); - s.b = complex_gamma(image->component[2].float_data[i], GAMMA[index], index); + s.r = complex_gamma_float(image->component[0].float_data[i], GAMMA[index], index); + s.g = complex_gamma_float(image->component[1].float_data[i], GAMMA[index], index); + s.b = complex_gamma_float(image->component[2].float_data[i], GAMMA[index], index); d.x = ((s.r * color_matrix[index][0][0]) + (s.g * color_matrix[index][0][1]) + (s.b * color_matrix[index][0][2])); d.y = ((s.r * color_matrix[index][1][0]) + (s.g * color_matrix[index][1][1]) + (s.b * color_matrix[index][1][2])); diff --git a/libopendcp/opendcp_image.h b/libopendcp/opendcp_image.h index db4b6cd..5434613 100644 --- a/libopendcp/opendcp_image.h +++ b/libopendcp/opendcp_image.h @@ -64,7 +64,10 @@ typedef struct { unsigned char use_float; /* flag for use float */ } opendcp_image_t; + int read_image(opendcp_image_t **image, char *file); + + /* int data functions */ void opendcp_image_free(opendcp_image_t *image); int opendcp_image_size(opendcp_image_t *opendcp_image); int opendcp_image_readline(opendcp_image_t *image, int y, unsigned char *data); @@ -72,6 +75,14 @@ int rgb_to_xyz(opendcp_image_t *image, int gamma, int method); int resize(opendcp_image_t **image, int profile, int method); rgb_pixel_float_t yuv444toRGB888(int y, int cb, int cr); opendcp_image_t *opendcp_image_create(int n_components, int w, int h); + +/* float data functions */ +void opendcp_image_free_float(opendcp_image_t *opendcp_image); +int opendcp_image_readline_float(opendcp_image_t *image, int y, unsigned char *dbuffer); +float rgb_to_xyz_float(opendcp_image_t *image, int index); +int resize_float(opendcp_image_t **image, int profile, int method); +rgb_pixel_float_t yuv444toRGB888_float(float y, float cb, float cr); +opendcp_image_t *opendcp_image_create_float(int n_components, int w, int h); #ifdef __cplusplus }