TIFFStrileQuery

Synopsis

#include <tiffio.h>
uint64_t TIFFGetStrileByteCount(TIFF *tif, uint32_t strile);
uint64_t TIFFGetStrileOffset(TIFF *tif, uint32_t strile);
uint64_t TIFFGetStrileByteCountWithErr(TIFF *tif, uint32_t strile, int *pbErr);
uint64_t TIFFGetStrileOffsetWithErr(TIFF *tif, uint32_t strile, int *pbErr);

Description

Make defer strile offset/bytecount loading available at runtime and add per-strile offset/bytecount loading capabilities. Part of this commit makes the behaviour that was previously met when libtiff was compiled with -DDEFER_STRILE_LOAD available for default builds.

When specifying the new D (Deferred) TIFFOpen() flag, the loading of strile offset/bytecount is defered. In that mode, the StripOffsets / StripByteCounts or TileOffsets / TileByteCounts arrays are only loaded when first accessed. This can speed-up the opening of files stored on the network when just metadata retrieval is needed.

Another addition is the capability of loading only the values of the offset/bytecount of the strile of interest instead of the whole array. This is enabled with the new O (Ondemand) flag of TIFFOpen() (which implies D).

The public TIFFGetStrileOffset(), TIFFGetStrileOffsetWithErr(), TIFFGetStrileByteCount() and TIFFGetStrileByteCountWithErr() functions have been added to API. They are of particular interest when using sparse files (with offset == bytecount == 0) and you want to detect if a strile is present or not without decompressing the data, or updating an existing sparse file.

TIFFGetStrileByteCount() returns the value of the TileByteCounts / StripByteCounts array for the specified tile/strile.

TIFFGetStrileByteCountWithErr() additionally provides pbErr as an int pointer to an error return variable, which is set to "0" for successful return or to "1" for an error return.

TIFFGetStrileOffset() returns the value of the TileOffsets / StripOffsets array for the specified tile/strile.

TIFFGetStrileOffsetWithErr() additionally provides pbErr as an int pointer to an error return variable, which is set to "0" for successful return or to "1" for an error return.

Diagnostics

All error messages are directed to the TIFFError() routine. Likewise, warning messages are directed to the TIFFWarning() routine.

See also

libtiff (3tiff), TIFFOpen (3tiff), TIFFDeferStrileArrayWriting (3tiff)