Blame html/v4.0.0.html

Packit 85355f
<HTML>
Packit 85355f
<HEAD>
Packit 85355f
<TITLE>
Packit 85355f
	Changes in TIFF v4.0.0
Packit 85355f
</TITLE>
Packit 85355f
</HEAD>
Packit 85355f
Packit 85355f
<BODY BGCOLOR=white>
Packit 85355f
<FONT FACE="Helvetica, Arial, Sans">
Packit 85355f
<FONT FACE="Helvetica, Arial, Sans"> 
Packit 85355f
Packit 85355f
<BASEFONT SIZE=4>
Packit 85355f
<FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION
Packit 85355f
<BASEFONT SIZE=3>
Packit 85355f
Packit 85355f
    Packit 85355f

    Packit 85355f
    Current Version: v4.0.0
    Packit 85355f
    Previous Version: v3.9.5
    Packit 85355f
    Master FTP Site: 
    Packit 85355f
    download.osgeo.org, directory pub/libtiff
    Packit 85355f
    Master HTTP Site: 
    Packit 85355f
    ftp://download.osgeo.org/libtiff 
    Packit 85355f

    Packit 85355f
    Packit 85355f
    Packit 85355f

    Packit 85355f
    This document describes the changes made to the software between the
    Packit 85355f
    previous and current versions (see above).  If you don't
    Packit 85355f
    find something listed here, then it was not done in this timeframe, or
    Packit 85355f
    it was not considered important enough to be mentioned. Please consult
    Packit 85355f
    the ChangeLog file in the source package for full change details.  The
    Packit 85355f
    following information is located here:
    Packit 85355f
      Packit 85355f
    • Major Changes
    • Packit 85355f
    • Changes in the software configuration
    • Packit 85355f
    • Changes in libtiff
    • Packit 85355f
    • Changes in the tools
    • Packit 85355f
    • Changes in the contrib area
    • Packit 85355f
      Packit 85355f

      Packit 85355f


      Packit 85355f
      Packit 85355f
      Packit 85355f
      Packit 85355f

      <FONT SIZE=+3>M</FONT>AJOR CHANGES:

      Packit 85355f
      Packit 85355f
      BigTIFF support changes:
      Packit 85355f
      Packit 85355f
        Packit 85355f
        Packit 85355f
        	
      • The options parameter in the TIFFOpen and TIFFClientOpen funcs has
      • Packit 85355f
        	been extended. When creating new files, you can add option '4' to
        Packit 85355f
        	specify you want to create a ClassicTIFF file, though that is the
        Packit 85355f
        	default and the option is not strictly necessary. (As such, old
        Packit 85355f
        	calling code will continue to function and create ClassicTIFF files.)
        Packit 85355f
        	Or you can add option '8' to specify you want to create a BigTIFF file
        Packit 85355f
        	instead. This new option is also reflected in some of the tools we
        Packit 85355f
        	already upgraded. For instance, you can use the -8 option on tiffcp to
        Packit 85355f
        	have tiffcp produce BigTIFF files instead of the default ClassicTIFF.
        Packit 85355f
        	(Whilst on additional option is provided for version selection when
        Packit 85355f
        	creating new files, no such option is necessary when reading TIFF
        Packit 85355f
        	files. LibTiff reads ClassicTIFF and BigTIFF both, and the application
        Packit 85355f
        	does not need to be aware which TIFF version an opened file is.)
        Packit 85355f
        Packit 85355f
        	
      • Although the tag count in BigTIFF is 64bit, we restricted the
      • Packit 85355f
        	count in the implementation to a much more reasonable size. This is
        Packit 85355f
        	necessary in current implementation, because all tag data gets read
        Packit 85355f
        	automatically in the IFD reading stage, so if there's half a dozen
        Packit 85355f
        	private tags with multiple gigabytes of data that causes considerable
        Packit 85355f
        	overhead even if the application level is never interested in these
        Packit 85355f
        	tags. Our choice to ignore tags with data longer then a certain sanity
        Packit 85355f
        	value is much needed as things stand. We also recommend to step away
        Packit 85355f
        	from writing tiles that are 8 kilobyte in their uncompressed form, or
        Packit 85355f
        	writing single-line strips, in really big files, resulting in mega's
        Packit 85355f
        	of tiles or strips. It's much more efficient to choose bigger tile or
        Packit 85355f
        	strip sizes, up to several megabyte if needed, and have a few kilo of
        Packit 85355f
        	tiles or strips instead.
        Packit 85355f
        Packit 85355f
        	
      • Although it's rare, some application code does directly access
      • Packit 85355f
        	file offsets. Some of these are automatically upgraded because they
        Packit 85355f
        	used the toff_t type, others need to be aware that the datatype
        Packit 85355f
        	changed and need to start using toff_t or uint64. This impacts access
        Packit 85355f
        	to tags like the EXIF IFD tag, for example, or the SubIfds tag, or to
        Packit 85355f
        	StripOffsets or TileOffsets, the return type of functions like
        Packit 85355f
        	TIFFCurrentDirOffset, and a parameter type to functions like
        Packit 85355f
        	TIFFSetSubDirectory.
        Packit 85355f
        Packit 85355f
        	
      • Although it's rare, some application code does use structures
      • Packit 85355f
        	like TIFFHeader or TIFFDirEntry that used to be an exact binary
        Packit 85355f
        	representation of TIFF structures. These need to change. The old
        Packit 85355f
        	TIFFHeader structure is replaced by the new TIFFHeaderClassic,
        Packit 85355f
        	TIFFHeaderBig, and TIFFHeaderCommon structures that are an exact
        Packit 85355f
        	binary representation of the ClassicTIFF and BigTIFF header, and of
        Packit 85355f
        	the part that is common to both. There is no new equivalent for the
        Packit 85355f
        	old TIFFDirEntry structure (or more precisely, there is still a
        Packit 85355f
        	TIFFDirEntry structure, but it is changed, moved to library-private
        Packit 85355f
        	definition, and no longer an exact binary representation of the tag
        Packit 85355f
        	structure of either TIFF version).
        Packit 85355f
        Packit 85355f
        	
      • Sizer functions, like TIFFTileSize or TIFFScanlineSize and the
      • Packit 85355f
        	like, return a tmsize_t value (tmsize_t is defined as int32 on 32bit
        Packit 85355f
        	machines, and int64 on 64bit machines, and as such it is meant to
        Packit 85355f
        	represent signed memory sizes). This is because we figure 98% of the
        Packit 85355f
        	calling code uses the return value as sizes in allocations and the
        Packit 85355f
        	like. So, any overflow that is theoretically possible with BigTIFF
        Packit 85355f
        	when LibTiff is running on a 32bit system, is best detected inside the
        Packit 85355f
        	sizer functions and it is best to return a type that makes sense as a
        Packit 85355f
        	memory size. If your calling code is the exception and is interested
        Packit 85355f
        	in actual file size, you best use the newer TIFFTileSize64 or
        Packit 85355f
        	TIFFScanlineSize64 function that returns an uint64 type.
        Packit 85355f
        Packit 85355f
        	
      • These TIFF tags require a 64-bit type as an argument in
      • Packit 85355f
        	libtiff 4.0.0:
        Packit 85355f
        	
          Packit 85355f
          	
        • TIFFTAG_FREEBYTECOUNTS
        • Packit 85355f
          	
        • TIFFTAG_FREEOFFSETS
        • Packit 85355f
          	
        • TIFFTAG_STRIPBYTECOUNTS
        • Packit 85355f
          	
        • TIFFTAG_STRIPOFFSETS
        • Packit 85355f
          	
        • TIFFTAG_TILEBYTECOUNTS
        • Packit 85355f
          	
        • TIFFTAG_TILEOFFSETS
        • Packit 85355f
          	
          Packit 85355f
          Packit 85355f
          Packit 85355f
          Packit 85355f
          Other important backward incompatible changes in the public API:
          Packit 85355f
          Packit 85355f
            Packit 85355f
            	
          • TIFFRewriteField() renamed into _TIFFRewriteField() and moved out
          • Packit 85355f
            	from the public interface (from tiffio.h to tiffiop.h). Type of its
            Packit 85355f
            	'count' parameter changed from uint32 to tmsize_t.
            Packit 85355f
            Packit 85355f
            	
          • TIFFMergeFieldInfo() returns non-void result now. It returns 0
          • Packit 85355f
            	if successful and -1 if failed. Though this is now obsoleted function
            Packit 85355f
            	and should not be used in new programs. Use the new tag extension
            Packit 85355f
            	scheme instead.
            Packit 85355f
            Packit 85355f
            	
          • TIFFFieldWithTag() and TIFFFieldWithName() functions now return
          • Packit 85355f
            	pointer to TIFFField constant object instead of TIFFFieldInfo.
            Packit 85355f
            Packit 85355f
            	
          • TIFFReassignTagToIgnore() function and TIFFIgnoreSense enumeration
          • Packit 85355f
            	have been removed. They was unused and never been used properly.
            Packit 85355f
            	Should be unneeded for high-level applications.
            Packit 85355f
            Packit 85355f
            	
          • TIFFTagValue structure removed from the public tiffio.h
          • Packit 85355f
            	to private tif_dir.h and not accessible anymore. It should be unneeded
            Packit 85355f
            	for high-level applications.
            Packit 85355f
            Packit 85355f
            Packit 85355f
            Packit 85355f


            Packit 85355f
            Packit 85355f
            Packit 85355f

            <FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:

            Packit 85355f
            Packit 85355f
              Packit 85355f
              Packit 85355f
              	
            • Updated autotools: Autoconf 2.68, Automake 1.11.1, libtool
            • Packit 85355f
              	2.4.
              Packit 85355f
              Packit 85355f
              	
            • Enabled support for Automake silent build rules
            • Packit 85355f
              	(--enable-silent-rules or 'make V=0')
              Packit 85355f
              Packit 85355f
              	
            • Enabled support for Automake colorized and parallel tests.
            • Packit 85355f
              Packit 85355f
              	
            • Added detection of 64-bit integer types since libtiff 4.0
            • Packit 85355f
              	requires use of 64-bit signed and unsigned integer types.
              Packit 85355f
              Packit 85355f
              	
            • Libtiff now provides a more comprehensive test suite with
            • Packit 85355f
              	over 72 tests, which may be executed on Unix-like systems, or
              Packit 85355f
              	under Microsoft Windows using MinGW/MSYS or Cygwin.
              Packit 85355f
              Packit 85355f
              	
            • --disable-lzma configure option to disable use of liblzma.
            • Packit 85355f
              Packit 85355f
              	
            • --enable-defer-strile-load configure option to enable
            • Packit 85355f
              	experimental deferred strip/tile offset/size loading.  May
              Packit 85355f
              	cause some extremely sophisticated uses of libtiff to fail.
              Packit 85355f
              Packit 85355f
              	
            • --enable-chunky-strip-read configure option to enable
            • Packit 85355f
              	experimental enable reading large strips in chunks in
              Packit 85355f
              	TIFFReadScanline().
              Packit 85355f
              Packit 85355f
              	
            • Now always uses WIN32 native I/O functions for Microsoft
            • Packit 85355f
              	Windows except for under Cygwin.
              Packit 85355f
              Packit 85355f
              	
            • Now provides a pkg-config support file (libtiff-4.pc).
            • Packit 85355f
              Packit 85355f
              Packit 85355f
              Packit 85355f


              Packit 85355f
              Packit 85355f
              Packit 85355f
              Packit 85355f

              <FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:

              Packit 85355f
              Packit 85355f
                Packit 85355f
                Packit 85355f
                        
              • Patches/fixes made to stable libtiff (v3.9.X) are also
              • Packit 85355f
                        applied to 4.0.0.  There are too many to list here.  See the
                Packit 85355f
                        distribution ChangeLog for a detailed change list.
                Packit 85355f
                Packit 85355f
                	
              • There is considerable change in some files like
              • Packit 85355f
                	tif_dirread and tif_dirwrite. These changes don't impact
                Packit 85355f
                	backwards compatibility, they are mostly a clean rewrite that
                Packit 85355f
                	does allow BigTIFF support as well as somewhat more robust
                Packit 85355f
                	reading of the unexpected already and will also serve future
                Packit 85355f
                	API extension but does not impact current API or functionality
                Packit 85355f
                	in a negative way that you need to know about.
                Packit 85355f
                Packit 85355f
                	
              • Although there is still a functional definition for types
              • Packit 85355f
                	like toff_t (file offset), tstrip_t (strip index number), etc,
                Packit 85355f
                	we recommend against using these in newer code. We have
                Packit 85355f
                	learned that it is next to impossible to use these
                Packit 85355f
                	consistently and make real abstraction of the binary format of
                Packit 85355f
                	these types. Instead, at a certain level we always end up
                Packit 85355f
                	doing casts anyway, and taking the exact binary format into
                Packit 85355f
                	account, so these types are nothing but dangerously misleading
                Packit 85355f
                	and obfuscating. You do not need to update calling code that
                Packit 85355f
                	uses them, as 99.9% of such code will continue to work. But we
                Packit 85355f
                	recommend against using them in newer calling code, and we
                Packit 85355f
                	started replacing them with binary clear types like uint16,
                Packit 85355f
                	uint32 and such in the library.
                Packit 85355f
                Packit 85355f
                	
              • We do use and will continue to use one functional type
              • Packit 85355f
                	that is an exception to the above rule, being tmsize_t. This
                Packit 85355f
                	is a signed memory size type, i.e. it is int32 on 32bit
                Packit 85355f
                	machines, or int64 on 64bit machines.
                Packit 85355f
                Packit 85355f
                	
              • Optionally support LZMA compression via TIFF tag 34925.
              • Packit 85355f
                	Tiffcp supports compression levels similar to "-c lzma:p1" or
                Packit 85355f
                	"-c zip:p9 for setting the LZMA compression parameters.
                Packit 85355f
                Packit 85355f
                	
              • Optionally defer the load of strip/tile offset and size
              • Packit 85355f
                	tags for optimized scanning of directories.  Enabled with the
                Packit 85355f
                	--enable-defer-strile-load configure option (DEFER_STRILE_LOAD
                Packit 85355f
                	#define in tif_config.h).
                Packit 85355f
                Packit 85355f
                	
              • Optionally enable experimental support for reading big
              • Packit 85355f
                	strips in chunks.  Enabled with the --enable-chunky-strip-read
                Packit 85355f
                	configure option.
                Packit 85355f
                Packit 85355f
                Packit 85355f
                Packit 85355f


                Packit 85355f
                Packit 85355f
                Packit 85355f
                	
                Packit 85355f

                <FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:

                Packit 85355f
                Packit 85355f
                  Packit 85355f
                  Packit 85355f
                  	
                • tiffset: add -d and -sd switches to allow operation on
                • Packit 85355f
                  	a particular directory, not just the first.
                  Packit 85355f
                  Packit 85355f
                  Packit 85355f
                  Packit 85355f


                  Packit 85355f
                  Packit 85355f
                  Packit 85355f
                  Packit 85355f

                  <FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:

                  Packit 85355f
                  Packit 85355f
                  Packit 85355f
                  Packit 85355f
                  Packit 85355f
                  Last updated $Date: 2016-09-25 20:05:47 $.
                  Packit 85355f
                  Packit 85355f
                  </BODY>
                  Packit 85355f
                  </HTML>