Skip to content

Conversation

BrewTestBot
Copy link
Member

Created by brew bump


Created with brew bump-formula-pr.

release notes
OpenEXR v3.4 introduces a new, additional compression option to the OpenEXR file format for **lossless compression with High Throughput JPEG-2000 (HTJ2K)** encoding:
  • A new HTJ2K compressor uses the High-Throughput (HT) block coder. It supports the full range of OpenEXR features, including 16-bit and 32-bit floating-point image channels, both scanline and tiled.

  • The HT block coder is standardized in Rec. ITU-T T.814 and ISO/IEC 15444-15. It is royalty-free, widely used in cinema and distribution servicing, and implemented in both commercial and open-source toolkits.

  • In experiments, we've found that HTJ2K produces smaller files, and depending on the nature of the image data, is one of the fastest compression types available in OpenEXR.

  • Integration with OpenEXR uses the OpenJPH open-source library. For ease in managing the dependency, the OpenEXR CMake configuration supports automatically fetching and building OpenJPH internally, or linking against an external installation.

  • OpenEXR supports two new compression types with distinct space/time trade-offs:

    • htj2k256 -- encodes/decodes chunks of 256 scanlines, producing slightly smaller file size than htj2k32.

    • htj2k32 -- encodes/decodes chunks of 32 scanlines, better suited to multi-threading, so it offers significantly faster encoding and decoding (4-6x in some cases) than htj2k256, with a slight increase in file size.

  • All existing OpenEXR compression options remain unchanged. This new feature simply extends the range of compression types available.

  • Software compiled with OpenEXR v3.4 will be able to read HTJ2K compressed OpenEXRs without any code changes. Software that writes files may automatically support the new type, but may need a small update to make the new type available as a user option.

  • :warning: This is a backwards-compatible extension to the OpenEXR file format. Files written with OpenEXR v3.4 will be readable by applications built against previous releases, unless they use the new htj2k32 or htj2k256 compression options.

  • :warning: This feature was first introduced for evaluation in February, 2025 via the htj2k-beta branch with a single 256 scanlines/chunk compression option, with the 32-scanline option added more recently. Application software written during this evaluation period will need to change IMF_HTJ2K_COMPRESSION to IMF_HTJ2K256_COMPRESSION, although files written with the earlier evaluation version should still read properly.

Other New Features:

  • :sparkles: New colorInteropID standard attribute

  • :sparkles: New bytes attribute type

    • Designed to hold an arbitrary binary blob of metadata.

    • The OpenEXR library forces no interpretations of the attribute contents; it is strictly application-dependent.

    • The attribute also holds a typeHint string which applications can use to suggest the intended interpretation of the contents,
      but it is strictly informational.

  • :wrench: TBB as a global thread provider

    • A new cmake option -DOPENEXR_USE_TBB=ON switches the internals of the thread pool to use TBB by default.
    • Building with this option adds a link dependency on the OneAPI TBB distribution.
  • :wrench: Vendored libdeflate

    • OpenEXR v3.4 now ships with a bundled distribution of the libdeflate library, replacing the previous "auto-fetch" mechanism.
    • By default, building OpenEXR will use a system installation of libdeflate as before, but if none is found, the build will use the internal copy of libdeflate.
    • Use -DOPENEXR_USE_INTERNAL_DEFLATE=ON to force the use of the internal vendored version.

Bug fixes:

  • :bug: Using openexr via cmake add_subdirectory now works properly.

Changes to the OpenEXR Python module:

  • :snake: :bug: The Python module now allows an empty part name for a single-part file
  • :snake: :bug: The header_only option for Python module's OpenEXR.File now works properly.
  • :snake: :package: :warning: pypi distributions now add support for Python 3.13 and drop support for Python 3.7.

View the full release notes at https://github.com/AcademySoftwareFoundation/openexr/releases/tag/v3.4.0.


@github-actions github-actions bot added the bump-formula-pr PR was created using `brew bump-formula-pr` label Sep 5, 2025
@chenrui333
Copy link
Member

  CMake Error at /home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/cmake/trap_fetchcontent_provider.cmake:12 (message):
    Refusing to populate dependency 'openjph' with FetchContent while building
    in Homebrew, please use a formula dependency or add a resource to the
    formula.
  Call Stack (most recent call first):
    /home/linuxbrew/.linuxbrew/opt/cmake/share/cmake/Modules/FetchContent.cmake:2468:EVAL:1 (trap_fetchcontent_provider)
    /home/linuxbrew/.linuxbrew/opt/cmake/share/cmake/Modules/FetchContent.cmake:2468 (cmake_language)
    /home/linuxbrew/.linuxbrew/opt/cmake/share/cmake/Modules/FetchContent.cmake:2314 (__FetchContent_MakeAvailable_eval_code)
    cmake/OpenEXRSetup.cmake:302 (FetchContent_MakeAvailable)
    CMakeLists.txt:62 (include)

@chenrui333 chenrui333 added the build failure CI fails while building the software label Sep 5, 2025
openexr: depends_on `openjph`

Signed-off-by: Rui Chen <[email protected]>
@chenrui333 chenrui333 removed the build failure CI fails while building the software label Sep 5, 2025
@chenrui333 chenrui333 added CI-no-fail-fast Continue CI tests despite failing GitHub Actions matrix builds. long build Set a long timeout for formula testing labels Sep 6, 2025
@github-actions github-actions bot added the long dependent tests Set a long timeout for dependent testing label Sep 6, 2025
@chenrui333 chenrui333 added CI-skip-recursive-dependents Pass --skip-recursive-dependents to brew test-bot. CI-no-fail-fast-deps Continue dependent tests despite failing GitHub Actions matrix tests. long dependent tests Set a long timeout for dependent testing and removed long dependent tests Set a long timeout for dependent testing labels Sep 6, 2025
@chenrui333

This comment was marked as resolved.

@chenrui333 chenrui333 added ready to merge PR can be merged once CI is green no long build conflict Do not allow merging other pull requests when files conflict with this one labels Sep 7, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bump-formula-pr PR was created using `brew bump-formula-pr` CI-no-fail-fast Continue CI tests despite failing GitHub Actions matrix builds. CI-no-fail-fast-deps Continue dependent tests despite failing GitHub Actions matrix tests. CI-skip-recursive-dependents Pass --skip-recursive-dependents to brew test-bot. long build Set a long timeout for formula testing long dependent tests Set a long timeout for dependent testing no long build conflict Do not allow merging other pull requests when files conflict with this one ready to merge PR can be merged once CI is green
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants