summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjhurst <jhurst@cinecert.com>2006-11-03 06:07:12 +0000
committerjhurst <>2006-11-03 06:07:12 +0000
commitc1e4a07e40fb33558f445d333c7f03a6572f3f14 (patch)
tree588196c27b6bc9d9c8dcf556ec52fe16a8428425
parent6b5d04290663a89cb8666cdc1c0df238d065a981 (diff)
jp2k subdesc fix
-rwxr-xr-xREADME8
-rwxr-xr-xsrc/AS_DCP_JP2K.cpp3
-rwxr-xr-xsrc/AS_DCP_MXF.cpp17
-rwxr-xr-xsrc/MXF.cpp7
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);
}