- Ready for ARM-based MACs (Apple Silicon):
- All relevant build environments have been updated to build x86-64, AM64 or universal binaries
- The set of ARM/NEON accelerators has been significantly expanded.
- Further optimizations for HTJ2K (JPEG 2000 Part-15: High Throughput JPEG 2000):
- Kakadu now offers accelerated HT block encoding/decoding procedures for 32-bit x86 platforms, in addition to 64-bit x86 platforms. Although 64-bit platforms are still preferred, both 32- and 64-bit implementations yield extremely high throughput on AVX2-capable CPUs. Optimizations for processors with SSE4.2 support but no AVX2 are also available, but not for encoding on 32-bit platforms -- probably a niche application.
- More advanced control over CPU affinity:
- In the core system: The core `kdu_thread_entity_affinity' class that is used to manage affinity now offers methods to automatically analyze the machine architecture and assign CPU bundles that make sense, guided by platform-neutral parameters.
- In the demo-apps: The "kdu_vex_fast" and "kdu_vcom_fast" dmeo-apps previously relied upon direct user specification of affinity bindings to get optimal performance, but this is now usually done automatically without adding any significant code at the application level. New forms for the "-engine_threads" argument are offered to simplify the definition of multiple processing engines that are automatically bound to appropriate sets of CPUs. The other demo-apps now also naturally limit their multi-threading to CPUs that naturally work together on large NUMA platforms, unless specifically requested to do otherwise by attaching a "u" (="unbound") prefix to the "-num_threads" argument's parameter.
- New capability for "reviewing" generated code-block data during compression:
- The encoded representations of some or all code-blocks can be modified prior to final codestream generation. This is something that can be valuable to advanced content creators.
- New capability for monitoring compressed data consumption:
- Added an "input monitor" capability to `kdu_codestream', allowing latency conscious decoding applications to detect the point at which all compressed data for a codestream has been consumed, so that they can discard unwanted data and/or advance to a new codestream as soon as possible within streaming applications. This feature is of interest in low latency streaming applications.
- Significant enhancements to the Kakadu demo-apps:
- Enhanced the "kdu_v_expand" demo-app to support reading from standard input (e.g., pipes), and to allow writing of sequences of TIFF, YUV or VIX files, rather than just a single YUV or VIX file. This ensures that the capabilities of kdu_v_expand mirror those of kdu_v_compress, and indeed the two can now be connected directly via a pipe.
- Enhanced the "kdu_buffered_compress" and "kdu_buffered_expand" demo-apps with the ability to import and export high precision PGM and PPM files, in addition to raw image files -- previously these apps could only work with 8-bit PGM/PPM files, in contrast to the more generic, yet slower "kdu_compress" and "kdu_expand" demo-apps.