Subject: Re: [boost] [gil io_new review] Reading images from in-memory sources
From: Christian Henning (chhenning_at_[hidden])
Date: 2010-12-06 11:06:16
> The string ctor copies all the data, and then the istringstream ctor may or
> may not copy it all again (does anyone know?).
Did you see Kenny's email regarding boost::iostreams?
>> About libjpeg, thanks for pointing out one potential inefficiency. As
>> far as I can tell rec_outbuf_height is set to 1 be default. A user can
>> change that number to 2 or 4 but the lib would need to be recompiled.
>> The user also need to set the UPSAMPLE_MERGING_SUPPORTED compiler
> Well, here's what it says in jpeglib.h:
> /* Description of actual output image that will be returned to application.
> * These fields are computed by jpeg_start_decompress().
> * You can also use jpeg_calc_output_dimensions() to determine these values
> * in advance of calling jpeg_start_decompress().
> JDIMENSION output_width; /* scaled image width */
> JDIMENSION output_height; /* scaled image height */
> int out_color_components; /* # of color components in out_color_space
> int output_components; /* # of color components returned */
> /* output_components is 1 (a colormap index) when quantizing colors;
> * otherwise it equals out_color_components.
> int rec_outbuf_height; /* min recommended height of scanline buffer
> /* If the buffer passed to jpeg_read_scanlines() is less than this many
> * high, space and time will be wasted due to unnecessary data copying.
> * Usually rec_outbuf_height will be 1 or 2, at most 4.
> To me, that looks like the library sets the value not the user.
There is a function called use_merged_upsample which returns only true
when UPSAMPLE_MERGING_SUPPORTED is set during compilation. Otherwise
cinfo->rec_outbuf_height = 1;
That's the only assignment I can find in the whole libjpeg source
code. Maybe I'm missing something?
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk