1998.05.26 16:07 "Re: Processing large files", by Joe Longo
I also needed to buffer the RGBA a few rows at a time, Allocating a buffer to hold the entire image was not an option. My solution was to add my own function to collect the decompressed RGB rows as they are generated, 1 line at a time.
This means adding a call to each of the colorspace conversion routines in tif_getimage.c (the 'put' functions) like in the example below.
(a tiled routine will differ from the contiguous routine. I only needed contiguous, so that is all I wrote.)
/*
* 8-bit packed samples, no Map => RGB
*/
DECLAREContigPutFunc(putRGBcontig8bittile)
{
int samplesperpixel = img->samplesperpixel;
(void) x; (void) y;
fromskew *= samplesperpixel;
while (h-- > 0) {
UNROLL8(w, NOP,
*cp++ = PACK(pp[0], pp[1], pp[2]);
pp += samplesperpixel);
cp += toskew;
pp += fromskew;
/**One row of RGBA has been produced, so you can use it **/
YOUR_CALL_HERE(your, arguments, here);
}
}
--
Joe Longo joel@flashpnt.com
530 274 5977 ext. 13 (Grass Valley, Ca.)
Flashpoint Technology, Inc.