documentation re-org, take 1
authorjhurst <jhurst@cinecert.com>
Fri, 22 Feb 2019 17:27:26 +0000 (09:27 -0800)
committerjhurst <jhurst@cinecert.com>
Fri, 22 Feb 2019 17:27:26 +0000 (09:27 -0800)
CHANGES [new file with mode: 0755]
README [deleted file]
README.md [new file with mode: 0755]

diff --git a/CHANGES b/CHANGES
new file mode 100755 (executable)
index 0000000..ab7cb60
--- /dev/null
+++ b/CHANGES
@@ -0,0 +1,1248 @@
+
+$Id$
+
+The asdcplib library is a set of objects that offer
+simplified access to files conforming to the sound and
+picture track file formats developed by the SMPTE Working
+Group DC28.20 (now TC 21DC).
+
+Recently, support has also been added for SMPTE draft ST
+2067-5 "IMF Essence Component", AKA "AS-02".  This code was
+donated by Fraunhofer IIS.  It carries additional copyright
+information which should be listed whenever you link the
+AS-02 elements of the library.  Please look at the top of
+the AS-02 files to see this copyright information.
+
+AS-02 support is carried in separate object modules, so
+unless you #include <AS_02.h> and link libas-02.so you are
+still using plain old asdcp.
+
+This work was originally funded by Digital Cinema Initiatives,
+LLC (DCI). Subsequent efforts have been funded by Deluxe
+Laboratories, Doremi Labs, CineCert LLC, Avica Technology
+and others.
+
+**The asdcplib project was originally housed on SourceForge.
+The project has moved to http://www.cinecert.com/asdcplib/
+
+The project formerly depended upon the mxflib project. Because
+of its focus on covering the whole of the MXF specifications,
+mxflib is considerably larger and more complex that what I
+require for this application. For this reason I have created
+a dedicated MXF implementation that is now part of this
+library. Special thanks to Matt Beard and Oliver Morgan for
+their great work and support.
+
+Thanks also to the members of the SMPTE DC28.20 packaging
+ad-hoc group and the members of the MXF Interop Initiative
+for their encouragement and support. Special thanks to
+Jim Whittlesey and Howard Lukk at DCI for proposing and
+supporting this project.
+
+
+Design Notes
+
+This library is intended (but of course not limited) for
+use by developers of commercial D-Cinema products (and now
+IMF!).  It is designed to be easily integrated into a wide
+variety of development environments.  Commercial users are
+strongly urged to use static linking (at least where you use
+this library) to prevent malicious in-field replacement of
+critical system modules. This recommendation should be
+considered wherever Open Source or Free software is being
+used in conjunction with critical security parameters, such
+as cryptographic keys.
+
+The author strives mightily to provide an API that is completely
+independent of operating system and other library dependencies,
+and which allows selective replacement of some modules for
+local needs.  Specifically, the essence parsers and OpenSSL
+crypto functions can be replaced by linking to alternative
+implementations of the ASDCP:: objects which provide those
+services.
+
+AS_DCP.h contains the entire AS-DCP API.  You do not need to
+read any of the other files, except maybe asdcp-test.cpp which
+contains detailed usage examples of each of the API's services.
+The KM_* files may be of interest for general development
+support, but may be ignored if all you want is simple AS-DCP
+support.
+
+Likewise, draft 2067-5 "IMF Essence Component" (AS-02) support
+is entirely contained in AS-02.h
+
+
+Build Instructions
+
+On more-or-less POSIX systems (OS X, Linux, and BSD), GNU make and 
+autotools are required to build asdcplib. The same configure script 
+will also build this package on Windows machines with Cygwin and
+MinGW installed. For those Windows users who would prefer to build
+this natively, an "nmake" build file and instructions can be found
+in the win32 subdirectory.  
+
+OpenSSL is also required, any recent version should be fine. See
+http://www.openssl.org/ for more information and download instructions.
+
+Optional support for writing Timed Text Track Files is supported by
+either Xerces-C or Expat. See http://xerces.apache.org/xerces-c/ or
+http://expat.sourceforge.net/ for source and build instructions.
+
+To configure and build, type './configure' followed by 'make'. There
+are several test targets on the POSIX side, but you need to assemble
+a set of test files to use them.  AS-02 support can be enabled with 
+ --enable-as-02.  
+
+I have tested this build on win32, Linux, OpenBSD, and Darwin
+platforms. Others may work as well.
+
+
+
+
+Utilities
+
+asdcp-test -  Writes, reads and verifies AS-DCP (MXF) track files.
+
+asdcp-wrap - Writes AS-DCP (MXF) track files.
+
+asdcp-unwrap - Extracts essence from AS-DCP (MXF) track files.
+
+asdcp-info - Displays information about AS-DCP (MXF) track files.
+
+asdcp-util - Calculates digests and generates random numbers and UUIDs.
+
+as-02-wrap - Writes AS-02 Essence Component files.
+
+as-02-unwrap - Extracts essence from AS-02 Essence Component files.
+
+kmfilegen - Writes and verifies large files using a platform-
+independent format. Use it to test issues related to large files.
+
+kmuuidgen, kmrandgen - generate UUID values and random numbers.
+
+wavesplit - Splits a WAVE file into two or more output files. Used
+  to untangle incorrectly-paired DCDM sound files.
+
+blackwave - Write a WAVE file of zeros.
+
+pinkwave - Write a WAVE file of SMPTE ST 2095 pink noise.
+
+j2c-test - Displays information about JP2K codestreams.
+
+Experimental feature: Prototype for High Dynamic Range is a wrapper
+for the IMF application that allows JPEG-2000 codestreams to be paired
+with opaque blobs of metadata.  AS-02 support must be enabled to
+build this feature, so --enable-as-02 must be enabled if
+--enable-phdr is to be used.  The following executable programs will be
+built:
+
+phdr-wrap - Writes AS-02 PHDR Essence Component files.
+
+phdr-unwrap - Extracts essence from AS-02 PHDR Essence Component files.
+
+
+Documentation
+
+The API documentation is mostly in AS_DCP.h. and AS_02.h  Read those
+files for a detailed description of the library's capabilities. Read
+asdcp-*.cpp and as-02-*.cpp files for library usage examples. The
+command-line utilities all respond to -h.
+
+
+Change History
+
+2019-02-12 - 2.10.32 -- bug fixes
+ o Fixed parsing of as-02-wrap -tfr (ACES) option value
+ o Fixed ISXD bugs:
+    o Incorrect UTF_8_Text_DataEssenceCoding UL
+    o Incorrect ISXDDataEssenceDescriptor_NamespaceURI UL
+    o Incorrect use of FrameWrappedISXDData UL
+    o Incorrect use of FrameWrappedISXDContainer UL
+ o Added wide-char support for filenames on Win32, allows UTF-8 characters in
+   calls to Kumu::File*::Open*(). The macro KM_WIN32_UTF8 must be defined to
+   enable this feature.
+
+
+2018-10-15 - 2.10.31
+ o NOTE: Use of MXFGCGenericEssenceMultipleMappings in AS-02 files is not
+   defined by standards and will soon be withdrawn from this library. If you
+   would like to experience this change now, define the macro
+   ASDCP_GCMULTI_PATCH
+ o Removed PIMD support (unused prototype)
+ o Returned the DataEssenceCoding UL version byte to "5" in Atmos files
+ o Fixed ColorPrimaries_ACES UL version byte
+ o Added "FSKSync" audio channel label to the MCA label generator
+ o SMPTE RDD 45 requires a minimum BER encoding length of five (5) bytes for
+   Content Element packets. The Write_EKLV_Packet() API has been modified to
+   allow the specification of this value. All existing wrapping modules have
+   been changed to conform to the new API, and all continue to use four (4)
+   as the minimum BER encoding length. Write_EKLV_Packet() will continue to
+   generate BER encodings with a length greater than the specified minimum for
+   payloads that are larger than values encoded using the specified minimum.
+
+
+2018-09-14 - 2.9.30
+ o Fixes wrong MajorVersion in Preface
+ o Adds VideoLineMap also to RGBA essence descriptor
+ o Adds VideoLineMap to RGBA and CDCI descriptor only when option -l
+   is present (disputable - but distinguished value {0, 0} is not
+   allowed in closed and complete partitions)
+ o Fixes issue with IndexRate not set in AS-02 J2K files
+ o Additional fixes to minor version number in AS-02 partition packs
+ o CMake brought up to date
+ o Fixed erroneous WAV RF64 header interpretation
+ o ACES AS-02 ST 2065-5 wrapper
+ o ACES AS-02 ST 2065-5 unwrapper
+ o ST 2067-50 Subdescriptors support
+ o ST 2067-50 Target Frame wrapping support
+ o ST 2067-50 Target Frame unwrapping support
+ o Command line tools as-02-wrap, as-02-unwrap and as-02-info extended to
+   support ACES, App#5 subdescriptors and Target Frames
+ o Beta support for ST2065-5 AS_02 ACES wrapping and unwrapping including
+   ST 2067-50 Subdescriptors and Target Frame support
+ o Please report ACES-related issues to wolfgang.ruppel@hs-rm.de
+
+
+2018-08-08 - 2.8.29
+ o Modified AS_02::ST2052_TextParser::OpenRead signature
+ o Fixed partition version error in AS-02 interior body partitions
+ o Changed StartTimecode to 0 (zero) in the Source Package
+ o Remove use of BN_init in OpenSSL API
+ o XML parser now works correctly with Xerces-c 3.x
+ o Improved MCA sound field expression parser
+ o Added support for IMF Numbered Source Channel labels in MCA
+ o Added CLI switches for MCAAudioContentKind and MCAAudioElementKind
+ o Re-assigned asdcp-wrap option '-g' to '-x', added new option '-g' 
+ o Added TLM marker check to j2c-test
+ o Added to kmrandgen options '-C', '-w', '-W'
+ o Added support for SMPTE RDD 47 "ISXD Track File"
+ o Added generic support for SMPTE RP 2057 "Text-Based Metadata Carriage in MXF"
+ o Re-factored AS-02 frame-wrap index write to use a common implementation
+ o Re-factored support for SMPTE ST 410 to use a common implementation (affects
+     AS-DCP and AS-02 timed-text MXF (SMPTE 429-5)
+ o Patched several ambiguous integer casts.
+ o Added new essence type identifiers ESS_AS02_ISXD and ESS_AS02_ACES
+ o Fixed a bug wherein the Generic Container data track clip was instead being
+     written as a DM track
+ o Fixed UL values DCDataDescriptor and ContainerConstraintSubDescriptor to have
+     a byte 6 value of 0x53 (Tag Set) instead of 0x07 (coding sentinel)
+ o Added UL values 468 - 511 to the dictionary (including added ACES UL values)
+ o Added ApplicationSchemes and ConformsToSpecifications to the Preface set
+ o Added default initializer to MXF::LineMapPair
+ o Added sets DescriptiveFramework, DescriptiveObject, TextBasedDMFramework,
+     TextBasedObject, GenericStreamTextBasedSet and ISXDDataEssenceDescriptor,
+     ACESPictureSubDescriptor, TargetFrameSubDescriptor
+ o Added ISXD support, options '-c', '-g', '-G', '-v', '-q', '-u' to as-02-wrap
+ o Added ISXD support and option '-g' to as-02-unwrap
+ o Cleaned up definition of UL WaveAudioDescriptor_PeakEnvelopeData (currently
+     unused)
+ o Moved ReferenceAudioAlignmentLevel from WaveAudioDescriptor to
+     GenericSoundEssenceDescriptor
+
+
+2016-12-10 - MDD bug fix 2.7.19
+ o The previous version (2.7.18) contained incorrect MDD.cpp and MDD.h
+   files which affect the PIMF and JP2KEssenceCompression labels.
+
+
+2016-12-10 - bug fixes 2.7.18
+ o Fixed *all* Partiton version numbers in AS-02 files (the previous attempt
+   only affected the header partition)
+ o Improved IMSC-1 profile detection. May not yet be perfect, experimentation
+   encouraged!
+ o Added IMF App2e UL values and new MXF data types ColorPrimary and
+   ThreeColorPrimaries (contributed by Schleich)
+ o Added picture descriptor elements MasteringDisplayPrimaries,
+   MasteringDisplayWhitePointChromaticity, MasteringDisplayMaximumLuminance,
+   and MasteringDisplayMinimumLuminance
+ o Added -o and -O options to as-02-wrap 
+ o Fixed as-02-wrap option -p when making 4:4:4 files
+ o Simplified as-02-wrap syntax description
+
+
+2016-12-01 - bug fixes 2.6.17
+ o Fixed Partiton and Preface version numbers in AS-02 files
+ o Replaced WIN32 directory scanner with dirent_win.h
+ o The NamespaceURI property of AS-02 timed text files has been exposed in the API
+   and via as-02-wrap -P. This behavior replaces previous bad behavior, but puts
+   responsibility for selecting the correct value on the operator.
+ o Exposed CreatePNGNameId and CreateFontNameId subroutines in AS_02::TimedText
+ o Adjusted UUID generation based on PNG and font names to exclude paths by
+   inserting a call to PathBasename at each Id generation site
+ o Fixed AS-02 timed text index partition
+ o Fixed contents of generic partiton EssenceContainers property in AS-DCP timed
+   text files
+ o Added PixelLayout to RGBAEssenceDescriptor (contributed by Schleich)
+ o Cleared up MXFGCP1FrameWrappedPictureElement / MXFGCP1FrameWrappedPictureElement
+   ambiguity. PHDR continues to use MXFGCP1FrameWrappedPictureElement.
+   MXFGCI1FrameWrappedPictureElement is supported for interlace.
+ o Added support for 192, 200 and 240 fps images, includes 96, 100 and 120 fpe stereo
+ o Added missing MCA properties to MCALabelSubDescriptor (contributed by Ruppel)
+ o New MXF data type: LineMapPair
+ o Added default 0,0 VideoLineMap value when wrapping CDCI with as-02-wrap
+ o Added VideoLineMap property to GenericPictureEssenceDescriptor
+ o Added timed text unwrap support to as-02-unwrap (contributed by Ruppel)
+ o Added prototype PIDM dynamic metadata wrapping, config with --enable-phdr
+   (Not for production use, caveat emptor, not the droids, etc.)
+
+
+2016-08-11 - bug fixes, 2.5.15
+
+ o Modified as-02-wrap to pass WhiteRefLev, BlackRefLev and ColorRange
+    (contributed by Elmer Musser / Rod Bogart)
+ o Fixed a bug in the index reader that allowed an out-of-bounds vector index
+   to be used.
+ o Modified the IndexEntry parser to ignore additional bytes belonging to slice
+   values.
+
+
+2016-05-06 - bug fixes, 2.5.14
+
+ o Release 2.5.12 caused two problems with Atoms and DTS-X wrapping that are
+   addressed by this release. The UL values that were changed to correct the
+   DCData (ST 429-14) implementation had two unintended side-effects:
+     1. v2.5.12 cannot read old DCData (and thus DTS-X) track files
+     2. v2.5.12 creates broken Atmos track files (incorrect ULs)
+   The fix for this involved the following changes:
+     1. ASDCP::DCData::(MXFReader|MXFWriter) are no longer base classes of
+        ASDCP::ATMOS::(MXFReader|MXFWriter).
+     2. New UL values have been added to carry the original Atoms UL values:
+        a. DolbyAtmosDCDataWrappingFrame
+        b. DolbyAtmosDCDataEssence
+        c. DolbyAtmosDCDataDescriptor
+     3. ASDCP::ATMOS::(MXFReader|MXFWriter) have been modified to use the
+        DolbyAtmosDCData* UL values.
+     4. ASDCP::DCData::MXFReader will parse files having either DCData* or
+        DolbyAtmosDCData* UL values.
+     5. ASDCP::DCData:: MXFWriter continues to use DCData* UL values from ST
+        429-14
+  o Some optional parameters of the MXF metadata packs were being erroneously
+    initialized with a value of zero (0), such as GenericPictureEssenceDescriptor
+    ::SignalStandard, GenericPictureEssenceDescriptor::SampledXOffset(0), etc.
+  o Added higher edit rates (96, 100, 120) to the cinema TimedText_Parser
+
+  o Defined bool ASDCP::UL::operator<(const UL& rhs) const, which is needed to
+    carry out the version-insensitive lookup policy when searching for ULs in a
+    std::map<> of UL entries.
+  o New files:  src/info.in src/CMakeLists.txt
+  o Removed filess:  AS_DCP_DCData_internal.h
+
+
+2016-03-17 - bug fixes, 2.5.12
+ o Changed default UNIX file permissions to "666"
+ o Changed default UNIX file permissions to "777"
+ o Added missing initializer for caltime::offset
+ o Fixed UL values for Aux Data files (per ST 429-14)
+ o Added support for default TTML fonts (ST2052_TextParser)
+ o Added Solaris patch to KM_fileio (Thanks Mikey!)
+ o Fixed the version byte in UL DataEssenceCoding
+ o Fixed duplicate linkage error for symbol MIME2str
+ o Big patch from Wolfgang Ruppel:
+   o Corrected erroneous fixed-tag values in ActiveHeight, ActiveWidth,
+     ActiveXOffset, ActiveYOffset UL definitions.
+   o Provided a stub implementation for Kumu::DirScannerEx (A real
+     implementation will follow soon.)
+   o Added as-02-info program
+   o Added Seek() method to PCM parsers
+   o Added CMakeLists.txt
+
+
+2015-11-10 - bug fixes, IMF text, pink noise, 2.5.11
+ o I moved personal dev environment from older gcc to newer clang.  Many
+   small changes were made to satisfy the new compiler:
+   - Altered many printf format codes to use the correct format for the
+     given integer type.
+   - Parenthesized some expressions to clarify previously ambiguous
+     expectation about precedence.
+   - Created macro KM_MACOSX for use in OS-specific code selection.
+   - Removed last uses of the old C-language abs(), now using Kumu::xabs().
+   - Removed last uses of the old C-language atoi(), not using strtol().
+ o Added platform-independent call Kumu::GetExecutablePath() (to be tested
+   on win32).
+ o Added new capabilities to Result_t.
+ o Added imlementation of SMPTE ST 2092-1 pink noise generator.
+ o Added pinkwave CLI utility.
+ o Added font support to the IMF timed-text wrapper.
+ o Fixed a bug that was causing Array properties to be written without
+   the (count, length) header (from PAL).
+ o General review of Batch/Array distinction throughout the project.
+ o Cleaned up definitions of optional properties in all MXF metadata packs.
+ o Fixed Win32 build (from Crowe).
+ o Fixed a bug that caused incorrect failure when parsing JPEG 2000
+   codestreams having fewer than five decomposition levels. (from Korneder).
+ o Fixed missing UUID generation in some instances of the MCALinkID property.
+ o Added -w option to asdcp-wrap to support use of WTF label with MCA.
+ o Altered asdcp-wrap to recognize "-C <UL>" when MCA is being used.
+ o Fixed broken -A <w>/<h> option in as-02-wrap and phdr-wrap.
+ o asdcp-wrap and as-02-wrap now allow split channel groups in MCA labels.
+
+
+2015-02-23 - bug fixes, 2.4.10
+  o Fixed a new bug introduced by the fix to large numbers of subtitle ancillary
+    resources.
+  o Added support for generic Aux Data (ST 429-14) to asdcp-wrap.
+
+
+2015-02-19 - PHDR feature, bug fixes, 2.4.9
+  o Modified PCMParser and PCMParserList to return partial frame buffers at the
+    end of a WAV input file.  This was needed to allow wrapping all samples into
+    an AS-02 audio file (which is clip-wrapped) in the case where the input file
+    has an odd number of samples with respect to the frame buffer size being
+    used.  If there is more than one input file the length of the last buffer
+    will be determined by PCMParserList to be the shortest of the input files.
+    Prior to this change, partial samples in an input WAV file have been
+    abandoned (i.e., not written out to the MXF file).  As a result, AS-DCP
+    applications will have to decide whether to abandon the partial last frame
+    (usually detected by testing frame_buffer.Size() != frame_buffer.Capacity())
+    or write it to the MXF file.  Programs written to the old API will write the
+    partial frame (i.e., new behavior.)  This should not be harmful since the
+    remainder of the buffer is zeroed and the output file will contain one
+    additional edit unit compared to the previous version.
+  o asdcp-wrap has been modified to test for the partial buffer and by default
+    will complain and abandon the buffer (i.e., same behavior but with a warning
+    message.)  A new command line switch (-g) alters this behavior and writes
+    the buffer to the MXF file (it still warns the user that this condition is
+    present.)
+  o as-02-wrap now wraps all samples from the input file to the MXF file. There
+    is no padding, the clip is exactly the set of samples from the input.
+  o as-02 unwrap is temporarily restricted to creating wav files that are
+    aligned with the frame buffer size.  This means that the output file will
+    be longer than the original WAV input in the case where the input file has
+    an odd number of samples with respect to the frame buffer size being used.
+    The pad samples are zero (silence).
+  o Modified CalcFramesFromDurationInSamples() to increment the count by one for
+    the case where the input file has an odd number of samples with respect to
+    the frame buffer size being used (previously it truncated the odd samples.)
+  o Fixed ST 429-5 / ST 2067-5 wrapping to increase header space when ancillary
+    resources are present (fixes a bug that cause the header to overflow the
+    allotted space when large numbers of PNG files were present.)
+  o Refactored GetXMLDocType() to use the XML parser.
+  o Added ParseFirstFromString() method to Kumu::XMLElement
+  o Removed Kumu::StringIsXML from the API.
+  o Added ASDCP::MXF::RGBALayout type
+  o Added J2CLayout property to JPEG2000PictureSubDescriptor
+  o Changed km_token_split() to retain empty elements in the output list
+  o Added PHDR wrapping for AS-02.
+  o Added J2CLayout property to the JPEG2000PictureSubDescriptor.  This
+    support is preliminary: the Raw data type is being used instead of
+    RGBALayout type, which will be in the next release.
+
+
+2014-10-2 - Bug fixes and enhancements, 2.2.6
+  o Fixed erroneous 377-4 MCA identifier in AS_DCP_PCM dump routine
+  o Fixed erroneous byte 13 in
+    WaveAudioDescriptor_ReferenceAudioAlignmentLevel label
+  o Added missing implementation of -W option to as-02.unwrap
+  o Fixed erroneous use of d-cinema ChannelAssignment label in as-02-wrap
+
+
+2014-10-01 - Bug fixes and enhancements, 2.2.5
+  o Finished AS-02 text wrap/unwrap
+  o Fixed fractional seconds parsing for Timestamp objects
+  o Updated KLVPacket to use 64-bit length; allows huge packets
+    in AS-02 PCM files
+  o cleaned up use of atoi() in the library
+
+
+2014-07-09 - Additional IMF/AS-02 support, bug fixes and enhancements, 2.1.4
+  o Added IMF App 2 edit rates in AS_02 namespace: EditRate_29_97, 
+    EditRate_59_94. 
+  o Revised AEC CBC context objects to copy the key rather than  
+    keep the reference passed in to it.
+  o Addressed a bug that would allow unimpeded iteration of component 
+    values in a JP2K::PictureDescriptor object.
+  o Addressed a bug that was incorrectly recording the sequence Duration 
+    in MXF Track objects.
+  o Added ASDCP::AtmosSyncChannelMixer::AppendSilenceChannels()
+  o Added a QCD decoder to the j2c parser.
+  o Altered ASDCP::KLVPacket::HasUL() to use version-blind matching.
+  o Fixed an uninitialized variable in MemIOReader::ReadString() that  
+    caused unbounded reads.
+  o Fixed broken ByteString::ArchiveLength() method
+  o Fixed broken version numbers on SoundfieldGroupLinkID and  
+    GroupOfSoundfieldGroupsLinkID UL values.
+  o Added DBOXMotionCodePrimaryStream and DBOXMotionCodeSecondaryStream UL 
+    values to the internal dictionary.
+  o Added optional prefix handling to MCA label generator.
+  o Re-factored MCA label generator to include additional  
+    metadata (Thanks to Mike Radford).
+  o Added new options to as-02-wrap.
+
+
+2014-01-06 – Additional IMF/AS-02 support, bug fixes 2.1.1
+  o Fixed missing-index-partion bugs for AS-02 files.
+  o Moved LocalFilenameResolver into the AS_DCP public API so that it
+    can be used by other modules including AS-02.
+  o Did further refactoring of AS-02 Writer classes to separate CBR
+    and VBR indexing implementations.
+  o Fixed wave wrapping UL in clip-wrapped AS-02 files.  Renamed some
+    UL constants to reflect "clip" or "frame" wrapping.
+  o Re-factored JP2K_PDesc_to_MD() and MD_to_JP2K_PDesc() to work
+    with GenericPictureEssenceDescriptor objects.
+  o Fixed a bug that was suppressing PictureComponentSizing,
+    CodingStyleDefault and QuantizationDefault when writing the
+    essence descriptor in a JP2K file (AS-DCP and AS-02).
+  o Fixed the version byte on the following UL values:
+         StereoscopicPictureSubDescriptor
+         GenericPictureEssenceDescriptor_ColorPrimaries
+         GenericPictureEssenceDescriptor_ActiveHeight
+         GenericPictureEssenceDescriptor_ActiveWidth
+         GenericPictureEssenceDescriptor_ActiveXOffset
+         GenericPictureEssenceDescriptor_ActiveYOffset
+  o Added some essence descriptor options to as-02-wrap.
+  o Changed bit rate display in asdcp-info from mebi-bits/s to
+    mega-bits/s.
+  o Added "SMPTE" / "Interop" format type display to asdcp-info.
+  o Improved integration of ST 377-4 MCA concepts with ST 429-2 static
+    labels.
+  o Modified asdcp-wrap to assume -L when wrapping timed-text (since
+    there is no MXF text wrapping for Interop.)
+  o Added new EssenceType_t values for IMF/AS-02 track files.
+  o Added detection for AS-02 track files to ASDCP::EssenceType()
+  o Changed lots of "const char*" to "const std::string&" in the
+    APIs defined by KM_fileio.h and AS_DCP.h.
+  o Fixed VBR Delta Segment entries to correctly flag progressive
+    material.
+  o Fixed PCM unwrapping bugs in as-02-unwrap.
+  o Fixed missing return statement in ArchivableString::ArchiveLength
+    (thanks to both Kristof Provost and Franck Chopin) 
+  o Fixed broken sample alignment in RF64Writer (thanks to Wolfgang
+    Woehl and Dolby)
+  o Fixed win32 build (thanks to Dolby)
+  o fixed a bug that caused blackwave to only produce 96kHz WAV files.
+    (thanks to Stephane W)
+
+
+2013-07-02 – IMF/AS-02 support, bug fixes 2.0.0
+  o Massive refactoring of internals to allow easier implementation
+    of AS-02.  Some API changes were made as well (note that
+    OPAtomHeader is now OP1aHeader and RIP is no longer part of the
+    OP1aHeader.)  If you are using this project as a library (and
+    especially if you are keeping patches against it) PLEASE TAKE
+    TIME TO EVALUATE THIS RELEASE THOUROUGHLY BEFORE ADDING IT TO
+    YOUR RELEASE PATH.
+  o Final integration of Fraunhoffer IIS code contribution.  AS-02
+    files are now fully supported with some TODOs and two major
+    exceptions: LEAD indexes are not supported by the MXF writers
+    and interlace images are not yet supported.
+  o Added support for MCA labels (ST 428-12) to asdcp-wrap.  Note
+    that this project is still in the early stages of interop testing
+    so errors are likely present and don't expect any server to
+    make use of this feature.
+
+
+2013-07-01 - Bug fixes, enhancements 1.12.50
+  o Fixed missing return statement in ArchivableString::ArchiveLength
+    (thanks to both Kristof Provost and Franck Chopin) 
+  o Fixed broken sample alignment in RF64Writer (thanks to Dolby)
+  o Fixed win32 build (thanks to Dolby)
+
+
+2013-04-12 - Dolby Atmos support and more audio labels 1.11.49
+  o Significant code contribution from Dolby Laboratories to add
+    support for generic data track files as proposed in ST 21DC
+    and also Dolby Atmos track file support as a specialization.
+  o Added Dolby-contributed code to support generating the external
+    sync signal for d-cinema as proposed in ST 21DC.
+  o Added Dolby-contributed code to support RF64 WAVE files.
+  o Fixed UL error in ST 429-5 DM encoding (contributed by Dolby).
+  o Added ULs for ST 428-12 and Amd. 429-2 2013.  Please check!
+
+
+2013-02-20 - bug fixes, enhancements 1.10.48
+ o Refactored internals of the AS-DCP file readers.  While no
+   changes in behavior are intended, users are cautioned to test
+   thouroughly before use in production.
+ o Fixed a bug in ReadAncillaryResource that was causing bogus HMAC
+   failures when reading resources from a file.
+ o Fixed premature-release bug in the Expat version of the XML parser.
+   Thanks to Carsten Feldheim (IIS) for the tip.
+ o Fixed -W option in asdcp-unwrap.  Thanks to RGB.
+ o Added P-HFR support to asdcp-wrap (see URL for details:
+   http://isdcf.com/papers/ISDCF-HighFrameRate-DCP.pdf).
+ o Added support for SMPTE ST 428-21 "Archival Frame Rates".
+ o Added -P option to asdcp-wrap (inserts arbitrary UL into the
+   PictureEssenceCoding property when wrapping JP2K files.)
+ o Added support for 96 kHz files to blackwave.
+ o Added new path and string manglers to Kumu.
+ o Updated MCA ULs (I warned you...).  Again please take some
+   time to proof this work against ST 477-4 including the latest
+   drafts of the registries.
+       Changed the version byte (8 0f 16) to 0x0e:
+           MCALabelSubDescriptor
+           AudioChannelLabelSubDescriptor
+           SoundfieldGroupLabelSubDescriptor
+           GroupOfSoundfieldGroupsLabelSubDescriptor
+          GroupOfSoundfieldGroupsLinkID
+       Changed bytes 8 and and 13 of SoundfieldGroupLinkID
+       Added items to the UL dictionary:
+          MCAPartitionKind
+          MCAPartitionNumber
+          MCATitle
+          MCATitleVersion
+          MCATitleSubVersion
+          MCAEpisode
+          MCAAudioContentKind
+          MCAAudioElementKind
+
+
+2012-08-07 - bug fix, 1.10.46
+ o Added missing zero-initializers to time values when parsing a
+   timestamp string (in the case where the optional [Thh:mm.[:ss]]
+   syntax is not present in an encoded string).
+
+2012-03-06 - bug fixes, enhancements 1.9.45
+ o Removed ASDCP::Timestamp, all items that were of that class are now 
+   of class Kumu::Timestamp
+ o Refactored Kumu::Timestamp to use KM_tai for internal representation 
+   (replaced public Y M D, h, m, s variables)
+ o Refactored Kumu::Timestamp to use KM_tai for WIN32 builds
+ o Added UTC offset awareness to Kumu::Timestamp
+ o Replaced "long GetSecondsSinceEpoch(void) const" with 
+   "ui64_t GetCTime() const"
+ o Corrected UL version segment in "7.1 DS" and "WTF" audio format
+   labels (corresponds with publication of ST 429-2:2011).
+ o Exposed MXF object interface (MXF.h, Metadata.h) via ASDCP MXFReader
+   and MXFWriter classes.
+ o Added UL values from ST 377-4:2012. >>>>NOTE: These are preliminary
+   values, subject to change upon final publication of not only ST 377-4
+   but also the relevant registries.  This is a good time to compare them
+   to the standard and complain if you think they are wrong!
+ o Added MCALabelSubDescriptor, AudioChannelLabelSubDescriptor,
+   SoundfieldGroupLabelSubDescriptor, and
+   GroupOfSoundfieldGroupsLabelSubDescriptor (from ST 377-4:2012) to
+   Metadata.h
+ o Changed some internals to make MXFWriter::OPAtomHeader() work correctly.
+ o Split asdcp-test into several different programs to help relieve
+   the impenetrable-list-of-arguments problem. asdcp-wrap, asdcp-unwrap
+   and asdcp-info take the place of asdcp-test's -c, -x and -i options,
+   respectively.  asdcp-util contains the remaining functions. Note that
+   asdcp-test is now DEPRECATED, new functionality and bug fixes will be
+   aimed at the new tools.  Also note that some options and calling
+   conventions are different for the new tools as compared to asdcp-test.
+   Please read the synopses and make sure you understand the new idioms.
+ o asdcp-wrap has a new argument, -C <UL>, that writes the given UL to the
+   ChannelAssignment item in the WaveAudioDescriptor (only useful when
+   writing PCM essence).
+
+
+2011-11-30 - bug fixes v1.8.44
+ o Corrected a wrong decryption UL selection when unwrapping MXF.
+
+
+2011-10-27 - bug fixes v1.8.43
+ o Corrected broken Essence UL matching. (Thanks to Michael Loder).
+
+
+2011-08-31 - bug fixes v1.8.42
+ o Added missing HFR support for PCM essence reader/writer.
+
+
+2011-08-30 - bug fixes, enhancements v1.8.41
+ o UL version byte now ignored when comparing UL values.
+ o Changed the version byte in the TimedTextEssence UL to 0x01.  There
+   is no published Essence Keys registry so it can't have a maintained
+   version number.
+ o JP2K Sequence Parser modified to skip directory entries that
+   are not files in the case where the parser is initialized with
+   a directory path.  When initialized with a list of file names
+   this check is not performed.  Based on a hint by Steve Quartly.
+ o Increased the size of the MPEG header parser buffer.
+ o Added missing FrameType() implementation to ASDCP::MPEG2::MXFReader.
+ o Added missing Close() implementations to MXF reader classes.
+ o Added missing Timestamp::Timestamp(const char* datestr) implementation.
+   (Thanks to Matt Sheby for this and the previous three items.)
+ o Fixed error in Kumu::FortunaRNG::FillRandom() that was returning the
+   end of the random buffer instead of the front (Thanks to Mike Radford).
+ o Added support for proposed sound channel format identifiers
+   '7.1DS' and 'WTF'.  Optimistically chose version '0x0c'.
+ o Added support for stereoscopic images in JP2K files at edit
+   rates of 48, 50 and 60 eups (96, 100 and 120 fps).
+
+
+2010.11.15 - bug fixes, enhancements v1.7.40
+ o Fixed bug in long KLV packet support (Thanks to Jim Radford).
+ o Fixed AvgBps in PCM files, *again*. Sorry for the crazy.
+ o More fixes and changes in support of 25, 30, 50, 60 fps.
+   (Thanks to Hans K. for the TC rate bug).
+ o Updated KLVFill UL version element to 0x02.
+ o Type change to support Xerces-C 3.x. (Thanks to Matt Sheby).
+ o Some internal API changes to KLV types. Does not affect
+   operation.
+ o Added NetworkLocator type to MXF metadata types.
+ o Added file offset display to klvwalk.
+
+
+2010.09.09 -  bug fixes, enhancements, v1.7.39
+ o Fixed bug in JP2K PictureDescriptor initialization in
+   JP2K::MXFReader::OpenRead() and JP2K::MXFSReader::OpenRead()
+ o Once again fiddling with AvgBbs. How can something so simple
+   be such a constant cause of trouble? Tested with 1-, 2- and
+   6-channel input Wav files.
+ o asdcp-test now accepts a directory name when making PCM
+   files (-c). The directory name should be the only filename
+   argument. All files in the directory must be Wav files
+   (mixed channel sizes OK). Files are sorted alphabetically by
+   filename. Hint: use numeric name infix to define order:
+   my_movie_00_L.wav
+   my_movie_01_R.wav
+   my_movie_02_C.wav
+   my_movie_03_LFE.wav
+   my_movie_04_LS.wav
+   my_movie_05_RS.wav
+
+
+2010.07.20 -  bug fixes, v1.6.37
+ o Fixed TimedTextResourceSubDescriptor UL value.
+
+
+2010.06.16 -  bug fixes, v1.6.36
+ o Added support for new Edit Rates to asdcp-test.cpp.
+ o Expanded timed-text file reader in asdcp-test.cpp.
+ o Fixed large BER value encoding (plaintext) and decoding
+   (plaintext and ciphertext). This feature was introduced in
+   v1.5.31).
+ o Fixed AvgBps value for multi-channel Wave input.
+
+
+2010.05.13 -  bug fixes, enhancements, v1.6.34
+ o ST 429-5 files have corrected ULs for DCTimedTextDescriptor and
+   GenericStream DataElement. Files made with previous versions of
+   the library are incompatible with this and future versions.
+ o Fixed File Package TrackNumber values. Th
+anks to Sankar.
+ o Added edit rate constants to AS_DCP.h (25, 30, 50, 60).
+ o Changed AudioDescriptor "SampleRate" element name to "EditRate"
+   to make it consistent with the other types.
+ o Now builds with XercesC 3.x.
+ o KM_memio.h has better const behavior.
+ o Fixed a bug in KM_memio.h string archiving.
+
+
+2010.01.05 -  bug fixes, enhancements, v1.5.32
+ o Re-fixed swapped Interop and SMPTE OP Atom UL values. The swap
+   introduced in v1.5.31 was done in error.
+ o Added -z,-Z options to asdcp-test (j2c parameter checking)
+ o Reformed jp2k-test as j2c-test, added help and list processing,
+   added to standard install target.
+
+
+2009.12.31 -  bug fixes, enhancements, v1.5.31
+ o Fixed swapped Interop and SMPTE OP Atom UL values.
+ o Added get_BER_length_for_value() subroutine.
+ o Modified ASDCP::h__Writer::WriteEKLVPacket() to allow larger BER
+   lengths for KLV packets larger than 16 MB. This was required to
+   support large font files in the SMPTE 429-5 implementation.
+
+
+2009.11.06 - bug fixes, enhancements, v1.5.29
+ o Fixed a bug that could cause HMAC values to be incorrectly
+   stored in MXF files.  Files created with versions of asdcplib
+   prior to this version may have incorrect HMAC values. 
+ o Improved handing of XML files for MXF wrapping.  
+ o Jpeg2000 codestream EditRate and SampleRate mismatches
+   now warns instead of returning an error. 
+ o Improved error handling in Jpeg2000 sequence parsing routines.  
+ o Added two methods to Kumu::Timestamp, AddSeconds(), to add (or
+   subtract) seconds to a time value, and GetSecondsSinceEpoch()
+   to get the number of seconds since the unix epoch.
+ o Added new option to asdcp-test, '-a', to specify a UUID when
+   creating MXF files.
+ o Added support for specifying the intrinsic duration of MXF files
+   containing timed text.
+ o Added new option to wavesplit, '-i', to display WAV file metadata.
+
+
+2009.05.21 - bug fixes, v.1.4.24
+ o Fixed a bug that caused incorrect SubDescriptors UL values to be 
+   written into interop format MXF track files.  Note that this involved
+   a substantial reorganization of MXF internals.  Please test thoroughly
+   in your application before using in production.  Note that this is a 
+   significant bug fix and track files created with 1.4.22 may be incompatible
+   with other systems.  
+
+
+2009.04.09 - SMPTE format fixes, enhancements and bug fixes, v.1.4.22
+ o asdcplib now uses GNU autotools on POSIX systems to configure 
+   and build.  See "./configure" for details.  Note that two options, 
+   --enable-freedist and --with-python are not enabled in the free
+   version of asdcplib and should not be used.  
+ o Added build option (CONFIG_RANDOM_UUID) to enable mixed case UUID
+   generation when environment variable KM_USE_RANDOM_UUID is defined.
+ o Fixed a condition that could cause an error to occur when wrapping 
+   SMPTE format timed text track files that do not define a starting 
+   frame.
+ o Updated ULs for SMPTE format track files.
+ o SampleRate added to JP2K metadata
+ o Support for wrapping 96kHz WAV files added.
+ o Updated ULs for audio channel formats  (ChannelFormat)  
+ o Updated font subdescriptor MIME Types for TimedText Trackfiles.
+ o Changed time implementation to support dates beyond Jan 19th, 2038.
+ o Xerces-C XML parser support added.  
+ o New build method for Windows (see win32/README.txt for details).
+ o Added new functionality in Kumu to recursively create and delete files 
+   and directories, and get free disk space for a given volume path.
+ o Added a method to Kumu::Timestamp, AddMinutes(), to add (or subtract) 
+   minutes to a time value.  
+ o Improved how Kumu::Timestamp parses timestamps with offsets. 
+ o Fixed a bug that caused incorrect HMAC values to be calculated.
+
+
+2008.02.16 - SMPTE format fixes, bug fixes v.1.3.18
+ o Added correct SMPTE UL for StereoscopicPictureSubDescriptor.
+ o Exposed JP2K metadata parser as ParseMetadataIntoDesc().
+ o Added simple stereoscopic framebuffer to support paired ReadFrame()
+   and WriteFrame() methods (allows simpler integration with other
+   single-buffer code).
+ o Improved detection of JPEG Interop stereoscopic files.
+ o Win32 build fixes (Thanks to Mike Crowe at DTS).
+ o Added the WITH_MD macro to the makefile. Set this value to one
+   to build Win32 with /MD[d] instead of /MT[d].
+ o The Generic Container UL has been added to the EssenceContainers
+   set in the header partition pack for encrypted files. It has always
+   been there in plaintext files.
+ - Below this point the changes are internal and should not affect you
+   unless you use Kumu directly.
+ o Major refactoring of KM_log.[h|cpp].
+ o Fixed buffer re-sizing issue in Kumu::ByteString.
+ o Replaced type IdentifierList with ArchivableList.
+ o Added COPYING file to the release bundle.
+
+
+2007.12.13 - Bug fixes v.1.2.17
+ o Changed Result_t implementation to use int instead of long, which
+   was causing trouble on some 64 bit platforms.
+ o Fixed EKLV HMAC. NOTE: Breaks backward compatibility with older
+   Interop files. To validate these files, use asdcplib-1.1.14. This
+   should not cause too much trouble since files with broken and
+   non-broken HMAC have been in the wild for years without issue.
+ o Fixed HMAC sequence numbering in encrypted stereoscopic files.
+ o Finished stereoscopic test targets in the makefile.
+ o Fixed the win32 build, now expects VS2005 compiler by default,
+   use WITH_VC6=1 top get VC6 flags.
+ o Stereoscopic and Timed Text modes now have SMPTE UL values.
+   NOTE: SMPTE 429-5 and 429-10 are not yet published. It is possible
+   that these UL values may change before publication. Please use
+   caution when using these features for production work.
+ o Changed a bunch of symbol names in the 429-5 implementation to
+   better match the spec.
+ o Added -U option to asdcp-test to dump the UL library to stdout.
+ o Fixed erroneous placement of the PictureEssenceCoding UL in JP2K
+   files (Interop and SMPTE modes).
+
+
+2007.10.22 - Timed Text, Stereoscopic Picture and Bug fixes v.1.2.16
+ o Significant API changes have been made. Please read all entries
+   in this changelog to be sure you understand the changes. Also
+   note that some changes have been made to LS_MXF_SMPTE files that
+   are incompatible with earlier releases (e.g., EKLV HMAC). If
+   you are looking for a stable interop release, use  v.1.1.14.
+ o Fixed RFC 2104 HMAC implementation for LS_MXF_SMPTE only. The
+   broken implementation has been maintained for Interop mode.
+ o Added support for draft SMPTE 429-5 Timed Text Track File. This
+   is still waiting for official SMPTE ULs, so do not use it for
+   shipping products.  An XML parser is needed to create a Timed
+   Text Track File; Expat is now an optional part of the build.
+   Make with WITH_XML_PARSER=1 to link with Expat. If you do not
+   link with expat, you will get an error when using the TimedText::
+   DCSubtitleParser class. See also S429-5-cgi.cpp for an example
+   that shows how to serve plaintext MXF file elements directly via
+   HTTP.
+ o Added support for draft SMPTE 429-10 Stereoscopic Picture Track
+   File, including the JPEG Interop version. This is still waiting
+   for official SMPTE ULs, so do not use it with LS_MXF_SMPTE for
+   shipping products.  
+ o Refactored the following files as a side-effect of the above
+   work: AS_DCP_JP2K.cpp AS_DCP_MPEG2.cpp AS_DCP_PCM.cpp
+   AS_DCP_MXF.cpp AS_DCP_internal.h MXF.[h|cpp] MXFTypes.[h|cpp]
+   Metadata.[h|cpp] h__Reader.cpp h__Writer.cpp klvwalk.cpp.
+   WARNING: While significant effort has been extended to make sure
+   that these changes do not affect existing stable file support,
+   users are cautioned to test this release thouroughly.
+ o Added a large set of filesystem path manglers to KM_fileio.h. See
+   path-test.cpp for example usage. The path manglers have not yet
+   been tested on win32 platforms (they are currently used only by
+   the Timed Text module.
+ o The PathIsFile(), PathIsDirectory() and FileSize() subroutines
+   have been modified to accept const std::string& instead of
+   const char*.
+ o Added namespace and parsing support (Expat) to Kumu::XMLElement
+   (currently used only for Timed Text support). Also added some
+   new accessors.
+ o Altered MXF::UTF16String to use mbtowc() and wctomb().
+
+
+2007.03.31 - Bug fixes v.1.1.14
+ o Fixed KeyFrameOffset value in MPEG wrapping to have negative
+   value. This is probably not yet complete for handling all
+   types of GOPs. Please send chunks of MPEG-2 VES that you
+   find which break this. Thanks to Doremi.
+ ** no other file format changes in this release **
+ o Fixed error in RIP interpretation when reading arbitrary (i.e.,
+   non-MXF) files.
+ o Fixed a memory leak in ASDCP::MXF::OPAtomHeader when used
+   in read mode. Thanks to Mahesh Bajaj for pointing out this
+   bug and the one above.
+ o Removed asserts from KM_fileio, replaced with RESULT_WRITEFAIL
+   return value statements.
+ o Added -s and -p to the makefile install target.
+ o Altered ByteString behavior to use target Length() in copy
+   operations (instead of Capacity()).
+ o Added new Set() method to ByteString.
+ o Fixed a bug in ByteString::Unarchive() that caused the operation
+   to fail when the buffer was smaller than the read (i.e., when
+   Capacity() was called).
+ o Added IdentifierList class to KM_util.h.
+ o Changed some Error() messages to Debug() in Wav.cpp
+ o Revived jp2k-test.cpp and asdcp-mem-test.cpp (they both had
+   stale #includes).
+
+
+2007.02.15 - Bug fixes v1.1.13
+ o Removed 'VDescObj->SampleRate.Numerator = VDesc.FrameRate;'
+   from MPEG2_VDesc_to_MD() in AS_DCP_MPEG2.cpp, was line 76.
+ o Added KM_TEST_NULL_STR_L() and KM_TEST_NULL_L() macros to
+   KM_log.h. These versions log the location of the null value.
+   Macros are now used in any module that includes KM_log.h.
+ o MPEG2 VES with run of zero values at the head is now OK.
+ o Increased VESHeaderBufSize to 16K.
+ o Added makefile support for local OpenSSL in ../openssl, if
+   present.
+ o The Kumu::PathIs*() functions now return false if a null or
+   empty string is given (used to be an assert).
+ o Cleaned up the install target in the makefile.
+ o Fixed SMPTE 429-6 HMAC -- FIPS 186-2 implementation was
+   laughably incorrect. Thanks to Doremi for pointing this out.
+ o Removed default parameter to HMACContext::InitKey().
+ o Cleaned up messages and CLI arg handling in asdcp-test.
+
+
+2006.11.19 - Mo better stuff v1.1.12
+ o Changed read-only Result_t accessor methods to const.
+ o Added Base64 (-B) option to kmrandgen.
+ o Removed 16-bit alignment restriction from kmrandgen.
+ o Improved WAV file extraction speed (Thanks to Jim Radford
+   for pointing this out).
+ o Added single-channel split for WAV extraction (asdcp-test -1).
+ o Fixed remainder bug in h__RNG::fill_rand().
+
+
+2006.11.03 - Bug fixes v1.1.11
+ o Increased index table entry list size to 5000.
+ o Added length checking to TLV writer (returns error if TLV
+   payload exceeds 64kB).
+ o Fixed partition header and RIP errors related to 2-partition
+   files (MXF Interop mode).
+ o Added -t option to asdcp-test (SHA-1 digest with Base64 output
+   on stdout).
+ o Fixed Sub Descriptor reference bug (Thanks to Denis Leconte
+   for dogged determination).
+ o Added directory-of-wav detection to RawEssenceType()
+ o Modified MXF::Partition::AddChildObject() to only generate
+   a UUID if the InstanceID is unset.
+ o Added ComponentMaxRef & ComponentMinRef to RGBAEssenceDescriptor.
+   More to follow.
+ o Added detection of 2K/4K jp2c, writing correct 4K metadata.
+
+
+2006.10.05 - Bug fixes v1.1.10
+ o Changed RM_RELEASE to RL_RELEASE in MXFTypes.h.
+ o Changed the MXF writer to use RL_RELEASE (was RL_DEVELOPMENT).
+ o Really fixed source reference chain.
+ o Updated JP2K file package label.
+ o Changed location of JPEG2000PictureSubDescriptor in the
+   header (was erroneously before Preface).
+ o Altered LS_MXF_INTEROP to produce 2-partition files.
+
+
+2006.09.25 - Bug fixes v1.1.9
+ o Fixed SourcePackageID value. All files will be 'original',
+   i.e. SourcePackageID will be all zeros. Let me know if you
+   want to set SourcePackageID.
+ o Fixed compiler warnings on some Linux platforms
+ o Fixed the build so that BUILD_DIR is no longer created
+   as a dependency.
+ o Added duration detection to the raw essence parsers. The
+   MPEG parser uses a nasty approximation so don't use it
+   without paying close attention to the result.
+ o Modified PCMParserList to make it more useful as a base
+   class.
+ o Fixed bugs and re-organized command-line help in asdcp-test
+   and klvwalk.
+ o Fixed two-partition file reads.
+ o Fixed Win32 PRNG initialization.
+ o Renamed asdcp-lf-test as kmfilegen.
+ o Added kmrandgen and kmuuidgen.
+ o Added string retrieval mechanism to Result_t.
+ o Refactored Kumu::Identifier and its sub-classes.
+ o Altered Kumu::PathIsFile to return true when the path
+   is a symbolic link (unix only).
+ o Altered Kumu::FileWriter::OpenWrite to use file creation
+   mode 0664 (was 0644) (unix only).
+ o Added Kumu::WriteStringIntoFile() subroutine.
+
+
+2006.04.05 - Bug fixes and new stuff v1.1.7
+ o Fixed a bug in the MPEG parser that caused it to fail when
+   handling start codes spanning buffer boundaries
+ o Added wavesplit and blackwave utility programs
+ o Added support for revised SMPTE HMAC key derivation when
+   using LS_MXF_SMPTE
+ o Refactored platform compatibility and general utilities
+   into a new sub-library "Kumu". There are no new build
+   steps or dependencies, but some important things have
+   changed:
+   + Result_t is no longer an enum, it is now a class.
+     Library result codes are now declared as const objects
+     like this:
+
+     const Kumu::Result_t RESULT_FORMAT (-101, "The file...");
+
+     The macros ASDCP_SUCCESS and ASDCP_FAILURE still work
+     the same way thanks to an operator overload for type long.
+     See KM_error.h for more information.
+   + The logging interface has been moved out of AS_DCP.h
+     and into KM_log.h
+ o Some of the command line utilities that were using headers
+   other than AS_DCP.h have been changed to use the Kumu
+   equivalents. If you have code based on those utilities, you
+   will have to update by hand.
+ o Added new types to the EssenceType_t enum.
+ o The guard macro for Win32 code has changed from WIN32 to
+   KM_WIN32.
+
+
+2006.03.2x - new stuff
+ o Proper handling of stream-id byte of essence UL values
+ o writes 3-partition files, reads 2-part or 3-part
+
+
+2006.03.16 - bug fixes plus
+ o Removed SMPTE_LABELS compile-time option. The reader will now
+   silently accept either SMPTE or MXF Interop labels, the writer
+   can be instructed which to use at runtime. Default is Interop.
+ o Added an AIFF reader. Support is preliminary, it works with the
+   AIFF files I have on hand.
+ o More code refactoring. More to come.
+
+
+2006.03.09 - full read-write
+ o Removed ASDCP_WITHOUT_OPENSSL compile-time option.
+ o Full read/write now working on new MXF library
+
+
+2005.00.00 - A New Hope
+ o The temporary mxf-lite has been removed. MXF files are now 
+   managed via the objects in KLV.h, MXFTypes.h MXF.h and
+   Metadata.h. This release does not support writing MXF files.
+ o Fixed a header interpretation error in the Wav parser.
+
+
+2005.00.00 - The Reformation
+ o Removed mxflib as a dependency by forking the necessary
+   functions and placing them in the mxf-lite subdirectory.
+   Please note that the very heavy modifications done here
+   render all comparisson to mxflib code a substantial task.
+   All errors are now mine and users are warned not to bug
+   Oliver or Matt for help with this code. The version of
+   mxflib at the time of the fork was: 0.5.1.3.
+
+
+2005.06.03 - bug fixes v0.10.18
+ o Updated UL batch to include GC UL.
+
+
+2005.05.27 - bug fixes v0.10.17
+ o Un-did essence container and compression descriptor changes.
+   The default build reflects MXF Interop decisions as of 26 May.
+ o Added note about build versions to README (see above).
+ o Added warnings to SMPTE_LABELS builds.
+ o Fixed JP2K essence container label.
+
+
+2005.05.02 - bug fixes v0.10.16
+ o Reorganized internal files, added file reader object, added OS
+   portability header, removed and renamed some files. If you have a
+   patch against previous versions of the source, you should check
+   it thoroughly.
+ o Added RGBA attributes to JP2K descriptor.
+ o Changed interface to CodestreamParser.
+ o Added JP2K parser implementation. It is parsing each frame but is
+   not yet being used to populate the descriptor.
+ o Added 48fps option for `asdcp-test -p`.
+ o Added picture rate constants to AS_DCP.h (23.976, 24, 48).
+ o Added sample rate constant to AS_DCP.h (48k).
+ o Changed asdcp-test to encrypt picture headers by default
+   (plaintext offset will be 0), added -E option to allow
+   plaintext headers.
+
+
+2005.04.28 - bug fixes v0.9.15
+ o The XML descriptors for the crypto DMS have moved in mxflib to
+   the file DMS_Crypto.xml (they were in DMS_DCPENC.xml).  Older
+   installations should update the file from mxflib.
+ o Added Close() and Seek() to ~MyFileWriter(), cleaned up headers
+ o Added UUID generator output mode (-u).
+ o Added -S option to extract PCM essence into stereo wav files
+ o Added more UL testing and conformance checking.
+ o Added macro SMPTE_LABELS which causes the library to be built
+   with SMPTE (as opposed to MXF Interop) labels. This is not
+   set by default, and currently only affects the PCM container
+   label and encrypted element label.
+ o Cleaned up the GNUmakefile test targets, the source files
+   are now named with the TEST_FILE_PREFIX macro.
+ o enabled 23.976-framed PCM (2002 samples per frame)
+ o The size of the asdcp-test frame buffer for picture essence
+   may now be set from the command line (-b).  The default is 4MB.
+ o h__Reader::ReadEKLVPacket() now tests the UL (duh) and switches
+   on the value, allowing plaintext and ciphertext frames to
+   be mixed in the file.
+ o Fixed error in UUID generator format.
+ o JP2K files now use the GenericPictureDescriptor to store
+   ContainerDuration and SampleRate. SampleRate is mapped
+   to EditRate in the PictureDescriptor struct. This fixes
+   the second caveat from the 0.8.13 release.
+ o Fxed bug in PCMParserList that was miscalculating the extent
+   of a PCM sample.  This bug did not affect API users, it was
+   only present in asdcp-test.
+ o Fixed EditRate on PCM files (was showing sample rate)
+ o Fixed Encrypted Essence Container UL
+ o Fixed BlockAlign value for PCM essence
+
+ - The following changes were provided by Jeff Loewenguth
+ - Thanks Jeff!
+ o Moved the DMS CryptographicFramework entry from the material
+   package to the source package
+ o Fixed erroneous Source Essence Container Label value
+ o Fixed broken sort of JP2K frames in JP2K parser
+ o Added FindFrameGOPStart() method to the MPEG2 MXFReader
+ o Added missing length values for EKLV packets without HMAC
+ o -x with JP2K essence writes to files with 6 digit names
+   (up from 5 digits).
+ o The Key ID may now be specified as an argument to asdcp-test
+    (-j <key-id-string>)
+
+
+2004.12.30 - bug fixes + wav files v0.8.14
+ o Added WAV file write to asdcp-test (uses mxflib::waveheader_t).
+ o Three-partition files reading properly.  adscplib still writes
+   two-partition files.
+ o Changes in the mxflib WAV essence parser API had broken
+   asdcplib's ability to read essence from a WAV file.  I have
+   fixed this bug, but at the expense of breaking compatibility
+   with older versions of mxflib. Beware!
+ o Removed redundant (but working) bin-text-bin conversions.
+
+
+2004.12.23 - JPEG 2000 support v0.8.13
+ o Reads/writes JPEG 2000 essence in plaintext and ciphertext
+   with the following caveats:
+    - The Picture Essence Descriptor is empty.
+    - Because there is no essence descriptor, the reader code
+      in asdcp-test has no idea how many frames are in the file
+      and ends with an out-of-bounds frame error.  This error
+      is being suppressed in asdcp-test for the current release.
+ o Still broken when reading three-partition files.
+
+
+2004.10.22 - fixes and UL updates v0.7.11
+ WARNING: COMPATIBILITY BREAKPOINT
+ Files created with this and future versions of this library are
+ not compatible with previous versions of this library.  As you
+ might suspect, files created with previous versions of this
+ library are not compatible with  this and future versions.
+
+ o h__Reader will now open a three-partitition file (untested)
+ o Moved DMS from Material partition to File partition
+ o Added length fields to appropriate places in EKLV packet 
+
+
+2004.10.22 - fixes and UL updates v0.7.10
+ o fixed frame buffer handling of externally allocated buffer,
+   created unit test (asdcp-mem-test)
+ o added operator==() and operator!=() to Rational type
+ o fixed some type-related compiler warnings
+ o asdcp-test -p now works on unwrap
+ o updated some ULs to match documentation (thanks to Arun
+   for the submission)
+ o canonicalized line endings
+
+
+2004.07.02 - full plaintext + ciphertext read/write v0.6.9
+ o HMAC, plaintext offest and raw ciphertext read supported
+ o back to proper CBR index
+ o MPEG temporal offset working
+
+
+2004.07.01 - plaintext + ciphertext read/write v0.5.8
+ o encryption of MPEG and PCM essence supported with the
+   following caveats:
+   - no HMAC support
+   - no plaintext offest support
+   - no raw ciphertext read support
+ o moved to reflecting the whole KLV triplet in the CBR
+   index (now incompatible with mxflib, still searching
+   for info about what's "right")
+ o awaitng the following fixes/features:
+   - retrieve Temporal Offset from index in MPEG2::Reader
+   - test for correct ULs when reading frame triplets
+   - fix header metadata items for encrypted files
+   - HMAC support
+   - plaintext offest support
+   - raw ciphertext read support
+
+
+2004.06.14 - plaintext read/write w/key generator v0.4.5
+ o Project now uses OpenSSL (tested with 0.9.7d on win32, Linux, Darwin)
+   Use `make ASDCP_WITHOUT_OPENSSL=1` to make plaintext-only version
+ o Accepts interior I frames when parsing MPEG2 VES
+ o Improved error reporting on format errors
+ o Added support for encryption to asdcp-test
+ o Added RNG for asdcp-test (non-production use only, see notes in FortunaRNG.h)
+ o Implemented CBC encrypt, decrypt module
+ o Added partial TemporalOffset retrieval from MPEG2 parser
+ o Fixed win32 binmode bug
+
+
+2004.05.12 - plaintext read/write v0.3.4
+ o Full read/write of plaintext MPEG-2 VES and WAV files
+   (does not yet support mux from or demux to 2 channel pairs)
+ o Builds with autoconf-based mxflib
+ o Added ASDCP_ prefix to macros
+ o Updated documentation, fixed documentation errors
+ o Simplified API for MXF writer setup
+ o Decoupled essence parsers from MXF writers
+ o added raw ciphertext support to FrameBuffer
+ o Cleaned up Get/Set naming confusion
+ o Added missing const qualifiers
+
+
+2004.04.27 - preview release v0.2.1
+ o hasty release for quick review
+ o this release may not build with mxflib using autoconf.
+ o writes plaintext AS-DCP MPEG2 essence files
+ o tested under win32 and linux. FreeBSD and Darwin do not work
+
+
+2004.02.04 - First release (v0.1.1):
+ o asdcp-test is mostly complete. It should correctly provide
+   access to the read and info capabilities of the library.
+ o The MPEG2 reader is functional but not fully tested.
+ o Some file format integrity tests remain to be coded.
+ o The PCM reader is mostly complete, I am having difficulty
+   getting a suitable test file from mxfwrap.
+ o The makefile creates a static library module. The API
+   will cleanly support a DSO (or DLL). Let me know if DSO
+   support is important to you.
+ o Nothing is thread safe. Thread safety was not a requirement
+   in the initial project definition. Thread safety may be added
+   above the mxflib/klvlib level. Let me know if it is important
+   to you.
+ o The files xmldict.xml and types.xml must be in the current
+   directory when the program is run. The files are supplied
+   with mxflib. Runtime location of the files is not currently
+   a project goal. Comments on how best to handle this situation
+   would be appreciated. See AS_DCP.cpp at init_mxf_types()
+   for a more detailed discussion.
+
+--
diff --git a/README b/README
deleted file mode 100755 (executable)
index ab7cb60..0000000
--- a/README
+++ /dev/null
@@ -1,1248 +0,0 @@
-
-$Id$
-
-The asdcplib library is a set of objects that offer
-simplified access to files conforming to the sound and
-picture track file formats developed by the SMPTE Working
-Group DC28.20 (now TC 21DC).
-
-Recently, support has also been added for SMPTE draft ST
-2067-5 "IMF Essence Component", AKA "AS-02".  This code was
-donated by Fraunhofer IIS.  It carries additional copyright
-information which should be listed whenever you link the
-AS-02 elements of the library.  Please look at the top of
-the AS-02 files to see this copyright information.
-
-AS-02 support is carried in separate object modules, so
-unless you #include <AS_02.h> and link libas-02.so you are
-still using plain old asdcp.
-
-This work was originally funded by Digital Cinema Initiatives,
-LLC (DCI). Subsequent efforts have been funded by Deluxe
-Laboratories, Doremi Labs, CineCert LLC, Avica Technology
-and others.
-
-**The asdcplib project was originally housed on SourceForge.
-The project has moved to http://www.cinecert.com/asdcplib/
-
-The project formerly depended upon the mxflib project. Because
-of its focus on covering the whole of the MXF specifications,
-mxflib is considerably larger and more complex that what I
-require for this application. For this reason I have created
-a dedicated MXF implementation that is now part of this
-library. Special thanks to Matt Beard and Oliver Morgan for
-their great work and support.
-
-Thanks also to the members of the SMPTE DC28.20 packaging
-ad-hoc group and the members of the MXF Interop Initiative
-for their encouragement and support. Special thanks to
-Jim Whittlesey and Howard Lukk at DCI for proposing and
-supporting this project.
-
-
-Design Notes
-
-This library is intended (but of course not limited) for
-use by developers of commercial D-Cinema products (and now
-IMF!).  It is designed to be easily integrated into a wide
-variety of development environments.  Commercial users are
-strongly urged to use static linking (at least where you use
-this library) to prevent malicious in-field replacement of
-critical system modules. This recommendation should be
-considered wherever Open Source or Free software is being
-used in conjunction with critical security parameters, such
-as cryptographic keys.
-
-The author strives mightily to provide an API that is completely
-independent of operating system and other library dependencies,
-and which allows selective replacement of some modules for
-local needs.  Specifically, the essence parsers and OpenSSL
-crypto functions can be replaced by linking to alternative
-implementations of the ASDCP:: objects which provide those
-services.
-
-AS_DCP.h contains the entire AS-DCP API.  You do not need to
-read any of the other files, except maybe asdcp-test.cpp which
-contains detailed usage examples of each of the API's services.
-The KM_* files may be of interest for general development
-support, but may be ignored if all you want is simple AS-DCP
-support.
-
-Likewise, draft 2067-5 "IMF Essence Component" (AS-02) support
-is entirely contained in AS-02.h
-
-
-Build Instructions
-
-On more-or-less POSIX systems (OS X, Linux, and BSD), GNU make and 
-autotools are required to build asdcplib. The same configure script 
-will also build this package on Windows machines with Cygwin and
-MinGW installed. For those Windows users who would prefer to build
-this natively, an "nmake" build file and instructions can be found
-in the win32 subdirectory.  
-
-OpenSSL is also required, any recent version should be fine. See
-http://www.openssl.org/ for more information and download instructions.
-
-Optional support for writing Timed Text Track Files is supported by
-either Xerces-C or Expat. See http://xerces.apache.org/xerces-c/ or
-http://expat.sourceforge.net/ for source and build instructions.
-
-To configure and build, type './configure' followed by 'make'. There
-are several test targets on the POSIX side, but you need to assemble
-a set of test files to use them.  AS-02 support can be enabled with 
- --enable-as-02.  
-
-I have tested this build on win32, Linux, OpenBSD, and Darwin
-platforms. Others may work as well.
-
-
-
-
-Utilities
-
-asdcp-test -  Writes, reads and verifies AS-DCP (MXF) track files.
-
-asdcp-wrap - Writes AS-DCP (MXF) track files.
-
-asdcp-unwrap - Extracts essence from AS-DCP (MXF) track files.
-
-asdcp-info - Displays information about AS-DCP (MXF) track files.
-
-asdcp-util - Calculates digests and generates random numbers and UUIDs.
-
-as-02-wrap - Writes AS-02 Essence Component files.
-
-as-02-unwrap - Extracts essence from AS-02 Essence Component files.
-
-kmfilegen - Writes and verifies large files using a platform-
-independent format. Use it to test issues related to large files.
-
-kmuuidgen, kmrandgen - generate UUID values and random numbers.
-
-wavesplit - Splits a WAVE file into two or more output files. Used
-  to untangle incorrectly-paired DCDM sound files.
-
-blackwave - Write a WAVE file of zeros.
-
-pinkwave - Write a WAVE file of SMPTE ST 2095 pink noise.
-
-j2c-test - Displays information about JP2K codestreams.
-
-Experimental feature: Prototype for High Dynamic Range is a wrapper
-for the IMF application that allows JPEG-2000 codestreams to be paired
-with opaque blobs of metadata.  AS-02 support must be enabled to
-build this feature, so --enable-as-02 must be enabled if
---enable-phdr is to be used.  The following executable programs will be
-built:
-
-phdr-wrap - Writes AS-02 PHDR Essence Component files.
-
-phdr-unwrap - Extracts essence from AS-02 PHDR Essence Component files.
-
-
-Documentation
-
-The API documentation is mostly in AS_DCP.h. and AS_02.h  Read those
-files for a detailed description of the library's capabilities. Read
-asdcp-*.cpp and as-02-*.cpp files for library usage examples. The
-command-line utilities all respond to -h.
-
-
-Change History
-
-2019-02-12 - 2.10.32 -- bug fixes
- o Fixed parsing of as-02-wrap -tfr (ACES) option value
- o Fixed ISXD bugs:
-    o Incorrect UTF_8_Text_DataEssenceCoding UL
-    o Incorrect ISXDDataEssenceDescriptor_NamespaceURI UL
-    o Incorrect use of FrameWrappedISXDData UL
-    o Incorrect use of FrameWrappedISXDContainer UL
- o Added wide-char support for filenames on Win32, allows UTF-8 characters in
-   calls to Kumu::File*::Open*(). The macro KM_WIN32_UTF8 must be defined to
-   enable this feature.
-
-
-2018-10-15 - 2.10.31
- o NOTE: Use of MXFGCGenericEssenceMultipleMappings in AS-02 files is not
-   defined by standards and will soon be withdrawn from this library. If you
-   would like to experience this change now, define the macro
-   ASDCP_GCMULTI_PATCH
- o Removed PIMD support (unused prototype)
- o Returned the DataEssenceCoding UL version byte to "5" in Atmos files
- o Fixed ColorPrimaries_ACES UL version byte
- o Added "FSKSync" audio channel label to the MCA label generator
- o SMPTE RDD 45 requires a minimum BER encoding length of five (5) bytes for
-   Content Element packets. The Write_EKLV_Packet() API has been modified to
-   allow the specification of this value. All existing wrapping modules have
-   been changed to conform to the new API, and all continue to use four (4)
-   as the minimum BER encoding length. Write_EKLV_Packet() will continue to
-   generate BER encodings with a length greater than the specified minimum for
-   payloads that are larger than values encoded using the specified minimum.
-
-
-2018-09-14 - 2.9.30
- o Fixes wrong MajorVersion in Preface
- o Adds VideoLineMap also to RGBA essence descriptor
- o Adds VideoLineMap to RGBA and CDCI descriptor only when option -l
-   is present (disputable - but distinguished value {0, 0} is not
-   allowed in closed and complete partitions)
- o Fixes issue with IndexRate not set in AS-02 J2K files
- o Additional fixes to minor version number in AS-02 partition packs
- o CMake brought up to date
- o Fixed erroneous WAV RF64 header interpretation
- o ACES AS-02 ST 2065-5 wrapper
- o ACES AS-02 ST 2065-5 unwrapper
- o ST 2067-50 Subdescriptors support
- o ST 2067-50 Target Frame wrapping support
- o ST 2067-50 Target Frame unwrapping support
- o Command line tools as-02-wrap, as-02-unwrap and as-02-info extended to
-   support ACES, App#5 subdescriptors and Target Frames
- o Beta support for ST2065-5 AS_02 ACES wrapping and unwrapping including
-   ST 2067-50 Subdescriptors and Target Frame support
- o Please report ACES-related issues to wolfgang.ruppel@hs-rm.de
-
-
-2018-08-08 - 2.8.29
- o Modified AS_02::ST2052_TextParser::OpenRead signature
- o Fixed partition version error in AS-02 interior body partitions
- o Changed StartTimecode to 0 (zero) in the Source Package
- o Remove use of BN_init in OpenSSL API
- o XML parser now works correctly with Xerces-c 3.x
- o Improved MCA sound field expression parser
- o Added support for IMF Numbered Source Channel labels in MCA
- o Added CLI switches for MCAAudioContentKind and MCAAudioElementKind
- o Re-assigned asdcp-wrap option '-g' to '-x', added new option '-g' 
- o Added TLM marker check to j2c-test
- o Added to kmrandgen options '-C', '-w', '-W'
- o Added support for SMPTE RDD 47 "ISXD Track File"
- o Added generic support for SMPTE RP 2057 "Text-Based Metadata Carriage in MXF"
- o Re-factored AS-02 frame-wrap index write to use a common implementation
- o Re-factored support for SMPTE ST 410 to use a common implementation (affects
-     AS-DCP and AS-02 timed-text MXF (SMPTE 429-5)
- o Patched several ambiguous integer casts.
- o Added new essence type identifiers ESS_AS02_ISXD and ESS_AS02_ACES
- o Fixed a bug wherein the Generic Container data track clip was instead being
-     written as a DM track
- o Fixed UL values DCDataDescriptor and ContainerConstraintSubDescriptor to have
-     a byte 6 value of 0x53 (Tag Set) instead of 0x07 (coding sentinel)
- o Added UL values 468 - 511 to the dictionary (including added ACES UL values)
- o Added ApplicationSchemes and ConformsToSpecifications to the Preface set
- o Added default initializer to MXF::LineMapPair
- o Added sets DescriptiveFramework, DescriptiveObject, TextBasedDMFramework,
-     TextBasedObject, GenericStreamTextBasedSet and ISXDDataEssenceDescriptor,
-     ACESPictureSubDescriptor, TargetFrameSubDescriptor
- o Added ISXD support, options '-c', '-g', '-G', '-v', '-q', '-u' to as-02-wrap
- o Added ISXD support and option '-g' to as-02-unwrap
- o Cleaned up definition of UL WaveAudioDescriptor_PeakEnvelopeData (currently
-     unused)
- o Moved ReferenceAudioAlignmentLevel from WaveAudioDescriptor to
-     GenericSoundEssenceDescriptor
-
-
-2016-12-10 - MDD bug fix 2.7.19
- o The previous version (2.7.18) contained incorrect MDD.cpp and MDD.h
-   files which affect the PIMF and JP2KEssenceCompression labels.
-
-
-2016-12-10 - bug fixes 2.7.18
- o Fixed *all* Partiton version numbers in AS-02 files (the previous attempt
-   only affected the header partition)
- o Improved IMSC-1 profile detection. May not yet be perfect, experimentation
-   encouraged!
- o Added IMF App2e UL values and new MXF data types ColorPrimary and
-   ThreeColorPrimaries (contributed by Schleich)
- o Added picture descriptor elements MasteringDisplayPrimaries,
-   MasteringDisplayWhitePointChromaticity, MasteringDisplayMaximumLuminance,
-   and MasteringDisplayMinimumLuminance
- o Added -o and -O options to as-02-wrap 
- o Fixed as-02-wrap option -p when making 4:4:4 files
- o Simplified as-02-wrap syntax description
-
-
-2016-12-01 - bug fixes 2.6.17
- o Fixed Partiton and Preface version numbers in AS-02 files
- o Replaced WIN32 directory scanner with dirent_win.h
- o The NamespaceURI property of AS-02 timed text files has been exposed in the API
-   and via as-02-wrap -P. This behavior replaces previous bad behavior, but puts
-   responsibility for selecting the correct value on the operator.
- o Exposed CreatePNGNameId and CreateFontNameId subroutines in AS_02::TimedText
- o Adjusted UUID generation based on PNG and font names to exclude paths by
-   inserting a call to PathBasename at each Id generation site
- o Fixed AS-02 timed text index partition
- o Fixed contents of generic partiton EssenceContainers property in AS-DCP timed
-   text files
- o Added PixelLayout to RGBAEssenceDescriptor (contributed by Schleich)
- o Cleared up MXFGCP1FrameWrappedPictureElement / MXFGCP1FrameWrappedPictureElement
-   ambiguity. PHDR continues to use MXFGCP1FrameWrappedPictureElement.
-   MXFGCI1FrameWrappedPictureElement is supported for interlace.
- o Added support for 192, 200 and 240 fps images, includes 96, 100 and 120 fpe stereo
- o Added missing MCA properties to MCALabelSubDescriptor (contributed by Ruppel)
- o New MXF data type: LineMapPair
- o Added default 0,0 VideoLineMap value when wrapping CDCI with as-02-wrap
- o Added VideoLineMap property to GenericPictureEssenceDescriptor
- o Added timed text unwrap support to as-02-unwrap (contributed by Ruppel)
- o Added prototype PIDM dynamic metadata wrapping, config with --enable-phdr
-   (Not for production use, caveat emptor, not the droids, etc.)
-
-
-2016-08-11 - bug fixes, 2.5.15
-
- o Modified as-02-wrap to pass WhiteRefLev, BlackRefLev and ColorRange
-    (contributed by Elmer Musser / Rod Bogart)
- o Fixed a bug in the index reader that allowed an out-of-bounds vector index
-   to be used.
- o Modified the IndexEntry parser to ignore additional bytes belonging to slice
-   values.
-
-
-2016-05-06 - bug fixes, 2.5.14
-
- o Release 2.5.12 caused two problems with Atoms and DTS-X wrapping that are
-   addressed by this release. The UL values that were changed to correct the
-   DCData (ST 429-14) implementation had two unintended side-effects:
-     1. v2.5.12 cannot read old DCData (and thus DTS-X) track files
-     2. v2.5.12 creates broken Atmos track files (incorrect ULs)
-   The fix for this involved the following changes:
-     1. ASDCP::DCData::(MXFReader|MXFWriter) are no longer base classes of
-        ASDCP::ATMOS::(MXFReader|MXFWriter).
-     2. New UL values have been added to carry the original Atoms UL values:
-        a. DolbyAtmosDCDataWrappingFrame
-        b. DolbyAtmosDCDataEssence
-        c. DolbyAtmosDCDataDescriptor
-     3. ASDCP::ATMOS::(MXFReader|MXFWriter) have been modified to use the
-        DolbyAtmosDCData* UL values.
-     4. ASDCP::DCData::MXFReader will parse files having either DCData* or
-        DolbyAtmosDCData* UL values.
-     5. ASDCP::DCData:: MXFWriter continues to use DCData* UL values from ST
-        429-14
-  o Some optional parameters of the MXF metadata packs were being erroneously
-    initialized with a value of zero (0), such as GenericPictureEssenceDescriptor
-    ::SignalStandard, GenericPictureEssenceDescriptor::SampledXOffset(0), etc.
-  o Added higher edit rates (96, 100, 120) to the cinema TimedText_Parser
-
-  o Defined bool ASDCP::UL::operator<(const UL& rhs) const, which is needed to
-    carry out the version-insensitive lookup policy when searching for ULs in a
-    std::map<> of UL entries.
-  o New files:  src/info.in src/CMakeLists.txt
-  o Removed filess:  AS_DCP_DCData_internal.h
-
-
-2016-03-17 - bug fixes, 2.5.12
- o Changed default UNIX file permissions to "666"
- o Changed default UNIX file permissions to "777"
- o Added missing initializer for caltime::offset
- o Fixed UL values for Aux Data files (per ST 429-14)
- o Added support for default TTML fonts (ST2052_TextParser)
- o Added Solaris patch to KM_fileio (Thanks Mikey!)
- o Fixed the version byte in UL DataEssenceCoding
- o Fixed duplicate linkage error for symbol MIME2str
- o Big patch from Wolfgang Ruppel:
-   o Corrected erroneous fixed-tag values in ActiveHeight, ActiveWidth,
-     ActiveXOffset, ActiveYOffset UL definitions.
-   o Provided a stub implementation for Kumu::DirScannerEx (A real
-     implementation will follow soon.)
-   o Added as-02-info program
-   o Added Seek() method to PCM parsers
-   o Added CMakeLists.txt
-
-
-2015-11-10 - bug fixes, IMF text, pink noise, 2.5.11
- o I moved personal dev environment from older gcc to newer clang.  Many
-   small changes were made to satisfy the new compiler:
-   - Altered many printf format codes to use the correct format for the
-     given integer type.
-   - Parenthesized some expressions to clarify previously ambiguous
-     expectation about precedence.
-   - Created macro KM_MACOSX for use in OS-specific code selection.
-   - Removed last uses of the old C-language abs(), now using Kumu::xabs().
-   - Removed last uses of the old C-language atoi(), not using strtol().
- o Added platform-independent call Kumu::GetExecutablePath() (to be tested
-   on win32).
- o Added new capabilities to Result_t.
- o Added imlementation of SMPTE ST 2092-1 pink noise generator.
- o Added pinkwave CLI utility.
- o Added font support to the IMF timed-text wrapper.
- o Fixed a bug that was causing Array properties to be written without
-   the (count, length) header (from PAL).
- o General review of Batch/Array distinction throughout the project.
- o Cleaned up definitions of optional properties in all MXF metadata packs.
- o Fixed Win32 build (from Crowe).
- o Fixed a bug that caused incorrect failure when parsing JPEG 2000
-   codestreams having fewer than five decomposition levels. (from Korneder).
- o Fixed missing UUID generation in some instances of the MCALinkID property.
- o Added -w option to asdcp-wrap to support use of WTF label with MCA.
- o Altered asdcp-wrap to recognize "-C <UL>" when MCA is being used.
- o Fixed broken -A <w>/<h> option in as-02-wrap and phdr-wrap.
- o asdcp-wrap and as-02-wrap now allow split channel groups in MCA labels.
-
-
-2015-02-23 - bug fixes, 2.4.10
-  o Fixed a new bug introduced by the fix to large numbers of subtitle ancillary
-    resources.
-  o Added support for generic Aux Data (ST 429-14) to asdcp-wrap.
-
-
-2015-02-19 - PHDR feature, bug fixes, 2.4.9
-  o Modified PCMParser and PCMParserList to return partial frame buffers at the
-    end of a WAV input file.  This was needed to allow wrapping all samples into
-    an AS-02 audio file (which is clip-wrapped) in the case where the input file
-    has an odd number of samples with respect to the frame buffer size being
-    used.  If there is more than one input file the length of the last buffer
-    will be determined by PCMParserList to be the shortest of the input files.
-    Prior to this change, partial samples in an input WAV file have been
-    abandoned (i.e., not written out to the MXF file).  As a result, AS-DCP
-    applications will have to decide whether to abandon the partial last frame
-    (usually detected by testing frame_buffer.Size() != frame_buffer.Capacity())
-    or write it to the MXF file.  Programs written to the old API will write the
-    partial frame (i.e., new behavior.)  This should not be harmful since the
-    remainder of the buffer is zeroed and the output file will contain one
-    additional edit unit compared to the previous version.
-  o asdcp-wrap has been modified to test for the partial buffer and by default
-    will complain and abandon the buffer (i.e., same behavior but with a warning
-    message.)  A new command line switch (-g) alters this behavior and writes
-    the buffer to the MXF file (it still warns the user that this condition is
-    present.)
-  o as-02-wrap now wraps all samples from the input file to the MXF file. There
-    is no padding, the clip is exactly the set of samples from the input.
-  o as-02 unwrap is temporarily restricted to creating wav files that are
-    aligned with the frame buffer size.  This means that the output file will
-    be longer than the original WAV input in the case where the input file has
-    an odd number of samples with respect to the frame buffer size being used.
-    The pad samples are zero (silence).
-  o Modified CalcFramesFromDurationInSamples() to increment the count by one for
-    the case where the input file has an odd number of samples with respect to
-    the frame buffer size being used (previously it truncated the odd samples.)
-  o Fixed ST 429-5 / ST 2067-5 wrapping to increase header space when ancillary
-    resources are present (fixes a bug that cause the header to overflow the
-    allotted space when large numbers of PNG files were present.)
-  o Refactored GetXMLDocType() to use the XML parser.
-  o Added ParseFirstFromString() method to Kumu::XMLElement
-  o Removed Kumu::StringIsXML from the API.
-  o Added ASDCP::MXF::RGBALayout type
-  o Added J2CLayout property to JPEG2000PictureSubDescriptor
-  o Changed km_token_split() to retain empty elements in the output list
-  o Added PHDR wrapping for AS-02.
-  o Added J2CLayout property to the JPEG2000PictureSubDescriptor.  This
-    support is preliminary: the Raw data type is being used instead of
-    RGBALayout type, which will be in the next release.
-
-
-2014-10-2 - Bug fixes and enhancements, 2.2.6
-  o Fixed erroneous 377-4 MCA identifier in AS_DCP_PCM dump routine
-  o Fixed erroneous byte 13 in
-    WaveAudioDescriptor_ReferenceAudioAlignmentLevel label
-  o Added missing implementation of -W option to as-02.unwrap
-  o Fixed erroneous use of d-cinema ChannelAssignment label in as-02-wrap
-
-
-2014-10-01 - Bug fixes and enhancements, 2.2.5
-  o Finished AS-02 text wrap/unwrap
-  o Fixed fractional seconds parsing for Timestamp objects
-  o Updated KLVPacket to use 64-bit length; allows huge packets
-    in AS-02 PCM files
-  o cleaned up use of atoi() in the library
-
-
-2014-07-09 - Additional IMF/AS-02 support, bug fixes and enhancements, 2.1.4
-  o Added IMF App 2 edit rates in AS_02 namespace: EditRate_29_97, 
-    EditRate_59_94. 
-  o Revised AEC CBC context objects to copy the key rather than  
-    keep the reference passed in to it.
-  o Addressed a bug that would allow unimpeded iteration of component 
-    values in a JP2K::PictureDescriptor object.
-  o Addressed a bug that was incorrectly recording the sequence Duration 
-    in MXF Track objects.
-  o Added ASDCP::AtmosSyncChannelMixer::AppendSilenceChannels()
-  o Added a QCD decoder to the j2c parser.
-  o Altered ASDCP::KLVPacket::HasUL() to use version-blind matching.
-  o Fixed an uninitialized variable in MemIOReader::ReadString() that  
-    caused unbounded reads.
-  o Fixed broken ByteString::ArchiveLength() method
-  o Fixed broken version numbers on SoundfieldGroupLinkID and  
-    GroupOfSoundfieldGroupsLinkID UL values.
-  o Added DBOXMotionCodePrimaryStream and DBOXMotionCodeSecondaryStream UL 
-    values to the internal dictionary.
-  o Added optional prefix handling to MCA label generator.
-  o Re-factored MCA label generator to include additional  
-    metadata (Thanks to Mike Radford).
-  o Added new options to as-02-wrap.
-
-
-2014-01-06 – Additional IMF/AS-02 support, bug fixes 2.1.1
-  o Fixed missing-index-partion bugs for AS-02 files.
-  o Moved LocalFilenameResolver into the AS_DCP public API so that it
-    can be used by other modules including AS-02.
-  o Did further refactoring of AS-02 Writer classes to separate CBR
-    and VBR indexing implementations.
-  o Fixed wave wrapping UL in clip-wrapped AS-02 files.  Renamed some
-    UL constants to reflect "clip" or "frame" wrapping.
-  o Re-factored JP2K_PDesc_to_MD() and MD_to_JP2K_PDesc() to work
-    with GenericPictureEssenceDescriptor objects.
-  o Fixed a bug that was suppressing PictureComponentSizing,
-    CodingStyleDefault and QuantizationDefault when writing the
-    essence descriptor in a JP2K file (AS-DCP and AS-02).
-  o Fixed the version byte on the following UL values:
-         StereoscopicPictureSubDescriptor
-         GenericPictureEssenceDescriptor_ColorPrimaries
-         GenericPictureEssenceDescriptor_ActiveHeight
-         GenericPictureEssenceDescriptor_ActiveWidth
-         GenericPictureEssenceDescriptor_ActiveXOffset
-         GenericPictureEssenceDescriptor_ActiveYOffset
-  o Added some essence descriptor options to as-02-wrap.
-  o Changed bit rate display in asdcp-info from mebi-bits/s to
-    mega-bits/s.
-  o Added "SMPTE" / "Interop" format type display to asdcp-info.
-  o Improved integration of ST 377-4 MCA concepts with ST 429-2 static
-    labels.
-  o Modified asdcp-wrap to assume -L when wrapping timed-text (since
-    there is no MXF text wrapping for Interop.)
-  o Added new EssenceType_t values for IMF/AS-02 track files.
-  o Added detection for AS-02 track files to ASDCP::EssenceType()
-  o Changed lots of "const char*" to "const std::string&" in the
-    APIs defined by KM_fileio.h and AS_DCP.h.
-  o Fixed VBR Delta Segment entries to correctly flag progressive
-    material.
-  o Fixed PCM unwrapping bugs in as-02-unwrap.
-  o Fixed missing return statement in ArchivableString::ArchiveLength
-    (thanks to both Kristof Provost and Franck Chopin) 
-  o Fixed broken sample alignment in RF64Writer (thanks to Wolfgang
-    Woehl and Dolby)
-  o Fixed win32 build (thanks to Dolby)
-  o fixed a bug that caused blackwave to only produce 96kHz WAV files.
-    (thanks to Stephane W)
-
-
-2013-07-02 – IMF/AS-02 support, bug fixes 2.0.0
-  o Massive refactoring of internals to allow easier implementation
-    of AS-02.  Some API changes were made as well (note that
-    OPAtomHeader is now OP1aHeader and RIP is no longer part of the
-    OP1aHeader.)  If you are using this project as a library (and
-    especially if you are keeping patches against it) PLEASE TAKE
-    TIME TO EVALUATE THIS RELEASE THOUROUGHLY BEFORE ADDING IT TO
-    YOUR RELEASE PATH.
-  o Final integration of Fraunhoffer IIS code contribution.  AS-02
-    files are now fully supported with some TODOs and two major
-    exceptions: LEAD indexes are not supported by the MXF writers
-    and interlace images are not yet supported.
-  o Added support for MCA labels (ST 428-12) to asdcp-wrap.  Note
-    that this project is still in the early stages of interop testing
-    so errors are likely present and don't expect any server to
-    make use of this feature.
-
-
-2013-07-01 - Bug fixes, enhancements 1.12.50
-  o Fixed missing return statement in ArchivableString::ArchiveLength
-    (thanks to both Kristof Provost and Franck Chopin) 
-  o Fixed broken sample alignment in RF64Writer (thanks to Dolby)
-  o Fixed win32 build (thanks to Dolby)
-
-
-2013-04-12 - Dolby Atmos support and more audio labels 1.11.49
-  o Significant code contribution from Dolby Laboratories to add
-    support for generic data track files as proposed in ST 21DC
-    and also Dolby Atmos track file support as a specialization.
-  o Added Dolby-contributed code to support generating the external
-    sync signal for d-cinema as proposed in ST 21DC.
-  o Added Dolby-contributed code to support RF64 WAVE files.
-  o Fixed UL error in ST 429-5 DM encoding (contributed by Dolby).
-  o Added ULs for ST 428-12 and Amd. 429-2 2013.  Please check!
-
-
-2013-02-20 - bug fixes, enhancements 1.10.48
- o Refactored internals of the AS-DCP file readers.  While no
-   changes in behavior are intended, users are cautioned to test
-   thouroughly before use in production.
- o Fixed a bug in ReadAncillaryResource that was causing bogus HMAC
-   failures when reading resources from a file.
- o Fixed premature-release bug in the Expat version of the XML parser.
-   Thanks to Carsten Feldheim (IIS) for the tip.
- o Fixed -W option in asdcp-unwrap.  Thanks to RGB.
- o Added P-HFR support to asdcp-wrap (see URL for details:
-   http://isdcf.com/papers/ISDCF-HighFrameRate-DCP.pdf).
- o Added support for SMPTE ST 428-21 "Archival Frame Rates".
- o Added -P option to asdcp-wrap (inserts arbitrary UL into the
-   PictureEssenceCoding property when wrapping JP2K files.)
- o Added support for 96 kHz files to blackwave.
- o Added new path and string manglers to Kumu.
- o Updated MCA ULs (I warned you...).  Again please take some
-   time to proof this work against ST 477-4 including the latest
-   drafts of the registries.
-       Changed the version byte (8 0f 16) to 0x0e:
-           MCALabelSubDescriptor
-           AudioChannelLabelSubDescriptor
-           SoundfieldGroupLabelSubDescriptor
-           GroupOfSoundfieldGroupsLabelSubDescriptor
-          GroupOfSoundfieldGroupsLinkID
-       Changed bytes 8 and and 13 of SoundfieldGroupLinkID
-       Added items to the UL dictionary:
-          MCAPartitionKind
-          MCAPartitionNumber
-          MCATitle
-          MCATitleVersion
-          MCATitleSubVersion
-          MCAEpisode
-          MCAAudioContentKind
-          MCAAudioElementKind
-
-
-2012-08-07 - bug fix, 1.10.46
- o Added missing zero-initializers to time values when parsing a
-   timestamp string (in the case where the optional [Thh:mm.[:ss]]
-   syntax is not present in an encoded string).
-
-2012-03-06 - bug fixes, enhancements 1.9.45
- o Removed ASDCP::Timestamp, all items that were of that class are now 
-   of class Kumu::Timestamp
- o Refactored Kumu::Timestamp to use KM_tai for internal representation 
-   (replaced public Y M D, h, m, s variables)
- o Refactored Kumu::Timestamp to use KM_tai for WIN32 builds
- o Added UTC offset awareness to Kumu::Timestamp
- o Replaced "long GetSecondsSinceEpoch(void) const" with 
-   "ui64_t GetCTime() const"
- o Corrected UL version segment in "7.1 DS" and "WTF" audio format
-   labels (corresponds with publication of ST 429-2:2011).
- o Exposed MXF object interface (MXF.h, Metadata.h) via ASDCP MXFReader
-   and MXFWriter classes.
- o Added UL values from ST 377-4:2012. >>>>NOTE: These are preliminary
-   values, subject to change upon final publication of not only ST 377-4
-   but also the relevant registries.  This is a good time to compare them
-   to the standard and complain if you think they are wrong!
- o Added MCALabelSubDescriptor, AudioChannelLabelSubDescriptor,
-   SoundfieldGroupLabelSubDescriptor, and
-   GroupOfSoundfieldGroupsLabelSubDescriptor (from ST 377-4:2012) to
-   Metadata.h
- o Changed some internals to make MXFWriter::OPAtomHeader() work correctly.
- o Split asdcp-test into several different programs to help relieve
-   the impenetrable-list-of-arguments problem. asdcp-wrap, asdcp-unwrap
-   and asdcp-info take the place of asdcp-test's -c, -x and -i options,
-   respectively.  asdcp-util contains the remaining functions. Note that
-   asdcp-test is now DEPRECATED, new functionality and bug fixes will be
-   aimed at the new tools.  Also note that some options and calling
-   conventions are different for the new tools as compared to asdcp-test.
-   Please read the synopses and make sure you understand the new idioms.
- o asdcp-wrap has a new argument, -C <UL>, that writes the given UL to the
-   ChannelAssignment item in the WaveAudioDescriptor (only useful when
-   writing PCM essence).
-
-
-2011-11-30 - bug fixes v1.8.44
- o Corrected a wrong decryption UL selection when unwrapping MXF.
-
-
-2011-10-27 - bug fixes v1.8.43
- o Corrected broken Essence UL matching. (Thanks to Michael Loder).
-
-
-2011-08-31 - bug fixes v1.8.42
- o Added missing HFR support for PCM essence reader/writer.
-
-
-2011-08-30 - bug fixes, enhancements v1.8.41
- o UL version byte now ignored when comparing UL values.
- o Changed the version byte in the TimedTextEssence UL to 0x01.  There
-   is no published Essence Keys registry so it can't have a maintained
-   version number.
- o JP2K Sequence Parser modified to skip directory entries that
-   are not files in the case where the parser is initialized with
-   a directory path.  When initialized with a list of file names
-   this check is not performed.  Based on a hint by Steve Quartly.
- o Increased the size of the MPEG header parser buffer.
- o Added missing FrameType() implementation to ASDCP::MPEG2::MXFReader.
- o Added missing Close() implementations to MXF reader classes.
- o Added missing Timestamp::Timestamp(const char* datestr) implementation.
-   (Thanks to Matt Sheby for this and the previous three items.)
- o Fixed error in Kumu::FortunaRNG::FillRandom() that was returning the
-   end of the random buffer instead of the front (Thanks to Mike Radford).
- o Added support for proposed sound channel format identifiers
-   '7.1DS' and 'WTF'.  Optimistically chose version '0x0c'.
- o Added support for stereoscopic images in JP2K files at edit
-   rates of 48, 50 and 60 eups (96, 100 and 120 fps).
-
-
-2010.11.15 - bug fixes, enhancements v1.7.40
- o Fixed bug in long KLV packet support (Thanks to Jim Radford).
- o Fixed AvgBps in PCM files, *again*. Sorry for the crazy.
- o More fixes and changes in support of 25, 30, 50, 60 fps.
-   (Thanks to Hans K. for the TC rate bug).
- o Updated KLVFill UL version element to 0x02.
- o Type change to support Xerces-C 3.x. (Thanks to Matt Sheby).
- o Some internal API changes to KLV types. Does not affect
-   operation.
- o Added NetworkLocator type to MXF metadata types.
- o Added file offset display to klvwalk.
-
-
-2010.09.09 -  bug fixes, enhancements, v1.7.39
- o Fixed bug in JP2K PictureDescriptor initialization in
-   JP2K::MXFReader::OpenRead() and JP2K::MXFSReader::OpenRead()
- o Once again fiddling with AvgBbs. How can something so simple
-   be such a constant cause of trouble? Tested with 1-, 2- and
-   6-channel input Wav files.
- o asdcp-test now accepts a directory name when making PCM
-   files (-c). The directory name should be the only filename
-   argument. All files in the directory must be Wav files
-   (mixed channel sizes OK). Files are sorted alphabetically by
-   filename. Hint: use numeric name infix to define order:
-   my_movie_00_L.wav
-   my_movie_01_R.wav
-   my_movie_02_C.wav
-   my_movie_03_LFE.wav
-   my_movie_04_LS.wav
-   my_movie_05_RS.wav
-
-
-2010.07.20 -  bug fixes, v1.6.37
- o Fixed TimedTextResourceSubDescriptor UL value.
-
-
-2010.06.16 -  bug fixes, v1.6.36
- o Added support for new Edit Rates to asdcp-test.cpp.
- o Expanded timed-text file reader in asdcp-test.cpp.
- o Fixed large BER value encoding (plaintext) and decoding
-   (plaintext and ciphertext). This feature was introduced in
-   v1.5.31).
- o Fixed AvgBps value for multi-channel Wave input.
-
-
-2010.05.13 -  bug fixes, enhancements, v1.6.34
- o ST 429-5 files have corrected ULs for DCTimedTextDescriptor and
-   GenericStream DataElement. Files made with previous versions of
-   the library are incompatible with this and future versions.
- o Fixed File Package TrackNumber values. Th
-anks to Sankar.
- o Added edit rate constants to AS_DCP.h (25, 30, 50, 60).
- o Changed AudioDescriptor "SampleRate" element name to "EditRate"
-   to make it consistent with the other types.
- o Now builds with XercesC 3.x.
- o KM_memio.h has better const behavior.
- o Fixed a bug in KM_memio.h string archiving.
-
-
-2010.01.05 -  bug fixes, enhancements, v1.5.32
- o Re-fixed swapped Interop and SMPTE OP Atom UL values. The swap
-   introduced in v1.5.31 was done in error.
- o Added -z,-Z options to asdcp-test (j2c parameter checking)
- o Reformed jp2k-test as j2c-test, added help and list processing,
-   added to standard install target.
-
-
-2009.12.31 -  bug fixes, enhancements, v1.5.31
- o Fixed swapped Interop and SMPTE OP Atom UL values.
- o Added get_BER_length_for_value() subroutine.
- o Modified ASDCP::h__Writer::WriteEKLVPacket() to allow larger BER
-   lengths for KLV packets larger than 16 MB. This was required to
-   support large font files in the SMPTE 429-5 implementation.
-
-
-2009.11.06 - bug fixes, enhancements, v1.5.29
- o Fixed a bug that could cause HMAC values to be incorrectly
-   stored in MXF files.  Files created with versions of asdcplib
-   prior to this version may have incorrect HMAC values. 
- o Improved handing of XML files for MXF wrapping.  
- o Jpeg2000 codestream EditRate and SampleRate mismatches
-   now warns instead of returning an error. 
- o Improved error handling in Jpeg2000 sequence parsing routines.  
- o Added two methods to Kumu::Timestamp, AddSeconds(), to add (or
-   subtract) seconds to a time value, and GetSecondsSinceEpoch()
-   to get the number of seconds since the unix epoch.
- o Added new option to asdcp-test, '-a', to specify a UUID when
-   creating MXF files.
- o Added support for specifying the intrinsic duration of MXF files
-   containing timed text.
- o Added new option to wavesplit, '-i', to display WAV file metadata.
-
-
-2009.05.21 - bug fixes, v.1.4.24
- o Fixed a bug that caused incorrect SubDescriptors UL values to be 
-   written into interop format MXF track files.  Note that this involved
-   a substantial reorganization of MXF internals.  Please test thoroughly
-   in your application before using in production.  Note that this is a 
-   significant bug fix and track files created with 1.4.22 may be incompatible
-   with other systems.  
-
-
-2009.04.09 - SMPTE format fixes, enhancements and bug fixes, v.1.4.22
- o asdcplib now uses GNU autotools on POSIX systems to configure 
-   and build.  See "./configure" for details.  Note that two options, 
-   --enable-freedist and --with-python are not enabled in the free
-   version of asdcplib and should not be used.  
- o Added build option (CONFIG_RANDOM_UUID) to enable mixed case UUID
-   generation when environment variable KM_USE_RANDOM_UUID is defined.
- o Fixed a condition that could cause an error to occur when wrapping 
-   SMPTE format timed text track files that do not define a starting 
-   frame.
- o Updated ULs for SMPTE format track files.
- o SampleRate added to JP2K metadata
- o Support for wrapping 96kHz WAV files added.
- o Updated ULs for audio channel formats  (ChannelFormat)  
- o Updated font subdescriptor MIME Types for TimedText Trackfiles.
- o Changed time implementation to support dates beyond Jan 19th, 2038.
- o Xerces-C XML parser support added.  
- o New build method for Windows (see win32/README.txt for details).
- o Added new functionality in Kumu to recursively create and delete files 
-   and directories, and get free disk space for a given volume path.
- o Added a method to Kumu::Timestamp, AddMinutes(), to add (or subtract) 
-   minutes to a time value.  
- o Improved how Kumu::Timestamp parses timestamps with offsets. 
- o Fixed a bug that caused incorrect HMAC values to be calculated.
-
-
-2008.02.16 - SMPTE format fixes, bug fixes v.1.3.18
- o Added correct SMPTE UL for StereoscopicPictureSubDescriptor.
- o Exposed JP2K metadata parser as ParseMetadataIntoDesc().
- o Added simple stereoscopic framebuffer to support paired ReadFrame()
-   and WriteFrame() methods (allows simpler integration with other
-   single-buffer code).
- o Improved detection of JPEG Interop stereoscopic files.
- o Win32 build fixes (Thanks to Mike Crowe at DTS).
- o Added the WITH_MD macro to the makefile. Set this value to one
-   to build Win32 with /MD[d] instead of /MT[d].
- o The Generic Container UL has been added to the EssenceContainers
-   set in the header partition pack for encrypted files. It has always
-   been there in plaintext files.
- - Below this point the changes are internal and should not affect you
-   unless you use Kumu directly.
- o Major refactoring of KM_log.[h|cpp].
- o Fixed buffer re-sizing issue in Kumu::ByteString.
- o Replaced type IdentifierList with ArchivableList.
- o Added COPYING file to the release bundle.
-
-
-2007.12.13 - Bug fixes v.1.2.17
- o Changed Result_t implementation to use int instead of long, which
-   was causing trouble on some 64 bit platforms.
- o Fixed EKLV HMAC. NOTE: Breaks backward compatibility with older
-   Interop files. To validate these files, use asdcplib-1.1.14. This
-   should not cause too much trouble since files with broken and
-   non-broken HMAC have been in the wild for years without issue.
- o Fixed HMAC sequence numbering in encrypted stereoscopic files.
- o Finished stereoscopic test targets in the makefile.
- o Fixed the win32 build, now expects VS2005 compiler by default,
-   use WITH_VC6=1 top get VC6 flags.
- o Stereoscopic and Timed Text modes now have SMPTE UL values.
-   NOTE: SMPTE 429-5 and 429-10 are not yet published. It is possible
-   that these UL values may change before publication. Please use
-   caution when using these features for production work.
- o Changed a bunch of symbol names in the 429-5 implementation to
-   better match the spec.
- o Added -U option to asdcp-test to dump the UL library to stdout.
- o Fixed erroneous placement of the PictureEssenceCoding UL in JP2K
-   files (Interop and SMPTE modes).
-
-
-2007.10.22 - Timed Text, Stereoscopic Picture and Bug fixes v.1.2.16
- o Significant API changes have been made. Please read all entries
-   in this changelog to be sure you understand the changes. Also
-   note that some changes have been made to LS_MXF_SMPTE files that
-   are incompatible with earlier releases (e.g., EKLV HMAC). If
-   you are looking for a stable interop release, use  v.1.1.14.
- o Fixed RFC 2104 HMAC implementation for LS_MXF_SMPTE only. The
-   broken implementation has been maintained for Interop mode.
- o Added support for draft SMPTE 429-5 Timed Text Track File. This
-   is still waiting for official SMPTE ULs, so do not use it for
-   shipping products.  An XML parser is needed to create a Timed
-   Text Track File; Expat is now an optional part of the build.
-   Make with WITH_XML_PARSER=1 to link with Expat. If you do not
-   link with expat, you will get an error when using the TimedText::
-   DCSubtitleParser class. See also S429-5-cgi.cpp for an example
-   that shows how to serve plaintext MXF file elements directly via
-   HTTP.
- o Added support for draft SMPTE 429-10 Stereoscopic Picture Track
-   File, including the JPEG Interop version. This is still waiting
-   for official SMPTE ULs, so do not use it with LS_MXF_SMPTE for
-   shipping products.  
- o Refactored the following files as a side-effect of the above
-   work: AS_DCP_JP2K.cpp AS_DCP_MPEG2.cpp AS_DCP_PCM.cpp
-   AS_DCP_MXF.cpp AS_DCP_internal.h MXF.[h|cpp] MXFTypes.[h|cpp]
-   Metadata.[h|cpp] h__Reader.cpp h__Writer.cpp klvwalk.cpp.
-   WARNING: While significant effort has been extended to make sure
-   that these changes do not affect existing stable file support,
-   users are cautioned to test this release thouroughly.
- o Added a large set of filesystem path manglers to KM_fileio.h. See
-   path-test.cpp for example usage. The path manglers have not yet
-   been tested on win32 platforms (they are currently used only by
-   the Timed Text module.
- o The PathIsFile(), PathIsDirectory() and FileSize() subroutines
-   have been modified to accept const std::string& instead of
-   const char*.
- o Added namespace and parsing support (Expat) to Kumu::XMLElement
-   (currently used only for Timed Text support). Also added some
-   new accessors.
- o Altered MXF::UTF16String to use mbtowc() and wctomb().
-
-
-2007.03.31 - Bug fixes v.1.1.14
- o Fixed KeyFrameOffset value in MPEG wrapping to have negative
-   value. This is probably not yet complete for handling all
-   types of GOPs. Please send chunks of MPEG-2 VES that you
-   find which break this. Thanks to Doremi.
- ** no other file format changes in this release **
- o Fixed error in RIP interpretation when reading arbitrary (i.e.,
-   non-MXF) files.
- o Fixed a memory leak in ASDCP::MXF::OPAtomHeader when used
-   in read mode. Thanks to Mahesh Bajaj for pointing out this
-   bug and the one above.
- o Removed asserts from KM_fileio, replaced with RESULT_WRITEFAIL
-   return value statements.
- o Added -s and -p to the makefile install target.
- o Altered ByteString behavior to use target Length() in copy
-   operations (instead of Capacity()).
- o Added new Set() method to ByteString.
- o Fixed a bug in ByteString::Unarchive() that caused the operation
-   to fail when the buffer was smaller than the read (i.e., when
-   Capacity() was called).
- o Added IdentifierList class to KM_util.h.
- o Changed some Error() messages to Debug() in Wav.cpp
- o Revived jp2k-test.cpp and asdcp-mem-test.cpp (they both had
-   stale #includes).
-
-
-2007.02.15 - Bug fixes v1.1.13
- o Removed 'VDescObj->SampleRate.Numerator = VDesc.FrameRate;'
-   from MPEG2_VDesc_to_MD() in AS_DCP_MPEG2.cpp, was line 76.
- o Added KM_TEST_NULL_STR_L() and KM_TEST_NULL_L() macros to
-   KM_log.h. These versions log the location of the null value.
-   Macros are now used in any module that includes KM_log.h.
- o MPEG2 VES with run of zero values at the head is now OK.
- o Increased VESHeaderBufSize to 16K.
- o Added makefile support for local OpenSSL in ../openssl, if
-   present.
- o The Kumu::PathIs*() functions now return false if a null or
-   empty string is given (used to be an assert).
- o Cleaned up the install target in the makefile.
- o Fixed SMPTE 429-6 HMAC -- FIPS 186-2 implementation was
-   laughably incorrect. Thanks to Doremi for pointing this out.
- o Removed default parameter to HMACContext::InitKey().
- o Cleaned up messages and CLI arg handling in asdcp-test.
-
-
-2006.11.19 - Mo better stuff v1.1.12
- o Changed read-only Result_t accessor methods to const.
- o Added Base64 (-B) option to kmrandgen.
- o Removed 16-bit alignment restriction from kmrandgen.
- o Improved WAV file extraction speed (Thanks to Jim Radford
-   for pointing this out).
- o Added single-channel split for WAV extraction (asdcp-test -1).
- o Fixed remainder bug in h__RNG::fill_rand().
-
-
-2006.11.03 - Bug fixes v1.1.11
- o Increased index table entry list size to 5000.
- o Added length checking to TLV writer (returns error if TLV
-   payload exceeds 64kB).
- o Fixed partition header and RIP errors related to 2-partition
-   files (MXF Interop mode).
- o Added -t option to asdcp-test (SHA-1 digest with Base64 output
-   on stdout).
- o Fixed Sub Descriptor reference bug (Thanks to Denis Leconte
-   for dogged determination).
- o Added directory-of-wav detection to RawEssenceType()
- o Modified MXF::Partition::AddChildObject() to only generate
-   a UUID if the InstanceID is unset.
- o Added ComponentMaxRef & ComponentMinRef to RGBAEssenceDescriptor.
-   More to follow.
- o Added detection of 2K/4K jp2c, writing correct 4K metadata.
-
-
-2006.10.05 - Bug fixes v1.1.10
- o Changed RM_RELEASE to RL_RELEASE in MXFTypes.h.
- o Changed the MXF writer to use RL_RELEASE (was RL_DEVELOPMENT).
- o Really fixed source reference chain.
- o Updated JP2K file package label.
- o Changed location of JPEG2000PictureSubDescriptor in the
-   header (was erroneously before Preface).
- o Altered LS_MXF_INTEROP to produce 2-partition files.
-
-
-2006.09.25 - Bug fixes v1.1.9
- o Fixed SourcePackageID value. All files will be 'original',
-   i.e. SourcePackageID will be all zeros. Let me know if you
-   want to set SourcePackageID.
- o Fixed compiler warnings on some Linux platforms
- o Fixed the build so that BUILD_DIR is no longer created
-   as a dependency.
- o Added duration detection to the raw essence parsers. The
-   MPEG parser uses a nasty approximation so don't use it
-   without paying close attention to the result.
- o Modified PCMParserList to make it more useful as a base
-   class.
- o Fixed bugs and re-organized command-line help in asdcp-test
-   and klvwalk.
- o Fixed two-partition file reads.
- o Fixed Win32 PRNG initialization.
- o Renamed asdcp-lf-test as kmfilegen.
- o Added kmrandgen and kmuuidgen.
- o Added string retrieval mechanism to Result_t.
- o Refactored Kumu::Identifier and its sub-classes.
- o Altered Kumu::PathIsFile to return true when the path
-   is a symbolic link (unix only).
- o Altered Kumu::FileWriter::OpenWrite to use file creation
-   mode 0664 (was 0644) (unix only).
- o Added Kumu::WriteStringIntoFile() subroutine.
-
-
-2006.04.05 - Bug fixes and new stuff v1.1.7
- o Fixed a bug in the MPEG parser that caused it to fail when
-   handling start codes spanning buffer boundaries
- o Added wavesplit and blackwave utility programs
- o Added support for revised SMPTE HMAC key derivation when
-   using LS_MXF_SMPTE
- o Refactored platform compatibility and general utilities
-   into a new sub-library "Kumu". There are no new build
-   steps or dependencies, but some important things have
-   changed:
-   + Result_t is no longer an enum, it is now a class.
-     Library result codes are now declared as const objects
-     like this:
-
-     const Kumu::Result_t RESULT_FORMAT (-101, "The file...");
-
-     The macros ASDCP_SUCCESS and ASDCP_FAILURE still work
-     the same way thanks to an operator overload for type long.
-     See KM_error.h for more information.
-   + The logging interface has been moved out of AS_DCP.h
-     and into KM_log.h
- o Some of the command line utilities that were using headers
-   other than AS_DCP.h have been changed to use the Kumu
-   equivalents. If you have code based on those utilities, you
-   will have to update by hand.
- o Added new types to the EssenceType_t enum.
- o The guard macro for Win32 code has changed from WIN32 to
-   KM_WIN32.
-
-
-2006.03.2x - new stuff
- o Proper handling of stream-id byte of essence UL values
- o writes 3-partition files, reads 2-part or 3-part
-
-
-2006.03.16 - bug fixes plus
- o Removed SMPTE_LABELS compile-time option. The reader will now
-   silently accept either SMPTE or MXF Interop labels, the writer
-   can be instructed which to use at runtime. Default is Interop.
- o Added an AIFF reader. Support is preliminary, it works with the
-   AIFF files I have on hand.
- o More code refactoring. More to come.
-
-
-2006.03.09 - full read-write
- o Removed ASDCP_WITHOUT_OPENSSL compile-time option.
- o Full read/write now working on new MXF library
-
-
-2005.00.00 - A New Hope
- o The temporary mxf-lite has been removed. MXF files are now 
-   managed via the objects in KLV.h, MXFTypes.h MXF.h and
-   Metadata.h. This release does not support writing MXF files.
- o Fixed a header interpretation error in the Wav parser.
-
-
-2005.00.00 - The Reformation
- o Removed mxflib as a dependency by forking the necessary
-   functions and placing them in the mxf-lite subdirectory.
-   Please note that the very heavy modifications done here
-   render all comparisson to mxflib code a substantial task.
-   All errors are now mine and users are warned not to bug
-   Oliver or Matt for help with this code. The version of
-   mxflib at the time of the fork was: 0.5.1.3.
-
-
-2005.06.03 - bug fixes v0.10.18
- o Updated UL batch to include GC UL.
-
-
-2005.05.27 - bug fixes v0.10.17
- o Un-did essence container and compression descriptor changes.
-   The default build reflects MXF Interop decisions as of 26 May.
- o Added note about build versions to README (see above).
- o Added warnings to SMPTE_LABELS builds.
- o Fixed JP2K essence container label.
-
-
-2005.05.02 - bug fixes v0.10.16
- o Reorganized internal files, added file reader object, added OS
-   portability header, removed and renamed some files. If you have a
-   patch against previous versions of the source, you should check
-   it thoroughly.
- o Added RGBA attributes to JP2K descriptor.
- o Changed interface to CodestreamParser.
- o Added JP2K parser implementation. It is parsing each frame but is
-   not yet being used to populate the descriptor.
- o Added 48fps option for `asdcp-test -p`.
- o Added picture rate constants to AS_DCP.h (23.976, 24, 48).
- o Added sample rate constant to AS_DCP.h (48k).
- o Changed asdcp-test to encrypt picture headers by default
-   (plaintext offset will be 0), added -E option to allow
-   plaintext headers.
-
-
-2005.04.28 - bug fixes v0.9.15
- o The XML descriptors for the crypto DMS have moved in mxflib to
-   the file DMS_Crypto.xml (they were in DMS_DCPENC.xml).  Older
-   installations should update the file from mxflib.
- o Added Close() and Seek() to ~MyFileWriter(), cleaned up headers
- o Added UUID generator output mode (-u).
- o Added -S option to extract PCM essence into stereo wav files
- o Added more UL testing and conformance checking.
- o Added macro SMPTE_LABELS which causes the library to be built
-   with SMPTE (as opposed to MXF Interop) labels. This is not
-   set by default, and currently only affects the PCM container
-   label and encrypted element label.
- o Cleaned up the GNUmakefile test targets, the source files
-   are now named with the TEST_FILE_PREFIX macro.
- o enabled 23.976-framed PCM (2002 samples per frame)
- o The size of the asdcp-test frame buffer for picture essence
-   may now be set from the command line (-b).  The default is 4MB.
- o h__Reader::ReadEKLVPacket() now tests the UL (duh) and switches
-   on the value, allowing plaintext and ciphertext frames to
-   be mixed in the file.
- o Fixed error in UUID generator format.
- o JP2K files now use the GenericPictureDescriptor to store
-   ContainerDuration and SampleRate. SampleRate is mapped
-   to EditRate in the PictureDescriptor struct. This fixes
-   the second caveat from the 0.8.13 release.
- o Fxed bug in PCMParserList that was miscalculating the extent
-   of a PCM sample.  This bug did not affect API users, it was
-   only present in asdcp-test.
- o Fixed EditRate on PCM files (was showing sample rate)
- o Fixed Encrypted Essence Container UL
- o Fixed BlockAlign value for PCM essence
-
- - The following changes were provided by Jeff Loewenguth
- - Thanks Jeff!
- o Moved the DMS CryptographicFramework entry from the material
-   package to the source package
- o Fixed erroneous Source Essence Container Label value
- o Fixed broken sort of JP2K frames in JP2K parser
- o Added FindFrameGOPStart() method to the MPEG2 MXFReader
- o Added missing length values for EKLV packets without HMAC
- o -x with JP2K essence writes to files with 6 digit names
-   (up from 5 digits).
- o The Key ID may now be specified as an argument to asdcp-test
-    (-j <key-id-string>)
-
-
-2004.12.30 - bug fixes + wav files v0.8.14
- o Added WAV file write to asdcp-test (uses mxflib::waveheader_t).
- o Three-partition files reading properly.  adscplib still writes
-   two-partition files.
- o Changes in the mxflib WAV essence parser API had broken
-   asdcplib's ability to read essence from a WAV file.  I have
-   fixed this bug, but at the expense of breaking compatibility
-   with older versions of mxflib. Beware!
- o Removed redundant (but working) bin-text-bin conversions.
-
-
-2004.12.23 - JPEG 2000 support v0.8.13
- o Reads/writes JPEG 2000 essence in plaintext and ciphertext
-   with the following caveats:
-    - The Picture Essence Descriptor is empty.
-    - Because there is no essence descriptor, the reader code
-      in asdcp-test has no idea how many frames are in the file
-      and ends with an out-of-bounds frame error.  This error
-      is being suppressed in asdcp-test for the current release.
- o Still broken when reading three-partition files.
-
-
-2004.10.22 - fixes and UL updates v0.7.11
- WARNING: COMPATIBILITY BREAKPOINT
- Files created with this and future versions of this library are
- not compatible with previous versions of this library.  As you
- might suspect, files created with previous versions of this
- library are not compatible with  this and future versions.
-
- o h__Reader will now open a three-partitition file (untested)
- o Moved DMS from Material partition to File partition
- o Added length fields to appropriate places in EKLV packet 
-
-
-2004.10.22 - fixes and UL updates v0.7.10
- o fixed frame buffer handling of externally allocated buffer,
-   created unit test (asdcp-mem-test)
- o added operator==() and operator!=() to Rational type
- o fixed some type-related compiler warnings
- o asdcp-test -p now works on unwrap
- o updated some ULs to match documentation (thanks to Arun
-   for the submission)
- o canonicalized line endings
-
-
-2004.07.02 - full plaintext + ciphertext read/write v0.6.9
- o HMAC, plaintext offest and raw ciphertext read supported
- o back to proper CBR index
- o MPEG temporal offset working
-
-
-2004.07.01 - plaintext + ciphertext read/write v0.5.8
- o encryption of MPEG and PCM essence supported with the
-   following caveats:
-   - no HMAC support
-   - no plaintext offest support
-   - no raw ciphertext read support
- o moved to reflecting the whole KLV triplet in the CBR
-   index (now incompatible with mxflib, still searching
-   for info about what's "right")
- o awaitng the following fixes/features:
-   - retrieve Temporal Offset from index in MPEG2::Reader
-   - test for correct ULs when reading frame triplets
-   - fix header metadata items for encrypted files
-   - HMAC support
-   - plaintext offest support
-   - raw ciphertext read support
-
-
-2004.06.14 - plaintext read/write w/key generator v0.4.5
- o Project now uses OpenSSL (tested with 0.9.7d on win32, Linux, Darwin)
-   Use `make ASDCP_WITHOUT_OPENSSL=1` to make plaintext-only version
- o Accepts interior I frames when parsing MPEG2 VES
- o Improved error reporting on format errors
- o Added support for encryption to asdcp-test
- o Added RNG for asdcp-test (non-production use only, see notes in FortunaRNG.h)
- o Implemented CBC encrypt, decrypt module
- o Added partial TemporalOffset retrieval from MPEG2 parser
- o Fixed win32 binmode bug
-
-
-2004.05.12 - plaintext read/write v0.3.4
- o Full read/write of plaintext MPEG-2 VES and WAV files
-   (does not yet support mux from or demux to 2 channel pairs)
- o Builds with autoconf-based mxflib
- o Added ASDCP_ prefix to macros
- o Updated documentation, fixed documentation errors
- o Simplified API for MXF writer setup
- o Decoupled essence parsers from MXF writers
- o added raw ciphertext support to FrameBuffer
- o Cleaned up Get/Set naming confusion
- o Added missing const qualifiers
-
-
-2004.04.27 - preview release v0.2.1
- o hasty release for quick review
- o this release may not build with mxflib using autoconf.
- o writes plaintext AS-DCP MPEG2 essence files
- o tested under win32 and linux. FreeBSD and Darwin do not work
-
-
-2004.02.04 - First release (v0.1.1):
- o asdcp-test is mostly complete. It should correctly provide
-   access to the read and info capabilities of the library.
- o The MPEG2 reader is functional but not fully tested.
- o Some file format integrity tests remain to be coded.
- o The PCM reader is mostly complete, I am having difficulty
-   getting a suitable test file from mxfwrap.
- o The makefile creates a static library module. The API
-   will cleanly support a DSO (or DLL). Let me know if DSO
-   support is important to you.
- o Nothing is thread safe. Thread safety was not a requirement
-   in the initial project definition. Thread safety may be added
-   above the mxflib/klvlib level. Let me know if it is important
-   to you.
- o The files xmldict.xml and types.xml must be in the current
-   directory when the program is run. The files are supplied
-   with mxflib. Runtime location of the files is not currently
-   a project goal. Comments on how best to handle this situation
-   would be appreciated. See AS_DCP.cpp at init_mxf_types()
-   for a more detailed discussion.
-
---
diff --git a/README.md b/README.md
new file mode 100755 (executable)
index 0000000..eb411af
--- /dev/null
+++ b/README.md
@@ -0,0 +1,113 @@
+
+# AS-DCP Lib
+
+## Introduction
+
+The asdcplib library is an API and command-line tool set that offers
+access to files conforming to the sound and picture track file formats
+developed by the SMPTE Working Group DC28.20 (now TC 21DC).
+
+Support has since been added for SMPTE ST 2067-5 "IMF Essence
+Component", AKA "AS-02", which was published and is maintained by
+SMPTE TC 35 PM.  The initial draft of this code was donated by
+Fraunhofer IIS and was created by Robert Scheler and Heiko Sparenberg.
+It carries additional copyright information which should be listed
+whenever you link the AS-02 elements of the library. Please look at
+the top of the AS-02 files to see this copyright information. 
+
+Support for ST 20XX OpenEXR was developed and contributed by Bjoern
+Stresing, Patrick Bichiou and Wolfgang Ruppel, supported by AMPAS.
+It carries additional copyright information which should be listed
+whenever you link the AS-02 elements of the library. Please look at
+the top of the AS-02 files to see this copyright information.
+
+AS-02 support is carried in separate object modules, so unless you
+`#include <AS_02.h>` and link `libas-02.so` you are still using plain old
+asdcp. 
+
+
+## Documentation
+
+This library is intended (but of course not limited) for use by
+developers of commercial D-Cinema and IMF products and for commercial
+mastering toolchains. The documentation is terse and sparse.
+
+The API documentation is mostly in AS_DCP.h. and AS_02.h  Read those
+files for a detailed description of the library's capabilities. Read
+asdcp-*.cpp and as-02-*.cpp files for library usage examples. The
+command-line utilities all respond to -h.
+
+Also, of course, the various SMPTE and ISO standards that underly all
+of this work should be well understood if you want to tinker with
+anything, or, in some cases, understand what properties are required
+in a particular supported use case (e.g., selecting audio channel labels.)
+
+
+## CLI Programs
+
+### Standard Utilities
+
+`asdcp-test` - DEPRECATED  Writes, reads and verifies AS-DCP (MXF) track files.
+
+`asdcp-wrap` - Writes AS-DCP (MXF) track files.
+
+`asdcp-unwrap` - Extracts essence from AS-DCP (MXF) track files.
+
+`asdcp-info` - Displays information about AS-DCP (MXF) track files.
+
+`asdcp-util` - Calculates digests and generates random numbers and UUIDs.
+
+`as-02-wrap` - Writes AS-02 Essence Component files.
+
+`as-02-unwrap` - Extracts essence from AS-02 Essence Component files.
+
+`kmfilegen` - Writes and verifies large files using a platform-independent format. Use it to test issues related to large files.
+
+`kmuuidgen`, `kmrandgen` - generate UUID values and random numbers.
+
+`wavesplit` - Splits a WAVE file into two or more output files. Used  to untangle incorrectly-paired DCDM sound files.
+
+`blackwave` - Write a WAVE file of zeros.
+
+`pinkwave` - Write a WAVE file of SMPTE ST 2095 pink noise.
+
+`j2c-test` - Displays information about JP2K codestreams.
+
+### PHDR
+
+An experimental feature, Prototype for High Dynamic Range is a wrapper
+for the IMF application that allows JPEG-2000 codestreams to be paired
+with opaque blobs of metadata.  AS-02 support must be enabled to
+build this feature, so --enable-as-02 must be enabled if
+--enable-phdr is to be used.  The following executable programs will be
+built:
+
+`phdr-wrap` - Writes AS-02 PHDR Essence Component files.
+
+`phdr-unwrap` - Extracts essence from AS-02 PHDR Essence Component files.
+
+
+## Historical Notes
+
+This work was originally funded by Digital Cinema Initiatives, LLC
+(DCI). Subsequent efforts have been funded by Deluxe Laboratories,
+Doremi Labs, CineCert LLC, Avica Technology and others.
+
+The asdcplib project was originally exchanged by FTP. The project was
+on [SourceForge](https://sourceforge.net/projects/asdcplib) between
+2005 and 2008, when it moved to a release-only distribution via
+[CineCert](https://www.cinecert.com/asdcplib/download). As of late
+February 2019, its new home is on [github](https://github.com/cinecert/asdcplib).
+
+In the eraliest days, the project depended upon the
+[mxflib](http://sourceforge.net/projects/mxflib) project. Because of
+its focus on covering the whole of the MXF specifications, mxflib is
+considerably larger and more complex that what was required for the
+AS-DCP application. For this reason I developed a dedicated MXF
+implementation. Special thanks to Matt Beard and Oliver Morgan for
+their great work and support.
+
+Thanks also to the members of the SMPTE DC28.20 packaging ad-hoc group
+and the members of the MXF Interop Initiative for their encouragement
+and support. Special thanks to Jim Whittlesey and Howard Lukk at DCI
+for proposing and supporting this project.