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.
+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.
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
Change History
+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
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
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]]