imf bugs
[asdcplib.git] / src / AS_02_JP2K.cpp
index a8eff1a4e91060e5bfefb0d4326fd386be49a159..a2027d3a8407cb05c88bcd1187139cc8c86335c2 100644 (file)
@@ -55,8 +55,6 @@ class AS_02::JP2K::MXFReader::h__Reader : public AS_02::h__AS02Reader
   ASDCP_NO_COPY_CONSTRUCT(h__Reader);
 
 public:
-  PictureDescriptor m_PDesc;        // codestream parameter list
-
   h__Reader(const Dictionary& d) :
     AS_02::h__AS02Reader(d) {}
 
@@ -229,7 +227,7 @@ AS_02::JP2K::MXFReader::FillWriterInfo(WriterInfo& Info) const
 //------------------------------------------------------------------------------------------
 
 //
-class AS_02::JP2K::MXFWriter::h__Writer : public AS_02::h__AS02Writer
+class AS_02::JP2K::MXFWriter::h__Writer : public AS_02::h__AS02WriterFrame
 {
   ASDCP_NO_COPY_CONSTRUCT(h__Writer);
   h__Writer();
@@ -237,10 +235,9 @@ class AS_02::JP2K::MXFWriter::h__Writer : public AS_02::h__AS02Writer
   JPEG2000PictureSubDescriptor* m_EssenceSubDescriptor;
 
 public:
-  PictureDescriptor m_PDesc;
   byte_t            m_EssenceUL[SMPTE_UL_LENGTH];
 
-  h__Writer(const Dictionary& d) : h__AS02Writer(d), m_EssenceSubDescriptor(0) {
+  h__Writer(const Dictionary& d) : h__AS02WriterFrame(d), m_EssenceSubDescriptor(0) {
     memset(m_EssenceUL, 0, SMPTE_UL_LENGTH);
   }
 
@@ -267,7 +264,8 @@ AS_02::JP2K::MXFWriter::h__Writer::OpenWrite(const std::string& filename,
 {
   if ( ! m_State.Test_BEGIN() )
     {
-      return RESULT_STATE;
+      KM_RESULT_STATE_HERE();
+       return RESULT_STATE;
     }
 
   if ( m_IndexStrategy != AS_02::IS_FOLLOW )
@@ -322,7 +320,8 @@ AS_02::JP2K::MXFWriter::h__Writer::SetSourceStream(const std::string& label, con
   assert(m_Dict);
   if ( ! m_State.Test_INIT() )
     {
-      return RESULT_STATE;
+      KM_RESULT_STATE_HERE();
+       return RESULT_STATE;
     }
 
   memcpy(m_EssenceUL, m_Dict->ul(MDD_JPEG2000Essence), SMPTE_UL_LENGTH);
@@ -334,6 +333,11 @@ AS_02::JP2K::MXFWriter::h__Writer::SetSourceStream(const std::string& label, con
       result = WriteAS02Header(label, UL(m_Dict->ul(MDD_JPEG_2000WrappingFrame)),
                               PICT_DEF_LABEL, UL(m_EssenceUL), UL(m_Dict->ul(MDD_PictureDataDef)),
                               edit_rate, derive_timecode_rate_from_edit_rate(edit_rate));
+
+      if ( KM_SUCCESS(result) )
+       {
+         this->m_IndexWriter.SetPrimerLookup(&this->m_HeaderPart.m_Primer);
+       }
     }
 
   return result;
@@ -376,7 +380,10 @@ Result_t
 AS_02::JP2K::MXFWriter::h__Writer::Finalize()
 {
   if ( ! m_State.Test_RUNNING() )
-    return RESULT_STATE;
+    {
+      KM_RESULT_STATE_HERE();
+       return RESULT_STATE;
+    }
 
   Result_t result = m_State.Goto_FINAL();