group DC-28.20.
This work was originally funded by Digital Cinema
-Initiatives, LLC. Subsequent efforts have been funded by
-Deluxe Laboratories, Doremi Labs, and others.
+Initiatives, LLC (DCI). Subsequent efforts have been funded
+by Deluxe Laboratories, Doremi Labs, CineCert, LLC, Avica
+Technology and others.
-**The asdcplib project is housed on SourceForge. The project
-home page is at http://sourceforge.net/projects/asdcplib.
-There is not much there other than CVS because I don't
-really have the time to master SourceForge administration.
-Feel free to email with questions or to request a tar file.
+**The asdcplib project was housed on SourceForge. The project
+will be moving to a new home, to be announced here soon.
-The project used to depend upon the mxflib project. Because
-of the focus on covering the whole of the MXF spscifications,
+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 interface that is now part of this library.
-Special thanks to Matt Beard and Oliver Morgan for their great
-work and support.
+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 DC-28.20 packaging
ad-hoc group and the members of the MXF Interop Initiative
AS_DCP.h contains the entire 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.
+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.
Build Instructions
of standard POSIX shell commands. You will need gcc to rebuild
the dep.make file.
-OpenSSL is required if you want to read and write encrypted
-AS-DCP files. See http://www.openssl.org
+OpenSSL is also required. See http://www.openssl.org
If you are building on win32 or a unix with no OpenSSL library
support, you will have to also obtain and build OpenSSL (I'm
I have tested this build on win32, Linux and Darwin platforms.
Others may work as well.
-If you do not want to use or do not have OpenSSL, invoke
-make with ASDCP_WITHOUT_OPENSSL defined:
-
- make ASDCP_WITHOUT_OPENSSL=1
+Utilities
-Build Versions
+asdcp-test - Writes, reads and verifies AS-DCP (MXF) track files.
-There are two flavors of build: the default build and the
-"SMPTE_LABELS" build. Unless you are specifically working on
-emerging SMPTE standards for D-Cinema content, you will certainly
-want the default build. If you are developing support for the MXF
-Interop Initiative standards, the default build is for you!
+asdcp-lf-test - Writes and verifies large files using a platform-
+independent format. Use it to test issues related to large files.
-If you are not aiming for MXF Interop and if you are working
-on developing support for the very latest versions of the SMPTE
-draft standards, then you want the SMPTE_LABELS build:
+wavesplit - Splits a WAVE file into two or more output files. Used
+ to untangle incorrectly-paired DCDM sound files.
- make SMPTE_LABELS=1
-
-NOTE: If you choose the SMPTE_LABELS build, you will be creating
-files that may not work on MXF Interop systems. In the case of
-encryption, incompatibility with MXF Interop is guaranteed! You
-have been warned!
+blackwave - Write a WAVE file full of zeros, Used to make filler
+ tracks (though you would be better off modifying asdcp-test if
+ this is a common use case).
Documentation
Change History
+2006.04.05 - Bug fixes and new stuff
+ 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 thanks to an operator overload for 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 us 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