diff options
Diffstat (limited to 'asdcplib/README')
| -rwxr-xr-x | asdcplib/README | 778 |
1 files changed, 0 insertions, 778 deletions
diff --git a/asdcplib/README b/asdcplib/README deleted file mode 100755 index 8a63064..0000000 --- a/asdcplib/README +++ /dev/null @@ -1,778 +0,0 @@ - -$Id: README,v 1.75 2012/03/07 19:29:06 mikey Exp $ - -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. - -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. 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 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. - - -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, and the most recent version of v0.9.8 -is recommended. 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. - -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. - -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 full of zeros, Used to make filler - tracks (though you would be better off modifying asdcp-test if - this is a common use case). - -j2c-test - Displays information about JP2K codestreams. - - -Documentation - -The API documentation is mostly in AS_DCP.h. Read that file for -a detailed description of the library's capabilities. Read -asdcp-test.cpp for library usage examples. The command-line -utilities all respond to -h. - - -Change History - -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. Thanks 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. - --- |
