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.
* Temporarily turning off optimisation code path
* Added additional tests for future optimisation refactoring
* Fixes for StringVectors
* Additional checks for type mismatches
* Fix for Composite Deep Scanline
* Updated Documentation
* Updated Namespacing mechanism
* Fixes for succd & predd
* Fixes for FPE control registers
* Additional checks and tests on DeepImages, scanlines and tiles
* Folded in Autodesk read optimisations for RGB(A) files
* Updated the bootstrap scripts to use libtoolize if glibtoolize isn't available on darwin.
* Numerous minor fixes, missing includes etc
* Added new atttribute types:
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.
* 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.
* 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.
* 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.
* Updated standard chromaticities in ImfAcesFile.cpp to match
final ACES (Academy Color Encoding Specification) document.
* Added worldToCamera and worldToNDC matrices to ImfStandardAttributes.h
* 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.
* 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.
* Added "hemispherical blur" option to exrenvmap.
* Added experimental version of I/O classes for ACES file
format (restricted OpenEXR format with special primaries
and white point); added exr2aces file converter.
* 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.
* 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.
* 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.
This changes the buildlink3.mk files to use an include guard for the
recursive include. The use of BUILDLINK_DEPTH, BUILDLINK_DEPENDS,
BUILDLINK_PACKAGES and BUILDLINK_ORDER is handled by a single new
variable BUILDLINK_TREE. Each buildlink3.mk file adds a pair of
enter/exit marker, which can be used to reconstruct the tree and
to determine first level includes. Avoiding := for large variables
(BUILDLINK_ORDER) speeds up parse time as += has linear complexity.
The include guard reduces system time by avoiding reading files over and
over again. For complex packages this reduces both %user and %sys time to
half of the former time.
1.6.1
New versions of OpenEXR and CTL are now available. 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.
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.
1.5.0
* 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:
o IlmBase 0.9.0 includes the Half, Iex, Imath and IlmThread
libraries
o OpenEXR 1.5.0 includes the IlmImf library, programming
examples and utility programs such as exrheader or
exrenvmap
o 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.
the newly introduced libIlmThread library. Bump PKGREVISION, since this
update is necessary to fix the build of some buildlink client applications
(E.g. koffice).
XXX Possibly BUILDLINK_API_DEPENDS should be bumped too...
* Fixed the ReleaseDLL targets for Visual Studio 2003.
Changes 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.
and add a new helper target and script, "show-buildlink3", that outputs
a listing of the buildlink3.mk files included as well as the depth at
which they are included.
For example, "make show-buildlink3" in fonts/Xft2 displays:
zlib
fontconfig
iconv
zlib
freetype2
expat
freetype2
Xrender
renderproto
RECOMMENDED is removed. It becomes ABI_DEPENDS.
BUILDLINK_RECOMMENDED.foo becomes BUILDLINK_ABI_DEPENDS.foo.
BUILDLINK_DEPENDS.foo becomes BUILDLINK_API_DEPENDS.foo.
BUILDLINK_DEPENDS does not change.
IGNORE_RECOMMENDED (which defaulted to "no") becomes USE_ABI_DEPENDS
which defaults to "yes".
Added to obsolete.mk checking for IGNORE_RECOMMENDED.
I did not manually go through and fix any aesthetic tab/spacing issues.
I have tested the above patch on DragonFly building and packaging
subversion and pkglint and their many dependencies.
I have also tested USE_ABI_DEPENDS=no on my NetBSD workstation (where I
have used IGNORE_RECOMMENDED for a long time). I have been an active user
of IGNORE_RECOMMENDED since it was available.
As suggested, I removed the documentation sentences suggesting bumping for
"security" issues.
As discussed on tech-pkg.
I will commit to revbump, pkglint, pkg_install, createbuildlink separately.
Note that if you use wip, it will fail! I will commit to pkgsrc-wip
later (within day).
Several changes are involved since they are all interrelated. These
changes affect about 1000 files.
The first major change is rewriting bsd.builtin.mk as well as all of
the builtin.mk files to follow the new example in bsd.builtin.mk.
The loop to include all of the builtin.mk files needed by the package
is moved from bsd.builtin.mk and into bsd.buildlink3.mk. bsd.builtin.mk
is now included by each of the individual builtin.mk files and provides
some common logic for all of the builtin.mk files. Currently, this
includes the computation for whether the native or pkgsrc version of
the package is preferred. This causes USE_BUILTIN.* to be correctly
set when one builtin.mk file includes another.
The second major change is teach the builtin.mk files to consider
files under ${LOCALBASE} to be from pkgsrc-controlled packages. Most
of the builtin.mk files test for the presence of built-in software by
checking for the existence of certain files, e.g. <pthread.h>, and we
now assume that if that file is under ${LOCALBASE}, then it must be
from pkgsrc. This modification is a nod toward LOCALBASE=/usr. The
exceptions to this new check are the X11 distribution packages, which
are handled specially as noted below.
The third major change is providing builtin.mk and version.mk files
for each of the X11 distribution packages in pkgsrc. The builtin.mk
file can detect whether the native X11 distribution is the same as
the one provided by pkgsrc, and the version.mk file computes the
version of the X11 distribution package, whether it's built-in or not.
The fourth major change is that the buildlink3.mk files for X11 packages
that install parts which are part of X11 distribution packages, e.g.
Xpm, Xcursor, etc., now use imake to query the X11 distribution for
whether the software is already provided by the X11 distribution.
This is more accurate than grepping for a symbol name in the imake
config files. Using imake required sprinkling various builtin-imake.mk
helper files into pkgsrc directories. These files are used as input
to imake since imake can't use stdin for that purpose.
The fifth major change is in how packages note that they use X11.
Instead of setting USE_X11, package Makefiles should now include
x11.buildlink3.mk instead. This causes the X11 package buildlink3
and builtin logic to be executed at the correct place for buildlink3.mk
and builtin.mk files that previously set USE_X11, and fixes packages
that relied on buildlink3.mk files to implicitly note that X11 is
needed. Package buildlink3.mk should also include x11.buildlink3.mk
when linking against the package libraries requires also linking
against the X11 libraries. Where it was obvious, redundant inclusions
of x11.buildlink3.mk have been removed.
- New build system for Windows; support for DLLs.
- Imath: Removed TMatrix<T> classes; these classes are still
under development and are too difficult to keep in sync
with OpenEXR CVS.
- 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.
Industrial Light & Magic for use in computer imaging applications.
OpenEXR is used by ILM on all motion pictures currently in production.
The first movies to employ OpenEXR were Harry Potter and the Sorcerers Stone,
Men in Black II, Gangs of New York, and Signs. Since then, OpenEXR has become
ILM's main image file format.
OpenEXR's features include:
* Higher dynamic range and color precision than existing 8- and 10-bit image
file formats.
* Support for 16-bit floating-point, 32-bit floating-point, and 32-bit integer
pixels. The 16-bit floating-point format, called "half", is compatible with
the half data type in NVIDIA's Cg graphics language and is supported
natively on their new GeForce FX and Quadro FX 3D graphics solutions.
* Multiple lossless image compression algorithms. Some of the included codecs
can achieve 2:1 lossless compression ratios on images with film grain.
* Extensibility. New compression codecs and image types can easily be added by
extending the C++ classes included in the OpenEXR software distribution.
New image attributes (strings, vectors, integers, etc.) can be added to
OpenEXR image headers without affecting backward compatibility with existing
OpenEXR applications.