by Deluxe Laboratories, Doremi Labs, CineCert LLC, Avica
Technology and others.
-**The asdcplib project was housed on SourceForge. The project
-has moved to http://www.cinecert.com/asdcplib/
+**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,
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 for applications having non-trivial security
-requirements.
+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.
+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 API. You do not need to read
any of the other files, except maybe asdcp-test.cpp which
Build Instructions
-GNU make is required to build asdcplib. The makefile will work
-on win32 systems that have Cygwin and MSVC. Other win32 gmake
-packages may or may not work depending upon the availability
-of standard POSIX shell commands. You will need gcc to rebuild
-the dep.make file.
+On more-or-less POSIX systems (OS X, Linux, and BSD), GNU make is
+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. See http://www.openssl.org/
+OpenSSL is also required, version 0.9.8k is recommended. See
+http://www.openssl.org/ for more information and download
+instructions.
-If you are building on win32 or a unix with no OpenSSL library
-support, you will have to also obtain and build OpenSSL. Unpack
-it into the same parent directory as asdcplib/, and rename (or make
-a symlink to) the directory as 'openssl':
+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.
-myhost$ ls -l
-total 1761
-drwxr-xr-x 1 jhurst None 0 Feb 3 16:37 asdcplib
-drwxr-xr-x 56 jhurst None 0 Feb 2 16:35 openssl
+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.
-To build, type 'make'. There are several test targets but you
-need to assemble a set of test files to use them.
-
-I have tested this build on win32, Linux, OpenBSD and Darwin
+I have tested this build on win32, Linux, OpenBSD, and Darwin
platforms. Others may work as well.
Change History
-2007.06.xx - Timed Text and Bug fixes v.1.1.15
- o Added support for draft SMPTE 429-5 Timed Text Track File. See
- AS_DCP_TimedText.h for the API. This is *very* experimental, so
- do not use for shipping products. Timed Text support is NOT part
- of the default build, run `make WITH_TIMED_TEXT=1` to enable
- this part of the library. AS_DCP_TimedText.h will be combined
- with AS_DCP.h when it becomes stable. Because we need an XML
- parser to create the Track File, expat is now part of the Timed
- Text build. Follow the XML_PARSER macro in the makefile and KM_xml
- to see how you can support your favorite parser. See also
- S429-5-cgi.cpp for an example that shows how to serve plaintext
- MXF file elements directly via HTTP.
+
+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 this work does not affect existing stable file support,
+ that these changes do not affect existing stable file support,
users are cautioned to test this release thouroughly.
- o Added a large set of path manglers to KM_fileio.h. See
+ 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. The PathIsFile(), PathIsDirectory() and
- FileSize() subroutines have been modified to accept const
- std::string& instead of const char*.
+ 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().
- o ...
2007.03.31 - Bug fixes v.1.1.14