Skip to content

Releases: AcademySoftwareFoundation/openexr

v3.3.1

09 Oct 03:34
v3.3.1
Compare
Choose a tag to compare

Patch release that addresses several build and performance issues:

  • Fix a performance regression 3.3.0 in huf/piz compression
  • Replace FetchContent_Populate with FetchContent_MakeAvailable
  • Build wheels for python 3.12
  • Fix a problem with python wheel sdist that caused local build to fail
  • Compile source files in parallel under MSVC

v3.3.0

30 Sep 16:06
v3.3.0
Compare
Choose a tag to compare

Minor release several significant changes:

  • The C++ API now uses the OpenEXRCore library underneath.

    • This is a transparent change to the existing API, although the ABI (i.e. structure / class layout) has changed
    • Existing reading of pixel data should be more efficient due to fewer memory allocations / frees during the process of reading. Additionally, some more specialisation of unpacking routines may result in faster unpack times
    • All compression routines are implemented by the C Core layer underneath and no longer duplicated
    • Initial support for "stateless" reading of scanlines has been proposed, allowing multiple threads to read scanlines into different frame buffer objects at the same time. While well tested at the Core level, the C++ api should be considered experimental for this release
    • Thread dispatch for reading different file types has been made more homogeneous, so is simpler and more consistent
  • New API for accessing compression types

    In anticipation of future support for new compression types, there is now a convenience API for mapping between compression type names and the associated enum:

    getCompressionDescriptionFromId(Compression, std::string&)
    getCompressionIdFromName(const std::string&, Compression&)
    getCompressionNameFromId(Compression, std::string&)
    getCompressionNamesString(const std::string&, std::string&)
    getCompressionNumScanlines(Compression)
    isValidCompression(int)
    
  • New bin tools:

    • exrmetrics - Read an OpenEXR image from infile, write an identical copy to outfile reporting time taken to read/write and file sizes. Useful for benchmarking performance in space and time.

    • exrmanifest - Read exr files and print the contents of the embedded manifest. The manifest provides a mapping between integer object identifiers and human-readible strings. See OpenEXR Deep IDs Specification for more details.

  • New python bindings.

    This version introduces a new python API, the File object, which provides full support for reading and writing all types of .exr image files, including scanline, tiled, deep, mult-part, multi-view, and multi-resolution images with pixel types of unsigned 32-bit integers and 16- and 32-bit floats. It provides access to pixel data through numpy arrays, as either one array per channel or with R, G, B, and A interleaved into a single array RGBA array.

    Previous releases of the openexr python module supported only scanline files. The previous API remains in place for now for backwards compatibility.

    See src/wrappers/python/README.md for a synopsis.

v3.2.4

26 Mar 16:52
v3.2.4
Compare
Choose a tag to compare

Patch release that fixes handling of dwa compression in OpenEXRCore library.

Other miscellaneous changes:

  • Add CMake find_dependency for libdeflate, to fix a vcpkg build error
  • Remove the unused CMake option OPENEXR_INSTALL_EXAMPLES
  • Fix some other compiler warnings.

v3.1.13

26 Mar 16:46
v3.1.13
Compare
Choose a tag to compare

Patch release that fixes handling of dwa compression in OpenEXRCore library.

v3.2.3

07 Mar 00:43
v3.2.3
Compare
Choose a tag to compare

Patch release with various build/bug/documentation fixes:

  • Fix bswap on NetBSD
  • Fix issue with decompressing fp32 dwa files
  • Support cmake config for libdeflate
  • updated security policy
  • miscelleneous website improvements

This release also addresses:

OSS-fuzz 66676 Null-dereference in Imf_3_3::realloc_deepdata
OSS-fuzz 66612 Null-dereference in Imf_3_3::realloc_deepdata

This release also formally adopts the process of publishing openexr python wheels to pypi.org.

This release also introduces the process of signing release artifacts via sigstore.

v3.2.2

12 Feb 04:16
v3.2.2
Compare
Choose a tag to compare

Patch release that addresses CVE-2023-5841.

Note that this bug is present in the C++ API (since v3.1.0), although
it is in a routine that is predominantly used for development and
testing. It is not likely to appear in production code.

v3.1.12

12 Feb 03:55
v3.1.12
Compare
Choose a tag to compare

Patch release that addresses CVE-2023-5841.

Note that this bug is present in the C++ API (since v3.1.0), although
it is in a routine that is predominantly used for development and
testing. It is not likely to appear in production code.

v2.5.10

19 Dec 19:28
Compare
Choose a tag to compare

Patch release that fixes a build failure on macOS prior to 10.6 (fallback for missing dispatch header).

v3.2.1

27 Sep 14:49
737b270
Compare
Choose a tag to compare

Patch release with miscellaneous build fixes:

  • Fix for linking statically against an external libdeflate
  • Fix a compile error with OPENEXR_VERSION_HEX
  • Fix various compiler warnings
  • Pkg-config generation is now on by default for all systems, including Windows

See CHANGES.md for details.

v3.2.0

30 Aug 18:13
Compare
Choose a tag to compare

Minor release with several additions, changes and improvements:

  • Zip compression via libdeflate

    As of OpenEXR release v3.2, OpenEXR depends on libdeflate for DEFLATE-based compression. Previous OpenEXR releases relied on zlib. Builds of OpenEXR can choose either an libdeflate installation, or CMake can auto-fetch the source and build it internally. The internal build is linked statically, so no extra shared object is produced.

    See website/install.rst for more details.

  • New camdkit/camdkit-enabled standard attributes

    These changes bring to OpenEXR new standard optional attributes that were discussed in the SMPTE Rapid Industry Solutions On-Set Virtual Production Initiative). Additionally, some useful attributes from the SMPTE ACES Container File Layout standard, SMPTE ST 2065-4:2023, have been included as well. The new attributes are:

    Support automated editorial workflow:

    • reelName
    • imageCounter
    • ascFramingDecisionList

    Support forensics:

    • cameraMake
    • cameraModel
    • cameraSerialNumber
    • cameraFirmware
    • cameraUuid
    • cameraLabel
    • lensMake
    • lensModel
    • lensSerialNumber
    • lensFirmware
    • cameraColorBalance

    Support pickup shots:

    • shutterAngle
    • cameraCCTSetting
    • cameraTintSetting

    Support metadata-driven match move:

    • sensorCenterOffset
    • sensorOverallDimensions
    • sensorPhotositePitch
    • sensorAcquisitionRectangle
    • nominalFocalLength
    • effectiveFocalLength
    • pinholeFocalLength
    • entrancePupilOffset
    • tStop (complementing existing aperture)

    Also, renderingTransform and lookTransform have been deprecated.

    See website/StandardAttributes.rst and PR #1383 for more details.

  • Updated SO versioning policy

    This change adopts a policy of appending the MAJOR.MINOR.PATCH software release name to the SONAME to form the real name of the shared library.

    See website/install.rst and PR #1498 for more details.

  • Python bindings & PyPI wheel

    Support for the OpenEXR python bindings have been formally adopted by the OpenEXR project.

  • Miscellaneous improvements:

    • "docs" renamed to "website" (PR #1504)

    • Additional deep & multipart code examples (PR #1493
      and PR #1502)

    • Many small build/test fixes

    • bin tools man pages

    • Expanded test coverage

Specific OSS-fuzz issues addressed:

  • OSS-fuzz 46459 Out-of-memory in openexr_exrcheck_fuzzer
  • OSS-fuzz 46432 Heap-buffer-overflow in generic_unpack
  • OSS-fuzz 46413 Integer-overflow in reconstruct_chunk_table
  • OSS-fuzz 45718 Heap-double-free in Imf_3_1::RgbaInputFile::~RgbaInputFile
  • OSS-fuzz 45716 Abrt in Imf_3_1::RgbaInputFile::~RgbaInputFile
  • OSS-fuzz 43771 Direct-leak in Imf_3_1::RgbaInputFile::RgbaInputFile