{"push_id":620533778,"size":4,"distinct_size":1,"ref":"refs/heads/lg-destroy","head":"97a09d0880df65c425ab4d8a748e0c02a626ae88","before":"0716f8b54115846a11fd7bad3db2871bd026b6f3","commits":[{"sha":"0f9e170e7ef4126d1787df80fb72cc322b7c4249","author":{"email":"f0a1ce6f80112d72f7276457fd261d671b827567@larrygritz.com","name":"Larry Gritz"},"message":"New ImageBuf::copy() variety that can override pixel data format.\nThis makes it very easy to copy one IB to another with a data format change.","distinct":false,"url":"https://api.github.com/repos/lgritz/oiio/commits/0f9e170e7ef4126d1787df80fb72cc322b7c4249"},{"sha":"a04a910283f68f0f6034ff102b8231c956885039","author":{"email":"f0a1ce6f80112d72f7276457fd261d671b827567@larrygritz.com","name":"Larry Gritz"},"message":"DISPATCH_TYPES utility macro overhaul.\n\nBackground info:\n\nThe DISPATCH_TYPES macros are used internally to ImageBufAlgo to sort\nout the specializations for the 9 different potential pixel data types\n(uint8, int8, uint16, int16, uint32, int32, half, float, double).  Some\nIBA functions really need to handle every combination without\ncompromise, but for many others it's too much code bloat to handle the\nfull cross-product of types (9x9x9 specializations for a function with\ntwo input images and a result). For those cases, we have\nDISPATCH_COMMON_TYPES_* that specialize for only the four common cases\n(uint8, uint16, half, float) and *previously* issued an error if it was\none of the rare remaining types (e.g. it's exceedingly rare to come\nacross a signed 8 bit integer image in the wild).\n\nOK, so this patch overhauls the DISPATCH macros, and in particular makes\nthe DISPATCH_COMMON ones fully robust to all data types without any\naddition bloat. It dispatches the common cases as usual, but for the\nuncommon ones, instead of aborting with an error, it just makes a\ntemporary FLOAT image copy of the image of oddball type, and falls back\nto the FLOAT case.  Thus, we now will guarantee that all IBA functions\nare expected to work for all pixel data types (though at the cost of an\nextra image copy, for those rarely used types).\n\nThis simplifies the comments and documentation, which no longer have to\nconfusingly point out which functions work with all data types and which\nwork with only a subset.\n\nAdditionally, we add a new IBAPrep flag: IBAprep_CLAMP_MUTUAL_NCHANNELS.\nIf set, automatically clamps roi.chend to the maximum of that of the\ninputs.  This improves safety and reduces separate checking logic for\nthe many IBA functions whose results would be meaningless or worse for\nimages of differing numbers of channels in the inputs. Once again, we\ncan simplify a lot of the documentation comments which previously had to\npoint out which functions were illegal to call with image arguments that\ndid not match in their number of channels. Now, it's almost always\nlegal, though for many cases if the channels don't match, the operation\nwill only be performed on those channels that they have in common.","distinct":false,"url":"https://api.github.com/repos/lgritz/oiio/commits/a04a910283f68f0f6034ff102b8231c956885039"},{"sha":"cec86cd03230293bc9091e8c9a681115792bb6f3","author":{"email":"f0a1ce6f80112d72f7276457fd261d671b827567@larrygritz.com","name":"Larry Gritz"},"message":"Now that DISPATCH_COMMON_TYPES2 can handle any types (albeit rare ones\nwith an automatic conversion), changes lots of references to\nDISPATCH_TYPES2 to DISPATCH_COMMON_TYPES2. This reduces compile time and\nlibrary size, by not specializing the templates for as many different\ncombinations of data types -- now it only specializes the common\ncombinations, and silently converts when necessary.","distinct":false,"url":"https://api.github.com/repos/lgritz/oiio/commits/cec86cd03230293bc9091e8c9a681115792bb6f3"},{"sha":"97a09d0880df65c425ab4d8a748e0c02a626ae88","author":{"email":"f0a1ce6f80112d72f7276457fd261d671b827567@larrygritz.com","name":"Larry Gritz"},"message":"Add destroy() methods to ImageInput and ImageOutput.\n\nThis is helpful on Windows if OIIO is used within plugins (DLLs) that may\nbe loaded and unloaded. It can be problematic to have memory allocated (as\nis done by ImageOutput::create()) on one side of a DLL boundary, and then\nfreed on the other side of the DLL boundary (as would happen with an ordinary\n'delete'). Instead, prefer to get rid of ImageInput*'s and ImageOutput*'s by\ncalling destroy().","distinct":true,"url":"https://api.github.com/repos/lgritz/oiio/commits/97a09d0880df65c425ab4d8a748e0c02a626ae88"}]}