It appears that support for buffering tiles to handle out-of-order calls to writeTiles was present in the first version of OpenEXR that supported tiles (OpenEXR-1.1.0)
I realise my last reply about scanlines was incorrect due to some poor editing skills on my part:
Scanline images have no buffering between calls to writePixels; there's no way of delivering scanlines in any order since you don't pass writePixels a y offset, merely a number of scanlines to write. Calling writePixels(1) will always write currentScanline()
The buffering that happens is with tiled images in INCREASING_Y or DECREASING_Y, and then only when you specify tiles out of order.
Also worth pointing out that OpenEXR buffers the compressed data, not the raw pixel data. If you are creating tiles out of order and want INCREASING_Y or DECREASING_Y tile order, it will be more memory efficient to pass the tiles immediately to the library and have it manage buffering, rather than buffering them yourself until you have them ready in the correct order. It may also be appropriate to write a temporary file in RANDOM_Y order, and then read it back in and write it out in INCREASING_Y order
If the image is small enough to fit in memory and you have multithreading enabled it is best to write the entire image in one call to writeTiles or writePixels.
On 2014-04-12 06:35, Piotr Stanczyk wrote:
I am not sure about that ... let me check
Piotr