Changelog History
Page 4
-
v1.7.0 Changes
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)
-
v1.6.1 Changes
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)
-
v1.6.0 Changes
August 03, 2007OpenEXR 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)
-
v1.5.0 Changes
December 15, 2006The 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)
-
v1.4.0 Changes
August 02, 2006This 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)
-
v1.4.0.a Changes
August 09, 2006- 🛠 Fixed the ReleaseDLL targets for Visual Studio 2003. (Barnaby Robson)
-
v1.3.1 Changes
June 14, 2006🛠 Fixed the ReleaseDLL targets for Visual Studio 2005. (Nick Porcino, Drew Hess)
🛠 Fixes/enhancements for createDLL. (Nick Porcino)
-
v1.3.0 Changes
June 08, 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)
-
v1.2.2 Changes
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 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)
-
v1.2.1 Changes
June 06, 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>
becometemplate <class S, class T>
for thetransform(ObjectS, ObjectT)
methods. This was done to allow for differing templated objects to be passed in e.g. say aBox<Vec3<S>>
and aMatrix44<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)