|
Packit |
7838c8 |
<HTML>
|
|
Packit |
7838c8 |
<HEAD>
|
|
Packit |
7838c8 |
<TITLE>
|
|
Packit |
7838c8 |
Changes in TIFF v4.0.0
|
|
Packit |
7838c8 |
</TITLE>
|
|
Packit |
7838c8 |
</HEAD>
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
<BODY BGCOLOR=white>
|
|
Packit |
7838c8 |
<FONT FACE="Helvetica, Arial, Sans">
|
|
Packit |
7838c8 |
<FONT FACE="Helvetica, Arial, Sans">
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
<BASEFONT SIZE=4>
|
|
Packit |
7838c8 |
<FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION
|
|
Packit |
7838c8 |
<BASEFONT SIZE=3>
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
Current Version: v4.0.0
|
|
Packit |
7838c8 |
Previous Version: v3.9.5
|
|
Packit |
7838c8 |
Master FTP Site:
|
|
Packit |
7838c8 |
download.osgeo.org, directory pub/libtiff
|
|
Packit |
7838c8 |
Master HTTP Site:
|
|
Packit |
7838c8 |
ftp://download.osgeo.org/libtiff
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
This document describes the changes made to the software between the
|
|
Packit |
7838c8 |
previous and current versions (see above). If you don't
|
|
Packit |
7838c8 |
find something listed here, then it was not done in this timeframe, or
|
|
Packit |
7838c8 |
it was not considered important enough to be mentioned. Please consult
|
|
Packit |
7838c8 |
the ChangeLog file in the source package for full change details. The
|
|
Packit |
7838c8 |
following information is located here:
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
Major Changes
|
|
Packit |
7838c8 |
Changes in the software configuration
|
|
Packit |
7838c8 |
Changes in libtiff
|
|
Packit |
7838c8 |
Changes in the tools
|
|
Packit |
7838c8 |
Changes in the contrib area
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
<FONT SIZE=+3>M</FONT>AJOR CHANGES:
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
BigTIFF support changes:
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
The options parameter in the TIFFOpen and TIFFClientOpen funcs has
|
|
Packit |
7838c8 |
been extended. When creating new files, you can add option '4' to
|
|
Packit |
7838c8 |
specify you want to create a ClassicTIFF file, though that is the
|
|
Packit |
7838c8 |
default and the option is not strictly necessary. (As such, old
|
|
Packit |
7838c8 |
calling code will continue to function and create ClassicTIFF files.)
|
|
Packit |
7838c8 |
Or you can add option '8' to specify you want to create a BigTIFF file
|
|
Packit |
7838c8 |
instead. This new option is also reflected in some of the tools we
|
|
Packit |
7838c8 |
already upgraded. For instance, you can use the -8 option on tiffcp to
|
|
Packit |
7838c8 |
have tiffcp produce BigTIFF files instead of the default ClassicTIFF.
|
|
Packit |
7838c8 |
(Whilst on additional option is provided for version selection when
|
|
Packit |
7838c8 |
creating new files, no such option is necessary when reading TIFF
|
|
Packit |
7838c8 |
files. LibTiff reads ClassicTIFF and BigTIFF both, and the application
|
|
Packit |
7838c8 |
does not need to be aware which TIFF version an opened file is.)
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
Although the tag count in BigTIFF is 64bit, we restricted the
|
|
Packit |
7838c8 |
count in the implementation to a much more reasonable size. This is
|
|
Packit |
7838c8 |
necessary in current implementation, because all tag data gets read
|
|
Packit |
7838c8 |
automatically in the IFD reading stage, so if there's half a dozen
|
|
Packit |
7838c8 |
private tags with multiple gigabytes of data that causes considerable
|
|
Packit |
7838c8 |
overhead even if the application level is never interested in these
|
|
Packit |
7838c8 |
tags. Our choice to ignore tags with data longer then a certain sanity
|
|
Packit |
7838c8 |
value is much needed as things stand. We also recommend to step away
|
|
Packit |
7838c8 |
from writing tiles that are 8 kilobyte in their uncompressed form, or
|
|
Packit |
7838c8 |
writing single-line strips, in really big files, resulting in mega's
|
|
Packit |
7838c8 |
of tiles or strips. It's much more efficient to choose bigger tile or
|
|
Packit |
7838c8 |
strip sizes, up to several megabyte if needed, and have a few kilo of
|
|
Packit |
7838c8 |
tiles or strips instead.
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
Although it's rare, some application code does directly access
|
|
Packit |
7838c8 |
file offsets. Some of these are automatically upgraded because they
|
|
Packit |
7838c8 |
used the toff_t type, others need to be aware that the datatype
|
|
Packit |
7838c8 |
changed and need to start using toff_t or uint64. This impacts access
|
|
Packit |
7838c8 |
to tags like the EXIF IFD tag, for example, or the SubIfds tag, or to
|
|
Packit |
7838c8 |
StripOffsets or TileOffsets, the return type of functions like
|
|
Packit |
7838c8 |
TIFFCurrentDirOffset, and a parameter type to functions like
|
|
Packit |
7838c8 |
TIFFSetSubDirectory.
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
Although it's rare, some application code does use structures
|
|
Packit |
7838c8 |
like TIFFHeader or TIFFDirEntry that used to be an exact binary
|
|
Packit |
7838c8 |
representation of TIFF structures. These need to change. The old
|
|
Packit |
7838c8 |
TIFFHeader structure is replaced by the new TIFFHeaderClassic,
|
|
Packit |
7838c8 |
TIFFHeaderBig, and TIFFHeaderCommon structures that are an exact
|
|
Packit |
7838c8 |
binary representation of the ClassicTIFF and BigTIFF header, and of
|
|
Packit |
7838c8 |
the part that is common to both. There is no new equivalent for the
|
|
Packit |
7838c8 |
old TIFFDirEntry structure (or more precisely, there is still a
|
|
Packit |
7838c8 |
TIFFDirEntry structure, but it is changed, moved to library-private
|
|
Packit |
7838c8 |
definition, and no longer an exact binary representation of the tag
|
|
Packit |
7838c8 |
structure of either TIFF version).
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
Sizer functions, like TIFFTileSize or TIFFScanlineSize and the
|
|
Packit |
7838c8 |
like, return a tmsize_t value (tmsize_t is defined as int32 on 32bit
|
|
Packit |
7838c8 |
machines, and int64 on 64bit machines, and as such it is meant to
|
|
Packit |
7838c8 |
represent signed memory sizes). This is because we figure 98% of the
|
|
Packit |
7838c8 |
calling code uses the return value as sizes in allocations and the
|
|
Packit |
7838c8 |
like. So, any overflow that is theoretically possible with BigTIFF
|
|
Packit |
7838c8 |
when LibTiff is running on a 32bit system, is best detected inside the
|
|
Packit |
7838c8 |
sizer functions and it is best to return a type that makes sense as a
|
|
Packit |
7838c8 |
memory size. If your calling code is the exception and is interested
|
|
Packit |
7838c8 |
in actual file size, you best use the newer TIFFTileSize64 or
|
|
Packit |
7838c8 |
TIFFScanlineSize64 function that returns an uint64 type.
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
These TIFF tags require a 64-bit type as an argument in
|
|
Packit |
7838c8 |
libtiff 4.0.0:
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
TIFFTAG_FREEBYTECOUNTS
|
|
Packit |
7838c8 |
TIFFTAG_FREEOFFSETS
|
|
Packit |
7838c8 |
TIFFTAG_STRIPBYTECOUNTS
|
|
Packit |
7838c8 |
TIFFTAG_STRIPOFFSETS
|
|
Packit |
7838c8 |
TIFFTAG_TILEBYTECOUNTS
|
|
Packit |
7838c8 |
TIFFTAG_TILEOFFSETS
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
Other important backward incompatible changes in the public API:
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
TIFFRewriteField() renamed into _TIFFRewriteField() and moved out
|
|
Packit |
7838c8 |
from the public interface (from tiffio.h to tiffiop.h). Type of its
|
|
Packit |
7838c8 |
'count' parameter changed from uint32 to tmsize_t.
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
TIFFMergeFieldInfo() returns non-void result now. It returns 0
|
|
Packit |
7838c8 |
if successful and -1 if failed. Though this is now obsoleted function
|
|
Packit |
7838c8 |
and should not be used in new programs. Use the new tag extension
|
|
Packit |
7838c8 |
scheme instead.
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
TIFFFieldWithTag() and TIFFFieldWithName() functions now return
|
|
Packit |
7838c8 |
pointer to TIFFField constant object instead of TIFFFieldInfo.
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
TIFFReassignTagToIgnore() function and TIFFIgnoreSense enumeration
|
|
Packit |
7838c8 |
have been removed. They was unused and never been used properly.
|
|
Packit |
7838c8 |
Should be unneeded for high-level applications.
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
TIFFTagValue structure removed from the public tiffio.h
|
|
Packit |
7838c8 |
to private tif_dir.h and not accessible anymore. It should be unneeded
|
|
Packit |
7838c8 |
for high-level applications.
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
<FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
Updated autotools: Autoconf 2.68, Automake 1.11.1, libtool
|
|
Packit |
7838c8 |
2.4.
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
Enabled support for Automake silent build rules
|
|
Packit |
7838c8 |
(--enable-silent-rules or 'make V=0')
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
Enabled support for Automake colorized and parallel tests.
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
Added detection of 64-bit integer types since libtiff 4.0
|
|
Packit |
7838c8 |
requires use of 64-bit signed and unsigned integer types.
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
Libtiff now provides a more comprehensive test suite with
|
|
Packit |
7838c8 |
over 72 tests, which may be executed on Unix-like systems, or
|
|
Packit |
7838c8 |
under Microsoft Windows using MinGW/MSYS or Cygwin.
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
--disable-lzma configure option to disable use of liblzma.
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
--enable-defer-strile-load configure option to enable
|
|
Packit |
7838c8 |
experimental deferred strip/tile offset/size loading. May
|
|
Packit |
7838c8 |
cause some extremely sophisticated uses of libtiff to fail.
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
--enable-chunky-strip-read configure option to enable
|
|
Packit |
7838c8 |
experimental enable reading large strips in chunks in
|
|
Packit |
7838c8 |
TIFFReadScanline().
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
Now always uses WIN32 native I/O functions for Microsoft
|
|
Packit |
7838c8 |
Windows except for under Cygwin.
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
Now provides a pkg-config support file (libtiff-4.pc).
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
<FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
Patches/fixes made to stable libtiff (v3.9.X) are also
|
|
Packit |
7838c8 |
applied to 4.0.0. There are too many to list here. See the
|
|
Packit |
7838c8 |
distribution ChangeLog for a detailed change list.
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
There is considerable change in some files like
|
|
Packit |
7838c8 |
tif_dirread and tif_dirwrite. These changes don't impact
|
|
Packit |
7838c8 |
backwards compatibility, they are mostly a clean rewrite that
|
|
Packit |
7838c8 |
does allow BigTIFF support as well as somewhat more robust
|
|
Packit |
7838c8 |
reading of the unexpected already and will also serve future
|
|
Packit |
7838c8 |
API extension but does not impact current API or functionality
|
|
Packit |
7838c8 |
in a negative way that you need to know about.
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
Although there is still a functional definition for types
|
|
Packit |
7838c8 |
like toff_t (file offset), tstrip_t (strip index number), etc,
|
|
Packit |
7838c8 |
we recommend against using these in newer code. We have
|
|
Packit |
7838c8 |
learned that it is next to impossible to use these
|
|
Packit |
7838c8 |
consistently and make real abstraction of the binary format of
|
|
Packit |
7838c8 |
these types. Instead, at a certain level we always end up
|
|
Packit |
7838c8 |
doing casts anyway, and taking the exact binary format into
|
|
Packit |
7838c8 |
account, so these types are nothing but dangerously misleading
|
|
Packit |
7838c8 |
and obfuscating. You do not need to update calling code that
|
|
Packit |
7838c8 |
uses them, as 99.9% of such code will continue to work. But we
|
|
Packit |
7838c8 |
recommend against using them in newer calling code, and we
|
|
Packit |
7838c8 |
started replacing them with binary clear types like uint16,
|
|
Packit |
7838c8 |
uint32 and such in the library.
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
We do use and will continue to use one functional type
|
|
Packit |
7838c8 |
that is an exception to the above rule, being tmsize_t. This
|
|
Packit |
7838c8 |
is a signed memory size type, i.e. it is int32 on 32bit
|
|
Packit |
7838c8 |
machines, or int64 on 64bit machines.
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
Optionally support LZMA compression via TIFF tag 34925.
|
|
Packit |
7838c8 |
Tiffcp supports compression levels similar to "-c lzma:p1" or
|
|
Packit |
7838c8 |
"-c zip:p9 for setting the LZMA compression parameters.
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
Optionally defer the load of strip/tile offset and size
|
|
Packit |
7838c8 |
tags for optimized scanning of directories. Enabled with the
|
|
Packit |
7838c8 |
--enable-defer-strile-load configure option (DEFER_STRILE_LOAD
|
|
Packit |
7838c8 |
#define in tif_config.h).
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
Optionally enable experimental support for reading big
|
|
Packit |
7838c8 |
strips in chunks. Enabled with the --enable-chunky-strip-read
|
|
Packit |
7838c8 |
configure option.
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
<FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
tiffset: add -d and -sd switches to allow operation on
|
|
Packit |
7838c8 |
a particular directory, not just the first.
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
<FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
Last updated $Date: 2016-09-25 20:05:47 $.
|
|
Packit |
7838c8 |
|
|
Packit |
7838c8 |
</BODY>
|
|
Packit |
7838c8 |
</HTML>
|