More precisely:

generateScanline(1)
write scanline1 of channel1
write scanline1 of channel2
write scanline1 of channel3
write scanline1 of channel4
free() mem

generateScanline(2)
write scanline2 of channel1
write scanline2 of channel2
write scanline2 of channel3
write scanline2 of channel4
free() mem

.. and so forth.

The writePixels( int height ) function will write a given number of
scanlines, but not a specific scanline?

- K.

On Thu, Dec 10, 2009 at 10:26 AM, Koraxen <kora...@gmail.com> wrote:

> Thanks for the reply Florian!
>
> Do you know of any example that shows scanlines being written 1 at a time?
>
> As in:
> write scanline1 of channel1
> write scanline1 of channel2
> write scanline1 of channel3
> write scanline1 of channel4
> free() mem
>
> write scanline2 of channel1
> write scanline2 of channel2
> write scanline2 of channel3
> write scanline2 of channel4
> free() mem
>
> ...and so forth.
>
> I can find one for tiled files in the ReadingAndWritingImageFiles pdf, but
> not for scanline.
>
> Thanks again,
> - K.
>
>
>
> On Wed, Dec 9, 2009 at 11:20 AM, Florian Kainz <ka...@ilm.com> wrote:
>
>> 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@nongnu.org
>>> http://lists.nongnu.org/mailman/listinfo/openexr-devel
>>>
>>
>>
>
_______________________________________________
Openexr-devel mailing list
Openexr-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/openexr-devel

Reply via email to