Skip to content

Releases: aous72/OpenJPH

0.10.0

06 Jan 08:57
Compare
Choose a tag to compare

There are many additions and modifications over time.
The following list is automatically generated for changes since version 0.9.0

What's Changed

  • Refactor codestream_local into multiple source/header files by @chafey in #93
  • Options to insert a TLM marker, and create tileparts by @aous72 in #87
  • Adds AVX512 support by @RodneyGuo in #103
  • Walk around overflow when block width is bigger than 64 by @RodneyGuo in #104
  • Add support for writing a user-specified COM marker by @palemieux in #105
  • CMake tweaks -- Adding a CMake option to disable building executables. by @thewtex in #109
  • Feature - dpx file input support for ojph_compress by @michaeldsmith in #110
  • Improving the way CMakeLists.txt files are arranged, and also addressing issues with building for MinGW and MSYS. by @aous72 in #115

New Contributors

Full Changelog: 0.9.0...0.10.0

0.9.0

25 May 13:07
Compare
Choose a tag to compare

This release focuses primarily on improving the speed of the decoder.
This is an improvement of between 30-50% in decode time, or 40-80% in throughput.
A lot has changed in certain places.

  • Large parts of the block decoder has been rewritten.
  • SSSE3 optimized version of the block decoder has been written.
  • Accelerated functions that transfer from and to the block decoder has been added, as suggested by Chris.
  • Accelerated functions that write to pgm and ppm; the code can be used for other file types, but I was too tired to include this as well. This was suggest by Mike.
  • Slightly modified the internal structure of buffers returned when codestream::pull is invoked; this allows buffers from different components to coexist (can be used concurrently). This is needed for the accelerated functions above. Previous designs using this feature should continue working without issues.
  • For WASM, we have now accelerated all the decode path including the block decoder using SIMD instructions.
  • A bug fix for an issue reported by Pierre, where an empty subband can cause a segmentation fault.
  • For windows, added a flag for disable exported functions when static build is used, as suggested by Lucas.
  • There might be other issues that I forgot.

0.8.3

07 Apr 02:35
Compare
Choose a tag to compare

This patch adds wasm simd support for the color and wavelet transform.
The subjprojects/js/html/index.html can detect browser support for wasm simd and dynamically load the simd version if simd support is available.

0.8.2

17 Feb 23:44
Compare
Choose a tag to compare

This is a small bug fix on the upper bound of U_q (Uq in the standard).

  • It should be no larger than missing_msbs + 2, instead of missing_msbs + 1.

0.8.1

03 Jan 06:00
Compare
Choose a tag to compare

Added support for per-component bit depth for TIFF images.

0.8.0

27 Dec 04:33
Compare
Choose a tag to compare

There are many changes in this version.

  • The choice for signed or unsigned has been carefully checked. The current implementation generates a smaller number of warnings.
  • Added test script to check that the code works.
  • Fixed many bugs in the code.
  • Support for TIFF image format has been added by Mike.
  • Wasm build has been updated.
  • Many other fixes. Please check the development branch.
  • Note: This will break some code, because all types have been changed in a way that is more respectful of signed/unsigned variables. Please let me know if you need a hand in updating your build.

0.7.3

12 Mar 02:18
Compare
Choose a tag to compare

A few bugs has been fixed, and I felt it is fit to give it new version number.

0.7.2

04 Nov 10:54
Compare
Choose a tag to compare

A small update to support:

  • QCC marker in the header.
    This support has become more important recently because images coded with the Qfactor option in Kakadu use this marker.

Qfactor provides an exciting approach to setting some encoding parameters in JPEG2000; it enables JPEG-like Qfactor setting for JPEG2000, with the objective of achieving the same visual quality of that achieved with the same Qfactor in JPEG.
We intend to add support for it at some point in the near future.

Further reference for JPEG2000 Qfactor:

  1. HTJ2K Whitepaper
  2. Parameterization of the quality factor for the high throughput JPEG-2000 (Behind a paywall)

0.7.1

11 May 11:31
Compare
Choose a tag to compare

This is a small update

  • The JavaScript subproject has been updated to support and demonstrate reconstruction at reduced resolutions. This includes updating the JavaScript wrapper, the CMakeLists.txt, and the index.html file. The update includes compiled .js and .wasm versions of the library, and a more compressed file of the lena image.
  • Updated README.md to refer to new white papers, and the openjphjs project.
  • Bumped up the version.

0.7.0

10 May 13:03
Compare
Choose a tag to compare

This is a rather large update. The main objectives are:

Enable decoding at reduced resolutions
This is achieved using "-skip_res x,y" in ojph_expand. x is the number of resolutions for which data is skipped (or not read), and y is the number of resolutions that are skipped for reconstruction. This can be achieved programmatically by calling

    codestream.restrict_input_resolution(skipped_res_for_data, skipped_res_for_recon);

There are two APIs that makes determining the reconstruction width and height; theses are:

    ui32 param_siz.get_recon_width(comp_num);
    ui32 param_siz.get_recon_height(comp_num);

where "comp_num" is the component number.

Introduce a resilient mode
With this option, the decoder attempts to continue decoding an image even in the presence of errors or early termination of the codestream (an incomplete file). This is achieved with "-resilient true" in ojph_expand.
The corresponding API is:

codestream.enable_resilience()

If there are error, the decoder will generate info messages. If the end user is not interested in these message, the output can be blocked if the end-user defines his own ojph::message_info object and pass it to configure_info(); inside this object, the end-user can send the message to nowhere.