diff options
| author | jhurst <jhurst@cinecert.com> | 2018-10-13 21:48:34 +0000 |
|---|---|---|
| committer | jhurst <> | 2018-10-13 21:48:34 +0000 |
| commit | 2d8ed1812b98fe0af65fccf2e1565e724a93d701 (patch) | |
| tree | 779e314b38bc2d26ae597d57b65d9d64c9c29a4e /src | |
| parent | 0f29208c6d5be72d3bd03c1e72d92451e62d3727 (diff) | |
Removed PIMD support (unused prototype)
Diffstat (limited to 'src')
| -rw-r--r-- | src/AS_02_PHDR.h | 90 | ||||
| -rwxr-xr-x | src/KLV.h | 4 | ||||
| -rw-r--r-- | src/Makefile.am | 3 | ||||
| -rwxr-xr-x | src/phdr-unwrap.cpp | 111 | ||||
| -rwxr-xr-x | src/phdr-wrap.cpp | 185 |
5 files changed, 9 insertions, 384 deletions
diff --git a/src/AS_02_PHDR.h b/src/AS_02_PHDR.h index 5609ea5..754247d 100644 --- a/src/AS_02_PHDR.h +++ b/src/AS_02_PHDR.h @@ -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_ @@ -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(); diff --git a/src/Makefile.am b/src/Makefile.am index 4d46e26..af3d7d7 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -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 diff --git a/src/phdr-unwrap.cpp b/src/phdr-unwrap.cpp index cb0e177..bd5a5a3 100755 --- a/src/phdr-unwrap.cpp +++ b/src/phdr-unwrap.cpp @@ -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; diff --git a/src/phdr-wrap.cpp b/src/phdr-wrap.cpp index b62131a..b919b96 100755 --- a/src/phdr-wrap.cpp +++ b/src/phdr-wrap.cpp @@ -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()); |
