This release provides a number of important subtle bug fixes for the core Kakadu system, improved support for the generation of Digital Cinema content, improved support for JPX metadata, and a number of enhancements to the demonstration applications. It also provides a complete set of XCODE development projects for MAC developers and a new full featured viewer for the MAC. More specifically, the principle enhancements are as follows:
1) Complete set of XCODE build environments for the MAC, to complement the existing Makefiles and Microsoft Visual Studio build environments.
2) Dramatically improved the metadata editing capabilities of "kdu_show", while adding new options to save edited files and maintain as much metadata as possible in JP2 files (JPX is, of course, the preferred format to save images with rich metadata).
3) Introduced a new viewing utility, "kdu_macshow", for the MAC (runs under OSX 10.5 on G4, G5 and Intel processors; should also run under OSX 10.4). This utility is more elegant than its long standing Windows cousin, "kdu_show". It contains all the same features as "kdu_show" (with the exception of JPIP support, which will be enabled in v6.2), but adds automatic metadata cataloging and navigating features for JPX sources, manages multiple open windows and allows for synchronized commands to be delivered to multiple windows (e.g., start playing video in all windows at once). It uses mostly the same accelerator keys as "kdu_show".
4) Improved JPX metadata management considerably:
- New member functions to `jpx_metanode' make metadata editing more convenient.
- jpx_meta_manager' now keeps track of original file locations (or copy source locations), providing applications with the ability to efficiently locate metanodes based on the original box locations.
- Modified metadata reading code so that errors encountered in non-essential metadata can be non-fatal.
- Added a service to efficiently and conveniently identify the set of metadata nodes which have been changed, deleted, added, or recently parsed into a `jpx_source' (e.g., because they became available in a dynamic cache, during JPIP browsing). The application can now efficiently scan all such newly available nodes.
5) Modified the "kdu_compress" and "kdu_expand" applications to allow images with a given declared sample data precision to be read or saved as though they had a different sample data precision. One reason for doing this is to overcome a weakness in the support offered by some third party TIFF reading/writing applications, in not properly supporting the packing/unpacking of sample values with unusual precisions.
6) Provided a new core system feature to keep track of the number of compressed bytes in each quality layer, in each tile, image component and resolution. This can help applications to make intelligent choices regarding the number of quality layers they might choose to decode, where speed is particularly important. This feature is partly demonstrated by the new "-stats" option to "kdu_expand".
7) Augmented `kdu_codestream::flush' with the ability to impose constraints not only on the overall compressed size of each quality layer, but also on the size of the quality layer at each resolution and/or each leading subset of image components. This is useful primarily for ensuring the generation of legal codestreams for Digital Cinema applications.
8) Significantly improved robustness of the core system to illegal or highly unusual conditions which might require the allocation of massive amounts of memory. The core system should be able to correctly clean itself up (assuming the application calls `kdu_codestream::destroy') even after throwing an exception from a call to `new' which exceeds the available memory.
9) Fixed some problems associated with empty tile-part headers generated using the ORGgen_tlm parameter attribute.
10) Fixed a bug in `kdu_codestream::trim_compressed_data' which has been in the core system since Part 2 arbitrary decomposition styles were introduced in version 5, but was only detected in version 6.0. This bug could have potentially caused a memory access violation, but apparently hardly ever did so.
11) Fixed a number of other long dormant, subtle bugs in the core system.
12) Fixed a bug in `kdu_region_compositor', which could have caused it to generate a memory fault under some exotic conditions.
13) Fixed a bug in Kakadu's JPIP client, related to the treatment of HTTP/1.1 "100 Continue" responses from proxies.
14) Incorporated temporary fixes provided by a third party into the original DSTO Unix/Linux port of the "kdu_server" utility.