openexr-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Openexr-devel] OpenImageIO support for OpenEXR 2.0


From: Larry Gritz
Subject: [Openexr-devel] OpenImageIO support for OpenEXR 2.0
Date: Wed, 10 Oct 2012 21:33:14 -0700

Excuse the cross-post or spam, but probably some people here will think this is 
relevant.

OpenImageIO has an outstanding pull request 
(https://github.com/OpenImageIO/oiio/pull/437) proposing a patch that I believe 
adds full support for building against OpenEXR, multi-part files, and 
reading/writing deep data.  (At long last; I apologize for the delay, I know 
many people have been waiting for this.)

I'm hoping that interested parties have a chance to review the changes in the 
OIIO APIs and make sure they seem sensible and adequate for your needs, before 
they are locked down for a release.  Verifying that my amendments to the 
documentation make some kind of sense would also be helpful.  (I'm less 
concerned with the code itself; that can always be fixed later if problems are 
found.)

The multi-part exr support didn't need to change the APIs, except to add a new 
variety of the "open" method that takes the descriptions of the individual 
subimages up front, since the IlmImf implementation requires all the headers to 
be given when the multi-part file is first opened.  This is now the favored way 
to open multi-image files, though the old "appending" convention is still 
supported, for those formats that support it (there is a way to query that).

The bigger change is for the deep data reading and writing.  No file format we 
supported previously had this kind of pixel-varying deep data, so there was 
just no obvious way to accommodate it with the existing read/write 
scanline/tile/image, and instead I added new "deep" varieties used for this 
special case.  OpenEXR is the only format that implements it, but I hope that 
in the spirit of OIIO's design the API is generic enough to accommodate other 
formats that might come along, and certainly it hides the gory details of the 
underlying IlmImf classes and calls (whew! the cross-product of scanline/tile x 
single/multipart x regular/deep makes for a lot of class juggling).

Anyway, for those still following along, please take a look here:

        https://github.com/OpenImageIO/oiio/pull/437

It's really only imageio.h (the public API calls), and the docs in 
imageinput.tex and imageoutput.tex, that are important.  If you wish to also 
see how we actually do the reads and writes of deep data or multi-part, then 
exrinput.cpp and exroutput.cpp are the relevant places.  All the rest is 
housekeeping and support.

Thanks so much, and I hope people find this useful.  This is the last set of 
changes holding up the 1.1 release, so I'd like to lock the public API, with 
any subsequent changes in the 1.1 branch guaranteed not to break link 
compatibility.


--
Larry Gritz
address@hidden





reply via email to

[Prev in Thread] Current Thread [Next in Thread]