This release contains a great number of major advances over previous versions of Kakadu.Most notable of all is a completely new multi-threaded processing sub-system which can achieve much higher CPU utilization for machines with many CPU cores and/or hyperthreading.In a number of important applications, processing throughput with this new version of Kakadu can be as much as twice that of previous versions.There are a huge number of other advances as well.Here is a brief overview of what is new or improved in this version:
1) Completely new multi-threaded processing subsystem that preserves backward compatibility in almost all respects from an external point of view, but is internally completely different from that in previous versions.The new multi-threaded sub-system provides new ways for applications to add there own multi-threaded processing elements, sharing thread resources as efficiently as possible.Some of these are demonstrated by the rewritten "kdu_v_compress" and "kdu_v_expand" demo apps.
2) New SIMD processing enhancements, including much more extensive use of SSSE3, as well as AVX instruction sets.
3) Major changes to the JPX file management sub-system, focussing on better support for structured metadata.The new implementation supports and uses the new "group" box introduced with IS15444-2/AMD3, but still supports free/asoc combinations (as in previous versions of Kakadu) for non-semantic structuring and can use these in place ofgroup boxes if requested.These non-semantic structuring elements are now completely hidden from the application, which sees only the semantic metadata structure, while the non-semantic structuring elements work behind the scenes to ensure that metadata can be efficient communicated on demand via JPIP, in interactive browsing applications.The new JPX sub-system now fully supports the use and semantic interpretation of region-of-interest and number-list boxes at any point in the metadata hierarchy.This, together with the interpretation of cross-reference boxes as semantic links, allows for extremely rich metadata structures to be constructed and communicated interactively, coupled tightly to the interactive image browsing experience.
4) Kakadu's client and server elements (the `kdu_client'/`kdu_cache' interfaces and the "kdu_server" application) have also undergone major changes.New JPIP request fields from IS15444-0/AMD5 are supported and the client and server now support the newly defined UDP transport protocol for JPIP, although this should be regarded as still experimental for the moment.The most major change, however, is a complete overhaul of the underlying cache model implementation which is much more efficient than before.Cache model manipulation processing is now deferred (wherever possible) to the point where the relevant cache model entries actually need to be accessed to serve arequest; stateless request handling is much more efficient; cache model holes can now be stored; and the average amount of memory required to maintain the cache model is actually reduced (at least on 64-bit platforms).The `kdu_client' interface now offers a special Out-Of-Band (OOB) request feature that allows small high priority requests (typically for metadata) to be routed around larger requests for which the server may be streaming data (typically compressed imagery).This allows for much more responsive browsing of imagery and metadata and it is also used by the new `kdu_region_animator'object -- see below.
5) Kakadu's high level `kdu_region_compositor' and `kdu_region_decompessor' objects have also been enhanced in a number of important ways.The `kdu_region_compositor' object can now synthesize sophisticated JPIP metadata requests to simplify the implementation of applications that need to work intelligently with content that is located on a remote server, while interactively browsing imagery, animations, and so forth.Several efficiency improvements have been made to the internal rendering machinery and some minor adjustments have been made to facilitate interaction with the new `kdu_region_animator' object (see below).
6) A new `kdu_region_animator' object has been added to the special support objects found in the "apps/support" director.This object is designed to work with `kdu_region_compositor' in rendering applications that also need animation.In addition to managing the scheduling of frames for regular video sources (MJ2 tracks and JPXanimations), the new animator object is capable of synthesizing novel animations from metadata within a JPX file.For example, a sequence of metadata nodes that contain or link to ROI description boxes can be interpreted as an animation that pans smoothly between the various regions of interest within their respective compositing layers or within and between the fully composited frames to which they belong. The animator provides dynamic panning features which work together with the `kdu-region_compositor' and a screen update engine (provided by the application) to synthesize smooth pans, with configurable speed and acceleration parameters, while keeping memory consumption very low (a constant feature in Kakadu).Finally, the animator is designed to work with JPIP, synthesizing appropriate JPIP requests for both metadata and imagery.The animator strives to implement the dream of delay-free interactive rendering, by pre-requesting important structural elements using the special OOB request queue now offered by the `kdu_client' object, while relying heavily on the fact that JPEG2000 content can generally be rendered from a cache with almost any arbitrary amount of content, being asynchronously populated by the client as and when it receives data.
7) The "kdu_show" application has been greatly enhanced to use and demonstrate almost all the JPX, JPIP and Animation features described above.For example, dynamic metadata-driven animations can be launched simply by holding the shift key down while double-clicking on a metadata item of interest in the catalog sidebar -- this also worksduring interactive browsing with JPIP.Real-time rendering for video playback and animation is now implemented through a derived version of the `kdu_region_compositor' class that allows much better decoupling between the display thread and the main application thread. This implementation structure provides an excellent template for otherinteractive video browsing applications based on Kakadu.The metdata catalog sidebar has been further enhanced, particularly to support and reveal the appearance of region- or image-specific metadata elements at any point in the metadata hierarchy. Links and link editing are also enhanced somewhat.The MAC and Windows versions of "kdu_show"now provide identical funcionality, including a sophisticated metadata shape editor for regions of interest.
9) Lots of other more minor enhancements and fixes to all known bugs. For example, multi-threaded processing has now been introduced to more demo code fragments in "kdu_render" and also to the Java and C# demo applications, "KduRender2".Memory leaks that could occur in the core parameter parsing system (if codestream errors weredetected and the error handing machinery used exception processing) have been removed.A source of possible race conditions in multi-threaded processing on 32-bit operating systems has also been eliminated.The "kdu_compress" and "kdu_expand" demo apps now provide better handling for resolution tags in TIFF files, preserving the information in a more appropriate manner within JP2/JPX files.Many of the demo apps have additional command-line options, allowing you to experiment with advanced features.