Menu ▾ ▴

#197 Replace #183 with OpenEXR 3.5.2, Imath 3.2.3 and libdeflate 1.26

nobody
2 days ago
2 days ago
No

Prepared 2026-10-13.

Replace the old OpenEXR 3.3.13 attachment with the tested OpenEXR 3.5.2 integration: Imath 3.2.3, libdeflate 1.26, OpenEXR-vendored Zstandard 1.5.7 and OpenJPH 0.32.0. Preserve the Android API 25 allocation fallback, Windows CreateFileW path, OpenEXR macro guards, strict-C11 GNU declarations and ARM64EC guards. Keep OpenJPH scalar by default in this SVN patch; the fork runtime SIMD build system is a separate integration. Replace PluginEXR Imath::Int64 offsets with uint64_t. Remove stale Imath include paths. GNU/macOS make requests C++17; libdeflate needs C11. Windows projects require retargeting to a modern MSVC toolset with those standards, rather than relying on their historical 2017 filenames.

Patch series and application

Start from clean FreeImage SVN trunk r1911. Apply the existing OpenJPEG source upgrade from https://sourceforge.net/p/freeimage/patches/182/ first. Then apply this ordered vendor series:

  1. zlib-1.3.2.patch.gz
  2. libpng-1.6.59.patch.gz
  3. webp-1.6.0.patch.gz
  4. libtiff-4.7.2.patch.gz
  5. libraw-0.22.2.patch.gz
  6. jpeg-10.0.patch.gz
  7. openexr-3.5.2.patch.gz (replacement follow-up to #183)

These are separate reviewable patches with shared build-file prerequisites, not seven independent diffs against pristine SVN. The OpenEXR replacement must be used instead of the old #183 attachment: do not apply both. A small OpenJPEG Windows-project companion patch is submitted separately as a follow-up to #182; apply it after the existing #182 source patch.

For each patch, decompress it and apply from the FreeImage tree root with patch --dry-run -E -p0, then patch -E -p0. -E removes obsolete source/header files, including old Imath headers that must not shadow the new ones.

Scope and verification

Each patch carries vendor code/configuration and reconciles GNU/macOS make source/header lists plus legacy VS source lists. File encodings and line endings are preserved. The library snapshots come from the current fork versions recorded at https://github.com/danoli3/FreeImage/blob/master/THIRD_PARTY_VERSIONS.md ; this is not a claim that every version is the newest available upstream release today. Retain all FreeImage and vendor license notices.

All patches dry-run and apply in order against r1911 plus the existing #182 source patch. The final combined tree builds a static library with GNU make and Apple Clang on macOS ARM64. An existing SVN jxrlib missing-declaration problem required a validation-only forced header declaring _byteswap_ulong and including wchar.h; that unrelated fix is not mixed into these vendor patches.

Runtime validation of the combined tree passed PNG, JPEG, lossless WebP and JPEG-compressed TIFF memory round trips; FreeImage zlib compression/decompression; EXR ZIP, PIZ, ZSTD, HTJ2K256, HTJ2K32, LJ2K and variable-sample deep ZSTD; TIFF uncompressed/LZW/Deflate/PackBits; and raw G3 fax decoding. The linked LibRaw version reports 0.22.2-Release. Real-camera RAW decoding was not tested in this batch. VS project XML and every referenced compilation source were checked, but these exact adapted SVN patches have not been compiled on Windows, Android, Linux or 32-bit runners. This combined validation is not a separate build of every intermediate series step or a full ASan run.

The original SVN FreeImage version remains 3.19.0; these are dependency updates, not an upstream release-number bump. Upstream acceptance still requires an SVN revision.

Immediately preceding series prerequisite: https://sourceforge.net/p/freeimage/patches/196/

This is the replacement for the older OpenEXR 3.3.13 patch in #183. Use this new attachment instead of the old one. Editing #183 is not permitted by the tracker; the old ticket is retained and cross-linked.

1 Attachments

Discussion

Anonymous
Anonymous

Add attachments
Cancel