Merge pull request #25 from remia/fix/non-pod-variadic-warning
[asdcplib.git] / src / AS_02_JP2K.cpp
index b553da39a92faf1d277bcfc66a6c75e7060f5b0d..321abfc3ad9d1411ba0dcc443dd27f2fb318c4fa 100644 (file)
@@ -1,5 +1,5 @@
 /*
-Copyright (c) 2011-2016, Robert Scheler, Heiko Sparenberg Fraunhofer IIS,
+Copyright (c) 2011-2018, Robert Scheler, Heiko Sparenberg Fraunhofer IIS,
 John Hurst
 
 All rights reserved.
@@ -68,7 +68,7 @@ public:
 Result_t
 AS_02::JP2K::MXFReader::h__Reader::OpenRead(const std::string& filename)
 {
-  Result_t result = OpenMXFRead(filename.c_str());
+  Result_t result = OpenMXFRead(filename);
 
   if( KM_SUCCESS(result) )
     {
@@ -350,13 +350,25 @@ AS_02::JP2K::MXFWriter::h__Writer::SetSourceStream(const std::string& label, con
 
   if ( KM_SUCCESS(result) )
     {
-      result = WriteAS02Header(label, UL(m_Dict->ul(MDD_JPEG_2000WrappingFrame)),
+      UL wrapping_label = UL(m_Dict->ul(MDD_MXFGCP1FrameWrappedPictureElement));
+
+      CDCIEssenceDescriptor *cdci_descriptor = dynamic_cast<CDCIEssenceDescriptor*>(m_EssenceDescriptor);
+      if ( cdci_descriptor )
+       {
+         if ( cdci_descriptor->FrameLayout ) // 0 == progressive, 1 == interlace
+           {
+             wrapping_label = UL(m_Dict->ul(MDD_MXFGCI1FrameWrappedPictureElement));
+           }
+       }
+
+      result = WriteAS02Header(label, wrapping_label,
                               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);
+         this->m_IndexWriter.SetEditRate(m_EssenceDescriptor->SampleRate);
        }
     }
 
@@ -387,7 +399,7 @@ AS_02::JP2K::MXFWriter::h__Writer::WriteFrame(const ASDCP::JP2K::FrameBuffer& Fr
 
   if ( KM_SUCCESS(result) )
     {
-      result = WriteEKLVPacket(FrameBuf, m_EssenceUL, Ctx, HMAC);
+      result = WriteEKLVPacket(FrameBuf, m_EssenceUL, MXF_BER_LENGTH, Ctx, HMAC);
       m_FramesWritten++;
     }