And... I just tagged Release-1.5.11, mostly fixing minor build breaks on a couple platforms, but most importantly bumping the version number properly (I had somehow forgotten to actually change the version to 1.5.10 last time and remove the "RC" designation).
Release 1.5.11 (January 28, 2015) -- compared to 1.5.10) ---------------------------------------------- * Fix build breaks for very old versions of Ilmbase (1.6 and earlier) that lack a definition of V4f used by our simd.h. #1048 * Fix signed/unsigned warning on 32 bit platforms in jpeginput.cpp. #1049 On Jan 26, 2015, at 11:33 PM, Larry Gritz <[email protected]> wrote: > A full release (not beta, not RC) of OpenImageIO 1.5 has been tagged as > "Release-1.5.10" within the RB-1.5 branch. > > This is the stable version we recommend for production use and commercial > products. We will fix bugs, and maybe occasionally add minor features if they > are VERY low risk changes, but we will not break API, ABI, or link > compatibility within the 1.5 branch. > > The RB.1.4 branch (most recent tag: Release-1.4.16) is hereby deprecated. We > recommend that everybody move to 1.5 as soon as practical. Further changes to > 1.4 will be limited to critical bugs only, and in most cases only if > specifically requested by users still on 1.4 and who cannot move to 1.5 for > some reason. > > Future development (which will eventually become a 1.6 release, probably in > late summer) happens in "master", and may include API changes at any time. > > Release notes for 1.5 (compared to the 1.4 branch) are below. Lots of great > stuff! > > > > Release 1.5 (January 26, 2015) -- compared to 1.4.x > ---------------------------------------------- > Major new features and improvements: > * New oiiotool functionality/commands: > * --rotate90, --rotate180, --rotate270 rotate the image in 90 degree > axially-aligned increments with no filtering. (1.5.2) > * --reorient will perform whatever series of rotations or flips are > necessary to move the pixels to match the "Orientation" metadata that > describes the desired display orientation. (1.5.2) > * --autoorient will automatically do the equivalent of --reorient on > every image as it is read in, if it has a nonstandard orientation. > (This is generally a good idea to use if you are using oiiotool to > combine images that may have different orientations.) (1.5.2) > * --rotate rotates an image by arbitrary angle and center point, > with high-quality filtering. #932 (1.5.3) > * --warp transforms an image using a 3x3 matrix, with high-quality > filtering. #932 (1.5.3) > * --median performs a median filter. (1.5.4) > * New ImageBufAlgo functions: > * rotate90(), rotate180(), rotate270() rotate the image in 90 degree > axially-aligned increments with no filtering. (1.5.2) > * reorient() will perform whatever series of rotations or flips are > necessary to move the pixels to match the "Orientation" metadata that > describes the desired display orientation. (1.5.2) > * rotate() performs rotation with arbitrary angle and center point, > with high-quality filtering. #932 (1.5.3) > * warp() transforms an image by a 3x3 matrix, with high-quality > filtering. #932 (1.5.3) > * median_filter performs a median filter. (1.5.4) > * Significant internal speedups by utilizing SIMD instructions (SSE) in > the TextureSystem (1.5.5 / #948, 1.5.6 / #990). To use this to its > fullest extent, build OIIO with the make/cmake option USE_SIMD=arch, > where arch is sse2, ssse3, sse4.1, sse4.2, depending on what machines > you'll be deploying to. (Note that x86_64 automatically implies at > least sse2.) We're finding that this has approximately doubled the > speed of the math part of texture mapping (it doesn't speed up the disk > I/O, of course). (1.5.5) > * Basic support for many movie files via a plugin using 'ffmpeg'. Works > with avi, mov, qt, mp4, m4a, 3gp, 3g2, mj2, m4v, mpg, and more. Movie > files simply look like multi-image files to OIIO. There isn't really > support for audio yet, and although this lets you retrieve and process > individual frames of a movie file, OIIO is still not meant to be a > video-processing library. Currently, these formats can be read, but > there is no write support (maybe coming soon). #928 #1010 (1.5.5) > * Nuke plugins -- a txReader plugins that will read OIIO texture files, > and a txWriter that will output proper (tiled & mip-mapped) texture files > from Nuke. Contributed by Nathan Rusch / Luma Pictures. #973 (1.5.6) > > Public API changes: > * TextureSystem API calls have been modified: the nchannels, dresultds, > dresultdt fields have been removed from TextureOpt and are now passed > explicitly as arguments to texture(), environment(), and texture3d(). > Some long-deprecated methods of TextureSystem have been removed, and > also some new API calls have been added that provide multi-point > texturing given a TextureHandle/PerThread rather than a ustring > filename. (1.5.5) (#948) > * New filters available to direct users of filter.{h,cpp} and for > ImageBufAlgo, oiiotoo, and maketx: "cubic", "keys", "simon", "rifman". > (1.5.0/1.4.9) (#874) > * Global attribute "read_chunk" can set the default number of scanlines > read at a time internally by read_image() calls. #925 > * The Python ImageBuf class did not expose an equivalent to the C++ > ImageBuf::get_pixels. This is exposed now. #931 (1.5.3) > * The Filter API now uses string_view. (1.5.3) > * ImageBuf and ImageBufAlgo now use string_view extensively. (1.5.4) > * ImageInput::supports() and ImageOutput::supports() now accept new tags: > "arbitrary_metadata" reveals if the format allows arbitrarily-named > metadata; "exif" if the format can store camera Exif data; "iptc" if > the format can store IPTC metadata. #1001 (1.5.7) > * Removed ImageBuf and ImageBufAlgo functions that have been deprecated > since OIIO 1.3. #1016 (1.5.8) > * ImageCache::add_file has been extended to allow an ImageSpec pointer > as "configuration", which will be passed along to the underlying > ImageInput::open() when the file is first opened. This allows you to > use the same kind of configuration options/hints that you would with a > raw ImageInput. (1.5.8) > * ImageBuf constructor and reset methods have been extended to allow an > ImageSpec pointer as "configuration", which will be passed along to > the underlying ImageCache and/or ImageInput::open() when the file is > first opened. This allows you to use the same kind of configuration > options/hints that you would with a raw ImageInput. (1.5.8) > * The DeepData helper structure now has methods to set (already allocated) > deep values, as well as to retrieve uint values. (1.5.8) > * ImageBuf methods to get and set deep values and to allocate the DeepData > structure. (1.5.8) > * ImageBuf::interppixel_NDC has been changed to consider the coordinates > relate to full (aka display) window, rather than data window. (1.5.8) > * ImageBuf::interppixel_bicubic and interppixel_bicubic_NDC added to > sample an image with B-spline bicubic interpolation. (1.5.8) > * Clarified in the docs that TextureSystem::get_texture_info and > ImageCache::get_image_info "exists" queries should return true, and > place in *data the value 1 or 0 depending on whether the image exists > and can be read. (1.5.10) > > Fixes, minor enhancements, and performance improvements: > * ImageBufAlgo: > * flip(), flop(), flipflop() have been rewritten to work more > sensibly for cropped images. In particular, the transformation now > happens with respect to the display (full) window, rather than > simply flipping or flopping within the data window. (1.5.2) > * channels() now works properly with "deep" images. (1.5.8) > * oiiotool: > * oiiotool --nosoftwareattrib suppresses the altering of Software and > ImageHistory fields upon output. (1.5.1) > * oiiotool --ch now will search for channel names case-insensitively, > if the channel names are not first found with case-sensitive > compares. #897 (1.5.1/1.4.11) > * oiiotool --wildcardoff/--wildcardon can selectively disable and > re-enable the frame sequence numeric wildcards (useful if you have > a filename or other argument that must actually contain '#' or '@' > characters). #892 (1.5.1/1.4.11) > * oiiotool --no-autopremult/--autopremult can disable and re-enable > the automatic premultiplication of color by opacity, in files where > they are stored not-premultiplied and you wish to preserve the > original un-premultiplied values. #906 (1.5.1/1.4.11) > * oiiotool --sansattrib omits "-attrib" and "-sattrib" and their > arguments from the command line that is put in the Software and > ImageHistory metadata (makes it less pointlessly verbose). (1.5.1) > * Now get helpful error messages if input images are corrupt or > incomplete. (1.5.1) > * oiiotool --flip, --flop, --flipflop, and --transpose now have more > sensible behavior for cropped images. (1.5.2) > * oiiotool --orientcw, --orientccw, and --orient180 are the new names > for --rotcw, --rotccw, --rot180. The old names were confusing, and now > it is more clear that these merely adust the Orientation metadata that > suggests viewing orientation, rather than actually rotating the image > data. (1.5.2) > * oiiotool color conversion ops crashed when inputs were files with > MIPmap levels (such as textures). #930 (1.5.3/1.4.13) > * More graceful handling when outputting an image with negative pixel > window origin to a file format that doesn't support this feature. > (1.5.3) > * oiiotool --unsharp_mask:kernel=median will perform a median filter > for the blurring step (rather than a gaussian or other convolution > filter), which tends to sharpen small details but not over-sharpen > long edges as the traditional unsharp mask often does. (1.5.4) > * oiiotool's help message now says explicitly if it was compiled without > any support for OpenColorIO. (1.5.5/1.4.15) > * oiiotool -stats, on deep files, now prints a histogram of the number > of samples per pixel. #992 (1.5.6) > * oiiotool --dump of "deep" files improves output with int32 channels > (1.5.6). > * oiiotool --stats of "deep" files prints a histogram of samples/pixel > (1.5.6). > * oiiotool -subimage has better error detection and reporting for > requests for nonexistant subimages. #1005 (1.5.7) > * oiiotool --ch is a bit more flexible in its channel-shuffling syntax: > you are now able to say newchannel=oldchannel, both shuffling and > renaming channels simultaneously, thus removing a frequent necessity > of a --chnames action following a --ch. (1.5.8) > * oiiotool -d now supports uint32, sint32. #1013 (1.5.8) > * oiiotool -native forces native data format read in cases where going > through the ImageCache would have sacrificed precision or range. > #1014 (1.5.8) > * oiiotool --resize (and similar, such as --fix, --resample, etc.) size > specifiers now allow percentage values that are not the same in each > direction, such as "200%x50%", which would double horizontal resolution > while cutting vertical resolution in half. #1017 (1.5.8) > * oiiotool --ch now works properly with "deep" images. (1.5.8) > * maketx & TextureSystem: > * texture lookups have roughly doubled in performance because of SSE > optimization. (1.5.5 / #948, 1.5.6 / #990). > * maketx: Fix case typo for LatLong env map creation when in 'prman' > mode. #877. (1.5.1/1.4.10) > * maketx --attrib, --sattrib, and --sansattrib now work like > oiiotool; in other words, you can use command line arguments to add > or alter metadata in the process of creating a texture. #901 (1.5.1) > * maketx --sharpen <AMT> adds slight sharpening and emphasis of > higher frequencies when creating MIP-maps. #958 (1.5.5) > * Fix crash when using maketx --checknan (1.5.5) > * maketx now embeds metadata hints ("oiio:ConstantColor") for > constant textures (all pixels are identical). The texture system > notices this hint and will automatically replace texture lookups > (as long as wrap mode is not black) with this constant value, about > 10x faster than a real texture lookup would have been. This sounds > silly, but in production sometimes you end up with uniform textures > and this helps. Also, you can retrieve the constant color via > get_texture_info of "constantcolor" and "constantalpha" (though the > retrieval will only succeed if the metadata is present, even if > the texture is actually constant). #1006 (1.5.7) > * maketx now embeds metadata hints ("oiio:AverageColor") containing > the average value of the texture. This can be retrieved with > get_texture_info of "averagecolor" and "averagealpha". #1006 (1.5.7) > * Python: > * Bug fix: the Python binding of ImageInput.read_scanlines did not > properly honor any channel subset specified. (1.5.5/1.4.15) > * All of the expensive functions in the Python bindings now release the > Python GIL (global interpreter lock) as much as possible. This allows > other Python threads to make progress even when OIIO is doing a > lengthy operation such as file I/O or an expensive image processing > operation. (1.5.5) > * Bug fix in ImageInput: could crash if calling ImageInput.read_* > functions without specifying a data format. #998 (1.5.6) > * Bug fix in ImageOutput: could crash if calling ImageInput.write_* > functions if the buffer format did not match the file data format. > #999 (1.5.6) > * OpenEXR: > * Improve the quality of lossy b44 compression by more correctly > using the pLinear value of channels (we were incorrectly using the > flag to indicate linear channels, but it's really for channels > that are perceptually linear). (#867) (1.5.0/1.4.9) > * Fix potential build breaks due to incorrect use of > Imf::isDeepData() which apparently was not intended to be an > externally-visible function. (1.5.0/1.4.9) (#875) > * Fix crashes/exceptions when passing string array attributes > for OpenEXR output. #907 (1.5.1/1.4.11) > * Improved ordering of channel names for OpenEXR files with many > "layers". #904 (1.5.1/1.4.11) > * Fixed issue where a stringvec of 16 items was mishandled as a > matrix. #929 (1.5.3/1.4.13) > * OpenEXR 2.2 support, including the new DWAA/DWAB compression modes. > (1.5.4) > * Fix bug that prevented proper saving/reporting of subimage name > for multi-subimage OpenEXR files. (1.5.5). > * Fix read_deep_tiles() error when not starting at the image origin. > #1040 (1.6.0/1.5.10) > * Fix output of multi-part exr file when some parts are tiled and > others aren't. #1040 (1.6.0/1.5.10) > * JPEG: > * Fix broken recognition of .jfi extension. (#876) > * Read and write ICC profiles as attribute "ICCProfile". (#911) > * Fix seek_subimage for JPEG input -- did not properly return the > spec. (1.5.2/1.4.12) > * Support for reporting and controlling chroma-subsampling value, > via the "jpeg:subsampling" attribute. #978 (1.5.5) > * PNG: > * Read and write ICC profiles as attribute "ICCProfile". (#911) > * TIFF: > * Read and write ICC profiles as attribute "ICCProfile". (#911) > * Graceful handling of output of images with negative data window > origin. (1.5.3) > * Improved precision when auto-premultiplying 8 bit unassociated alpha > images (if the user is reading them into a higher-precision buffer). > #960, #962 (1.5.2) > * Change default compression (if otherwise unspecified) to "zip". (1.5.6) > * Robust to Exif blocks with corrupted GPS data. #1008 (1.5.8/1.4.16) > * Fixes to allow proper output of TIFF files with uint32 or int32 pixels > (1.5.8) > * RAW: > * Fix for portrait-orientation image reads. (#878) (1.5.1/1.4.10) > * Fix bug with "open with config" options. #996 (1.5.6) > * RLA: Fix bug that caused RLA output to not respect requests for 10 bit > output (would force it to 16 in that case). #899 (1.5.1) > * ImageSpec::get_float_attribute() is now better about retrieving values > that were stored as integers, even though you are querying them as > floats. (#862) (1.5.0/1.4.9) > * ImageCache fix for when files are not found, then subsequently the > searchpath is changed. #913 (1.4.12/1.5.2) > * Fixed some alloca calls that did not get the right amount of memory. > (#866) (1.5.0/1.4.9) > * Fix an off-by-one loop in IBA::resize that would not get the wrong > image result, but might trigger debuggers to flag it as touching the > wrong memory. (#868) (1.5.0/1.4.9) > * Better exception safety in Filesystem::scan_for_matching_filenames(). > #902 (1.5.1/1.4.11) > * Python: ImageBuf.get_pixels() is now implemented, was previously omitted. > (1.5.2) > * TextureSystem: anisotropic texture lookups are slightly sped up (~7%) > by using some approximate math (but not visibly different) #953. (1.5.5) > * Better exception safety in Filesystem::exists() and similar functions. > #1026 (1.5.8/1.4.16) > > Build/test system improvements: > * Fix several compiler warnings and build breakages for a variety of > platforms and compiler versions. (#858, #861) (1.5.0/1.4.8) > * Move around some cpack-related components. (#863) (1.5.0/1.4.9) > * Allow in-source build (not recommended, but necessary for Macports). > (#863) (1.5.0/1.4.9) > * Fixes to docs-building makefiles. (#873) (1.5.0/1.4.9) > * More robust build when OpenEXR and IlmBase have installed their > respective header files in different directories rather than the > expected behavior of being installed together. (#861) (1.5.0/1.4.9) > * Fix build break in DEBUG compiles for ustring internals. (#869) > (1.5.0/1.4.9) > * Fix warnings about potentially uninitialized variables. (#871) (1.5.0/1.4.9) > * Make thread.h use more modern gcc intrinsics when gcc >= 4.8, this > allows correct thread.h operations for PPC and MIPS platforms that > were't working before. (#865) (1.5.0/1.4.9) > * Fix Windows build when OIIO_STATIC_BUILD is used. (#872) (1.5.0/1.4.9) > * Fixes to get a clean compile on Windows + MSVC 9. (#859) (1.5.0/1.4.8) > * Fixes to get a clean compile on Windows + MSVC 9. (#872) (1.5.0/1.4.9) > * Make 3.0 compatibility fixes on OSX. (1.5.1/1.4.10) > * Fix segfaults on 32 bit systems with gcc 4.2. #889 (1.5.1/1.4.11) > * Fixes to Filesystem internals to work with older Boost releases older > than 1.45. #891 (1.5.1/1.4.11) > * Fixes to find libraw properly with Visual Studio 2010. #895 (1.5.1/1.4.11) > * Fix bad casts in thread.h that broke some platforms. #896 (1.5.1/1.4.11) > * Several fixes for Windows build, including properly finding OpenEXR > libraries when OpenEXR 2.1 is used. (1.5.1/1.4.11) > * Fixes to fmath.h to work with MSVC 2013 (some long-omitted math ops that > we'd always needed to define for Windows only are finally supported > in MSVC 2013). #912 (1.4.12/1.5.2) #927 (1.4.13/1.5.3) > * Fix for Linux + Boost >= 1.55 combination: need to link with -lrt. > #914 (1.4.12/1.5.2) > * Fix Ptex + static linkage. (1.4.12/1.5.2) > * Rudimentary support for C++11: building with USE_CPP11=1 tries to set > compiler flags (for gcc and clang, anyway) to use C++11 mode, and also > building with USE_LIBCPLUSPLUS=1 tries to link with libc++ if you are > using clang. (1.5.2) > * Fixes for Boost Filesystem 1.46-1.49. (1.5.2/1.4.12) > * testtex new options: --nchannels (forces num channels to look up, rather > than always doing what's in the file), --derivs (force the kind of texture > calls that return derivs of the texture lookups. (1.5.4) > * Make it able to compile against giflib >= 5.1. #975 (1.4.14/1.5.5) > * Add an option to link against static Ilmbase and OpenEXR libraries (1.5.5). > * Add testtex options -interpmode and -mipmode. #988 (1.5.6) > * Build against Python 3 if the make/cmake build flag USE_PYTHON3=1 is used. > (1.5.6) > * grid.tx and checker.tx have been moved from ../oiio/images to > testsuite/common/texture (allow it to be versioned along with any changes > to maketx. (1.5.7) > * Support for freetype 2.5.4. #1012 (1.5.8/1.4.16) > * Python plugin is now build as a cmake "module" rather than "library", > which fixes some things on OSX. #1043 (1.6.0/1.5.10) > > Developer goodies / internals: > * New Strutil string comparison functions: starts_with, ends_with. > (1.5.1/1.4.10) > * New Strutil simple parsing functions: skip_whitespace, parse_char, > parse_until_char, parse_prefix, parse_int, parse_float, parse_string, > parse_word, parse_identifier, parse_until. (1.5.1/1.4.10, 1.5.2/1.4.11) > * New Filesystem functions: create_directory, copy, remove, remove_all, > temp_directory_path, unique_path. (1.5.1/1.4.10) > * thread.h: add atomic_exchange() function. #898 (1.5.1/1.4.11) > * Improved error propagation through ImageCache, ImageBuf, and oiiotool. > (1.5.1) > * Moved certain platform-dependent macros from sysutil.h to platform.h > (1.5.4) > * ustring: add comparisons between ustrings versus char* and string_view. > (1.5.4) > * New simd.h exposes float4, int4, and mask4 classes that utilize SSE > instructions for big speedups. (1.5.5 / #948, #954, #955) > * Big reorganization of fmath.h, moved stuff around, organized, added lots > of safe_blah() functions that clamp to valid ranges and fast_blah() > functions that are approximations that may differ slightly several > decimal places in but are much faster than the full precision libm/IEEE > versions. #953, #956 (1.5.5) > * New utility function: premult(), which can premultiply non-alpha, non-z > channels by alpha, for a whole buffer (with strides, any data type). > #962 (1.5.5) > * Timer API now has queries for ticks as well as seconds. (1.5.5) > * platform.h now has macros to mark functions as pure, const, nothrow, > or unused. (1.5.5) > * Filesystem::read_text_file reads a whole text file into a string > efficiently. (1.5.8) > > > > > > -- > Larry Gritz > [email protected] > > > > _______________________________________________ > Oiio-dev mailing list > [email protected] > http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org -- Larry Gritz [email protected] _______________________________________________ Oiio-dev mailing list [email protected] http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org
