stuff
This commit is contained in:
parent
f868bdb129
commit
877c67fc2c
@ -531,6 +531,7 @@ man_MANS = \
|
||||
im_vips2ppm.3 \
|
||||
im_vips2tiff.3 \
|
||||
im_warn.3 \
|
||||
im_wbuffer.3 \
|
||||
im_wrapmany.3 \
|
||||
im_wrapone.3 \
|
||||
im_write_dmask.3 \
|
||||
|
60
man/im_wbuffer.3
Normal file
60
man/im_wbuffer.3
Normal file
@ -0,0 +1,60 @@
|
||||
.TH IM_WBUFFER 3 "2 November 2007"
|
||||
.SH NAME
|
||||
im_wbuffer \- write an image with a background thread
|
||||
.SH SYNOPSIS
|
||||
.B #include <vips/vips.h>
|
||||
|
||||
typedef int (*im_wbuffer_fn)( REGION *region, Rect *area, void *a, void *b );
|
||||
|
||||
int im_wbuffer( im_threadgroup_t *tg,
|
||||
.br
|
||||
im_wbuffer_fn write_fn, void *a, void *b );
|
||||
|
||||
.SH DESCRIPTION
|
||||
.B im_wbuffer(3)
|
||||
uses the
|
||||
.B im_threadgroup_t
|
||||
to loop down the image, calculating sets of scanlines. The number of scanlines
|
||||
calculated in one group varies with the image's demand style, but might
|
||||
typically be 64 lines.
|
||||
|
||||
As each set of scanlines is completed, a background thread calls the supplied
|
||||
.B im_wbuffer_fn
|
||||
to write those lines to the output. This callback might use the JPEG library,
|
||||
for example, to compress the pixels before writing to disc. By writing in the
|
||||
background, the threads computing the image pixels are not interrupted and
|
||||
image compression may be overlapped with image calculation. Hopefully this
|
||||
will produce a speed improvement.
|
||||
|
||||
.SH EXAMPLE
|
||||
|
||||
static int
|
||||
write_vips( REGION *region, Rect *area, void *a, void *b )
|
||||
{
|
||||
size_t nwritten, count;
|
||||
void *buf;
|
||||
|
||||
count = region->bpl * area->height;
|
||||
buf = IM_REGION_ADDR( region, 0, area->top );
|
||||
do {
|
||||
nwritten = write( region->im->fd, buf, count );
|
||||
if( nwritten == (size_t) -1 )
|
||||
return( errno );
|
||||
|
||||
buf = (void *) ((char *) buf + nwritten);
|
||||
count -= nwritten;
|
||||
} while( count > 0 );
|
||||
|
||||
return( 0 );
|
||||
}
|
||||
|
||||
if( !(tg = im_threadgroup_create( im )) ) {
|
||||
|
||||
.SH RETURN VALUE
|
||||
The function returns 0 on success and non-zero on error.
|
||||
.SH SEE ALSO
|
||||
im_threadgroup_create(3)
|
||||
.SH COPYRIGHT
|
||||
Imperial College, 2007
|
||||
.SH AUTHOR
|
||||
J. Cupitt \- 2/11/07
|
Loading…
Reference in New Issue
Block a user