pkgsrc/graphics/openimageio/patches/patch-src_libutil_sysutil.cpp

65 lines
2.2 KiB
C++
Raw Normal View History

Update to 1.4.10 Changelog: Release 1.4.10 (20 Jun 2014 -- compared to 1.4.9) ------------------------------------------------- * Fix for portrait-orientation RAW image reads. (#878) * maketx: Fix case typo for LatLong env map creation when in 'prman' mode (#877). * New Strutil string comparison functions: starts_with, ends_with. * Make 3.0 compatibility fixes on OSX. * 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. * New Filesystem functions: create_directory, copy, remove, remove_all, temp_directory_path, unique_path. Release 1.4.9 (6 Jun 2014 -- compared to 1.4.8) ----------------------------------------------- * Allow in-source build (not recommended, but necessary for MacPorts). (#863) * CPack improvements. (#863) * Fixes to docs-building makefiles. (#873) * Make ImageSpec::get_float_attribute correctly convert many integer types. (#862) * Fixed some alloca calls that did not get the right amount of memory. (#866) * 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) * 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) * 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) * Fix build break in DEBUG compiles for ustring internals. (#869) * Fix warnings about potentially uninitialized variables. (#871) * 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) * Fix Windows build when OIIO_STATIC_BUILD is used. (#872) * Fixes to get a clean compile on Windows + MSVC 9. (#872) * New filters available to direct users of filter.{h,cpp} and for ImageBufAlgo, oiiotoo, and maketx: "cubic", "keys", "simon", "rifman". (#874) * OpenEXR: Fix potential build breaks due to incorrect use of Imf::isDeepData() which apparently was not intended to be an externally-visible function. (#875) * JPEG: Fix broken recognition of .jfi extension. (#876) Release 1.4.8 (23 May 2014 -- compared to 1.4.7) ------------------------------------------------ * Fix several compiler warnings and build breakages for a variety of platforms and compiler versions. No new feature or true bug fixes. #857, #858, #859 Release 1.4 (19 May 2014) -- compared to 1.3.x ---------------------------------------------- Major new features and improvements: * The PNM reader now supports "PFM" files, which are the floating point extension to PNM. (1.4.1) * Preliminary support for reading a wide variety of digital camera "RAW" files. (1.4.1) * New oiiotool commands: --cpow : raise pixel values to a power (1.4.1) --label : give a name to the top-of-stack image, can be referred to later in the command line (1.4.1) --cut : combine --crop, --origin +0+0, and --fullpixels. (1.4.3) --pdiff : perceptual diff (#815) (1.4.4) --polar, --unpolar : complex <-> polar conversion. (#831) (1.4.5) * oiiotool --resize and --fit, and also maketx when using "good" filters for downsizing, have been significantly sped up. When downsizing with large filters, we have seen up to 3x improvement. (#808) (1.4.3) Public API changes: * New ImageBufAlgo functions: - pow() raises pixel values to a power. (1.4.1) - cut() cuts a region of pixels and moves it to the origin (combines crop, reset origin, and set full res = data resolution). (1.4.3) - complex_to_polar() and polar_to_complex() convert from (real,imag) to (amplitude,phase) and back. (#831) (1.4.5) * New string_view class (in string_view.h) describes a non-owning reference to a string. The string_view is now used in many places throughout OIIO's APIs that used to pass parameters or return values as char* or std::string&. Read string_view.h for an explanation of why this is good. (1.4.2, 1.4.3) (N.B. this was called string_ref until 1.4.6, when it was renamed string_view to conform to C++17 draft nomenclature.) * New array_view<>, array_view_strided<>, strided_ptr<>, and image_view<> templates are great utility for passing bounded and strided arrays. (1.4.3) * Removed deprecated PT_* definitions from typedesc.h. * Removed the quantization-related fields from ImageSpec. (1.4.3) * Dither: If ImageOutput::open() is passed an ImageSpec containing the attribute "oiio:dither" and it is nonzero, then any write_*() calls that convert a floating point buffer to UINT8 output in the file will have a hashed dither added to the pixel values prior to quantization in order to prevent the appearance of visible banding. The specific nonzero value passed for the attribute will serve as a hash seed so that the pattern is repeatable (or not). (1.4.3) Fixes, minor enhancements, and performance improvements: * Improved oiiotool features: * --stats on deep files now prints additional info, such as the minimum and maximum depth and on which pixels they were encountered, as well as which pixel had the maximum number of depth samples. (1.4.1) * --resize and --resample allow WIDTHx0 or 0xHEIGHT, where the '0' value will be interpreted as automatically computing the missing dimension to preserve the aspect ratio of the source image. (#797, #807) (1.4.3) * Fixed possible crash when using --origin with tiled, cached images. (1.3.12/1.4.2) * --pdiff does a perceptual diff (like 'idiff -p'). (#815) (1.4.4) * --dumpdata takes a noptional modifier empty=0 that will cause empty deep pixels to not produce any output. (#821) (1.4.5) * --polar, --unpolar convert from complex (real,imag) to polar (amplitude, phase) and vice versa. (#831) (1.4.5) * View wildcards: similar to frame range wildcards, "%V" is replaced by new names, "%v" by the first letter of each view. The view list is {"left","right"} by default, but may be set with the --views argument. (1.4.5) * --over and --zover set the resulting display/full window to the union of those of the inputs; previously it set the display window to that of the foreground image, which is often a poor default. (1.4.7) * ImageCache/TextureSystem: - The multi-point version of environment() was broken. (1.3.9/1.4.1) - Don't honor the SHA-1 fingerprint found in a file if the "Software" metadata doesn't indicate that the file was written by maketx or oiiotool. (1.4.3) * OpenEXR: - Multi-part EXR (2.0) didn't write the required "name" attribute for each part. (1.3.10/1.4.1) - Fix crashing bug when reading stringvector attributes in the file. (1.3.11/1.4.2) - Add .sxr and .mxr as possible filename extensions (1.3.12/1.4.2) - Smarter channel ordering of input of files with ZBack, RA, GA, or BA channels (#822) (1.4.5). - Adhere to the misunderstood limitation that OpenEXR library doesn't allow random writes to scanline files. (1.4.6) - More robust with certain malformed metadata. (#841) (1.4.6) * TIFF: Give a more explicit error message for unsupported tile sizes (1.4.4) * GIF: Fixes to subimage generation; GIF frames are treated as sequential windows to be drawn on canvas rather than as independent images; respect "disposal" method; initial canvas is now transparent and all GIFs are presented as 4-channel images. (#828) (1.4.5) * iconvert: properly handle multi-image files for formats that can't append subimages. (1.3.10/1.4.1) * iv info window should print native file info, not translated ImageBuf/ImageCache info. (1.3.10/1.4.1) * Fix ImageCache::get_pixels() for the chbegin != 0 case, when cache and output buffer types were not identical. (1.3.10/1.4.1) * DPX: - Fixed several places in the where it could have had buffer overruns when processing certain malformed string fields. (1.4.1) - Fixed 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). (1.3.10/1.4.1) - For output, honor the "Software" metadata attribute passed in. (1.3.11/1.4.2) - Ignore negative image origin values, which are not allowed by the DPX spec which states they are unsigned. (#813) (1.4.4) - Fix improper handling of unsupported pixel data types. (#818) (1.4.5) - Accept pixel ratio (x/0) to mean 1.0, not NaN. (#834) (1.4.5/1.3.13) - Pad subimages to 8k boundaries, as suggested by the DPX spec (1.4.7) - Properly write "userdata" field to DPX files if set. (1.4.7) * PNG: - add "png:compressionlevel" and "compression" strategy attributes. (1.3.12/1.4.2) - output properly responds to "oiio:UnassociatedAlpha"=1 to indicate that the buffer is unassociated (not premultiplied) and therefore it should not automatically unpremultiply it. (1.4.5) * Make ImageBuf iterators return valid black pixel data for missing tiles. (1.3.12/1.4.2) * Make the ImageOutput implementations for all non-tiled file formats emulate tiles by accepting write_tile() calls and buffering the image until the close() call, at which point the scanlines will be output. (1.4.3) * All ImageBufAlgo functions, and oiiotool, strip any "oiio:SHA-1" hash values in the metadata in order not to confuse the TextureSystem. (1.4.3) * IFF: accept write_scanline, even though IFF is tile only. (1.4.3) * The implementation of the Lanczos filter (and any operations using it) have been sped up by using an approximate fast_sinpi instead of the more expensive sin() (1.4.3). * Speed up iinfo --hash / oiiotool --hash by about 20%. (#809) (1.4.4) * All format writer plugins: ensure that calling close() twice is safe. (#810) (1.4.4) * oiiotool --info and iinfo output have been altered slightly to make them match and be consistent. Also, oiiotool didn't say that deep files were deep (1.4.4). * Fixed bad bugs in IBA::flatten() and oiiotool --flatten. (#819) (1.4.5) * Fix Parameter neglect of properly copying the m_interp field for assignment and copy construction. (#829) (1.4.5/1.3.13) * Fix ImageBufAlgo::circular_shift (and oiiotool --cshift) that did not wrap correctly for negative shifts. (#832) (1.4.5/1.3.13) * The "gaussian" flter incorrectly had default width 2 (correct = 3), and the "mitchell" filter incorrect had default width 3 (correct = 4). These were bugs/typos, the new way is correct. If you were using those filters in ways that used the default width value, appearance may change slightly. (1.4.6) Build/test system improvements: * libOpenImageIO_Util is now built that only has the utility functions in libutil (in addition to the libOpenImageIO, which contains everything). This is handy for apps that want to use OIIO's utility functions (such as ustring or Filesystem) but doesn't really need any of the image stuff. A build flag BUILD_OIIOUTIL_ONLY=1 will cause only the util library to be built. (1.4.1) * New build option OIIO_THREAD_ALLOW_DCLP=0 will turn off an optimization in thread.h, resulting in possibly worse spin lock performance during heavy thread contention, but will no longer get false positive errors from Thread Sanitizer. The default is the old way, with full optimization! (1.4.1) * More robust detection of OpenEXR library filenames. (1.4.1) * Always reference OpenEXR and Imath headers as <OpenEXR/foo.h> rather than <foo.h>. (1.4.1) * Unit test strutil_test now comprehensively tests Strutil. (1.4.1) * Fix broken build when EMBEDPLUGINS=0. (1.4.3/1.3.13) * Fix broken build against OpenEXR 1.x. (1.4.3/1.3.13) * version.h has been renamed oiioversion.h. For back compatibility, there is still a version.h, but it merely includes oiioversion.h. (#811) (1.4.4) * Moved all the public header files from src/include to src/include/OpenImageIO, so that the src/include area more closely matches the layout of an OIIO install area. (#817) (1.4.4) * Fix compilation problems for PowerPC (#825). (1.4.5/1.3.13) * Fixes for OpenBSD compilation. (#826/#830) (1.4.5/1.3.13) * Fixes for Linux compilation when building with BUILDSTATIC=1. (1.4.6) * Fixes for compilation against IlmBase/OpenEXR 2.1. (1.4.6) * Improve finding of Freetype on some systems (1.4.6). * Add to top level Makefile the option STOP_ON_WARNING=0 to let it cleanly compile code that generates compiler warnings, without stopping the build. (1.4.7) Developer goodies / internals: * TBB has been removed completely. (1.4.2) * Slightly faster timer queries in timer.h for OSX and Windows. (1.4.1) * Strutil : - safe_strcpy() -- like strncpy, but copies the terminating 0 char. (1.4.1) - split() fixes bug when maxsplit is not the default value. (1.3.10/1.4.1) * ParamValue/ParamValueList : - ParamValue now allows get/set of the internal 'interp' field. (1.3.9/1.4.1) - ParamValueList::push_back is not properly const-ified. (1.4.1) - New PVL::find() lets you search on the PVL. (1.4.6) * fmath.h : - New fast_sin, fast_cos, fast_sinpi, fast_cospi are much faster polynomial approximations (with max absolute error of ~0.001). (1.4.3) - round_to_multiple_of_pow2 - a faster version of the existing round_to_multiple(), but only works when the multiple is known to be a power of 2. (1.4.6) * TypeDesc now has operator<, which makes it easier to use STL data structures and algorithms that expect an ordering, using TypeDesc as a key. (1.4.6) * thread.h - Slight thread.h portability tweaks. (1.4.1) - spin_rw_lock now has more standard lock()/unlock() as synonym for for exclusive/write lock, and lock_shared()/unlock_shared() as synonym for "read" locks. (1.4.6) * ustring : - new ustringLess and ustringHashIsLess functors make it easier to use ustring as keys in STL data structures and algorithms that require an ordering function. (1.4.6) - improve thread performance significantly by using an unordered_map_concurrent internally for the ustring table. (1.4.6) * unordered_map_concurrent.h : - Allow umc template to specify a different underlying map for the bins. (1.4.6) - Add retrieve() method that's slightly faster than find() when you just need a value, not an iterator. (1.4.6) - Align bins to cache lines for improved thread performance. (1.4.6) * ImageBuf iterators have a new rerange() method that resets the iteration range, without changing images or constructing a new iterator. (1.4.6) Release 1.3.14 (19 May 2014 -- compared to 1.3.13) -------------------------------------------------- * OpenEXR output: More robust with certain malformed metadata. (#841) (1.4.6) * Rename the string_ref class to string_view. (This is unused in OIIO, it is for compatibility with OSL.) * Build fixes on Linux when using BUILDSTATIC=1. * Add round_to_multiple_of_pow2 to fmath.h * Add STOP_ON_WARNING option to the top level Makeile wrapper. * Add documentation on the Python binding for IBA::cut. * oiiotool --over and --zover now set the output image's display window to the union of the inputs' display window, rather than to the foreground.
2014-07-09 22:00:01 +02:00
$NetBSD: patch-src_libutil_sysutil.cpp,v 1.2 2014/07/09 20:00:01 ryoon Exp $
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++).
2014-04-07 14:15:55 +02:00
Update to 1.4.10 Changelog: Release 1.4.10 (20 Jun 2014 -- compared to 1.4.9) ------------------------------------------------- * Fix for portrait-orientation RAW image reads. (#878) * maketx: Fix case typo for LatLong env map creation when in 'prman' mode (#877). * New Strutil string comparison functions: starts_with, ends_with. * Make 3.0 compatibility fixes on OSX. * 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. * New Filesystem functions: create_directory, copy, remove, remove_all, temp_directory_path, unique_path. Release 1.4.9 (6 Jun 2014 -- compared to 1.4.8) ----------------------------------------------- * Allow in-source build (not recommended, but necessary for MacPorts). (#863) * CPack improvements. (#863) * Fixes to docs-building makefiles. (#873) * Make ImageSpec::get_float_attribute correctly convert many integer types. (#862) * Fixed some alloca calls that did not get the right amount of memory. (#866) * 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) * 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) * 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) * Fix build break in DEBUG compiles for ustring internals. (#869) * Fix warnings about potentially uninitialized variables. (#871) * 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) * Fix Windows build when OIIO_STATIC_BUILD is used. (#872) * Fixes to get a clean compile on Windows + MSVC 9. (#872) * New filters available to direct users of filter.{h,cpp} and for ImageBufAlgo, oiiotoo, and maketx: "cubic", "keys", "simon", "rifman". (#874) * OpenEXR: Fix potential build breaks due to incorrect use of Imf::isDeepData() which apparently was not intended to be an externally-visible function. (#875) * JPEG: Fix broken recognition of .jfi extension. (#876) Release 1.4.8 (23 May 2014 -- compared to 1.4.7) ------------------------------------------------ * Fix several compiler warnings and build breakages for a variety of platforms and compiler versions. No new feature or true bug fixes. #857, #858, #859 Release 1.4 (19 May 2014) -- compared to 1.3.x ---------------------------------------------- Major new features and improvements: * The PNM reader now supports "PFM" files, which are the floating point extension to PNM. (1.4.1) * Preliminary support for reading a wide variety of digital camera "RAW" files. (1.4.1) * New oiiotool commands: --cpow : raise pixel values to a power (1.4.1) --label : give a name to the top-of-stack image, can be referred to later in the command line (1.4.1) --cut : combine --crop, --origin +0+0, and --fullpixels. (1.4.3) --pdiff : perceptual diff (#815) (1.4.4) --polar, --unpolar : complex <-> polar conversion. (#831) (1.4.5) * oiiotool --resize and --fit, and also maketx when using "good" filters for downsizing, have been significantly sped up. When downsizing with large filters, we have seen up to 3x improvement. (#808) (1.4.3) Public API changes: * New ImageBufAlgo functions: - pow() raises pixel values to a power. (1.4.1) - cut() cuts a region of pixels and moves it to the origin (combines crop, reset origin, and set full res = data resolution). (1.4.3) - complex_to_polar() and polar_to_complex() convert from (real,imag) to (amplitude,phase) and back. (#831) (1.4.5) * New string_view class (in string_view.h) describes a non-owning reference to a string. The string_view is now used in many places throughout OIIO's APIs that used to pass parameters or return values as char* or std::string&. Read string_view.h for an explanation of why this is good. (1.4.2, 1.4.3) (N.B. this was called string_ref until 1.4.6, when it was renamed string_view to conform to C++17 draft nomenclature.) * New array_view<>, array_view_strided<>, strided_ptr<>, and image_view<> templates are great utility for passing bounded and strided arrays. (1.4.3) * Removed deprecated PT_* definitions from typedesc.h. * Removed the quantization-related fields from ImageSpec. (1.4.3) * Dither: If ImageOutput::open() is passed an ImageSpec containing the attribute "oiio:dither" and it is nonzero, then any write_*() calls that convert a floating point buffer to UINT8 output in the file will have a hashed dither added to the pixel values prior to quantization in order to prevent the appearance of visible banding. The specific nonzero value passed for the attribute will serve as a hash seed so that the pattern is repeatable (or not). (1.4.3) Fixes, minor enhancements, and performance improvements: * Improved oiiotool features: * --stats on deep files now prints additional info, such as the minimum and maximum depth and on which pixels they were encountered, as well as which pixel had the maximum number of depth samples. (1.4.1) * --resize and --resample allow WIDTHx0 or 0xHEIGHT, where the '0' value will be interpreted as automatically computing the missing dimension to preserve the aspect ratio of the source image. (#797, #807) (1.4.3) * Fixed possible crash when using --origin with tiled, cached images. (1.3.12/1.4.2) * --pdiff does a perceptual diff (like 'idiff -p'). (#815) (1.4.4) * --dumpdata takes a noptional modifier empty=0 that will cause empty deep pixels to not produce any output. (#821) (1.4.5) * --polar, --unpolar convert from complex (real,imag) to polar (amplitude, phase) and vice versa. (#831) (1.4.5) * View wildcards: similar to frame range wildcards, "%V" is replaced by new names, "%v" by the first letter of each view. The view list is {"left","right"} by default, but may be set with the --views argument. (1.4.5) * --over and --zover set the resulting display/full window to the union of those of the inputs; previously it set the display window to that of the foreground image, which is often a poor default. (1.4.7) * ImageCache/TextureSystem: - The multi-point version of environment() was broken. (1.3.9/1.4.1) - Don't honor the SHA-1 fingerprint found in a file if the "Software" metadata doesn't indicate that the file was written by maketx or oiiotool. (1.4.3) * OpenEXR: - Multi-part EXR (2.0) didn't write the required "name" attribute for each part. (1.3.10/1.4.1) - Fix crashing bug when reading stringvector attributes in the file. (1.3.11/1.4.2) - Add .sxr and .mxr as possible filename extensions (1.3.12/1.4.2) - Smarter channel ordering of input of files with ZBack, RA, GA, or BA channels (#822) (1.4.5). - Adhere to the misunderstood limitation that OpenEXR library doesn't allow random writes to scanline files. (1.4.6) - More robust with certain malformed metadata. (#841) (1.4.6) * TIFF: Give a more explicit error message for unsupported tile sizes (1.4.4) * GIF: Fixes to subimage generation; GIF frames are treated as sequential windows to be drawn on canvas rather than as independent images; respect "disposal" method; initial canvas is now transparent and all GIFs are presented as 4-channel images. (#828) (1.4.5) * iconvert: properly handle multi-image files for formats that can't append subimages. (1.3.10/1.4.1) * iv info window should print native file info, not translated ImageBuf/ImageCache info. (1.3.10/1.4.1) * Fix ImageCache::get_pixels() for the chbegin != 0 case, when cache and output buffer types were not identical. (1.3.10/1.4.1) * DPX: - Fixed several places in the where it could have had buffer overruns when processing certain malformed string fields. (1.4.1) - Fixed 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). (1.3.10/1.4.1) - For output, honor the "Software" metadata attribute passed in. (1.3.11/1.4.2) - Ignore negative image origin values, which are not allowed by the DPX spec which states they are unsigned. (#813) (1.4.4) - Fix improper handling of unsupported pixel data types. (#818) (1.4.5) - Accept pixel ratio (x/0) to mean 1.0, not NaN. (#834) (1.4.5/1.3.13) - Pad subimages to 8k boundaries, as suggested by the DPX spec (1.4.7) - Properly write "userdata" field to DPX files if set. (1.4.7) * PNG: - add "png:compressionlevel" and "compression" strategy attributes. (1.3.12/1.4.2) - output properly responds to "oiio:UnassociatedAlpha"=1 to indicate that the buffer is unassociated (not premultiplied) and therefore it should not automatically unpremultiply it. (1.4.5) * Make ImageBuf iterators return valid black pixel data for missing tiles. (1.3.12/1.4.2) * Make the ImageOutput implementations for all non-tiled file formats emulate tiles by accepting write_tile() calls and buffering the image until the close() call, at which point the scanlines will be output. (1.4.3) * All ImageBufAlgo functions, and oiiotool, strip any "oiio:SHA-1" hash values in the metadata in order not to confuse the TextureSystem. (1.4.3) * IFF: accept write_scanline, even though IFF is tile only. (1.4.3) * The implementation of the Lanczos filter (and any operations using it) have been sped up by using an approximate fast_sinpi instead of the more expensive sin() (1.4.3). * Speed up iinfo --hash / oiiotool --hash by about 20%. (#809) (1.4.4) * All format writer plugins: ensure that calling close() twice is safe. (#810) (1.4.4) * oiiotool --info and iinfo output have been altered slightly to make them match and be consistent. Also, oiiotool didn't say that deep files were deep (1.4.4). * Fixed bad bugs in IBA::flatten() and oiiotool --flatten. (#819) (1.4.5) * Fix Parameter neglect of properly copying the m_interp field for assignment and copy construction. (#829) (1.4.5/1.3.13) * Fix ImageBufAlgo::circular_shift (and oiiotool --cshift) that did not wrap correctly for negative shifts. (#832) (1.4.5/1.3.13) * The "gaussian" flter incorrectly had default width 2 (correct = 3), and the "mitchell" filter incorrect had default width 3 (correct = 4). These were bugs/typos, the new way is correct. If you were using those filters in ways that used the default width value, appearance may change slightly. (1.4.6) Build/test system improvements: * libOpenImageIO_Util is now built that only has the utility functions in libutil (in addition to the libOpenImageIO, which contains everything). This is handy for apps that want to use OIIO's utility functions (such as ustring or Filesystem) but doesn't really need any of the image stuff. A build flag BUILD_OIIOUTIL_ONLY=1 will cause only the util library to be built. (1.4.1) * New build option OIIO_THREAD_ALLOW_DCLP=0 will turn off an optimization in thread.h, resulting in possibly worse spin lock performance during heavy thread contention, but will no longer get false positive errors from Thread Sanitizer. The default is the old way, with full optimization! (1.4.1) * More robust detection of OpenEXR library filenames. (1.4.1) * Always reference OpenEXR and Imath headers as <OpenEXR/foo.h> rather than <foo.h>. (1.4.1) * Unit test strutil_test now comprehensively tests Strutil. (1.4.1) * Fix broken build when EMBEDPLUGINS=0. (1.4.3/1.3.13) * Fix broken build against OpenEXR 1.x. (1.4.3/1.3.13) * version.h has been renamed oiioversion.h. For back compatibility, there is still a version.h, but it merely includes oiioversion.h. (#811) (1.4.4) * Moved all the public header files from src/include to src/include/OpenImageIO, so that the src/include area more closely matches the layout of an OIIO install area. (#817) (1.4.4) * Fix compilation problems for PowerPC (#825). (1.4.5/1.3.13) * Fixes for OpenBSD compilation. (#826/#830) (1.4.5/1.3.13) * Fixes for Linux compilation when building with BUILDSTATIC=1. (1.4.6) * Fixes for compilation against IlmBase/OpenEXR 2.1. (1.4.6) * Improve finding of Freetype on some systems (1.4.6). * Add to top level Makefile the option STOP_ON_WARNING=0 to let it cleanly compile code that generates compiler warnings, without stopping the build. (1.4.7) Developer goodies / internals: * TBB has been removed completely. (1.4.2) * Slightly faster timer queries in timer.h for OSX and Windows. (1.4.1) * Strutil : - safe_strcpy() -- like strncpy, but copies the terminating 0 char. (1.4.1) - split() fixes bug when maxsplit is not the default value. (1.3.10/1.4.1) * ParamValue/ParamValueList : - ParamValue now allows get/set of the internal 'interp' field. (1.3.9/1.4.1) - ParamValueList::push_back is not properly const-ified. (1.4.1) - New PVL::find() lets you search on the PVL. (1.4.6) * fmath.h : - New fast_sin, fast_cos, fast_sinpi, fast_cospi are much faster polynomial approximations (with max absolute error of ~0.001). (1.4.3) - round_to_multiple_of_pow2 - a faster version of the existing round_to_multiple(), but only works when the multiple is known to be a power of 2. (1.4.6) * TypeDesc now has operator<, which makes it easier to use STL data structures and algorithms that expect an ordering, using TypeDesc as a key. (1.4.6) * thread.h - Slight thread.h portability tweaks. (1.4.1) - spin_rw_lock now has more standard lock()/unlock() as synonym for for exclusive/write lock, and lock_shared()/unlock_shared() as synonym for "read" locks. (1.4.6) * ustring : - new ustringLess and ustringHashIsLess functors make it easier to use ustring as keys in STL data structures and algorithms that require an ordering function. (1.4.6) - improve thread performance significantly by using an unordered_map_concurrent internally for the ustring table. (1.4.6) * unordered_map_concurrent.h : - Allow umc template to specify a different underlying map for the bins. (1.4.6) - Add retrieve() method that's slightly faster than find() when you just need a value, not an iterator. (1.4.6) - Align bins to cache lines for improved thread performance. (1.4.6) * ImageBuf iterators have a new rerange() method that resets the iteration range, without changing images or constructing a new iterator. (1.4.6) Release 1.3.14 (19 May 2014 -- compared to 1.3.13) -------------------------------------------------- * OpenEXR output: More robust with certain malformed metadata. (#841) (1.4.6) * Rename the string_ref class to string_view. (This is unused in OIIO, it is for compatibility with OSL.) * Build fixes on Linux when using BUILDSTATIC=1. * Add round_to_multiple_of_pow2 to fmath.h * Add STOP_ON_WARNING option to the top level Makeile wrapper. * Add documentation on the Python binding for IBA::cut. * oiiotool --over and --zover now set the output image's display window to the union of the inputs' display window, rather than to the foreground.
2014-07-09 22:00:01 +02:00
--- src/libutil/sysutil.cpp.orig 2014-06-21 06:21:09.000000000 +0000
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++).
2014-04-07 14:15:55 +02:00
+++ src/libutil/sysutil.cpp
@@ -70,6 +70,12 @@
# include <sys/ioctl.h>
#endif
+#ifdef __NetBSD__
+# include <unistd.h>
+# include <sys/ioctl.h>
+# include <sys/sysctl.h>
+#endif
+
Update to 1.4.10 Changelog: Release 1.4.10 (20 Jun 2014 -- compared to 1.4.9) ------------------------------------------------- * Fix for portrait-orientation RAW image reads. (#878) * maketx: Fix case typo for LatLong env map creation when in 'prman' mode (#877). * New Strutil string comparison functions: starts_with, ends_with. * Make 3.0 compatibility fixes on OSX. * 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. * New Filesystem functions: create_directory, copy, remove, remove_all, temp_directory_path, unique_path. Release 1.4.9 (6 Jun 2014 -- compared to 1.4.8) ----------------------------------------------- * Allow in-source build (not recommended, but necessary for MacPorts). (#863) * CPack improvements. (#863) * Fixes to docs-building makefiles. (#873) * Make ImageSpec::get_float_attribute correctly convert many integer types. (#862) * Fixed some alloca calls that did not get the right amount of memory. (#866) * 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) * 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) * 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) * Fix build break in DEBUG compiles for ustring internals. (#869) * Fix warnings about potentially uninitialized variables. (#871) * 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) * Fix Windows build when OIIO_STATIC_BUILD is used. (#872) * Fixes to get a clean compile on Windows + MSVC 9. (#872) * New filters available to direct users of filter.{h,cpp} and for ImageBufAlgo, oiiotoo, and maketx: "cubic", "keys", "simon", "rifman". (#874) * OpenEXR: Fix potential build breaks due to incorrect use of Imf::isDeepData() which apparently was not intended to be an externally-visible function. (#875) * JPEG: Fix broken recognition of .jfi extension. (#876) Release 1.4.8 (23 May 2014 -- compared to 1.4.7) ------------------------------------------------ * Fix several compiler warnings and build breakages for a variety of platforms and compiler versions. No new feature or true bug fixes. #857, #858, #859 Release 1.4 (19 May 2014) -- compared to 1.3.x ---------------------------------------------- Major new features and improvements: * The PNM reader now supports "PFM" files, which are the floating point extension to PNM. (1.4.1) * Preliminary support for reading a wide variety of digital camera "RAW" files. (1.4.1) * New oiiotool commands: --cpow : raise pixel values to a power (1.4.1) --label : give a name to the top-of-stack image, can be referred to later in the command line (1.4.1) --cut : combine --crop, --origin +0+0, and --fullpixels. (1.4.3) --pdiff : perceptual diff (#815) (1.4.4) --polar, --unpolar : complex <-> polar conversion. (#831) (1.4.5) * oiiotool --resize and --fit, and also maketx when using "good" filters for downsizing, have been significantly sped up. When downsizing with large filters, we have seen up to 3x improvement. (#808) (1.4.3) Public API changes: * New ImageBufAlgo functions: - pow() raises pixel values to a power. (1.4.1) - cut() cuts a region of pixels and moves it to the origin (combines crop, reset origin, and set full res = data resolution). (1.4.3) - complex_to_polar() and polar_to_complex() convert from (real,imag) to (amplitude,phase) and back. (#831) (1.4.5) * New string_view class (in string_view.h) describes a non-owning reference to a string. The string_view is now used in many places throughout OIIO's APIs that used to pass parameters or return values as char* or std::string&. Read string_view.h for an explanation of why this is good. (1.4.2, 1.4.3) (N.B. this was called string_ref until 1.4.6, when it was renamed string_view to conform to C++17 draft nomenclature.) * New array_view<>, array_view_strided<>, strided_ptr<>, and image_view<> templates are great utility for passing bounded and strided arrays. (1.4.3) * Removed deprecated PT_* definitions from typedesc.h. * Removed the quantization-related fields from ImageSpec. (1.4.3) * Dither: If ImageOutput::open() is passed an ImageSpec containing the attribute "oiio:dither" and it is nonzero, then any write_*() calls that convert a floating point buffer to UINT8 output in the file will have a hashed dither added to the pixel values prior to quantization in order to prevent the appearance of visible banding. The specific nonzero value passed for the attribute will serve as a hash seed so that the pattern is repeatable (or not). (1.4.3) Fixes, minor enhancements, and performance improvements: * Improved oiiotool features: * --stats on deep files now prints additional info, such as the minimum and maximum depth and on which pixels they were encountered, as well as which pixel had the maximum number of depth samples. (1.4.1) * --resize and --resample allow WIDTHx0 or 0xHEIGHT, where the '0' value will be interpreted as automatically computing the missing dimension to preserve the aspect ratio of the source image. (#797, #807) (1.4.3) * Fixed possible crash when using --origin with tiled, cached images. (1.3.12/1.4.2) * --pdiff does a perceptual diff (like 'idiff -p'). (#815) (1.4.4) * --dumpdata takes a noptional modifier empty=0 that will cause empty deep pixels to not produce any output. (#821) (1.4.5) * --polar, --unpolar convert from complex (real,imag) to polar (amplitude, phase) and vice versa. (#831) (1.4.5) * View wildcards: similar to frame range wildcards, "%V" is replaced by new names, "%v" by the first letter of each view. The view list is {"left","right"} by default, but may be set with the --views argument. (1.4.5) * --over and --zover set the resulting display/full window to the union of those of the inputs; previously it set the display window to that of the foreground image, which is often a poor default. (1.4.7) * ImageCache/TextureSystem: - The multi-point version of environment() was broken. (1.3.9/1.4.1) - Don't honor the SHA-1 fingerprint found in a file if the "Software" metadata doesn't indicate that the file was written by maketx or oiiotool. (1.4.3) * OpenEXR: - Multi-part EXR (2.0) didn't write the required "name" attribute for each part. (1.3.10/1.4.1) - Fix crashing bug when reading stringvector attributes in the file. (1.3.11/1.4.2) - Add .sxr and .mxr as possible filename extensions (1.3.12/1.4.2) - Smarter channel ordering of input of files with ZBack, RA, GA, or BA channels (#822) (1.4.5). - Adhere to the misunderstood limitation that OpenEXR library doesn't allow random writes to scanline files. (1.4.6) - More robust with certain malformed metadata. (#841) (1.4.6) * TIFF: Give a more explicit error message for unsupported tile sizes (1.4.4) * GIF: Fixes to subimage generation; GIF frames are treated as sequential windows to be drawn on canvas rather than as independent images; respect "disposal" method; initial canvas is now transparent and all GIFs are presented as 4-channel images. (#828) (1.4.5) * iconvert: properly handle multi-image files for formats that can't append subimages. (1.3.10/1.4.1) * iv info window should print native file info, not translated ImageBuf/ImageCache info. (1.3.10/1.4.1) * Fix ImageCache::get_pixels() for the chbegin != 0 case, when cache and output buffer types were not identical. (1.3.10/1.4.1) * DPX: - Fixed several places in the where it could have had buffer overruns when processing certain malformed string fields. (1.4.1) - Fixed 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). (1.3.10/1.4.1) - For output, honor the "Software" metadata attribute passed in. (1.3.11/1.4.2) - Ignore negative image origin values, which are not allowed by the DPX spec which states they are unsigned. (#813) (1.4.4) - Fix improper handling of unsupported pixel data types. (#818) (1.4.5) - Accept pixel ratio (x/0) to mean 1.0, not NaN. (#834) (1.4.5/1.3.13) - Pad subimages to 8k boundaries, as suggested by the DPX spec (1.4.7) - Properly write "userdata" field to DPX files if set. (1.4.7) * PNG: - add "png:compressionlevel" and "compression" strategy attributes. (1.3.12/1.4.2) - output properly responds to "oiio:UnassociatedAlpha"=1 to indicate that the buffer is unassociated (not premultiplied) and therefore it should not automatically unpremultiply it. (1.4.5) * Make ImageBuf iterators return valid black pixel data for missing tiles. (1.3.12/1.4.2) * Make the ImageOutput implementations for all non-tiled file formats emulate tiles by accepting write_tile() calls and buffering the image until the close() call, at which point the scanlines will be output. (1.4.3) * All ImageBufAlgo functions, and oiiotool, strip any "oiio:SHA-1" hash values in the metadata in order not to confuse the TextureSystem. (1.4.3) * IFF: accept write_scanline, even though IFF is tile only. (1.4.3) * The implementation of the Lanczos filter (and any operations using it) have been sped up by using an approximate fast_sinpi instead of the more expensive sin() (1.4.3). * Speed up iinfo --hash / oiiotool --hash by about 20%. (#809) (1.4.4) * All format writer plugins: ensure that calling close() twice is safe. (#810) (1.4.4) * oiiotool --info and iinfo output have been altered slightly to make them match and be consistent. Also, oiiotool didn't say that deep files were deep (1.4.4). * Fixed bad bugs in IBA::flatten() and oiiotool --flatten. (#819) (1.4.5) * Fix Parameter neglect of properly copying the m_interp field for assignment and copy construction. (#829) (1.4.5/1.3.13) * Fix ImageBufAlgo::circular_shift (and oiiotool --cshift) that did not wrap correctly for negative shifts. (#832) (1.4.5/1.3.13) * The "gaussian" flter incorrectly had default width 2 (correct = 3), and the "mitchell" filter incorrect had default width 3 (correct = 4). These were bugs/typos, the new way is correct. If you were using those filters in ways that used the default width value, appearance may change slightly. (1.4.6) Build/test system improvements: * libOpenImageIO_Util is now built that only has the utility functions in libutil (in addition to the libOpenImageIO, which contains everything). This is handy for apps that want to use OIIO's utility functions (such as ustring or Filesystem) but doesn't really need any of the image stuff. A build flag BUILD_OIIOUTIL_ONLY=1 will cause only the util library to be built. (1.4.1) * New build option OIIO_THREAD_ALLOW_DCLP=0 will turn off an optimization in thread.h, resulting in possibly worse spin lock performance during heavy thread contention, but will no longer get false positive errors from Thread Sanitizer. The default is the old way, with full optimization! (1.4.1) * More robust detection of OpenEXR library filenames. (1.4.1) * Always reference OpenEXR and Imath headers as <OpenEXR/foo.h> rather than <foo.h>. (1.4.1) * Unit test strutil_test now comprehensively tests Strutil. (1.4.1) * Fix broken build when EMBEDPLUGINS=0. (1.4.3/1.3.13) * Fix broken build against OpenEXR 1.x. (1.4.3/1.3.13) * version.h has been renamed oiioversion.h. For back compatibility, there is still a version.h, but it merely includes oiioversion.h. (#811) (1.4.4) * Moved all the public header files from src/include to src/include/OpenImageIO, so that the src/include area more closely matches the layout of an OIIO install area. (#817) (1.4.4) * Fix compilation problems for PowerPC (#825). (1.4.5/1.3.13) * Fixes for OpenBSD compilation. (#826/#830) (1.4.5/1.3.13) * Fixes for Linux compilation when building with BUILDSTATIC=1. (1.4.6) * Fixes for compilation against IlmBase/OpenEXR 2.1. (1.4.6) * Improve finding of Freetype on some systems (1.4.6). * Add to top level Makefile the option STOP_ON_WARNING=0 to let it cleanly compile code that generates compiler warnings, without stopping the build. (1.4.7) Developer goodies / internals: * TBB has been removed completely. (1.4.2) * Slightly faster timer queries in timer.h for OSX and Windows. (1.4.1) * Strutil : - safe_strcpy() -- like strncpy, but copies the terminating 0 char. (1.4.1) - split() fixes bug when maxsplit is not the default value. (1.3.10/1.4.1) * ParamValue/ParamValueList : - ParamValue now allows get/set of the internal 'interp' field. (1.3.9/1.4.1) - ParamValueList::push_back is not properly const-ified. (1.4.1) - New PVL::find() lets you search on the PVL. (1.4.6) * fmath.h : - New fast_sin, fast_cos, fast_sinpi, fast_cospi are much faster polynomial approximations (with max absolute error of ~0.001). (1.4.3) - round_to_multiple_of_pow2 - a faster version of the existing round_to_multiple(), but only works when the multiple is known to be a power of 2. (1.4.6) * TypeDesc now has operator<, which makes it easier to use STL data structures and algorithms that expect an ordering, using TypeDesc as a key. (1.4.6) * thread.h - Slight thread.h portability tweaks. (1.4.1) - spin_rw_lock now has more standard lock()/unlock() as synonym for for exclusive/write lock, and lock_shared()/unlock_shared() as synonym for "read" locks. (1.4.6) * ustring : - new ustringLess and ustringHashIsLess functors make it easier to use ustring as keys in STL data structures and algorithms that require an ordering function. (1.4.6) - improve thread performance significantly by using an unordered_map_concurrent internally for the ustring table. (1.4.6) * unordered_map_concurrent.h : - Allow umc template to specify a different underlying map for the bins. (1.4.6) - Add retrieve() method that's slightly faster than find() when you just need a value, not an iterator. (1.4.6) - Align bins to cache lines for improved thread performance. (1.4.6) * ImageBuf iterators have a new rerange() method that resets the iteration range, without changing images or constructing a new iterator. (1.4.6) Release 1.3.14 (19 May 2014 -- compared to 1.3.13) -------------------------------------------------- * OpenEXR output: More robust with certain malformed metadata. (#841) (1.4.6) * Rename the string_ref class to string_view. (This is unused in OIIO, it is for compatibility with OSL.) * Build fixes on Linux when using BUILDSTATIC=1. * Add round_to_multiple_of_pow2 to fmath.h * Add STOP_ON_WARNING option to the top level Makeile wrapper. * Add documentation on the Python binding for IBA::cut. * oiiotool --over and --zover now set the output image's display window to the union of the inputs' display window, rather than to the foreground.
2014-07-09 22:00:01 +02:00
#include "OpenImageIO/dassert.h"
#include "OpenImageIO/sysutil.h"
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++).
2014-04-07 14:15:55 +02:00
Update to 1.4.10 Changelog: Release 1.4.10 (20 Jun 2014 -- compared to 1.4.9) ------------------------------------------------- * Fix for portrait-orientation RAW image reads. (#878) * maketx: Fix case typo for LatLong env map creation when in 'prman' mode (#877). * New Strutil string comparison functions: starts_with, ends_with. * Make 3.0 compatibility fixes on OSX. * 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. * New Filesystem functions: create_directory, copy, remove, remove_all, temp_directory_path, unique_path. Release 1.4.9 (6 Jun 2014 -- compared to 1.4.8) ----------------------------------------------- * Allow in-source build (not recommended, but necessary for MacPorts). (#863) * CPack improvements. (#863) * Fixes to docs-building makefiles. (#873) * Make ImageSpec::get_float_attribute correctly convert many integer types. (#862) * Fixed some alloca calls that did not get the right amount of memory. (#866) * 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) * 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) * 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) * Fix build break in DEBUG compiles for ustring internals. (#869) * Fix warnings about potentially uninitialized variables. (#871) * 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) * Fix Windows build when OIIO_STATIC_BUILD is used. (#872) * Fixes to get a clean compile on Windows + MSVC 9. (#872) * New filters available to direct users of filter.{h,cpp} and for ImageBufAlgo, oiiotoo, and maketx: "cubic", "keys", "simon", "rifman". (#874) * OpenEXR: Fix potential build breaks due to incorrect use of Imf::isDeepData() which apparently was not intended to be an externally-visible function. (#875) * JPEG: Fix broken recognition of .jfi extension. (#876) Release 1.4.8 (23 May 2014 -- compared to 1.4.7) ------------------------------------------------ * Fix several compiler warnings and build breakages for a variety of platforms and compiler versions. No new feature or true bug fixes. #857, #858, #859 Release 1.4 (19 May 2014) -- compared to 1.3.x ---------------------------------------------- Major new features and improvements: * The PNM reader now supports "PFM" files, which are the floating point extension to PNM. (1.4.1) * Preliminary support for reading a wide variety of digital camera "RAW" files. (1.4.1) * New oiiotool commands: --cpow : raise pixel values to a power (1.4.1) --label : give a name to the top-of-stack image, can be referred to later in the command line (1.4.1) --cut : combine --crop, --origin +0+0, and --fullpixels. (1.4.3) --pdiff : perceptual diff (#815) (1.4.4) --polar, --unpolar : complex <-> polar conversion. (#831) (1.4.5) * oiiotool --resize and --fit, and also maketx when using "good" filters for downsizing, have been significantly sped up. When downsizing with large filters, we have seen up to 3x improvement. (#808) (1.4.3) Public API changes: * New ImageBufAlgo functions: - pow() raises pixel values to a power. (1.4.1) - cut() cuts a region of pixels and moves it to the origin (combines crop, reset origin, and set full res = data resolution). (1.4.3) - complex_to_polar() and polar_to_complex() convert from (real,imag) to (amplitude,phase) and back. (#831) (1.4.5) * New string_view class (in string_view.h) describes a non-owning reference to a string. The string_view is now used in many places throughout OIIO's APIs that used to pass parameters or return values as char* or std::string&. Read string_view.h for an explanation of why this is good. (1.4.2, 1.4.3) (N.B. this was called string_ref until 1.4.6, when it was renamed string_view to conform to C++17 draft nomenclature.) * New array_view<>, array_view_strided<>, strided_ptr<>, and image_view<> templates are great utility for passing bounded and strided arrays. (1.4.3) * Removed deprecated PT_* definitions from typedesc.h. * Removed the quantization-related fields from ImageSpec. (1.4.3) * Dither: If ImageOutput::open() is passed an ImageSpec containing the attribute "oiio:dither" and it is nonzero, then any write_*() calls that convert a floating point buffer to UINT8 output in the file will have a hashed dither added to the pixel values prior to quantization in order to prevent the appearance of visible banding. The specific nonzero value passed for the attribute will serve as a hash seed so that the pattern is repeatable (or not). (1.4.3) Fixes, minor enhancements, and performance improvements: * Improved oiiotool features: * --stats on deep files now prints additional info, such as the minimum and maximum depth and on which pixels they were encountered, as well as which pixel had the maximum number of depth samples. (1.4.1) * --resize and --resample allow WIDTHx0 or 0xHEIGHT, where the '0' value will be interpreted as automatically computing the missing dimension to preserve the aspect ratio of the source image. (#797, #807) (1.4.3) * Fixed possible crash when using --origin with tiled, cached images. (1.3.12/1.4.2) * --pdiff does a perceptual diff (like 'idiff -p'). (#815) (1.4.4) * --dumpdata takes a noptional modifier empty=0 that will cause empty deep pixels to not produce any output. (#821) (1.4.5) * --polar, --unpolar convert from complex (real,imag) to polar (amplitude, phase) and vice versa. (#831) (1.4.5) * View wildcards: similar to frame range wildcards, "%V" is replaced by new names, "%v" by the first letter of each view. The view list is {"left","right"} by default, but may be set with the --views argument. (1.4.5) * --over and --zover set the resulting display/full window to the union of those of the inputs; previously it set the display window to that of the foreground image, which is often a poor default. (1.4.7) * ImageCache/TextureSystem: - The multi-point version of environment() was broken. (1.3.9/1.4.1) - Don't honor the SHA-1 fingerprint found in a file if the "Software" metadata doesn't indicate that the file was written by maketx or oiiotool. (1.4.3) * OpenEXR: - Multi-part EXR (2.0) didn't write the required "name" attribute for each part. (1.3.10/1.4.1) - Fix crashing bug when reading stringvector attributes in the file. (1.3.11/1.4.2) - Add .sxr and .mxr as possible filename extensions (1.3.12/1.4.2) - Smarter channel ordering of input of files with ZBack, RA, GA, or BA channels (#822) (1.4.5). - Adhere to the misunderstood limitation that OpenEXR library doesn't allow random writes to scanline files. (1.4.6) - More robust with certain malformed metadata. (#841) (1.4.6) * TIFF: Give a more explicit error message for unsupported tile sizes (1.4.4) * GIF: Fixes to subimage generation; GIF frames are treated as sequential windows to be drawn on canvas rather than as independent images; respect "disposal" method; initial canvas is now transparent and all GIFs are presented as 4-channel images. (#828) (1.4.5) * iconvert: properly handle multi-image files for formats that can't append subimages. (1.3.10/1.4.1) * iv info window should print native file info, not translated ImageBuf/ImageCache info. (1.3.10/1.4.1) * Fix ImageCache::get_pixels() for the chbegin != 0 case, when cache and output buffer types were not identical. (1.3.10/1.4.1) * DPX: - Fixed several places in the where it could have had buffer overruns when processing certain malformed string fields. (1.4.1) - Fixed 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). (1.3.10/1.4.1) - For output, honor the "Software" metadata attribute passed in. (1.3.11/1.4.2) - Ignore negative image origin values, which are not allowed by the DPX spec which states they are unsigned. (#813) (1.4.4) - Fix improper handling of unsupported pixel data types. (#818) (1.4.5) - Accept pixel ratio (x/0) to mean 1.0, not NaN. (#834) (1.4.5/1.3.13) - Pad subimages to 8k boundaries, as suggested by the DPX spec (1.4.7) - Properly write "userdata" field to DPX files if set. (1.4.7) * PNG: - add "png:compressionlevel" and "compression" strategy attributes. (1.3.12/1.4.2) - output properly responds to "oiio:UnassociatedAlpha"=1 to indicate that the buffer is unassociated (not premultiplied) and therefore it should not automatically unpremultiply it. (1.4.5) * Make ImageBuf iterators return valid black pixel data for missing tiles. (1.3.12/1.4.2) * Make the ImageOutput implementations for all non-tiled file formats emulate tiles by accepting write_tile() calls and buffering the image until the close() call, at which point the scanlines will be output. (1.4.3) * All ImageBufAlgo functions, and oiiotool, strip any "oiio:SHA-1" hash values in the metadata in order not to confuse the TextureSystem. (1.4.3) * IFF: accept write_scanline, even though IFF is tile only. (1.4.3) * The implementation of the Lanczos filter (and any operations using it) have been sped up by using an approximate fast_sinpi instead of the more expensive sin() (1.4.3). * Speed up iinfo --hash / oiiotool --hash by about 20%. (#809) (1.4.4) * All format writer plugins: ensure that calling close() twice is safe. (#810) (1.4.4) * oiiotool --info and iinfo output have been altered slightly to make them match and be consistent. Also, oiiotool didn't say that deep files were deep (1.4.4). * Fixed bad bugs in IBA::flatten() and oiiotool --flatten. (#819) (1.4.5) * Fix Parameter neglect of properly copying the m_interp field for assignment and copy construction. (#829) (1.4.5/1.3.13) * Fix ImageBufAlgo::circular_shift (and oiiotool --cshift) that did not wrap correctly for negative shifts. (#832) (1.4.5/1.3.13) * The "gaussian" flter incorrectly had default width 2 (correct = 3), and the "mitchell" filter incorrect had default width 3 (correct = 4). These were bugs/typos, the new way is correct. If you were using those filters in ways that used the default width value, appearance may change slightly. (1.4.6) Build/test system improvements: * libOpenImageIO_Util is now built that only has the utility functions in libutil (in addition to the libOpenImageIO, which contains everything). This is handy for apps that want to use OIIO's utility functions (such as ustring or Filesystem) but doesn't really need any of the image stuff. A build flag BUILD_OIIOUTIL_ONLY=1 will cause only the util library to be built. (1.4.1) * New build option OIIO_THREAD_ALLOW_DCLP=0 will turn off an optimization in thread.h, resulting in possibly worse spin lock performance during heavy thread contention, but will no longer get false positive errors from Thread Sanitizer. The default is the old way, with full optimization! (1.4.1) * More robust detection of OpenEXR library filenames. (1.4.1) * Always reference OpenEXR and Imath headers as <OpenEXR/foo.h> rather than <foo.h>. (1.4.1) * Unit test strutil_test now comprehensively tests Strutil. (1.4.1) * Fix broken build when EMBEDPLUGINS=0. (1.4.3/1.3.13) * Fix broken build against OpenEXR 1.x. (1.4.3/1.3.13) * version.h has been renamed oiioversion.h. For back compatibility, there is still a version.h, but it merely includes oiioversion.h. (#811) (1.4.4) * Moved all the public header files from src/include to src/include/OpenImageIO, so that the src/include area more closely matches the layout of an OIIO install area. (#817) (1.4.4) * Fix compilation problems for PowerPC (#825). (1.4.5/1.3.13) * Fixes for OpenBSD compilation. (#826/#830) (1.4.5/1.3.13) * Fixes for Linux compilation when building with BUILDSTATIC=1. (1.4.6) * Fixes for compilation against IlmBase/OpenEXR 2.1. (1.4.6) * Improve finding of Freetype on some systems (1.4.6). * Add to top level Makefile the option STOP_ON_WARNING=0 to let it cleanly compile code that generates compiler warnings, without stopping the build. (1.4.7) Developer goodies / internals: * TBB has been removed completely. (1.4.2) * Slightly faster timer queries in timer.h for OSX and Windows. (1.4.1) * Strutil : - safe_strcpy() -- like strncpy, but copies the terminating 0 char. (1.4.1) - split() fixes bug when maxsplit is not the default value. (1.3.10/1.4.1) * ParamValue/ParamValueList : - ParamValue now allows get/set of the internal 'interp' field. (1.3.9/1.4.1) - ParamValueList::push_back is not properly const-ified. (1.4.1) - New PVL::find() lets you search on the PVL. (1.4.6) * fmath.h : - New fast_sin, fast_cos, fast_sinpi, fast_cospi are much faster polynomial approximations (with max absolute error of ~0.001). (1.4.3) - round_to_multiple_of_pow2 - a faster version of the existing round_to_multiple(), but only works when the multiple is known to be a power of 2. (1.4.6) * TypeDesc now has operator<, which makes it easier to use STL data structures and algorithms that expect an ordering, using TypeDesc as a key. (1.4.6) * thread.h - Slight thread.h portability tweaks. (1.4.1) - spin_rw_lock now has more standard lock()/unlock() as synonym for for exclusive/write lock, and lock_shared()/unlock_shared() as synonym for "read" locks. (1.4.6) * ustring : - new ustringLess and ustringHashIsLess functors make it easier to use ustring as keys in STL data structures and algorithms that require an ordering function. (1.4.6) - improve thread performance significantly by using an unordered_map_concurrent internally for the ustring table. (1.4.6) * unordered_map_concurrent.h : - Allow umc template to specify a different underlying map for the bins. (1.4.6) - Add retrieve() method that's slightly faster than find() when you just need a value, not an iterator. (1.4.6) - Align bins to cache lines for improved thread performance. (1.4.6) * ImageBuf iterators have a new rerange() method that resets the iteration range, without changing images or constructing a new iterator. (1.4.6) Release 1.3.14 (19 May 2014 -- compared to 1.3.13) -------------------------------------------------- * OpenEXR output: More robust with certain malformed metadata. (#841) (1.4.6) * Rename the string_ref class to string_view. (This is unused in OIIO, it is for compatibility with OSL.) * Build fixes on Linux when using BUILDSTATIC=1. * Add round_to_multiple_of_pow2 to fmath.h * Add STOP_ON_WARNING option to the top level Makeile wrapper. * Add documentation on the Python binding for IBA::cut. * oiiotool --over and --zover now set the output image's display window to the union of the inputs' display window, rather than to the foreground.
2014-07-09 22:00:01 +02:00
@@ -108,6 +114,12 @@ Sysutil::memory_used (bool resident)
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++).
2014-04-07 14:15:55 +02:00
return size;
#endif
+#elif defined(__NetBSD__)
+ struct rusage ru;
+ if(getrusage (RUSAGE_SELF, &ru) == 0) {
+ return (size_t)ru.ru_maxrss * (size_t)1024;
+ }
+ exit(0);
#elif defined(__APPLE__)
// Inspired by:
// http://miknight.blogspot.com/2005/11/resident-set-size-in-mac-os-x.html
Update to 1.4.10 Changelog: Release 1.4.10 (20 Jun 2014 -- compared to 1.4.9) ------------------------------------------------- * Fix for portrait-orientation RAW image reads. (#878) * maketx: Fix case typo for LatLong env map creation when in 'prman' mode (#877). * New Strutil string comparison functions: starts_with, ends_with. * Make 3.0 compatibility fixes on OSX. * 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. * New Filesystem functions: create_directory, copy, remove, remove_all, temp_directory_path, unique_path. Release 1.4.9 (6 Jun 2014 -- compared to 1.4.8) ----------------------------------------------- * Allow in-source build (not recommended, but necessary for MacPorts). (#863) * CPack improvements. (#863) * Fixes to docs-building makefiles. (#873) * Make ImageSpec::get_float_attribute correctly convert many integer types. (#862) * Fixed some alloca calls that did not get the right amount of memory. (#866) * 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) * 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) * 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) * Fix build break in DEBUG compiles for ustring internals. (#869) * Fix warnings about potentially uninitialized variables. (#871) * 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) * Fix Windows build when OIIO_STATIC_BUILD is used. (#872) * Fixes to get a clean compile on Windows + MSVC 9. (#872) * New filters available to direct users of filter.{h,cpp} and for ImageBufAlgo, oiiotoo, and maketx: "cubic", "keys", "simon", "rifman". (#874) * OpenEXR: Fix potential build breaks due to incorrect use of Imf::isDeepData() which apparently was not intended to be an externally-visible function. (#875) * JPEG: Fix broken recognition of .jfi extension. (#876) Release 1.4.8 (23 May 2014 -- compared to 1.4.7) ------------------------------------------------ * Fix several compiler warnings and build breakages for a variety of platforms and compiler versions. No new feature or true bug fixes. #857, #858, #859 Release 1.4 (19 May 2014) -- compared to 1.3.x ---------------------------------------------- Major new features and improvements: * The PNM reader now supports "PFM" files, which are the floating point extension to PNM. (1.4.1) * Preliminary support for reading a wide variety of digital camera "RAW" files. (1.4.1) * New oiiotool commands: --cpow : raise pixel values to a power (1.4.1) --label : give a name to the top-of-stack image, can be referred to later in the command line (1.4.1) --cut : combine --crop, --origin +0+0, and --fullpixels. (1.4.3) --pdiff : perceptual diff (#815) (1.4.4) --polar, --unpolar : complex <-> polar conversion. (#831) (1.4.5) * oiiotool --resize and --fit, and also maketx when using "good" filters for downsizing, have been significantly sped up. When downsizing with large filters, we have seen up to 3x improvement. (#808) (1.4.3) Public API changes: * New ImageBufAlgo functions: - pow() raises pixel values to a power. (1.4.1) - cut() cuts a region of pixels and moves it to the origin (combines crop, reset origin, and set full res = data resolution). (1.4.3) - complex_to_polar() and polar_to_complex() convert from (real,imag) to (amplitude,phase) and back. (#831) (1.4.5) * New string_view class (in string_view.h) describes a non-owning reference to a string. The string_view is now used in many places throughout OIIO's APIs that used to pass parameters or return values as char* or std::string&. Read string_view.h for an explanation of why this is good. (1.4.2, 1.4.3) (N.B. this was called string_ref until 1.4.6, when it was renamed string_view to conform to C++17 draft nomenclature.) * New array_view<>, array_view_strided<>, strided_ptr<>, and image_view<> templates are great utility for passing bounded and strided arrays. (1.4.3) * Removed deprecated PT_* definitions from typedesc.h. * Removed the quantization-related fields from ImageSpec. (1.4.3) * Dither: If ImageOutput::open() is passed an ImageSpec containing the attribute "oiio:dither" and it is nonzero, then any write_*() calls that convert a floating point buffer to UINT8 output in the file will have a hashed dither added to the pixel values prior to quantization in order to prevent the appearance of visible banding. The specific nonzero value passed for the attribute will serve as a hash seed so that the pattern is repeatable (or not). (1.4.3) Fixes, minor enhancements, and performance improvements: * Improved oiiotool features: * --stats on deep files now prints additional info, such as the minimum and maximum depth and on which pixels they were encountered, as well as which pixel had the maximum number of depth samples. (1.4.1) * --resize and --resample allow WIDTHx0 or 0xHEIGHT, where the '0' value will be interpreted as automatically computing the missing dimension to preserve the aspect ratio of the source image. (#797, #807) (1.4.3) * Fixed possible crash when using --origin with tiled, cached images. (1.3.12/1.4.2) * --pdiff does a perceptual diff (like 'idiff -p'). (#815) (1.4.4) * --dumpdata takes a noptional modifier empty=0 that will cause empty deep pixels to not produce any output. (#821) (1.4.5) * --polar, --unpolar convert from complex (real,imag) to polar (amplitude, phase) and vice versa. (#831) (1.4.5) * View wildcards: similar to frame range wildcards, "%V" is replaced by new names, "%v" by the first letter of each view. The view list is {"left","right"} by default, but may be set with the --views argument. (1.4.5) * --over and --zover set the resulting display/full window to the union of those of the inputs; previously it set the display window to that of the foreground image, which is often a poor default. (1.4.7) * ImageCache/TextureSystem: - The multi-point version of environment() was broken. (1.3.9/1.4.1) - Don't honor the SHA-1 fingerprint found in a file if the "Software" metadata doesn't indicate that the file was written by maketx or oiiotool. (1.4.3) * OpenEXR: - Multi-part EXR (2.0) didn't write the required "name" attribute for each part. (1.3.10/1.4.1) - Fix crashing bug when reading stringvector attributes in the file. (1.3.11/1.4.2) - Add .sxr and .mxr as possible filename extensions (1.3.12/1.4.2) - Smarter channel ordering of input of files with ZBack, RA, GA, or BA channels (#822) (1.4.5). - Adhere to the misunderstood limitation that OpenEXR library doesn't allow random writes to scanline files. (1.4.6) - More robust with certain malformed metadata. (#841) (1.4.6) * TIFF: Give a more explicit error message for unsupported tile sizes (1.4.4) * GIF: Fixes to subimage generation; GIF frames are treated as sequential windows to be drawn on canvas rather than as independent images; respect "disposal" method; initial canvas is now transparent and all GIFs are presented as 4-channel images. (#828) (1.4.5) * iconvert: properly handle multi-image files for formats that can't append subimages. (1.3.10/1.4.1) * iv info window should print native file info, not translated ImageBuf/ImageCache info. (1.3.10/1.4.1) * Fix ImageCache::get_pixels() for the chbegin != 0 case, when cache and output buffer types were not identical. (1.3.10/1.4.1) * DPX: - Fixed several places in the where it could have had buffer overruns when processing certain malformed string fields. (1.4.1) - Fixed 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). (1.3.10/1.4.1) - For output, honor the "Software" metadata attribute passed in. (1.3.11/1.4.2) - Ignore negative image origin values, which are not allowed by the DPX spec which states they are unsigned. (#813) (1.4.4) - Fix improper handling of unsupported pixel data types. (#818) (1.4.5) - Accept pixel ratio (x/0) to mean 1.0, not NaN. (#834) (1.4.5/1.3.13) - Pad subimages to 8k boundaries, as suggested by the DPX spec (1.4.7) - Properly write "userdata" field to DPX files if set. (1.4.7) * PNG: - add "png:compressionlevel" and "compression" strategy attributes. (1.3.12/1.4.2) - output properly responds to "oiio:UnassociatedAlpha"=1 to indicate that the buffer is unassociated (not premultiplied) and therefore it should not automatically unpremultiply it. (1.4.5) * Make ImageBuf iterators return valid black pixel data for missing tiles. (1.3.12/1.4.2) * Make the ImageOutput implementations for all non-tiled file formats emulate tiles by accepting write_tile() calls and buffering the image until the close() call, at which point the scanlines will be output. (1.4.3) * All ImageBufAlgo functions, and oiiotool, strip any "oiio:SHA-1" hash values in the metadata in order not to confuse the TextureSystem. (1.4.3) * IFF: accept write_scanline, even though IFF is tile only. (1.4.3) * The implementation of the Lanczos filter (and any operations using it) have been sped up by using an approximate fast_sinpi instead of the more expensive sin() (1.4.3). * Speed up iinfo --hash / oiiotool --hash by about 20%. (#809) (1.4.4) * All format writer plugins: ensure that calling close() twice is safe. (#810) (1.4.4) * oiiotool --info and iinfo output have been altered slightly to make them match and be consistent. Also, oiiotool didn't say that deep files were deep (1.4.4). * Fixed bad bugs in IBA::flatten() and oiiotool --flatten. (#819) (1.4.5) * Fix Parameter neglect of properly copying the m_interp field for assignment and copy construction. (#829) (1.4.5/1.3.13) * Fix ImageBufAlgo::circular_shift (and oiiotool --cshift) that did not wrap correctly for negative shifts. (#832) (1.4.5/1.3.13) * The "gaussian" flter incorrectly had default width 2 (correct = 3), and the "mitchell" filter incorrect had default width 3 (correct = 4). These were bugs/typos, the new way is correct. If you were using those filters in ways that used the default width value, appearance may change slightly. (1.4.6) Build/test system improvements: * libOpenImageIO_Util is now built that only has the utility functions in libutil (in addition to the libOpenImageIO, which contains everything). This is handy for apps that want to use OIIO's utility functions (such as ustring or Filesystem) but doesn't really need any of the image stuff. A build flag BUILD_OIIOUTIL_ONLY=1 will cause only the util library to be built. (1.4.1) * New build option OIIO_THREAD_ALLOW_DCLP=0 will turn off an optimization in thread.h, resulting in possibly worse spin lock performance during heavy thread contention, but will no longer get false positive errors from Thread Sanitizer. The default is the old way, with full optimization! (1.4.1) * More robust detection of OpenEXR library filenames. (1.4.1) * Always reference OpenEXR and Imath headers as <OpenEXR/foo.h> rather than <foo.h>. (1.4.1) * Unit test strutil_test now comprehensively tests Strutil. (1.4.1) * Fix broken build when EMBEDPLUGINS=0. (1.4.3/1.3.13) * Fix broken build against OpenEXR 1.x. (1.4.3/1.3.13) * version.h has been renamed oiioversion.h. For back compatibility, there is still a version.h, but it merely includes oiioversion.h. (#811) (1.4.4) * Moved all the public header files from src/include to src/include/OpenImageIO, so that the src/include area more closely matches the layout of an OIIO install area. (#817) (1.4.4) * Fix compilation problems for PowerPC (#825). (1.4.5/1.3.13) * Fixes for OpenBSD compilation. (#826/#830) (1.4.5/1.3.13) * Fixes for Linux compilation when building with BUILDSTATIC=1. (1.4.6) * Fixes for compilation against IlmBase/OpenEXR 2.1. (1.4.6) * Improve finding of Freetype on some systems (1.4.6). * Add to top level Makefile the option STOP_ON_WARNING=0 to let it cleanly compile code that generates compiler warnings, without stopping the build. (1.4.7) Developer goodies / internals: * TBB has been removed completely. (1.4.2) * Slightly faster timer queries in timer.h for OSX and Windows. (1.4.1) * Strutil : - safe_strcpy() -- like strncpy, but copies the terminating 0 char. (1.4.1) - split() fixes bug when maxsplit is not the default value. (1.3.10/1.4.1) * ParamValue/ParamValueList : - ParamValue now allows get/set of the internal 'interp' field. (1.3.9/1.4.1) - ParamValueList::push_back is not properly const-ified. (1.4.1) - New PVL::find() lets you search on the PVL. (1.4.6) * fmath.h : - New fast_sin, fast_cos, fast_sinpi, fast_cospi are much faster polynomial approximations (with max absolute error of ~0.001). (1.4.3) - round_to_multiple_of_pow2 - a faster version of the existing round_to_multiple(), but only works when the multiple is known to be a power of 2. (1.4.6) * TypeDesc now has operator<, which makes it easier to use STL data structures and algorithms that expect an ordering, using TypeDesc as a key. (1.4.6) * thread.h - Slight thread.h portability tweaks. (1.4.1) - spin_rw_lock now has more standard lock()/unlock() as synonym for for exclusive/write lock, and lock_shared()/unlock_shared() as synonym for "read" locks. (1.4.6) * ustring : - new ustringLess and ustringHashIsLess functors make it easier to use ustring as keys in STL data structures and algorithms that require an ordering function. (1.4.6) - improve thread performance significantly by using an unordered_map_concurrent internally for the ustring table. (1.4.6) * unordered_map_concurrent.h : - Allow umc template to specify a different underlying map for the bins. (1.4.6) - Add retrieve() method that's slightly faster than find() when you just need a value, not an iterator. (1.4.6) - Align bins to cache lines for improved thread performance. (1.4.6) * ImageBuf iterators have a new rerange() method that resets the iteration range, without changing images or constructing a new iterator. (1.4.6) Release 1.3.14 (19 May 2014 -- compared to 1.3.13) -------------------------------------------------- * OpenEXR output: More robust with certain malformed metadata. (#841) (1.4.6) * Rename the string_ref class to string_view. (This is unused in OIIO, it is for compatibility with OSL.) * Build fixes on Linux when using BUILDSTATIC=1. * Add round_to_multiple_of_pow2 to fmath.h * Add STOP_ON_WARNING option to the top level Makeile wrapper. * Add documentation on the Python binding for IBA::cut. * oiiotool --over and --zover now set the output image's display window to the union of the inputs' display window, rather than to the foreground.
2014-07-09 22:00:01 +02:00
@@ -192,7 +204,12 @@ Sysutil::physical_memory ()
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++).
2014-04-07 14:15:55 +02:00
size_t length = sizeof(physical_memory);
sysctl (mib, 2, &physical_memory, &length, NULL, 0);
return physical_memory;
-
+#elif defined(__NetBSD__) || defined(__OpenBSD__)
+ int mib[1] = {HW_PHYSMEM64};
+ size_t physical_memory = 0;
+ size_t length = sizeof(physical_memory);
+ sysctl(mib, 2, &physical_memory, &length, NULL, 0);
+ return physical_memory;
#else
// No idea what platform this is
ASSERT (0 && "Need to implement Sysutil::physical_memory on this platform");
Update to 1.4.10 Changelog: Release 1.4.10 (20 Jun 2014 -- compared to 1.4.9) ------------------------------------------------- * Fix for portrait-orientation RAW image reads. (#878) * maketx: Fix case typo for LatLong env map creation when in 'prman' mode (#877). * New Strutil string comparison functions: starts_with, ends_with. * Make 3.0 compatibility fixes on OSX. * 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. * New Filesystem functions: create_directory, copy, remove, remove_all, temp_directory_path, unique_path. Release 1.4.9 (6 Jun 2014 -- compared to 1.4.8) ----------------------------------------------- * Allow in-source build (not recommended, but necessary for MacPorts). (#863) * CPack improvements. (#863) * Fixes to docs-building makefiles. (#873) * Make ImageSpec::get_float_attribute correctly convert many integer types. (#862) * Fixed some alloca calls that did not get the right amount of memory. (#866) * 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) * 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) * 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) * Fix build break in DEBUG compiles for ustring internals. (#869) * Fix warnings about potentially uninitialized variables. (#871) * 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) * Fix Windows build when OIIO_STATIC_BUILD is used. (#872) * Fixes to get a clean compile on Windows + MSVC 9. (#872) * New filters available to direct users of filter.{h,cpp} and for ImageBufAlgo, oiiotoo, and maketx: "cubic", "keys", "simon", "rifman". (#874) * OpenEXR: Fix potential build breaks due to incorrect use of Imf::isDeepData() which apparently was not intended to be an externally-visible function. (#875) * JPEG: Fix broken recognition of .jfi extension. (#876) Release 1.4.8 (23 May 2014 -- compared to 1.4.7) ------------------------------------------------ * Fix several compiler warnings and build breakages for a variety of platforms and compiler versions. No new feature or true bug fixes. #857, #858, #859 Release 1.4 (19 May 2014) -- compared to 1.3.x ---------------------------------------------- Major new features and improvements: * The PNM reader now supports "PFM" files, which are the floating point extension to PNM. (1.4.1) * Preliminary support for reading a wide variety of digital camera "RAW" files. (1.4.1) * New oiiotool commands: --cpow : raise pixel values to a power (1.4.1) --label : give a name to the top-of-stack image, can be referred to later in the command line (1.4.1) --cut : combine --crop, --origin +0+0, and --fullpixels. (1.4.3) --pdiff : perceptual diff (#815) (1.4.4) --polar, --unpolar : complex <-> polar conversion. (#831) (1.4.5) * oiiotool --resize and --fit, and also maketx when using "good" filters for downsizing, have been significantly sped up. When downsizing with large filters, we have seen up to 3x improvement. (#808) (1.4.3) Public API changes: * New ImageBufAlgo functions: - pow() raises pixel values to a power. (1.4.1) - cut() cuts a region of pixels and moves it to the origin (combines crop, reset origin, and set full res = data resolution). (1.4.3) - complex_to_polar() and polar_to_complex() convert from (real,imag) to (amplitude,phase) and back. (#831) (1.4.5) * New string_view class (in string_view.h) describes a non-owning reference to a string. The string_view is now used in many places throughout OIIO's APIs that used to pass parameters or return values as char* or std::string&. Read string_view.h for an explanation of why this is good. (1.4.2, 1.4.3) (N.B. this was called string_ref until 1.4.6, when it was renamed string_view to conform to C++17 draft nomenclature.) * New array_view<>, array_view_strided<>, strided_ptr<>, and image_view<> templates are great utility for passing bounded and strided arrays. (1.4.3) * Removed deprecated PT_* definitions from typedesc.h. * Removed the quantization-related fields from ImageSpec. (1.4.3) * Dither: If ImageOutput::open() is passed an ImageSpec containing the attribute "oiio:dither" and it is nonzero, then any write_*() calls that convert a floating point buffer to UINT8 output in the file will have a hashed dither added to the pixel values prior to quantization in order to prevent the appearance of visible banding. The specific nonzero value passed for the attribute will serve as a hash seed so that the pattern is repeatable (or not). (1.4.3) Fixes, minor enhancements, and performance improvements: * Improved oiiotool features: * --stats on deep files now prints additional info, such as the minimum and maximum depth and on which pixels they were encountered, as well as which pixel had the maximum number of depth samples. (1.4.1) * --resize and --resample allow WIDTHx0 or 0xHEIGHT, where the '0' value will be interpreted as automatically computing the missing dimension to preserve the aspect ratio of the source image. (#797, #807) (1.4.3) * Fixed possible crash when using --origin with tiled, cached images. (1.3.12/1.4.2) * --pdiff does a perceptual diff (like 'idiff -p'). (#815) (1.4.4) * --dumpdata takes a noptional modifier empty=0 that will cause empty deep pixels to not produce any output. (#821) (1.4.5) * --polar, --unpolar convert from complex (real,imag) to polar (amplitude, phase) and vice versa. (#831) (1.4.5) * View wildcards: similar to frame range wildcards, "%V" is replaced by new names, "%v" by the first letter of each view. The view list is {"left","right"} by default, but may be set with the --views argument. (1.4.5) * --over and --zover set the resulting display/full window to the union of those of the inputs; previously it set the display window to that of the foreground image, which is often a poor default. (1.4.7) * ImageCache/TextureSystem: - The multi-point version of environment() was broken. (1.3.9/1.4.1) - Don't honor the SHA-1 fingerprint found in a file if the "Software" metadata doesn't indicate that the file was written by maketx or oiiotool. (1.4.3) * OpenEXR: - Multi-part EXR (2.0) didn't write the required "name" attribute for each part. (1.3.10/1.4.1) - Fix crashing bug when reading stringvector attributes in the file. (1.3.11/1.4.2) - Add .sxr and .mxr as possible filename extensions (1.3.12/1.4.2) - Smarter channel ordering of input of files with ZBack, RA, GA, or BA channels (#822) (1.4.5). - Adhere to the misunderstood limitation that OpenEXR library doesn't allow random writes to scanline files. (1.4.6) - More robust with certain malformed metadata. (#841) (1.4.6) * TIFF: Give a more explicit error message for unsupported tile sizes (1.4.4) * GIF: Fixes to subimage generation; GIF frames are treated as sequential windows to be drawn on canvas rather than as independent images; respect "disposal" method; initial canvas is now transparent and all GIFs are presented as 4-channel images. (#828) (1.4.5) * iconvert: properly handle multi-image files for formats that can't append subimages. (1.3.10/1.4.1) * iv info window should print native file info, not translated ImageBuf/ImageCache info. (1.3.10/1.4.1) * Fix ImageCache::get_pixels() for the chbegin != 0 case, when cache and output buffer types were not identical. (1.3.10/1.4.1) * DPX: - Fixed several places in the where it could have had buffer overruns when processing certain malformed string fields. (1.4.1) - Fixed 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). (1.3.10/1.4.1) - For output, honor the "Software" metadata attribute passed in. (1.3.11/1.4.2) - Ignore negative image origin values, which are not allowed by the DPX spec which states they are unsigned. (#813) (1.4.4) - Fix improper handling of unsupported pixel data types. (#818) (1.4.5) - Accept pixel ratio (x/0) to mean 1.0, not NaN. (#834) (1.4.5/1.3.13) - Pad subimages to 8k boundaries, as suggested by the DPX spec (1.4.7) - Properly write "userdata" field to DPX files if set. (1.4.7) * PNG: - add "png:compressionlevel" and "compression" strategy attributes. (1.3.12/1.4.2) - output properly responds to "oiio:UnassociatedAlpha"=1 to indicate that the buffer is unassociated (not premultiplied) and therefore it should not automatically unpremultiply it. (1.4.5) * Make ImageBuf iterators return valid black pixel data for missing tiles. (1.3.12/1.4.2) * Make the ImageOutput implementations for all non-tiled file formats emulate tiles by accepting write_tile() calls and buffering the image until the close() call, at which point the scanlines will be output. (1.4.3) * All ImageBufAlgo functions, and oiiotool, strip any "oiio:SHA-1" hash values in the metadata in order not to confuse the TextureSystem. (1.4.3) * IFF: accept write_scanline, even though IFF is tile only. (1.4.3) * The implementation of the Lanczos filter (and any operations using it) have been sped up by using an approximate fast_sinpi instead of the more expensive sin() (1.4.3). * Speed up iinfo --hash / oiiotool --hash by about 20%. (#809) (1.4.4) * All format writer plugins: ensure that calling close() twice is safe. (#810) (1.4.4) * oiiotool --info and iinfo output have been altered slightly to make them match and be consistent. Also, oiiotool didn't say that deep files were deep (1.4.4). * Fixed bad bugs in IBA::flatten() and oiiotool --flatten. (#819) (1.4.5) * Fix Parameter neglect of properly copying the m_interp field for assignment and copy construction. (#829) (1.4.5/1.3.13) * Fix ImageBufAlgo::circular_shift (and oiiotool --cshift) that did not wrap correctly for negative shifts. (#832) (1.4.5/1.3.13) * The "gaussian" flter incorrectly had default width 2 (correct = 3), and the "mitchell" filter incorrect had default width 3 (correct = 4). These were bugs/typos, the new way is correct. If you were using those filters in ways that used the default width value, appearance may change slightly. (1.4.6) Build/test system improvements: * libOpenImageIO_Util is now built that only has the utility functions in libutil (in addition to the libOpenImageIO, which contains everything). This is handy for apps that want to use OIIO's utility functions (such as ustring or Filesystem) but doesn't really need any of the image stuff. A build flag BUILD_OIIOUTIL_ONLY=1 will cause only the util library to be built. (1.4.1) * New build option OIIO_THREAD_ALLOW_DCLP=0 will turn off an optimization in thread.h, resulting in possibly worse spin lock performance during heavy thread contention, but will no longer get false positive errors from Thread Sanitizer. The default is the old way, with full optimization! (1.4.1) * More robust detection of OpenEXR library filenames. (1.4.1) * Always reference OpenEXR and Imath headers as <OpenEXR/foo.h> rather than <foo.h>. (1.4.1) * Unit test strutil_test now comprehensively tests Strutil. (1.4.1) * Fix broken build when EMBEDPLUGINS=0. (1.4.3/1.3.13) * Fix broken build against OpenEXR 1.x. (1.4.3/1.3.13) * version.h has been renamed oiioversion.h. For back compatibility, there is still a version.h, but it merely includes oiioversion.h. (#811) (1.4.4) * Moved all the public header files from src/include to src/include/OpenImageIO, so that the src/include area more closely matches the layout of an OIIO install area. (#817) (1.4.4) * Fix compilation problems for PowerPC (#825). (1.4.5/1.3.13) * Fixes for OpenBSD compilation. (#826/#830) (1.4.5/1.3.13) * Fixes for Linux compilation when building with BUILDSTATIC=1. (1.4.6) * Fixes for compilation against IlmBase/OpenEXR 2.1. (1.4.6) * Improve finding of Freetype on some systems (1.4.6). * Add to top level Makefile the option STOP_ON_WARNING=0 to let it cleanly compile code that generates compiler warnings, without stopping the build. (1.4.7) Developer goodies / internals: * TBB has been removed completely. (1.4.2) * Slightly faster timer queries in timer.h for OSX and Windows. (1.4.1) * Strutil : - safe_strcpy() -- like strncpy, but copies the terminating 0 char. (1.4.1) - split() fixes bug when maxsplit is not the default value. (1.3.10/1.4.1) * ParamValue/ParamValueList : - ParamValue now allows get/set of the internal 'interp' field. (1.3.9/1.4.1) - ParamValueList::push_back is not properly const-ified. (1.4.1) - New PVL::find() lets you search on the PVL. (1.4.6) * fmath.h : - New fast_sin, fast_cos, fast_sinpi, fast_cospi are much faster polynomial approximations (with max absolute error of ~0.001). (1.4.3) - round_to_multiple_of_pow2 - a faster version of the existing round_to_multiple(), but only works when the multiple is known to be a power of 2. (1.4.6) * TypeDesc now has operator<, which makes it easier to use STL data structures and algorithms that expect an ordering, using TypeDesc as a key. (1.4.6) * thread.h - Slight thread.h portability tweaks. (1.4.1) - spin_rw_lock now has more standard lock()/unlock() as synonym for for exclusive/write lock, and lock_shared()/unlock_shared() as synonym for "read" locks. (1.4.6) * ustring : - new ustringLess and ustringHashIsLess functors make it easier to use ustring as keys in STL data structures and algorithms that require an ordering function. (1.4.6) - improve thread performance significantly by using an unordered_map_concurrent internally for the ustring table. (1.4.6) * unordered_map_concurrent.h : - Allow umc template to specify a different underlying map for the bins. (1.4.6) - Add retrieve() method that's slightly faster than find() when you just need a value, not an iterator. (1.4.6) - Align bins to cache lines for improved thread performance. (1.4.6) * ImageBuf iterators have a new rerange() method that resets the iteration range, without changing images or constructing a new iterator. (1.4.6) Release 1.3.14 (19 May 2014 -- compared to 1.3.13) -------------------------------------------------- * OpenEXR output: More robust with certain malformed metadata. (#841) (1.4.6) * Rename the string_ref class to string_view. (This is unused in OIIO, it is for compatibility with OSL.) * Build fixes on Linux when using BUILDSTATIC=1. * Add round_to_multiple_of_pow2 to fmath.h * Add STOP_ON_WARNING option to the top level Makeile wrapper. * Add documentation on the Python binding for IBA::cut. * oiiotool --over and --zover now set the output image's display window to the union of the inputs' display window, rather than to the foreground.
2014-07-09 22:00:01 +02:00
@@ -244,6 +261,10 @@ Sysutil::this_program_path ()
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++).
2014-04-07 14:15:55 +02:00
size_t cb = sizeof(filename);
int r=1;
sysctl(mib, 4, filename, &cb, NULL, 0);
+#elif defined(__NetBSD__)
+ unsigned int size = sizeof(filename);
+ int r = readlink ("/proc/curproc/exe", filename, size);
+ ASSERT(r < int(size)); // user won't get the right answer if the filename is too long to store
#elif defined(__GNU__) || defined(__OpenBSD__)
int r = 0;
#else
Update to 1.4.10 Changelog: Release 1.4.10 (20 Jun 2014 -- compared to 1.4.9) ------------------------------------------------- * Fix for portrait-orientation RAW image reads. (#878) * maketx: Fix case typo for LatLong env map creation when in 'prman' mode (#877). * New Strutil string comparison functions: starts_with, ends_with. * Make 3.0 compatibility fixes on OSX. * 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. * New Filesystem functions: create_directory, copy, remove, remove_all, temp_directory_path, unique_path. Release 1.4.9 (6 Jun 2014 -- compared to 1.4.8) ----------------------------------------------- * Allow in-source build (not recommended, but necessary for MacPorts). (#863) * CPack improvements. (#863) * Fixes to docs-building makefiles. (#873) * Make ImageSpec::get_float_attribute correctly convert many integer types. (#862) * Fixed some alloca calls that did not get the right amount of memory. (#866) * 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) * 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) * 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) * Fix build break in DEBUG compiles for ustring internals. (#869) * Fix warnings about potentially uninitialized variables. (#871) * 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) * Fix Windows build when OIIO_STATIC_BUILD is used. (#872) * Fixes to get a clean compile on Windows + MSVC 9. (#872) * New filters available to direct users of filter.{h,cpp} and for ImageBufAlgo, oiiotoo, and maketx: "cubic", "keys", "simon", "rifman". (#874) * OpenEXR: Fix potential build breaks due to incorrect use of Imf::isDeepData() which apparently was not intended to be an externally-visible function. (#875) * JPEG: Fix broken recognition of .jfi extension. (#876) Release 1.4.8 (23 May 2014 -- compared to 1.4.7) ------------------------------------------------ * Fix several compiler warnings and build breakages for a variety of platforms and compiler versions. No new feature or true bug fixes. #857, #858, #859 Release 1.4 (19 May 2014) -- compared to 1.3.x ---------------------------------------------- Major new features and improvements: * The PNM reader now supports "PFM" files, which are the floating point extension to PNM. (1.4.1) * Preliminary support for reading a wide variety of digital camera "RAW" files. (1.4.1) * New oiiotool commands: --cpow : raise pixel values to a power (1.4.1) --label : give a name to the top-of-stack image, can be referred to later in the command line (1.4.1) --cut : combine --crop, --origin +0+0, and --fullpixels. (1.4.3) --pdiff : perceptual diff (#815) (1.4.4) --polar, --unpolar : complex <-> polar conversion. (#831) (1.4.5) * oiiotool --resize and --fit, and also maketx when using "good" filters for downsizing, have been significantly sped up. When downsizing with large filters, we have seen up to 3x improvement. (#808) (1.4.3) Public API changes: * New ImageBufAlgo functions: - pow() raises pixel values to a power. (1.4.1) - cut() cuts a region of pixels and moves it to the origin (combines crop, reset origin, and set full res = data resolution). (1.4.3) - complex_to_polar() and polar_to_complex() convert from (real,imag) to (amplitude,phase) and back. (#831) (1.4.5) * New string_view class (in string_view.h) describes a non-owning reference to a string. The string_view is now used in many places throughout OIIO's APIs that used to pass parameters or return values as char* or std::string&. Read string_view.h for an explanation of why this is good. (1.4.2, 1.4.3) (N.B. this was called string_ref until 1.4.6, when it was renamed string_view to conform to C++17 draft nomenclature.) * New array_view<>, array_view_strided<>, strided_ptr<>, and image_view<> templates are great utility for passing bounded and strided arrays. (1.4.3) * Removed deprecated PT_* definitions from typedesc.h. * Removed the quantization-related fields from ImageSpec. (1.4.3) * Dither: If ImageOutput::open() is passed an ImageSpec containing the attribute "oiio:dither" and it is nonzero, then any write_*() calls that convert a floating point buffer to UINT8 output in the file will have a hashed dither added to the pixel values prior to quantization in order to prevent the appearance of visible banding. The specific nonzero value passed for the attribute will serve as a hash seed so that the pattern is repeatable (or not). (1.4.3) Fixes, minor enhancements, and performance improvements: * Improved oiiotool features: * --stats on deep files now prints additional info, such as the minimum and maximum depth and on which pixels they were encountered, as well as which pixel had the maximum number of depth samples. (1.4.1) * --resize and --resample allow WIDTHx0 or 0xHEIGHT, where the '0' value will be interpreted as automatically computing the missing dimension to preserve the aspect ratio of the source image. (#797, #807) (1.4.3) * Fixed possible crash when using --origin with tiled, cached images. (1.3.12/1.4.2) * --pdiff does a perceptual diff (like 'idiff -p'). (#815) (1.4.4) * --dumpdata takes a noptional modifier empty=0 that will cause empty deep pixels to not produce any output. (#821) (1.4.5) * --polar, --unpolar convert from complex (real,imag) to polar (amplitude, phase) and vice versa. (#831) (1.4.5) * View wildcards: similar to frame range wildcards, "%V" is replaced by new names, "%v" by the first letter of each view. The view list is {"left","right"} by default, but may be set with the --views argument. (1.4.5) * --over and --zover set the resulting display/full window to the union of those of the inputs; previously it set the display window to that of the foreground image, which is often a poor default. (1.4.7) * ImageCache/TextureSystem: - The multi-point version of environment() was broken. (1.3.9/1.4.1) - Don't honor the SHA-1 fingerprint found in a file if the "Software" metadata doesn't indicate that the file was written by maketx or oiiotool. (1.4.3) * OpenEXR: - Multi-part EXR (2.0) didn't write the required "name" attribute for each part. (1.3.10/1.4.1) - Fix crashing bug when reading stringvector attributes in the file. (1.3.11/1.4.2) - Add .sxr and .mxr as possible filename extensions (1.3.12/1.4.2) - Smarter channel ordering of input of files with ZBack, RA, GA, or BA channels (#822) (1.4.5). - Adhere to the misunderstood limitation that OpenEXR library doesn't allow random writes to scanline files. (1.4.6) - More robust with certain malformed metadata. (#841) (1.4.6) * TIFF: Give a more explicit error message for unsupported tile sizes (1.4.4) * GIF: Fixes to subimage generation; GIF frames are treated as sequential windows to be drawn on canvas rather than as independent images; respect "disposal" method; initial canvas is now transparent and all GIFs are presented as 4-channel images. (#828) (1.4.5) * iconvert: properly handle multi-image files for formats that can't append subimages. (1.3.10/1.4.1) * iv info window should print native file info, not translated ImageBuf/ImageCache info. (1.3.10/1.4.1) * Fix ImageCache::get_pixels() for the chbegin != 0 case, when cache and output buffer types were not identical. (1.3.10/1.4.1) * DPX: - Fixed several places in the where it could have had buffer overruns when processing certain malformed string fields. (1.4.1) - Fixed 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). (1.3.10/1.4.1) - For output, honor the "Software" metadata attribute passed in. (1.3.11/1.4.2) - Ignore negative image origin values, which are not allowed by the DPX spec which states they are unsigned. (#813) (1.4.4) - Fix improper handling of unsupported pixel data types. (#818) (1.4.5) - Accept pixel ratio (x/0) to mean 1.0, not NaN. (#834) (1.4.5/1.3.13) - Pad subimages to 8k boundaries, as suggested by the DPX spec (1.4.7) - Properly write "userdata" field to DPX files if set. (1.4.7) * PNG: - add "png:compressionlevel" and "compression" strategy attributes. (1.3.12/1.4.2) - output properly responds to "oiio:UnassociatedAlpha"=1 to indicate that the buffer is unassociated (not premultiplied) and therefore it should not automatically unpremultiply it. (1.4.5) * Make ImageBuf iterators return valid black pixel data for missing tiles. (1.3.12/1.4.2) * Make the ImageOutput implementations for all non-tiled file formats emulate tiles by accepting write_tile() calls and buffering the image until the close() call, at which point the scanlines will be output. (1.4.3) * All ImageBufAlgo functions, and oiiotool, strip any "oiio:SHA-1" hash values in the metadata in order not to confuse the TextureSystem. (1.4.3) * IFF: accept write_scanline, even though IFF is tile only. (1.4.3) * The implementation of the Lanczos filter (and any operations using it) have been sped up by using an approximate fast_sinpi instead of the more expensive sin() (1.4.3). * Speed up iinfo --hash / oiiotool --hash by about 20%. (#809) (1.4.4) * All format writer plugins: ensure that calling close() twice is safe. (#810) (1.4.4) * oiiotool --info and iinfo output have been altered slightly to make them match and be consistent. Also, oiiotool didn't say that deep files were deep (1.4.4). * Fixed bad bugs in IBA::flatten() and oiiotool --flatten. (#819) (1.4.5) * Fix Parameter neglect of properly copying the m_interp field for assignment and copy construction. (#829) (1.4.5/1.3.13) * Fix ImageBufAlgo::circular_shift (and oiiotool --cshift) that did not wrap correctly for negative shifts. (#832) (1.4.5/1.3.13) * The "gaussian" flter incorrectly had default width 2 (correct = 3), and the "mitchell" filter incorrect had default width 3 (correct = 4). These were bugs/typos, the new way is correct. If you were using those filters in ways that used the default width value, appearance may change slightly. (1.4.6) Build/test system improvements: * libOpenImageIO_Util is now built that only has the utility functions in libutil (in addition to the libOpenImageIO, which contains everything). This is handy for apps that want to use OIIO's utility functions (such as ustring or Filesystem) but doesn't really need any of the image stuff. A build flag BUILD_OIIOUTIL_ONLY=1 will cause only the util library to be built. (1.4.1) * New build option OIIO_THREAD_ALLOW_DCLP=0 will turn off an optimization in thread.h, resulting in possibly worse spin lock performance during heavy thread contention, but will no longer get false positive errors from Thread Sanitizer. The default is the old way, with full optimization! (1.4.1) * More robust detection of OpenEXR library filenames. (1.4.1) * Always reference OpenEXR and Imath headers as <OpenEXR/foo.h> rather than <foo.h>. (1.4.1) * Unit test strutil_test now comprehensively tests Strutil. (1.4.1) * Fix broken build when EMBEDPLUGINS=0. (1.4.3/1.3.13) * Fix broken build against OpenEXR 1.x. (1.4.3/1.3.13) * version.h has been renamed oiioversion.h. For back compatibility, there is still a version.h, but it merely includes oiioversion.h. (#811) (1.4.4) * Moved all the public header files from src/include to src/include/OpenImageIO, so that the src/include area more closely matches the layout of an OIIO install area. (#817) (1.4.4) * Fix compilation problems for PowerPC (#825). (1.4.5/1.3.13) * Fixes for OpenBSD compilation. (#826/#830) (1.4.5/1.3.13) * Fixes for Linux compilation when building with BUILDSTATIC=1. (1.4.6) * Fixes for compilation against IlmBase/OpenEXR 2.1. (1.4.6) * Improve finding of Freetype on some systems (1.4.6). * Add to top level Makefile the option STOP_ON_WARNING=0 to let it cleanly compile code that generates compiler warnings, without stopping the build. (1.4.7) Developer goodies / internals: * TBB has been removed completely. (1.4.2) * Slightly faster timer queries in timer.h for OSX and Windows. (1.4.1) * Strutil : - safe_strcpy() -- like strncpy, but copies the terminating 0 char. (1.4.1) - split() fixes bug when maxsplit is not the default value. (1.3.10/1.4.1) * ParamValue/ParamValueList : - ParamValue now allows get/set of the internal 'interp' field. (1.3.9/1.4.1) - ParamValueList::push_back is not properly const-ified. (1.4.1) - New PVL::find() lets you search on the PVL. (1.4.6) * fmath.h : - New fast_sin, fast_cos, fast_sinpi, fast_cospi are much faster polynomial approximations (with max absolute error of ~0.001). (1.4.3) - round_to_multiple_of_pow2 - a faster version of the existing round_to_multiple(), but only works when the multiple is known to be a power of 2. (1.4.6) * TypeDesc now has operator<, which makes it easier to use STL data structures and algorithms that expect an ordering, using TypeDesc as a key. (1.4.6) * thread.h - Slight thread.h portability tweaks. (1.4.1) - spin_rw_lock now has more standard lock()/unlock() as synonym for for exclusive/write lock, and lock_shared()/unlock_shared() as synonym for "read" locks. (1.4.6) * ustring : - new ustringLess and ustringHashIsLess functors make it easier to use ustring as keys in STL data structures and algorithms that require an ordering function. (1.4.6) - improve thread performance significantly by using an unordered_map_concurrent internally for the ustring table. (1.4.6) * unordered_map_concurrent.h : - Allow umc template to specify a different underlying map for the bins. (1.4.6) - Add retrieve() method that's slightly faster than find() when you just need a value, not an iterator. (1.4.6) - Align bins to cache lines for improved thread performance. (1.4.6) * ImageBuf iterators have a new rerange() method that resets the iteration range, without changing images or constructing a new iterator. (1.4.6) Release 1.3.14 (19 May 2014 -- compared to 1.3.13) -------------------------------------------------- * OpenEXR output: More robust with certain malformed metadata. (#841) (1.4.6) * Rename the string_ref class to string_view. (This is unused in OIIO, it is for compatibility with OSL.) * Build fixes on Linux when using BUILDSTATIC=1. * Add round_to_multiple_of_pow2 to fmath.h * Add STOP_ON_WARNING option to the top level Makeile wrapper. * Add documentation on the Python binding for IBA::cut. * oiiotool --over and --zover now set the output image's display window to the union of the inputs' display window, rather than to the foreground.
2014-07-09 22:00:01 +02:00
@@ -275,7 +296,7 @@ Sysutil::terminal_columns ()
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++).
2014-04-07 14:15:55 +02:00
{
int columns = 80; // a decent guess, if we have nothing more to go on
-#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__GNU__)
+#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__GNU__) || defined(__NetBSD__)
struct winsize w;
ioctl (0, TIOCGWINSZ, &w);
columns = w.ws_col;