head 1.4; access; symbols pkgsrc-2025Q2:1.3.0.6 pkgsrc-2025Q2-base:1.3 pkgsrc-2025Q1:1.3.0.4 pkgsrc-2025Q1-base:1.3 pkgsrc-2024Q4:1.3.0.2 pkgsrc-2024Q4-base:1.3 pkgsrc-2018Q3:1.1.0.24 pkgsrc-2018Q3-base:1.1 pkgsrc-2018Q2:1.1.0.22 pkgsrc-2018Q2-base:1.1 pkgsrc-2018Q1:1.1.0.20 pkgsrc-2018Q1-base:1.1 pkgsrc-2017Q4:1.1.0.18 pkgsrc-2017Q4-base:1.1 pkgsrc-2017Q3:1.1.0.16 pkgsrc-2017Q3-base:1.1 pkgsrc-2017Q2:1.1.0.12 pkgsrc-2017Q2-base:1.1 pkgsrc-2017Q1:1.1.0.10 pkgsrc-2017Q1-base:1.1 pkgsrc-2016Q4:1.1.0.8 pkgsrc-2016Q4-base:1.1 pkgsrc-2016Q3:1.1.0.6 pkgsrc-2016Q3-base:1.1 pkgsrc-2016Q2:1.1.0.4 pkgsrc-2016Q2-base:1.1 pkgsrc-2016Q1:1.1.0.2 pkgsrc-2016Q1-base:1.1; locks; strict; comment @# @; 1.4 date 2025.08.13.06.35.13; author wiz; state dead; branches; next 1.3; commitid FWDBG3zdFatAfx6G; 1.3 date 2024.11.04.21.22.23; author adam; state Exp; branches; next 1.2; commitid VwXVUDZtuG7VdnwF; 1.2 date 2018.10.07.23.38.45; author ryoon; state dead; branches; next 1.1; commitid AuFkdUsARFz9l5VA; 1.1 date 2016.02.17.04.49.47; author dbj; state Exp; branches; next ; commitid Xw18FSuz56gX2eVy; desc @@ 1.4 log @openimageio: update to 3.0.9.1. Release 3.0.9.1 (Aug 7, 2025) -- compared to 3.0.9.0 ----------------------------------------------------- - *deps*: C++23 support - *deps*: Adapt to libheif 1.20.2 Release 3.0.9.0 (Aug 1, 2025) -- compared to 3.0.8.1 ----------------------------------------------------- - *maketx*: Add flags to increase feature parity with txmake - *perf*: Speed up `maketx --envlatl` when multithreaded by over 10x. - *perf*: Speed up OpenEXR non-core header read time - *oiiotool*: Allow thread control for --parallel-frames - *ImageInput*: Incorrect IOProxy logic related to valid_file - *python*: Got strides wrong passing 2D numpy pixel array - *ffmpeg*: Replace deprecated and soon removed avcodec_close with avcodec_free_context - *build/python*: For python stub generation, lock pybind11 to pre-3.0 - *build*: Fix typo related to finding ccache - *build*: PNG auto-build improvements - *build*: Propagate CMAKE_MSVC_RUNTIME_LIBRARY - *build*: Update jpeg2000input.cpp to include cstdarg - *ci*: Bump 'latest releases' tests to use pybind11 3.0.0 - *(docs)*: Correct docs and type of "resident_memory_used_MB" attribute - *(admin)*: Update SECURITY to reflect that 2.5 only gets critical fixes now Release 3.0.8.1 (Jul 5, 2025) -- compared to 3.0.8.0 ----------------------------------------------------- - *build(heif)*: Fixes to build against libheif 1.20 - *build*: Wheel upload_pypi step should only run from main repo - *ci*: Bump 'latest' test versions Release 3.0.8.0 (Jul 1, 2025) -- compared to 3.0.7.0 ----------------------------------------------------- - *oiiotool*: New expression pseudo-metadata term: SUBIMAGES - *oiiotool*: Fixes to --missingfile behavior - *iv*: Area probe - *python*: Python ImageBuf.init_spec did not return correct value - *fix*: ImageOutput::check_open logic was flawed - *int(iv)*: Add raw string syntax modifier for VSCode and Cursor to understand its glsl - *int(iv)*: Use R"()" syntax for glsl shader strings for better readability - *exr*: Not honoring 'missingcolor' for scanline files - *build*: Add arm_neon.h include on Windows ARM64 with clang-cl - *build*: Adjust pystring finding - *build(jxl)*: Use correct cmake variables for the include directories - *tests*: Remove old test reference output we no longer need - *ci*: Remove tests on Windows-2019 GitHub runner - *ci*: Various ccache save/restore improvements for CI runs - *ci*: Simplify gh-win-installdeps, no more vcpkg - *admin*: Remove stale intake documents Release 3.0.7.0 (Jun 1, 2025) -- compared to 3.0.6.1 ----------------------------------------------------- - *oiiotool*: `--eraseattrib` new modifier `:fromfile=1` reads from a file to get a list of patterns to specify the attributes to erase. - *oiiotool*: Added `--create-dir` flag to create directories needed by `-o` if they doesn't already exist - *oiiotool*: -i:native=1, fix --native behavior, fix convert datatype - *iv*: Fix crash on .DS_Store; fix uppercase extensions - *iv*: Do not resize on open and other zoom fixes - *iv*: Bug fix for iv window losing focus on mac on startup - *iv*: Implement files drag and drop into an iv window - *iv*: Use screen pixel ratio to render sharp text in pixel view tool - *python*: Add python stub files - *python*: ImageBuf `_repr_png_` method added, which allows use of ImageBuf in - *exr*: Did not properly allocate 'missingcolor' vector - *exr*: Add `htj2k` as a compression option for OpenEXR. Only works with OpenEXR 3.4 or higher (or in-progress OpenEXR main). - *iff*: Improved IFF support reading and writing z buffers - *webp*: Respect the `oiio:UnassociatedAlpha` attribute - *webp*: Allow finer grained control over WEBP compression settings - *flx/python*: IBA.demosaic had GIL release in wrong spot - *fix*: ImageInput/ImageOutput did not set per-file threads correctly - *fix*: Address safety warnings in pvt::append_tiff_dir_entry - *build*: Fix fmt throwing behavior warnings - *build*: Detect libultrahdr version and enforce minimum of 1.3 - *build*: Fix failed test with old fmt - *ci*: Save time by not checking out entire project history - *ci*: New testing variants for VFX Platform 2025, Windows 2025 - *ci*: Update ref output to compensate for GitHub windows drive changes - *ci*: Pkg config libdir fix - *ci*: For docs workflow, lock down versions and speed up - *ci*: Improved clang-format CI task - *ci*: Add facility for benchmarking as part of CI - *ci*: Update ref image for slightly changed freetype accents - *docs*: Online docs improvements, mostly formatting (#4736, #4743) - *docs*: Update Windows build instructions to rely on deps auto-build Release 3.0.6.1 (May 2, 2025) -- compared to 3.0.6.0 ----------------------------------------------------- - *fix*: Restore OIIO_AVX512ER_ENABLED preprocessor symbol. Its absence could break backwards source compatibility if anyone was using it, even though it was useless and broken. Where compatibility goes, better safe than sorry. Release 3.0.6.0 (May 1, 2025) -- compared to 3.0.5.0 ----------------------------------------------------- - *oiiotool*: Add `--render_text` modifiers `measure=` and `render=` - *python*: Fix handle leak - *bmp*: Correct the type for BMP x/y density - *dpx*: Specify the units for DPX scanned size - *sgi*: Fix valid_file to properly swap bytes on little-endian platforms - *build*: Fix new dcmtk 3.6.9 vs C++ warning - *build*: Address Robin-map vs CMake 4.0 compatibility - *build*: Fix broken OIIO_SITE customization - *build*: Address compiler warnings in simd.h - *build/windows*: Clean up Windows compilation warnings - *build/windows*: Include Windows version information on produced binaries - *ci*: Move away from soon-to-be-deprecated ubuntu-20.04 GHA runner Release 3.0.5.0 (Apr 2, 2025) -- compared to 3.0.4.0 ----------------------------------------------------- - *ImageBuf*: `ImageBuf::merge_metadata()` merges one IB's metadata into another's without deleting the metadata already present. It can also filter which metadata are copied using a regex. - *oiiotool*: `--pastemeta` now takes additional modifiers that allows options for merging rather than rewriting, and is able to copy only a subset of the metadata specified by a regex. - *oiiotool*: Fix invalid loop bound when appending mipmap textures using oiiotool - *png*: Increase allowed width/height limit - *psd*: Improved tag recognition in psd files - *tiff*: The default value for bitspersample should be 1 - *int*: Switch to spans for some exif manipulation, fixing warnings - *span.h*: OIIO::span improvements - *build*: Better disabling of work when USE_PYTHON=0 - *build*: Improve OpenJpeg version detection. - *build*: Bump auto-build libdeflate to 1.23 to avoid AVX512 not available errors - *build*: Cmake 4.0 compatibility - *ci*: Fix wheel building on Mac - *ci*: Update libPNG address and version for ci & autobuild Release 3.0.4.0 (Mar 2, 2025) -- compared to 3.0.3.0 ----------------------------------------------------- - *oiiotool*: Oiiotool new expression eval tokens IS_CONSTANT, IS_BLACK - *oiiotool*: Better handling of wildcards that match no files - *ImageBuf*: IB::pixeltype() did not always return the right value - *ImageBuf*: Fix bug in ImageBuf construction from ptr + neg strides - *ICC*: ICC profile recognition and robustness improvements, especially for PSD - *exr*: Fill in OpenEXR lineOrder attribute when reading - *ico*: More robust to corrupted ICO files - *rla*: More robust to corrupted RLA files that could overrun buffers - *span.h*: Eliminate needless definitions of `std::size(span)` that were triggering strange behavior on recent MSVS compiler versions. - *build*: Fix recently broken rpath setting - *build/python wheels*: Ensure python-based builds use maj.min.patch SO versioning - *build/python wheels*: Fix recently broken rpath to restore python wheel building - *ci*: Run wheel workflow on certain pushes - *docs*: Argparse documentation/comments typos - *admin*: Document Python Wheel completed in roadmap - *admin*: Add ".vs" to .gitignore - *admin*: Set up .gitattributes file and ensure it properly categorizes certain files for GitHub's language analysis statistics. Release 3.0.3.1 (Feb 1, 2025) -- compared to 3.0.3.1 ----------------------------------------------------- The code is identical to v3.0.3.0, but some build issues were fixed to allow proper build and upload of the Python wheels to PyPI for the Linux ARM variants. Release 3.0.3.0 (Feb 1, 2025) -- compared to 3.0.2.0 ----------------------------------------------------- - πŸπŸŽ‰πŸΎ **Python wheels workflow and build backend** -- beginning with OpenImageIO 3.0.3.0, releases should automatically trigger building of Python wheels and upload to PyPI so that you can do a single-command `pip3 install openimageio` on any of Linux, Mac, or Windows, and get the Python bindings, the OpenImageIO libraries, and a working oiiotool, without having to build from source yourself. - *oiiotool*: `oiiotool --layersplit`, new command to split multi-layer OpenEXR files (using the usual channel naming convention to delineate "layers") into separate images - *IBA*: IBA:demosaic() adds the ability for X-Trans demosaicing - *IBA*: fix demosaic handling of roi channels - *png*: Alpha premultiplication adjustment and attribute - *psd*: Perform endian byteswap on correct buffer area for PSD RLE - *raw*: Add black level and BPS metadata - *python*: Disable loading Python DLLs from PATH by default on Windows - *dev (span.h)*: Span_memcpy is a safer memcpy when you know the span boundaries - *dev (filesystem.h)*: Filesystem::getline() - *dev (paramlist.h)*: ParamValue as_span, as_cspan - *build*: Recent change broke when using non-Apple clang on Apple - *build*: Fix build_cmake.bash script for aarch64, bump its default version - *build*: Fix libraw definitions (again) - *ci*: Upgrade to newer actions - *ci*: Test and document support for WebP 1.5 and fmt 11.1 - *ci*: Only pass build-steps the secrets it needs - *ci*: Fix Windows 2019 CI -- make python version match the runner - *ci*: Raise 'latest' tests to use new fmt 11.1.2 - *ci*: Adjust some pugixml versions - *ci*: Allow special branch names to prune CI jobs - *tests*: Improve Ptex testing - *tests*: Better testing coverage of null image reader/writer - *tests*: At long last, set up a softimage reading test. - *tests*: Additional ref output for jpeg-corrupt test - *docs*: Fix typo in oiiotool's gradient fill example Release 3.0.2.0 (Jan 1, 2025) -- compared to 3.0.1.0 ----------------------------------------------------- - *api*: Add global attribute `imageinput:strict` - *various formats*: Detect invalid ICC profile tags - *various formats*: IPTC fields have length limits, protect against attributes passed that are too long to fit in them. - *pnm*: Handle broken pnm files with invalid resolution - *pnm*: Handle broken pgm having memory access error - *int*: Some LoggedTimer instances lacked a variable name - *build*: Use target_compile_options (fixes a LibRaw build issue) - *ci*: Refactor using a single steps workflow - *ci*: Fixups of analysis workflow - *docs*: Minor fixes and typos - *admin*: Sign release artifacts Release 3.0.1.0 (Dec 1, 2024) -- compared to 3.0.0.3 ----------------------------------------------------- - *IBA*: New IBA::scale() - *IBA*: `IBA:demosaic()` add white balancing - *jpeg*: Support reading Ultra HDR images - *jpeg*: Support encoding/decoding arbitrary metadata as comments - *api*: `OIIO::getattribute()` queries for available font families and styles - *perf*: `IBA::unsharp_mask()` speed and memory optimization - *perf*: oiiotool `--line`, `--text`, `--point`, and `--box` speedups - *perf*: Jpeg2000 valid_file implementation, much faster than trying to open - *perf*: Faster utf8<->utf16 conversion on Windows - *fix(exr)*: Allow an empty "name" metadata to be read - *fix(exr)*: Avoid integer overflow for large deep exr slice strides - *fix(raw)*: Fix channel layout - *build*: Support static OCIO self-builds - *build*: Add build recipe for PNG - *build*: Add hardening options - *ci*: Increased the macos timeout slightly to fix spurious failures - *ci*: Don't rebuild docs in CI when only CMakeLists.txt changes - *ci*: Fix broken CI for ASWF 2021 and 2022 containers - *docs*: Update some old links to our new vanity URLs - *docs*: Quickstart guide - *docs*: First stab at an architecture overview - *docs/admin*: Code review guidelines and tips - *docs/admin*: Document how to make signed release tags Release 3.0 (v3.0.0.3 - Nov 8, 2024) -- compared to 2.5.16.0 ------------------------------------------------------------- - v3.0.0.0-beta1 - Oct 15, 2024 - v3.0.0.1-beta2 - Oct 29, 2024 - v3.0.0.2-RC1 - Nov 4, 2024 (no code changes vs beta2) - v3.0.0.3 / official release - Nov 8, 2024 (no code changes vs RC1) **Executive Summary / Highlights:** - Updated minimum toolchain: C++17/gcc9.3, Python 3.7, CMake 3.18.2, and raised min versions of most library dependencies. - New image format support: JPEG XL, R3D. - oiiotool new commands: `--cryptomatte-colors`, `--demosaic`, `--buildinfo`, `--ocionamedtransform`, `--popbottom`, `--stackreverse`, `--stackclear`, `--stackextract`; improved `--for` behavior for reverse direction. - Lots of long-deprecated API calls have been removed entirely. Please see - New ImageBufAlgo: `perpixel_op()`, `demosaic()`, `ocionamedtransform()`. - ImageBuf now by default does not use ImageCache to mediate file images, unless you explicitly ask for it. - ImageCache & TextureSystem now use shared_ptr for creation, not raw pointers. And they have been de-virtualized, for easier future expansion flexibility without breaking ABI for any small change. - Improved and more consistent color space name nomenclature. - Build system now is capable of auto-downloading and building several of the most important dependencies if they are missing at build time. - Please note that the development branch in the GitHub repo is now named `main` instead of `master`. Full details of all changes follow. ### New minimum dependencies and compatibility changes: * *C++*: Move to C++17 standard minimum (from 14), which also implies a minimum gcc 9.3 (raised from 6.3), clang 5 (though we don't test or support older than clang10), Intel icc 19+, Intel OneAPI C++ compiler 2022+. * *Python*: 3.7 minimum (from 2.7). * *CMake*: 3.18.2 minimum (from 3.15) * *Boost*: Is no longer a dependency! * *ffmpeg*: 4.0 minimum (from 3.0) * *Freetype*: 2.10 minimum (from no previously stated minimum, but we had been testing as far back as 2.8) * *GIF*: 5.0 minimum for giflib (from 4.0) * *libheif*: 1.11 minimum (from 1.3) * *LibRaw*: Raise minimum LibRaw to 0.20 (from 0.18) * *libtiff*: 4.0 minimum (from 3.9) * *OpenColorIO*: Make OpenColorIO a required dependency and raise the minimum to 2.2 (from 1.1). * *OpenEXR/Imath*: minimum raised to 3.1 (from 2.4) * *OpenCV*: 4.0 minimum (from 3.x) * *OpenVDB*: Raise OpenVDB minimum to 9.0 * *PNG*: 1.6.0 minimum for libPNG (from 1.5.13) * *Pybind11*: 2.7 minimum * *Robin-map*: 1.2.0 minimum * *WebP*: 1.1 minimum (from 0.6.1) ### ⛰️ New features and public API changes: * *New image file format support:* - *JPEG XL*: Initial JPEG XL support for image input/output - *R3D*: Add initial support to read R3D files. Note that this capability will only be enabled if OIIO is built with the R3D SDK installed and available to be found by the build system. * *oiiotool new features and major improvements*: - `--cryptomatte-colors` takes the name of a cryptomatte set of channels, and produces a color-coded matte in which each ID gets a distinct color in the image. This can be useful for visualizing the matte, among other things. - `--demosaic` takes 1-channel Bayer patterns and turn them into demosaiced 3-channel images - `--buildinfo` command prints build information, including version, compiler, and all library dependencies. - `--ocionamedtransform`: Implement support for OCIO NamedTransforms - Several new stack manipulation commands: `--popbottom` discards the bottom element of the stack, `--stackreverse` reverses the order of the whole stack, `--stackclear` fully empties the stack, `--stackextract ` moves the indexed item from the stack (index 0 means the top) to the top. - `--for` improvements: correct reverse iteration behavior if the step value is negative, or if there is no step value but the start value is greater than the end value. (https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4348) (2.6.3.0) - Expression evaluation improvements: `BOTTOM` refers to the image on the bottom of the stack, `IMG[expression]` is now supported (previously only numeric literals were accepted as the index), check that label/variable names - oiiotool now by default does immediate reads without relying on an ImageCache, unless the `--cache` option is used, which now both enables the use of an underlying IC as well as setting its size. This tends to improve performance. - Change command line embedding for oiiotool & maketx output, by default hiding the command line for security reasons. It can be re-enabled with `--history`. * *Command line utilities*: - *idiff*: Allow users to specify a directory as the 2nd argument - *iv*: Implement Directory Argument Loading for iv - *iv*: Split off the current image in iv into a separate window - *iv*: OCIO color managed display - *iv*: Iv shows constant brown and GL error messages on start-up. - *iv*: Initialize variables before we use them. - *iv*: Add iv data and display windows overlay feature * New global attribute queries via OIIO::getattribute(): - "build:platform", "build:compiler", "build:dependencies" - "build:simd" is the new preferred synonym for the old name "oiio:simd" * *ImageBuf/ImageBufAlgo*: - ImageBuf now has span-based constructors for the variety where it "wraps" a user buffer. This is preferred over the constructor that takes a raw pointer (which is considered deprecated). - New span-based versions of get_pixels, set_pixels, setpixel, getpixel, interppixel, interppixel_NDC, interppixel_bicubic, interppixel_bicubic_NDC. These are preferred over the old versions that took raw pointers. - Start using optional keyword/value params for some ImageBufAlgo functions. - Only back ImageBuf with ImageCache when passed an IC - Make ImageBuf::Iterator lazy in its making the image writable - `IBA::perpixel_op()` is a new way to write IBA-like functions very simply, only supplying the very inner part of the loop that operates on one pixel. - `IBA::demosaic()` takes 1-channel Bayer patterns and turn them into demosaiced 3-channel images - `IBA::ocionamedtransform()`: Implement support for OCIO NamedTransforms * *ImageInput / ImageOutput*: - Add virtual `heapsize()` and `footprint()` to ImageInput and ImageOutput * *ImageCache/TextureSystem*: - Use `shared_ptr` for ImageCache and TextureSystem creation - Overload decode_wrapmode to support ustringhash - Add pvt::heapsize() and pvt::footprint() methods and image cache memory tracking - De-virtualize ImageCache and TextureSystem - IC/TS have new `get_imagespec()`, `imagespec()`, and `get_cache_dimensions()` methods. - *python*: Implement ImageCache.get_imagespec() - `TextureOpt` has been refactored a bit: some fields have been reordered; it's actually called TextureOpt_v2 (TextureOpt is an alias) to allow better compatibility-preserving improvements in the future, and similarly, TextureOptBatched is an alias for TextureOptBatch_v1. The type names of some enums have been changed, but aliases should preserve compatibility in the vast majority of cases. (3.0.0.0) * *API Deprecations*: (please see - Various other minor deprecations of things that had been marked as deprecated for a while in fmath.h dassert.h imagebufalgo.h imagecache.h imageio.h simd.h strutil.h ustring.h - The deprecated headers array_view.h and missing_math.h have been removed. - Make span::size() return size_t, not a signed type * *Build system dependency self-builders*:
The cmake-based build system has been enhanced to give a report of what dependencies it found, what was missing, what was found but was a version too old for our requirement. If the `OpenImageIO_BUILD_MISSING_DEPS` cmake variable is set to "all" (or a list of specific packages), the build system will attempt to build certain missing dependencies locally. Currently, this works for fmt, freetype, Imath, jpeg-turbo, libtiff, OpenColorIO, OpenEXR, pybind11, Robinmap, WebP, Zlib. Additional dependencies will learn to self-build over time. * *Environment variables* - The environment variable `OIIO_LIBRARY_PATH` that contains the search paths for finding image file format plugins has been changed to be called `OPENIMAGEIO_PLUGIN_PATH`. This is more consistent: all the "public API" documented environment variables that are meant for users/sites to adjust are named starting with `OPENIMAGEIO_`, whereas the prefix `OIIO_` is only used for environment variables that are "unofficial" (undocumented, temporary, or meant only for developers to use for debugging). - Rename env variable `OIIOTOOL_METADATA_HISTORY` to `OPENIMAGEIO_METADATA_HISTORY` ### πŸš€ Performance improvements: - *oiiotool*: `--mosaic` improvements to type conversion avoid unnecessary copies and format conversions. - *oiiotool*: Use pointer, not static, for internal color config, slightly reducing oiiotool startup overhead when color configs are not needed. - *simd*: Faster vint4 load/store with unsigned char conversion - *perf/IBA*: Improve perf of IBA::channels in-place operation - *perf*: Overhaul of ColorConfig internals to solve perf issues - *perf/TS*: Reduce TextureSystem memory by slimming down internal LevelInfo size - *TS*: Have maketx/IBA::make_texture only write full metadata to the first mip level. We presume that other than resolution and encoding-related information, other metadata should not be expected to differ between MIP levels of the same image. This saves file size and memory in the IC/TS. - *IC/TS*: Store full metadata only at subimage 0, miplevel 0 for ptex files. - *perf*: Additional timing logging for performance investigations - *ImageBuf*: ImageBuf file read performance -- double reads, extra copies ### πŸ› Fixes and feature enhancements: - *errors*: Print unretrieved global error messages upon application exit. This should help beginning developers see important error messages they have failed to retrieve. - *font rendering*: Improvements to text rendering by `ImageBufAlgo::render_text()` and `oiiotool --text`: - Look up font in text render based on family and style name, in addition to font filename. - Fix incorrect vertical alignment in render_text - Windows newline shows invalid character in text render - Improve internals of font search enumeration - *oiiotool*: Overhaul and fix bugs in mixed-channel propagation - *oiiotool*: Expression substitution now understands pseudo-metadata `NONFINITE_COUNT` that returns the number of nonfinite values in the image, thus allowing decision making about fixnan - *oiiotool*: --autocc bugfix and color config inventory cleanup - *oiiotool*: Improve over-blurring of certain oiiotool --fit situations - *oiiotool*: `-i:ch=...` didn't fix up alpha and z channels - *iinfo*: iinfo was not reading MIP levels correctly - *iv*: Assume iv display gamma 2.2 - *dds*: Always seek to the beginning of the ioproxy during open for DDS and PSD files - *dds*: DDS support more DXGI formats - *heic*: Don't auto-transform camera-rotated images - *heic*: Correctly set imagespec size for heif images (by Gerrard Tai) (2.6.3.0) - *iff*: Refactor iffoutput.cpp for memory safety - *jpeg*: New output hint "jpeg:iptc" can be used to instruct JPEG output to not output the IPTC data to the file's header. - *jpeg2000*: Include the headers we need to discern version - *jxl*: JPEG-XL improvements - *openexr*: Handle edge case of exr attribute that interferes with our hints - *openexr*: Add support for luminance-chroma OpenEXR images. - *openexr*: Implement copy_image for OpenEXR - *openexr*: Fix out-of-bounds reads when using OpenEXR decreasingY lineOrder. - *openexr*: Add proxy support for EXR multipart output - *openexr*: Modernize dwa compression level setting - *ffmpeg*: Add proper detection of new FFmpeg versions - *ffmpeg*: FFmpeg additional metadata - *png*: New output compression mode names recognized: "none", "pngfast". Also some minor speedups to PNG writes. - *png*: Write out proper tiff header version in png EXIF blobs - *png*: A variety of minor optimizations to the PNG writer - *png*: Improve png write with alpha is low - *png*: Fix crash for writing large PNGs with alpha - *png*: Correctly read PNGs with partial alpha - *png*: Round dpi resolution to nearest 0.1 - *png*: Bug in associateAlpha botched alpha=0 pixels - *pnm*: Improvements to pnm plugin - *pnm*: Initialize m_pfm_flip before use to avoid UB. - *psd*: Always seek to the beginning of the ioproxy during open for DDS and PSD files - *psd*: Add support for 16- and 32-bit Photoshop file reads - *psd*: Various PSD files fail to load correctly - *raw*: LibRaw wavelet denoise options - *raw*: Avoid buffer overrun for flip direction cases - *raw*: Expose additional white balancing hints: "raw:user_black", "raw:use_auto_wb", "raw:grey_box", "dng:version", "dng:baseline_exposure", "dng:calibration_illuminant#", "dng:color_matrix#", "dng:camera_calibrationX". - *raw*: Make the crop match in-camera JPEG - *raw*: Check for nullptr in raw input plugin - *raw*: Raw reader - exposing max_raw_memory_mb - *tiff*: Fix TIFF export with EXIF data and I/O proxy - *ImageBuf*: Fix crash when mutable Iterator used with read-IB - *ImageBuf*: Improve IB::nsubimages and other related fixes - *ImageBuf*: Copy/paste error in the ImageBuf iterator copy constructor - *ImageBufAlgo*: IBA::to_OpenCV fails for ImageCache-backed images - *ImageBufAlgo*: Add missing version of warp - *ImageBufAlgo*: IBA::transpose() didn't set output image's format to input - *ImageBufAlgo*: Fix issue when computing perceptual diff - *ImageInput*: Only check REST arguments if the file does not exist, avoiding problems for filenames that legitimately contain a `?` character. - *fix*: Certain int->float type conversions in TypeDesc/ParamValueList - *color management*: Automatically recognize some additional color space name synonyms: "srgb_texture", "lin_rec709" and "lin_ap1". Also add common permutation "srgb_tx" and "srgb texture" as additional aliases for "srgb". - *color management*: Color management nomenclature improvements: "linear" is now just a legacy synonym for the preferred "lin_rec709", which is used widely where applicable. - *security*: Don't use (DY)LD_LIBRARY_PATH as plugin search paths - *fix*: Fix crash when no default fonts are found - *TextureSystem*: Fix missing initialization in TextureOptBatch - *iv*: Avoid crash with OpenGL + multi-channel images - *iv*: If OCIO env is not set or doesn't exist, have iv use built-in config - *iv*: Iv should enable the ImageCache - *ImageCache*: Simplify tile cache clearing. ### πŸ”§ Internals and developer goodies - *int*: Prevent infinite loop in bit_range_convert - *int*: More switching fprintf/etc to new style print - *int*: Various fixes for memory safety and reduce static analysis complaints - *int*: Use OIIO functions for byte swapping to make Sonar happy - *int*: More conversion to new string formatting - *int*: Added validity checks to PNG, JPEG, and EXR readers to try to catch implausible resolutions or channels that are likely to be corrupted or malicious images. - *int*: ImageInput: Initialize pixels of partial tile conversion buffer, avoiding possible floating point errors. - *bit.h*: Move bitcast, byteswap, and rotl/rotr to new bit.h - *bit.h*: OIIO::bitcast adjustments - *filesystem.h*: Filesystem::unique_path wasn't using the unicode rectified string - *filesystem.h*: IOProxy const method adjustments - *fmath.h*: One more fast_exp fix - *fmt.h*: Fix build break from recent fmt change - *hash.h*: Mismatched pragma push/pop in hash.h - *imagebuf.h*: Add `ImageBuf::wrapmode_name()`, inverse of wrapmode_from_string - *oiioversion.h*: Coalesce redundant STRINGIZE macros -> OIIO_STRINGIZE - *platform.h*: Belatedly change OIIO_CONSTEXPR14 to constexpr - *paramlist.h*: Add ParamValueSpan::get_bool() - *platform.h*: In platform.h, define OIIO_DEVICE macro - *simd.h*: Fix leaking of Imath.h into public headers - *simd.h*: Make all-architecture matrix44::inverse() - *simd.h*: AVX-512 round function - *simd.h*: Simplify vbool16 casting - *simd.h*: Address NEON issues - *simd.h*: Gather_mask was wrong for no-simd fallback - *simd.h*: For simd types, use default for ctrs and assignment where applicable - *simd.h*: Fix longstanding probem with 16-wide bitcast for 8-wide HW - *span.h*: Span and range checking enhancements - *span.h*: Make span default ctr and assignment be `= default` - *span.h*: Span utility improvements - *span.h*: Fold span_util.h contents into span.h - *span.h*: New utility functions `span_within()`, `check_span()`, and macro `OIIO_ALLOCA_SPAN`. - *string_view.h*: Deprecate OIIO::string_view::c_str() - *strutil.h*: Add `Strutil::eval_as_bool()` - *strutil.h*: Add `Strutil::string_is_identifier()` - *strutil.h*: Change Strutil::format to default to std::format conventions - *sysutil.h*: Deprecate Sysutil::physical_concurrency() - *texture.h*: Overload decode_wrapmode to support ustringhash - *typedesc.h*: Allow TypeDesc to have all the right POD attributes - *typedesc.h*: Add TypeDesc::Vector3i - *ustring.h*: Make sure C++ knows ustring & ustringhash are trivially copyable - *ustring.h*: Address ignored annotation nvcc warnings on explicitly-defaulted functions - *style*: Update our formatting standard to clang-format 17.0 and C++17 - *int*: Use spans to solve a number of memory safety issues - *cleanup*: Convert more old errorf() to errorfmt() - *fix*: Error retrieval safeguards for recycled objects - *fix*: Improve error messages when a font is not found - *refactor*: Oiiotool break out expression eval methods into separate file - *refactor*: Move most of imageio_pvt.h.in to just a regular .h - *refactor*: Simplify openexr includes - *fix*: Catch potential OCIO exception that we were missing - *fix*: Don't let fmtlib exceptions crash the app - *fix*: Beef up some error messages - *cleanup*: Remove code disabled as of 3.0 - *fix*: Address fmt exceptions for left justification ### πŸ— Build/test/CI and platform ports: * CMake build system and scripts: - Fix Cuda ustring.h warnings - Remove unnecessary headers from strutil.cpp causing build trouble - Print build-time warnings for LGPL gotchas - *build*: Make C++17 be the default C++ standard for building (C++14 is still the minimum for now and can be selected via CMAKE_CXX_STANDARD) - *build*: Provide compile_commands.json for use by tools - *build*: Don't fail for 32 bit builds because of static_assert check - *build*: Provide compile_commands.json for use by tools - *build*: Don't fail for 32 bit builds because of static_assert check - *build*: Better cmake verbose behavior - *build*: Fix include guard - *build*: Add a way to cram in a custom extra library for iv - *build*: Don't fail pybind11 search if python is disabled - *build*: Cleanup - get rid of "site" files - *build*: Fix buld_ninja.bash to make directories and download correctly - *build*: Need additional include - *build*: Make an OpenImageIO_Util_static library and target - *build*: Switch to target-based definitions - *build*: iv build issues with glTexImage3D - *build*: Restore internals of strhash to compile correctly on 32 bit architectures - *build*: LibOpenImageIO_Util does need DL libs, we removed it incorrectly - *build*: Fix missing target_link_options for libraries (by kaarrot) (2.6.2.0) - *build*: Disable clang18 warnings about deprecated unicode conversion - *build*: More warning elimination for clang18 - *build*: Add CMath target for the sake of static libtiff - *build*: Add appropriate compiler defines and flags for SIMD with MSVC - *build/windows*: Fix warning on windows - *build/windows*: Fix for setenv() on Windows - *build*: Gcc-14 support, testing, CI - *build*: New set_utils.cmake for various handy "set()" wrappers - *build*: Upgrade to more modern python3 finding - *build*: Add missing includes to libutil CMake target. - *build*: Avoid rebuilds due to processing of fmt headers - *build*: Rudimentary CUDA support infrastructure (experimental) - *build*: A few cmake cleanups and minor code rearrangements - *build*: Don't link libOpenImageIO against OpenCV - *build*: Fixed the sign compare causing build failure - *build*: Add a build option for profiling - *build*: Don't change CMAKE_XXX_OUTPUT_DIRECTORY when built as subdir - *build*: Add option for build profiling with clang -ftime-trace - *build*: Reduce compile time by trimming template expansion in IBA. * Dependency support: - *deps/OpenVDB*: Protect against mismatch of OpenVDB vs C++ - *deps/OpenVDB*: Adjust OpenVDB version requirements vs C++17 - *deps*: Ptex support for static library - *deps*: Account for header changes in fmt project trunk - *deps*: Deal with changes in fmt's trunk - *deps*: Remove Findfmt.cmake - *deps*: Correctly disable OpenVDB when it's incompatible - *deps*: Fixes for DCMTK - *deps*: Fix warning when Freetype is disabled - *deps*: Remove boost from strutil.cpp - *deps*: FindOpenColorIO failed to properly set OpenColorIO_VERSION - Use exported targets for libjpeg-turbo and bump min to 2.1 - *deps*: Support fmt 11.0 - *deps*: Support and test against OCIO 2.4 - *deps*: No need for OCIO search to use PREFER_CONFIG - *deps*: Raise CMake minimum to 3.18.2 - *deps*: Remove the enforced upper version limit for fmt - *deps*: Search for libbz2 only if FFmpeg or FreeType is enabled. * Testing and Continuous integration (CI) systems: - Tests for ABI compliance - *tests*: Imagebuf_test add benchmarks for iterator traversal - *tests*: Add opencv regression test - *tests*: Improve color management test in imagebufalgo_test - *tests*: Add one more ref output for python-colorconfig test - *tests*: Shuffle some tests between directories - *tests*: Fix docs test, used wrong namespace - *tests/fixes*: Fixes to reduce problems identified by static analysis - *tests*: Add test for filter values and 'filter_list' query - *tests*: Add new heif test output - *tests*: Fix windows quoting for test - *tests*: Remove unused test output ref from old dependency versions - *tests*: Add switch to imageinout_test for enabling floating point exceptions. - *tests*: Fixup after directory refactor of OpenImageIO-images - *ci*: Some straggler repo renames in the workflows - *ci*: CI tests on MacOS ARM, and fixes found consequently - *ci*: Nomenclature change 'os' to 'runner' for clarity - *ci*: Add tiff-misc reference for slightly changed error messages - *ci*: Remove MacOS-11 test - *ci*: Test against gcc-13 - *ci*: Restrict Mac ARM running - *ci*: Rename macro to avoid conflict during CI unity builds - *ci*: Repair Sonar scanner analysis - *ci*: Improve parallel builds by basing on number of cores - *ci*: Update all github actions to their latest versions that's compatible - *ci*: Bump 'latest' test to newer dep versions, document - *ci*: Revert to fix scorecard analysis, try version 2.0.6 (2.6.0.3) - *ci*: Start using macos-14 ARM runners, bump latest OCIO - *ci*: Switch away from deprecated GHA idiom set-output - *ci*: Add vfx platform 2024 - *ci*: Fix Windows CI, need to build newer openexr and adjust boost search - *ci*: Adjust GHA upload-artifact action version - *ci*: Allow triggering CI workflow from web - *ci*: Make one of the Mac tests build for avx2 - *ci*: Enable Windows 2022 CI tests - *ci*: Update scrorecard workflow to fix breakage - *ci*: Fix broken Windows CI by building our own libtiff - *ci*: Typo in build_libtiff.bash - *ci*: For Windows CI, build only release of vcpkg packages - *ci*: New tets: oldest, hobbled, localbuilds - *ci*: Fix GHA CI after they upgraded nodejs - *ci*: Sanitizer new warnings about signed/unsigned offsets in openexr - *ci*: Deal with CentOS 7 EOL and disappearance of yum mirrors - *ci*: CI sanitizer test improvements - *ci*: Add a workflow that builds docs - *ci*: Streamline the old MacOS-12 CI test - *ci*: Test against OpenEXR 3.3 and deal with its 4.0 bump - *ci*: Make scrorecards workflow not fail constantly - *ci*: Limit when automatic docs building ci happens - *ci*: Retire deprecated macos12 runner, try beta macos15 * Platform support: - *win*: Fix building failed from source on Windows ### πŸ“š Notable documentation changes: - *docs*: Convert code examples within the docs to tests that are built executed as part of the testsuite. - Spruce up the main README and add "Building_the_docs" - *docs*: Make an example of doc-to-test in the imagebufalgo chapter - *docs*: Convert examples within the imagebufalgo chapter. - *docs*: Added tests for Simple Image input and updated rst - *docs*: Convert make_texture doc examples to tests - *docs*: Fix RTD configuration for v2 - *docs*: Update INSTALL.md to reflect the latest versions we've tested against - *docs*: Fix typo - *docs*: Minor change to formatting and naming - *docs*: Fix link to openexr test images - *security*: Document CVE-2023-42295 (2.6.0.1) - *docs*: Fix broken IBA color management documentation - *docs*: Update SECURITY and RELEASING documentation - *docs*: Fix tab that was missing from the rendering on rtd - *docs*: Fix python example - *docs*: Fix some typos and add missing oiiotool expression explanations - *docs*: Update INSTALL.md for windows - *doc*: Add missing documentation of ImageBuf locking methods - *doc*: Fixes to formatting and sphinx warnings - *docs*: Clarify that IBA::rotate params are pixel coordinates - *docs*: Clarify TextureSystem::create use of imagecache when shared=true - *docs*: Fix typo where apostrophe was used for possessive of 'it' - *docs/security*: Document CVE-2024-40630 resolution (2.6.3.0) - *docs*: IBA::st_warp was missing from the documentation - *docs*: Move some docs files around - *docs*: Various minor fixes - *docs*: Add documenting comments where missing in string_view and span - *docs*: Fix typo in description of Strutil::parse_values ### 🏒 Project Administration - *admin*: Repo rename -- fix all URL references - *admin*: Alert slack "release-announcements" channel upon OIIO release - *admin*: Relicense more code under Apache 2.0 - *admin*: Account for duplicate emails in the .mailmap - *admin*: Add a ROADMAP document - *docs*: Better documentation of past CVE fixes in SECURITY.md - *admin*: More CLA explanation and how-to links - *admin*: Add deprecation updates to the RELEASING checklist - *admin*: Document my git-cliff workflow for release notes - *admin*: Change docs and comments references master -> main - *admin*: Update OpenImageIO Roadmap - *admin*: Update SECURITY.md for 3.0 beta @ text @$NetBSD: patch-src_cmake_externalpackages.cmake,v 1.3 2024/11/04 21:22:23 adam Exp $ Boost from pkgsrc doesn't have cmake configuration files. --- src/cmake/externalpackages.cmake.orig 2024-11-04 20:08:07.142125120 +0000 +++ src/cmake/externalpackages.cmake @@@@ -34,9 +34,6 @@@@ include (FindThreads) ########################################################################### # Boost setup -if (${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.30") - set (boost_config CONFIG) -endif () if (MSVC) # Disable automatic linking using pragma comment(lib,...) of boost libraries upon including of a header add_definitions (-DBOOST_ALL_NO_LIB=1) @ 1.3 log @openimageio: updated to 2.5.17.0 Release 2.5.17.0 (Nov 1, 2024) -- compared to 2.5.16.0 iinfo: fix: iinfo was not reading MIP levels correctly text rendering: Windows newline shows invalid character in text render fix: Address fmt exceptions for left justification perf: Additional timing logging for performance investigations strutil.h: Fix typo in description of Strutil::parse_values build: Don't change CMAKE_XXX_OUTPUT_DIRECTORY when built as subdir deps: Search for libbz2 only if FFmpeg or FreeType is enabled. tests: Fixup after directory refactor of OpenImageIO-images ci: Make scrorecards workflow not fail constantly ci: Retire deprecated macos12 runner, try beta macos15 docs: Update to vanity URL for the docs Release 2.5.16.0 (Oct 1, 2024) -- compared to 2.5.15.0 ImageInput: Fix: Initialize pixels of partial tile conversion buffer to avoid possible floating point exceptionsΓ₯. iv: Fix: Iv shows constant brown and GL error messages on start-up. iv: Fix: Initialize variables before we use them. pnm: Fix: Initialize m_pfm_flip before use to avoid UB. raw: Fix: Check for nullptr in raw input plugin ci: Streamline the old MacOS-12 CI test ci: Test against OCIO 2.4 docs: Clarify TextureSystem::create use of imagecache when shared=true docs: Switch license name in docs admin: Change docs and comments references master -> main @ text @d1 1 a1 1 $NetBSD$ @ 1.2 log @Update to 1.8.15 Changelog: Release 1.8.15 (1 Oct 2018) -- compared to 1.8.14 ------------------------------------------------- * Change to internal thread pool to fix rare crash when lowering number of threads. #2013 * Build: Use pkgconfig in FindOpenEXR.cmake if available. #2008 * ImageBufAlgo::channel_append now will work with mixed input data types. #2022 Release 1.8.14 (1 Sep 2018) -- compared to 1.8.13 ------------------------------------------------- * Support compilation by clang 7.0. #1995 * Bug fix to ImageBuf::roi_cointains(). #1997 * Fix ImageSpec constructor from an ROI, display/"full" window did not get the right default origin. #1996 * GIF read: fix crash when reading GIF with comment extension but no comment data. #2001 * JPEG write: robust to accidentally setting the "density" metadata to values larger than JPEG's 16 bit integer field will accommodate. #2002 * ImageSpec::erase_attribute() fix bug where it got case-sensitivity of the search backwards when built using std::regex rather than boost::regex. #2003 Release 1.8.13 (1 Aug 2018) -- compared to 1.8.12 ------------------------------------------------- * Improved finding LibRaw on Windows #1959 * Ensure FFMPEG (if found) is the minimum supported version 2.6. #1963 * Developer goodies: `intrusive_ptr<>` given a dangerous `release()` method (use with caution). #1986 Release 1.8.12 (1 Jun 2018) -- compared to 1.8.11 ------------------------------------------------- * Build fix for 32 bit Windows -- disable SSE that was making trouble. #1933 * Improved UTF-8 filename support for OpenEXR filenames. #1941 * filesystem.h: Improve UTF-8 handling for unique_path and temp_directory functions. #1940 * Fixes to un-break the build when EMBEDPLUGINS=0. #1942 * Fix iv (especially on OSX) for various ways it has been broken since the shift to Qt5. #1946 * Improvements in finding the location of OpenJPEG with Macports. #1948 * ImageCache and TextureSystem now have close(filename) and close_all() methods, which for one file or all files will close the files and release any open file handles (also unlocking write access to those files on Windows), but without invalidating anything it knows about the ImageSpec or any pixel tiles already read from the files, as would happen with a call to the much more drastic invalidate() or invalidate_all(). #1950 Release 1.8.11 (1 May 2018) -- compared to 1.8.10 ------------------------------------------------- * Fix to strtof, strtod for non-C locales. #1918 * Add up-to-date Nuke versions to FindNuke.cmake. #1920 * Allow building against ffmpeg 4.0. #1926 Release 1.8.10 (1 Apr 2018) -- compared to 1.8.9 ------------------------------------------------- * oiiotool frame sequence wildcard improvements: fix handling of negative frame numbers and ranges, also the `--frames` command line option is not enough to trigger a loop over those frame numbers, even if no other arguments appear to have wildcard structure. #1894 * TIFF bug fix: read_tile() and read_tiles() input of un-premultiplied tiles botched the "shape" of the tile data array. #1907 * Windows/MSVC build fix: use the `/bigobj` option on some large modules that need it. #1900, #1902 * fmath.h, hash.h, color.h: changes to make it friendly to Cuda compilation (#1888, #1896, #1905). * fmath.h avx-512 improvements. #1893 * testsuite is not Python 2/3 agnostic. Release 1.8.9 (1 Mar 2018) -- compared to 1.8.8 ------------------------------------------------- * Properly find newer openjpeg 2.3. #1871 * Bug fix in IBA::copy where uninitialized dst image botched its ROI. #1876 * RAW: Important bug fix when dealing with rotated (and vertical) images, which were not being re-oriented properly and could get strangely scrambled. #1854 Release 1.8.8 (1 Feb 2018) -- compared to 1.8.7 ------------------------------------------------- * OpenEXR: gracefully detect and reject files with subsampled channels, which is a rarely-to-never-used OpenEXR feature that we don't support properly. #1849 * Field3d: Prevent crashes when open fails. #1848 * RAW: Add "raw:HighlightMode" configuration hint to control libraw's handling of highlight mode processing. #1851 * zfile: more careful gzopen on Windows that could crash when given bogus filename. #1839 * DICOM: Fix dcmtk build errors on some platforms. Also, the minimum dcmtk version we suport is 3.6.1. #1843 * simd.h: Minor fixes especially for avx512. #1846 * iv: Drop GLEW and obsolete GL stuff from iv in favor of QOpenGLFunctions, and fix broken pixelview text rendering. #1834 * On Unix/Linux, add explicit DL library dependency to libOpenImageIO.so itself instead of only to the binaries and test utilities. #1860 * Build fixes for Hurd OS. #1850 Release 1.8.7 (1 Jan 2018) -- compared to 1.8.6 ------------------------------------------------- * All string->numeric parsing and numeric->string formatting is now locale-independent and always uses '.' as decimal marker. #1796 * oiiotool outputs are now written to temporary files, then atomically moved to the specified filename at the end. This makes it safe for oiiotool to "overwrite" a file (i.e. `oiiotool in.tif ... -o out.tif`) without problematic situations where the file is truncated or overwritten before the reading is complete. #1797 * Python bindings for ImageBuf.get_pixels and set_pixels fixed some bugs when passed an ROI without a channel range specified. #1802 * More robust parsing of XMP metadata for unknown metadata names. #1816 * strutil.h now includes a to_string<> utility template. #1814 Release 1.8.6 (1 Nov 2017) -- compared to 1.8.5 ------------------------------------------------- * oiiotool: Improved logic for propagating the pixel data format through multiple operations, especially for files with multiple subimages. #1769 * ImageCache/TextureSystem: improved stats on how long we wait for ImageInput mutexes. #1779 * Build: Fix build bug where if the makefile wrapper got CODECOV=0, it would force a "Debug" build (required for code coverage tests) even though code coverage is instructed to be off. (It would be fine if you didn't specify CODECOV at all.) #1792 * Build: minor fixes for Windows build. #1793, #1794 * Developers: The ParamValue class has added get_int_indexed() and get_float_indexed() methods. #1773 * Developers: array_view added begin(), end(), cbegin(), cend() methods, and new constructors from pointer pairs and from std::array. * Developers: Fixed build break in simd.h when AVX512VL is enabled. #1781 * Developers: fmath.h now defined OIIO_FMATH_H so other files can easily detect if it has been included. * Build: Fix broken build when Freetype was not found or disabled. #1800 * Python: fixed missing exposure of RATIONAL enum value. #1799 Release 1.8 (1.8.5 - 1 Oct 2017) -- compared to 1.7.x ---------------------------------------------- New minimum dependencies: * **C++11** (should also build with C++14 and C++17) * **Compilers**: gcc 4.8.2 - gcc 7, clang 3.3 - 5.0, or MSVS 2013 - 2017 * **Boost >= 1.53** (tested up through 1.65) * **CMake >= 3.2.2** (tested up through 3.9) * **OpenEXR >= 2.0** (recommended: 2.2) * (optional) **Qt >= 5.6** * (optional) **Python >= 2.7** (3.x is also ok) **Changes to install layout**: fonts now get installed to `PREFIX/share/fonts/OpenImageIO`, OIIO docs now get installed to `PREFIX/share/doc/OpenImageIO`, and the Python module gets installed to `PREFIX/lib/pythonMAJ.MIN/site-packages`. #1747 #1760 (1.8.5) Major new features and improvements: * New oiiotool features: * `--info:format=xml` format option requests what format the info is printed. Current choices: `"text"`, `"xml"`. #1504 (1.8.0) * `--info:verbose=1` verbose option make file info print full metadata, but without needing to make other oiiotool operations verbose as would happen with `--info -v`. #1504 (1.8.0) * `--colormap` applies a color map based on the input values; the map can be one of several named ones, or given explicitly with numerical values. #1552 (1.8.1) * `-i:type=...` lets you override the internal buffer type that will be used for an input image. #1541 (1.8.1) * `-i:ch=a,...` lets you restrict the input to only the listed channels. This is semantically equivalent to following the input with a `--ch` command, but by integrating into the input itself, it can sometimes avoid using memory and I/O for unneeded channels. #1541 (1.8.1) * `--echo STRING` prints the string to the console. This can contain expressions! So you can do something like oiiotool file.exr -echo "Size is {TOP.width}x{TOP.height}" #1633 (1.8.3) * `--eraseattrib REGEX` erases all metadata attributes from the top image whose names match the regular expression. #1638 (1.8.3) * `--text` takes new optional modifiers: `xalign=` (left, right, center) and `yalign=` (baseline, top, bottom, center) to control how the text is aligned to the (x,y) position specified, `shadow=` (default = 0) than when nonzero controls the width of a "drop shadow" that makes the text clearer when rendered on a background image of similar color. #1646 (1.8.3) * `--deepholdout` culls all samples that are farther away than the opaque depth of a second holdout image. #1691 (1.8.4) * New ImageBufAlgo functionality: * `color_map()` applies a color map based on the input values; the map can be one of several named ones, or given explicitly with numerical values. #1552 (1.8.1) * Added implementation of ImageBufAlgo::to_IplImage(). #1461 (1.7.9/1.8.1) * `render_text()` has added parameters controlling text alignment and drop shadows. #1646 (1.8.3) * `deep_holdout()` culls all samples that are farther away than the opaque depth of a second holdout image. #1691 (1.8.4) * DICOM file format support (currently read-only). DICOM is the standard for medical imaging data. Will only build if dependency "dcmtk" is found at build time. #1534 (1.8.1) * Experimental: The TextureSystem API has been extended to support batches of texture lookups in a SIMD fashion. At present, only the new API was added, a full implementation is in progress and may not be forthcoming or reliable until 1.9. Even the API is experimental, and may change for future releases. #1733 (1.8.5) Public API changes: * TypeDesc: * Rational support: new 'semantic' hint RATIONAL and TypeDesc::Rational. A rational is an int of aggregate VEC2 and hint RATIONAL, and should be interpreted as val[0]/val[1]. #1698 (1.8.5) * Added OIIO-scoped `static constexpr` versions of preconstructed TypeDescs (e.g., `TypeFloat`). We are deprecating the ones that were static data members of TypeDesc (e.g., TypeDesc::TypeFloat), they will be removed in some future release. (1.8.5) * ImageSpec: * New `ImageSpec::serialize()` returns a string with a serialized version of the contents of the ImageSpec. It may be text (human readable, like is printed by `oiiotool -info -v`) or XML. #1504 (1.8.0) * `ImageSpec` has a new constructor that accepts a `ROI` for image dimensions and channels. #1646 (1.8.3) * New `ImageSpec::channelspec()` retrieves the index of a named channel. #1691 (1.8.4) * New `ImageSpec::channelname(int)` safely retrieves the index of a named channel. #1706 (1.8.5) * ColorConig::createLookTransform() and createDisplayTransform() have been extended to allow multiple key/value context pairs, by making them comma-separated lists. The createColorProcessor() method has also been extended to take context key/value pairs. #1542 (1.7.8, 1.8.0) * `ImageBuf::read()` now has a variety that takes a channel range, allowing you to populate an ImageBuf with a subset of channels in a file, potentially saving memory and I/O for the unneeded channels. #1541 (1.8.1) * Python: Fix unimplemented ImageBufAlgo.computePixelStats. #1596 (1.8.2/1.7.11) * imageio.h: Fix incorrect declaration of declare_imageio_format(). #1609 (1.8.2/1.7.11) * `ImageBuf::wrap_mode_from_string()` converts string wrap mode names (such as "black") into `ImageBuf::WrapMode` enum values. #1615 (1.8.3) * New `OIIO::getattribute()` queries: * `"input_format_list"` and `"output_format_list"` return comma-separated lists of all formats that support input and output, respectively. #1577 (1.8.3) * `"oiio:simd"` returns a comma-separated list of SIMD capabilities that were enabled at build time, and `"hw:simd"` returns the list of capabilities available on the currently running hardware. #1719 (1.8.5) * `ImageBufAlgo::render_text()` API call has been overhauled, in addition to new alignment and shadow aprameters, the color has changed from a raw pointer to an `array_view` for better memory safety. Also, it is now valid for the destination image to be uninitialized, in which case it will be initialized to be just big enough for the text. #1646 (1.8.3) * DeepData: * New `DeepData::opaque_z()` returns the depth value at which a pixel becomes fully opaque. #1691 (1.8.4) * New `DeepData::initialized()` and `allocated()` return whether the DD is initialized and allocated, respectively. #1691 (1.8.4) * `DeepData::split()` has been changed to return a `bool` indicating whether any split occurred. #1691 (1.8.4) * Remove some long-deprecated varieties of `ImageBufAlgo::colorconvert()`, `ociolook()`, and `ociodisplay()`. #1695 (1.8.4) * TypeDesc now allows specification of "rational" values, using a vec2i (aggregate 2-vector of int) with a semantic hint of RATIONAL, i.e., `TypeDesc(INT, VEC2, RATIONAL)`, which is also aliased as `TypeDesc::TypeRational`. The value is understood to be val[0]/val[1]. #1698 (1.8.5) * ParamValueList::get_float will automatically convert rational values to float. #1698 (1.8.5) * The standard metadata "FramesPerSecond" has had its definition changed from `float` to `rational`. Retrieving it as `float` should still work as always. But apps and plugins that wish to treat it as a true rational with no loss of precision are able to do so. This is only known to directly affect the OpenEXR, GIF, and FFMPEG metadata. #1698 (1.8.5) Fixes, minor enhancements, and performance improvements: * oiiotool: * `--chappend` resolves redundant channel names by using the subimage name, if available. #1498 (1.8.0/1.7.8) * `--mosaic` now gracefully handles the case of not having enough images to completely fill the MxN matrix, with "left over" slots black. #1501 (1.8.0/1.7.8) * When command line arguments fail to parse properly, `oiiotool` will exit with a non-zero shell status. #1540 (1.8.0) * `--colorconvert`, `--ociodisplay`, and `--ociolook` can now take multiple context key/value pairs (by allowing `key=` and `value=` optional paramters be comma-separated lists). #1504 (1.8.0) * Handle 'oiiotool --colorconvert X X' (transform from and to spaces that are the same) without considering it an error. #1550 (1.8.0/1.7.8) * Expression substitution now recognizes the following new metadata names: MINCOLOR, MAXCOLOR, AVGCOLOR. An example use is to stretch the value range of an image to fill the full [0-1] range: oiiotool in.exr -subc {TOP.MINCOLOR} -divc {TOP.MAXCOLOR} -o out.exr #1553 (1.8.1) * `--fit:exact=1` use of the new `exact=1' option will perform the resize to preserve exact aspect ratio and centering of the fit image to true sub-pixel precision (at the possible risk of slight blurring, especially of the edges), whereas the default (`exact=0`) will keep the image sharper but round the size and offset to the nearest whole pixel values. (1.8.1). * `-i:type=...` optional modifier to `-i` forces a read of the input file into a particular data type. #1541 (1.8.1) * `-i:ch=...` optional modifier to `-i` specifies that only certain named channels should be read from the file. Under extreme circumstances when only a small subset of channels is needed from an image file with many channels, this may improve speed and I/O. #1541 (1.8.1) * Improved logic governing output data formats: non-cached inputs didn't set default output data format correctly, and per-channel output formats updated defaults when they shouldn't have. #1541 (1.8.1) * `--diff` : in addition to the pixel coordinates and differences of the biggest differing pixel, it now also prints the full values of all channels of that pixel for both images. #1570 (1.8.1) * `oiiotool -d` giving per-channel formats is no longer confused by channel renaming with `--chnames`. #1563 (1.8.1/1.7.9) * `--debug` nor prints the total runtime and peak memory use after each individual op. #1583 (1.8.1) * `-iconfig` not in all cases correctly propagate the input config attribute to the file read. #1605 (1.8.2/1.7.11) * Fixed `--crop`: it did not honor the `-a` flag to apply the crop to all subimages. #1613 (1.8.2/1.7.11) * In the case of runtime errors, `oiiotool` now echoes the entire command line. This is helpful for debugging mangled oiiotool command lines assembled by scripts. #1614 (1.8.3) * Improved error reporting of file open errors when -iconfig is used. #1626 (1.8.3/1.7.13) * Expression evaluation now substitutes `FRAME_NUMBER` with the numeric frame number for frame sequence wildcards, and `FRAME_NUMBER_PAD` with the frame number 0-padded to the number of total digits specified by the command line `--framepadding` argument. #1648 (1.8.3) * `--resize` and `--resample` now have more intuitive behavior for images where the display and pixel data windows are not the same, especially if the data window had a nonzero origin (such as with crop or overscan). #1667 (1.8.4/1.7.14) * `--resample` has been extended to work for "deep" images. #1668 (1.8.4/1.7.14) * `--deepmerge` now will give a useful error message when the image do not have the same number of channels. #1675 (1.8.4/1.7.14) * `--autocc` more gracefully handles unknown color spaces with a warning, rather than a full error and termination. #1681 (1.8.4) * `--resample` now takes an optional modifier `interp=0` to control whether bilinear sample is used (default) or true closest-pixel point sampling. #1694 (1.8.4) * You can set rational metadata on the command line like this: `oiiotool foo.exr --attrib:type=rational onehalf "50/100" -o rat.exr` #1698 (1.8.5) * `--fillholes` fixed a bug where, if asked to operate on an image with nonzero origin (crop, overscan, shrink-wrap), it would incorrectly move the pixels to the origin. #1768 (1.8.5) * ImageBufAlgo: * `channel_append()` resolves redundant channel names by using the subimage name, if available. #1498 (1.8.0/1.7.8) * `colorconvert()`, `ociodisplay()`, and `ociolook()` can now take multiple context key/value pairs (by allowing they `context_key` and `context_value` paramters be comma-separated lists). #1504 (1.8.0) * `draw_rectangle()` (and `oiiotool --box`) wasn't drawing properly for the degenerate case of a rectangle that takes up just one pixel. #1601 (1.8.2) * `resample()` has been extended to work for "deep" images. #1668 (1.8.4/1.7.14) * `deep_merge()` now will give a useful error message when the images do not have the same number of channels. #1675 (1.8.4/1.7.14) * `deep_merge()` performance has been greatly improved. #1739 (1.8.5) * `resample()` fixed a subtle 1/2 pixel shift, now it more closely aligns with `resize()`. #1694 (1.8.4) * `fillholes_pushpull()` fixed a bug where, if asked to operate on an image with nonzero origin (crop, overscan, shrink-wrap), it would incorrectly move the pixels to the origin. #1768 (1.8.5) * ImageBuf: * Fix broken threads(n) method, which didn't correctly pass the right number of threads along. #1622. (1.8.3/1.7.12) * Copy constructor from another ImageBuf was previously broken for IB's that wrap application buffers. #1665 (1.8.4/1.7.13) * TextureSystem / ImageCache / maketx: * `IC::get_image_info` (or `TS::get_texture_info`) queries for "channels" on UDIM file patterns now succeed, returning the value for the first matching file it finds. (N.B.: Relies on all textures within the same UDIM set having the same nchannels.) #1502, #1519, #1530 (1.8.0/1.7.8) * maketx: multiple simultaneous maketx process trying to create the same texture will no longer clobber each other's output. #1525 (1.8.0/1.7.8) * ImageCache: make robust to changes in autotile after opening and reading from untiled files. #1566 (1.8.1/1.7.9) * ImageCache: fix initialization bug that made the reported stats output nonsensical in the numbers it gave for "redundant reads". #1567 (1.8.1/1.7.9) * get_image_info queries of "displaywindow" and "datawindow" did not correctly return a 'true' value when the data was found. #1574 (1.8.1/1.7.9) * maketx fix: two textures that had identical source pixels but differed in whether they resized with "highlight compensation" incorrectly ended up with identical hashes, and thus could be confused by the TextureSystem at runtime into thinking they were duplicates. The hash is now fixed. #1599 (1.8.2/1.7.11) * Statistics no longer list as "BROKEN" files which were invalidated, or files that were initialized with an ImageCacheFile but never opened. #1655 (1.8.4) * ImageCache::get_image_info() will now return a proper error (and not hig an assertion) if asked for information about a subimage or MIP level that does not exist in the file. #1672 (1.8.4/1.7.14) * TextureSystem::get_texels fixes crashing behavior. #1669 (1.8.4/1.7.14) * Big performance improvement on Windows with MSVC by removing certain empty destructors in simd.h that was preventing MSVC from fully inlining those classes. #1685 (1.8.4/1.7.15) * maketx now supports `--colorconfig` option to explicitly point it to an OpenColorIO config file, just like `oiiotool `--colorconfig`. #1692 (1.8.4) * Fix rare edge case crash in ImageCache. #1696 (1.8.4/1.7.15) * Improved error messages for broken files. Specifically, it's much more clear now when a file is broken because it's being rejected as a texture because it's untiled or not MIP-mapped. #1751 (1.8.5) * The maketx-generated metadata "oiio:SHA-1", "oiio:ConstantColor" and "oiio:AverageColor" are ignored if the file has signs that it was not directly generated by `maketx` or `oiiotool -otex` (specifically, if it's not tiled, has no "textureformat" tag, or if its "software" tag doesn't mention maketx or oiiotool). This helps for the case where a maketx-generated file is loaded into PhotoShop (or otherwise altered), saved with different pixel values but the old SHA-1, which would no longer be valid and therefore cause the new file to be misidentified as a duplicate texture even though it's not. #1762 (1.8.5) * Bug fix to possible crashes when adding dither to tiled file output (buffer size miscalculation). #1518 (1.8.0/1.7.8) * Make sure that sRGB<->linear color transform still work (in the obvious way) even when OpenColorIO is present but that its configuration for some reason doesn't know about "sRGB" space. #1554 (1.8.1) * Improved performance of input of many-channel files with differing per-channel data formats. #1541 (1.8.1) * `idiff` : in addition to the pixel coordinates and differences of the biggest differing pixel, it now also prints the full values of all channels of that pixel for both images. #1570 (1.8.1) * ImageInput::read_tiles when only a channel subset is read, fixed case with certain data sizes where the copy to user buffer got mangled. #1595 (1.8.2/1.7.11) * BMP: * Add support for version 5 of the BMP format header. $1616 (1.8.3/1.7.12) * FFMpeg/movies: * "FramesPerSecond" metadata has had its type changed to rational. #1709 (1.8.5) * GIF: * "FramesPerSecond" metadata has had its type changed to rational. #1709 (1.8.5) * IFF: * Fix IFF output that didn't correctly save the "Author" and "Date" metadata. #1549 (1.8.1/1.7.8) * JPEG: * Be more reslient to malformed Exif data blocks with bogus offsets #1585 (1.8.1/1.7.10) and #1639 (1.8.3/1.7.13). * When you ask the JPEG writer to output files with unsupported channel counts (JFIF files only allow 1 or 3 channels), it will just silently drop extra channels, rather than having a hard error. #1643 (1.8.3) * OpenEXR: * Fix global attribute "exr_threads" value, -1 should disable IlmImf's thread pools as advertised. #1582 (1.8.1) * Allow compression "none" for deep exr files. (1.8.2/1.7.11) * Fixed input problem with sorting order of spectral alpha channels (RA, GA, BA, or AR, AG, AB). #1674 (1.8./1.7.14) * Can handle true rational metadata, including FramesPerSecond and captureRate. #1698 (1.8.5) * Fix problem with 2-channel images putting the channels in the wrong order. #1717 (1.8.5/1.7.16) * PNG: Better extraction of XMP from PNG files. #1689 (1.8.4) * PSD: * Support has been added for "cmyk", "multichannel", and "grayscale" color modes. And support was fixed for rgb and grayscale 32 bit per sample bit depth. #1641 (1.8.3/1.7.13) * Fix issue for layer mask channels. #1714 (1.8.5) * RAW: * Fix possible crash when reading certain raw metadata. #1547 (1.7.8/1.8.0) * The default value for missing "raw:use_camera_matrix" has been changed to 1 (not 0) to better match default behavior of libraw/dcraw. #1629 (1.8.3/1.7.13) * Add support for selecting new demosaicing algorithms: "DMT" (mode 11) and "AAHD" (mode 12). Renamed the "Modified AHD" to "AHD-Mod" to simplify and match libraw terminology. Made matching of demosaicing algorithms case-insensitive. #1629 (1.8.3/1.7.13) * Support "ACES" color space for direct conversion while reading RAW images (supported in libraw 0.18 or newer). #1626 (1.8.3/1.7.13) * Add "raw:user_sat" configuration attribute to the reader. #1666 (1.7.15/1.8.4) * The pixels are now decoded (expensive) only when they are read, not when the file is first opened. This makes raw reading much faster for apps that are only interested in the metadata and not the pixel data. #1741 (1.8.5) * Unpack pixels when they are needed, not when the file is opened. This makes it much faster to read RAW file only to extract the metadata, if you don't need the pixel values. #1741 (1.8.5) * RLA: * Fix RLA reading and writing with certain channel orders and mixded data formats. #1499 (1.8.0/1.7.8) * TIFF: * Fix to TIFF handling of certain unusual tags. #1547 (1.7.8/1.8.0) * Now has a way to read raw pixel values from CMYK files, without the automatic conversion to RGB (pass configuration attribute "oiio:RawColor" set to nonzero). #1605 (1.8.2/1.7.11) * Improved I/O of color separation images, particularly those with custom InkSet attributes. #1658 (1.8.4/1.7.15) * Fix typo that prevented correct reading of some Exif fields. #1625 (1.8.3/1.7.12) * TIFF output omitted setting the "Make" and "Model" metadata tags. #1642 (1.8.3/1.7.13) * Images with fewer than 4 channels, but one of those channels was alpha, were not correctly marking spec.alpha_channel. #1718 (1.8.5/1.7.16) * The XPOSITION and YPOSITION tags are now interpreted as relative to the RESOLUTIONUNIT, whereas before it was assumed to be measured in pixels. We are confident that the new way is more in line with the intent of the TIFF spec. #1631 (1.8.5) * webp: * Several new sanity checks prevent the webp reader from spending too much I/O time and memory reading bogus files (malformed, corrupted, or not a webp after all). #1640 (1.8.3/1.7.13) * Nuke plugin: Fix txReader to properly restore saved MIP level knob value. #1531 (1.8.0) * Fixed several (so far unnoticed) buffer overruns and memory leaks. #1591 (1.8.2) * TIFF, JPEG, others: Improved reading Exif meatdata from XMP blocks, now it does a better job of discerning the proper data types. #1627 (1.8.3/1.7.13) * In several places, the formatting of date metadata has been changed to have a leading zero rather than leading space for hours < 10, i.e., "02:00:00" rather than " 2:00:00". #1630 (1.8.3) * Improve XMP parsing (for any format): for malformed XMP, still honor the parts that could be parsed properly; recognize additinoal tags for GPano (Google's Photo Sphere metadata schema) and camera raw (crs: prefix) metadata; improve speed of XMP parsing. #1679 (1.8.4) * Improved handling and color conversion of gamma-corrected images (DPX, HDR, PNG, RLA, Targa) by supporting linearization correctly even in the presence of OCIO configs that don't know about it. #1684 (1.8.4) * Fixed static initialization order fiasco error involving interaction between ColorConfig and Strutil. #1757 (1.8.5) Build/test system improvements: * **Changes to install layout**: fonts now get installed to `prefix/share/fonts/OpenImageIO`, OIIO docs now get installed to `prefix/share/doc/OpenImageIO`, and the Python module gets installed to `prefix/lib/pythonMAJ.MIN/site-packages`. #1747 #1760 (1.8.5) * Support for building against ffmpeg 3.1 (their API has changed). #1515 (1.8.0/1.7.8) * Build no longer gets confused about include files from older installations of OIIO elsewhere on the system. #1524 (1.8.0/1.7.8) * Improvements in finding OpenJPEG. #1520 (1.8.0/1.7.8) * Improved finding of OCIO headers. #1528 (1.8.0/1.7.8) * Fix compile warnings for Clang 3.9. #1529 (1.8.0/1.7.8) * Minimum C++ standard of C++11 is expected and enforced. #1513 (1.8.0) * Minimum Boost is now 1.53. #1526 (1.8.0) * Fix compiler warning on Fedora aarch64. #1592 (1.8.1) * Tweak OpenJPEG include file search rules to prefer newer versions when multiple are installed. #1578 (1.8.1) * Build option `SANITIZE=...` lets us use the sanitizers. #1591 (1.8.2) * Big refactoring of the cmake build files. #1604 (1.8.2) * When using a recent enough C++ compiler and standard library, OIIO will now use C++11 std::regex rather than boost regex. #1620,#1644 (1.8.3) * Support for clang-tidy using build time flags CLANG_TIDY=1, CLANG_TIDY_ARGS=..., and optionally CLANG_TIDY_FIX=1. #1649 (1.8.4) * Fix Windows warnings about SIMD types as function arguments and about bool vs int. #1659 (1.8.4) * Changed the way namespaces work. Instead of a 2-level namespace, make a one-level namespace, and automatically embed the major and minor version in it. (Can stll override the basename.) #1662 (1.8.4) * Fixes to OSX rpath behavior of linked binaries. #1671 * Upgraded the local PugiXML (when not using an external system version) to release 1.8.1. #1679 (1.8.4) * Beef up Strutil unit tests. (1.8.5) * `iv` has been upgraded to use Qt 5.x. Support for Qt 4.x is hereby deprecated. #1711 (1.8.5) * Make the search for boost_python3 more reliable. #1727 (1.8.5) * Fix python site-packages path for installation. #1722 (1.8.5) * Fixes for building with gcc 7. (1.8.5) * Support and fixes for building with clang 5.0. #1746 (1.8.5) * Support/fixes for Boost 1.65. #1553 (1.8.5) * Simplify CMake scripts by using GNUInstallDirs to set standard installation paths. #1747 (1.8.5) Developer goodies / internals: * Sysutil::Term formatting now works properly in Windows (though is only functional for Windows 10 or above). (1.8.0/1.7.8) #1527 * C++11 idioms: * We now eschew BOOST_FOREACH, in favor of C++11 "range for". #1535 * We now use std::unique_ptr, no longer use boost::scoped_ptr or boost::scoped_array. #1543 (1.8.0) #1586 (1.8.1) * Instead of the various boost components, we now use `std::` versions of unordered_map, unordered_set, shared_ptr, hash, bind. #1586 (1.8.1) * Change deprecated C headers (such as ``) to C++ (``). #1649 (1.8.4) * Use `std::vector<>::emplace_back()` where applicable. #1657 (1.8.4) * Mark ImageInput/ImageOutput derived classes as 'final'. (1.8.5) * array_view.h: * Add front() and back() methods. #1724 (1.8.5) * Simplified array_view template to be 1D only. #1734 (1.8.5) * atomic.h: * Added atomic_min and atomic_max. #1661 (1.8.4) * Added atomic_fetch_add for `std::atomic` and double. #1661 (1.8.4) * Assume std::atomic is available, remove all code that is only needed for pre-C++11. #1661 (1.8.4) * benchmark.h: * New `Benchmarker` class utility for micro-benchmarking. #1577 (1.8.5) * Moved time_trial, timed_thead_wedge, DoNotOptimize, clobber_all_memory to benchmark.h. #1577 (1.8.5) * errorhandler.h: Change all ErrorHandler methods to use variadic templates rather than varargs. #1653 (1.8.4) * filesystem.h: * Better exception safety for Filesystem::searchpath_find. #1680 (1.8.4/1.7.15) * fmath.h: * Fixed typo in fmath.h that made bitcast_to_float incorrect. #1543 (1.8.0) * Templatize round_to_multiple() so it works with types other than `int`. #1548 (1.8.0) * `interpolate_linear()` utility linearly interpolates from a list of evenly-spaced knots. #1552 (1.8.1) * Slight reformulation of clamp() ensures sane results even with NaN parameters. #1617 (1.8.3) * Bug fixes to `ifloor()` and `floorfrac()`, which turned out to give incorrect results for exact negative integer values. Also added simd vector-based versions of `floorfrac`. #1766 (1.8.5) * paramlist.h: * ParamValueList has been refactored and now inherets from, rather than containts, a `std::vector`. This removes most of the additional code from the class. #1677 (1.8.4) * ParamValue new methods: `get<>()`, `get_int()`, `get_float()`, `get_string()`, `get_ustring()` retrieve and convert. #1686 (1.8.4) * ParamValueList new methods: `get_int()`, `get_float()`, `get_string()`, `get_ustring()` search, retrieve, and convert (much like the equivalent versions in ImageSpec did). #1686 (1.8.4) * Remove the pointless typedefs `ImageIOParameter` and `ImageIOParameterList` in favor of `ParamValue` and `ParamValueList`, respectively. #1690 (1.8.4) * platform.h: * More `cpu_has_...()` tests for newer CPU capabilties. #1719 (1.8.5) * Remove deprecated OIIO_NOTHROW macro, which should now simply be C++11 `noexcept`. #1736 (1.8.5) * strutil.h / Strutil: * Add `Strutil::printf()` and `Strutil::fprintf()`, typesafe and non-thread-jumbled replacements for C versions. #1579, #1656 (1.8.1, 1.8.4) * `from_string<>` has been extended to 'unsigned int'. (1.8.3/1.7.13) * `Strutil::parse_identifier_if` #1647 (1.8.3) * safe_strcpy now takes a string_view, and more closely conforms to the behavior of strncpy by filling in the extra space with 0 padding. (1.8.5) * simd.h: * Add a matrix44 constructor from 16 floats. #1552 (1.8.1) * Renamed files floatN, intN, boolN to vfloatN, vintN, vboolN, to avoid confusion with bit lengths of scalars. #1719 (1.8.5) * Overhaul to support AVX-512 via vfloat16, vint16, vbool16 classes. #1719 (1.8.5) * load_mask, store_mask, and scatter/gather added for all types. #1732 (1.8.5) * Renamed `floori()` to `ifloor()` to match the analogous scalar function in fmath.h. #1766 (1.8.5) * strided_ptr.h: The `strided_ptr<>` template is now also templated on the stride units -- the default is to measure strides in units of sizeof(T), but it's possible to override and measure in bytes (the old behavior). #1758 (1.8.5) * thread.h: * thread_pool class offers true persistent thread pool. #1556, #1581 (1.8.1) * Lots of C++ modernization of thread_group and spin_mutex. #1556 (1.8.1) * Environment variable `OPENIMAGEIO_THREADS` can artificially raise or lower the default number of threads (otherwise, it defaults to the number of processor cores available). #1581 (1.8.1) * timer.h: added timed_thread_widge() that benchmark code and prints statistics about thread scaling. #1660 (1.8.4) * typedesc.h: * Modernized TypeDesc with C++11 constexpr where applicable. #1684 (1.8.4) * New `TypeDesc::basevalues()` method. #1688 (1.8.4) * unittest.h: * Colored error messages and auto error return on completion. #1731 (1.8.5) * *NEW* parallel.h: * parallel_for, parallel_for_chunked, parallel_for_each offer simple thread_pool-based parallel looping in 1 and 2 dimensions. #1556, #1581 (1.8.1) * Internal `OIIO::debugmsg()` call has been renamed to `OIIO::debug()`, and setting env variable OPENIMAGEIO_DEBUG_FILE can redirect the debug messages to a file. #1580 (1.8.1) * Upgraded tinyformat to the latest master, also changed all the places where we used TINYFORMAT_WRAP_FORMAT to use of C++11 variadic templates. #1618 (1.8.3) * *NEW* function_view.h : function_view<> is a very lightweight, non-owning, generic callable object view. Cheaper than std::function, but the view is not allowed to outlive the callable object it references. #1660 (1.8.4) * Deprecate the pre-C++11 macros OIIO_CONSTEXPR, OIIO_CONSTEXPR_OR_CONST, and OIIO_NOEXCEPT. #1678 (1.8.4) Docs: * Improve docs about deep IBA functions. (1.8.1) * Fix 'Building OIIO on Windows' link. #1590 (1.8.1) Release 1.7.19 (1 Jun 2018) -- compared to 1.7.18 ------------------------------------------------- * Build fix for 32 bit Windows -- disable SSE that was making trouble. #1933 * Improved UTF-8 filename support for OpenEXR filenames. #1941 * filesystem.h: Improve UTF-8 handling for unique_path and temp_directory functions. #1940 * Clean up some warnings on modern Clang versions. * Improvements in finding the location of OpenJPEG with Macports. #1948 * ImageCache and TextureSystem now have close(filename) and close_all() methods, which for one file or all files will close the files and release any open file handles (also unlocking write access to those files on Windows), but without invalidating anything it knows about the ImageSpec or any pixel tiles already read from the files, as would happen with a call to the much more drastic invalidate() or invalidate_all(). #1950 Release 1.7.18 (1 May 2018) -- compared to 1.7.17 ------------------------------------------------- * Update to build against ffmpeg 4.0 Release 1.7.17 (1 Sep 2017) -- compared to 1.7.16 ------------------------------------------------- * Repair build breaks against Boost 1.65. #1753 * Fix a subtle static initialization order problem. #1757 * Build: Improved finding LibRaw. #1749 Release 1.7.16 (1 Aug 2017) -- compared to 1.7.15 ------------------------------------------------- * OpenEXR: fix problem with 2-channel images putting the channels in the wrong order. #1717 * TIFF: images with fewer than 4 channels, but one of those channels was alpha, were not correctly marking their spec.alpha_channel. #1718 * Several minor updates to simd.h backported from mater. Release 1.7.15 (1 Jun 2017) -- compared to 1.7.14 ------------------------------------------------- * Add "raw:user_sat" configuration attribute to the reader. #1666 * Better exception safety for `Filesystem::searchpath_find()`. #1680 * Improved I/O of color separation images, particularly those with custom InkSet attributes. #1658 * Big TextureSystem performance improvement on Windows with MSVC by removing certain empty destructors in simd.h that prevented MSVC from fully inlining the class. #1685 * Fix rare case TextureSystem crash. #1685 Release 1.7.14 (1 May 2017) -- compared to 1.7.13 ------------------------------------------------- * oiiotool expression substitution now recognizes FRAME_NUMBER and FRAME_NUMBER_PAD. #1648 * oiiotool -resize and -resample now have more intuitive behavior for images where the display and pixel data windows are not the same, especially if the data window had a nonzero origin (such as with crop or overscan). #1667 * oiiotool --resample and ImageBufAlgo::resample() have been extended to work for "deep" images. #1668 * ImageCache::get_image_info() will now return a proper error (and not hit an assertion) if asked for information about a subimage or MIP level that does not exist in the file. #1672 * ImageBuf copy constructor from another ImageBuf was previously broken for IB's that wrap application buffers. #1665 * TextureSystem::get_texels fixes crashing behavior. #1669 * Fixes to OSX rpath behavior of linked binaries. #1671 * OpenEXR file input: fixed problem with sorting order of spectral alpha channels (RA, GA, BA, or AR, AG, AB). #1674 * ImageBufAlgo::deep_merge() (and oiiotool --deepmerge) now will give a useful error message if you try to merge two deep images that do not have the same number of channels. #1675 * ImageCache/TextureSystem statistics no longer list as "BROKEN" files which were invalidated, or files that were initialized with an ImageCacheFile but never opened. #1655 * Fix Windows warnings about SIMD types as function args, and about int vs bool. #1659 Release 1.7.13 (1 Apr 2017) -- compared to 1.7.12 ---------------------------------------------- * TIFF, JPEG, others: Improved reading Exif meatdata from XMP blocks, now it does a better job of discerning the proper data types. #1627 * RAW: The default value for missing "raw:use_camera_matrix" has been changed to 1 (not 0) to better match default behavior of libraw/dcraw. #1629 * RAW: Add support for selecting new demosaicing algorithms: "DMT" (mode 11) and "AAHD" (mode 12). Renamed the "Modified AHD" to "AHD-Mod" to simplify and match libraw terminology. Made matching of demosaicing algorithms case-insensitive. #1629 * RAW: Support "ACES" color space for direct conversion while reading RAW images (supported in libraw 0.18 or newer). #1626 * oiiotool: Improved error reporting of file open errors when -iconfig is used. #1626 * oiiotool `--echo STRING` prints the string to the console. This can contain expressions! So you can do something like oiiotool file.exr -echo "Size is {TOP.width}x{TOP.height}" #1633 * JPEG: Be more reslient to malformed Exif data blocks with bogus offsets. #1585, #1639 * TIFF output omitted setting the "Make" and "Model" metadata tags. #1642 * webp: Several new sanity checks prevent the webp reader from spending too much I/O time and memory reading bogus files (malformed, corrupted, or not a webp after all). #1640 * PSD: Support has been added for "cmyk", "multichannel", and "grayscale" color modes. And support was fixed for rgb and grayscale 32 bit per sample bit depth. #1641 Release 1.7.12 (1 Mar 2017) -- compared to 1.7.11 ---------------------------------------------- * BMP: add support for version 5 headers. #1616 * TIFF: Fix typo that prevented correct reading of some Exif fields. #1625 * ImageBuf: Fix broken threads(n) method, which didn't correctly pass the right number of threads along. #1622. * Fix build warnings about undefined OIIO_MSVS_AT_LEAST_2013 symbol. Release 1.7.11 (1 Feb 2017) -- compared to 1.7.10 ---------------------------------------------- * maketx fix: two textures that had identical source pixels but differed in whether they resized with "highlight compensation" incorrectly ended up with identical hashes, and thus could be confused by the TextureSystem at runtime into thinking they were duplicates. The hash is now fixed. (1599) * OpenEXR: Allow compression "none" for deep exr files. * Fix unimplemented python ImageBufAlgo.computePixelStats. (1596) * IBA::draw_rectangle (and oiiotool --box) wasn't drawing properly for the degenerate case of a rectangle that takes up just one pixel. (1601) * Fixed several (so far unnoticed) buffer overruns and memory leaks. (1591) * ImageInput::read_tiles when only a channel subset is read, fixed case with certain data sizes where the copy to user buffer got mangled. (1595) * oiiotool -iconfig fixed, did not in all cases correctly propagate the input config attribute to the file read. (1605) * TIFF: now has a way to read raw pixel values from CMYK files, without the automatic conversion to RGB (pass configuration attribute "oiio:RawColor" set to nonzero). (1605) * imageio.h: Fix incorrect declaration of declare_imageio_format(). (1609) * `oiiotool --crop` did not properly honor the `-a` flag and apply the crop to all subimages. (1613) Release 1.7.10 (1 Jan 2017) -- compared to 1.7.9 ---------------------------------------------- * Fix "exr_threads" value, -1 should disable IlmImf's thread pools. #1582 * Be more reslient to malformed Exif data blocks with bogus offsets. #1585 * Build: Fix regarding iv man page. * Build: Fix compiler warning on Fedora aarch64. #1592 * Docs: improve docs about deep IBA functions. * Docs: fix 'Building OIIO on Windows' link. #1590 Release 1.7.9 (1 Dec 2016) -- compared to 1.7.8 ---------------------------------------------- * Make sure that sRGB<->linear color transform still work (in the obvious way) even when OpenColorIO is present but that its configuration for some reason doesn't know about "sRGB" space. #1554 * ImageCache: make robust to changes in autotile after opening and reading from untiled files. #1566 * ImageCache: fix initialization bug that made the reported stats output nonsensical in the numbers it gave for "redundant reads". #1567 * IC/TS get_image_info queries of "displaywindow" and "datawindow" did not correctly return a 'true' value when the data was found. #1574 * oiiotool -d giving per-channel formats is no longer confused by channel renaming with --chnames. #1563 * Added implementation of ImageBufAlgo::to_IplImage(). #1461 Release 1.7.8 (1 Nov 2016) -- compared to 1.7.7 ---------------------------------------------- * Fix gcc warnings when compiling for AVX2. #1511 * Fix a variety of Windows warnings and breaks. #1512, #1523 * Added support for new API introduced with ffmpeg 3.1. #1515 * Improve oiiotool --mosaic, wasn't reliably clearing the blank spaces for missing images. * Smarter channel_append channel renaming: try to resolve redundant channel names by using the subimage name, if available. #1498 * Texture: get_image_info queries for "channels" on UDIM file patterns now succeeds, returning the value for the first matching file it finds. (Relies on all textures within the same UDIM set having the same nchannels.) #1502, #1519 * Bug fix to possible crashes when adding dither to tiled file output (buffer size miscalculation). #1518 * maketx: multiple simultaneous maketx process trying to create the same texture will no longer clobber each other's output. #1525 * Build no longer gets confused about include files from older installations of OIIO elsewhere on the system. #1524 * Improvements in finding OpenJPEG. #1520 * Sysutil::Term formatting now works properly in Windows (though is only functional for Windows 10 or above). #1527 * Fix RLA reading and writing with certain channel orders and mixded data formats. #1499 * Improved finding of OCIO headers. #1528 * Better recognition of C++11 features in MSVS. * Fix compile warnings with Clang 3.9. #1529 * Texture: Fix UDIM channels query. #1530 * nuke: Fix txReader to properly restore saved mip level knob value (#1531) * Fix warnings on some 32 bit platforms #1539 * Exit oiiotool with non-zero status when command-line args fail to parse properly. #1540 * Fix typo in fmath bitcast_to_float declaration #1543 * Allow multiple key/value pairs in OCIO wrappers. #1542 * colorconvert API extended to take context key/values #1542 * Fix to TIFF handling of certain unusual tags, which also affected raw files. #1547 * fmath.h: templatize round_to_multiple so it works with other types (like size_t). #1548 * Fix IFF output that didn't correctly save the "Author" and "Date" metadata. #1549 * Handle 'oiiotool --colorconvert X X' (transform from and to spaces that are the same) without considering it an error. #1550 Release 1.7 (1 Oct 2016) -- compared to 1.6.x ---------------------------------------------- Major new features and improvements: * New oiiotool commands: * `-otex` and `-oenv` allow oiiotool to directly output proper texture maps, and it can now do everything that maketx can do. #1351 (1.7.2) * `--line` can draw polylines into an image. #1319 (1.7.1) * `--box` can draw a filled or unfilled box into an image. #1319 (1.7.1) * `--laplacian` computes the Laplacian. #1332 (1.7.1) * `--deep_merge` does a full merge/composite of deep images. #1388 (1.7.2) * `-i` inputs a file. Options `autocc=`, `now=`, `info=` control aspects of reading that one file. #1389 (1.7.2) * `--dilate` and `--erode` perform the basic morphological operations of dilation and erosion. #1486 (1.7.5) * New ImageBufAlgo functions: render_point(), render_line(), render_box() #1319 (1.7.1); laplacian() #1332 (1.7.2); copy() #1388 (1.7.2); deep_merge() #1388,1393 (1.7.2); dilate() and erode() (1.7.5). * UDIM support for textures: filenames like `"tex_.exr"` will automatically be resolved to the correct UTIM tile based on the s,t coordinates. #1426 (1.7.3) * Behavior change: When reading files without explicit channel names, single channel images now name their channel "Y" (no longer "A", which was confusing to algorithms that treat alpha in special ways). Similarly, 2-channel images name their channels "R" and "G". #1434 (1.7.3) Public API changes: * DeepData internals and API overhaul: struct internals hidden, now you must use the API; DeepData declaration is now in deepdata.h, not in imageio.h; DD methods now allow insertion and erasure of individual samples. #1289 (1.7.0) New DeepData methods: split, sort, merge_overlaps, merge_deep_pixels, occlusion_cull. #1388,1393 (1.7.2) * imageio.h: Removed items deprecated since 1.4: a version of convert_types() that took alpha and z channel indices (but never used them). #1291 * fmath.h: Removed safe_sqrtf, safe_acosf, fast_expf, which have been deprecated since 1.5. (1.7.0) #1291 * Removed ImageBufAlgo::flipflop(), which was deprecated since 1.5 and is now called rotate180. #1291 (1.7.0) * Several varieties of ImageCache and TextureSystem getattribute methods were noticed to not be properly declared 'const'. This was fixed. #1300 (1.7.0/1.6.9) * For API calls that are deprecated but not yet removed, we now mark them with deprecated attributes for compilers that support it, meaning that you will get compile warnings and explanations when you use deprecated OIIO API functions. #1313,#1318 (1.7.1) * ImageBuf::contains_roi() reveals whether an ROI is completely contained in the data region of the IB. #1310 (1.7.1) * TypeDesc::is_signed() return true of the TypeDesc returns a type that can represent negative values. #1320 * Python: improve: reading with request for type UNKNOWN returns native data in an unsigned char array. Also, requesting HALF returns the half bits in an unsigned short array (since there is no 'half' type in Python). #1362 (1.7.2/1.6.11) * Deprecate ImageCache/TextureSystem clear() methods, which never did anything useful. #1347 (1.7.3) * ImageSpec::set_format() clears any per-channel format information. #1446 (1.7.4) * OIIO::getattribute("library_list", ...) can retrieve a list of all the dependent libraries used when OIIO was built. #1458 (1.7.5) * simd::mask4 class has been renamed simd::bool4 (though the old name is still typedef'ed to work for now). #1484 (1.7.5) * Python bindings for ImageBuf.reset() now properly understands the argument names and default values. #1492 (1.7.6) Fixes, minor enhancements, and performance improvements: * oiiotool: * oiiotool --subimage now takes as an argument either the subimage numeric index, or a subimage name. #1287 (1.7.0) * oiiotool's image cache was smaller than intended because of typo. (1.7.0/1.6.9) * Allow command-line expression metadata names to contain ':'. #1321 (1.7.1/1.6.10) * --info more clearly prints info about subimage formats. #1320 (1.7.1) * --ch: when the channels were only renamed, not reordered, the renaming didn't happen properly. #1326 (1.7.1/1.6.10) * Improved error message propagation from the underlying IBA functions and from errors encounered during --stats. #1338 (1.7.2) * --dumpdata:empty=0 now does something for non-deep files: skips reporting of pixels where all channels are black. Also fixed errors for dumpdata of deep, but non-float, files. #1355 (1.7.2/1.6.11) * '--attrib:type=t name value' lets you explicitly name the top of the attribute you're seting. This helps for ambiguous cases, and also lets you create aggregate types (such as 'matrix' or 'int[2]' -- the value can be a comma-separated list in those cases). #1351 (1.7.2) * --fixnan can now take option "error", meaning that upon finding a NaN, the program considers it an error (rather than fixing). #1351 (1.7.2) * -o now takes optional arguments that control the output of just that one file, including :datatype=, :bits=, :dither=, :autocc=, :autocrop=, :autotrim=, :separate=, :contig=. #1351 (1.7.2) * --resize and --fit sped up by approximately 2x. #1372 (1.7.2) * --runstats not tracks and reports max memory usage. #1385 (1.7.2) * New --cache and --autotile options let you set the ImageCache size and autotile options. #1385 (1.7.2) * --native results in slightly different behavior: does not force float, but still uses the ImageCache as backing if the native data type is one of the types directly supported by IC. #1385 (1.7.2) * --fixnan now works with deep images. #1397 (1.7.3) * --stats when used with deep images, if it encounters any nonfinite values, will print the location of a representative one. #1397 (1.7.3) * --add, --sub, and --absdiff, when its two image operands have differing number of channels, now try to do the "correct" thing and have the result have the larger number of channels, treating any "missing" channels in either input as if they were 0-valued. #1402 (1.7.3) * --attrib:type-timecode lets you set timecodes in "human-readable" form: oiiotool in.exr -attrib:type=timecode TimeCode 11:34:03:00 -o out.exr #1415 (1.7.3) * -info -v will print timecodes in human-readable form. #1415 (1.7.3) * Bug fix: --fullsize didn't work properly when followed by --attrib. #1418 (1.7.3/1.6.14) * Easily understandable warnings for common mistakes: no output specified, an image that's modified but never output, or when -autocc causes output to be a data format that overrides a previous -d directive. #1419 (1.7.3) * --origin, --croptofull, and --trim all do their thing to all subimages, if the image at the top of the stack has multiple subimages. #1440 (1.7.3) * --crop operates on all subimages if either the -a flag was used, or if the specific optinoal override `--crop:allsubimages=1` is used. #1440 (1.7.3) * --trim will trim all subimages to the same region, containing the union of all nonzero pixels in all subimages. #1440 (1.7.3) * --help now prints all of the dependent libraries for individual formats. #1458 (1.7.5) * Bug fix: make sure to propagate per-channel formats from input to output. #1491 (1.7.6) * -o:all=n will output all images currently on the stack, and the filename argument will be assumed to be a pattern containing a %d, which will be substituted with the index of the image (beginning with n). For example, to take a multi-image TIFF and extract all the subimages separately, oiiotool multi.tif -sisplit -o:all=1 sub%04d.tif will output the subimges as sub0001.tif, sub0002.tif, and so on. #1494 (1.7.6) * --mosaic MxN would fail mysteriously if the number of images on the stack was less then M*N. This has been fixed to handle too-few images gracefully and just leave blank spaces as needed. #1501 (1.7.7) * ImageBuf: * ImageBuf::iterator performance is improved -- roughly cutting in half the overhead of iterating over pixels. #1308 (1.7.1/1.6.10) * ImageBuf reads from disk have been improved substantially (in some cases cutting read time in half) in many cases. #1328 (1.7.1) * ImageBuf::copy_pixels() has been sped up. #1358 (1.7.2) * ImageBufAlgo: * The varieties of add(), sub(), mul(), and div() that take an image operand and a per-channel constant operand have all been modified to work properly for "deep" images. #1297 (1.7.0/1.6.10) * mad() is sped up significantly (10x) for the common case of float images already stored in memory (not cached). #1310 (1.6.1) * render_point(), render_line(), render_box() can be used to render points, lines, and boxes into an image. #1319 (1.7.1) * channels(): when the channels were only renamed, not reordered, the renaming didn't happen properly. #1326 (1.7.1/1.6.10) * computePixelStats: Improved numerical accuracy to avoid getting NaN values from imprecision. #1333 (1.7.2/1.6.11) * laplacian() computes the laplacian of an image. #1332 (1.7.2) * fixNonFinite() takes a new option: NONFINITE_ERROR, which will return an error if nonfinite values are encountered. #1351 (1.7.2) * convolve() and unsharp_mask() have been sped up by about 35% for common cases. #1357 (1.7.2) * IBA::resize sped up by approximately 2x. #1372 (1.7.2) * IBA::fixNonFinite() now works with deep images. #1397 (1.7.3) * dilate() and erode() perform basic morphological operations. #1486 (1.7.5) * ImageCache / TextureSystem: * Less unnecessary pausing after read errors when falure_retries == 0. #1336 (1.7.2/1.6.11) * Texture: slight improvement in texture sharpness. #1369 (1.7.2/1.6.11) * New statistics related to redundant tile reads. #1417 (1.7.3) * TextureSystem option "flip_t", if nonzero, will flip the vertical direction of all texture lookups. Use this for renderers that adhere to the convention that the t=0 texture coordinate is the visible "bottom" of the texture. #1428 (1.7.3) #1462 (1.7.5) * UDIM support for textures: filenames like `"tex_.exr"` will automatically be resolved to the correct UTIM tile based on the s,t coordinates. #1426 (1.7.3) * Avoid repeated broken texture error messages. #1423 (1.7.3) * New IC/TS attribute: "max_errors_per_file" limits how many error messages are printed for each file. #1423 (1.7.3) * Improved statistics: for the "top 3" stats, print the top 3 that aren't broken. Also print a count & list of broken/invalid files. #1433 (1.7.3/1.6.15) * Add ability to retrieve various per-file statistics. #1438 (1.7.3/1.6.15) * IC will clamp the max_open_files to the maximum allowed by the system, so you can no longer crash a program by incorrectly setting this limit too high. #1457 (1.7.5) * IC/TS statistics now report separately the total size of images referenced, in terms of in-cache data size, as well as on-disk size (the latter may be compressed). #1481 (1.7.5) * maketx: * maketx -u now remakes the file if command line arguments or OIIO version changes, even if the files' dates appear to match. #1281 (1.7.0) * Remove long-obsolete and non-functional command line options: --new, --old, --hash. #1351 (1.7.2) * iinfo: * More clearly prints info about subimage formats. #1320 (1.7.1) * Print timecodes in human-readable form. #1415 (1.7.3) * ImageOutput: fix cases with native data but non-contiguous strides. #1416 (1.7.3/1.6.15) * Cineon: * Improved deduction/setting of color space info. #1466 (1.7.5) * GIF: * GIF reader failed to set spec full_width, full_height. #1348 (1.7.2/1.6.11) * JPEG: * Fix bad memory access crash when reading specific JPEG files that were written without their comment field including a null character to end the string. #1365 (1.7.2/1.6.11) * Change in behavior writing JPEG files when XResolution & YResolution are not provided, but a PixelAspectRatio is requested. Previously, we obeyed the JPEG/JFIF spec exactly, but it turns out that popular apps including PhotoShop and Nuke use the field differently than the spec dictates. So now we conform to how these apps work, rather than to the letter of the spec. #1412 (1.7.3/1.6.15) * OpenEXR: * Fix broken multipart output when parts had different pixel data types. #1306,#1316 (1.7.1/1.6.10) * Improved error reporting for bad tile reads. #1338 (1.7.2/1.6.11) * Fix errors reading tiles for mixed-format EXR files. #1352 (1.7.2/1.6.11) * The global OIIO::attribute("exr_threads") has been modified so that 0 means to use full available hardware, -1 disables the OpenEXR thread pool and execute in the caller thread. #1381 (1.7.2) * When writing EXR, double check that there are no repeated channel names, and if so, rename them so the data is not lost (since the underlying libIlmImf will silently drop channels with repeated names). #1435 (1.7.3) * More robust detected of when OpenEXR is tiled (for weird files). #1441 (1.7.3/1.6.15) (and a fix in #1448/1.7.4) * Fixed minor bug with OpenEXR output with correctly setting PixelAspectRatio based on the "XResolution" and "YResolution" attributes. #1453 (Fixes #1214) (1.7.4/1.6.16) * Fix setting "chromaticity" metadata in EXR files. #1487 (1.7.5) * When writing OpenEXR, accept compression requests with quality numbers appended to the compression algorithm name, such as "dwaa:200" to mean dwaa compression with a dwaCompressionLevel set to 200. #1493 (1.7.6) * PNG: * Per the PNG spec, name 2-channel images Y,A. #1435 (1.7.3) * Enforce that alpha premultiplication on output MUST consider alpha to be the last channel of 2 or 4 channel images, no other cases (as dictated by the PNG spec). #1435 (1.7.3) * PNM: * Fixed byte swapping when reading 16 but PNM files. #1352 (1.7.2/1.6.11) * RAW: * Changes to how we instruct libraw to process images when reading: Now, by default, auto-bright adjustment is off, camera white balance is on, and maximum threshoding is set to 0. There are "open with config" overrides for all of these, for anybody who doesn't like the default. #1490 (1.7.6) * RLA: * Fixes for both reading and writing of RLA images that are cropped (i.e., data window is a subset of display window). #1224 (1.7.0/1.6.10) * TIFF: * When outputting a TIFF file, a special attribute "tiff:half", if set to nonzero, will enable writing of 16-bit float pixel data (obviously, only if the spec.format is HALF). #1283 (1.7.0) * TIFF input: erase redundant IPTC:Caption and IPTC:OriginatingProgram if they are identical to existing ImageDescription and Software metadata, respectively. (1.7.0/1.6.9) * Output: "tiff:zipquality" attribute controls time-vs-quality for ZIP compression (1-9, defualt 6, higher means more compression). #1295 (1.7.1) * Fix typo that made TIFF files incorrectly name color space metadata "oiio::ColorSpace" instead of "oiio:ColorSpace". #1394 (1.7.2) * More robust handling of non-zero origin of full/display window. #1414 (1.6.14/1.7.3) * Video formats: * The ffmpeg-based reader had a variety of fixes. #1288 (1.7.0) * Support for reading 10-bit and 12-bit movies. #1430 (1.7.5) * Improved accuracy of "lanczos3" filter; speed up blackman-harris filter. #1379 (1.7.2) * Speed up linear<->sRGB color conversions (as used by any of the IBA color conversion functions as well as oiiotool --colorconvert and friends), approximately doubling the speed when no OpenColorIO config is found. #1383 (1.7.2) * ImageInput::create() and ImageOutput::create() will now gracefully handle unexpected exceptions inside an ImageInput or ImageOutput constructor -- return an error rather than crashing. #1456 (1.7.4/1.6.16) * Nuke txWriter adds UI to let you choose which type of texture you are building (ordinary 2D texture, latlong env map, etc). #1488 (1.7.6) Build/test system improvements: * Default build is now C++11! #1344 (1.7.2) You can still (for now) build for C++03 using 'make USE_CPP11=0' or 'cmake -DOIIO_BUID_CPP11=0', but some time soon we will be C++11 minimum. * Fix build break against Boost 1.60. #1299,#1300 (1.7.0/1.6.9/1.5.23) * filesystem_test now much more comprehensively tests the contents of Filesystem. #1302 (1.7.0) * fmath_test adds benchmarks for various data conversions. #1305 (1.7.0) * Travis: add DEBUG builds to the matrix to fix any warnings or failures that only show up for DEBUG builds. #1309 (1.7.1/1.6.10) * Fix build issues on some platforms for SHA1.h, by adding proper include of ``. #1298,#1311,#1312 (1.7.1/1.6.10) * Cleanup of include logic in simd.h that fixed build problems for gcc < 4.4. #1314 (1.7.1/1.6.10) * Fix build breaks for certain 32 bit platforms. #1315,#1322 (1.7.1/1.6.10) * imagespeed_test can not specify the data conversion type for reads, can optionally allow skipping the IB iteration tests, and can set the IC tile cache size. #1323 (1.7.1) * Fix build breaks for gcc 6. #1339 (1.7.2/1.6.11) #1436 (1.7.3/1.6.15) * Fix errors in finding the correct locaiton of pugixml.hpp when using USE_EXTERNAL_PUGIXML=1. #1339 (1.7.2/1.6.11) * Rewrite of FindOpenEXR.cmake. Solves many problems and is simpler. No more FindIlmbase.cmake at all. #1346 (1.7.2/1.6.11) * 'make CODECOV=1; make CODECOV=1 test' can build and test in a way that provides a code coverage report. #1356 (1.7.2) * Fix Filesystem::open() issues with UTF-8 filenames on MinGW. #1353,#1357 (1.7.2/1.6.11) * Allow build against a wider range of ffmpeg versions. #1359 (1.7.2) * Build correctly against FFMPEG 3.0. #1374 (1.7.2) * If found, libjpeg-turbo is used rather than libjpeg; this gives about a 2x speed improvement for reading & writing JPEG files. #1390 (1.7.2/1.6.13) * USE_CPP11=... and USE_CPP14=... are the build flags for both the Make wrapper and the CMake scripts. (Before, it was confusing to have USE_CPP11 for make but OIIO_BUILD_CPP11 for CMake. Now they are one.) #1391 (1.7.2) * Improved LINKSTATIC=1, now mostly works. #1395 (1.7.3) * Big CMake refactor, got rid of redundancies. #1395 (1.7.3) * Remove old embedded Ptex, now must find Ptex externally. Also modified the build scripts to correctly handle newer versions of Ptex. #1400 (1.7.3/1.6.13) * Got Appveyor building OIIO. This is a continuous integration service much like Travis, but it's for Windows. Hopefully this means that it will be much harder for us to make changes that inadvertently break the build on Windows. #1399 (1.7.3) * Make FindOpenEXR.cmake more robust when the version number is embedded in the library name. #1401 (1.7.3/1.6.15) * Clear up some inconsistencies in the CMake files and the Makefile wrapper: the flag to compile with libc++ is now always called USE_LIBCPLUSPLUS, not sometimes OIIO_BUILD_LIBCPLUSPLUS. #1404 (1.7.3) * Overhaul OpenCV dependency finding and make it work with OpenCV 3.x. #1409 (1.7.3/1.6.13) * Allow custom JPEG_PATH to hint location of JPEG library. #1411 (1.7.3/1.6.13) * Windows UTF-8 filename safety fixes. #1420 (1.7.3/1.6.14) * Various Windows compilation & warning fixes. #1443 (1.7.3/1.6.15) * Now builds correctly against OpenJPEG 2.x, it previously only supported OpenJPEG 1.x. #1452 (Fixes #957, #1449) (1.7.4/1.6.16) * Fix Filesystem::searchpath_find on Windows with UTF-8 paths. #1469 (1.7.51.6.17) * Improved the way OpenEXR installations are found. #1464 (1.7.5) Developer goodies / internals: * thread.h has had all the atomic operations split into a separate atomic.h. #1443 (1.7.3) * atomic.h: add atomic and, or, and xor. #1417 (1.7.2/1.6.14); * parallel_image has been improved in several ways: can choose split direction; raised minimum chunk size to prevent thread fan-out for images too small to benefit; uses the calling thread as part of the pool. #1303 (1.7.0) * timer.h: DoNotOptimize() and clobber_all_memory() help to disable certain optimizations that would interfere with micro-benchmarks. #1305 (1.7.0) * simd.h improvements: select(); round(); float4::store(half*), int4::store(unsigned short*), int4::store(unsigned char*). #1305 (1.7.0) Define insert, extract, and ^ (xor), and ~ (bit complement) for mask4, and add ~ for int4. #1331 (1.7.2); madd, msub, nmadd, nmsub, rint, andnot #1377 (1.7.2); exp, log #1384 (1.7.2); simd::float3 is like float4, but only loads and stores 3 components, it's a good Vec3f replacement (but padded) #1473 (1.7.5); matrix44 4x4 matrix class #1473 (1.7.5); mask4 renamed to bool4, and addition of float8, int8, bool8 classes for 8-wide AVX/AVX2 SIMD #1484 (1.7.5). * fmath.h: convert_types has new special cases that vastly speed up float <-> uint16, uint8, and half buffer conversions #1305 (1.7.0); ifloor (1.7.2); SIMD versions of fast_log2, fast_log, fast_exp2, fast_exp, fast_pow_pos #1384 (1.7.2); fix sign of expm1 for small arguments #1482 (1.7.5); added fast_log1p #1483 (1.75). * Fix pesky precision discrepancy in internal convert_type<> that used slightly different math when converting one value at a time, versus converting whole arrays. #1350 (1.7.2) * thread.h: add mutex_pool #1425 (1.7.3/1.6.15) * compute_test: new unit test can be used to benchmark computation times. #1310 (1.7.1) * filesystem.h: Filesystem::file_size() returns file size in bytes; Filesystem::read_bytes() reads the first n (or all) bytes from a file into a buffer. #1451 (1.7.4/1.6.16) * strutil.h: Strutil::extract_from_list_string is more flixible by allowing the vals list to start empty, in which case it will add as many values as it finds rather than only replacing existing values #1319 (1.7.1); Strutil::replace #1422 (1.7.3/1.6.15); utf_to_unicode now takes a string_view rather than a std::string& #1450 (1.7.4); add Strutil::base64_encode() #1450 (1.7.4). * sysutil.h: Sysutil::getenv() safely gets an env variable as a string_view #1451 (1.7.4/1.6.16); terminal_columns() now has a correct implementation on Windows #1460 (1.7.5); max_open_files() retrieves the maximum number of files the process may open simultaneously #1457 (1.7.5). * platform.h: better distinguishing beteen Apple and Generic clang, separately set OIIO_CLANG_VERSION and OIIO_APPLE_CLANG_VERSION. Also change OIIO_GNUC_VERSION to 0 for clang, only nonzero for true gcc. #1380 (1.7.2) * ImageCache: remove unused shadow matrix fields, save space. #1424 (1.7.3) * Many documentation files (such as README, CHANGES, LICENSE, CREDITS, and INSTALL) have been changed from plain text to MarkDown. #1442 (1.7.3) * Sysutil::Term class makes it easy to use color output on the terminal. #1479 (1.7.5) Release 1.6.18 (released 1 Nov 2016 -- compared to 1.6.17) ------------------------------------------------ * Fix setting "chromaticity" metadata in EXR files. #1487 * maketx: multiple simultaneous maketx process trying to create the same texture will no longer clobber each other's output. #1525 * Fix compile warnings with Clang 3.9. #1529 * Fix IFF output that didn't correctly save the "Author" and "Date" metadata. #1549 Release 1.6.17 (released 1 Sep 2016 -- compared to 1.6.16) ------------------------------------------------ * Fix build for newer ffmpeg release that deprecated functions. * Improved finding of OCIO installations. #1467 * Fixed Sysutil::terminal_columns() for WIndows. #1460 * Fix build break in Windows when roundf function not found. #1468 * Fix Filesystem::searchpath_find on Windows with UTF-8 paths. #1469 Release 1.6.16 (released 1 Aug 2016 -- compared to 1.6.15) ------------------------------------------------ * Fix EXR tile logic for OpenEXR 1.x (fixes a break introduced in 1.6.15, is not an issue for exr 2.x). #1448 * Now builds correctly against OpenJPEG 2.x, it previously only supported OpenJPEG 1.x. #1452 (Fixes #957, #1449) * New utility functions: Sysutil::getenv(), Filesystem::file_size(), FileSystem::read_bytes(). #1451 * Fixed minor bug with OpenEXR output with correctly setting PixelAspectRatio based on the "XResolution" and "YResolution" attributes. #1453 (Fixes #1214) * Gracefully handle unexpected exceptions inside an ImageInput or ImageOutput constructor -- return an error rather than crashing. #1456 Release 1.6.15 (released 1 Jul 2016 -- compared to 1.6.14) ------------------------------------------------ * Improved statistics: for the "top 3" stats, print the top 3 that aren't broken. Also print a count & list of broken/invalid files. #1433 * Change in behavior writing JPEG files when XResolution & YResolution are not provided, but a PixelAspectRatio is requested. Previously, we obeyed the JPEG/JFIF spec exactly, but it turns out that popular apps including PhotoShop and Nuke use the field differently than the spec dictates. So now we conform to how these apps work, rather than to the letter of the spec. #1412 * IC/TS: add ability to retrieve various per-file statistics. #1438 * Windows UTF-8 filename safety fixes. #1420 * ImageOutput: fix cases with native data but non-contiguous strides. #1416 * Make FindOpenEXR.cmake more robust when the version number is embedded in the library name. #1401 * Fix build breaks for gcc 6. #1339 (1.7.2/1.6.11) #1436 * More robust detected of when OpenEXR is tiled (for weird files). #1441 * Various Windows compilation and warning fixes. * strutil.h: added replace(). #1422 * thread.h: added mutex_pool. #1425 Release 1.6.14 (released 1 Jun 2016 -- compared to 1.6.13) ------------------------------------------------ * More robust handling of TIFF I/O when non-zero origin of full/display window. (#1414) * oiiotool --fullsize didn't work properly when followed by --attrib. (#1418) Release 1.6.13 (released 1 May 2016 -- compared to 1.6.12) ------------------------------------------------ * Use libjpeg-turbo if found. It's a drop-in replacement for libjpeg, but is around 2x faster. #1390 * Fix some Windows compiler warnings and errors. * Remove old embedded Ptex, now must find Ptex externally. Also modified the build scripts to correctly handle newer versions of Ptex. #1400 * Overhaul OpenCV dependency finding and make it work with OpenCV 3.x. #1409 * Allow custom JPEG_PATH to hint location of JPEG library. #1411 Release 1.6.12 (released 1 Apr 2016 -- compared to 1.6.11) ------------------------------------------------ * Build correctly against FFMPEG 3.0. #1374 * The global OIIO::attribute("exr_threads") has been modified so that 0 means to use full available hardware, -1 disables the OpenEXR thread pool and execute in the caller thread. #1381 * Thread-pool counts initialized to hardware_concurrency, not physical_concurrency (i.e., they will include hyperthread cores by default). #1378 * oiiotool --autocc bug fixed. * Miscellaneous improvements to simd.h ported from master. * Fix typo that made TIFF files incorrectly name color space metadata "oiio::ColorSpace" instead of "oiio:ColorSpace". #1394 Release 1.6.11 (released 1 Mar 2016 -- compared to 1.6.10) ------------------------------------------------ * Fix potential of IBA::computePixelStats (including oiiotool --stats) to end up with NaNs due to numerical imprecision. #1333 * Less unnecessary pausing after read errors when falure_retries == 0. #1336 * Fix errors in finding the correct locaiton of pugixml.hpp when using USE_EXTERNAL_PUGIXML=1. #1339 * Fix build breaks for gcc 6. #1339 * GIF reader failed to set spec full_width, full_height. #1348 * PNM: Fixed byte swapping when reading 16 but PNM files. #1352 * OpenEXR: Improved error reporting for bad tile reads. #1338 * OpenEXR: Fix errors reading tiles for mixed-format EXR files. #1352 * oiiotool --dumpdata:empty=0 now does something for non-deep files: skips reporting of pixels where all channels are black. Also fixed errors for dumpdata of deep, but non-float, files. #1355 * Fix Filesystem::open() issues with UTF-8 filenames on MinGW. #1353 * Rewrite of FindOpenEXR.cmake. Solves many problems and is simpler. No more FindIlmbase.cmake at all. #1346 * Fix build break for older gcc < 4.4 that didn't have immintrin.h. * Fix bad memory access crash when reading specific JPEG files that were written without their comment field including a null character to end the string. #1365 * The ffmpeg-based reader had a variety of fixes. #1288 * Python: improve: reading with request for type UNKNOWN returns native data in an unsigned char array. Also, requesting HALF returns the half bits in an unsigned short array (since there is no 'half' type in Python). #1362 * Texture: slight improvement in texture sharpness. #1369 * Update webp testsuite references for new webp version. Release 1.6.10 (released 1 Feb 2016 -- compared to 1.6.9) ------------------------------------------------ * ImageBufAlgo add, sub, mul, and div, for the varieties that combine an image with a (per-channel) constant, now work for "deep" images. #1257 * ImageBuf::iterator performance is improved -- roughly cutting in half the overhead of iterating over pixels. #1308 * OpenEXR: Fix broken multipart output when parts had different pixel data types. #1306,#1316 * Allow oiiotool command-line expression metadata names to contain ':'. * Fix oiiotool --ch (or IBA::channels) when the channels were only renamed, not reordered, the renaming didn't happen properly. #1326 * Fixes for both reading and writing of RLA images that are cropped (i.e., data window is a subset of display window). #1224 * Fix build issues on some platforms for SHA1.h, by adding proper include of ``. #1298,#1311,#1312 * Cleanup of include logic in simd.h that fixed build problems for gcc < 4.4. #1314 * Fix build breaks for certain 32 bit platforms. #1315,#1322 Release 1.6.9 (released 5 Jan 2016 -- compared to 1.6.8) ------------------------------------------------ * Several varieties of ImageCache and TextureSystem getattribute methods were noticed to not be properly declared 'const'. This was fixed. #1300 (1.6.9) * Fix build break against Boost 1.60. #1299,#1300 (1.6.9/1.5.23) * The Python bindings for ImageCache was overhauled after several of the methods were found to be horribly broken. #1300 (1.6.9) * oiiotool --subimage now allows a subimage name as argument, as well as the numeric index. #1271,#1287 (1.6.9) * TIFF input: erase redundant IPTC:Caption and IPTC:OriginatingProgram if they are identical to existing ImageDescription and Software metadata, respectively. (1.6.9) * Fix oiiotool image cache smaller than intended because of typo. (1.6.9) Release 1.6 (1.6.8 released Dec 21, 2015 -- compared to 1.5.x) ---------------------------------------------- Major new features and improvements: * New oiiotool functionality: * Expression evaluation/substitution on the oiiotool command line. Anything enclosed in braces { } in a command line argument will be substituted by the evaluation of the enclosed expression. Expressions may be numbers, simple arithmetic (like 'expr+expr'), or retrieving image metadata from named images or images on the stack. Please see the PDF documentation, Section 12.1 for details and examples. * --absdiff, --absdiffc compute the absolute difference (abs(A-B)) of two images, or between an image and a constant color. #1029 (1.6.0) * --abs computes the absolute value of an image. #1029 (1.6.0) * --div, divc divide one image by another (pixel by pixel), or divides the pixels of an image by a constant color. #1029 (1.6.0) * --addc, --subc, --mulc, --powc are the new names for --cadd, --csub, --cmul, and --cpow. The old ones will continue to work but are considered depcrected. #1030 (1.6.0) * --pattern supports new patterns: "fill" makes a solid, vertical or horizontal gradient, or four-corner interpolated image (just like the --fill commmand) (1.6.0); "noise" can generate uniform, gaussian, or salt & pepper noise (1.6.2). * --fill, in addition to taking optional parameter color=... to give a solid color for the fill region, now also takes top=...:bottom=... to make a vertical gradient, left=...:right=... to make a horizontal gradient, and topleft=...:topright=...:bottomleft=...:bottomright=... to make a 4-corner gradient. (1.6.0) * --noise adds noise to the current image: additive uniform or gaussian noise, or making "salt & pepper" noise. (1.6.2) * --trim crops the image to the minimal rectangle containing all the non-0 pixels. (1.6.3) * --autocc : when turned on, automatic color conversion of input files into a scene_linear space, and conversion to an appropriate space and pixel type upon output. It infers the color spaces based on metadata and filenames (looking for OCIO-recognized color space names as substrings of the filenames). #1120 (1.6.3) * --mad takes three image arguments, multiplies the first two and then adds the third to it. #1125 (1.6.3) * --invert computes the color inverse (1-value) for color channels. #1125 (1.6.3) * --colorconfig allows you to specify a custom OCIO configuration file (rather than strictly relying on the $OCIO env variable). #1129 (1.6.3) * --deepen converts flat images to "deep". #1130 (1.6.3) * -n (no saved output) performs all calculations (including timing and stats) but does not write any output files to disk. #1134 (1.6.3) * --debug prints debugging information, this is now separate from -v which just makes more verbose (non-debugging) output. #1134 (1.6.3) * --pixelaspect rescales the image to have the given pixel aspect ratio. #1146 (1.6.5) * --ociofiletransform() implements OpenColorIO "file" transforms. #1213 (1.6.5) * New ImageBufAlgo functions: * absdiff() computes the absolute difference (abs(A-B)) of two images, or between an image and a constant color. #1029 (1.6.0) * abs() computes the absolute value of an image. #1029 (1.6.0) * div() divides one image by another (pixel by pixel), or divides all the pixels of an image by a constant color. #1029 (1.6.0) * fill() has been extended with new varieties that take 2 colors (making a vertical gradient) and 4 colors (one for each ROI corner, for a bilinearly interpolated gradient). (1.6.0) * noise() injects noise into an image -- uniform, gaussian/normal, or salt & pepper noise. (1.6.2) * mad() multiplies the first two arguments and then adds the third to it. #1125 (1.6.3) * invert() computes 1-val. #1125 (1.6.3) * deepen() turns a flat RGBA (and optional Z) image into a "deep" image. #1130 (1.6.3) * ociofiletransform() implements OpenColorIO "file" transforms. #1213 (1.6.5) * Some open source fonts are now distributed with OIIO (DroidSans, DroidSans-Bold, DroidSerif, DroidSerif-Bold, DroidSerif-Italic, DroidSerif-BoldItalic, and DroidSansMono), and so those are always available to ImageBufAlgo::render_text() and oiiotool --text, on all platforms and even if you don't have any other installed fonts on your system. DroidSans is now the default font. #1132 (1.6.3) * GIF output support (including writing animated GIF images, just write it as a multi-subimage file). For example, this works: oiiotool foo*.jpg -siappendall -attrib FramesPerSecond 10.0 -o anim.gif #1193 (1.6.4) Public API changes: * TypeDesc: * New helper methods: is_array(), is_unsized_array(), is_sized_array(). #1136 (1.6.3) * New constructor and fromstring of a string_view, in addition to the old versions that took char*. #1159 (1.6.4/1.5.16) * New aggregate type: MATRIX33. #1265,#1267 (1.6.6) * ImageSpec: * ImageSpec::metadata_val() is now static, rather than simply const, since it doesn't need access to *this at all. #1063 (1.6.1) * Added a new variety of find_attribute that takes a temporary ImageIOParameter as scratch space. The advantage of this call is that it can retrieve items from the named ImageSpec fields, such as "width", "full_x", etc. Also, the get_int_attribute, get_float_attribute, and get_string_attribute can now retrieve these fixed fields as well. #1063 (1.6.1) * ImageInput & ImageOutput: * New ImageOutput::supports() tags: supports("alpha") should be true for image formats that support an alpha channel, supports("nchannels") should be true for output formats that support an arbitrary number of output channels. (1.6.2/1.5.13) * ImageInput and ImageOutput supports() method has been changed to accept a string_view (rather than a const std::string&), and return an int (rather than a bool). (1.6.2) * ImageInput and ImageOutput have added destroy() static methods. They are just wrappers around 'delete', but can help you to ensure that II and IO objects are deleted on the same side of a DLL boundary as where they were created. (Helps with using OIIO from DLL-based plugins on Windows.) (1.6.3) * New ImageInput query: "procedural" -- returns 1 if the ImageInput may not correspond to an actual file. #1154 (1.6.4/1.5.16) * ImageInput and ImageOutput's error() method is changed from protected to public, making it easier for an app to set an error on a reader or writer. (1.6.4) * ImageOutput::copy_to_image_buffer is a helper function that generalizes the existing copy_tile_to_image_buffer, but for any rectangle. #1193 (1.6.4) * ImageInput::read_image() variant that takes a channel range to read just a subset of the channels present. #1222 (1.6.5) * ImageInput and ImageOutput now have new method threads(n) that sets the thread "fan-out" for the ImageInput or ImageOutput individually, overriding any global attribute("threads"). #1259 (1.6.6) * ImageBuf: * Add make_writeable(), which forces ImageCache-backed read-only ImageBuf to read into locally allocated pixels so they can be subsequently altered. #1087 (1.6.2) * ImageBuf::Iterator has added set_deep_samples() and set_deep_value() methods. (1.6.3) * ImageBuf::set_pixels() now provides a way to set an arbitrary rectancle of an ImageBuf from raw values. #1167 (1.6.4) * ImageBuf::get_pixels() now has a variety that takes an ROI to describe the rectangle of pixels being requested. #1167 (1.6.4) * ImageBuf now has new method threads(n) that sets the thread "fan-out" for the ImageInput or ImageOutput individually, overriding any global attribute("threads"). #1259 (1.6.6) * ImageCache/TextureSystem: * Clarified in the docs that TextureSystem::get_texture_info and ImageCache::get_image_info "exists" queries should return true, and place in *data the value 1 or 0 depending on whether the image exists and can be read. (1.6.0/1.5.10) * Added handle-based versions of TextureSystem get_texture_info(), get_imagespec(), imagespec(), and get_texels(), in addition to the existing name-based versions of those methods. Note that texture(), environment(), and texture3d() already had both name-based and handle-based varieties. #1057 (1.6.1) #1083 (1.6.2) * Add create_thread_info() and destroy_thread_info() methods that allow an app to manage the per-thread records needed by the IC. #1080 (1.6.2) * Added ImageCache get_perthread_info() and get_image_handle() to return opaque perthread and file handle pointers, much like TextureSystem already had, and added handle-based versions of get_image_info(), get_imagespec(), imagespec(), get_pixels(), and get_tile(), in addition to the existing name-based versions of those methods. #1057 (1.6.1) * ImageCache get_tile and get_pixels have new varieties that let you request channel begin/end range. This allows you to control which channel ranges are in the cache, and thus be much more efficient with cache storage when only a few channels are needed from a file with many channels. #1226 (1.6.5) * ImageBufAlgo: * New ImageBufAlgo functions: abs, absdiff, div, fill, noise, mad, invert, deepen, ociofiletransform. * nchannels() now takes an 'nthreads' parameters, just like all the other ImageBufAlgo functions. #1261 (1.6.6) * Python bindings: * Added previously-M.I.A. ImageSpec::erase_attribute(). #1063 (1.6.1) * ImageSpec.set_channel_formats() now works when the channel type lists are either TypeDesc, in addition to the existing support for BASETYPE. #1113 (1.6.3/1.5.13) * Added Python bindings for DeepData and deep reads (ImageInput) and writes (ImageOutput), as well as additional DeepData and ImageBuf methods to fully match the C++ API. #1113 #1122 (1.6.3/1.5.13) * ImageBuf.set_pixels, and ImageBuf.get_pixels with ROI. #1167,1179 (1.6.4) * Change Python ImageOutput bindings to simplify the write_* methods. They no longer take both a TypeDesc and an array; it can figure out the type from the array itself. Also get rid of the stride parameters, which weren't useful in a Python context. #1184 (1.6.4) * ImageBufAlgo colorconvert, ociolook, and ociodisplay now take an optional string colorconfig argument. #1187 (1.6.4) * Fix missing Python bindings for global OIIO::getattribute(). #1290 (1.6.8) * The ColorConfig wrapper for OCIO functionality has been extended to parse color names from filename strings, and to report the recommended pixel data type for a color space. #1129 (1.6.3) * C++11 definitions: oiioversion.h defines OIIO_BUILD_CPP11 as nonzero if OIIO itself was built in C++11 (or later) mode, and platform.h defines OIIO_USING_CPP11 as nonzero if at this moment C++11 (or later) mode is detected. Note that these can differ if one set of compiler flags was used to build OIIO, and a different set is used to build a project that uses OIIO headers. #1148 (1.6.4) * Renamed the "fps" standard metadata to "FramesPerSecond. #1193 (1.6.4) * Removed deprecated header "string_ref.h" (use string_view.h). (1.6.1) * oiioversion.h: Renamed the namespace macros OIIO_NAMESPACE_ENTER/EXIT to OIIO_NAMESPACE_BEGIN/END, and roll the braces into it. #1196 (1.6.4) * array_view.h: Refactor array_view to be more in line with what is slated for C++17, in particular it is now templated on Rank and so can be a view to a multi-dimensional array. Also change array_view_strided to have strides measured in units of sizeof(T), not bytes (to keep with C++17). This also adds coordinate.h to give definitions for the offset<>, bounds<>, and bounds_iterator<> templates used by array_view. #1205 (1.6.4) * Add top-level OIIO::get_int_attribute(), get_float_attribute(), and get_string_attribute() helpers, similar to how they work in many of the classes. #1283 (1.6.7) Fixes, minor enhancements, and performance improvements: * oiiotool * Bug fix for frame sequences -- could crash in Windows. #1060 (1.6.1) * Gracefully handle requests to save an image with more channels than the output file format can handle. Instead of being a fatal error, now it's just a warning, and extra channels are dropped. It tries to to find R, G, B, and A channels, saving them. If those names are not found, it just saves the first 3 (or 4) channels. #1058 (1.6.1) * Improve error messages when files can't be read. It is now easier to to distinguish files that don't exist from those that are an unknown format from those that are corrupted or have read errors. #1065 (1.6.1) * Flag errors properly when -d specifies an unknown data format name. #1077 (1.6.2/1.5.13) * oiiotool numeric wildcard improvement: allow more digits to match. #1082 (1.6.2/1.5.13) * Bug fix: input file data format didn't always end up in the output. (1.6.3) * --channels bugs were fixed when dealing with "deep" images. (1.6.3) * All the color space conversion operations run much faster now, since the underlying IBA::colorconvert() has been parallelized. (1.6.3) * --crop logic bug fixed in cases where the crop region was the same size as the original pixel data window. #1128 (1.6.3) * oiiotool now gives proper error messages when asked to perform unsupported operations on deep images. (1.6.3) * Bug fix: --frames incorrectly overrode explicit frame sequence wildcards on the command line. #1133 (1.6.3) * --crop, --trim, and --autotrim have been extended to work on "deep" images. #1137 (1.6.3) * For "procedural" ImageInputs, don't give "file doesn't exist" errors. (1.6.4) * Suppress output/copying of "textureformat" metadata inherited from input if it's not plausibly still a valid texture (i.e., if it's no longer tiled or MIPmapped). #1206 (1.6.4) * oiiotool's full help message lists all supported formats. #1210 (1.6.5) * oiiotool --help prints a briefer help screen. Use --help -v for the full-detail help. #1214 (1.6.5) * Bug fix in --fit when the image didn't need to be resized. #1227 (1.6.5/1.5.21) * Bug fix in --ch for "deep" files when the channel reordering is the same as it already was. #1286 (1.6.7) * ImageBufAlgo: * compare() (and therefore oiiotool -diff and idiff) did not notice image differences when the pixels that differed had NaN or NaN or Inf values! Now it is right. #1109 (1.6.3/1.5.13) * channels() bugs were fixed when dealing with "deep" images. (1.6.3) * colorconvert() has been parallelized, and thus on most systems will now run much faster. (1.6.3) * render_text() handles UTF-8 input. #1121 (1.6.3) * colorconvert(), ociodisplay(), and ociolook() have new varities that accept an optional ColorConfig, rather than having no choice but to construct a new one internally. (1.6.3) * nonempty_region() and crop() have been extended to handle "deep" images. #1137 (1.6.3) * Fix bug in fft() -- was not always zeroing out the imaginary channel. #1171 (1.6.4/1.5.17) * Fixed uninitialized variable bugs with rangecompress() and rangeexpand() when using luma. #1180 (1.6.4) * The lanczos3, radial-lanczos, and catrom filters have been change from fixed-width to fully scalable. This fixes artifacts that occur when using them as upsizing filters. #1228,#1232 (1.6.5/1.5.21) * maketx, TextureSystem, and ImageCache: * TextureSystem/IC now directly stores uint16 and half pixel data in the cache rather than converting internally to float for tile storage, thus effectively doubling the cache capacity for files of those formats. (1.6.3) * Fix broken bicubic texture sampling with non-power-of-two sized tiles. #1035 (1.6.0/1.5.10) * maketx: when the source image was a crop (data window != display window), and the sharpening filters were used, it would incorrectly issue an "unknown filter name" error. #1059 (1.6.1/1.5.12) * maketx: Flag errors properly when -d specifies an unknown data format name. #1077 (1.5.13) * maketx now writes to a temporary file, then moving it to the final requested output filename only when the write completed without error. This prevents situations where maketx crashes or is killed and leaves behind a file that looks correct but is actually corrupted or truncated. #1072 (1.6.2/1.5.13) * TextureSystem bug fix that occasionally resulted in NaN in the alpha channel result when looking up from 3-channel images. #1108 (1.6.3/1.5.13) * maketx --runstats prints runtime staticstics (deprecating --stats). #1152 (1.6.4) * Fixed trilinear MIPmap texture lookups that gave invalid alpha fill. #1163 (1.6.4/1.5.16) * The lanczos3, radial-lanczos, and catrom filters have been change from fixed-width to fully scalable. This fixes artifacts that occur when using them as upsizing filters. #1228,#1232 (1.6.5) * Texture cache memory efficiency is much better for the special case of accessing just a few channels from a texture file with large numbers of channels. #1226 (1.6.5) * Eliminate spurious ImageCache invalidation just because the shared cache is requested again. #1157 (1.6.4/1.5.16) * Statistics output also shows all the option setting values. #1226 (1.6.5) * Data copy error in ImageCache::get_pixels for partial-channel-set copies. #1246 (1.6.5) * maketx -u now remakes the file if command line arguments or OIIO version changes, even if the files' dates appear to match. #1281 (1.6.8) * GIF: * Write support! #1193 (1.6.4) * On input, renamed "fps" metadata to "FramesPerSecond". #1193 (1.6.4) * IFF: * Fix botched output of 16 bit uncompressed data. #1234 (1.6.5/1.5.21) * Make "rle" compression the default. #1234 (1.6.5/1.5.21) * JPEG: * Now properly read/write xdensity and ydensity (what OIIO and TIFF call "XResolution" and "YResolution" and, therefore, "PixelAspectRatio". #1042 #1066 (1.6.0, 1.6.1) * Support JPEG files encoded as CMYK (by converting to RGB upon read) #1044 (1.6.1) * Fix misdeclared supports() which would make the JPEG plugin appear to not support exif or iptc. #1192 (1.6.4) * JPEG-2000: * Fix handling of un-premultiplied alpha (which is dictated by the JPEG-2000 spec). (1.6.3) * Fix reading of YUV-encoded files. (1.6.3) * Read and write the ICC profile, if present. (1.6.3) * Handle all bit depth precisions properly (previously only 8, 10, 12, and 16 were right). (1.6.3) * Set the full/display window correctly. (1.6.3) * Deal with differing per-channel data windows and sampling rates. (1.6.3) * OpenEXR: * Improved handling of density and aspect ratio. #1042 (1.6.0) * Fix read_deep_tiles() error when not starting at the image origin. #1040 (1.6.0/1.5.10) * Fix output of multi-part exr file when some parts are tiled and others aren't. #1040 (1.6.0/1.5.10) * write_tile() with AutoStride calculated the wrong default strides for "edge" tiles when the image width or length was not an integer multiple of the tile size. Also clarified the PDF and imageio.h docs in how they explain strides for this case. #1055 (1.6.1/1.5.12) * Fix bugs in reading deep OpenEXR images with mixed channel types. #1113 (1.6.3/1.5.13) * OpenEXR output supports("deepdata") now correctly returns 'true'. #1238 (1.6.5/1.5.21) * A separate global OIIO::attribute("exr_threads") sets the thread pool size for OpenEXR's libIlmImf, independent of the OIIO thread fan-out attribute OIIO::attribute("threads"). #1244 (1.6.5) * Correctly read and write Matrix33 and double (scalar, 2d, 3d, m33, m44) metadata. #1265,#1267 (1.6.6) * Recognize AR/AG/AB channel names in addition to the old RA/RG/RB #1277 (1.6.6) * PNG: * Writing PNG files now honors the PixelAspectRatio metadata. #1142 (1.6.3) * PFM: * PFM (float extension of PNM) was incorrectly flipped top to bottom. Now fixed. #1230 (1.6.5) * PSD: * Better error handling for files lacking "global layer mask info" or "additional layer info". #1147 (1.6.4/1.5.18) * Additional PSD signatures for global additional layer info. #1147 (1.6.4/1.5.18) * Better error handling when dealing with an empty layer mask. #1147 (1.6.4/1.5.18) * TIFF: * Improved handling of density and aspect ratio. #1042 (1.6.0) * Improved proper handling of the interplay between "XResolution", "YResolution", and "PixelAspectRatio". #1042 (1.6.0) * TIFF output: recognize special "tiff:write_exif" metadata, which when present and set to 0, will skip writing the Exif directory into the TIFF file. This can be helpful when you expect the resulting TIFF file to be read with very old versions of libtiff. #1185 (1.6.4/1.5.18) * Correct read and write of JPEG-compressed TIFF. #1207 (1.6.4) * Correct support for reading LAB, LOG, YCbCr, subsampled chroma. #1207 (1.6.4) * Make robust to strange TIFF files that have unexpected MIP level-to-MIP level changes in planarconfig, photometric, palette, extrasamples, etc. #1220,1221 (1.6.5/1.5.20) * Support output of 2, 4, 10, and 12 bit unsigned ints into TIFF files. #1216 (1.6.5) * Make TIFF reading more robust to certain subimage-to-subimage changes that were thought to be invariant. #1221 (1.6.5) * CMYK is properly read and written. Upon read, CMYK is auto-converted to RGB (and the "tiff:ColorSpace" metadata is set to "CMYK"). For output, if "tiff:ColorSpace" metadata is set and nonzero, the RGB passed in will be auto-converted to CMYK upon writing. #1233 #1245 (1.6.5) * Recognize Exif tags in the main directory, not only the special Exif directory. #1250 (1.6.5) * Fix bug in read_scanlines when reading TIFF files with UNassociated alpha and unusual ystride values. #1278 (1.6.6) * ImageBuf iterator constructors with 0-size ranges or ROIs have been fixed to look like they are immediately done(). #1141 (1.6.3) * Fix bug in internal convert_image() that could corrupt certain image copying of non-contiguous data layouts. #1144 (1.6.3) * Also search for OIIO plugins in [DY]LD_LIBRARY_PATH. #1153 (1.6.4/1.5.16) * Nuke plugin: don't crash with NULL Knob* in TxReaderFormat::setMipLabels. #1212 (1.6.5/1.5.20) * idiff -q results in quiet mode -- output nothing for success, only minimal errors to stderr for failure. #1231 (1.6.5) Build/test system improvements: * Python plugin is now build as a cmake "module" rather than "library", which fixes some things on OSX. #1043 (1.6.0/1.5.10) * Various build fixes for Windows. #1052 #1054 (1.6.1) * New CMake build-time option to specify the default plugin search path. #1056 (1.6.1/1.5.12) * Fix build breaks for very old versions of Ilmbase (1.6 and earlier) that lack a definition of V4f used by our simd.h. #1048 (1.6.1/1.5.11) * Fix signed/unsigned warning on 32 bit platforms in jpeginput.cpp. #1049 (1.6.1/1.5.11) * New CMake build-time option to specify the default plugin search path. #1056 (1.6.1/1.5.12) * Fix gcc 5.0 compiler warning in PtexHalf.cpp. (1.6.1/1.5.12) * Remove dependency of OpenSSL by default. #1086 (1.6.2/1.5.13) * Fix warnings when compiling with C++11. (1.6.3/1.5.13) * Dont link Python framework on OSX. #1099 (1.6.3/1.5.13) * Changed the way testtex warps the image to give faux perspective to test texture mapping. (1.6.3) * Build-time USE_SIMD=... has been changed from accepting a single tag to a comma-separated list of feature options. So you can, for example, do make USE_SIMD=avx,f16c ... (1.6.3) * make USE_NINJA=1 causes CMake to build Ninja build files instead of Makefiles (they execute much faster, espectially for incremental builds). #1158 (1.6.4) * PSD & JPEG plugins fixes for Win32 compilation. #1150 (1.6.4/1.5.16) * Fix Nuke plugin build files to not do anything if USE_NUKE=0. #1156 (1.6.4/1.5.16) * Builds now produce much less console output by default (use VERBOSE=1 to get all the details, most of which is only useful when debugging broken builds). #1162 (1.6.4) * Fix support for older ffmpeg version on Ubuntu 14.04. #1168 (1.6.4/1.5.17) * Build-time fixes for Nocona CPUs that have SSE3 without SSSE3. #1175 (1.6.4/1.5.17) * ustring internals fixes for gcc 5.x changs to std::string ABI. #1176 (1.6.4) * Fixes for clean build with clang 3.6. #1182,1183 (1.6.4) * Fix signed/unsigned comparison error. #1186 (1.6.4) * Top-level Makefile option USE_OPENCV=0 to turn off even searching for OpenCV components. #1194 (1.6.4/1.5.18) * If a system-installed (external) PTex implementation is found, use it. Only use the "bundled" version if no other is found. Also add a top-level USE_PTEX=0 that will skip PTex support, even if the library is found. #1195,1197 (1.6.4) * Fix compiler warnings about int vs size_t mismatches. 1199 (1.6.4) * Improve C++11 and C++14 readiness. #1200 * Fix build break with certain new versions of libraw. #1204 (1.6.4/1.5.19) * Fix build warnings for new Apple tools release that upgrades the standard clang release. #1218 (1.6.5/1.5.20) * When compiling in C++11 mode, std::unordered_map, mutex, recursive_mutex, lock_guard, bind, ref, cref, thread, shared_ptr will be used rather than boost equivalents, and our own thread_group and intrusive_ptr are now used rather than the boost equivalents. We believe that this completely removes all Boost headers and types from the OIIO public APIs when in C++11 mode. (Though internals still use Boost in some cases.) #1262 #1266 (1.6.6) * We are now set up to use Travis-CI (https://travis-ci.org) for continuous integration / automatic builds of all merges and pull requests. #1268, #1269, #1273 (1.6.6) * Don't install fonts if USE_FREETYPE is disabled. #1275 (1.6.6) * Use ccache for builds when detected and safe (unless USE_CCACHE=0). #1274,#1285 (1.6.7) * Failed tests now print their non-matching text output to the console when doing 'make test'. This makes it much easier to spot most errors. #1284 (1.6.7) Developer goodies / internals: * Strutil additions: parse_until, parse_nested (1.6.1), repeat (#1272/1.6.6/1.5.21). * Give Strutil::parse_string an option to not strip surrounding quotes. (1.6.4) * Made TypeDesc::equivalent accept comparisons of arrays of unspecified length with ones of definite length. #1072 (1.6.2/1.5.13) * Add Filesystem::rename() utility. #1070 (1.6.2/1.5.13) * New SIMD methods: insert<>, xyz0, vreduce_add, dot, dot3, vdot, vdot3, AxBxCxDx, blend0not (1.6.2) * array_view enhancements that let you initialize an `array_view` from a const `std::vector&`. #1084 (1.6.2/1.5.14) * hash.h contains several new hashes in namespaces 'OIIO::xxhash' and 'OIIO::farmhash'. Also, Strutil::strhash now uses farmhash rather than the Jenkins one-at-a-time hash, bringing big speed improvements (including ustring creation). Beware that the strhash value returned will be different than they were before. #1090 (1.6.3) * fmath: safe_fast_pow improves the precision of its results for special cases of pow(x,1) and pow(x,2). #1094 (1.6.3/1.5.13) * Added TypeDesc::TypeHalf(). #1113 (1.6.3/1.5.13) * thread.h: our atomic types have had their API adjusted somewhat to more closely conform to C++11's std::atomic. (1.6.3) * ustring's internals and underlying hash table have been overhauled, yielding much higher performance, especially when many threads are simultaneously creating ustrings. (1.6.3) * ROI improvement: make intersection & union robust to uninitialized ROIs as arguments. (1.6.3) * osdep.h is deprecated. Use platform.h instead. (1.6.3) * The DISPATCH_TYPES utility macros used internally by IBA have been improved, and in particular the DISPATCH_COMMON_TYPES now handle ALL types ("uncommon" ones are silently converted to float). (1.6.3) * platform.h moves the endian functions into the OIIO namespace. (1.6.3) * platform.h adds functions for runtime query of CPU capabilities. (1.6.3) * simd.h: float4 and int4 can now construct and load from unsigned short*, short*, unsigned char*, char*, and 'half'. (1.6.3) * Strutil::utf8_to_unicode (1.6.3) * Filesystem::current_path(). #1124 (1.6.3/1.5.21) * Filesystem enumerate_file_sequence and scan_for_matching_filenames have been modified to clear their result vectors rather than simply assume they are empty. #1124 (1.6.3) * oiiotool internals have been refactored to be class-oriented and move a lot of boilerplate repeated in each op to be part of the base class. #1127 (1.6.3) * timer.h: Timer and ScopedTimer have changed slightly. This isn't used in any public OIIO APIs, but may affect 3rd party programs that like to use OIIO's timer.h for convenience. #1201 (1.6.4/1.5.19) * dassert.h: added OIIO_STATIC_ASSERT macros for static assertion. Doesn't affect existing OIIO apps since they are new additions, but feel free to use them! #1202 (1.6.4/1.5.19) * New unit test for imagecache. #1246 (1.6.5) * Sysutil::hardware_concurrency() and physical_concurrency(). #1263 (1.6.6/1.5.21) Release 1.5.24 (1 Mar 2016) -- compared to 1.5.23) --------------------------------------------------- * Fix oiiotool --dumpdata, didn't work properly for non-float files. * Fix broken OpenEXR multi-part output when parts have different pixel types. * Update webp testsuite references for new webp version. Release 1.5.23 (28 Dec 2015) -- compared to 1.5.22) --------------------------------------------------- * Fix build break against Boost 1.60. #1299,#1300 Release 1.5.22 (16 Dec 2015) -- compared to 1.5.21) --------------------------------------------------- * Deep OpenEXR: recognize the newer AR/AG/AB channel name convention. #1277 * Fix ffmpeg plugin compilation in some configurations. #1288 * Bug fix: TIFF read_scanlines of files with unassociated alpha didn't honor the 'ystride' parameter and could run off the end of the buffer for nonstandard stride arranagements. #1278 * Fix missing Python bindings for global OIIO::getattribute(). #1290 Release 1.5.21 (1 Dec 2015) -- compared to 1.5.20) --------------------------------------------------- * Bug fix in --fit when the image didn't need to be resized. #1227 * IFF: Fix botched output of 16 bit uncompressed data. #1234 * IFF: Make "rle" compression the default for output. #1234 * OpenEXR output supports("deepdata") now correctly returns 'true'. #1238 * The lanczos3, radial-lanczos, and catrom filters have been changed from fixed-width to fully scalable. This fixes artifacts that occur when using them as upsizing filters. #1228,#1232 * Filesystem::current_path(). #1124 * Sysutil::hardware_concurrency() and physical_concurrency(). #1263 * Strutil::repeat() #1272 Release 1.5.20 (28 Sep 2015) -- compared to 1.5.19) --------------------------------------------------- * Nuke plugin: don't crash with NULL Knob* in TxReaderFormat::setMipLabels. #1212 * Fix build warnings for new Apple tools release that upgrades the standard clang release. #1218 * Make TIFF reader robust to strange TIFF files that have unexpected MIP level-to-MIP level changes in planarconfig, photometric, palette, extrasamples, etc. We previously assumed these things would never vary between MIP levels of the same file, and Murphy called our bluff. #1220,1221 Release 1.5.19 (8 Sep 2015) -- compared to 1.5.18) -------------------------------------------------- * Fix compile warnings on some platforms/compilers. * Fix build break with certain new versions of libraw. #1204 * Internals: Timer and ScopedTimer have changed slightly. This isn't used in any public OIIO APIs, but may affect 3rd party programs that like to use OIIO's timer.h for convenience. #1201 * Internals: dassert.h has added OIIO_STATIC_ASSERT macros for static assertion. Doesn't affect existing OIIO apps since they are new additions, but feel free to use them! #1202 Release 1.5.18 (4 Aug 2015) -- compared to 1.5.17) --------------------------------------------------- * PSD input improvements: better error handling for files lacking "global layer mask info" or "additional layer info"; additional PSD signatures for global additional layer info; better error handling when dealing with an empty layer mask. #1147 * TIFF output: recognize special "tiff:write_exif" metadata, which when present and set to 0, will skip writing the Exif directory into the TIFF file. This can be helpful when you expect the resulting TIFF file to be read with very old versions of libtiff. #1185 * Top-level Makefile option USE_OPENCV=0 to turn off even searching for OpenCV components. #1194 Release 1.5.17 (13 Jul 2015) -- compared to 1.5.16) --------------------------------------------------- * Fix support for older ffmpeg version on Ubuntu 14.04. #1168 * Fix bug in fft -- was not always zeroing out the imaginary channel. #1171 * Build-time fixes for Nocona CPUs that have SSE3 without SSSE3. #1175 * ustring fixes for new gcc (5.1+) and new std::string ABI. #1176 * Fixes for unit test timer_test for new OSX versions with timer coalescing. #1181 * Fix bugs with rangecompress and rangeexpand when using luma. #1180 * Fixes for clean build when using clang 3.6. #1182 @ text @d1 1 a1 1 $NetBSD: patch-src_cmake_externalpackages.cmake,v 1.1 2016/02/17 04:49:47 dbj Exp $ d3 3 a5 1 --- src/cmake/externalpackages.cmake.orig 2015-06-11 17:25:58.000000000 +0000 d7 10 a16 18 @@@@ -467,7 +467,16 @@@@ if (USE_OPENCV) /usr/local/lib /opt/local/lib ) - set (OpenCV_LIBS "${OpenCV_LIBS} ${OpenCV_LIBS_highgui}") + set (OpenCV_LIBS ${OpenCV_LIBS} ${OpenCV_LIBS_highgui}) + find_library (OpenCV_LIBS_videoio + NAMES opencv_videoio + PATHS "${THIRD_PARTY_TOOLS_HOME}/lib/" + "${PROJECT_SOURCE_DIR}/lib" + "${OpenCV_HOME}/lib" + /usr/local/lib + /opt/local/lib + ) + set (OpenCV_LIBS ${OpenCV_LIBS} ${OpenCV_LIBS_videoio}) if (OpenCV_INCLUDE_DIR AND OpenCV_LIBS) set (OpenCV_FOUND TRUE) add_definitions ("-DUSE_OPENCV") @ 1.1 log @fix linking of openCV libraries. fixes build on Darwin @ text @d1 1 a1 1 $NetBSD$ @