Skip to content

Releases: AcademySoftwareFoundation/OpenImageIO

OpenImageIO 2.1.19.0

01 Sep 18:45
Compare
Choose a tag to compare

Release 2.1.19 (1 Sep 2020) -- compared to 2.1.18

  • DPX: Add support for reading DPX files from IOProxy (such as from a memory
    buffer). #2659 #2665
  • PNG: New output option "png:filter" allows control of the PNG filter
    options. #2650
  • Python: Fix binding of ImageSpec.erase_attribute. #2654
  • Python: Fix missing ImageInput.read_image(). #2677
  • Windows: Improve Strutil::get_rest_arguments() handling of long path
    syntax ("\\?\" style). #2661
  • MinGW: Fix a variety of compiler warnings on this platform. #2657
  • Fix build on Elbrus 2000 architecture. #2671

OpenImageIO 2.2.6.0-RC1

29 Aug 22:00
Compare
Choose a tag to compare
Pre-release

Release candidate for 2.2. The branch is frozen for release. If no critical bugs are identified, we anticipate a full release on Sept 1, 2020.

OpenImageIO 2.2 beta2

11 Aug 15:56
Compare
Choose a tag to compare
OpenImageIO 2.2 beta2 Pre-release
Pre-release

Second and hopefully last 2.2 beta, with some minor fixes and last-minute additions (but none that break compatibility).

OpenImageIO 2.1.18.1

01 Aug 15:38
Compare
Choose a tag to compare

Immediately after releasing 2.1.18.0, it was discovered to still be reporting itself as 2.1.17. Quickly pushing out an update that only changes the reported version number itself.

OpenImageIO 2.2 beta1

31 Jul 22:03
Compare
Choose a tag to compare
OpenImageIO 2.2 beta1 Pre-release
Pre-release

We have now branched for a 2.2 release (for reference, 2.1 was released in December, 2019). Please be aware of the following:

  • We have tagged "Release-2.2.4.0-beta" as the first beta release of the 2.2 family. (Note that the version numbers designated 2.2.0-2.2.3 were earlier developer snapshots.)

  • The branch marker RB-2.2 is the tip of development/merging of future 2.2.x releases, which may add features destined for later 2.2.x patch releases, but (certainly after the beta period is over) will avoid any changes that break backwards API, ABI, or linkage compatibility within the 2.2 family.

  • Henceforth, 'master' will be home to development for future releases (presumed 2.3?), and thus makes no guarantees at all about compatibility breaks.

  • My goal is to have a "beta" period of about two weeks for last minute changes, then one or more "release candidates", culminating in a final official 2.2 release on or close to August 1.

  • I strongly encourage you to test the beta while there is plenty of time to change things before a release. Please let us know if you find any bugs or build problems.

  • After the official 2.2 release, further patches to the 2.1 family will start to tail off, becoming more conservative and only including the most critical or specifically requested fixes.

The preliminary release notes (subject to revision before final release) are as follows:

Release 2.2 (1 Sept 2020??) -- compared to 2.1

New minimum dependencies:

  • pybind11 >= 2.4.2
  • openjpeg >= 2.0 (if JPEG-2000 support is desired) #2555 (2.2.2)

New major features and public API changes:

  • New IOProxy support: ImageInput and ImageOutput now have direct API level
    support for IOProxy in their open() and create() calls, as well as a
    new set_ioproxy() method in these classes. ImageBuf similarly can specify
    a proxy upon construction for reading, and for writing via a
    set_write_ioproxy() method that applies to subsequent write call.
    #2434 (2.2.0), #2477 (2.2.1).
  • Python bindings:
    • Python bindings have been added for missing ParamValue constructors.
      We previously exposed the PV constructors from just a plain int, float,
      or string, but there wasn't an easy way to construct from arbitrary
      data like there is in C++. Now there is. #2417 (2.2.0)
    • ParamValueList.attribute(), when being passed attributes containing
      multiple values, now can have those values passed as Python lists and
      numpy arrays (previously they had to be tuples). #2437 (2.1.11/2.2.0)
    • ImageBufAlgo.color_range_check() is now available to the Python
      bindings (was previously only C++). #2602 (2.2.3)
    • Add a version of ImageBuf.write() that takes an open ImageOutput.
      This is the key to writing a multi-subimage file (such as a multi-part
      OpenEXR) using the Python ImageBuf interface. #2640 (2.2.4)
  • ImageBuf:
    • Easier direct use of IOProxy with ImageBuf: constructor and reset()
      for file-reading ImageBuf now take an optional IProxy* parameter,
      and a new set_write_ioproxy() method can supply an IOProxy for
      subsequent write(). #2477 (2.2.1)
    • Add ImageBuf::setpixel() methods that use cspan instead of ptr/len.
      #2443 (2.1.10/2.2.0)
    • Add "missing" reset() varieties so that every IB constructor has a
      corresponding reset() with the same parameters and vice versa. #2460
  • ImageBufAlgo:
    • New repremult() is like premult, but will not premult when alpha is
      zero. #2447 (2.2.0)
    • New max() and min() functions take the pixel-by-pixel maximum
      or minimum of two images. #2470 (2.2.1)
  • ColorConfig: add OCIO "role" accessors. #2548
  • oiiotool subimage support:
    • Nearly all operations now allow an optional :subimages=...
      modifier that restricts the operation to be performed on only a subset
      of named or indexed subimages. See docs for details. #2582
  • Low-res I/O of images to terminals that support full color and Unicode
    characters. Just output to a file ending in ".term", and it will convert
    (on certain terminals) to an image displayed directly in the terminal.
    #2631 (2.2.4)
    Try:
    oiiotool myfile.exr -o out.term

Performance improvements:

  • Greatly improved TextureSystem/ImageCache performance in highly threaded
    situations where access to the cache was a main bottlenecks. In renders of
    scenes with lots of texture access, with dozens of threads all contending
    for the cache, we are seeing some cases of 30-40% reduction in total
    render time. In scenes that are less texture-bottlenecked, or that don't
    use huge numbers of threads, the improvement is more modest. #2433 (2.2.0)

Fixes and feature enhancements:

  • oiiotool:
    • Intelligible error messages (rather than crashes) if you attempt to
      create an image too big to fit in memory. #2414 (2.2.0)
    • --create and --proxy take an additional optional modifier:
      :type=name that specifies the type of buffer to be created (the
      default, as usual, is to create an internal float-based buffer). #2414
      (2.2.0)
    • -o optional argument :type=name is a new (and preferred) synonym
      for what used to be :datatype=. #2414 (2.2.0)
    • --autotrim now correctly trims to the union of the nonzero regions
      of all subimages, instead of incorrectly trimming all subimages to the
      nonzero region of the first subimage. #2497 (2.2.1.2)
    • --subimage now has an optional :delete=1 modifier that causes the
      operation to delete one named or indexed subimage (versus the default
      behavior of extracing one subimage and deleting the others). #2575
      (2.2.3)
    • The list of dependent libraries (part of oiiotool --help) now
      correctly reports the OpenEXR version. #2604 (2.2.3)
    • Fix: --eraseattrib did not correctly apply to all subimages when
      -a or :allsubimages=1 were used. #2632 (2.2.4)
  • ImageBuf / ImageBufAlgo:
    • Huge ImageBuf allocation failures (more than available RAM) now are
      caught and treated as an ImageBuf error, rather than crashing with an
      uncaught exception. #2414 (2.2.0)
    • ImageBuf constructors that are passed an ImageSpec (for creating an
      allocated writable IB or "wrapping" a user buffer) now check that the
      spec passed has enough information to know the size of the buffer
      (i.e., it will be recognized as an error if the width, height, depth,
      channels, or data type have not been set validly). #2460
    • Fix: ImageBuf::getchannel() did not honor its wrap parameter.
      #2465 (2.2.1/2.1.12)
    • Fix: IBA::reorient() and IBA::computePixelHashSHA1() did not honor
      their nthreads parameter. #2465 (2.2.1/2.1.12)
    • resample() has been modified to more closely match resize by using
      clamp wrap mode to avoid a black fade at the outer edge of the
      resampled area. #2481
    • Fix: ImageBuf::get_pixels() did not honor the stride parameters.
      #2487. (2.1.12/2.2.1)
    • Fix resize() to avoid a crash / stack overflow in certain cases of
      very big images and very large filter kernels. #2643 (2.2.4)
  • ImageCache / TextureSystem / maketx:
    • New IC/TS attribute "trust_file_extensions", if nonzero, is a promise
      that all files can be counted on for their formats to match their
      extensions, which eliminates some redundant opens and format checks
      in the IC/TS and can reduce needless network/filesystem work. Use with
      caution! #2421 (2.2.0)
    • texture3d() fixed some cases where derivative results were not
      correctly copied to the outputs. #2475 (2.2.1)
    • maketx/IBA::make_texture: better error detection and messages when
      using "overscan" textures with formats that can't support it properly.
      (Punchline: only OpenEXR textures can do it.) #2521 (2.2.0)
    • Fix possible redundant tile reads in multithread situations (harmless,
      but makes for redundant I/O). #2557 (2.2.2)
  • Exif read: guard better against out of range offests, fixes crashes when
    reading jpeg files with malformed exif blocks. #2429 (2.1.10/2.2.0)
  • Fix: ImageSpec::erase_attribute() did not honor its searchtype
    parameter. #2465 (2.2.1/2.1.12)
  • Fix: Some ColorProcessor::apply() methods were not using their chanstride
    parameters correctly. #2475 (2.1.12)
  • Fix: iinfo return code now properly indicates failures for files that
    can't be opened. #2511 (2.2.2/2.1.13)
  • JPEG:
    • Fix resolution unit metadata that was not propery set in JPEG output.
      #2516 (2.2.2/2.1.13)
    • Fix loss of 'config' info upon close/reopen. #2549 (2.2.2)
  • OpenEXR:
    • Add support for reading and writing float vector metadata. #2459 #2486
    • Fix bug in the channel sorting order when channels are "X" and
      "Y" (was reversing the order by confusing "Y" for "luminance"). #2595
      (2.1.16/2.2.3)
    • We no longer automatically rename the "worldToNDC" attribute to
      "worldtoscreen" and vice versa. #2609 (2.2.4)
  • PNG:
    • Fix loss of 'config' info upon close/reopen. #2549 (2.2.2)
  • Raw images:
    • Support for new Canon .cr3 file, but only if you build against
      libraw >= 0.20.0 developer snapshot. #2484 (2.2.1) #2613 (2.2.4)
    • RAW input: set the "raw:flip" attribute if the underlying libraw did a
      reorientation. #2572 (2.1.15/2.2.3)
    • Avoid errors (in libraw) that resulted from multiple threads opening
      raw files at the same time. #2633 (2.2.4)
  • RLA:
    • Additional sanity checks and error checks/messages for detecting files
      that might be first mistaken for RLA files, but actually are not.
      #2600 (2.2.3)
  • TIFF:
    • Internal improvements to handling metadata retrieval for certain
      unusual tags. #2504 (2.2....
Read more

OpenImageIO 2.1.18.0

31 Jul 21:17
Compare
Choose a tag to compare

Release 2.1.18 (1 Aug 2020) -- compared to 2.1.17

  • Python ImageBuf.write() added a variety that takes an open ImageOutput.
    This is the key to writing multi-subimage files from Python. #2640
  • oiiotool --eraseattrib fixed: was not applying to all subimages. #2632
  • RAW: Improve thread safety when more than one thread might be opening
    different raw files at the same time. #2633
  • unordered_map_concurrent fixed a missing size decrement upon erase(). #2624
  • Fixes to support certain recent pybind11 changes. #2637
  • Fixes to support OpenColorIO v2. #2636
  • Fixes to support more recent fmtlib versions. #2639
  • PNG: document the "png:compressionLevel" output hint. #2642
  • In oiioversion.h, add a OIIO_MAKE_VERSION macro that constructs the
    integer code for a particular major/minor/patch release. #2641

OpenImageIO 2.1.17.0

01 Jul 23:20
Compare
Choose a tag to compare

Release 2.1.17 (1 Jul 2020) -- compared to 2.1.16

  • Build: Use the discovered python binary name, to address the Fedora
    retriction that you must use "python2" or "python3" by name. #2598
  • Docs: ImageBufAlgo::nonzero_region had been inadvertently left out of the
    Python chapter.
  • Improve RLA reader's ability to detect corrupt or non-RLA files, which
    fixes crashes you could get from trying to read non-image files. #2600
  • Support for building against Qt 5.15. (Note: Qt support is only needed
    for the "iv" viewer.) #2605
  • Fixes to support LibRaw 0.20 (which is currently in beta3). Note that this
    will make it incompatible with 0.20 beta1 and beta2, due to a fixed typo
    of a struct field in one of the LibRaw's headers. #2613
  • oiioversion.h: fix typo that left the OIIO_VERSION_RELEASE_TYPE symbol
    undefined. #2616

OpenImageIO 2.1.16.0

02 Jun 00:26
Compare
Choose a tag to compare

Release 2.1.16 (1 Jun 2020) -- compared to 2.1.15

  • OpenEXR: Fix bug in the channel sorting order when channels are "X" and
    "Y" (was reversing the order by confusing "Y" for "luminance"). #2595
  • Python: Fixed a bug that lost certain string arguments, especially when
    passing a TypeDesc as its string equivalent. #2587
  • fmath: Very minor fix to OIIO::clamp(), shouldn't affect normal use with
    floats at all, but fixed a subtle quasi-bug in OSL. #2594
  • TypeDesc has additional helpers of constexpr values TypeFloat2,
    TypeVector2, TypeVector4, TypeVector2i, TypePointer. #2592
  • Build: The exported CMake config files now set cmake variable
    OpenImageIO_PLUGIN_SEARCH_PATH #2584
  • Docs: improvements and fixes to broken page rendering.

OpenImageIO 2.1.15.0

11 May 04:59
Compare
Choose a tag to compare

Release 2.1.15 (11 May 2020) -- compared to 2.1.14

  • RAW input: the "raw:flip" attribute if the underlying libraw did a
    reorientation. #2572
  • Movie files: Fix posible infinite loop in the FFMpeg-based reader. #2576
  • Fixes to allow building against the forthcoming LibRaw 0.20 release. #2484
  • Documentation fixes. #2581

OpenImageIO 2.1.14.0

02 May 07:42
Compare
Choose a tag to compare

Release 2.1.14 (1 May 2020) -- compared to 2.1.13

  • JPEG & PNG: Fix loss of 'config' hints upon close and reopen that could
    happen in cases where scanlines were accessed out of order. #2549
  • TIFF: Fix subtle bug when reading certain Exif directories in the header.
    #2540
  • Added OCIO role accessors to the ColorConfig class. #2548
  • Improve error messages when overscan textures are not possible. #2521
  • Build: fix problems when compiling against current libtiff master (symbol
    clash on GPSTAG values). #2539
  • Build: Fix static boost to not overlink. #2537.
  • Fix some problems with the docs. #2541
  • AttrDelegate::as_vec<> returns the whole attribute as a std::vector.
    #2528