Log message:
Update to 1.3.13
* Do not install documents
Changelog:
Release 1.3.13 (2 Apr 2014 -- compared to 1.3.12)
-------------------------------------------------
* Bug fix to string_ref::c_str().
* Make ImageBuf iterators return valid black pixel data for missing tiles.
* Fix broken build when EMBEDPLUGINS=0.
* Fix broken build when building against OpenEXR 1.x.
* Fix bugs in ImageBufAlgo::flatten().
* Fix DPX handling of unsupported pixel types.
* Fix compilation problems for PowerPC.
* Fix Parameter neglect of proerly copying the m_interp field for assignment
and copy construction.
* Fixes for OpenBSD compilation.
* DPX: accept pixel ratio (x/0) to mean 1.0, not NaN.
* Fix ImageBufAlgo::circular_shift (and oiiotool --cshift) that did not
wrap correctly for negative shifts.
Release 1.3.12 (25 Jan 2014 -- compared to 1.3.11)
--------------------------------------------------
* Add .sxr and .mxr as possible filename extensions for OpenEXR.
* PNG: add "png:compressionlevel" and "compression" strategy \
attributes.
* Fix recent build break where OIIO would no longer compile properly
against OpenEXR <= 1.6.
* oiiotool --origin could crash with certain large ImageCache-backed
images.
Release 1.3.11 (8 Jan 2014 -- compared to 1.3.10)
-------------------------------------------------
* DPX output: honor the "Software" metadata attribute passed in.
* OpenEXR: fix crashing bug when reading stringvector attributes in the
file.
* Fix build breaks when building against OpenEXR 1.x.
* Fix warnings with Boost Python + gcc 4.8.
Release 1.3.10 (2 Jan 2014 -- compared to 1.3.9)
------------------------------------------------
* OpenEXR fix: multi-part EXR (2.0) didn't write the required "name"
attribute for each part.
* iconvert: properly handle multi-image files for formats that can't
append subimages.
* iv info window should print native file info, not translated
ImageBuf/ImageCache info.
* Improved strutil_test now much more comprehensively unit tests
Strutil.
* Strutil::split() fixes bug when maxsplit is not the default value.
* Fix ImageCache::get_pixels() for the chbegin != 0 case, when cache
and output buffer types were not identical.
* DPX bug fix -- inappropriate use of "dpx_ImageDescriptor" could make
invalid DPX files (especially when reading metadata from one DPX
file, changing the number of channels, then writing out again as a
DPX file).
Release 1.3 (2 Dec 2013 -- compared to 1.2.x)
----------------------------------------------
Major new features and improvements:
* Huge overhaul of the Python bindings: TypeDesc, ImageSpec (1.3.2),
ImageInput, ImageOutput (1.3.3), ROI, ImageBuf (1.3.4), ImageBufAlgo
(1.3.6). The Python bindings were pretty rusty, badly tested,
undocumented, and had not kept up with recent changes in the C++ APIs.
That's all fixed now, the Python APIs are finally first-class citizens
(including full functionality, unit tests, and docs), and we intend to
keep it that way.
* The ability for an application to supply custom ImageInput and associate
them with a file extension. Those II's can do anything, including
generate image data procedurally.
* GIF reader
Public API changes:
* Large overhaul of the Python bindings. See the (finally existing!) docs.
* ImageBufAlgo:
* New functions: nonzero_region(); ociodisplay(), resize() variety
that lets you specify the filter by name; 2-argument (non-in-place)
versions of add, sub, mul, rangecompress, rangeexpand, unpremult,
premult, clamp fixNonFinite; sub() varieties that take float or
float* operands.
* Removed several IBA functions that have been deprecated since 1.2.
* Deprecated the single-image in-place versions of add, sub, mul,
rangecompress, rangeexpand, unpremult, premult, clamp fixNonFinite.
* ImageBuf:
* read() and init_spec() are no longer required, somewhat simplifying
application code that uses ImageBuf. All ImageBuf API calls
automatically read the spec and/or pixels from their named file if
they are needed, if it has not already been done. (1.3.4)
* save() is deprecated, and new ImageBuf::write() is now preferred
(naming symmetry). (1.3.4)
* New set_write_format() and IB::set_write_tiles() allow override of
default choices for data format and tile size for subsequent calls
to ImageBuf::write(). (1.3.4)
* ImageCache / TextureSystem:
* ImageCache::add_file() lets you seed the ImageCache with a "virtual \
file"
that will read from a custom ImageInput. This lets you add "procedural
images" to the IC.
* ImageCache::add_tile() lets you add tiles to the ImageCache. The caller
can initialize those tiles with any pixel values it chooses.
* A new variety of IC/TS::destroy() takes a 'bool teardown' parameter
that, when true, does a complete teardown of the underlying ImageCache,
even if it's the "shared" one. (1.3.7)
* OIIO::declare_imageio_format() exposes a way to give OIIO a custom
ImageInput and/or ImageOutput (via factory functions) and associate them
with particular file extensions. This makes it especially easy for an
app to make a procedural image generator that looks to the entire rest
of OIIO like a regular image file. (1.3.2)
* TypeDesc::VECSEMANTICS now have additional enum tags for TIMECODE and
KEYCODE to indicate that the data represents an SMPTE timecode or
SMPTE keycode, respectively. (1.3.7)
Fixes, minor enhancements, and performance improvements:
* oiiotool improvements:
* --autotrim Shrinks pixel data window upon output to trim black
edges. (1.3.2)
* --siappend Appends subimages of top two images on the stack. (1.2.2)
* --datadump will print all pixel values of an image (debugging tool) (1.3.6)
* --flatten turns a "deep" image into a flat one by \
depth-compositing within
each pixel (1.3.6).
* --ociodisplay applies an OpenColorIO display transformation. (1.3.7)
* Fix memory leak when processing frame range. (1.2.1/1.3.2)
* --help now returns a success error code, not a failure. (1.2.1/1.3.2)
* Fix incorrect help message about --ociolook. (1.2.1/1.3.2)
* Fix typo in "oiio:Colorspace" attribute name that interfered
with correct color space conversion in --colorconvert. (1.2.1)
* Many fixes and improvements to XMP & IPTC metadata handling. (1.2.2)
* Multithread speed improvement when opening files by reducing how
much time ImageInput::create and/or ImageOutput::create hold a
global mutex.
* oiiotool --origin and --fullpixels, when operating on cropped or
overscanned image, could sometimes do the wrong thing. (1.2.2/1.3.3)
* oiiotool --colorconvert did not work properly when the color
transformation was detected to be a no-op. (1.2.2/1.3.3)
* oiiotool --fit did not handle padding or offsets properly. (1.2.2/1.3.3)
* Changed/improved the behavior of --rangecompress/--rangeexpand. (1.3.3)
* 'oiiotool --pattern checker' was incorrect when nonzero offsets were
used. (1.2.3/1.3.4)
* oiiotool --runstats prints the total time/memory on every iteration
when doing file sequence wildcard iteration. (1.3.4)
* Eliminated a particular situation that might hit an ASSERT. Instead,
bubble up a real error message. (1.3.4)
* oiiotool --resize and --resample fixed for overscan images (1.3.5)
* --ociolook applies OCIO looks. (1.3.6)
* Supports printf-style frame range wildcards ('%04d') in addition to the
'#' style, and scan for matching frames if no explicit framespec is
provided. (1.3.6)
* ImageBufAlgo improvements:
* colorconvert() did not work properly when the color transformation was
detected to be a no-op.
* colorconvert(): added a variety that specifies color spaces by name.
* New ociolook() function applies OCIO "looks." (1.3.6)
* checker() was incorrect when nonzero offsets were used.
* checker() now has default values of 0 for the 'offset' parameters
(and so may be omitted if you want 0 offsets). (1.3.4)
* unsharp_mask() bug when src and dst were different data formats.
(1.2.3/1.3.4)
* Better dealing with cases of IBA functions detecting and issuing
errors when inputs that must be initialized are not. (1.3.4)
* We changed the behavior of rangecompress/rangeexpand. We swear
the new way is better. (1.3.3)
* New nonzero_region() returns the shrink-wrapped nonzero pixel data window.
(1.3.2)
* resize() has a new variety that lets you specify the filter by name
(rather than allocating ans passing a Filter2D*).
* resize() and resample() fixed to more robustly handle overscan
images. (1.3.5)
* over()/zover() are no longer restricted to float images. (1.3.7)
* ImageBuf:
* ImageBuf::write() writes untiled images by default, fixing some
tricky issues when IB's start thinking they're tiled because of
interaction with the ImageCache (which makes everything look tiled).
* ImageBuf::file_format_name() never worked properly, now is fixed (1.3.4)
* Fixed bug that caused incorrect ImageBuf::copy_pixels() when the two
IB's had different data types. (1.3.4/1.2.3)
* Improved iterator's handling of how overscanned pixels interact
with wrap modes. (1.3.6)
* Fixed a bug with black wrap mode not working correctly. (1.3.7/1.2.4)
* ImageCache/TextureSystem:
* More careful with texture de-duplication -- texture value lookups
use de-duplication, but metadata lookups (e.g., get_texture_info)
uses the metadata from the original file.
* get_image_info/get_texture_info queries for "datawindow" and
"displaywindow". (1.3.6)
* The multi-point version of environment() was broken. (1.3.9)
* maketx: --hicomp uses the new range compression/expansion formula. (1.3.3)
* DPX:
* support multi-image (often used for stereo frames).
* Fixed DPX input that didn't recognized offset/cropped images.
(1.2.2/1.3.3, another fix in 1.3.4)
* Fixed DPX output crash with cropped images. (1.2.2/1.3.3)
* Now correctly get and set "smpte:TimeCode" and \
"smpte:KeyCode"
metadata. (1.3.7).
* OpenEXR:
* Fixed write_scanlines handling of per-channel data types (1.3.6)
* Several OpenEXR 2.0 deep file fixes: only some compression types
supported, write_tiles passed wrong parameters, must suppress some
attribute names. (1.2.3/1.3.6)
* Now correctly get and set "smpte:TimeCode" and \
"smpte:KeyCode"
metadata. (1.3.7).
* JPEG: fixed that some JPEG files were not being recognized because of
magic number issues.
* TGA: Correctly unassociate alpha if it's from an unasociated file;
also, always write unassociated data because so few Targa readers in
the wild seem to properly handle associated alpha.
* PNG: More correct handling of unassociated alpha.
* TIFF: More correct handling of unassociated alpha.
* PSD: fix handling of associated vs unassociated alpha. (1.2.3)
* maketx fixed to handle inputs that are a mixture of cropped and
overscanned. (1.3.5)
* Fix segfault if OCIO is set to a non-existant file. (1.3.6)
* Slight performance increase when writing images to disk (1.3.6)
* Many fixes to make OIIO compile with libc++ (clang's new C++ library,
and the default on OSX Mavericks). (1.2.3/1.3.6, 1.3.7)
* Fixed several potential buffer overflow errors from unsafe strcpy. (1.3.8)
Build/test system improvements:
* Fix broken tests under Windows. (1.3.2)
* Many fixes for compiler warnings on various platforms: fmath_test.cpp,
field3dinput.cpp, sysutil.cpp, argparse.cpp, oiiotool.cpp. (1.2.1/1.3.2)
* Fixes problems on little-endian architecture with texture3d.cpp.
(1.2.1/1.3.2)
* Fix compilation problems on architectures with gcc, but no 'pause'
instruction. (1.2.1/1.3.2)
* Fix build search path for correctly finding libopenjpeg 1.5. (1.2.1)
* Work around bug in older MSVC versions wherein Filesystem::open needed
to explicitly seek to the beginning of a file. (1.2.1/1.3.2)
* Build fixes for FreeBSD. (1.2.1/1.3.2, 1.2.4/1.3.6)
* Fix testsuite/oiiotool on Windows -- windows shell doesn't expand
wildcards. (1.2.1/1.3.2)
* Fix warnings for new GCC 4.8 compiler.
* Always search for and use the release HDF5 libraries, not the debugging
ones, even when building debug OIIO (this fixes errors when a system
does not have the debugging HDF5 libraries installed). (1.2.2/1.3.3)
* Extensive unit tests in the testsuite for the Python bindings.
* Fix compiler error on MIPS platform. (1.2.2/1.3.3)
* Add FIELD3D_HOME description to 'make help' (1.2.2/1.3.3)
* Add cmake variables ILMBASE_CUSTOM_INCLUDE_DIR, ILMBASE_CUSTOM_LIB_DIR,
OPENEXR_CUSTOM_INCLUDE_DIR, and OPENEXR_CUSTOM_LIB_DIR to make it
easier to have site-specific hints for these packages' locations. (1.3.4)
* Add BOOST_HOME and OCIO_HOME controls from the top-level Makefile wrapper.
(1.3.4/1.2.3)
* Accommodate new cmake release that slightly changes the HDF5 library
naming. (1.3.6)
* Various fixes to make the code compile properly with libc++ (clang's
rewrite of the C++ standard library). (1.3.6)
* Updated PugiXML (partly to help compilation with libc++) (1.3.6)
* Better support for NOTHREADS (for some legacy systems) (1.3.6)
* Fix to __attribute__(visibility) for gcc < 4.1.2 (1.3.6)
* Improve the CMake build files to fully quote path constructions to make
it more robust for builds with paths containing spaces. (1.3.7)
* Moved the main CMakeLists.txt file to the top level directory, per usual
CMake conventions. (1.3.7)
Developer goodies:
* Docs improvement: full documentation of ImageBufAlgo. (1.2.1/1.3.2)
* Merge improved "Tinyformat" that fixes a bug in some old glibc versions
(1.3.2).
* Now each command line tools explicitly converts to UTF native arguments,
rather than relying on it happening in ArgParse (which no longer does
so). (1.3.2)
* Strutil::contains() and icontains(). (1.2.2/1.3.3)
* Updatd "Tinyformat" to the latest release (1.3.6)
* Sysutil::physical_memory() tries to figure out the total physical memory
on the machine. (1.3.6)
* Strutil::safe_strcpy (1.3.8)
* ParamValue now allows get/set of the hidden 'interp' field. (1.3.9)
Release 1.2.3 (1 Nov 2013)
--------------------------
* 'oiiotool --pattern checker' (and ImageBufAlgo::checker) was
incorrect when nonzero offsets were used.
* ImageBufAlgo::unsharp_mask() bug when src and dst were different
data formats.
* PSD: fix handling of associated vs unassociated alpha.
* Fixed bug that caused incorrect ImageBuf::copy_pixels() when the two
IB's had different data types.
* Add BOOST_HOME and OCIO_HOME controls from the top-level Makefile wrapper.
* Several OpenEXR 2.0 deep file fixes: only some compression types
supported, write_tiles passed wrong parameters, must suppress some
attribute names.
* DPX - several fixes to properly handle images with nonzero origins.
* Fixes for recent cmake not finding HDF5 properly.
* Many fixes to make OIIO compile with libc++ (clang's new C++ library,
and the default on OSX Mavericks).
* Fix OpenEXR write_scanlines handling of per-channel data types.
* Upgraded PugiXML to a more modern version (necessary for clean compile
with libc++).
|
Log message:
Update to 1.2.2
Changelog:
Release 1.2.2 (1 Oct 2013)
--------------------------
* New features:
* New oiiotool --siappend : append subimages of top two images on stack.
* Utilities: added Strutil::contains() and icontains().
* Fixes:
* Fixes in handling XMP & IPTC metadata.
* oiiotool --origin and --fullpixels did not correctly propagate their
changes to the output images.
* oiiotool --colorconvert (and the underlying ImageBufAlgo::colorconvert)
could crash if given a color conversion recognized as a no-op.
* DPX output could crash when writing crop images.
* DPX input was not recognizing the proper image offset or originalsize.
* oiiotool --fit wasn't padding correctly or modifying offsets properly.
* Build fixes:
* Fix compiler error on MIPS platform.
* Add FIELD3D_HOME description to 'make help'
* Always use the HDF5 release libraries (for Field3D), not the debug ones.
Release 1.2.1 (5 Aug 2013)
---------------------------
* oiiotool: Fix memory leak when processing frame range.
* Docs improvement: full documentation of ImageBufAlgo.
* oiiotool --help now returns a success error code, not a failure.
* oiiotool: fix incorrect help message about --ociolook.
* oiiotool: Fix typo in "oiio:Colorspace" attribute name that interfered
with correct color space conversion in --colorconvert.
* Many fixes for compiler warnings on various platforms: fmath_test.cpp,
field3dinput.cpp, sysutil.cpp, argparse.cpp, oiiotool.cpp.
* Fixes problems on little-endian architecture with texture3d.cpp.
* Fix compilation problems on architectures with gcc, but no 'pause'
instruction.
* Fix build search path for correctly finding libopenjpeg 1.5.
* Work around bug in older MSVC versions wherein Filesystem::open needed
to explicitly seek to the beginning of a file.
* Build fixes for FreeBSD.
* Fix testsuite/oiiotool on Windows -- windows shell doesn't expand wildcards.
Release 1.2 (8 July 2013)
-------------------------
Major new features and improvements:
* New oiiotool commands:
--swap Exchanges the top two items on the image stack.
--fit Resize image to fit into a given resolution (keeping aspect).
--ch Select/cull/reorder/add channels within an image.
--chappend Merge two images by appending their color channels.
--chnames Rename some or all of the color channels in an image.
--zover Depth compositing
--cadd Add constant per-channel values to all pixels
--cmul Multiply an imge by a scalar or per-channel constant.
--fillholes Smoothly interpolate for hole filling.
--resample Similar to --resize, but just uses closest pixel lookup.
--clamp Clamp pixel values
--rangeexpand Expand range for certain HDR processing
--rangecompress Compress range for certain HDR processing
--unpremult Divide colors by alpha (un-premultiply).
--premult Multiply colors by alpha.
--kernel Make a convolution kernel using a filter name.
--convolve Convolve two images.
--blur Blur an image.
--unsharp Sharpen an image using an unsharp mask.
--paste Paste one image on another.
--mosaic Create a rectilinear image mosaic.
--transpose Transpose an image (flip along the diagonal axis)
--chsum Sum all channels in each pixel
--cshift Circular shift an image pixels
--fft --ifft Forward and inverse Fourier transform
--colorcount Counts how many pixels are one of a list of colors.
--rangecheck Counts how many pixels fall outside the given range.
--ociolook Apply OpenColorIO "looks"
--autotrim Shrinks pixel data window upon output to trim black edges.
* oiiotool can loop over entire numeric frame ranges by specifying
wildcard filenames such as "foo.#.tif" or "bar.1-10#.exr".
* oiiotool --frames and --framepadding give more explicit control over
frame range wildcards.
* Significant performance improvements when reading and writing images
using the ImageBuf::read and ImageCache::get_pixels interfaces, and in
some cases also when using regular ImageInput. This also translates
to improved performance and memory use for oiiotool and maketx.
* At least doubled the performance of maketx for large images when run
on multi-core machines.
* Significant performance improvements when using ImageBuf::Iterator
or ConstIterator to traverse the pixels in an ImageBuf, and the iterators
now support "wrap" modes (black, clamp, periodic, mirror).
* maketx --hicomp does "highlight compensation" by compressing the
HDR value range prior to inter-MIP resizes, then re-expanding the range.
* Field3D writer (it could read f3d files before, but not write them).
* idiff can now compare that are not the same size (treating pixels
beyond the pixel data window is being 0 valued).
* maketx --lightprobe turns a "lightprobe" iamge into a latlong environment
map.
* Significant improvements and fixes to EXIF, IPTC, and XMP metadata
reading and writing.
* Significant thread scalability improvements to TextureSystem and
ImageCache.
* Huge overhaul of functionality, style, and performance of the
entire ImageBufAlgo set of functions (see the "Public API changes"
section below, and the imagebufalgo.h file for details).
Public API changes:
* ImageOutput semantics change: If the spec passed to open() has
spec.format set fo UNKNOWN, then select a default data format for the
output file that is "most likely to be able to be read" and/or "most
typical for files of that format in the wild." Also,
ImageOutput::open() will never fail because a requested data format is
unavailable; if the requested format is not supported, a reasonable
alternate will always be chosen.
* ImageBuf has been changed to a "PIMPL" idiom, wherein all the
internals are no longer exposed in the public API. This allows us to
change ImageBuf internals in the future without breaking API or link
compatibility (and thus giving us more freedom to backport important
improvements to prior releases).
* Overhaul of ImageBufAlgo functions: they all take an ROI parameter;
use the DISPATCH macros to make them work with all pixel data types
where practical (previously, many supported float only); use Iterator
rather than getpixel/setpixel, leading to huge speed improvements;
multithread when operating on enough pixels, leading to huge speed
improvements; work on 3D (volume) images where applicable; always
gracefully handle uninitialized dest image or undefined ROI.
* New ImageBufAlgo functions: channels(), channel_append(), mul(),
paste(), zover(), add() and mul() varieties that that add/multiply a
constant amount to all pixels, fillholes_pp(), resample(), clamp(),
rangecompress(), rangeexpand(), make_kernel(), unsharp_mask(),
transpose(), channel_sum(), circular_shift(), fft(), ifft(),
color_count(), color_range_check(), nonzero_region().
[look in imagebufalgo.h for documentation.]
* ImageBufAlgo::make_texture() allows you to do the same thing that
maketx does, but from inside an application and without launching a
shell invocation of maketx. Two varieties exist: one that takes a
filename and reads from disk, another that takes an ImageBuf already
in memory.
* ImageBuf Iterator/ConstIterator now take "wrap" mode parameters that
allow out-of-range iterators to be able to retrieve valid data. Supported
wrap modes include black, clamp, periodic, and mirror. This simplifies
a lot of algorithms using IB::Iterator, they can now be written to
rely on wrap behavior rather than being cluttered with checks for
"if (it.exits())" clauses.
* ImageBufAlgo::computePixelHashSHA1 has been refactored to take ROI,
a block size, and thread count, and thus can be parallelized with threads.
The block size means that rather than computing a single SHA-1 for all
the pixels, it computes separate (parallel) SHA-1 for each group of
blocksize scanlines, then returns the SHA-1 of all the individual SHA-1
hashed blocks. This is just as strong a hash as before, thought the value
is different than doing the whole thing at once, but by breaking it into
blocks the computation can be multithreaded.
* ImageBuf::swap() makes it easy to swap two ImageBuf's.
* ImageSpec::get_channelformats is now const (and always should have been).
Fixes, minor enhancements, and performance improvements:
* TextureSystem improvements:
* Make sure "black" wrap wins out over "fill" value when \
they conflict
(looking up an out-of-range channel beyond the pixel data window).
* "mirror" wrap mode was slightly incorrect and has been fixed.
* oiiotool improvements:
* oiiotool -v breaks down timing by individual function.
* oiiotool has been sped up by forcing read of the whole image up front
for reasonably-sized files (instead of relying on ImageCache).
* oiiotool does not write output images if fatal errors have occurred.
* oiiotool --diff: Better error handling, better error printing, and
now it can compare images with differing data windows or channel
numbers ("missing" channels or pixels are presumed to be 0 for the
purposes of comparing).
* oiiotool --resize (and --fit): properly handle the case of resizing
to the same size as the original image.
* oiiotool -d CHAN=TYPE can set the output for just one channel.
* ImageBufAlgo improvements:
* Internal overhaul of IBA::resize to greatly speed it up.
* Improve IBA::resize to handle the image edge better -- instead of
clamping, just don't consider nonexistant pixels.
* More careful selection of filter when resizing (IBA::resize, oiiotool
--resize and --fit, and maketx).
* Fix IBA::paste() error when the foreground image runs off the end of
the background image.
* Bug fix when computing SHA-1 hash of 0-sized images.
* Image format support improvements:
* Bug fix where some format readers (PNM, SGI, and IFF) would leave the
file handle opened if the ImageInput was destroyed without calling
close() first. Now we guarantee that destroying the II always causes
the file to close().
* DPX: output allocation bug fix; properly set pixel aspect ratio for
DPX write.
* IFF: bug fix for endian swap for IFF file input.
* JPEG2000: fix warnings, make sure event manager transfer object
remains valid.
* OpenEXR: when reading, was botching the ordering of per-channel data
formats.
* SGI write: bug fix for the case of 15 bpp RLE encoding, was
double-swapping bytes.
* Targa: more robust check for presence of alpha channels; bug fix where
R and B channels were reversed for certain kinds of palette images.
* TIFF: Store the orientation flag properly when outputting a TIFF file.
* maketx improvements:
* maketx --chnames allows you to rename the channels when you create a
texture.
* maketx bug fixes: incorrect weighting when resizing MIP levels for
latlong environment map images that could make visible artifacts
on some intermediate MIP levels.
* encode_exif() didn't copy the right number of bytes.
* Python bindings: ImageSpec extra_attribs now properly responds to
iterator calls.
* Fix bug in sRGB -> linear conversion.
* iv: make pixelview display coordinates & color even when outside the
data window.
Build/test system improvements:
* Many fixes to improve builds and eliminate warnings on Windows and MinGW.
* Fix missing InterlockedExchangeAdd64 for Windows XP.
* New make/cmake boags: OIIO_BUILD_TOOLS=0 will exclude building of the
command line tools (just build libraries), OIIO_BUILD_TESTS=0 will
exclude building of unit test binaries.
* Improved matching of testsuite reference images on different platforms.
* Lots of fixes to compiler warnings on newer gcc and clang releases.
* Unit tests for Timer class.
* libOpenImageio/imagespeed_test benchmarks various methods of reading
and writing files and iterating image pixels (to help us know what to
optimize).
* If OpenSSL is available at build time, OIIO will use its SHA-1
implementation instead of our own (theirs is faster). We still fall
back on ours if OpenSSL is not available or when OIIO is built with
USE_OPENSSL=0.
* Allow default the shared library suffix to be overridden with the
CMake variable OVERRIDE_SHARED_LIBRARY_SUFFIX.
* Eliminated all uses of the custom DEBUG symbol, and instead use the
more standard idiom "#ifndef NDEBUG".
* Compatibility fixes for Python3.
* MSVC 2008: Prevent a redefinition error when using boost::shared_ptr.
* Fixes for compatibility with libtiff 4.0.
* Fixes for MSVC debug mode having out-of-bound exceptions.
* Fixes for libjpeg 9.x.
* Compile to treat warnings as errors (you can disable this with
STOP_ON_WARNING=0).
* New filter: "sharp-gaussian".
* Fix various Windows build errors.
* Improvements to the build when finding IlmBase/OpenEXR.
* Various fixes to compile on ARM architecture.
* Fixes to compile on ESA/390 mainframe (!).
* testtex --threadtimes, --trials, --iters, --nodup, --wedge. These
are helpful in using testtext to benchmark the texture system.
* Improvements to make more tests work properly on Windows.
Developer goodies:
* Improved ASSERT and DASSERT macros to not generate warning for certain
debug compiles; key their debug behavior by the absence of the standard
NDEBUG idiom rather than presence of a custom DEBUG symbol; rename the
message variants ASSERT_MSG and DASSERT_MSG.
* Change the default for Sysutil::memory_used to report resident memory
rather than virtual process size.
* Multithread/parallel version of utility function convert_image().
* imagebufalgo.h improvements and expansion of the various DISPATCH_*
macros.
* New Filesystem utilities: parent_path(), get_directory_entries().
* New Strutil utilities: extract_from_list_string
* spinlock tweaks make it faster than TBB's spin locks!
* By default, we no longer build or use TBB (it's considered deprecated,
but in 1.2 can still be turned on with USE_TBB=1).
* In fmath.h, added definitions for safe_inversesqrt, safelog, safe_log2,
safe_log10, safe_logb.
* In typedesc.h, added TypeDesc::tostring() function.
* unordered_map_concurrent.h contains a template for a thread-safe
unordered_map that is very efficient even for large number of threads
simultaneously accessing it.
* Documentation: Finally, a chapter in the PDF docs that fully describes
the ImageBuf class.
Release 1.1.13 (24 Jun 2013)
----------------------------
* Texture: make sure wrap mode "black" wins over "fill" \
value when they
conflict.
Release 1.1.12 (20 Jun 2013)
----------------------------
* Fix oiiotool '#' wildcard, was broken on Windows.
* Fix an overflow problem that plagued 'maketx' when running on input
larger than 32k x 32k (among other possible failures).
Release 1.1.11 (29 May 2013)
----------------------------
* IFF input: bug in endian swap of 16 bit IFF files.
* oiiotool: fix a minor bug where tiled files were output inappropriately.
(Had been patched in master some time ago.)
* fmath.h additions: safe_inversesqrt, safe_log, safe_log2, safe_log10,
safe_logb. These are versions that clamp their inputs so that they
can't throw exceptions or return Inf or NaN.
* Fix to not incorrectly print ImageCache stats for certain broken files.
Release 1.1.10 (13 Apr 2013)
----------------------------
* IBA::fillholes() and oiiotool --fillholes can smoothly fill in alpha
holes with nearby colors. Great for extrapolating the empty areas of
texture atlas images so that filtered texture lookups pull in a plausible
color at part edges.
* IBA::clamp and oiiotool --clamp clamp pixel values to a scalar or
per-channel min and/or max, or clamp alpha to [0,1].
* IBA::rangecompress()/rangeexpand(), and oiiotool --rangecompress /
--rangeexpand compress the excess >1 values of HDR images to a log
scale (leaving the <= 1 part linear), and re-expand to the usual
linear scale. This is very helpful to reduce ringing artifacts that
can happen when an HDR image is resized with a good filter with negative
lobes (such as lanczos3), by doing a range compression, then the resize,
then range expansion. It's not mathematically correct and loses energy,
but it often makes a much more pleasing result.
* maketx --hicomp does highlight compression -- automatically doing a
range compress before each high-quality resize step, and then a
range expansion and clamp-to-zero (squash negative pixels) after
each resize.
* DPX - when writing DPX files, properly set the pixel aspect ratio.
Release 1.1.9 (2 Apr 2013)
--------------------------
* IBA::resize and oiiotool --resize/--fit: Bug fixes to resize filter
size selection fix artifacts wherein extreme zooms could end up with
black stripes in places where the filters fell entirely between samples.
* oiiotool --fit: fix subtle bugs with aspect ratio preservation for
images with differing data and display windows; and allow "filter=..."
to override the default filter used for fit.
* Resize improvement: fix potential artifacts at the image edges resulting
from odd clamping behavior.
* Even more frame range wildcard flexibility with oiiotool --frames and
--framepadding options.
* oiiotool --resize and --fit (and the underlying IBA::resize()) have been
sped up significantly and are now also multithreaded.
Release 1.1.8 (15 Mar 2013)
---------------------------
* oiiotool --chappend (and ImageBufAlgo::channel_append() underneath) allow
you to take two files and concatenate their color channels.
* oiiotool --chnames allows you to rename some or all of a file's color
channels.
* oiiotool can loop over entire frame ranges by specifying wildcard
filenames such as "foo.#.tif" or "bar.1-10#.exr".
* Cmake: OVERRIDE_SHARED_LIBRARY_SUFFIX allows the shared library suffix
to be overridden (e.g., if you need to force .so names on OSX rather
than the usual default of .dylib).
|