Removed PIMD support (unused prototype)
authorjhurst <jhurst@cinecert.com>
Sat, 13 Oct 2018 21:48:34 +0000 (21:48 +0000)
committerjhurst <>
Sat, 13 Oct 2018 21:48:34 +0000 (21:48 +0000)
src/AS_02_PHDR.h
src/KLV.h
src/Makefile.am
src/phdr-unwrap.cpp
src/phdr-wrap.cpp

index 5609ea5517e104ab76d6758a836d4420aff087d9..754247dfaad738523ad8760413d22501356db335 100644 (file)
@@ -1,5 +1,5 @@
 /*
-Copyright (c) 2011-2016, John Hurst
+Copyright (c) 2011-2018, John Hurst
 
 All rights reserved.
 
@@ -182,94 +182,6 @@ namespace AS_02
     
   } // end namespace PHDR
 
-  namespace PIDM
-  { 
-    //
-    class MXFWriter
-    {
-      class h__Writer;
-      ASDCP::mem_ptr<h__Writer> m_Writer;
-      ASDCP_NO_COPY_CONSTRUCT(MXFWriter);
-      
-    public:
-      MXFWriter();
-      virtual ~MXFWriter();
-
-      // Warning: direct manipulation of MXF structures can interfere
-      // with the normal operation of the wrapper.  Caveat emptor!
-      virtual ASDCP::MXF::OP1aHeader& OP1aHeader();
-      virtual ASDCP::MXF::RIP& RIP();
-
-      // Open the file for writing. The file must not exist. Returns error if
-      // the operation cannot be completed or if nonsensical data is discovered
-      // in the essence descriptor.
-      Result_t OpenWrite(const std::string& filename, const ASDCP::WriterInfo&,
-                        const ASDCP::UL& data_essence_coding,
-                        const ASDCP::Rational& edit_rate, const ui32_t& header_size = 16384,
-                        const IndexStrategy_t& strategy = IS_FOLLOW, const ui32_t& partition_space = 10);
-
-      // Writes a frame of essence to the MXF file. If the optional AESEncContext
-      // argument is present, the essence is encrypted prior to writing.
-      // Fails if the file is not open, is finalized, or an operating system
-      // error occurs.
-      Result_t WriteFrame(const ASDCP::FrameBuffer&, ASDCP::AESEncContext* = 0, ASDCP::HMACContext* = 0);
-
-      // Closes the MXF file, writing the index and revised header. No global metadata block is written.
-      Result_t Finalize();
-
-      // Closes the MXF file, writing the global metadata block and then final index and revised header.
-      Result_t Finalize(const ASDCP::FrameBuffer& global_metadata);
-    };
-
-    //
-    class MXFReader
-    {
-      class h__Reader;
-      ASDCP::mem_ptr<h__Reader> m_Reader;
-      ASDCP_NO_COPY_CONSTRUCT(MXFReader);
-
-    public:
-      MXFReader();
-      virtual ~MXFReader();
-
-      // Warning: direct manipulation of MXF structures can interfere
-      // with the normal operation of the wrapper.  Caveat emptor!
-      virtual ASDCP::MXF::OP1aHeader& OP1aHeader();
-      virtual AS_02::MXF::AS02IndexReader& AS02IndexReader();
-      virtual ASDCP::MXF::RIP& RIP();
-
-      // Open the file for reading. The file must exist. Returns error if the
-      // operation cannot be completed.
-      Result_t OpenRead(const std::string& filename) const;
-
-      // Open the file for reading. The file must exist. Returns error if the
-      // operation cannot be completed. If global metadata is available it will
-      // be placed into the buffer object passed as the second argument.
-      Result_t OpenRead(const std::string& filename, ASDCP::FrameBuffer& global_metadata) const;
-
-      // Returns RESULT_INIT if the file is not open.
-      Result_t Close() const;
-
-      // Fill a WriterInfo struct with the values from the file's header.
-      // Returns RESULT_INIT if the file is not open.
-      Result_t FillWriterInfo(ASDCP::WriterInfo&) const;
-
-      // Reads a frame of essence from the MXF file. If the optional AESEncContext
-      // argument is present, the essence is decrypted after reading. If the MXF
-      // file is encrypted and the AESDecContext argument is NULL, the frame buffer
-      // will contain the ciphertext frame data. If the HMACContext argument is
-      // not NULL, the HMAC will be calculated (if the file supports it).
-      // Returns RESULT_INIT if the file is not open, failure if the frame number is
-      // out of range, or if optional decrypt or HAMC operations fail.
-      Result_t ReadFrame(ui32_t frame_number, ASDCP::FrameBuffer&, ASDCP::AESDecContext* = 0, ASDCP::HMACContext* = 0) const;
-
-      // Print debugging information to stream
-      void     DumpHeaderMetadata(FILE* = 0) const;
-      void     DumpIndex(FILE* = 0) const;
-    };
-    
-  }
-
 } // end namespace AS_02
 
 #endif // _AS_02_PHDR_H_
index ae2dee8dd3a3cefd14647715791b59c56241d8e0..f34ebd9744ea61a6f4dbc042b3e0e17efe6920d2 100755 (executable)
--- a/src/KLV.h
+++ b/src/KLV.h
@@ -1,5 +1,5 @@
 /*
-Copyright (c) 2005-2016, John Hurst
+Copyright (c) 2005-2018, John Hurst
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
@@ -163,6 +163,7 @@ inline const char* ui64sz(ui64_t i, char* buf)
       const MDDEntry* FindULExact(const byte_t*) const;
       const MDDEntry* FindSymbol(const std::string&) const;
       const MDDEntry& Type(MDD_t type_id) const;
+      MDDEntry& MutableType(MDD_t type_id);
 
       inline const byte_t* ul(MDD_t type_id) const {
        return Type(type_id).ul;
@@ -172,6 +173,7 @@ inline const char* ui64sz(ui64_t i, char* buf)
     };
 
 
+  const Dictionary& AtmosSMPTEDict();
   const Dictionary& DefaultSMPTEDict();
   const Dictionary& DefaultInteropDict();
   const Dictionary& DefaultCompositeDict();
index 4d46e267125877abf545a75a59f01ec4154825c4..af3d7d7081c5368aa776cacf2e7ed5ab96dfc5b9 100644 (file)
@@ -166,8 +166,7 @@ if USE_PHDR
 libphdr_la_SOURCES     = \
        AS_02_PHDR.h \
        PHDR_Sequence_Parser.cpp \
-       AS_02_PHDR.cpp \
-       AS_02_PIDM.cpp
+       AS_02_PHDR.cpp
 
 libphdr_la_LDFLAGS = -release @VERSION@
 libphdr_la_LIBADD = libasdcp.la libkumu.la
index cb0e177f571e92ab21609c7f8716161a0906cb1b..bd5a5a3b191611ca8d1733f185ca1f2ad25a70f8 100755 (executable)
@@ -1,5 +1,5 @@
 /*
-Copyright (c) 2011-2014, John Hurst
+Copyright (c) 2011-2018, John Hurst
 
 All rights reserved.
 
@@ -60,7 +60,7 @@ banner(FILE* stream = stdout)
 {
   fprintf(stream, "\n\
 %s (asdcplib %s)\n\n\
-Copyright (c) 2011-2015, John Hurst\n\n\
+Copyright (c) 2011-2018, John Hurst\n\n\
 asdcplib may be copied only under the terms of the license found at\n\
 the top of every file in the asdcplib distribution kit.\n\n\
 Specify the -h (help) option for further information about %s\n\n",
@@ -389,109 +389,6 @@ read_JP2K_file(CommandOptions& Options)
   return result;
 }
 
-
-// Read one or more plaintext DCData bytestreams from a plaintext ASDCP file
-// Read one or more plaintext DCData bytestreams from a ciphertext ASDCP file
-// Read one or more ciphertext DCData byestreams from a ciphertext ASDCP file
-//
-Result_t
-read_aux_data_file(CommandOptions& Options)
-{
-  AESDecContext*     Context = 0;
-  HMACContext*       HMAC = 0;
-  AS_02::PIDM::MXFReader Reader;
-  DCData::FrameBuffer FrameBuffer(Options.fb_size);
-  ui32_t             frame_count = 0;
-
-  ASDCP::FrameBuffer global_metadata;
-  Result_t result = Reader.OpenRead(Options.input_filename, global_metadata);
-
-  if ( ASDCP_SUCCESS(result)
-       && global_metadata.Size()
-       && ! Options.global_metadata_filename.empty() )
-    {
-      ui32_t write_count = 0;
-      Kumu::FileWriter Writer;
-
-      result = Writer.OpenWrite(Options.global_metadata_filename);
-
-      if ( ASDCP_SUCCESS(result) )
-       {
-         result = Writer.Write(global_metadata.RoData(), global_metadata.Size(), &write_count);
-       }
-
-      if ( ASDCP_SUCCESS(result) && global_metadata.Size() != write_count) 
-       {
-         return RESULT_WRITEFAIL;
-       }
-    }
-
-  if ( ASDCP_SUCCESS(result) )
-    {
-      frame_count = Reader.AS02IndexReader().GetDuration();
-
-      if ( Options.verbose_flag )
-       {
-         fprintf(stderr, "Frame Buffer size: %u\n", Options.fb_size);
-       }
-    }
-
-  if ( ASDCP_SUCCESS(result) && Options.key_flag )
-    {
-      Context = new AESDecContext;
-      result = Context->InitKey(Options.key_value);
-
-      if ( ASDCP_SUCCESS(result) && Options.read_hmac )
-       {
-         WriterInfo Info;
-         Reader.FillWriterInfo(Info);
-
-         if ( Info.UsesHMAC )
-           {
-             HMAC = new HMACContext;
-             result = HMAC->InitKey(Options.key_value, Info.LabelSetType);
-           }
-         else
-           {
-             fputs("File does not contain HMAC values, ignoring -m option.\n", stderr);
-           }
-       }
-    }
-
-  ui32_t last_frame = Options.start_frame + ( Options.duration ? Options.duration : frame_count);
-  if ( last_frame > frame_count )
-    last_frame = frame_count;
-
-  char name_format[64];
-  snprintf(name_format,  64, "%%s%%0%du.%s", Options.number_width, Options.extension);
-
-  for ( ui32_t i = Options.start_frame; ASDCP_SUCCESS(result) && i < last_frame; i++ )
-    {
-      result = Reader.ReadFrame(i, FrameBuffer, Context, HMAC);
-
-      if ( ASDCP_SUCCESS(result) )
-       {
-         if ( ! 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);
-       }
-    }
-
-  return result;
-}
-
-
 //
 int
 main(int argc, const char** argv)
@@ -525,10 +422,6 @@ main(int argc, const char** argv)
          result = read_JP2K_file(Options);
          break;
 
-        case ESS_DCDATA_UNKNOWN:
-          result = read_aux_data_file(Options);
-          break;
-
        default:
          fprintf(stderr, "%s: Unknown file type, not P-HDR essence.\n", Options.input_filename);
          return 5;
index b62131a3ae7b103901bedc27acdb8355e0e494ea..b919b96889b3526e1f6da567e35d61d054740ab7 100755 (executable)
@@ -1,5 +1,5 @@
 /*
-Copyright (c) 2011-2016, John Hurst
+Copyright (c) 2011-2018, John Hurst
 
 All rights reserved.
 
@@ -100,7 +100,7 @@ banner(FILE* stream = stdout)
 {
   fprintf(stream, "\n\
 %s (asdcplib %s)\n\n\
-Copyright (c) 2011-2015, John Hurst\n\n\
+Copyright (c) 2011-2018, John Hurst\n\n\
 asdcplib may be copied only under the terms of the license found at\n\
 the top of every file in the asdcplib distribution kit.\n\n\
 Specify the -h (help) option for further information about %s\n\n",
@@ -135,7 +135,6 @@ Options:\n\
   -e                - Encrypt JP2K headers (default)\n\
   -E                - Do not encrypt JP2K headers\n\
   -F (0|1)          - Set field dominance for interlaced image (default: 0)\n\
-  -g <filename>     - Write global metadata from the named PIDM file.\n\
   -i                - Indicates input essence is interlaced fields (forces -Y)\n\
   -j <key-id-str>   - Write key ID instead of creating a random value\n\
   -k <key-string>   - Use key for ciphertext operations\n\
@@ -149,7 +148,6 @@ Options:\n\
   -t <min>          - Set RGB component minimum code value (default: 0)\n\
   -T <max>          - Set RGB component maximum code value (default: 1023)\n\
   -u                - Print UL catalog to stderr\n\
-  -U <UL>           - Set DataEssenceCoding UL value in an Aux Data file\n\
   -v                - Verbose, prints informative messages to stderr\n\
   -W                - Read input file only, do not write source file\n\
   -x <int>          - Horizontal subsampling degree (default: 2)\n\
@@ -209,7 +207,6 @@ public:
   ui32_t partition_space; //Shim parameter partition_spacing
 
   std::string PHDR_master_metadata;
-  UL aux_data_coding;
   std::string global_metadata_filename;
 
   //
@@ -389,16 +386,6 @@ public:
                break;
 
              case 'u': show_ul_values_flag = true; break;
-
-             case 'U':
-               TEST_EXTRA_ARG(i, 'U');
-               if ( ! aux_data_coding.DecodeHex(argv[i]) )
-                 {
-                   fprintf(stderr, "Error decoding UL value: %s\n", argv[i]);
-                   return;
-                 }
-               break;
-
              case 'V': version_flag = true; break;
              case 'v': verbose_flag = true; break;
              case 'W': no_write_flag = true; break;
@@ -632,162 +619,6 @@ write_JP2K_file(CommandOptions& Options)
 }
 
 
-
-// Write one or more plaintext Aux Data bytestreams to a plaintext AS-02 file
-// Write one or more plaintext Aux Data bytestreams to a ciphertext AS-02 file
-//
-Result_t
-write_aux_data_file(CommandOptions& Options)
-{
-  AESEncContext*          Context = 0;
-  HMACContext*            HMAC = 0;
-  AS_02::PIDM::MXFWriter Writer;
-  DCData::FrameBuffer     FrameBuffer(Options.fb_size);
-  DCData::SequenceParser  Parser;
-  byte_t                  IV_buf[CBC_BLOCK_SIZE];
-  Kumu::FortunaRNG        RNG;
-
-  if ( ! Options.global_metadata_filename.empty() )
-    {
-      if ( ! Kumu::PathIsFile(Options.global_metadata_filename) )
-       {
-         fprintf(stderr, "No such file or filename: \"%s\".\n", Options.global_metadata_filename.c_str());
-         return RESULT_PARAM;
-       }
-    }
-
-  // set up essence parser
-  Result_t result = Parser.OpenRead(Options.filenames.front());
-
-  // set up MXF writer
-  if ( ASDCP_SUCCESS(result) )
-  {
-
-    if ( Options.verbose_flag )
-       {
-         fprintf(stderr, "Aux Data\n");
-         fprintf(stderr, "Frame Buffer size: %u\n", Options.fb_size);
-       }
-  }
-
-  if ( ASDCP_SUCCESS(result) && ! Options.no_write_flag )
-  {
-    WriterInfo Info = s_MyInfo;  // fill in your favorite identifiers here
-    if ( Options.asset_id_flag )
-      memcpy(Info.AssetUUID, Options.asset_id_value, UUIDlen);
-    else
-      Kumu::GenRandomUUID(Info.AssetUUID);
-
-    Info.LabelSetType = LS_MXF_SMPTE;
-
-      // configure encryption
-    if( Options.key_flag )
-       {
-         Kumu::GenRandomUUID(Info.ContextID);
-         Info.EncryptedEssence = true;
-
-         if ( Options.key_id_flag )
-           {
-             memcpy(Info.CryptographicKeyID, Options.key_id_value, UUIDlen);
-           }
-         else
-           {
-             create_random_uuid(Info.CryptographicKeyID);
-           }
-
-         Context = new AESEncContext;
-         result = Context->InitKey(Options.key_value);
-
-         if ( ASDCP_SUCCESS(result) )
-           result = Context->SetIVec(RNG.FillRandom(IV_buf, CBC_BLOCK_SIZE));
-
-         if ( ASDCP_SUCCESS(result) && Options.write_hmac )
-      {
-        Info.UsesHMAC = true;
-        HMAC = new HMACContext;
-        result = HMAC->InitKey(Options.key_value, Info.LabelSetType);
-      }
-       }
-
-    if ( ASDCP_SUCCESS(result) )
-      {
-       result = Writer.OpenWrite(Options.out_file, Info, Options.aux_data_coding, Options.edit_rate);
-      }
-  }
-
-  if ( ASDCP_SUCCESS(result) )
-  {
-    ui32_t duration = 0;
-    result = Parser.Reset();
-
-    while ( ASDCP_SUCCESS(result) && duration++ < Options.duration )
-      {
-       result = Parser.ReadFrame(FrameBuffer);
-
-       if ( ASDCP_SUCCESS(result) )
-         {
-           if ( Options.verbose_flag )
-             FrameBuffer.Dump(stderr, Options.fb_dump_size);
-
-           if ( Options.encrypt_header_flag )
-             FrameBuffer.PlaintextOffset(0);
-         }
-
-       if ( ASDCP_SUCCESS(result) && ! Options.no_write_flag )
-         {
-           result = Writer.WriteFrame(FrameBuffer, Context, HMAC);
-
-           // The Writer class will forward the last block of ciphertext
-           // to the encryption context for use as the IV for the next
-           // frame. If you want to use non-sequitur IV values, un-comment
-           // the following  line of code.
-           // if ( ASDCP_SUCCESS(result) && Options.key_flag )
-           //   Context->SetIVec(RNG.FillRandom(IV_buf, CBC_BLOCK_SIZE));
-         }
-      }
-
-    if ( result == RESULT_ENDOFFILE )
-      result = RESULT_OK;
-  }
-
-  if ( ASDCP_SUCCESS(result) && ! Options.no_write_flag )
-    {
-      if ( Options.global_metadata_filename.empty() )
-       {
-         result = Writer.Finalize();
-       }
-      else
-       {
-         ASDCP::FrameBuffer global_metadata;
-         ui32_t file_size = Kumu::FileSize(Options.global_metadata_filename);
-         result = global_metadata.Capacity(file_size);
-
-         if ( ASDCP_SUCCESS(result) )
-           {
-             ui32_t read_count = 0;
-             Kumu::FileReader Reader;
-
-             result = Reader.OpenRead(Options.global_metadata_filename);
-
-             if ( ASDCP_SUCCESS(result) )
-               result = Reader.Read(global_metadata.Data(), file_size, &read_count);
-    
-             if ( ASDCP_SUCCESS(result) )
-               {
-                 if ( file_size != read_count) 
-                   return RESULT_READFAIL;
-
-                 global_metadata.Size(read_count);
-               }
-           }
-  
-         result = Writer.Finalize(global_metadata);
-       }
-    }
-
-  return result;
-}
-
 //
 int
 main(int argc, const char** argv)
@@ -830,18 +661,6 @@ main(int argc, const char** argv)
          result = write_JP2K_file(Options);
          break;
 
-       case ESS_DCDATA_UNKNOWN:
-         if ( ! Options.aux_data_coding.HasValue() )
-           {
-             fprintf(stderr, "Option \"-U <UL>\" is required for Aux Data essence.\n");
-             return 3;
-           }
-         else
-           {
-             result = write_aux_data_file(Options);
-           }
-         break;
-
        default:
          fprintf(stderr, "%s: Unknown file type, not P-HDR-compatible essence.\n",
                  Options.filenames.front().c_str());