speed up stripwise read as well
This commit is contained in:
parent
36290b0aeb
commit
ac69b83c7b
@ -115,6 +115,8 @@
|
|||||||
* - gtkdoc
|
* - gtkdoc
|
||||||
* 12/12/10
|
* 12/12/10
|
||||||
* - oops, we can just memcpy() now heh
|
* - oops, we can just memcpy() now heh
|
||||||
|
* - avoid unpacking via buffers if we can: either read a tile directly
|
||||||
|
* into the output region, or writeline directly from the tiff buffer
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1088,6 +1090,11 @@ tiff_fill_region_aligned( REGION *out, void *seq, void *a, void *b )
|
|||||||
g_assert( r->height == rtiff->theight );
|
g_assert( r->height == rtiff->theight );
|
||||||
g_assert( IM_REGION_LSKIP( out ) == IM_REGION_SIZEOF_LINE( out ) );
|
g_assert( IM_REGION_LSKIP( out ) == IM_REGION_SIZEOF_LINE( out ) );
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
printf( "tiff_fill_region_aligned: left = %d, top = %d\n",
|
||||||
|
r->left, r->top );
|
||||||
|
#endif /*DEBUG*/
|
||||||
|
|
||||||
/* Read that tile directly into the vips tile.
|
/* Read that tile directly into the vips tile.
|
||||||
*/
|
*/
|
||||||
g_mutex_lock( rtiff->tlock );
|
g_mutex_lock( rtiff->tlock );
|
||||||
@ -1301,11 +1308,19 @@ read_stripwise( ReadTiff *rtiff, IMAGE *out )
|
|||||||
for( p = tbuf, i = 0;
|
for( p = tbuf, i = 0;
|
||||||
i < rows_per_strip && y + i < out->Ysize;
|
i < rows_per_strip && y + i < out->Ysize;
|
||||||
i += 1, p += scanline_size ) {
|
i += 1, p += scanline_size ) {
|
||||||
/* Process and save as VIPS.
|
/* If we need to unpack the data, go via a buffer.
|
||||||
|
* Otherwise we can write directly from the strip.
|
||||||
*/
|
*/
|
||||||
rtiff->sfn( vbuf, p, out->Xsize, rtiff->client );
|
if( rtiff->memcpy ) {
|
||||||
if( im_writeline( y + i, out, vbuf ) )
|
if( im_writeline( y + i, out, p ) )
|
||||||
return( -1 );
|
return( -1 );
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
rtiff->sfn( vbuf, p,
|
||||||
|
out->Xsize, rtiff->client );
|
||||||
|
if( im_writeline( y + i, out, vbuf ) )
|
||||||
|
return( -1 );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user