Skip to content
Permalink
v2.5.0
Switch branches/tags
Go to file
 
 
Cannot retrieve contributors at this time
3267 lines (2421 sloc) 250 KB

OpenEXR Release Notes

Version 2.5.0 (May 6, 2020)

Minor release with miscellaneous bug fixes and small features

Summary

  • No more build-time header generation: toFloat.h, eLut.h, b44ExpLogTable.h, and dwaLookups.h are now ordinary header files, no longer generated on the fly.
  • New StdISSTream class, an "input" stringstream version of StdOSStream
  • New Matrix22 class in Imath
  • Chromaticity comparison operator now includes white (formerly ignored)
  • Various cmake fixes
  • Bug fixes for various memory leaks
  • Bug fixes for various invalid memory accesses
  • New checks to detect damaged input files
  • OpenEXR_Viewers has been deprecated, removed from the top-level cmake build and documentation.

Merged Pull Requests

  • 712 Removed #include PyIlmBaseConfigInternal.h from all public .h files.
  • 711 Rewrote testToFloat().
  • 709 Fix clean pthreads strikes back
  • 708 Fix clean pthreads
  • 707 A clean version of #673: Allow the use of Pthreads with WIN32/64
  • 705 added recent commits and PR's to 2.5.0 release notes
  • 704 fixed typos in README.md
  • 703 Release notes for 2.2.2
  • 702 bump version on the 2.2 branch to 2.2.2
  • 700 Patch fixes for CVE-2020-* from commit e79d229 into release/2.2
  • 699 Bump version to 2.5.0
  • 698 Fix to make Boost_NO_BOOST_CMAKE a cache variable
  • 697 Fix python module install on macOS
  • 696 TSC meeting notes 4-23-20
  • 694 TSC meeting notes 4-16-20
  • 693 Update the release notes and security notices with 2020 CVE's
  • 692 Meetings 4.2.20
  • 690 Implementation of Matrix22
  • 685 Fix libc++abi.dylib: Pure virtual function called!
  • 683 Typo in INSTALL.md: cmake now builds three modules, not four.
  • 682 TSC meeting notes 2020 03 05
  • 680 fixed a/an use in Matrix33 and Matrix44
  • 676 Remove OpenEXR_Viewers from the cmake build files and from INSTALL.md
  • 675 TSC meeting notes for 2/27/2020
  • 672 Fix cmake install failing when install dir contains spaces, fix symlinks for shared libraries on DLL platforms
  • 669 CLA docs moved from "docs" to "contributors"
  • 667 TSC meeting notes 2/20/2020
  • 666 ImfChromaticities.cpp: Add back white to equality ops.
  • 662 support reloading broken files with IlmImfFuzzTest
  • 661 fix unitialized pointer and double-delete bugs
  • 660 exrdisplay: limit maximum image size based on available screen res
  • 659 fix memory leaks and invalid memory accesses
  • 658 Fix yet more memory leaks from constructor exceptions
  • 657 Release notes for 2.4.1 patch release.
  • 656 fix crash with damaged EXR files
  • 655 Notes 2020 02 06
  • 653 fix memory leak from constructor exceptions
  • 650 ImfAcesFile.cpp: Fix primary conversion edge case.
  • 649 ImfChromaticities.h/cpp: Typo and pass by ref change.
  • 647 fix typo and ref to theory document in InterpretingDeepPixels
  • 645 Various CI Updates:
  • 643 Various checks to improve handling of damaged input files
  • 642 Fixed security email address to security@openexr.org
  • 641 Updates to fix broken Windows build.
  • 640 notes from 1/9/20 and 1/16/20
  • 639 Split Targets and Config and add find_package
  • 638 OpenEXR/ImfStdIO.[cpp h]: Added StdISStream.
  • 637 OpenEXR/IlmImf/ImfHuf.cpp: Fix OS dependent exr binary data for piz.
  • 635 Make docs install optional in CMake
  • 634 Add interface includes to IlmBase and OpenEXR
  • 631 add missing IMF_EXPORT to ImfOpenInputFile for dllexport
  • 629 Fixed some typos
  • 627 possible fix for #570: avoid writing NaNs into test images
  • 626 fix testB44ExpLogTable and testDwaLookups, and Makefile.am
  • 622 Azure and SonarCloud updates.
  • 620 Switch from int to size_t to prevent overflow with huge images in exrdisplay (Fix for #610)
  • 619 TSC meeting notes November 21, 2019
  • 618 change URL to https://github.com/AcademySoftwareFoundation/openexr
  • 616 Fix issue 289, C++17 compatibility
  • 615 Add a missing break statement when determining compression in exr2aces
  • 613 Notes 2019 11 15
  • 612 Add a 'clang-format' build target
  • 608 Fix #595 and others, issue with pkgconfig generation under cmake
  • 606 Remove all build-time header generation
  • 601 "Rule of 5" copy/assign/move declarations
  • 600 TSC Meeting Notes 2019/10/24
  • 599 Prepare 2.4 release branch
  • 598 Fix for #571: keep all values word-aligned in IlmImfTest testLargeDataWindowOffsets
  • 590 TSC Meeting notes for 2019-10-17
  • 588 Gitignore
  • 587 removed unnecessary .m4 files
  • 586 TSC Meeting Notes 2019-10-3
  • 585 Added mission statement to README.md
  • 582 Azure macOS job fixes
  • 580 More SonarCloud "bug" fixes in Imath
  • 578 More fixes for SonarCloud bugs
  • 577 Sonar fixes in IlmImf and IlmImfTest
  • 576 TSC meeting notes
  • 575 Sonar fixes for Iex, IexTest, and ImathTest
  • 574 Change Azure SonarCloud job to run weekly.
  • 569 TSC meeting notes for the last 3 weeks
  • 562 CVE listing in SECURITY.md
  • 561 A few more NOSONAR suppressions in PyImath
  • 560 Clean up small number of sonarcloud bugs / warnings
  • 559 Change Azure SonarCloud job to run for every PR, rather than only for…
  • 558 Add NOSONAR comments to PyImath to suppress "self==self" bug reports.
  • 557 Fix warnings when _FORTIFY_SOURCE set
  • 556 Fix #555
  • 554 Replace use of rand()/srand() with the C++11
  • 553 Increase Azure timeout for SonarCloud, Linux and MacOS jobs.

Closed Issues

  • 689 I was able to get OpenEXR to install by adding -std=c++11 to the extra_compile_flags in setup.py, as lgritz and peterhillman suggested. Here's the file with it added:
  • 688 Invalid shift (141647077)
  • 687 ZLIB not found
  • 686 Using the example Chromacity files - issue with chromaticities
  • 679 mipmap / ripmap question
  • 674 OpenEXR_Viewers / libCg aliasing error
  • 671 Tiles/Ocean.exr core dumps on latest code built from git
  • 668 2.4.1: test suite build is failing
  • 665 openexr/OpenEXR_Viewers/config/LocateCg.cmake issue on Linux
  • 663 2.4.1: missing dist tar balls
  • 654 build breaks backwards compatibility
  • 651 ImfChromaticities.cpp: Revisiting the == and != operators
  • 648 find_package macro redefinition conflicts with vcpkg macro on Windows.
  • 633 ImfStdIO.[cpp h]: Missing StdISStream class
  • 632 Platform/OS dependent piz compressed binary data
  • 630 OpenEXR loading not making use of multiple threads
  • 628 Missing C++11 type traits for half
  • 625 OPENEXR_DLL issues
  • 623 Documentation : Typo in "Interpreting Deep Pixels"
  • 617 Move openexr repo to AcademySoftwareFoundation organization
  • 611 How to force Python3 build on Linux
  • 610 huge images cause bad_array_new_length exception in exrdisplay
  • 607 Getting started... build & hello world.
  • 604 PyIlmBaseConfig not in export set?
  • 595 Broken pkgconfig files when building with cmake
  • 594 Python modules are not linked to Boost::python
  • 593 Python modules are not installed with cmake
  • 584 OpenEXR CLAs
  • 581 ImfCompressor.h is not installed
  • 579 ImfFrameBuffer.h not compatible with C++98 code
  • 573 Linker cannot find "boost_python-vc140-mt-x64-1_66.lib" on Windows.
  • 572 "IlmImf-2_3.dll" shared library is not built anymore in 2.3.0.
  • 571 Test failure on ARMv7
  • 570 Test failure on i686
  • 567 CMake builds produce invalid pkg-config files
  • 566 throwErrno symbols missing when Iex is linked before other libraries statically
  • 565 2.4.0 tarball signature missing
  • 564 CVE-2006-2277
  • 563 CVE-2016-4629 and CVE-2016-4630
  • 555 cmake errors when used as sub-project via add_subdirectory()

Commits [ git log v2.4.0...v2.5.0]

Version 2.4.1 (February 11, 2020)

Patch release with minor bug fixes.

Summary

  • Various fixes for memory leaks and invalid memory accesses
  • Various fixes for integer overflow with large images.
  • Various cmake fixes for build/install of python modules.
  • ImfMisc.h is no longer installed, since it's a private header.

Security Vulnerabilities

This version fixes the following security vulnerabilities:

  • CVE-2020-11765 There is an off-by-one error in use of the ImfXdr.h read function by DwaCompressor::Classifier::ClasGsifier, leading to an out-of-bounds read.
  • CVE-2020-11764 There is an out-of-bounds write in copyIntoFrameBuffer in ImfMisc.cpp.
  • CVE-2020-11763 There is an std::vector out-of-bounds read and write, as demonstrated by ImfTileOffsets.cpp.
  • CVE-2020-11762 There is an out-of-bounds read and write in DwaCompressor::uncompress in ImfDwaCompressor.cpp when handling the UNKNOWN compression case.
  • CVE-2020-11761 There is an out-of-bounds read during Huffman uncompression, as demonstrated by FastHufDecoder::refill in ImfFastHuf.cpp.
  • CVE-2020-11760 There is an out-of-bounds read during RLE uncompression in rleUncompress in ImfRle.cpp.
  • CVE-2020-11759 Because of integer overflows in CompositeDeepScanLine::Data::handleDeepFrameBuffer and readSampleCountForLineBlock, an attacker can write to an out-of-bounds pointer.
  • CVE-2020-11758 There is an out-of-bounds read in ImfOptimizedPixelReading.h.

Merged Pull Requests

  • 659 fix memory leaks and invalid memory accesses
  • 609 Fixes #593, others - issues with pyilmbase install
  • 605 No longer install ImfMisc.h
  • 603 Update Azure build to work with new RB-2.4 branch.
  • 596 Add Boost::Python to Python modules link libraries
  • 592 Take DESTDIR into account when creating library symlinks
  • 589 Fix int32 overflow bugs with deep images

Commits [ git log v2.4.0...v2.4.1]

Version 2.4.0 (September 19, 2019)

Summary

  • Completely re-written CMake configuration files
  • Improved support for building on Windows, via CMake
  • Improved support for building on macOS, via CMake
  • All code compiles without warnings on gcc, clang, msvc
  • Cleanup of license and copyright notices
  • floating-point exception handling is disabled by default
  • New Slice::Make method to reliably compute base pointer for a slice.
  • Miscellaneous bug fixes

Security Vulnerabilities

This version fixes the following security vulnerabilities:

Closed Issues

  • 529 The OpenEXR_viewer can't be installed successfully due to the Cg support
  • 511 A confused problem in the EXR to JPEG
  • 494 SEGV exrmakepreview in ImfTiledOutputFile.cpp:458
  • 493 SEGV exrmakepreview in makePreview.cpp:132
  • 491 SEGV exrheader in ImfMultiPartInputFile.cpp:579
  • 488 Wiki has outdated info
  • 462 Inconsistent line terminators (CRLF)
  • 461 Wrong LC_RPATH after make install (cmake setup on macos)
  • 457 New CMake setup fails on cmake 3.12
  • 455 Build for mac using cmake to Xcode fails to compile
  • 449 OpenEXR.cpp:36:10: fatal error: 'ImathBox.h' file not found
  • 424 Integrating with OSS-Fuzz
  • 421 How to normalize multi-channel exr image?
  • 400 Create security@openexr.com and info@openexr.com addresses
  • 398 Document CVE's in CHANGES.md release notes file
  • 396 Set up a CREDITS.md file
  • 395 Migrate CLA's from openexr.com to the GitHub repo
  • 394 Properly document the OpenEXR coding style
  • 393 Set up CODEOWNERS file
  • 389 fix -Wall compiler warnings
  • 388 OpenEXR build fails with multiple errors
  • 381 Replace deprecated FindPythonLibs in CMakeLists.txt
  • 380 undefined symbol: _ZTIN7Iex_2_27BaseExcE
  • 379 ZLIB_LIBRARY ZLIB_INCLUDE_DIR being ignored (LNK2019 errors) in OpenEXR\IlmImf\IlmImf.vcxproj
  • 377 2.3.0: test suite is failing
  • 364 Standalone build of openexr on windows - (with already installed ilmbase)
  • 363 OpenEXRSettings.cmake is missing from the release tarball
  • 362 Cmake macro SET_ILMBASE_INCLUDE_DIRS assumes
  • 360 Specified Boost.Python not found on Boost versions < 1.67
  • 359 [VS2015] Compile error C2782: 'ssize_t' in PyImathFixedMatrix
  • 357 Move ILMBASE_HAVE_CONTROL_REGISTER_SUPPORT to a private header
  • 353 Add --with-cg-libdir option to support arch dependant Cg library paths
  • 352 buffer-overflow
  • 351 Out of Memory
  • 350 heap-buffer-overflow
  • 348 Possible compile/install issues in PyIlmBase with multiple jobs
  • 343 CMake issues on Windows
  • 342 IlmImf CMake dependency issue
  • 340 Cannot figure out how to build OpenEXR under mingw64 with v2.3.0
  • 333 openexr 2.3.0 static cmake build broken.
  • 302 Error when linking Half project: unresolved external symbol "private: static union half::uif const * const half::_toFloat" (?_toFloat@half@@0QBTuif@1@B)
  • 301 How to link different IlmBase library names according to Debug/Release configuration, when building OpenEXR with CMake + VS2015?
  • 294 Problem building OpenEXR-2.2.1 in Visual Studio 2015 x64
  • 290 Out Of Memory in Pxr24Compressor (79678745)
  • 288 Out of Memory in B44Compressor (79258415)
  • 282 IlmBase should link pthread
  • 281 Error in installing OpenEXR
  • 276 The savanah.nongnu.org tar.gz hosting
  • 274 Cmake installation of ilmbase places .dll files under /lib instead of /bin
  • 271 heap-buffer-overflow
  • 270 Out of Memory in TileOffsets (73566621)
  • 268 Invalid Shift at FastHufDecoder (72367575)
  • 267 Cast Overflow at FastHufDecoder (72375479)
  • 266 Divide by Zero at calculateNumTiles (72239767)
  • 265 Signed Integer Overflow in getTiledChunkOffsetTableSize (72377177)
  • 264 Signed Integer Overflow in calculateNumTiles (73181093)
  • 263 Signed Integer Overflow in chunkOffsetReconstruction (72873449, 73090589)
  • 262 Heap Out-of-Bounds write in Imf_2_2::copyIntoFrameBuffer (72940266)
  • 261 Heap Out of Bounds Read in TiledInputFile (72228841)
  • 259 Heap Out of Bounds Access (72839282)
  • 257 Out of Memory / Invalid allocation in lmfArray resizeErase (72828572, 72837441)
  • 255 Process for reporting security bugs
  • 254 [VS 2015] Can't run tests and OpenVDB compile errors
  • 253 C++11-style compile-time type information for half.
  • 252 std::numeric_limits<half>::digits10 value is wrong.
  • 250 SO version change in 2.2.1
  • 246 half.h default user-provided constructor breaks c++ semantics (value/zero initialization vs default initialization)
  • 244 Cannot write to Z channel
  • 240 CpuId' was not declared in this scope
  • 239 pyilmbase error vs2015 with boost1.61 and python27 please help ,alse error
  • 238 heap-based buffer overflow in exrmaketiled
  • 237 Can RgbaOutputFile use 32-bit float?
  • 234 How to link compress2, uncompress and compress on 64 bit Windows 7 & Visual Studio 2015 when building openexr?
  • 232 Multiple segmentation faults CVE-2017-9110 to CVE-2017-9116
  • 231 Half.h stops OpenEXR from compiling
  • 230 Imf::OutputFile Produce binary different files
  • 226 IMathExc - multiple definitions on linking.
  • 224 Make PyIlmBase compatible with Python 3.x
  • 217 Issue with optimized build compiled with Intel C/C++ compiler (ICC)
  • 213 AddressSanitizer CHECK failed in ImageMagick fuzz test.
  • 208 build issues on OSX: ImfDwaCompressorSimd.h:483:no such instruction: `vmovaps (%rsi), %ymm0'
  • 205 Building with VS 2015
  • 202 Documentation error: File Layout "Verson Field" lists wrong bits
  • 199 Unexpected rpaths on macOS
  • 194 RLE Broken for 32-bit formats
  • 191 PyIlmBase Cmake unable to find Boost
  • 189 store to misaligned address / for type 'int64_t', which requires 8 byte alignment
  • 188 iex_debugTrap link error
  • 182 Many C4275 warning compiling on Windows
  • 176 Implement a canonical FindIlmbase.cmake
  • 166 CMake static build of OpenEXR 2.2 fails to link dwaLookups on Linux
  • 165 Clang compilation warnings
  • 164 OpenEXR.pc is not created during "configure" stage.
  • 163 Problems building the OpenEXR-2.2.0
  • 160 Visual Studio 2013 not linking properly with IlmThread
  • 158 Python3 support
  • 150 build issue, debian 7.0 x64
  • 139 configure scripts contain bashisms
  • 134 DWA compressor fails to compile on Win/Mac for some compiler versions
  • 132 Wrong namespaces used in DWA Compressor.
  • 125 cmake: cannot link against static ilmbase libraries
  • 123 cmake: allow building of static and dynamic libs at the same time
  • 105 Building pyilmbase 1.0.0 issues
  • 098 Race condition in creation of LockedTypeMap and registerAttributeTypes
  • 095 Compile fail with MinGW-w64 on Windows
  • 094 CMake does not generate "toFloat.h" with Ninja
  • 092 MultiPartOutputFile API fails when single part has no type
  • 089 gcc 4.8 compilation issues
  • 086 VS 2010 broken: exporting std::string subclass crashes
  • 079 compile openexr with mingw 64 bit
  • 067 testBox failure on i386
  • 050 Recommended way of opening an EXR file in python?
  • 015 IlmImf Thread should report an 'optimal' number ofthreads to use.

Merged Pull Requests

  • 541 TSC meeting notes Aug 22, 2019
  • 540 Fix exports when compiling DLLs enabled with mingw
  • 539 Force exception handling / unwind disposition under msvc
  • 538 Add option to control whether pyimath uses the fp exception mechanism
  • 537 Set default value for buildSharedLibs
  • 536 Force the python binding libraries to shared
  • 535 Fix cmake warnings, fix check for numpy
  • 534 Create a "holder" object to fix stale reference to array
  • 533 Disable the debug postfix for the python modules
  • 532 explicitly add the boost includes to the target
  • 531 Update license for DreamWorks Lossy Compression
  • 530 Azure updates for MacOS/Windows/Linux
  • 528 brief notes of TSC meeting 2019-08-16
  • 526 Fix compile warnings from the latest merges
  • 525 Rework boost python search logic to be simpler and more robust
  • 524 Fix #268, issue with right shift in fast huf decoder
  • 523 Address issues with mingw and win32 wide filenames
  • 522 2.4.0 release notes
  • 520 Add missing symbol export to Slice::Make
  • 519 TSC meeting notes August 8, 2019
  • 518 Makes building of fuzz test optional
  • 517 Added defines for DWAA and DWAB compression.
  • 516 changed AP_CPPFLAGS to AM_CPPFLAGS in PyImathNumpy/Makefile.am.
  • 515 add the files generated by bootstrap/configure to .gitignore.
  • 514 suppress SonarCloud warnings about unhandled exceptions
  • 512 Project documentation edits
  • 510 Added MacOS jobs to Azure pipeline
  • 509 Contrib cleanup
  • 503 TSC meeting notes from 7/25/2019
  • 501 license and copyright fixes
  • 500 Fix another set of warnings that crept in during previous fix merges
  • 498 Fix #491, issue with part number range check reconstructing chunk off…
  • 497 Fix logic for 1 pixel high/wide preview images (Fixes #493)
  • 495 Fix for #494: validate tile coordinates when doing copyPixels
  • 490 Normalize library naming between cmake and autoconf
  • 489 Refresh of README's
  • 487 Azure: updated docker containers, added windows install scripts.
  • 486 Fix #246, add type traits check
  • 483 Large dataWindow Offset test: for discussion
  • 482 Update Azure Linux/SonarCloud jobs to work with new build
  • 481 rewrite of build and installation documentation in INSTALL.md
  • 480 Put all runtime artefacts in a single folder to help win32 find dlls
  • 479 Fix compile warnings
  • 478 Fixes #353, support for overriding Cg libdir
  • 477 Fix #224, imath python code such that tests pass under python3
  • 476 Fix dos files to unix, part of #462
  • 475 Fixes #252, incorrect math computing half digits
  • 474 Fixes #139
  • 473 Fix missing #include for std::isnormal
  • 472 Add viewers library to default build
  • 471 Warn the user, but make PyIlmBase not fail a build by default
  • 470 Fix #352, issue with aspect ratio
  • 468 Fix #455 by not using object libraries under apple
  • 467 NumPy lookup logic is only in newer versions of cmake than our minimum
  • 466 Remove last vestiges of old ifdef for windows
  • 465 Fix #461, issue with macos rpath support
  • 463 Fix #457, (unused) policy tag only in 3.13+ of cmake, no longer needed
  • 460 TSC meeting notes 7/18/2019
  • 459 added missing copyright notices
  • 458 fix for failing PyIlmBase/configure because it can't run the IlmBase test program.
  • 456 fix incorrect license identifier
  • 450 change INCLUDES to AM_CPPFLAGS, upon the recommendation of automake warnings
  • 448 Fixes #95, compilation issue with mingw
  • 447 Implements #15, request for hardware concurrency utility function
  • 446 Fixes #282, missing link against pthread
  • 444 added missing files in autoconf setup
  • 443 don't index empty array in testMultiPartSharedAttributes
  • 442 TiledInputFile only supports regular TILEDIMAGE types, not DEEPTILE...
  • 441 TSC meeting notes, July 7, 2019
  • 440 security policy
  • 439 code of conduct
  • 438 Azure and SonarCloud setup
  • 437 address #271: catch scanlines with negative sizes
  • 436 specific check for bad size field in header attributes (related to #248)
  • 435 Refactor cmake
  • 434 Issue #262
  • 433 Fix for #263: prevent overflow in multipart chunk offset reconstruction
  • 432 Fix for #378, bswap on read on big-endian architectures
  • 431 Fixed column labels in OpenEXRFileLayout document
  • 429 change OpaqueAttribute's _typeName field to be std::string
  • 428 Added Coding Style section on Type Casting.
  • 427 adding source .odt files for the .pdf's on the documentation page
  • 425 Handle exceptions, per SonarCloud rules
  • 423 Address #270: limit Tiled images to INT_MAX total number of tiles
  • 422 Add exr2aces to autoconf build script
  • 420 updated references to CVE's in release notes.
  • 417 TSC meeting notes June 27, 2019
  • 416 Fix #342, copy paste bug with dependencies
  • 415 convert_index returns Py_ssize_t
  • 414 Fix part of #232, issue with pointer overflows
  • 413 Fix library suffix issue in cmake file for exr2aces
  • 412 Fix #350 - memory leak on exit
  • 411 Fixes the rpath setting to have the correct variable name
  • 410 Fixed the 2.3.0 release notes to mention that CVE-2017-12596 is fixed.
  • 409 Add initial rules for running clang-format on the code base
  • 408 Add ImfFloatVectorAttribute.h to the automake install
  • 406 New CI with aswfstaging/ci-base image
  • 405 June 20, 2019 TSC meeting notes
  • 404 Miscellaneous documentation improvements
  • 403 Added CLA forms
  • 402 TSC Meeting notes June 13, 2019
  • 397 Updates to README.md, and initial CONTRIBUTING.md, GOVERNANCE.md, INSTALL.md
  • 383 Fixed formatting
  • 382 TSC meeting notes 2019-5-2
  • 339 fix standalone and combined cmake

Commits [ git log v2.3.0...v2.4.0]

  • integer division changed in python3 3/2 -> 1.5, have to use 3//2 to get an int
  • xrange is no more, just use range
  • integer type coersion for division not working, force type constructor Signed-off-by: Kimball Thurston kdt3rd@gmail.com
  • finish numpy lookup
  • add sample vfx 15 toolchain file for doc purposes
  • merge cxx standard, pay attention to global setting if set
  • merge clang tidy option
  • add default build type if not set Signed-off-by: Kimball Thurston kdt3rd@gmail.com

Version 2.3.0 (August 13, 2018)

Features/Improvements:

  • ThreadPool overhead improvements, enable custom thread pool to be registered via ThreadPoolProvider class
  • Fixes to enable custom namespaces for Iex, Imf
  • Improve read performance for deep/zipped data, and SIMD-accelerated uncompress support
  • Added rawPixelDataToBuffer() function for access to compressed scanlines
  • Iex::BaseExc no longer derived from std::string.
  • Imath throw() specifiers removed
  • Initial Support for Python 3

Bugs:

  • 25+ various bug fixes (see detailed Release Notes for the full list)

  • This release addresses vulnerability CVE-2017-12596.

Build Fixes:

  • Various fixes to the cmake and autoconf build infrastructures
  • Various changes to support compiling for C++11 / C++14 / C++17 and GCC 6.3.1
  • Various fixes to address Windows build issues
  • 60+ total build-related fixes (see detailed Release Notes for the full list)

Diff Stats [git diff --stat v2.2.1]

CHANGES.md                                         |  1487 +++
CMakeLists.txt                                     |   194 +
Contrib/DtexToExr/bootstrap                        |     2 +-
Contrib/DtexToExr/configure.ac                     |     2 +-
IlmBase/CMakeLists.txt                             |   214 +-
IlmBase/COPYING                                    |    34 -
IlmBase/Half/CMakeLists.txt                        |   107 +-
IlmBase/Half/half.cpp                              |     6 +-
IlmBase/Half/half.h                                |     8 +-
IlmBase/Half/halfExport.h                          |    44 +-
IlmBase/Half/halfLimits.h                          |     9 +
IlmBase/HalfTest/CMakeLists.txt                    |     4 +-
IlmBase/HalfTest/testLimits.cpp                    |    13 +-
IlmBase/INSTALL                                    |     2 -
IlmBase/Iex/CMakeLists.txt                         |    81 +-
IlmBase/Iex/IexBaseExc.cpp                         |    71 +-
IlmBase/Iex/IexBaseExc.h                           |    87 +-
IlmBase/Iex/IexMacros.h                            |    62 +-
IlmBase/IexMath/CMakeLists.txt                     |    76 +-
IlmBase/IexMath/IexMathFloatExc.cpp                |    18 +
IlmBase/IexMath/IexMathFloatExc.h                  |    36 +-
IlmBase/IexTest/CMakeLists.txt                     |     4 +-
IlmBase/IexTest/testBaseExc.cpp                    |     2 +-
IlmBase/IlmThread/CMakeLists.txt                   |    78 +-
IlmBase/IlmThread/IlmThread.cpp                    |    48 +-
IlmBase/IlmThread/IlmThread.h                      |    48 +-
IlmBase/IlmThread/IlmThreadForward.h               |     8 +
IlmBase/IlmThread/IlmThreadMutex.cpp               |     7 +-
IlmBase/IlmThread/IlmThreadMutex.h                 |    48 +-
IlmBase/IlmThread/IlmThreadMutexPosix.cpp          |    10 +-
IlmBase/IlmThread/IlmThreadMutexWin32.cpp          |     9 +-
IlmBase/IlmThread/IlmThreadPool.cpp                |   720 +-
IlmBase/IlmThread/IlmThreadPool.h                  |    64 +-
IlmBase/IlmThread/IlmThreadPosix.cpp               |     2 +
IlmBase/IlmThread/IlmThreadSemaphore.h             |    49 +-
.../IlmThread/IlmThreadSemaphorePosixCompat.cpp    |    78 +-
IlmBase/IlmThread/IlmThreadWin32.cpp               |     6 +
IlmBase/Imath/CMakeLists.txt                       |   130 +-
IlmBase/Imath/ImathBox.cpp                         |    37 -
IlmBase/Imath/ImathEuler.h                         |     7 +-
IlmBase/Imath/ImathInt64.h                         |     3 +
IlmBase/Imath/ImathMatrix.h                        |    56 +-
IlmBase/Imath/ImathShear.cpp                       |    54 -
IlmBase/Imath/ImathVec.cpp                         |    24 +-
IlmBase/Imath/ImathVec.h                           |    48 +-
IlmBase/Imath/Makefile.am                          |     4 +-
IlmBase/ImathTest/CMakeLists.txt                   |     6 +-
IlmBase/Makefile.am                                |     5 +-
IlmBase/README                                     |    70 -
IlmBase/README.CVS                                 |    16 -
IlmBase/README.OSX                                 |   101 -
IlmBase/README.cmake.txt                           |    65 -
IlmBase/README.git                                 |    16 -
IlmBase/README.md                                  |   277 +
IlmBase/README.namespacing                         |    83 -
IlmBase/bootstrap                                  |     4 +-
IlmBase/config.windows/IlmBaseConfig.h             |     1 +
IlmBase/config/IlmBaseConfig.h.in                  |     7 +
IlmBase/configure.ac                               |    50 +-
IlmBase/m4/ax_cxx_compile_stdcxx.m4                |   982 ++
LICENSE                                            |    34 +
OpenEXR/AUTHORS                                    |     2 +
OpenEXR/CMakeLists.txt                             |   272 +-
OpenEXR/COPYING                                    |    34 -
OpenEXR/INSTALL                                    |     2 -
OpenEXR/IlmImf/CMakeLists.txt                      |   396 +-
OpenEXR/IlmImf/ImfAcesFile.h                       |    38 +-
OpenEXR/IlmImf/ImfAttribute.cpp                    |     6 +
OpenEXR/IlmImf/ImfAttribute.h                      |     8 +-
OpenEXR/IlmImf/ImfB44Compressor.h                  |    10 +-
OpenEXR/IlmImf/ImfCRgbaFile.h                      |     2 +-
OpenEXR/IlmImf/ImfChannelList.h                    |    45 +-
OpenEXR/IlmImf/ImfChromaticities.h                 |     5 +-
OpenEXR/IlmImf/ImfCompositeDeepScanLine.h          |    14 +-
OpenEXR/IlmImf/ImfCompressionAttribute.h           |     6 +-
OpenEXR/IlmImf/ImfCompressor.h                     |    14 +-
OpenEXR/IlmImf/ImfDeepCompositing.h                |     6 +-
OpenEXR/IlmImf/ImfDeepFrameBuffer.h                |    38 +-
OpenEXR/IlmImf/ImfDeepScanLineInputFile.cpp        |     6 +-
OpenEXR/IlmImf/ImfDeepScanLineInputFile.h          |    20 +-
OpenEXR/IlmImf/ImfDeepScanLineInputPart.h          |    18 +-
OpenEXR/IlmImf/ImfDeepScanLineOutputFile.cpp       |    14 +-
OpenEXR/IlmImf/ImfDeepScanLineOutputFile.h         |    14 +-
OpenEXR/IlmImf/ImfDeepScanLineOutputPart.h         |    12 +-
OpenEXR/IlmImf/ImfDeepTiledInputFile.cpp           |    16 +-
OpenEXR/IlmImf/ImfDeepTiledInputFile.h             |    37 +-
OpenEXR/IlmImf/ImfDeepTiledInputPart.cpp           |     2 +-
OpenEXR/IlmImf/ImfDeepTiledInputPart.h             |    34 +-
OpenEXR/IlmImf/ImfDeepTiledOutputFile.cpp          |    18 +-
OpenEXR/IlmImf/ImfDeepTiledOutputFile.h            |    33 +-
OpenEXR/IlmImf/ImfDeepTiledOutputPart.h            |    31 +-
OpenEXR/IlmImf/ImfDwaCompressor.cpp                |   232 +-
OpenEXR/IlmImf/ImfDwaCompressor.h                  |    43 +-
OpenEXR/IlmImf/ImfDwaCompressorSimd.h              |    67 +-
OpenEXR/IlmImf/ImfFastHuf.cpp                      |    62 +-
OpenEXR/IlmImf/ImfFastHuf.h                        |     5 +
OpenEXR/IlmImf/ImfFrameBuffer.h                    |    36 +-
OpenEXR/IlmImf/ImfGenericInputFile.h               |     5 +-
OpenEXR/IlmImf/ImfGenericOutputFile.h              |     6 +-
OpenEXR/IlmImf/ImfHeader.h                         |    90 +-
OpenEXR/IlmImf/ImfIO.h                             |    13 +-
OpenEXR/IlmImf/ImfInputFile.cpp                    |    41 +-
OpenEXR/IlmImf/ImfInputFile.h                      |    42 +-
OpenEXR/IlmImf/ImfInputPart.cpp                    |     8 +
OpenEXR/IlmImf/ImfInputPart.h                      |    22 +-
OpenEXR/IlmImf/ImfInputPartData.h                  |     1 +
OpenEXR/IlmImf/ImfInt64.h                          |     1 +
OpenEXR/IlmImf/ImfKeyCode.h                        |    19 +-
OpenEXR/IlmImf/ImfLut.h                            |     8 +-
OpenEXR/IlmImf/ImfMisc.cpp                         |    55 +-
OpenEXR/IlmImf/ImfMisc.h                           |    20 +-
OpenEXR/IlmImf/ImfMultiPartInputFile.cpp           |     4 +-
OpenEXR/IlmImf/ImfMultiPartInputFile.h             |    10 +-
OpenEXR/IlmImf/ImfMultiPartOutputFile.cpp          |     4 +-
OpenEXR/IlmImf/ImfMultiPartOutputFile.h            |    10 +-
OpenEXR/IlmImf/ImfName.h                           |     9 +
OpenEXR/IlmImf/ImfOpaqueAttribute.h                |    10 +-
OpenEXR/IlmImf/ImfOptimizedPixelReading.h          |     4 +-
OpenEXR/IlmImf/ImfOutputFile.cpp                   |    95 +-
OpenEXR/IlmImf/ImfOutputFile.h                     |    15 +-
OpenEXR/IlmImf/ImfOutputPart.h                     |    13 +-
OpenEXR/IlmImf/ImfOutputPartData.h                 |    23 +-
OpenEXR/IlmImf/ImfPizCompressor.h                  |    10 +-
OpenEXR/IlmImf/ImfPreviewImage.h                   |    14 +-
OpenEXR/IlmImf/ImfPxr24Compressor.h                |    10 +-
OpenEXR/IlmImf/ImfRational.h                       |     3 +-
OpenEXR/IlmImf/ImfRgbaFile.h                       |    47 +-
OpenEXR/IlmImf/ImfRleCompressor.h                  |     7 +-
OpenEXR/IlmImf/ImfScanLineInputFile.cpp            |    42 +-
OpenEXR/IlmImf/ImfScanLineInputFile.h              |    37 +-
OpenEXR/IlmImf/ImfSimd.h                           |    11 +-
OpenEXR/IlmImf/ImfStdIO.cpp                        |    36 +-
OpenEXR/IlmImf/ImfStdIO.h                          |    24 +-
OpenEXR/IlmImf/ImfSystemSpecific.h                 |    15 +-
OpenEXR/IlmImf/ImfTileOffsets.h                    |    16 +-
OpenEXR/IlmImf/ImfTiledInputFile.cpp               |    16 +-
OpenEXR/IlmImf/ImfTiledInputFile.h                 |    32 +-
OpenEXR/IlmImf/ImfTiledInputPart.h                 |    30 +-
OpenEXR/IlmImf/ImfTiledOutputFile.cpp              |    66 +-
OpenEXR/IlmImf/ImfTiledOutputFile.h                |    39 +-
OpenEXR/IlmImf/ImfTiledOutputPart.h                |    33 +-
OpenEXR/IlmImf/ImfTiledRgbaFile.h                  |    83 +-
OpenEXR/IlmImf/ImfTimeCode.h                       |    35 +-
OpenEXR/IlmImf/ImfVersion.h                        |     4 +-
OpenEXR/IlmImf/ImfZip.cpp                          |   191 +-
OpenEXR/IlmImf/ImfZip.h                            |     8 +
OpenEXR/IlmImf/ImfZipCompressor.h                  |     5 +
OpenEXR/IlmImf/Makefile.am                         |    12 +-
OpenEXR/IlmImf/dwaLookups.cpp                      |    10 +-
OpenEXR/IlmImfExamples/CMakeLists.txt              |    18 +-
OpenEXR/IlmImfExamples/Makefile.am                 |     8 +-
OpenEXR/IlmImfExamples/previewImageExamples.cpp    |     6 +-
OpenEXR/IlmImfFuzzTest/CMakeLists.txt              |    27 +-
OpenEXR/IlmImfFuzzTest/Makefile.am                 |     6 +-
OpenEXR/IlmImfTest/CMakeLists.txt                  |    18 +-
OpenEXR/IlmImfTest/Makefile.am                     |     6 +-
OpenEXR/IlmImfTest/compareDwa.h                    |     4 +-
OpenEXR/IlmImfTest/testDwaCompressorSimd.cpp       |    47 +-
OpenEXR/IlmImfUtil/CMakeLists.txt                  |   113 +-
OpenEXR/IlmImfUtil/ImfDeepImage.h                  |    33 +-
OpenEXR/IlmImfUtil/ImfDeepImageChannel.h           |    35 +-
OpenEXR/IlmImfUtil/ImfDeepImageIO.h                |    26 +-
OpenEXR/IlmImfUtil/ImfDeepImageLevel.cpp           |     2 +-
OpenEXR/IlmImfUtil/ImfDeepImageLevel.h             |    44 +-
OpenEXR/IlmImfUtil/ImfFlatImage.h                  |    29 +-
OpenEXR/IlmImfUtil/ImfFlatImageChannel.h           |    10 +-
OpenEXR/IlmImfUtil/ImfFlatImageIO.h                |    26 +-
OpenEXR/IlmImfUtil/ImfFlatImageLevel.cpp           |     2 +-
OpenEXR/IlmImfUtil/ImfFlatImageLevel.h             |    31 +-
OpenEXR/IlmImfUtil/ImfImage.cpp                    |     4 +-
OpenEXR/IlmImfUtil/ImfImage.h                      |    31 +-
OpenEXR/IlmImfUtil/ImfImageChannel.h               |    10 +-
OpenEXR/IlmImfUtil/ImfImageDataWindow.cpp          |     3 +-
OpenEXR/IlmImfUtil/ImfImageDataWindow.h            |     2 +
OpenEXR/IlmImfUtil/ImfImageIO.h                    |    10 +-
OpenEXR/IlmImfUtil/ImfImageLevel.cpp               |     2 +-
OpenEXR/IlmImfUtil/ImfImageLevel.h                 |    20 +-
OpenEXR/IlmImfUtil/ImfSampleCountChannel.h         |    23 +-
OpenEXR/IlmImfUtil/ImfUtilExport.h                 |    46 +
OpenEXR/IlmImfUtil/Makefile.am                     |    16 +-
OpenEXR/IlmImfUtilTest/CMakeLists.txt              |    20 +-
OpenEXR/IlmImfUtilTest/Makefile.am                 |     6 +-
OpenEXR/Makefile.am                                |     5 +-
OpenEXR/README                                     |    77 -
OpenEXR/README.CVS                                 |    16 -
OpenEXR/README.OSX                                 |    57 -
OpenEXR/README.cmake.txt                           |    54 -
OpenEXR/README.git                                 |    16 -
OpenEXR/README.md                                  |   132 +
OpenEXR/README.namespacing                         |    83 -
OpenEXR/bootstrap                                  |     4 +-
OpenEXR/build.log                                  | 11993 -------------------
OpenEXR/configure.ac                               |   284 +-
OpenEXR/doc/Makefile.am                            |     1 -
OpenEXR/doc/TheoryDeepPixels.pdf                   |   Bin 331719 -> 334777 bytes
OpenEXR/exr2aces/CMakeLists.txt                    |    10 +-
OpenEXR/exrbuild/CMakeLists.txt                    |    13 +-
OpenEXR/exrenvmap/CMakeLists.txt                   |    10 +-
OpenEXR/exrenvmap/Makefile.am                      |     6 +-
OpenEXR/exrheader/CMakeLists.txt                   |    15 +-
OpenEXR/exrheader/Makefile.am                      |     6 +-
OpenEXR/exrmakepreview/CMakeLists.txt              |    10 +-
OpenEXR/exrmakepreview/Makefile.am                 |     6 +-
OpenEXR/exrmakepreview/makePreview.cpp             |     6 +-
OpenEXR/exrmaketiled/CMakeLists.txt                |     9 +-
OpenEXR/exrmaketiled/Makefile.am                   |     6 +-
OpenEXR/exrmaketiled/makeTiled.cpp                 |     8 +-
OpenEXR/exrmultipart/CMakeLists.txt                |    13 +-
OpenEXR/exrmultipart/Makefile.am                   |     8 +-
OpenEXR/exrmultiview/CMakeLists.txt                |    12 +-
OpenEXR/exrmultiview/Makefile.am                   |     6 +-
OpenEXR/exrstdattr/CMakeLists.txt                  |    13 +-
OpenEXR/exrstdattr/Makefile.am                     |     6 +-
OpenEXR/m4/ax_cxx_compile_stdcxx.m4                |   982 ++
OpenEXR/m4/path.pkgconfig.m4                       |    63 +-
OpenEXR_Viewers/AUTHORS                            |    12 -
OpenEXR_Viewers/CMakeLists.txt                     |    71 +-
OpenEXR_Viewers/COPYING                            |    34 -
OpenEXR_Viewers/INSTALL                            |     2 -
OpenEXR_Viewers/Makefile.am                        |     6 +-
OpenEXR_Viewers/NEWS                               |     2 -
OpenEXR_Viewers/README                             |    95 -
OpenEXR_Viewers/README.CVS                         |    16 -
OpenEXR_Viewers/README.OSX                         |    18 -
OpenEXR_Viewers/README.md                          |   278 +
OpenEXR_Viewers/README.win32                       |   196 -
OpenEXR_Viewers/bootstrap                          |     4 +-
OpenEXR_Viewers/configure.ac                       |    47 +-
OpenEXR_Viewers/exrdisplay/CMakeLists.txt          |    15 +-
OpenEXR_Viewers/exrdisplay/GlWindow3d.h            |     5 +
OpenEXR_Viewers/m4/ax_cxx_compile_stdcxx.m4        |   982 ++
OpenEXR_Viewers/playexr/CMakeLists.txt             |     8 +-
PyIlmBase/AUTHORS                                  |    10 -
PyIlmBase/CMakeLists.txt                           |   128 +-
PyIlmBase/COPYING                                  |    34 -
PyIlmBase/INSTALL                                  |     2 -
PyIlmBase/Makefile.am                              |     7 +-
PyIlmBase/NEWS                                     |     2 -
PyIlmBase/PyIex/CMakeLists.txt                     |    52 +-
PyIlmBase/PyIex/PyIex.cpp                          |     4 +-
PyIlmBase/PyIex/PyIex.h                            |     4 +-
PyIlmBase/PyIex/PyIexExport.h                      |    45 +-
PyIlmBase/PyIex/iexmodule.cpp                      |     5 +-
PyIlmBase/PyIexTest/CMakeLists.txt                 |     4 +-
PyIlmBase/PyImath/CMakeLists.txt                   |    53 +-
PyIlmBase/PyImath/PyImath.cpp                      |     5 +-
PyIlmBase/PyImath/PyImath.h                        |     8 +-
PyIlmBase/PyImath/PyImathAutovectorize.cpp         |     2 +-
PyIlmBase/PyImath/PyImathAutovectorize.h           |     6 +-
PyIlmBase/PyImath/PyImathBasicTypes.cpp            |     9 +-
PyIlmBase/PyImath/PyImathBasicTypes.h              |     4 +-
PyIlmBase/PyImath/PyImathBox.cpp                   |    18 +-
PyIlmBase/PyImath/PyImathBox.h                     |     4 +-
PyIlmBase/PyImath/PyImathBox2Array.cpp             |     4 +-
PyIlmBase/PyImath/PyImathBox3Array.cpp             |     4 +-
PyIlmBase/PyImath/PyImathBoxArrayImpl.h            |    10 +-
PyIlmBase/PyImath/PyImathColor.h                   |     3 +-
PyIlmBase/PyImath/PyImathColor3.cpp                |     8 +-
PyIlmBase/PyImath/PyImathColor3ArrayImpl.h         |     4 +-
PyIlmBase/PyImath/PyImathColor4.cpp                |     6 +-
PyIlmBase/PyImath/PyImathColor4Array2DImpl.h       |     7 +-
PyIlmBase/PyImath/PyImathColor4ArrayImpl.h         |     4 +-
PyIlmBase/PyImath/PyImathEuler.cpp                 |     8 +-
PyIlmBase/PyImath/PyImathEuler.h                   |     3 +-
PyIlmBase/PyImath/PyImathExport.h                  |    52 +-
PyIlmBase/PyImath/PyImathFixedArray.cpp            |     2 +-
PyIlmBase/PyImath/PyImathFixedArray.h              |    11 +-
PyIlmBase/PyImath/PyImathFixedArray2D.h            |     9 +
PyIlmBase/PyImath/PyImathFixedMatrix.h             |     9 +
PyIlmBase/PyImath/PyImathFixedVArray.cpp           |    14 +-
PyIlmBase/PyImath/PyImathFixedVArray.h             |     2 +-
PyIlmBase/PyImath/PyImathFrustum.cpp               |     8 +-
PyIlmBase/PyImath/PyImathFrustum.h                 |     3 +-
PyIlmBase/PyImath/PyImathFun.cpp                   |     8 +-
PyIlmBase/PyImath/PyImathFun.h                     |     2 +-
PyIlmBase/PyImath/PyImathLine.cpp                  |    16 +-
PyIlmBase/PyImath/PyImathLine.h                    |     2 +-
PyIlmBase/PyImath/PyImathM44Array.cpp              |     6 +-
PyIlmBase/PyImath/PyImathM44Array.h                |     2 +-
PyIlmBase/PyImath/PyImathMatrix.h                  |     3 +-
PyIlmBase/PyImath/PyImathMatrix33.cpp              |     8 +-
PyIlmBase/PyImath/PyImathMatrix44.cpp              |    10 +-
PyIlmBase/PyImath/PyImathOperators.h               |     4 +-
PyIlmBase/PyImath/PyImathPlane.cpp                 |    20 +-
PyIlmBase/PyImath/PyImathPlane.h                   |     2 +-
PyIlmBase/PyImath/PyImathQuat.cpp                  |    10 +-
PyIlmBase/PyImath/PyImathQuat.h                    |     3 +-
PyIlmBase/PyImath/PyImathRandom.cpp                |    10 +-
PyIlmBase/PyImath/PyImathShear.cpp                 |     8 +-
PyIlmBase/PyImath/PyImathStringArray.cpp           |     6 +-
PyIlmBase/PyImath/PyImathStringArray.h             |     4 +-
PyIlmBase/PyImath/PyImathStringArrayRegister.h     |     2 +-
PyIlmBase/PyImath/PyImathStringTable.cpp           |     4 +-
PyIlmBase/PyImath/PyImathTask.cpp                  |    10 +-
PyIlmBase/PyImath/PyImathTask.h                    |    34 +-
PyIlmBase/PyImath/PyImathUtil.cpp                  |     6 +-
PyIlmBase/PyImath/PyImathUtil.h                    |    14 +-
PyIlmBase/PyImath/PyImathVec.h                     |     4 +-
PyIlmBase/PyImath/PyImathVec2Impl.h                |    12 +-
PyIlmBase/PyImath/PyImathVec3ArrayImpl.h           |    12 +-
PyIlmBase/PyImath/PyImathVec3Impl.h                |     6 +-
PyIlmBase/PyImath/PyImathVec4ArrayImpl.h           |    10 +-
PyIlmBase/PyImath/PyImathVec4Impl.h                |     6 +-
PyIlmBase/PyImath/imathmodule.cpp                  |    38 +-
PyIlmBase/PyImathNumpy/CMakeLists.txt              |    25 +-
PyIlmBase/PyImathNumpy/imathnumpymodule.cpp        |    14 +-
PyIlmBase/PyImathNumpyTest/CMakeLists.txt          |     6 +-
PyIlmBase/PyImathNumpyTest/pyImathNumpyTest.in     |    81 +-
PyIlmBase/PyImathTest/CMakeLists.txt               |     2 +
PyIlmBase/PyImathTest/pyImathTest.in               |  1090 +-
PyIlmBase/README                                   |    51 -
PyIlmBase/README.OSX                               |    21 -
PyIlmBase/README.md                                |    99 +
PyIlmBase/bootstrap                                |     4 +-
PyIlmBase/configure.ac                             |    64 +-
PyIlmBase/m4/ax_cxx_compile_stdcxx.m4              |   982 ++
README                                             |    68 -
README.md                                          |   202 +
cmake/FindIlmBase.cmake                            |   192 +
cmake/FindNumPy.cmake                              |    51 +
cmake/FindOpenEXR.cmake                            |   198 +
321 files changed, 12796 insertions(+), 16398 deletions(-)

Commits [ git log v2.2.1...v.2.3.0]

Version 2.2.2 (April 30, 2020)

This is a patch release that includes fixes for the following security vulnerabilities:

  • CVE-2020-11765 There is an off-by-one error in use of the ImfXdr.h read function by DwaCompressor::Classifier::ClasGsifier, leading to an out-of-bounds read.
  • CVE-2020-11764 There is an out-of-bounds write in copyIntoFrameBuffer in ImfMisc.cpp.
  • CVE-2020-11763 There is an std::vector out-of-bounds read and write, as demonstrated by ImfTileOffsets.cpp.
  • CVE-2020-11762 There is an out-of-bounds read and write in DwaCompressor::uncompress in ImfDwaCompressor.cpp when handling the UNKNOWN compression case.
  • CVE-2020-11761 There is an out-of-bounds read during Huffman uncompression, as demonstrated by FastHufDecoder::refill in ImfFastHuf.cpp.
  • CVE-2020-11760 There is an out-of-bounds read during RLE uncompression in rleUncompress in ImfRle.cpp.
  • CVE-2020-11759 Because of integer overflows in CompositeDeepScanLine::Data::handleDeepFrameBuffer and readSampleCountForLineBlock, an attacker can write to an out-of-bounds pointer.
  • CVE-2020-11758 There is an out-of-bounds read in ImfOptimizedPixelReading.h.

Version 2.2.1 (November 30, 2017)

This maintenance release addresses the reported OpenEXR security vulnerabilities, specifically:

Version 2.2.0 (August 10, 2014)

This release includes the following components:

  • OpenEXR: v2.2.0
  • IlmBase: v2.2.0
  • PyIlmBase: v2.2.0
  • OpenEXR_Viewers: v2.2.0

This significant new features of this release include:

  • DreamWorks Lossy Compression A new high quality, high performance lossy compression codec contributed by DreamWorks Animation. This codec allows control over variable lossiness to balance visual quality and file size. This contribution also includes performance improvements that speed up the PIZ codec.

  • IlmImfUtil A new library intended to aid in development of image file manipulation utilities that support the many types of OpenEXR images.

This release also includes improvements to cross-platform build support using CMake.

Version 2.1.0 (November 25, 2013)

This release includes the following components (version locked):

  • OpenEXR: v2.1.0
  • IlmBase: v2.1.0
  • PyIlmBase: v2.1.0
  • OpenEXR_Viewers: v2.1.0

This release includes a refactoring of the optimised read paths for RGBA data, optimisations for some of the python bindings to Imath, improvements to the cmake build environment as well as additional documentation describing deep data in more detail.

Version 2.0.1 (July 11, 2013)

Detailed Changes:

  • Temporarily turning off optimisation code path (Piotr Stanczyk)

  • Added additional tests for future optimisation refactoring (Piotr Stanczyk / Peter Hillman)

  • Fixes for StringVectors (Peter Hillman)

  • Additional checks for type mismatches (Peter Hillman)

  • Fix for Composite Deep Scanline (Brendan Bolles)

Version 2.0 (April 9, 2013)

Industrial Light & Magic (ILM) and Weta Digital announce the release of OpenEXR 2.0, the major version update of the open source high dynamic range file format first introduced by ILM and maintained and expanded by a number of key industry leaders including Weta Digital, Pixar Animation Studios, Autodesk and others.

The release includes a number of new features that align with the major version number increase. Amongst the major improvements are:

  • Deep Data support - Pixels can now store a variable-length list of samples. The main rationale behind deep images is to enable the storage of multiple values at different depths for each pixel. OpenEXR 2.0 supports both hard-surface and volumetric representations for Deep Compositing workflows.

  • Multi-part Image Files - With OpenEXR 2.0, files can now contain a number of separate, but related, data parts in one file. Access to any part is independent of the others, pixels from parts that are not required in the current operation don't need to be accessed, resulting in quicker read times when accessing only a subset of channels. The multipart interface also incorporates support for Stereo images where views are stored in separate parts. This makes stereo OpenEXR 2.0 files significantly faster to work with than the previous multiview support in OpenEXR.

  • Optimized pixel reading - decoding RGB(A) scanline images has been accelerated on SSE processors providing a significant speedup when reading both old and new format images, including multipart and multiview files.

  • Namespacing - The library introduces versioned namespaces to avoid conflicts between packages compiled with different versions of the library.

Although OpenEXR 2.0 is a major version update, files created by the new library that don't exercise the new feature set are completely backwards compatible with previous versions of the library. By using the OpenEXR 2.0 library, performance improvements, namespace versions and basic multi-part/deep reading support should be available to applications without code modifications.

This code is designed to support Deep Compositing - a revolutionary compositing workflow developed at Weta Digital that detached the rendering of different elements in scene. In particular, changes in one layer could be rendered separately without the need to re-render other layers that would be required to handle holdouts in a traditional comp workflow or sorting of layers in complex scenes with elements moving in depth. Deep Compositing became the primary compositing workflow on Avatar and has seen wide industry adoption. The technique allows depth and color value to be stored for every pixel in a scene allowing for much more efficient handling of large complex scenes and greater freedom for artists to iterate.

True to the open source ethos, a number of companies contributed to support the format and encourage adoption. Amongst others, Pixar Animation Studios has contributed its DtexToExr converter to the OpenEXR repository under a Microsoft Public License, which clears any concerns about existing patents in the area, and Autodesk provided performance optimizations geared towards real-time post-production workflows.

Extensive effort has been put in ensuring all requirements were met to help a wide adoption, staying true to the wide success of OpenEXR. Many software companies were involved in the beta cycle to insure support amongst a number of industry leading applications. Numerous packages like SideFX's Houdini, Autodesk's Maya, Solid Angle's Arnold renderer, Sony Pictures Imageworks' Open Image IO have already announced their support of the format.

Open EXR 2.0 is an important step in the adoption of deep compositing as it provides a consistent file format for deep data that is easy to read and work with throughout a visual effects pipeline. The Foundry has build OpenEXR 2.0 support into its Nuke Compositing application as the base for the Deep Compositing workflows.

OpenEXR 2.0 is already in use at both Weta Digital and Industrial Light & Magic. ILM took advantage of the new format on Marvel's The Avengers and two highly anticipated summer 2013 releases, Pacific Rim and The Lone Ranger. Recent examples of Weta Digital's use of the format also include Marvel's Avengers as well as Prometheus and The Hobbit. In addition, a large number of visual effects studios have already integrated a deep workflow into their compositing pipelines or are in the process of doing so including:, Sony Pictures Imageworks, Pixar Animation Studios, Rhythm & Hues, Fuel and MPC.

In addition to visual effects, the new additions to the format, means that depth data can also be assigned to two-dimensional data for a use in many design fields including, architecture, graphic design, automotive and product prototyping.

Detailed Changes:

  • Updated Documentation (Peter Hillman)
  • Updated Namespacing mechanism (Piotr Stanczyk)
  • Fixes for succd & predd (Peter Hillman)
  • Fixes for FPE control registers (Piotr Stanczyk)
  • Additional checks and tests on DeepImages, scanlines and tiles (Peter Hillman)
  • Folded in Autodesk read optimisations for RGB(A) files (Pascal Jette, Peter Hillman)
  • Updated the bootstrap scripts to use libtoolize if glibtoolize isn't available on darwin. (Nick Rasmussen)
  • Numerous minor fixes, missing includes etc

Version 2.0.0.beta.1 (June 15, 2012)

Development of OpenEXR v2 has been undertaken in a collaborative environment (cf. previous github announcement) comprised of Industrial Light & Magic, Weta Digital as well as a number of other contributors.

Some of the new features included in the Beta.1 release of OpenEXR v2 are:

  • Deep Data Pixels can now store a variable length list of samples. The main rationale behind deep-images is to have multiple values at different depths for each pixel. OpenEXR v2 supports both hard surface and volumetric representation requirements for deep compositing workflows.

  • Multi-part image files With OpenEXR v2, files can now contain a number of separate, but related, images in one file. Access to any part is independent of the others; in particular, no access of data need take place for unrequested parts.

In addition, OpenEXR v2 also contains platform independent mechanisms for handling co-existing library version conflicts in the same process space. (Currently implemented in IlmImf)

Finally, a reminder that this is a Beta release and potentially incompatible changes may be introduced in future releases prior to the v2.0.0 production version.

Please read the separate file for v2 additions and changes.

Detailed Changes:

  • Added git specific files (Piotr Stanczyk)
  • Updated the so verison to 20 (Piotr Stanczyk)
  • Initial use of the CMake build system (Nicholas Yue)

Version 1.7.1 (July 31, 2012)

This release includes the following components:

  • OpenEXR: v1.7.1
  • IlmBase: v1.0.3
  • PyIlmBase: v1.0.0 (introduces a Boost dependency)
  • OpenEXR_Viewers: v1.0.2

Of particular note is the introduction of PyIlmBase. This module forms a comprehensive set of python bindings to the IlmBase module.

In addition, contained in this release is a number of additions to Imath as well as a minor tweak to Imath::Frustrum (for better support for Windows platforms) as well as other minor fixes, including correction for soname version of IlmImf.

Version 1.7.0 (July 23, 2010)

This release includes support for stereoscopic images, please see the adjoining documentation in the MultiViewOpenEXR.pdf. (Many thanks to Weta Digital for their contribution.) In addition, we added support for targeting 64 bit Windows, fixes for buffer overruns and a number of other minor fixes, additions and optimisations. Please see the Changelog files for more detailed information.

Bugs

This release addresses the following security vulnerabilities:

Detailed Changes:

  • Added support for targetting builds on 64bit Windows and minimising number of compiler warnings on Windows. Thanks to Ger Hobbelt for his contributions to CreateDLL. (Ji Hun Yu)

  • Added new atttribute types (Florian Kainz):

    • M33dAttribute 3x3 double-precision matrix
    • M44dAttribute 4x4 double-precision matrix
    • V2d 2D double-precision vector
    • V3d 3D double-precision vector
  • Bug fix: crash when reading a damaged image file (found by Apple). An exception thrown inside the PIZ Huffman decoder bypasses initialization of an array of pointers. The uninitialized pointers are later passed to operator delete. (Florian Kainz)

  • Bug fix: crash when reading a damaged image file (found by Apple). Computing the size of input certain buffers may overflow and wrap around to a small number, later causing writes beyond the end of the buffer. (Florian Kainz)

  • In the "Technical Introduction" document, added Premultiplied vs. Un-Premulitiplied Color section: states explicitly that pixels with zero alpha and non-zero RGB are allowed, points out that preserving such a pixel can be a problem in application programs with un-premultiplied internal image representations. (Florian Kainz)

  • exrenvmap improvements:

    • New command line flags set the type of the input image to latitude-longitude map or cube-face map, overriding the envmap attribute in the input file header.

    • Cube-face maps can now be assembled from or split into six square sub-images.

    • Converting a cube-face map into a new cube-face map with the same face size copies the image instead of resampling it. This avoids blurring when a cube-face map is assembled from or split into sub-images. (Florian Kainz)

  • Updated standard chromaticities in ImfAcesFile.cpp to match final ACES (Academy Color Encoding Specification) document. (Florian Kainz)

  • Added worldToCamera and worldToNDC matrices to ImfStandardAttributes.h (Florian Kainz)

  • Increased the maximum length of attribute and channel names from 31 to 255 characters. For files that do contain names longer than 31 characters, a new LONG_NAMES_FLAG in the fil version number is set. This flag causes older versions of the IlmImf library (1.6.1 and earlier) to reject files with long names. Without the flag, older library versions would mis-interpret files with long names as broken. (Florian Kainz)

  • Reading luminance/chroma-encoded files via the RGBA interface is faster: buffer padding avoids cache thrashing for certain image sizes, redundant calls to saturation() have been eliminated. (Mike Wall)

  • Added "hemispherical blur" option to exrenvmap. (Florian Kainz)

  • Added experimental version of I/O classes for ACES file format (restricted OpenEXR format with special primaries and white point); added exr2aces file converter. (Florian Kainz)

  • Added new constructors to classes Imf::RgbaInputFile and Imf::TiledRgbaInputFile. The new constructors have a layerName parameter, which allows the caller to specify which layer of a multi-layer or multi-view image will be read. (Florian Kainz)

  • A number of member functions in classes Imf::Header, Imf::ChannelList and Imf::FrameBuffer have parameters of type "const char *". Added equivalent functions that take "const std::string &" parameters. (Florian Kainz)

  • Added library support for Weta Digital multi-view images: StringVector attribute type, multiView standard attribute of type StringVector, utility functions related to grouping channels into separate views. (Peter Hillman, Florian Kainz)

Version 1.6.1 (October 22, 2007)

This release fixes a buffer overrun in OpenEXR and a Windows build problem in CTL, and it removes a few unnecessary files from the .tar.gz packages.

Detailed Changes:

  • Removed Windows .suo files from distribution. (Eric Wimmer)

  • Bug fix: crashes, memory leaks and file descriptor leaks when reading damaged image files (some reported by Apple, others found by running IlmImfFuzzTest). (Florian Kainz)

  • Added new IlmImfFuzzTest program to test how resilient the IlmImf library is with respect broken input files: the program first damages OpenEXR files by partially overwriting them with random data; then it tries to read the damaged files. If all goes well, the program doesn't crash. (Florian Kainz)

Version 1.6.0 (August 3, 2007)

OpenEXR 1.6.0:

  • Reduced generational loss in B44- and B44A-compressed images.

  • Added B44A compression. This is a variation of B44, but with a better compression ratio for images with large uniform areas, such as in an alpha channel.

  • Bug fixes.

CTL 1.4.0:

  • Added new functions to the CTL standard library: 3x3 matrix support, 1D lookup tables with cubic interpolation.

  • Added new "ctlversion" statement to the language.

  • Bug fixes.

OpenEXR_CTL 1.0.0:

  • Applying CTL transforms to a frame buffer is multi-threaded. Bug fixes.

OpenEXR_Viewers 1.0.0:

  • Implemented new naming conventions for CTL parameters.

IlmBase 1.0.0:

  • Half now implements "round to nearest even" mode.

Detailed Changes:

  • Bumped DSO version number to 6.0 (Florian Kainz)

  • Added new standard attributes related to color rendering with CTL (Color Transformation Language): renderingTransform, lookModTransform and adoptedNeutral. (Florian Kainz)

  • Bug fix: for pixels with luminance near HALF_MIN, conversion from RGB to luminance/chroma produces NaNs and infinities (Florian Kainz)

  • Bug fix: excessive desaturation of small details with certain colors after repeatedly loading and saving luminance/chroma encoded images with B44 compression. (Florian Kainz)

  • Added B44A compression, a minor variation of B44: in most cases, the compression ratio is 2.28:1, the same as with B44, but in uniform image areas where all pixels have the same value, the compression ratio increases to 10.66:1. Uniform areas occur, for example, in an image's alpha channel, which typically contains large patches that are solid black or white, or in computer- generated images with a black background. (Florian Kainz)

  • Added flag to configure.ac to enable or disable use of large auto arrays in the IlmImf library. Default is "enable" for Linux, "disable" for everything else. (Darby Johnston, Florian Kainz)

  • corrected version number on dso's (libtool) - now 5.0

  • Separated ILMBASE_LDFLAGS and ILMBASE_LIBS so that test programs can link with static libraries properly

  • eliminated some warning messages during install (Andrew Kunz)

Version 1.5.0 (December 15, 2006)

The new version includes several significant changes:

  • OpenEXR supports a new image compression method, called B44. It has a fixed compression rate of 2.28:1, or 4.57:1 if used in combination with luminance/chroma encoding. B44-compressed images can be uncompressed fast enough to support real-time playback of image sequences.

  • The new playexr program plays back moving image sequences. Playexr is multi-threaded and utilizes the threading capabilities of the IlmImf library that were introduced in OpenEXR 1.3.0. The program plays back B44-compressed images with fairly high-resolution in real time on commodity hardware.

  • The playexr program and a new version of the existing exrdisplay image viewer both support color rendering via color transforms written in the new Color Transformation Language or CTL. CTL is not part of OpenEXR; it will be released separately. CTL support in playexr and exrdisplay is optional; the programs can be built and will run without CTL.

  • In preparation for the release of CTL, OpenEXR has been split into three separate packages:

    • IlmBase 0.9.0 includes the Half, Iex, Imath and IlmThread libraries

    • OpenEXR 1.5.0 includes the IlmImf library, programming examples and utility programs such as exrheader or exrenvmap

    • OpenEXRViewers 0.9.0 includes the playexr and exrdisplay programs

  • The "Technical Introduction to OpenEXR" document now includes a recommendation for storing CIE XYZ pixel data in OpenEXR files.

  • A new "OpenEXR Image Viewing Software" document describes the playexr and exrdisplay programs. It briefly explains real-time playback and color rendering, and includes recommendations for testing if other image viewing software displays OpenEXR images correctly.

  • The OpenEXR sample image set now includes B44-compressed files and files with CIE XYZ pixel data.

Detailed Changes:

  • reorganized packaging of OpenEXR libraries to facilitate integration with CTL. Now this library depends on the library IlmBase. Some functionality has been moved into OpenEXR_Viewers, which depends on two other libraries, CTL and OpenEXR_CTL. Note: previously there were separate releases of OpenEXR-related plugins for Renderman, Shake and Photoshop. OpenEXR is supported natively by Rendermand and Photoshop, so these plugins will not be supported for this or future versions of OpenEXR. (Andrew Kunz)

  • New build scripts for Linux/Unix (Andrew Kunz)

  • New Windows project files and build scripts (Kimball Thurston)

  • float-to-half conversion now preserves the sign of float zeroes and of floats that are so small that they become half zeroes. (Florian Kainz)

  • Bug fix: Imath::Frustum::planes() returns incorrect planes if the frustum is orthogonal. (Philip Hubbard)

  • added new framesPerSecond optional standard attribute (Florian Kainz)

  • Imath cleanup:

    • Rewrote function Imath::Quat::setRotation() to make it numerically more accurate, added confidence tests

    • Rewrote function Imath::Quat::slerp() using Don Hatch's method, which is numerically more accurate, added confidence tests.

    • Rewrote functions Imath::closestPoints(), Imath::intersect(), added confidence tests.

    • Removed broken function Imath::nearestPointOnTriangle().

    • Rewrote Imath::drand48(), Imath::lrand48(), etc. to make them functionally identical with the Unix/Linux versions of drand48(), lrand48() and friends.

    • Replaced redundant definitions of Int64 in Imath and IlmImf with a single definition in ImathInt64.h. (Florian Kainz)

  • exrdisplay: if the file's and the display's RGB chromaticities differ, the pixels RGB values are transformed from the file's to the display's RGB space. (Florian Kainz)

  • Added new lossy B44 compression method. HALF channels are compressed with a fixed ratio of 2.28:1. UINT and FLOAT channels are stored verbatim, without compression. (Florian Kainz)

Version 1.4.0a (August 9, 2006)

  • Fixed the ReleaseDLL targets for Visual Studio 2003. (Barnaby Robson)

Version 1.4.0 (August 2, 2006)

This is the next major production-ready release of OpenEXR and offers full compatibility with our last production release, which was 1.2.2. This version obsoletes versions 1.3.x, which were test versions for 1.4.0. If you have been using 1.3.x, please upgrade to 1.4.0.

  • Production release.

  • Bug Fix: calling setFrameBuffer() for every scan line while reading a tiled file through the scan line API returns bad pixel data. (Paul Schneider, Florian Kainz)

Version 1.3.1 (June 14, 2006)

  • Fixed the ReleaseDLL targets for Visual Studio 2005. (Nick Porcino, Drew Hess)

  • Fixes/enhancements for createDLL. (Nick Porcino)

Version 1.3.0 (June 8, 2006)

This is a test release. The major new feature in this version is support for multithreaded file I/O. We've been testing the threaded code internally at ILM for a few months, and we have not encountered any bugs, but we'd like to get some feedback from others before we release the production version.

Here's a summary of the changes since version 1.2.2:

  • Support for multithreaded file reading and writing.

  • Support for Intel-based OS X systems.

  • Support for Visual Studio 2005.

  • Better handling of PLATFORM_ and HAVE_ macros.

  • Updated documentation.

  • Bug fixes related to handling of incomplete and damaged files.

  • Numerous bug fixes and cleanups to the autoconf-based build system.

  • Removed support for the following configurations that were previously supported. Some of these configurations may happen to continue to function, but we can't help you if they don't, largely because we don't have any way to test them:

    • IRIX
    • OSF1
    • SunOS
    • OS X versions prior to 10.3.
    • gcc on any platform prior to version 3.3

Detailed Changes:

  • Removed openexr.spec file, it's out of date and broken to boot. (Drew Hess)

  • Support for Visual Studio 2005. (Drew Hess, Nick Porcino)

  • When compiling against OpenEXR headers on Windows, you no longer need to define any HAVE_ or PLATFORM_ macros in your projects. If you are using any OpenEXR DLLs, however, you must define OPENEXR_DLL in your project's preprocessor directives. (Drew Hess)

  • Many fixes to the Windows VC7 build system. (Drew Hess, Nick Porcino)

  • Support for building universal binaries on OS X 10.4. (Drew Hess, Paul Schneider)

  • Minor configure.ac fix to accomodate OS X's automake. (Drew Hess)

  • Removed CPU-specific optimizations from configure.ac, autoconf's guess at the CPU type isn't very useful, anyway. Closes #13429. (Drew Hess)

  • Fixed quoting for tests in configure.ac. Closes #13428. (Drew Hess)

  • Use host specification instead of target in configure.ac. Closes #13427. (Drew Hess)

  • Fix use of AC_ARG_ENABLE in configure.ac. Closes #13426. (Drew Hess)

  • Removed workaround for OS X istream::read bug. (Drew Hess)

  • Added pthread support to OpenEXR pkg-config file. (Drew Hess)

  • Added -no-undefined to LDFLAGS and required libs to LIBADD for library projects with other library dependencies, per Rex Dieter's patch. (Drew Hess)

  • HAVE_ macros are now defined in the OpenEXRConfig.h header file instead of via compiler flags. There are a handful of public headers which rely on the value of these macros, and projects including these headers have previously needed to define the same macros and values as used by OpenEXR's 'configure', which is bad form. Now 'configure' writes these values to the OpenEXRConfig.h header file, which is included by any OpenEXR source files that need these macros. This method of specifying HAVE_ macros guarantees that projects will get the proper settings without needing to add compile- time flags to accomodate OpenEXR. Note that this isn't implemented properly for Windows yet. (Drew Hess)

  • Platform cleanups:

    • No more support for IRIX or OSF1.

    • No more explicit support for SunOS, because we have no way to verify that it's working. I suspect that newish versions of SunOS will just work out of the box, but let me know if not.

    • No more PLATFORM_ macros (vestiges of the ILM internal build system). PLATFORM_DARWIN_PPC is replaced by HAVE_DARWIN. PLATFORM_REDHAT_IA32 (which was only used in IlmImfTest) is replaced by HAVE_LINUX_PROCFS.

    • OS X 10.4, which is the minimum version we're going to support with this version, appears to have support for nrand48 and friends, so no need to use the Imath-supplied version of them anymore. (Drew Hess)

  • No more PLATFORM_WINDOWS or PLATFORM_WIN32, replace with proper standard Windows macros. (Drew Hess)

  • Remove support for gcc 2.95, no longer supported. (Drew Hess)

  • Eliminate HAVE_IOS_BASE macro, OpenEXR now requires support for ios_base. (Drew Hess)

  • Eliminate HAVE_STL_LIMITS macro, OpenEXR now requires the ISO C++ header. (Drew Hess)

  • Use double quote-style include dirctives for OpenEXR includes. (Drew Hess)

  • Added a document that gives an overview of the on-disk layout of OpenEXR files (Florian Kainz)

  • Added sections on layers and on memory-mapped file input to the documentation. (Florian Kainz)

  • Bug fix: reading an incomplete file causes a deadlock while waiting on a semaphore. (Florian Kainz)

  • Updated documentation (ReadingAndWritingImageFiles.sxw) and sample code (IlmImfExamples): Added a section about multi-threading, updated section on thread-safety, changed documentation and sample code to use readTiles()/writeTiles() instead of readTile()/writeTile() where possible, mentioned that environment maps contain redundant pixels, updated section on testing if a file is an OpenEXR file. (Florian Kainz)

  • Multi-threading bug fixes (exceptions could be thrown multiple times, some operations were not thread safe), updated some comments, added comments, more multithreaded testing. (Florian Kainz)

  • Added multi-threading support: multiple threads cooperate to read or write a single OpenEXR file. (Wojciech Jarosz)

  • Added operator== and operator!= to Imath::Frustum. (Andre Mazzone)

  • Bug fix: Reading a PIZ-compressed file with an invalid Huffman code table caused crashes by indexing off the end of an array. (Florian Kainz)

Version 1.2.2 (March 15, 2005)

This is a relatively minor update to the project, with the following changes:

  • New build system for Windows; support for DLLs.

  • Switched documentation from HTML to PDF format.

  • IlmImf: support for image layers in ChannelList.

  • IlmImf: added isComplete() method to file classes to check whether a file is complete.

  • IlmImf: exposed staticInitialize() in ImfHeader.h in order to allow thread-safe library initialization in multithreaded applications.

  • IlmImf: New "time code" standard attribute.

  • exrdisplay: support for displaying wrap-around texture map images.

  • exrmaketiled: can now specify wrap mode.

  • IlmImf: New "wrapmodes" standard attribute to indicate extrapolation mode for mipmaps and ripmaps.

  • IlmImf: New "key code" standard attribute to identify motion picture film frames.

  • Imath: Removed TMatrix classes; these classes are still under development and are too difficult to keep in sync with OpenEXR CVS.

Detailed Changes:

  • Updated README to remove option for building with Visual C++ 6.0. (Drew Hess)

  • Some older versions of gcc don't support a full iomanip implemenation; check for this during configuration. (Drew Hess)

  • Install PDF versions of documentation, remove old/out-of-date HTML documentation. (Florian Kainz)

  • Removed vc/vc6 directory; Visual C++ 6.0 is no longer supported. (Drew Hess)

  • Updated README.win32 with details of new build system. (Florian Kainz, Drew Hess)

  • New build system for Windows / Visual C++ 7 builds both static libraries and DLLs. (Nick Porcino)

  • Removed Imath::TMatrix and related classes, which are not used anywhere in OpenEXR. (Florian Kainz)

  • Added minimal support for "image layers" to class Imf::ChannelList (Florian Kainz)

  • Added new isComplete() method to InputFile, TiledInputFile etc., that checks if a file is complete or if any pixels are missing (for example, because writing the file was aborted prematurely). (Florian Kainz)

  • Exposed staticInitialize() function in ImfHeader.h in order to allow thread-safe library initialization in multithreaded programs. (Florian Kainz)

  • Added a new "time code" attribute (Florian Kainz)

  • exrmaketiled: when a MIPMAP_LEVELS or RIPMAP_LEVELS image is produced, low-pass filtering takes samples outside the image's data window. This requires extrapolating the image. The user can now specify how the image is extrapolated horizontally and vertically (image is surrounded by black / outermost row of pixels repeats / entire image repeats / entire image repeats, every other copy is a mirror image). exrdisplay: added option to swap the top and botton half, and the left and right half of an image, so that the image's four corners end up in the center. This is useful for checking the seams of wrap-around texture map images. IlmImf library: Added new "wrapmodes" standard attribute to indicate the extrapolation mode for MIPMAP_LEVELS and RIPMAP_LEVELS images. (Florian Kainz)

  • Added a new "key code" attribute to identify motion picture film frames. (Florian Kainz)

  • Removed #include <Iex.h> from ImfAttribute.h, ImfHeader.h and ImfXdr.h so that including header files such as ImfInputFile.h no longer defines ASSERT and THROW macros, which may conflict with similar macros defined by application programs. (Florian Kainz)

  • Converted HTML documentation to OpenOffice format to make maintaining the documents easier: api.html -> ReadingAndWritingImageFiles.sxw details.html -> TechnicalIntroduction.sxw (Florian Kainz)

Version 1.2.1 (June 6, 2004)

This is a fairly minor release, mostly just a few tweaks, a few bug fixes, and some new documentation. Here are the most important changes:

  • reduced memory footprint of exrenvmap and exrmaketiled utilities.

  • IlmImf: new helper functions to determine whether a file is an OpenEXR file, and whether it's scanline- or tile-based.

  • IlmImf: bug fix for PXR24 compression with ySampling != 1.

  • Better support for gcc 3.4.

  • Warning cleanups in Visual C++.

Detailed Changes:

  • exrenvmap and exrmaketiled use slightly less memory (Florian Kainz)

  • Added functions to IlmImf for quickly testing if a file is an OpenEXR file, and whether the file is scan-line based or tiled. (Florian Kainz)

  • Added preview image examples to IlmImfExamples. Added description of preview images and environment maps to docs/api.html (Florian Kainz)

  • Bug fix: PXR24 compression did not work properly for channels with ySampling != 1. (Florian Kainz)

  • Made template <class T> become template <class S, class T> for the transform(ObjectS, ObjectT) methods. This was done to allow for differing templated objects to be passed in e.g. say a Box<Vec3<S>> and a Matrix44<T>, where S=float and T=double. (Jeff Yost, Arkell Rasiah)

  • New method Matrix44::setTheMatrix(). Used for assigning a M44f to a M44d. (Jeff Yost, Arkell Rasiah)

  • Added convenience Color typedefs for half versions of Color3 and Color4. Note the Makefile.am for both Imath and ImathTest have been updated with -I and/or -L pathing to Half. (Max Chen, Arkell Rasiah)

  • Methods equalWithAbsError() and equalWithRelError() are now declared as const. (Colette Mullenhoff, Arkell Rasiah)

  • Fixes for gcc34. Mainly typename/template/using/this syntax correctness changes. (Nick Ramussen, Arkell Rasiah)

  • Added Custom low-level file I/O examples to IlmImfExamples and to the docs/api.html document. (Florian Kainz)

  • Eliminated most warnings messages when OpenEXR is compiled with Visual C++. The OpenEXR code uses lots of (intentional and unintended) implicit type conversions. By default, Visual C++ warns about almost all of them. Most implicit conversions have been removed from the .h files, so that including them should not generate warnings even at warning level 3. Most .cpp files are now compiled with warning level 1. (Florian Kainz)

Version 1.2.0 (May 11, 2004)

OpenEXR 1.2.0 is now available. This is the first official, production-ready release since OpenEXR 1.0.7. If you have been using the development 1.1 series, please switch to 1.2.0 as soon as possible. We believe that OpenEXR 1.2.0 is ready for use in shipping applications. We have been using it in production at ILM for several months now with no problems. There are quite a few major new features in the 1.2 series as compared to the original 1.0 series:

  • Support for tiled images, including mipmaps and ripmaps. Note that software based on the 1.0 series cannot read or write tiled images. However, simply by recompiling your software against the 1.2 release, any code that reads scanline images can read tiled images, too.

  • A new Pxr24 compressor, contributed by Pixar Animation Studios. Values produced by the Pxr24 compressor provide the same range as 32-bit floating-point numbers with slightly less precision, and compress quite a bit better. The Pxr24 compressor stores UINT and HALF channels losslessly, and for these data types performs similarly to the ZIP compressor.

  • OpenEXR now supports high dynamic-range YCA (luminance/chroma/alpha) images with subsampled chroma channels. These files are supported via the RGBA convenience interface, so that data is presented to the application as RGB(A) but stored in the file as YC(A). OpenEXR also supports Y and YA (black-and-white/black-and-white with alpha) images.

  • An abstracted file I/O interface, so that you can use OpenEXR with interfaces other than C++'s iostreams.

  • Several new utilities for manipulating tiled image files.

Detailed Changes:

  • Production-ready release.

  • Disable long double warnings on OS X. (Drew Hess)

  • Add new source files to VC7 IlmImfDll target. (Drew Hess)

  • Iex: change the way that APPEND_EXC and REPLACE_EXC modify their what() string to work around an issue with Visual C++ 7.1. (Florian Kainz, Nick Porcino)

  • Bumped OpenEXR version to 1.2 and .so versions to 2.0.0 in preparation for the release. (Drew Hess)

  • Imath: fixed ImathTMatrix.h to work with gcc 3.4. (Drew Hess)

  • Another quoting fix in openexr.m4. (Drew Hess)

  • Quoting fix in acinclude.m4 for automake 1.8. (Brad Hards)

  • Imath: put inline at beginning of declaration in ImathMatrix.h to fix a warning. (Ken McGaugh)

  • Imath: made Vec equalWithError () methods const.

  • Cleaned up compile-time Win32 support. (Florian Kainz)

  • Bug fix: Reading a particular broken PIZ-compressed file caused crashes by indexing off the end of an array. (Florian Kainz)

Version 1.1.1 (March 27, 2004)

OpenEXR 1.1.1 is now available. This another development release. We expect to release a stable version, 1.2, around the end of April. Version 1.1.1 includes support for PXR24 compression, and for high-dynamic-range luminance/chroma images with subsampled chroma channels. Version 1.1.1 also fixes a bug in the 1.1.0 tiled file format.

Detailed Changes:

  • Half: operator= and variants now return by reference rather than by value. This brings half into conformance with built-in types. (Drew Hess)

  • Half: remove copy constructor, let compiler supply its own. This improves performance up to 25% on some expressions using half. (Drew Hess)

  • configure: don't try to be fancy with CXXFLAGS, just use what the user supplies or let configure choose a sensible default if CXXFLAGS is not defined.

  • IlmImf: fixed a bug in reading scanline files on big-endian architectures. (Drew Hess)

  • exrmaketiled: Added an option to select compression type. (Florian Kainz)

  • exrenvmap: Added an option to select compression type. (Florian Kainz)

  • exrdisplay: Added some new command-line options. (Florian Kainz)

  • IlmImf: Added Pixar's new "slightly lossy" image compression method. The new method, named PXR24, preserves HALF and UINT data without loss, but FLOAT pixels are converted to a 24-bit representation. PXR24 appears to compress FLOAT depth buffers very well without losing much accuracy. (Loren Carpenter, Florian Kainz)

  • Changed top-level LICENSE file to allow for other copyright holders for individual files.

  • IlmImf: TILED FILE FORMAT CHANGE. TiledOutputFile was incorrectly interleaving channels and scanlines before passing pixel data to a compressor. The lossless compressors still work, but lossy compressors do not. Fix the bug by interleaving channels and scanlines in tiled files in the same way as ScanLineOutputFile does. Programs compiled with the new version of IlmImf cannot read tiled images produced with version 1.1.0. (Florian Kainz)

  • IlmImf: ImfXdr.h fix for 64-bit architectures. (Florian Kainz)

  • IlmImf: OpenEXR now supports YCA (luminance/chroma/alpha) images with subsampled chroma channels. When an image is written with the RGBA convenience interface, selecting WRITE_YCA instead of WRITE_RGBA causes the library to convert the pixels to YCA format. If WRITE_Y is selected, only luminance is stored in the file (for black and white images). When an image file is read with the RGBA convenience interface, YCA data are automatically converted back to RGBA. (Florian Kainz)

  • IlmImf: speed up reading tiled files as scan lines. (Florian Kainz)

  • Half: Fixed subtle bug in Half where signaling float NaNs were being converted to inf in half. (Florian Kainz)

  • gcc 3.3 compiler warning cleanups. (various)

  • Imath: ImathEuler.h fixes for gcc 3.4. (Garrick Meeker)

Version 1.1.0 (February 6, 2004)

OpenEXR 1.1.0 is now available. This is a major new release with support for tiled images, multi-resolution files (mip/ripmaps), environment maps, and abstracted file I/O. We've also released a new set of images that demonstrate these features, and updated the CodeWarrior project and Photoshop plugins for this release. See the downloads section for the source code and the new images.

Detailed Changes:

  • Added new targets to Visual C++ .NET 2003 project for exrmaketiled, exrenvmap, exrmakepreview, and exrstdattr. (Drew Hess)

  • A few assorted Win32 fixes for Imath. (Drew Hess)

  • GNU autoconf builds now produce versioned libraries. This release is 1:0:0. (Drew Hess)

  • Fixes for Visual C++ .NET 2003. (Paul Schneider)

  • Updated Visual C++ zlib project file to zlib 1.2.1. (Drew Hess)

  • exrdisplay: Fixed fragment shader version. (Drew Hess)

  • *Test: Fixed some compiler issues. (Drew Hess)

  • Imath: Handle "restrict" keyword properly. (Drew Hess)

  • IlmImfExamples: Updated to latest versions of example source code, includes tiling and multi-res images. (Florian Kainz)

  • exrmakepreview: A new utility to create preview images. (Florian Kainz)

  • exrenvmap: A new utility to create OpenEXR environment maps. (Florian Kainz)

  • exrstdattr: A new utility to modify standard attributes. (Florian Kainz)

  • Updated exrheader to print level rounding mode and preview image size. (Florian Kainz)

  • Updated exrmaketiled to use level rounding mode. (Florian Kainz)

  • IlmImf: Changed the orientation of lat-long envmaps to match typical panoramic camera setups. (Florian Kainz)

  • IlmImf: Fixed a bug where partially-completed files with DECREASING_Y could not be read. (Florian Kainz)

  • IlmImf: Added support for selectable rounding mode (up/down) when generating multiresolution files. (Florian Kainz)

  • exrdisplay: Support for tiled images, mip/ripmaps, preview images, and display windows. (Florian Kainz, Drew Hess)

  • exrmaketiled: A new utility which generates tiled versions of OpenEXR images. (Florian Kainz)

  • IlmImf: Changed Imf::VERSION to Imf::EXR_VERSION to work around problems with autoconf VERSION macro conflict. (Drew Hess)

  • exrheader: Support for tiles, mipmaps, environment maps. (Florian Kainz)

  • IlmImf: Environment map support. (Florian Kainz)

  • IlmImf: Abstracted stream I/O support. (Florian Kainz)

  • IlmImf: Support for tiled and mip/ripmapped files; requires new file format. (Wojciech Jarosz, Florian Kainz)

  • Imath: TMatrix, generic 2D matricies and algorithms. (Francesco Callari)

  • Imath: major quaternions cleanup. (Cary Phillips)

  • Imath: added GLBegin, GLPushAttrib, GLPushMatrix objects for automatic cleanup on exceptions. (Cary Phillips)

  • Imath: removed implicit scalar->vector promotions and vector comparisons. (Nick Rasmussen)

Version 1.0.7 (January 7, 2004)

OpenEXR 1.0.7 is now available. In addition to some bug fixes, this version adds support for some new standard attributes, such as primary and white point chromaticities, lens aperture, film speed, image acquisition time and place, and more. If you want to use these new attributes in your applications, see the ImfStandardAttributes.h header file for documentation.

Our project hosting site, Savannah, is still recovering from a compromise last month, so in the meantime, we're hosting file downloads here. Some of the files are not currently available, but we're working to restore them.

Detailed Changes:

  • Fixed a typo in one of the IlmImfTest tests. (Paul Schneider)

  • Fixed a bug in exrdisplay that causes the image to display as all black if there's a NaN or infinity in an OpenEXR image. (Florian Kainz)

  • Updated exrheader per recent changes to IlmImf library. (Florian Kainz)

  • Changed an errant float to a T in ImathFrame.h nextFrame(). (Cary Phillips)

  • Support for new "optional standard" attributes (chromaticities, luminance, comments, etc.). (Florian Kainz, Greg Ward, Joseph Goldstone)

  • Fixed a buffer overrun in ImfOpaqueAttribute. (Paul Schneider)

  • Added new function, isImfMagic (). (Florian Kainz)

Version 1.0.6:

  • Added README.win32 to disted files.

  • Fixed OpenEXR.pc.in pkg-config file, OpenEXR now works with pkg-config.

  • Random fixes to readme files for new release.

  • Fixed openexr.m4, now looks in /usr by default.

  • Added Visual Studio .NET 2003 "solution."

  • Fixes for Visual Studio .NET 2003 w/ Microsoft C++ compiler. (Various)

  • Random Imath fixes and enhancements. Note that extractSHRT now takes an additional optional argument, see ImathMatrixAlgo.h for details. (Various)

  • Added Wojciech Jarosz to AUTHORS file.

  • Added test cases for uncompressed case, preview images, frame buffer type conversion. (Wojciech Jarosz, Florian Kainz)

  • Fix a bug in IlmImf where uncompressed data doesn't get read/written correctly. (Wojciech Jarosz)

  • Added support for preview images and preview image attributes (thumbnail images) in IlmImf. (Florian Kainz)

  • Added support for automatic frame buffer type conversion in IlmImf. (Florian Kainz)

  • Cleaned up some compile-time checks.

  • Added HalfTest unit tests.

  • [exrdisplay] Download half framebuffer to texture memory instead of converting to float first. Requires latest Nvidia drivers.

Version 1.0.5 (April 3, 2003)

Industrial Light & Magic has released the source code for an OpenEXR display driver for Pixar's Renderman. This display driver is covered under the OpenEXR free software license. See the downloads section for the source code.

Detailed Changes:

  • Fixed IlmImf.dll to use static runtime libs (Andreas).

  • Added exrheader project to Visual Studio 6.0 workspace.

  • Added some example code showing how to use the IlmImf library. (Florian)

  • Use DLL runtime libs for Win32 libraries rather than static runtime libs.

  • Add an exrdisplay_fragshader project to the Visual Studio 6.0 workspace to enable fragment shaders in Win32.

  • Add an IlmImfDll project to the Visual Studio 6.0 workspace.

  • In Win32, export the ImfCRgbaFile C interface via a DLL so that Visual C++ 6.0 users can link against an Intel-compiled IlmImf. (Andreas Kahler)

  • Use auto_ptr in ImfAutoArray on Win32, it doesn't like large automatic stacks.

  • Performance improvements in PIZ decoding, between 20 and 60% speedup on Athlon and Pentium 4 systems. (Florian)

  • Updated the README with various information, made some cosmetic changes for readability.

  • Added fragment shader support to exrdisplay.

  • Bumped the version to 1.0.5 in prep for release.

  • Updated README and README.OSX to talk about CodeWarrior project files.

  • Incorporated Rodrigo Damazio's patch for an openexr.m4 macro file and an openexr.spec file for building RPMs.

  • Small change in ImfAttribute.h to make IlmImf compile with gcc 2.95.

  • Updated ImfDoubleAttribute.h for Codewarrior on MacOS.

  • Added exrheader utility.

  • Update to AUTHORS file.

  • Added a README.win32 file.

  • Added project files for Visual Studio 6.0.

  • Initial Win32 port. Requires Visual Studio 6.0 and Intel C++ compiler version 7.0.

  • Added new intersectT method in ImathSphere.h

  • Fixed some bugs in ImathQuat.h

  • Proper use of fltk-config to get platform-specific FLTK compile- and link-time flags.

  • exrdisplay uses Imath::Math::pow instead of powf now. powf is not availble on all platforms.

  • Roll OS X "hack" into the source until Apple fixes their istream implementation.

Version 1.0.4

Detailed Changes:

  • OpenEXR is now covered by a modified BSD license. See LICENSE for the new terms.

Version 1.0.3:

Detailed Changes:

  • OpenEXR is now in sf.net CVS.

  • Imf::Xdr namespace cleanups.

  • Some IlmImfTest cleanups for OS X.

  • Use .cpp extension in exrdisplay sources.

  • Iex cleanups.

  • Make IlmImf compile with Metrowerks Codewarrior.

  • Change large automatic stacks in ImfHuf.C to auto_ptrs allocated off the heap. MacOS X default stack size isn't large enough.

  • std::ios fix for MacOS X in ImfInputFile.C.

  • Added new FP predecessor/successor functions to Imath, added tests to ImathTest

  • Fixed a bug in Imath::extractSHRT for 3x3 matricies when exactly one of the original scaling factors is negative, updated ImathTest to check this case.

  • Install include files when 'make install' is run.

  • exrdisplay requires fltk 1.1+ now in an effort to support a MacOS X display program (fltk 1.1 runs on OS X), though this is untested.

  • renamed configure.in to configure.ac

  • Removed some tests from IexTest that are no longer used.

  • Removed ImfHalfXdr.h, it's not used anymore.

  • Revamped the autoconf system, added some compile-time optimizations, a pkgconfig target, and some maintainer-specific stuff.

Version 1.0.2

Detailed Changes:

  • More OS X fixes in Imath, IlmImf and IlmImfTest.

  • Imath updates.

  • Fixed a rotation bug in Imath

Version 1.0.1

Detailed Changes:

  • Used autoconf 2.53 and automake 1.6 to generate build environment.

  • Makefile.am cleanups.

  • OS X fixes.

  • removed images directory (now distributed separately).

Version 1.0

Detailed Changes:

  • first official release.

  • added some high-level documentation, removed the old OpenEXR.html documentation.

  • fixed a few nagging build problems.

  • bumped IMV_VERSION_NUMBER to 2

Version 0.9

Detailed Changes:

  • added exrdisplay viewer application.

  • cleanup _data in Imf::InputFile and Imf::OutputFile constructors.

  • removed old ILM copyright notices.

Version 0.8

Detailed Changes:

  • Initial release.