This release focuses on core processing speed, as well as fixes for a significant number of mostly very subtle bugs; there are also a couple of important new demonstration applications. With regard to speed, version 6.0 introduces:
1) fast SIMD DWT and colour transformation code for the 32-bit precision sample processing path, which largely mirrors that already available in the 16-bit processing path;
2) several efficiency improvements in the management of compressed data by the core codestream management machinery, particularly for sources which can be mapped through memory, advertising the new `KDU_SOURCE_CAP_IN_MEMORY' capability;
3) various improvements to tiled image processing, including a new implementation of the `kdu_compressed_source' workhorse object, which supports the simultaneous processing of multiple tiles where this would be beneficial;
4) additional methods to control the priority and CPU bindings for threads created by Kakadu's multi-threaded processing environment; and
5) added a new codestream management feature which allows decompressed image quality to be traded for computational speed by stripping away final coding passes from selected code-blocks; this has a similar effect to discarding quality layers, but works even when the original codestream was created with only one quality layer.
A brand new Kakadu "speed-pack" offering is also now available under a separate licensing agreement. It provides an entirely new implementation strategy for the core block decoding algorithm, as well as a new implementation structure for the wavelet transform; these features allow licensees of the speed-pack version to provide end-to-end speedups of 40% to 50% in many decompression applications, relative to earlier versions of Kakadu, with no loss in quality. For compression applications, the speed-pack affords even larger potential improvements, with typical speedups of 45% to 65%, depending on the compressed bit-rate. Real-time software rendering of digital cinema content is well and truly within reach on high end computing platforms. Moreover, high quality (but less than perfect) renderings of digital cinema content are now possible on less powerful machines, with the aid of the bit-stream truncation option mentioned under item (5) above. To license the Kakadu speed-pack, you must first have a commercial license to Kakadu v6.0 (or higher). For more information on licensing, consult the Kakadu web-page at https://kakadusoftware.com.
With regard to new applications, version 6.0 offers:
1) "kdu_vex_fast", whose purpose is to demonstrate the fastest possible means of decompressing and rendering JPEG2000 compressed video content for real-time applications, including digital cinema playback; the Windows version of this application also includes the option for tear-free rendering of the content directly to a window or in full-screen mode via DirectX9.
2) The "kdu_server" application (Kakadu's JPIP server application) can now be compiled on Linux/Solaris and MAC operating systems. Moreover, you can also build the `kdu_client' object (Kakadu's JPIP client) on these platforms, in addition to Win32 and Win64.
With regard to bug fixes, a number of the more significant ones are listed below (for more information see the usual "Updates.txt" file in your Kakadu distribution).
1) Fixed two non-compliance problems with the way Kakadu handles Part-2 multi-component transforms. The new release generates compliant codestreams but can also transparently ingest and render the non-compliant codestreams which might have been created by previous versions of Kakadu. More details are provided in "Updates.txt".
2) Fixed an obscure bug with the way Kakadu handles non-symmetric wavelet kernels (available only in Part-2 codestreams) for certain boundary conditions.
3) Fixed a couple of obscure bugs in the tile processing machinery, one of which was responsible for the occasionally reported "Illegal inclusion tag tree encountered ..." message observed when serving huge images via JPIP.
4) Fixed some very subtle bugs in Kakadu's multi-threaded processing environment, which could have manifested themselves on platforms with many CPU's.
5) Fixed a non-compliance issue in the way Kakadu's JPIP client communicates with HTTP proxies.
6) Modified the way in which the "kdu_hyperdoc" utility builds Java bindings so as to ensure absolute robustness against race conditions, as classes are loaded.
7) Fixed a bug in the way the "kdu_compress" demo application handles tiled TIFF images with compressed tile data.
8) Fixed some irregularities in the Linux and MAC makefiles, so as to get reliable builds, with the maximum set of compliant speedup options, on all 32- and 64-bit X86-based machines. Previous irregularities in Java linking, for example, should now be resolved.