jp2k subdesc fix
authorjhurst <jhurst@cinecert.com>
Fri, 3 Nov 2006 06:07:12 +0000 (06:07 +0000)
committerjhurst <>
Fri, 3 Nov 2006 06:07:12 +0000 (06:07 +0000)
README
src/AS_DCP_JP2K.cpp
src/AS_DCP_MXF.cpp
src/MXF.cpp

diff --git a/README b/README
index 4e4bb1f755e9218b458aeaa64125564faaca030c..9a5c136c904b34a74b65f1003ed370412188dd5b 100755 (executable)
--- 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.
index 912660ea03cdbd8d43850a5015ea138518e7c4b4..09d1981460df3077d9cc7378c5772d31f2297812 100755 (executable)
@@ -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();
     }
 
index 5c8fc16af8a9440a8b606736c2100e59e47f4d28..9b86b5521166c1d05f862bab9c13e365c0ba876d 100755 (executable)
@@ -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;
            }
index 28b156c650e11709a3e3c58d8771f997453aab39..b4cba0385abcdc305734ddc84c854189a930b26e 100755 (executable)
@@ -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);
 }