From c1e4a07e40fb33558f445d333c7f03a6572f3f14 Mon Sep 17 00:00:00 2001 From: jhurst Date: Fri, 3 Nov 2006 06:07:12 +0000 Subject: [PATCH] jp2k subdesc fix --- README | 8 +++++++- src/AS_DCP_JP2K.cpp | 3 +++ src/AS_DCP_MXF.cpp | 17 +++++++++++------ src/MXF.cpp | 7 ++++--- 4 files changed, 25 insertions(+), 10 deletions(-) diff --git a/README b/README index 4e4bb1f..9a5c136 100755 --- a/README +++ b/README @@ -113,13 +113,19 @@ utilities all respond to -h and there are manual pages in man/. Change History -2006.10.18 - Bug fixes v1.1.11 +2006.11.02 - Bug fixes v1.1.11 o Increased index table entry list size to 5000. o Added length checking to TLV writer (returns error if TLV payload exceeds 64kB). o Fixed partition header and RIP errors related to 2-partition files (MXF Interop mode). o Added -t option, SHA-1 digest with Base64 output on stdout. + o Fixed Sub Descriptor reference bug (Thanks to Denis Leconte + for dogged determination). + o Added directory-of-wav detection to RawEssenceType() + o Modified MXF::Partition::AddChildObject() to only generate + a UUID if the InstanceID is unset. + 2006.10.05 - Bug fixes v1.1.10 o Changed RM_RELEASE to RL_RELEASE in MXFTypes.h. diff --git a/src/AS_DCP_JP2K.cpp b/src/AS_DCP_JP2K.cpp index 912660e..09d1981 100755 --- a/src/AS_DCP_JP2K.cpp +++ b/src/AS_DCP_JP2K.cpp @@ -399,7 +399,10 @@ ASDCP::JP2K::MXFWriter::h__Writer::OpenWrite(const char* filename, ui32_t Header m_EssenceDescriptor = new RGBAEssenceDescriptor; m_EssenceSubDescriptor = new JPEG2000PictureSubDescriptor; m_EssenceSubDescriptorList.push_back((FileDescriptor*)m_EssenceSubDescriptor); + + GenRandomValue(m_EssenceSubDescriptor->InstanceUID); m_EssenceDescriptor->SubDescriptors.push_back(m_EssenceSubDescriptor->InstanceUID); + result = m_State.Goto_INIT(); } diff --git a/src/AS_DCP_MXF.cpp b/src/AS_DCP_MXF.cpp index 5c8fc16..9b86b55 100755 --- a/src/AS_DCP_MXF.cpp +++ b/src/AS_DCP_MXF.cpp @@ -170,6 +170,9 @@ ASDCP::RawEssenceType(const char* filename, EssenceType_t& type) type = ESS_UNKNOWN; ASDCP::FrameBuffer FB; Kumu::FileReader Reader; + ASDCP::Wav::SimpleWaveHeader WavHeader; + ASDCP::AIFF::SimpleAIFFHeader AIFFHeader; + ui32_t data_offset; ui32_t read_count; Result_t result = FB.Capacity(Wav::MaxWavHeader); // using Wav max because everything else is much smaller @@ -185,9 +188,6 @@ ASDCP::RawEssenceType(const char* filename, EssenceType_t& type) if ( ASDCP_SUCCESS(result) ) { - ASDCP::Wav::SimpleWaveHeader WavHeader; - ASDCP::AIFF::SimpleAIFFHeader AIFFHeader; - ui32_t data_offset; const byte_t* p = FB.RoData(); if ( p[0] == 0 && p[1] == 0 && p[2] == 1 && (p[3] == 0xb3 || p[3] == 0) ) @@ -224,9 +224,14 @@ ASDCP::RawEssenceType(const char* filename, EssenceType_t& type) Reader.Close(); } - if ( ASDCP_SUCCESS(result) - && ( memcmp(FB.RoData(), ASDCP::JP2K::Magic, sizeof(ASDCP::JP2K::Magic)) == 0 ) ) - type = ESS_JPEG_2000; + if ( ASDCP_SUCCESS(result) ) + { + if ( memcmp(FB.RoData(), ASDCP::JP2K::Magic, sizeof(ASDCP::JP2K::Magic)) == 0 ) + type = ESS_JPEG_2000; + + else if ( ASDCP_SUCCESS(WavHeader.ReadFromBuffer(FB.RoData(), read_count, &data_offset)) ) + type = ESS_PCM_24b_48k; + } break; } diff --git a/src/MXF.cpp b/src/MXF.cpp index 28b156c..b4cba03 100755 --- a/src/MXF.cpp +++ b/src/MXF.cpp @@ -219,9 +219,10 @@ void ASDCP::MXF::Partition::AddChildObject(InterchangeObject* Object) { assert(Object); - UUID TmpID; - Kumu::GenRandomValue(TmpID); - Object->InstanceUID = TmpID; + + if ( ! Object->InstanceUID.HasValue() ) + GenRandomValue(Object->InstanceUID); + m_PacketList->AddPacket(Object); } -- 2.30.2