phdr:
authorjhurst <jhurst@cinecert.com>
Wed, 22 Oct 2014 19:19:49 +0000 (19:19 +0000)
committerjhurst <>
Wed, 22 Oct 2014 19:19:49 +0000 (19:19 +0000)
 o Finished FrameBuffer::Dump()
 o Minor comment changes
 o Added support for -W and some verbosity to phdr-unwrap
 o Removed spurious "m_FramesWritten++" that was causing master metadata tin increment the duration.
asdcp:
 o Set streamID byte of the PHDRImageMetadataItem UL to zero to meet canonical expectations.
 o Added some verbosity to as-02-unwrap
 o Fixed partitioning off-by-one in h__AS02WriterFrame::WriteEKLVPacket()

src/AS_02_PHDR.cpp
src/MDD.cpp
src/as-02-unwrap.cpp
src/h__02_Writer.cpp
src/phdr-unwrap.cpp

index c6017efe5d8944bc24ebce538e7d31638fb7f076..d856c601e28e0e3f13b82f7b6c890ab0279b6d13 100644 (file)
@@ -57,7 +57,12 @@ AS_02::PHDR::FrameBuffer::Dump(FILE* stream, ui32_t dump_bytes) const
   if ( stream == 0 )
     stream = stderr;
 
-  fprintf(stream, "Hello, HDR world!\n");
+  fprintf(stream, "Frame %d, %d bytes (metadata: %zd bytes)\n", FrameNumber(), Size(), OpaqueMetadata.size());
+
+  if ( dump_bytes > 0 )
+    {
+      Kumu::hexdump(RoData(), Kumu::xmin(dump_bytes, Size()), stream);
+    }
 }
 
 
@@ -189,7 +194,6 @@ AS_02::PHDR::MXFReader::h__Reader::OpenRead(const std::string& filename, std::st
     }
 
   m_IndexAccess.Dump();
-
   return result;
 }
 
@@ -390,7 +394,7 @@ AS_02::PHDR::MXFWriter::h__Writer::OpenWrite(const std::string& filename,
   if ( KM_SUCCESS(result) )
     {
       m_IndexStrategy = IndexStrategy;
-      m_PartitionSpace = PartitionSpace_sec; // later converted to edit units by SetSourceStream()
+      m_PartitionSpace = PartitionSpace_sec; // later converted to edit units by WritePHDRHeader()
       m_HeaderSize = HeaderSize;
 
       if ( essence_descriptor->GetUL() != UL(m_Dict->ul(MDD_RGBAEssenceDescriptor))
@@ -446,7 +450,7 @@ AS_02::PHDR::MXFWriter::h__Writer::WritePHDRHeader(const std::string& PackageLab
     CreateTrackAndSequence<SourcePackage, SourceClip>(m_HeaderPart, *m_FilePackage,
                                                      MD_DEF_LABEL, EditRate,
                                                      UL(m_Dict->ul(MDD_PHDRImageMetadataItem)),
-                                                     3, m_Dict);
+                                                     3 /* track id */, m_Dict);
 
   metdata_track.Sequence->Duration.set_has_value();
   m_DurationUpdateList.push_back(&(metdata_track.Sequence->Duration.get()));
@@ -629,8 +633,6 @@ AS_02::PHDR::MXFWriter::h__Writer::Finalize(const std::string& PHDR_master_metad
 
              result = Write_EKLV_Packet(m_File, *m_Dict, m_HeaderPart, m_Info, m_CtFrameBuf, m_FramesWritten,
                                         m_StreamOffset, tmp_buf, GenericStream_DataElement.Value(), 0, 0);
-
-             m_FramesWritten++;
            }
        }
 
index 2f9604de5be4a912e6f0d56f8b491d177d22adfd..ce0360353408e890da1a0adb9eb2711b8c87d046 100644 (file)
@@ -1168,7 +1168,7 @@ static const ASDCP::MDDEntry s_MDD_Table[] = {
       0x0e, 0x09, 0x06, 0x07, 0x01, 0x01, 0x01, 0x01 },
     {0}, false, "PHDRImageMetadataWrappingFrame" },
   { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x02, 0x01, 0x05, // 375
-      0x0e, 0x09, 0x06, 0x07, 0x01, 0x01, 0x01, 0x02 },
+      0x0e, 0x09, 0x06, 0x07, 0x01, 0x01, 0x01, 0x00 },
     {0}, false, "PHDRImageMetadataItem" },
   { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x05, // 376
       0x0e, 0x09, 0x06, 0x07, 0x01, 0x01, 0x01, 0x03 },
index c6ba96bd8d1c5ed7dd59e62171daae3ae5ece01c..bf69ba32f5845939df81f39db4eb356de47cc76d 100755 (executable)
@@ -376,12 +376,25 @@ read_JP2K_file(CommandOptions& Options)
     {
       result = Reader.ReadFrame(i, FrameBuffer, Context, HMAC);
 
+      char filename[1024];
+      snprintf(filename, 1024, name_format, Options.file_prefix, i);
+
+      if ( ASDCP_SUCCESS(result) && Options.verbose_flag )
+       {
+         printf("Frame %d, %d bytes", i, FrameBuffer.Size());
+
+         if ( ! Options.no_write_flag )
+           {
+             printf(" -> %s", filename);
+           }
+
+         printf("\n");
+       }
+
       if ( ASDCP_SUCCESS(result)  && ( ! Options.no_write_flag ) )
        {
          Kumu::FileWriter OutFile;
-         char filename[256];
          ui32_t write_count;
-         snprintf(filename, 256, name_format, Options.file_prefix, i);
          result = OutFile.OpenWrite(filename);
 
          if ( ASDCP_SUCCESS(result) )
index ff8d000e71f668d3c77566c22bebb77f70f76086..745166c2f951374262c938894eda0adfb11ea7d3 100644 (file)
@@ -191,7 +191,7 @@ AS_02::h__AS02WriterFrame::WriteEKLVPacket(const ASDCP::FrameBuffer& FrameBuf,co
       m_IndexWriter.PushIndexEntry(Entry);
     }
 
-  if ( m_FramesWritten > 0 && ( m_FramesWritten % m_PartitionSpace ) == 0 )
+  if ( m_FramesWritten > 1 && ( ( m_FramesWritten + 1 ) % m_PartitionSpace ) == 0 )
     {
       m_IndexWriter.ThisPartition = m_File.Tell();
       m_IndexWriter.WriteToFile(m_File);
index 162bb73fae9a00f318fc6860e722192278c4879c..a7a3afc7a6a055f08cbb7d606f31ecdab1216d41 100755 (executable)
@@ -255,7 +255,7 @@ read_JP2K_file(CommandOptions& Options)
   std::string PHDR_master_metadata; // todo: write to a file?
 
   Result_t result = Reader.OpenRead(Options.input_filename, PHDR_master_metadata);
-  fprintf(stderr, "PHDR_master_metadata size=%d\n", PHDR_master_metadata.size());
+  fprintf(stderr, "PHDR_master_metadata size=%zd\n", PHDR_master_metadata.size());
 
   if ( ASDCP_SUCCESS(result) )
     {
@@ -347,19 +347,34 @@ read_JP2K_file(CommandOptions& Options)
     {
       result = Reader.ReadFrame(i, FrameBuffer, Context, HMAC);
 
-      if ( ASDCP_SUCCESS(result) )
+      char filename[1024];
+      snprintf(filename, 1024, name_format, Options.file_prefix, i);
+
+      if ( ASDCP_SUCCESS(result) && Options.verbose_flag )
+       {
+         printf("Frame %d, %d bytes", i, FrameBuffer.Size());
+
+         if ( ! Options.no_write_flag )
+           {
+             printf(" -> %s", filename);
+           }
+
+         printf("\n");
+       }
+
+      if ( ASDCP_SUCCESS(result)  && ( ! Options.no_write_flag ) )
        {
          Kumu::FileWriter OutFile;
-         char filename[256];
          ui32_t write_count;
-         snprintf(filename, 256, name_format, Options.file_prefix, i);
          result = OutFile.OpenWrite(filename);
 
          if ( ASDCP_SUCCESS(result) )
            result = OutFile.Write(FrameBuffer.Data(), FrameBuffer.Size(), &write_count);
 
-         if ( Options.verbose_flag )
-           FrameBuffer.Dump(stderr, Options.fb_dump_size);
+         if ( ASDCP_SUCCESS(result) && Options.verbose_flag )
+           {
+             FrameBuffer.Dump(stderr, Options.fb_dump_size);
+           }
        }
     }