A very nice thread, my thoughts regarding pushing the project to a healthier place, would be to have some kind of guide for setup and workflow in windows, as weather we like it or not there are a lot of windows users. It is still not a trivial task to setup and compile in windows. So some kind of guide and support is much appreciated.
Regards, Kumar On Thu, Sep 1, 2022 at 5:34 PM Chris Spence <ch...@digitaldevoid.com> wrote: > Hi Larry, > > Wow, what dedication. Is this by singular Larry Gritz, or is it noe L. > Gritz et al? > > I’m really impressed. I’m not using OIIO, but have no doubt I’ll have a > need for it down the road. > > Thank you, > > > Chris Spence > Digital Devoid, Inc. > 7300 Biscayne Blvd, Suite 405 > Miami, FL 33138 > > Tel: 305 757 1330 > > ch...@digitaldevoid.com > www.digitaldevoid.com > > > On Sep 1, 2022, at 2:16 AM, Larry Gritz <l...@larrygritz.com> wrote: > > > > We have tagged "v2.4.3.0-beta" as the beta release of the 2.4 series of > OpenImageIO. This has been used in production throughout its development, > so hopefully the beta period will be brief and uneventful. The plan is to > tag a release candidate on September 8 and a full release on September 15 > (assuming no critical problems are found). At that point, 2.4 will be the > officially supported release series, with monthly (or as necessary) patch > releases containing fixes and new minor non-breaking features. > > > > Note that the transition to 2.4 is NOT ABI- or link-compatible with 2.3 > releases -- you are expected to recompile applications against 2.4, not > merely relink. We think that it should be fully backward-compatible with > the 2.3 API, so you should not have to change the source code of any calls > to OIIO public API calls while recompiling for 2.4. > > > > We will do everything we can to ensure that no ABI or link > incompatibilities will be introduced during the beta period, but it's > possible if a critical problem is discovered at the last minute that is > impossible to fix adequately without an incompatibility (though we don't > anticipate that happening). Once we declare a release candidate, from that > point forward, we guarantee no ABI or link incompatible changes for the > remainder of the 2.4 family of releases. > > > > Here is the full list of improvements of 2.4, versus the first 2.3 > releases: > > > > > > Release 2.4 (15 Sept 2022?) -- compared to 2.3 > > ---------------------------------------------- > > New minimum dependencies and compatibility changes: > > * OpenEXR minimum is now 2.3 (raised from 2.0). #3109 (2.4.0) > > * Field3D support has been removed entirely. The Field3D library appears > to be > > no longer maintained, and is incompatible with modern versions of > > OpenEXR/Imath. We believe that all prior uses of Field3D use via OIIO > have > > been migrated to OpenVDB. #3151 (2.4.0) > > > > New major features and public API changes: > > * Imath header and class hiding: > > - Header includes have been shuffled around so that Imath headers are > not > > included from OIIO headers where they are not needed, and some OIIO > > headers that need Imath types only for few function parameters now > guard > > those functions with `#if` so that Imath-taking functions are not > > visible unless the calling app has previously had an `#include` of > > Imath. If your app uses Imath types but did not include the right > Imath > > headers (relying on the accidental fact of other OIIO headers > > transitively including them), you may need to adjust your includes. > > #3301 #3332 (2.4.0.2) #3406 #3474 (2.4.2) > > - New `V3fParam`, `M33fParam`, and `M44Param` (defined in vecparam.h) > are > > used just for parameter passing in public APIs, instead of > Imath::V3f, > > M33f, or M44f, in order to more fully hide Imath types from our > public > > interfaces. These are only parameter-passing classes, and are not > useful > > as vector or matrix classes in their own right. But they seamlessly > cast > > to and from other vector- and matrix-like classes. #3330 (2.4.1.0) > > - `OPENIMAGEIO_IMATH_DEPENDENCY_VISIBILITY` is a new CMake cache > variable > > at OIIO build time that controls whether the Imath library > dependencies > > will be declared as PUBLIC (default) or PRIVATE target dependencies > of > > libOpenImageIO and libOpenImageIO_Util. #3322 (4.2.0.2) #3339 > (4.2.0.3) > > - For *downstream projects* that consume OIIO's exported cmake config > > files, setting CMake variable > `OPENIMAGEIO_CONFIG_DO_NOT_FIND_IMATH` to > > ON will skip the find_depencency() calls for Imath and OpenEXR. To > > clarify, this is not a variable that has any effect when building > OIIO, > > it's something set in the downstream project itself. #3322 > (4.2.0.2) > > * The dithering that happens when saving high bit depth image data to > low bit > > depth formats has been improved in several ways. It now applies when > writing > >> 8 bit data to <= 8 bit files, not just when the source is float or half. > > The dither pattern is now based on blue noise, and this dramatically > > improves the visual appearance. #3141 (2.4.0/2.3.10) > > * TextureSystem now supports stochastic sampling. If the new TextureOpt > field > > `rnd` (which now defaults to -1.0) is set to a value >= 0, the filtered > > texture lookup can use stochastic sampling to save work. The shading > system > > attribute "stochastic" is set to the stochastic strategy: 0 = no > stochastic > > sampling; 1 = for trilinear or anisotropic MIP modes, choose one MIP > level > > stochastically instead of blending between two levels; 2 = for > anisotropic > > mode, use just one anisotropic sample, chosen across the filter axis. > (This > > is a bit field, so 3 combines both strategies.) We measure this > speeding up > > texture lookups by 25-40%, though with more visual noise (which should > be > > resolved cleanly by a renderer that uses many samples per pixel). This > > should only used for texture lookups where many samples per pixel will > be > > combined, such as for surface or light shading. It should not be used > for > > texture lookups that must return a single correct value (such as for > > displacement, when each grid position is sampled only once). Even when > the > > "stochastic" attribute is nonzero, any individual texture call may be > made > > non-stochastic by setting TextureOpt.rnd to a negative value. #3127 > > (2.4.0/2.3.10) #3457 (2.4.2) > > * maketx/make_texture() now supports options to store Gaussian forward > and > > inverse transform lookup tables in image metadata (must be OpenEXR > textures > > for this to work) to aid writing shaders that use histogram-preserving > > blending of texture tiling. This is controlled by new maketx arguments > > `--cdf`, `--cdfsigma`, `--sdfbits`, or for `IBA::make_texture()` by > using > > hints `maketx:cdf`, `maketx:cdfsigma`, and `maketx:cdfbits`. #3159 #3206 > > (2.4.0/2.3.10) > > * oiiotool new commands and features: > > - Control flow via `--if`, `--else`, `--endif`, `--while`, > `--endwhile`, > > `--for`, `--endfor` let you prototypes conditional execution and > loops > > in the command sequence. #3242 (2.4.0) > > - `--set` can set variables and their values can be retrieved in > > expressions. #3242 (2.4.0) > > - Expressions now support: numerical comparisons via `<`, `>`, `<=`, > `>=`, > > `==`, `!=`, `<=>`; logical operators `&&`, `||`, `!`, `not()`; > string > > comparison functions `eq(a,b)` and `neq()`. #3242 #3243 (2.4.0) > > - `--oiioattrib` can set "global" OIIO control attributes for an > oiiotool > > run (equivalent of calling `OIIO::attribute()`). #3171 > (2.4.0/2.3.10) > > - `--repremult` exposes the previously existing `IBA::repremult()`. > The > > guidance here is that `--premult` should be used for one-time > conversion > > of "unassociated alpha/unpremultiplied color" to > > associated/premultiplied, but when you are starting with a > premultiplied > > image and have a sequence of unpremultiply, doing some adjustment in > > unpremultiplied space, then re-premultiplying, it's `--repremult` > you > > want as the last step, because it preserves alpha = 0, color > 0 > data > > without crushing it to black. #3192 (2.4.0/2.3.10) > > - `--saturate` can adjust saturation level of a color image. #3190 > > (2.4.0/2.3.10) > > - `--maxchan` and `--minchan` turn an N-channel image into a 1-channel > > images that for each pixel, contains the maximum value in any > channel of > > the original for that pixel. #3198 (2.4.0/2.3.10) > > - `--point` lets you color one or more pixels in an image (analogous > to > > IBA::render_point). #3256 (2.4.0) > > - `--warp` now takes an optional modifier `:wrap=...` that lets you > set > > which wrap mode to use when sampling past the edge of the source > image. > > #3341 (2.4.0.3) > > - New `--st_warp` performs warping of an image where a second image > gives > > the (s,t) coordinates to look up from at every pixel. #3379 > > (2.4.2/2.3.14) > > - Many attribute actions now take optional modifier `:subimages=` that > > instructs oiiotool to apply to a particular subset of subimges in > > multi-subimage files (such as multi-part exr). The commands so > enabled > > include `--attrib`, `--sattrib`, `--eraseattrib`, `--caption`, > > `--orientation`, `--clear-keywords`, `--iscolorspace`. The default, > if > > subimages are not specified, is to only change the attributes of the > > first subimage, unless `-a` is used, in which case the default is to > > change the attributes of all subimages. #3384 (2.4.2) > > * ImageSpec : > > - New constructors to accept a string for the data type. #3245 > > (2.4.0/2.3.12) > > * ImageBuf/ImageBufAlgo : > > - `IBA::saturate()` can adjust saturation level of a color image. > #3190 > > (2.4.0/2.3.10) > > - `IBA::maxchan()` and `minchan()` turn an N-channel image into a > > 1-channel images that for each pixel, contains the maximum value in > any > > channel of the original for that pixel. #3198 (2.4.0/2.3.10) > > - New `IBA::st_warp()` performs warping of an image where a second > image > > gives the (s,t) coordinates to look up from at every pixel. #3379 > > (2.4.2/2.3.14) > > - `IBA::bluenoise_image()` returns a reference to a periodic blue > noise > > image. #3141 #3254 (2.4.0/2.3.10) > > * Python bindings: > > - New ImageBuf constructor and reset() from a NumPy array only -- it > > deduces the resolution, channels, and data type from the array > > dimensions and type. #3246 (2.4.0/2.3.12) > > - ROI now has a working `copy()` method. #3253 (2.4.0/2.3.12) > > - ImageSpec and ParamValueList now support `'key' in spec`, `del > > spec['key']`, and `spec.get('key', defaultval)` to more fully > emulate > > Python `dict` syntax for manipulating metadata. #3252 (2.3.12/2.4.0) > > - Support uint8 array attributes in and out. This enables the proper > > Python access to "ICCProfile" metadata. #3378 (2.4.1.0/2.3.14) > > - New `ImageSpec.get_bytes_attribute()` method is for string > attributes, > > but in Python3, skips decoding the underlying C string as UTF-8 and > > returns a `bytes` object containing the raw byte string. #3396 > (2.4.2) > > - Fixes for Python 3.8+ to ensure that it can find the OpenImageIO > module > > as long as it's somewhere in the PATH. This behavior can be > disabled by > > setting environment variable `OIIO_LOAD_DLLS_FROM_PATH=0`. #3470 > > (2.4.0/2.3.18) > > * New global OIIO attributes: > > - `"try_all_readers"` can be set to 0 if you want to override the > default > > behavior and specifically NOT try any format readers that don't > match > > the file extension of an input image (usually, it will try that one > > first, but it if fails to open the file, all known file readers > will be > > tried in case the file is just misnamed, but sometimes you don't > want it > > to do that). #3172 (2.4.0/2.3.10) > > - `"use_tbb"` if nonzero, and if OIIO was built with TBB enabled and > > found, then will use the TBB thread pool instead of the OIIO > internal > > thread pool. #3473 (2.4.2.2) > > - `"version"` (read only) now retrieves the version string. #3534 > > (2.3.19.0/2.4.2.2) > > * Full IOProxy support has been added to TIFF #3075 (2.4.0/2.3.8), JPEG, > GIF > > #3181 #3182 (2.4.0/2.3.10), DDS #3217, PNM #3219, PSD #3220, Targa > #3221, > > WebP #3224, BMP #3223, JPEG-2000 #3226 (2.4.0). > > * Convention change: Image readers who wish to convey that the color > space of > > an input image is a simple gamma-corrected space will now call the color > > space "GammaX.Y" (previously we sometimes used this, but sometimes > called it > > "GammaCorrectedX.Y"). #3202 (2.4.0) > > * `oiioversion.h` now defines symbols `OIIO_USING_IMATH_VERSION_MAJOR` > and > > `OIIO_USING_IMATH_VERSION_MINOR` that reveal which Imath version was > used > > internally to OIIO when it was build (which may be different than the > > version found when the downstream app is being compiled). #3305 > (2.4.0.1) > > * Most of the major APIs (including ImageInput, ImageOutput, and > ImageBuf) > > that took a std::string or string_view to indicate a filename (assumed > to > > support UTF-8 encoding of Unicode filenames) now have additional > versions > > that directly take a `std::wstring`, thus supporting UTF-16 Unicode > > filenames as "wide strings". #3312 #3318 (2.4.0.1) > > * The ColorConfig API adds new calls `getDisplayViewColorSpaceName()` and > > `getDisplayViewLooks()` that expose the underlying OpenColorIO > > functionality. #3319 (2.4.0.2) > > * Many long-deprecated functions in imageio.h and imagbufalgo.h are now > > marked as OIIO_DEPRECATED, and therefore may start to generate warnings > > if used by downstream software. #3328 (2.4.1.0) > > > > Performance improvements: > > * Raise the default ImageCache default tile cache from 256MB to 1GB. This > > should improve performance for some operations involving large images or > > images with many channels. #3180 (2.4.0/2.3.10) > > * Performance of JPEG-2000 I/O is improved by 2-3x due to multithreading, > > but only if you are using a sufficiently new version of OpenJPEG (2.2 > > for encoding, 2.4 for decoding). #2225 (2.3.11/2.4.0) > > * Dramatically speed up (50-100x) the implementation of Strutil iequals, > > iless, starts_with, istarts_with, ends_with, iends_with. This in turn > speeds > > up ParamValueList find/get related methods, ImageSpec find/get methods, > and > > TS::get_texture_info. #3388 (2.4.1.1) > > * Renderer users of the TextureSystem might see up to a ~40% speedup if > > using the new stochastic sampling features. #3127 #3457 > > * Speed up reading of uncompressed DDS images by about 3x. #3463 > (2.4.2.0) > > > > Fixes and feature enhancements: > > * ImageSpec: > > - Implemented deserialization of extra_attribs from XML. #3066 > (2.4.0/2.3.8) > > - Allow `getattribute("format")` to retrieve the name of the pixel > data > > type. #3247 (2.4.0) > > * ImageInput / ImageOutput: > > - Protected methods that make it easier to implement support for > IOProxy > > in image readers and writers. #3231 (2.4.0) > > - Fix crash when ioproxy is passed to a plugin that doesn't support > it. > > #3453 (2.4.2) > > * ImageBuf / ImageBufAlgo: > > - Fix ImageBuf::read bug for images of mixed per-channel data types. > #3088 > > (2.4.0/2.3.8) > > - `IBA::noise()` now takes "blue" as a noise name. Also, "white" is > now > > the preferred name for what used to be "uniform" (which still works > as a > > synonym). #3141 (2.4.0/2.3.10) > > - Refactor ImageBuf::Iterator, ConstIterator templates, reduces > compile > > time substantially. #3195 (2.4.0) > > - IBA functions taking a `cspan<>` now more flexibly can be passed > > an init list like `{ 0.2f, 0.4f, 0.5f }` instead of needing to wrap > it > > in a `cspan<float>()` constructor. #3257 (2.3.12/2.4.0) > > - `make_texture()`: ensure that "maketx:ignore_unassoc" is honored. > > #3269 (2.4.0.1/2.3.12) > > - `IBA::computePixelStats()` improved precision. #3353 ( > 2.4.1.0/2.3.14) > > - `IBA::isConstantColor()` is faster -- now if one thread finds its > > portion not constant, it can signal the other threads to stop > > immediately instead of completing their regions. #3383 (2.4.1.1) > > - A new flavor of `IBA::compare()` allows relative as well as absolute > > error thresholds. #3508 (2.3.19.0/2.4.2.2) > > * ImageCache / TextureSystem / maketx: > > - When textures are created with the "monochrome_detect" feature > enabled, > > which turns RGB textures where all channels are always equal into > true > > single channel greyscale, the single channel that results is now > > correctly named "Y" instead of leaving it as "R" (it's not red, it's > > luminance). #3205 (2.4.0/2.3.10) > > - Enhance safety/correctness for untiled images that exceed 2GB size > > (there was an integer overflow problem in computing offsets within > > tiles). #3232 (2.3.11/2.4.0) > > - Improve error propagation from ImageCache to higher levels, > especially > > for tile-reading errors encountered during ImageBuf iterator use, > and > > ImageCache errors encountered when using the TextureSystem. #3233 > > (2.4.0) > > - Support an additional UDIM pattern `<UVTILE>`, which is specified by > > MaterialX. #3280 #3285 (2.3.12/2.4.0.1) > > - Add support for UDIM pattern `<uvtile>` (used by Clarisse & V-Ray). > #3358 > > (2.4.1.0/2.3.14) > > - The `maketx --handed` option, or `oiiotool -attrib > -otex:handed=...`, or > > adding "handed" metadata to the configuration ImageSpec being > passed to > > `IBA::make_texture()` is now supported for communicating the > handedness > > of a vector displacement or normal map. #3331 (2.4.0.2) > > - Speed up UDIM lookups by eliminating internal mutex. #3417 (2.4.0) > > - TextureSystem: Fix typo that prevented "max_tile_channels" > attribute from > > being set or retrieved. (2.4.2/2.3.17) > > * oiiotool: > > - `--ch` now has virtually no expense if the arguments require no > change > > to the channel order or naming (previously, it would always incur an > > image allocation and copy even if no real work needed to be done). > #3068 > > (2.4.0/2.3.8) > > - `--ch` now warns if you specify a channel name that was not present > > in the input image. #3290 (2.4.0.1) > > - `--runstats` timing report has been improved and now more accurately > > attributes time to each operation. In particular, input I/O is now > > credited to "-i" rather than being incorrectly attributed to the > other > > ops that happen to trigger I/O of previously mentioned files. #3073 > > (2.4.0/2.3.8) > > - Allow quotes in command modifiers. #3112 (2.4.0/2.3.9) > > - Fix `--dumpdata` getting the formatting of floating point values > wrong. > > #3131 (2.4.0/2.3.9) > > - `--dumpdata:C=name` causes the dumped image data to be formatted > with > > the syntax of a C array. #3136 (2.4.0/2.3.9) > > - `--noise` now takes "blue" as an additional noise type. #3141 > > (2.4.0/2.3.10) > > - `-d` now accepts "uint1", "uint2", "uint4", and "uint6" for formats > that > > support such low bit depths (TIFF). #3141 (2.4.0/2.3.10) > > - `--invert` fixed to avoid losing the alpha channel values. #3191 > > (2.4.0/2.3.10) > > - Fix bug when autocropping output images when the entire pixel data > > window is in the negative coordinate region. #3164 (2.4.0/2.3.10) > > - Improved detection of file reading failures. #3165 (2.4.0/2.3.10) > > - All commands that do filtering (--rotate, --warp, --reize, --fit, > and > > --pixelaspect) now accept optional modifier `:highlightcomp=1` to > enable > > "highlight compensation" to avoid ringing artifacts in HDR images > with > > very high-contrast regions. #3239 (2.4.0) > > - `--pattern checker` behavior has changed slightly: if the optional > > modifier `:width=` is specified but `:height=` is not, the height > will > > be equal to the width. #3255 (2.4.0) > > - `--pixelaspect` fixes setting of the "PixelAspectRatio", > "XResolution", > > and "YResolution" metadata, they were not set properly before. #3340 > > (2.4.0.3) > > - Fix bug that prevented metadata from being able to print as XML. > #3499 > > (2.4.2.2) > > - `i:ch=...` fixes crashes, and also improves the warning message in > cases > > where the requested channels don't exist in the source image. #3513 > > (2.4.2.2) > > * Python bindings: > > - Subtle/asymptomatic bugs fixed in > `ImageBufAlgo.color_range_check()` and > > `histogram()` due to incorrect release of the GIL. #3074 (2.4.0) > > - Bug fix for `ImageBufAlgo.clamp()`: when just a float was passed > for the > > min or max, it only clamped the first channel instead of all > channels. > > #3265 (2.3.12/2.4.0) > > * idiff: > > - `--allowfailures` allows that number of failed pixels of any > magnitude. > > #3455 (2.4.2) > > - `--failrelative` and `--warnrelative` allows the failure and warning > > threshold to use a symmetric mean relative error (rather than the > > absolute error implied by the existing `--fail` and `--warn` > arguments). > > #3508 (2.3.19.0, 2.4.2.2) > > * BMP: > > - IOProxy support. #3223 (2.4.0) > > - Support for additional (not exactly fully documented) varieties > used by > > some Adobe apps. #3375 (2.4.1.0/2.3.14) > > - Better detection of corrupted files with nonsensical image > dimensions or > > total size. #3434 (2.4.2/2.3.17/2.2.21) > > - Protect against corrupted files that have palette indices out of > bound. > > #3435 (2.4.2/2.3.17/2.2.21) > > * DDS: > > - Don't set "texturetype" metadata, it should always have been only > > "textureformat". Also, add unit testing of DDS to the testsuite. > #3200 > > (2.4.0/2.3.10) > > - IOProxy support. #3217 (2.4.0) > > - Add support for BC4-BC7 compression methods. #3459 (2.4.2) > > - Speed up reading of uncompressed DDS images (by about 3x). #3463 > > - Better handling of cube maps with MIPmap levels. #3467 (2.4.0) > > - For 2-channel DDS files, label them as Y,A if the flags indicate > > luminance and/or alpha, otherwise label them as R,G. #3530 (2.4.2.2) > > - Do not set "oiio:BitsPerSample" for cases where the dds.fmt.bpp > field is > > not assumed to be valid. MS docs say it's valid only if the flags > field > > indicates RGB, LUMINANCE, or YUV types. #3530 (2.4.2.2) > > * FFMpeg > > - Now uses case-insensitive tests on file extensions, so does not get > > confused on Windows with all-caps filenames. #3364 (2.4.1.0/2.3.14) > > - Take care against possible double-free of allocated memory crash > upon > > destruction. #3376 (2.4.1.0/2.3.14) > > * GIF > > - IOProxy support. #3181 (2.4.0/2.3.10) > > * HDR: > > - IOProxy support. #3218 (2.4.0) > > * HEIF: > > - Handle images with unassociated alpha. #3146 (2.4.0/2.3.9) > > * JPEG: > > - IOProxy support. #3182 (2.4.0/2.3.10) > > - Better handling of PixelAspectRatio. #3366 (2.4.1.0) > > - Fix multithreaded race condition in read_native_scanline. #3495 > > (2.4.2.2) > > - Fix bug in XRes,YRes aspect ratio logic. #3500 (2.4.2.2) > > - When asked to output 2-channel images (which JPEG doesn't support), > use > > the channel names to decide whether to drop the second channel (if > it > > seems to be a luminance/alpha image) or add a third black channel > (other > > cases). #3531 (2.4.2.2) > > * JPEG2000: > > - Enable multithreading for decoding (if using OpenJPEG >= 2.2) and > > encoding (if using OpenJPEG >= 2.4). This speeds up JPEG-2000 I/O by > > 3-4x. #2225 (2.3.11/2.4.0) > > - IOProxy support. #3226 (2.4.0) > > - Better detection and error reporting of failure to open the file. > > #3440 (2.4.2) > > * OpenEXR: > > - When building against OpenEXR 3.1+ and when the global OIIO > attribute > > "openexr:core" is set to nonzero, do more efficient multithreaded > > reading of OpenEXR files. #3107 (2.4.0/2.3.9.1) > > - Fix excessive memory usage when saving EXR files with many channels. > > #3176 (2.4.0/2.3.10) > > - When building against OpenEXR >= 3.1.3, our OpenEXR output now > supports > > specifying the zip compression level (for example, by passing the > > "compression" metadata as "zip:4"). Also note than when using > OpenEXR >= > > 3.1.3, the default zip compression has been changed from 6 to 4, > which > > writes compressed files significantly (tens of percent) faster, but > only > > increases compressed file size by 1-2%. #3157 (2.4.0/2.3.10) Fixes > in > > #3387 (2.4.1.1) > > - Fix writing deep exrs when buffer datatype doesn't match the file. > #3369 > > (2.4.1.0/2.3.14) > > * PNG: > > - Assume sRGB color space as default when no color space attribute is > > in the file. #3321 (2.4.0.2/2.3.13) > > - Improve error detection and propagation for corrupt/broken files. > #3442 > > (2.4.2) > > - Improve error detection and messages when writing PNG files, for > various > > kinds of errors involving metadata. #3535 (2.4.2.2) > > * PPM: > > - Mark all PPM files as Rec709 color space, which they are by > > specification. #3321 (2.4.0.2/2.3.13) > > * PSD: > > - IOProxy support. #3220 (2.4.0) > > - Better error messages for corrupted files and other failures. #3469 > > (2.4.0) > > * RAW: > > - When using libraw 0.21+, now support new color space names "DCE-P3", > > "Rec2020", and "sRGB-linear", and "ProPhoto-linear". Fix incorrect > gamma > > values for "ProPhoto". #3123 #3153 (2.4.0/2.3.9.1) > > * RLA: > > - Better guards against malformed input. #3163 (2.4.0/2.3.10) > > * Targa: > > - Improved error detection for read errors and corrupted files. #3120 > > (2.4.0/2.3.9.1) #3162 (2.4.0/2.3.10) > > - Fixed bug when reading x-flipped images. #3162 (2.4.0/2.3.10) > > - IOProxy support. #3221 (2.4.0) > > - Better interpretation of TGA 1.0 files with alpha that is zero > > everywhere. Be more consistent with Targa attributes all being > called > > "targa:foo". Add "targa:version" to reveal whether the file was TGA > 1.0 > > or 2.0 version of the format. #3279 (2.4.0.1/2.3.12) > > - Fix parsing of TGA 2.0 extension area when the software name was > > missing form the header. #3323 (2.4.0.2/2.3.13) > > - Fix reading of tiny 1x1 2-bpp Targa 1.0 images. #3433 > (2.3.17/2.2.21) > > * Socket imageio plugin has been removed entirely, it never was > completed or > > did anything useful. #3527 (2.3.2.2) > > * TIFF: > > - IOProxy is now supported for TIFF output. #3075 (2.4.0/2.3.8) > > - Honor zip compression quality request when writing TIFF. #3110 > > (2.4.0/2.3.11) > > - Automatically switch to "bigtiff" format for really big (> 4GB) > images. > > #3158 (2.4.0) > > - Support for palette images with 16 bit palette indices. #3262 > > (2.4.0/2.3.12) > > - Gracefully handle missing ExtraSamples tag. #3287 (2.4.0.1/2.3.12) > > - New output configuration hint: "tiff:write_extrasamples" (default: > 1), > > if set to 0, will cause the TIFF output to NOT include the required > > EXTRASAMPLES tag in the header. This is not recommended, but fixes > > a specific problem in some circumstances where PhotoShop misbehaves > > when the extrasamples tag is present. #3289 (2.4.0.1) > > - No longer write IPTC blocks to the TIFF header by default, it caused > > trouble and was sometimes corrupted. You can force it to write an > IPTC > > block by using the output open configuration hint "tiff:write_iptc" > set > > to nonzero. #3302 (2.4.0.1) > > - Fix read problems with TIFF files with non-zero y offset. #3419 > > (2.3.17/2.4.2) > > - Fixed some longstanding issues with IPTC data in the headers. #3465 > > (2.4.0) > > - Protect against crashes with certain empty string attributes. #3491 > > (2.4.2.1) > > * WebP: > > - Fix previous failure to properly set the "oiio:LoopCount" metadata > > when reading animated webp images. #3183 (2.4.0/2.3.10) > > - IOProxy support. #3224 (2.4.0) > > * Better catching of exceptions thrown by OCIO 1.x if it encounters 2.0 > config > > files. #3089 (2.4.0/2.3.9) > > * Improved internal logic and error reporting of missing OCIO configs. > #3092 > > #3095 > > * Improved finding of fonts (by IBA::render_text and oiiotool --text). > It now > > honors environment variable `$OPENIMAGEIO_FONTS` and global OIIO > attribute > > "font_searchpath" to list directories to be searched when fonts are > needed. > > #3096 (2.4.0/2.3.8) > > * Fix crash that could happen with invalidly numbered UDIM files. #3116 > > (2.4.0/2.3.9) > > * Fix possible bad data alignment and SIMD assumptions inside > TextureSystems > > internals. #3145 (2.4.0/2.3.9) > > * Update internal stb_printf implementation (avoids some sanitizer > alerts). > > #3160 (2.4.0/2.3.10) > > * Replace the few remaining instances of `sscanf` in the codebase with > Strutil > > utilities that are guaranteed to be locale-independent. #3178 (2.4.0) > > * Security: New global OIIO attributes "limits:channels" (default: 1024) > and > > "limits:imagesize_MB" (default: 32768, or 32 GB) are intended to reject > > input files that exceed these limits, on the assumption that they are > either > > corrupt or maliciously constructed, and would, if read, lead to absurd > > allocations, crashes, or other mayhem. Apps may lower or raise these > limits > > if they know that a legitimate input image exceeds these limits. > Currently, > > only the TIFF reader checks these limits, but others will be modified to > > honor the limits over time. #3230 (2.3.11/2.4.0) > > * Fix integer overflow warnings. #3329 (2.4.1.0) > > * Improved behavior when opening a file whose format doesn't correctly > match > > its extension: try common formats first, rather than alphabetically; and > > improve error messages. #3400 (2.4.2) > > * The maximum number of threads you can set with option "oiio:threads" > > has been increased from 256 to 512. #3484 (2.4.2.1) > > * Make access to the internal imageio_mutex not be recursive. #3489 > (2.4.2.2) > > * Various protections against string metadata found in file that has zero > > length. #3493 (2.4.2.2) > > * Fix possible null pointer dereference in inventory_udim. #3498 > (2.4.2.2) > > * oiiotool, maketx, iinfo, igrep, and iv now all take a `--version` > command > > line argument, which just prints the OIIO version and exits. #3534 > > > > Developer goodies / internals: > > * benchmark.h: > > - Alter the declaration of DoNotOptimize() so that it doesn't have > > compilation problems on some platforms. #3444 (2.4.2/2.3.17) > > * filesystem.h: > > - A new version of `searchpath_split` returns the vector of strings > rather > > than needing to be passed a reference. #3154 (2.4.0/2.3.10) > > - New `write_binary_file()` utility function. #3199 (2.4.0/2.3.10) > > - `searchpath_split()` fixes to better handle empty paths. #3306 > (2.4.0.1) > > * fmath.h: > > - Added `round_down_to_multiple()`. Also, more correctly handle > > `round_to_multiple()` results when the value is < 0. #3104 > > - Add `round_down_to_multiple()` and improve `round_to_multiple()` to > > correctly handle cases where the value is less than 0. #3104 > > (2.4.0/2.3.8) > > - Make bit_cast specialization take refs, like the template. This > fixes > > warnings for some compilers. #3213 (2.4.0/2.3.10.1) > > * imageio.h: > > - ImageInput and ImageOutput have many new helper methods (protected, > > meant for II and IO subclass implementations to use, not users of > these > > classes) for helping to implement IOProxy support in format readers > and > > writers. #3203 #3222 (2.4.0) > > * Imath.h: > > - In addition to including the right Imath headers for the version > that > > OIIO is built with, this defines custom formatters for the Imath > types > > for use with fmt::format/print or Strutil::format/print. #3367 > (2.4.1.0) > > * oiioversion.h > > - `OIIO_MAKE_VERSION_STRING` and `OIIO_VERSION_STRING` now print all 4 > > version parts. #3368 (2.4.1.0) > > * parallel.h > > - Refactoring of the entry points (back compatible for API), and add > > support for using TBB for the thread pool (which seems slightly > faster > > than our internal thread pool). By default it still uses the > internal > > pool, but if OIIO::attribute("use_tbb") is set to nonzero, it will > use > > the TBB thread pool if built against TBB. #3473 (2.4.2.2) > > * paramlist.h > > - Various internal fixes that reduce the amount of ustring > construction > > that happens when constructing ParamValue and ParamList, and making > > certain ImageSpec::attribute() calls. #3342 (2.4.1.0) > > * simd.h: > > - Better guards to make it safe to include from Cuda. #3291 #3292 > > (2.4.0.1/2.3.12) > > - Fix compiler warnings related to discrepancies between template > > declaration and redeclaration in simd.h. #3350 (2.4.1.0/2.3.14) > > - The vector types all now have a `size()` method giving its length. > > #3367 (2.4.1.0) > > - Defines custom formatters for the vector and matrix types, for use > > with fmt::format/print or Strutil::format/print. #3367 (2.4.1.0) > > * string_view.h > > - Auto-conversion between our string_view, std::string_view (when > > available), and fmt::string_view. #3337 (2.4.1.0) > > - OIIO::string_view is now fully templated, to match std::string_view. > > #3344 (2.4.1.0) > > * strutil.h: > > - New utility functions: parse_values(), scan_values(), > scan_datetime() > > #3173 #3177 (2.4.0/2.3.10), edit_distance() #3229 (2.4.0/2.3.11) > > - The `utf8_to_utf16()` and `ut16_to_utf8()` utilities are now > exposed on > > all platforms, not just windows (and their internals have been > > modernized). #3307 (2.4.0.1) > > - `Strutil::isspace()` is a safe alternative to C isspace(), that > works > > even for signed characters. #3310 (2.4.1.0) > > - `Strutil::print()` now is buffered (and much more efficient, and > > directly wraps fmt::print). A new `Strutil::sync::print()` is a > version > > that does a flush after every call. #3348 (2.4.1.0) > > - `get_rest_arguments()` fixes conflict between RESTful and Windows > long > > path notations. #3372 (2.4.1.0/2.3.14) > > - Dramatically speed up (50-100x) Strutil iequals, iless, starts_with, > > istarts_with, ends_with, iends_with. #3388 (2.4.1.1) > > - New `safe_strcat` is a buffer-length-aware safe replcement for > strcat. > > #3471 (2.4.0/2.3.18) > > - `Strutil::debug()` is the new OIIO::debug(), moving it from > > libOpenImageIO to libOpenImageIO_Util. #3486 (2.4.2.1) > > - New `Strutil::safe_strlen()` is a portable safe strlen replacement. > > #3501 (2.4.2.2) > > * sysutil.h: > > - The `Term` class now recognizes a wider set of terminal emulators as > > supporting color output. #3185 (2.4.0) > > * timer.h: > > - `Timer::add_seconds()` and `Timer::add_ticks()` allows add/subtract > > directly to a timer's elapsed value. #3070 (2.4.0/2.3.8) > > - For Linux, switch from using gettimeofday to clock_gettime, for > > potentially higher resolution. #3443 (2.4.2) > > * typedesc.h: > > - Add Cuda host/device decorations to TypeDesc methods to make them > GPU > > friendly. #3188 (2.4.0/2.3.10) > > - TypeDesc constructor from a string now accepts "box2f" and "box3f" > > as synonyms for "box2" and "box3", respectively. #3183 > (2.4.0/2.3.10) > > * type_traits.h: > > - This new header contains a variety of type traits used by other OIIO > > headers. They aren't really part of the public API, but they are > sometimes > > used by public headers. #3367 (2.4.1.0) > > * unittest.h: > > - Changes `OIIO_CHECK_SIMD_EQUAL_THRESH` macro to compare `<= eps` > > instead of `<`. #3333 (2.4.0.3) > > * unordered_map_concurrent.h: Fix bug in `erase()` method. #3485 > (2.4.2.2) > > * ustring.h: > > - New static method `from_hash()` creates a ustring from the known > hash > > value. #3397 (2.4.2) > > - New `ustringhash` class is just like a ustring, except that the > "local" > > representation is the hash, rather than the unique string pointer. > #3436 > > (2.4.2) > > * vecparam.h: > > - New `V3fParam`, `M33fParam`, and `M44Param` (defined in vecparam.h) > are > > used just for parameter passing in public APIs, instead of > Imath::V3f, > > M33f, or M44f, in order to more fully hide Imath types from our > public > > interfaces. These are only parameter-passing classes, and are not > useful > > as vector or matrix classes in their own right. But they seamlessly > cast > > to and from other vector- and matrix-like classes. #3330 (2.4.1.0) > > * More internals conversion to use the new fmt style for string > formatting, > > console output, error messages, and warnings: oiiotool internals #3240 > > (2.4.0); TS/IC stats output #3374 (2.4.1.0); misc #3777 (2.4.1.0); > testshade > > #3415 (2.4.2) > > * Internals are working toward removing all uses of string_view::c_str(), > > since that isn't part of C++17 std::string_view. #3315 (2.4.0.1) > > * New testtex options: `--minthreads` sets the minimum numer of threads > that > > will be used for thread wedges, `--lowtrials` is an optional maximum > number > > of trials just for the 1 or 2 thread cse. #3418 (2.4.2) > > * Internals: internal classes with vertual methods now mark all their > > overridden destructors correctly as `override`. #3481 (2.4.2.1) #3488 > #3511 > > (2.4.2.2) > > > > Build/test system improvements and platform ports: > > * CMake build system and scripts: > > - Remove the old FindOpenImageIO.cmake module; downstream clients > should > > instead use our exported configs. #3098 (2.4.0/2.3.8) > > - Fix over-use of targets when we should have been using variables. > #3108 > > (2.4.0/2.3.9) > > - CMake variable `-DENABLE_INSTALL_testtex=1` causes `testtex` to be > > installed as an application. #3111 (2.4.0) > > - Make `OpenImageIO_SUPPORTED_RELEASE` into a CMake cache variable so > it > > can be overridden at build time. #3142 (2.4.0) > > - New build option `-DTIME_COMMANDS=ON` will print time to compile > each > > module (for investigating build performance; only useful when > building > > with `CMAKE_BUILD_PARALLEL_LEVEL=1`). #3194 (2.4.0/2.3.10) > > - `PROJECT_VERSION_RELEASE_TYPE` is now a cache variable that can be > > overridden at build time. #3197 (2.4.0/2.3.10) > > - Set and use the variable `PROJECT_IS_TOP_LEVEL` to know if OIIO is a > > top level project or a subproject. #3197 (2.4.0/2.3.10) > > - Restore code that finds Jasper when using statically-linked libraw. > > #3210 (2.4.0/2.3.10.1) > > - Gracefully handle failing to find git for test data download. #3212 > > (2.4.0/2.3.10.1) > > - Make sure to properly use the tbb target if it exists. #3214 > > (2.4.0/2.3.10.1) > > - Use a project-specific "OpenImageIO_CI" for whether we're running > in CI, > > rather than the confusingly generic "CI" #3211 (2.4.0/2.3.11) > > - If CMake variable `BUILD_TESTING` is OFF, don't do any automatic > > downloading of missing test data. #3227 (2.3.11/2.4.0) > > - Fixes to FindOpenColorIO.cmake module, now it prefers an OCIO > exported > > cmake config (for OCIO 2.1+) unless OPENCOLORIO_NO_CONFIG=ON is set. > > #3278 (2.4.0.1/2.3.12) > > - Fix problems with FindOpenEXR build script for Windows. #3281 > > (2.4.0.1/2.3.12) > > - New CMake cache variable `DOWNSTREAM_CXX_STANDARD` specifies which > C++ > > standard is the minimum for downstream projects (currently 14), > which > > may be less than the `CMAKE_CXX_STANDARD` that specifies which C++ > > standard we are using to build OIIO itself. #3288 (2.4.0.1) > > - The exported cmake configs now use relative paths so they are > > relocatable. #3302 (2.4.0.1) > > - CMake variable `OPENIMAGEIO_CONFIG_DO_NOT_FIND_IMATH`, if set to ON, > > will make our generated config file not do a find_dependency(Imath). > > (Use with caution.) #3335 (2.4.0.3) > > - Can now do unity/jumbo builds. This isn't helpful when building with > > many cores/threads, but in thread-limited situtations (such as CI), > it > > can speed up builds a lot to use `-DCMAKE_UNITY_BUILD=ON`. #3381 > #3389 > > #3392 #3393 #3398 #3402 (2.4.2.0) > > - Do not auto-download test images by default. To auto download test > > images, build with `-DOIIO_DOWNLOAD_MISSING_TESTDATA=ON`. #3409 > (2.4.0) > > - Allow using the Makefile wrapper on arm64 systems. #3456 (2.4.2) > > - The export OpenImageIOConfig.cmake fixes `OpenImageIO_INCLUDE_DIR` > to > > work correctly on Debian systems where there are multiple filesystem > > components to the path. #3487 (2.4.2.1) > > - On MacOS, do not force MACOS_RPATH on. #3523 (2.4.2.2) > > * Dependency version support: > > - When using C++17, use std::gcd instead of boost. #3076 (2.4.0) > > - When using C++17, use `inline constexpr` instead of certain statics. > > #3119 (2.4.0) > > - Fixes to work with the libraw 202110 snapshot. #3143 (2.4.0/2.3.9.1 > ) > > - Fix occasional build breaks related to OpenCV headers. #3135 > > (2.4.0/2.3.9) > > - The internals of `Filesystem::searchpath_split` have been > reimplemented > > in such a way as to no longer need boost.tokenzer. #3154 > (2.4.0/2.3.10) > > - Deal with the fact that OpenColorIO has changed its default branch > > name to "main". #3169 (2.4.0/2.3.10/2.2.20) > > - pybind11 v2.9.0 incorporated into our testing and CI. #3248 > > - Fix clang10 compile warnings. #3272 (2.4.0.1/2.3.12) > > - Support for ffmpeg 5.0. #3282 (2.4.0.2/2.3.13) > > - Support for fmtlib 9.0.0. #3327 (2.4.0.2/2.3.13) #3466 > (2.4.2/2.3.18) > > - `build_opencolorio.bash` helper script bumped its default build of > > OpenColorIO to 2.1.2. #3475 (2.4.2.1) > > - When building with C++17 or higher, Boost.filesystem is no longer > > needed or used. #3472 #3477 (2.4.2.1) > > - Upgrade the internal fallback implemention of PugiXML to the latest > > version. #3494 (2.4.2.2) > > - Fixes for ffmpeg 5.1 detection. #3516 (2.3.19.0/2.4.2.2) > > - Support for gcc 12.1. #3480 (2.4.2.1) > > * Testing and Continuous integration (CI) systems: > > - Properly test against all the versions of VFX Platform 2022. #3074 > > (2.4.0) > > - The helper script `build_libtiff.bash` now allows you to override > the > > build type (by setting `LIBTIFF_BUILD_TYPE`) and also bumps the > default > > libtiff that it downloads and builds from 4.1.0 to 4.3.0. #3161 > (2.4.0) > > - New tests on MacOS 11 #3193 (2.4.0/2.3.10) and MacOS 12, remove > test on > > MacOS 10.15 (GitHub Actions is imminently removing MacOS 10.15). > #3528 > > (2.3.19.0/2.4.2.2) > > - Add a DDS test (we never had one before). #3200 (2.4.0/2.3.10) > > - `imageinout_test` now has options to make it easy to unit test just > one > > named format, as well as to preserve the temp files for inspection. > > #3201 (2.4.0/2.3.10) > > - Add an HDR test (we never had one before). #3218 (2.4.0) > > - Fix bugs in the build_opencolorio.bash script, did not correctly > handle > > installation into custom directories. #3278 (2.4.0.1/2.3.12) > > - Failed build artifact storage is revised to save more cmake-related > > artifacts to help debugging. #3311 (2.4.0.1) > > - Now doing CI builds for Intel icc and icx compilers. #3355 #3363 > > (2.4.1.0/2.3.13) #3407 (2.4.0) > > - Overhaul of ci.yml file to be more clear and compact by using GHA > > "strategy" feature. #3356 #3365 (2.4.1.0/2.3.13) > > - Removed CI for windows-2016 GHA instance which will soon be removed. > > #3370 (2.4.1.0) > > - Test against clang 14. #3404 > > - Various guards against supply chain attacks durig CI. #3454 (2.4.2) > > - Test against pybind11 v2.10. #3478 (2.4.2.1) > > - Run SonarCloud nightly for static analysis and coverage analysis. > #3505 > > (2.4.2.2) > > * Platform support: > > - Fix when building with Clang on big-endian architectures. #3133 > > (2.4.0/2.3.9) > > - Improvements to NetBSD and OpenBSD support. #3137. (2.4.0/2.3.9) > > - Fixes for MSVS compile. #3168 (2.4.0/2.3.10) > > - Fix problems on Windows with MSVC for Debug builds, where crashes > were > > occurring inside `isspace()` calls. #3310 > > - Improved simd.h support for armv7 and aarch32. #3361 ( > 2.4.1.0/2.3.14) > > - Suppress MacOS wasnings about OpenGL deprecation. #3380 ( > 2.4.1.0/2.3.14) > > - Fix MSVS/Windows errors. #3382 (2.4.1.1) > > > > Notable documentation changes: > > * Add an oiiotool example of putting a border around an image. #3138 > > (2.4.0/2.3.9) > > * Fix explanation of ImageCache "failure_retries" attribute. #3147 > > (2.4.0/2.3.9) > > * Improved maketx argument explanations. > > * Clean up intra-document section references. #3238 (2.3.11/2.4.0) > > * New explanations about input and output configuration hints. #3238 > > (2.3.11/2.4.0) > > * More code examples in both C++ and Python (especially for the > ImageInput, > > ImageOutput, and ImageBufAlgo chapters). #3238 #3244 #3250 > (2.3.11/2.4.0) > > #3263 (2.3.12/2.4.0) > > * Pretty much anyplace where a parameter that represents a filename, and > it is > > supporting UTF-8 encoding of Unicode filenames, the docs for that > function > > explicitly say that the string is assumed to be UTF-8. #3312 (2.4.0.1) > > * Fix many typos in docs. #3492 (2.4.2.2) > > > > > > > > -- > > Larry Gritz > > l...@larrygritz.com > > > > > > > > > > > > _______________________________________________ > > Oiio-dev mailing list > > Oiio-dev@lists.openimageio.org > > http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org > > > > _______________________________________________ > Oiio-dev mailing list > Oiio-dev@lists.openimageio.org > http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org >
_______________________________________________ Oiio-dev mailing list Oiio-dev@lists.openimageio.org http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org