Blame html/v4.0.0.html

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>