Florian Kainz | 9 Dec 20:20

Re: Writing single EXR file with very many channels?

Hi Kora,

the IlmImf library does not allow writing the file channel by channel;
all channels must be written at the same time.  The OpenEXR file layout
would channel-by-channel writing very inefficient.
However, you can write a few scanlines at a time or a few tiles at a
time; your frame buffer only has to be large enough to hold the portion
of the image you are writing.  (In the extreme, a single scan line or
a single tile is enough.)

Florian

Koraxen wrote:
> Hey guys,
> 
> I have a question regarding how to deal memory consumption and 
> multi-layered EXR files.
> 
> I need to write an EXR file that contains 10 different versions of a 
> same high res (5120 x 2880) image. This translates into an EXR file that 
> contains 10 layers x 4 channels = 40 channels.
> 
> What I am doing is:
> 1. Instantiate an exr framebuffer
> 2. Allocate memory for 40 high-res channels, and insert() them all into 
> framebuffer
> 3. Instantiate OutputFile object, and set the framebuffer to it
> 4. Write the OutputFile
> 
> The problem is that host system obviously runs out of memory during step #2.
> 
> What's needed here is the ability to:
> - Insert a channel to framebuffer
> - Write it to disk
> - Free memory
> - Repeat 40 times
> - End up with a *single* EXR file containing 40 channels
> 
> How can this be done?
> 
> Thanks a ton!
> - Kora
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Openexr-devel mailing list
> Openexr-devel <at> nongnu.org
> http://lists.nongnu.org/mailman/listinfo/openexr-devel

Gmane