X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2FAS_DCP_ATMOS.cpp;h=2fc7d56d8d0927ff542969ef1737beea909fea10;hb=7b70b206a3bd767aad3a9a3c789cff9d0e9c38f2;hp=518df745500c32807629585e4e31edfc18205cb1;hpb=2b101472bf1f76db63ae1c97cf5393fe7195bcb1;p=asdcplib.git diff --git a/src/AS_DCP_ATMOS.cpp b/src/AS_DCP_ATMOS.cpp index 518df74..2fc7d56 100644 --- a/src/AS_DCP_ATMOS.cpp +++ b/src/AS_DCP_ATMOS.cpp @@ -107,7 +107,7 @@ typedef std::list SubDescriptorList_t; class ASDCP::ATMOS::MXFReader::h__Reader : public ASDCP::h__ASDCPReader { - MXF::DCDataDescriptor* m_EssenceDescriptor; + MXF::PrivateDCDataDescriptor* m_EssenceDescriptor; MXF::DolbyAtmosSubDescriptor* m_EssenceSubDescriptor; KM_NO_COPY_CONSTRUCT(h__Reader); @@ -130,7 +130,7 @@ ASDCP::Result_t ASDCP::ATMOS::MXFReader::h__Reader::MD_to_DCData_DDesc(ASDCP::DCData::DCDataDescriptor& DDesc) { ASDCP_TEST_NULL(m_EssenceDescriptor); - MXF::DCDataDescriptor* DDescObj = m_EssenceDescriptor; + MXF::PrivateDCDataDescriptor* DDescObj = m_EssenceDescriptor; DDesc.EditRate = DDescObj->SampleRate; assert(DDescObj->ContainerDuration <= 0xFFFFFFFFL); DDesc.ContainerDuration = static_cast(DDescObj->ContainerDuration); @@ -170,13 +170,13 @@ ASDCP::ATMOS::MXFReader::h__Reader::OpenRead(const std::string& filename) if ( KM_SUCCESS(result) ) { - m_EssenceDescriptor = static_cast(iObj); + m_EssenceDescriptor = static_cast(iObj); } } if ( m_EssenceDescriptor == 0 ) { - DefaultLogSink().Error("DCDataDescriptor object not found.\n"); + DefaultLogSink().Error("DCDataDescriptor object not found in Atmos file.\n"); result = RESULT_FORMAT; } @@ -187,15 +187,18 @@ ASDCP::ATMOS::MXFReader::h__Reader::OpenRead(const std::string& filename) // 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_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); @@ -245,7 +248,7 @@ ASDCP::ATMOS::MXFReader::h__Reader::ReadFrame(ui32_t FrameNum, FrameBuffer& Fram ASDCP::ATMOS::MXFReader::MXFReader() { - m_Reader = new h__Reader(DefaultSMPTEDict()); + m_Reader = new h__Reader(AtmosSMPTEDict()); } @@ -420,12 +423,11 @@ ASDCP::Result_t ASDCP::ATMOS::MXFWriter::h__Writer::DCData_DDesc_to_MD(ASDCP::DCData::DCDataDescriptor& DDesc) { ASDCP_TEST_NULL(m_EssenceDescriptor); - MXF::DCDataDescriptor* DDescObj = static_cast(m_EssenceDescriptor); + MXF::PrivateDCDataDescriptor* DDescObj = static_cast(m_EssenceDescriptor); DDescObj->SampleRate = DDesc.EditRate; DDescObj->ContainerDuration = DDesc.ContainerDuration; - DDescObj->DataEssenceCoding.Set(DDesc.DataEssenceCoding); - + DDescObj->DataEssenceCoding.Set(DDesc.DataEssenceCoding); return RESULT_OK; } @@ -456,7 +458,7 @@ ASDCP::ATMOS::MXFWriter::h__Writer::OpenWrite(const std::string& filename, ui32_ if ( ASDCP_SUCCESS(result) ) { m_HeaderSize = HeaderSize; - m_EssenceDescriptor = new MXF::DCDataDescriptor(m_Dict); + m_EssenceDescriptor = new MXF::PrivateDCDataDescriptor(m_Dict); m_EssenceSubDescriptor = new DolbyAtmosSubDescriptor(m_Dict); SubDescriptorList_t subDescriptors; subDescriptors.push_back(m_EssenceSubDescriptor); @@ -503,7 +505,10 @@ ASDCP::ATMOS::MXFWriter::h__Writer::SetSourceStream(ASDCP::DCData::DCDataDescrip && DDesc.EditRate != EditRate_60 && DDesc.EditRate != EditRate_96 && DDesc.EditRate != EditRate_100 - && DDesc.EditRate != EditRate_120 ) + && 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); @@ -548,7 +553,7 @@ ASDCP::ATMOS::MXFWriter::h__Writer::WriteFrame(const FrameBuffer& FrameBuf, ui64_t StreamOffset = m_StreamOffset; if ( ASDCP_SUCCESS(result) ) - result = WriteEKLVPacket(FrameBuf, m_EssenceUL, Ctx, HMAC); + result = WriteEKLVPacket(FrameBuf, m_EssenceUL, MXF_BER_LENGTH, Ctx, HMAC); if ( ASDCP_SUCCESS(result) ) { @@ -642,7 +647,7 @@ ASDCP::ATMOS::MXFWriter::OpenWrite(const std::string& filename, const WriterInfo return RESULT_FORMAT; } - m_Writer = new h__Writer(DefaultSMPTEDict()); + m_Writer = new h__Writer(AtmosSMPTEDict()); m_Writer->m_Info = Info; Result_t result = m_Writer->OpenWrite(filename, HeaderSize, ADesc);