Re: Deep data API: another batch of questions.
Lerenard Michel <[email protected]>
| Newsgroups | gmane.comp.video.openexr.devel |
|---|---|
| Message-ID | <CAAE4baZUuaNPag8pxxyF0bCY0DtkbOie09h1TuvA-haQ9ek4_Q@mail.gmail.com> |
Thanks for your answer. I didn't thought I could pass an "illegal" pointer to the function, i'll try this method instead. 2014-04-21 0:19 GMT+02:00 Peter Hillman <[email protected]>: > You will need to call setFrameBuffer before every call to writePixels, as > you need to update the frame pointers. > The pointer you pass to Slice/DeepSlice is the memory location of pixel > (0,0) in the image. This point will move in memory as you update your > memory block with different scanlines. > > Your first call is probably doing the right thing. For each subsequent > call you need to set up a new FrameBuffer with yStride*currentScanLine() > subtracted from the base pointer, where currentScanLine() is the y offset > of the first scanline you are writing. > > The library will only access the memory locations it needs to for > writePixels() - there's no problem in passing an "illegal address" as a > base pointer to setFrameBuffer, as long as (base+yStride*currentScanLine() > + dataWindow.min.x*xStride) is always a valid location when writePixels() > is called. > > The above is true for xSampling=1 and ySampling=1 - you may need to adjust > the logic accordingly otherwise. > > > > On 19/04/14 21:18, Lerenard Michel wrote: > > Hi, > > still trying to write deep data image, i'm struggling a bit with > FrameBuffers. > As I need to write subsampled deep images, I cannot use Tiled images. I > went for the scanline approach. My idea was to write batches of n > scanlines, in increasing Y order. > > This way I was thinking I would be able to limit the memory footprint: > OpenEXR would not need to cache data, and I would be able to reuse the > same buffers for every batch of lines: one buffer for Z and one for each > visible channel. > > So I created a bunch of buffers, whose size was my image width * 32. > (arbitrary value). I planned to feed these buffers to the DeepSlices I > added to the FrameBuffer. > Thing is, it appears the FrameBuffer/Slices cannot work that way: they > need to have memory allocated for the whole image. I couldn't find any > function limiting / defining the region I want to work on. > > Here are my questions: > - Is the statement above correct ? > - Should I work differently ? I doesn't look like using several > framebuffers would help, I out of ideas at the moment. > > I can explain in more details my process if it can help. > > > Thanks > > Michel > > > _______________________________________________ > Openexr-devel mailing [email protected]://lists.nongnu.org/mailman/listinfo/openexr-devel > > > _______________________________________________ Openexr-devel mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/openexr-devel