src/3rdparty/libtiff/html/v3.6.0.html
changeset 0 1918ee327afb
equal deleted inserted replaced
-1:000000000000 0:1918ee327afb
       
     1 <HTML>
       
     2 <HEAD>
       
     3 <TITLE>
       
     4 Changes in TIFF v3.6.0
       
     5 </TITLE>
       
     6 </HEAD>
       
     7 
       
     8 <BODY BGCOLOR=white>
       
     9 <FONT FACE="Helvetica, Arial, Sans">
       
    10 <FONT FACE="Helvetica, Arial, Sans"> 
       
    11 
       
    12 <BASEFONT SIZE=4>
       
    13 <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
       
    14 <BASEFONT SIZE=3>
       
    15 
       
    16 <UL>
       
    17 <HR SIZE=4 WIDTH=65% ALIGN=left>
       
    18 <B>Current Version</B>: v3.6.0<BR>
       
    19 <B>Previous Version</B>: <A HREF=v3.5.7.html>v3.5.7</a><BR>
       
    20 <B>Master FTP Site</B>: <A HREF="ftp://ftp.remotesensing.org/pub/libtiff">
       
    21 ftp.remotesensing.org</a>, directory pub/libtiff</A><BR>
       
    22 <B>Master HTTP Site</B>: <A HREF="http://www.remotesensing.org/libtiff">
       
    23 http://www.remotesensing.org/libtiff</a> 
       
    24 <HR SIZE=4 WIDTH=65% ALIGN=left>
       
    25 </UL>
       
    26 
       
    27 <P>
       
    28 This document describes the changes made to the software between the
       
    29 <I>previous</I> and <I>current</I> versions (see above).
       
    30 If you don't find something listed here, then it was not done in this
       
    31 timeframe, or it was not considered important enough to be mentioned.
       
    32 The following information is located here:
       
    33 <UL>
       
    34 <LI><A HREF="#hightlights">Major Changes</A>
       
    35 <LI><A HREF="#configure">Changes in the software configuration</A>
       
    36 <LI><A HREF="#libtiff">Changes in libtiff</A>
       
    37 <LI><A HREF="#tools">Changes in the tools</A>
       
    38 <LI><A HREF="#contrib">Changes in the contrib area</A>
       
    39 <LI><A HREF="#lzwkit">Changes in the LZW compression kit</A>
       
    40 </UL>
       
    41 <p> 
       
    42 <P><HR WIDTH=65% ALIGN=left>
       
    43 
       
    44 <!--------------------------------------------------------------------------->
       
    45 
       
    46 <A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A>
       
    47 
       
    48 <ul>
       
    49 	<li> New utility <a href=./man/raw2tiff.1.html>raw2tiff</a>
       
    50 for converting raw rasters into TIFF files.
       
    51 	<li> Lots of new <a href=./man/tiff2ps.1.html>tiff2ps</a> options.
       
    52 	<li> Lots of new <a href=./man/fax2tiff.1.html>fax2tiff</a> options.
       
    53 	<li> Lots of bug fixes for LZW, JPEG and OJPEG compression. 
       
    54 </ul>
       
    55 
       
    56 <h3>Custom Tag Support</h3>
       
    57 
       
    58 The approach to extending libtiff with custom tags has changed radically.
       
    59 Previously, all internally supported TIFF tags had a place in the 
       
    60 private TIFFDirectory structure within libtiff to hold the values (if read),
       
    61 and a "field number" (ie. FIELD_SUBFILETYPE) used to identify that tag. 
       
    62 However, every time a new tag was added to the core, the size of the
       
    63 TIFFDirectory structure would changing, breaking any dynamically linked
       
    64 software that used the private data structures.<p>
       
    65 
       
    66 Also, any tag not recognised
       
    67 by libtiff would not be read and accessable to applications without some
       
    68 fairly complicated work on the applications part to pre-register the tags
       
    69 as exemplified by the support for "Geo"TIFF tags by libgeotiff layered on
       
    70 libtiff.  <p>
       
    71 
       
    72 Amoung other things this approach required the extension code
       
    73 to access the private libtiff structures ... which made the higher level
       
    74 non-libtiff code be locked into a specific version of libtiff at compile time.
       
    75 This caused no end of bug reports!<p>
       
    76 
       
    77 The new approach is for libtiff to read all tags from TIFF files.  Those that
       
    78 aren't recognised as "core tags" (those having an associated FIELD_ value, 
       
    79 and place for storage in the TIFFDirectory structure) are now read into a 
       
    80 dynamic list of extra tags (td_customValues in TIFFDirectory).  When a new
       
    81 tag code is encountered for the first time in a given TIFF file, a new 
       
    82 anonymous tag definition is created for the tag in the tag definition list. 
       
    83 The type, and some other metadata is worked out from the instance encountered.
       
    84 These fields are known as "custom tags".  <p>
       
    85 
       
    86 Custom tags can be set and fetched normally using TIFFSetField() and 
       
    87 TIFFGetField(), and appear pretty much like normal tags to application code.
       
    88 However, they have no impact on internal libtiff processing (such as
       
    89 compression).  Some utilities, such as tiffcp will now copy these custom
       
    90 tags to the new output files. <p>
       
    91 
       
    92 As well as the internal work with custom tags, new C API entry points
       
    93 were added so that extension libraries, such as libgeotiff, could 
       
    94 define new tags more easily without accessing internal data structures.  
       
    95 Because tag handling of extension tags is done via the "custom fields" 
       
    96 mechanism as well, the definition provided externally mostly serves to provide
       
    97 a meaningful name for the tag.
       
    98 
       
    99 The addition of "custom tags" and the altered approach to extending libtiff
       
   100 with externally defined tags is the primary reason for the shift to the 
       
   101 3.6.x version number from 3.5.x.<p>
       
   102 
       
   103 <P><HR WIDTH=65% ALIGN=left>
       
   104 <!--------------------------------------------------------------------------->
       
   105 
       
   106 <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
       
   107 
       
   108 <UL>
       
   109 <li> configure, config.site: Fix for large files (>2GiB) support. New
       
   110 option in the config.site: LARGEFILE="yes". Should be enougth for the large
       
   111 files I/O.
       
   112 
       
   113 <li> configure: Set -DPIXARLOG_SUPPORT option along with -DZIP_SUPPORT.
       
   114 
       
   115 <li> html/Makefile.in: Updated to use groffhtml for generating html pages
       
   116 from man pages.
       
   117 
       
   118 <li> configure, libtiff/Makefile.in: Added SCO OpenServer 5.0.6 support
       
   119 from John H. DuBois III.  
       
   120 
       
   121 <li> libtiff/{Makefile.vc, libtiff.def}: Missed declarations added.
       
   122 
       
   123 <li> libtiff/Makefile.in, tools/Makefile.in: Shared library will not be
       
   124 stripped when installing, utility binaries will do be stripped. As per bug 93.
       
   125 
       
   126 <li> man/Makefile.in: Patch DESTDIR handling as per bug 95.
       
   127 
       
   128 <li> configure: OpenBSD changes for Sparc64 and DSO version as per bug 96.
       
   129 
       
   130 <li> config.site/configure: added support for OJPEG=yes option to enable
       
   131 OJPEG support from config.site.
       
   132 
       
   133 <li> config.guess, config.sub: Updated from ftp.gnu.org/pub/config.
       
   134 
       
   135 <li> configure: Modify CheckForBigEndian so it can work in a cross
       
   136 compiled situation.
       
   137 
       
   138 <li> configure, libtiff/Makefile.in: Changes for building on MacOS 10.1
       
   139 as per bug 94.
       
   140 
       
   141 <li> html/Makefile.in: added missing images per bug 92.
       
   142 
       
   143 <li> port/Makefile.in: fixed clean target per bug 92.
       
   144 </UL>
       
   145 
       
   146 <P><HR WIDTH=65% ALIGN=left>
       
   147 
       
   148 <!--------------------------------------------------------------------------->
       
   149 
       
   150 <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
       
   151 
       
   152 <UL>
       
   153 
       
   154 <li> libtiff/tif_getimage.c: New function <A
       
   155 HREF="./man/TIFFReadRGBAImage.3t.html">TIFFReadRGBAImageOriented()</A>
       
   156 implemented to retrieve raster array with user-specified origin position.
       
   157 
       
   158 <li> libtiff/tif_fax3.c: Fix wrong line numbering.
       
   159 
       
   160 <li> libtiff/tif_dirread.c: Check field counter against number of fields.
       
   161 
       
   162 <li> Store a list of opened IFD to prevent directory looping.
       
   163 
       
   164 <li> libtiff/tif_jpeg.c: modified segment_height calculation to always
       
   165 be a full height tile for tiled images.  Also changed error to just
       
   166 be a warning.
       
   167 
       
   168 <li> libtiff/tif_lzw.c: fixed so that decoder state isn't allocated till
       
   169 LZWSetupDecode().  Needed to read LZW files in "r+" mode.
       
   170 	
       
   171 <li> libtiff/tif_dir.c: fixed up the tif_postdecode settings responsible
       
   172 for byte swapping complex image data.
       
   173 	
       
   174 <li> libtiff/tif_open.c: Removed error if opening a compressed file
       
   175 in update mode bug (198).
       
   176 
       
   177 <li> libtiff/tif_write.c: TIFFWriteCheck() now fails if the image is
       
   178 a pre-existing compressed image.  That is, image writing to pre-existing
       
   179 compressed images is not allowed.
       
   180 
       
   181 <li> html/man/*.html: Web pages regenerated from man pages.
       
   182 
       
   183 <li> libtiff/tif_jpeg.c: Hack to ensure that "boolean" is defined properly
       
   184 on Windows so as to avoid the structure size mismatch error from libjpeg
       
   185 (bug 188).
       
   186 
       
   187 <li> libtiff/tiff.h: #ifdef USING_VISUALAGE around previous Visual Age
       
   188 AIX porting hack as it screwed up gcc. (bug 39)
       
   189 
       
   190 <li> libtiff/tiff.h: added COMPRESSION_JP2000 (34712) for LEAD tools
       
   191 custom compression.
       
   192 
       
   193 <li> libtiff/tif_dirread.c: Another fix for the fetching SBYTE arrays
       
   194 by the TIFFFetchByteArray() function. (bug 52)
       
   195 
       
   196 <li> libtiff/tif_dirread.c: Expand v[2] to v[4] in TIFFFetchShortPair()
       
   197 as per bug 196.
       
   198 
       
   199 <li> libtiff/tif_lzw.c: Additional consistency checking added in
       
   200 LZWDecode() and LZWDecodeCompat() fixing bugs 190 and 100.
       
   201 
       
   202 <li> libtiff/tif_lzw.c: Added check for valid code lengths in LZWDecode()
       
   203 and LZWDecodeCompat(). Fixes bug 115.
       
   204 
       
   205 <li> tif_getimage.c: Ensure that TIFFRGBAImageBegin() returns the
       
   206 return code from the underlying pick function as per bug 177.
       
   207 
       
   208 <li> libtiff/{tif_jpeg.c,tif_strip.c,tif_print.c}: Hacked tif_jpeg.c to
       
   209 fetch TIFFTAG_YCBCRSUBSAMPLING from the jpeg data stream if it isn't
       
   210 present in the tiff tags as per bug 168.
       
   211 
       
   212 <li> libtiff/tif_jpeg.c: Fixed problem with setting of nrows in 
       
   213 JPEGDecode() as per bug 129. 
       
   214 
       
   215 <li> libtiff/tif_read.c, libtiff/tif_write.c: TIFFReadScanline() and
       
   216 TIFFWriteScanline() now set tif_row explicitly in case the codec has
       
   217 fooled with the value as per bug 129.
       
   218 
       
   219 <li> libtiff/tif_ojpeg.c: Major upgrade from Scott.  Details in bug 156.
       
   220 
       
   221 <li>  libtiff/tif_open.c: Pointers to custom procedures
       
   222 in TIFFClientOpen() are checked to be not NULL-pointers.
       
   223 
       
   224 <li> libtiff/tif_lzw.c: Assertions in LZWDecode and LZWDecodeCompat
       
   225 replaced by warnings. Now libtiff should read corrupted LZW-compressed
       
   226 files by skipping bad strips as per bug 100.
       
   227 	
       
   228 <li> libtiff/: tif_dirwrite.c, tif_write.c, tiffio.h:
       
   229 <a href=./man/TIFFWriteDirectory.3t.html>TIFFCheckpointDirectory()</a>
       
   230 routine added as per bug 124.  The
       
   231 <a href=./man/TIFFWriteDirectory.3t.html>TIFFWriteDirectory</a>
       
   232 man page discusses this new function as well as the related 
       
   233 <a href=./man/TIFFWriteDirectory.3t.html>TIFFRewriteDirectory()</a>.
       
   234 
       
   235 <li> libtiff/: tif_codec.c, tif_compress.c, tiffiop.h, tif_getimage.c: 
       
   236 Introduced
       
   237 additional members tif->tif_decodestatus and tif->tif_encodestatus
       
   238 for correct handling of unconfigured codecs (we should not try to read
       
   239 data or to define data size without correct codecs). See bug 119.
       
   240 
       
   241 <li> tif_dirread.c: avoid div-by-zero if rowbytes is zero in chop func as
       
   242 per bug 111.
       
   243 
       
   244 <li> libtiff/: tiff.h, tif_dir.c, tif_dir.h, tif_dirinfo.c, tif_dirread.c,
       
   245 tif_dirwrite.c: Dwight Kelly added get/put code for new tag XMLPACKET as 
       
   246 defined in Adobe XMP Technote. Added missing INKSET tag value from TIFF 6.0 
       
   247 spec INKSET_MULTIINK (=2). Added missing tags from Adobe TIFF technotes: 
       
   248 CLIPPATH, XCLIPPATHUNITS, YCLIPPATHUNITS, OPIIMAGEID, OPIPROXY and
       
   249 INDEXED. Added PHOTOMETRIC tag value from TIFF technote 4 ICCLAB (=9).
       
   250 
       
   251 <li> libtiff/tif_getimage.c: Additional check for supported codecs added in 
       
   252 TIFFRGBAImageOK, TIFFReadRGBAImage, TIFFReadRGBAStrip and TIFFReadRGBATile now
       
   253 use TIFFRGBAImageOK before reading a per bug 110.
       
   254 
       
   255 <li> libtiff/: tif_dir.c, tif_dir.h, tif_dirinfo.c, tif_dirread.c,
       
   256 tif_dirwrite.c: Added routine
       
   257 <a href=./man/TIFFDataWidth.3t.html>TIFFDataWidth</a> for determining
       
   258 TIFFDataType sizes instead of working with tiffDataWidth array
       
   259 directly as per bug 109.
       
   260 
       
   261 <li>libtiff/: tif_dirinfo.c, tif_dirwrite.c: Added possibility to
       
   262 read broken TIFFs with LONG type used for TIFFTAG_COMPRESSION,
       
   263 TIFFTAG_BITSPERSAMPLE, TIFFTAG_PHOTOMETRIC as per bug 99.
       
   264 
       
   265 <li> libtiff/{tiff.h,tif_fax3.c}: Add support for __arch64__ as per bug 94.
       
   266 
       
   267 <li> libtiff/tif_read.c: Fixed TIFFReadEncodedStrip() to fail if the
       
   268 decodestrip function returns anything not greater than zero as per bug 97.
       
   269 
       
   270 <li> libtiff/tif_jpeg.c: fixed computation of segment_width for 
       
   271 tiles files to avoid error about it not matching the 
       
   272 cinfo.d.image_width values ("JPEGPreDecode: Improper JPEG strip/tile 
       
   273 size.") for ITIFF files.  Apparently the problem was incorporated since
       
   274 3.5.5, presumably during the OJPEG/JPEG work recently.
       
   275 
       
   276 <li> libtiff/tif_getimage.c: If DEFAULT_EXTRASAMPLE_AS_ALPHA is 1 
       
   277 (defined in tiffconf.h - 1 by default) then the RGBA interface
       
   278 will assume that a fourth extra sample is ASSOCALPHA if the
       
   279 EXTRASAMPLE value isn't set for it.  This changes the behaviour of
       
   280 the library, but makes it work better with RGBA files produced by
       
   281 lots of applications that don't mark the alpha values properly.
       
   282 As per bugs 93 and 65.
       
   283 
       
   284 <li> libtiff/tif_jpeg.c: allow jpeg data stream sampling values to 
       
   285 override those from tiff directory.  This makes this work with 
       
   286 ImageGear generated files. 
       
   287 
       
   288 </UL>
       
   289 
       
   290 <P><HR WIDTH=65% ALIGN=left>
       
   291 
       
   292 <!-------------------------------------------------------------------------->
       
   293 	
       
   294 <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
       
   295 
       
   296 <UL>
       
   297 	
       
   298 <li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Added page size setting
       
   299 when creating PS Level 2.
       
   300 
       
   301 <li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Fixed PS comment emitted when
       
   302 FlateDecode is being used.
       
   303 
       
   304 <li> <a href=./man/tiffsplit.1.html>tiffsplit</a>: increased the maximum
       
   305 number of pages that can be split.
       
   306 
       
   307 <li> <a href=./man/raw2tiff.1.html>raw2tiff</a>: Added option `-p' to
       
   308 explicitly select color	space of input image data.
       
   309 
       
   310 <li> <a href=./man/tiffmedian.1.html>tiffmedian</a>: Suppiort for large
       
   311 (> 2GB) images.
       
   312 
       
   313 <li> <a href=./man/ppm2tiff.1.html>ppm2tiff</a>: Fixed possible endless loop.
       
   314 
       
   315 <li> <a href=./man/tiff2rgba.1.html>tiff2rgba</a>: Switched to use
       
   316 <A HREF="./man/TIFFReadRGBAImage.3t.html">TIFFReadRGBAImageOriented()</A>
       
   317 instead of <A HREF="./man/TIFFReadRGBAImage.3t.html">TIFFReadRGBAImage()</A>.
       
   318 
       
   319 <li> <a href=./man/tiffcmp.1.html>tiffcmp</a>: Fixed problem with unused data
       
   320 comparing (bug 349). `-z' option now can be used to set the number of reported
       
   321 different bytes.
       
   322 
       
   323 <li> <a href=./man/tiffcp.1.html>tiffcp</a>: Added possibility to specify
       
   324 value -1 to -r option to get the entire image as one strip (bug 343).
       
   325 
       
   326 <li> <a href=./man/tiffcp.1.html>tiffcp</a>: Set the correct RowsPerStrip
       
   327 and PageNumber values (bug 343).
       
   328 	
       
   329 <li> <a href=./man/fax2tiff.1.html>fax2tiff</a>: Page numbering fixed (bug
       
   330 341).
       
   331 
       
   332 <li> <a href=./man/ppm2tiff.1.html>ppm2tiff</a>: PPM header parser improved:
       
   333 now able to skip comments.
       
   334 
       
   335 <li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Force deadzone printing when
       
   336 EPS output specified (bug 325).
       
   337 
       
   338 <li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Add ability to generate
       
   339 PS Level 3. It basically allows one to use the /flateDecode filter for ZIP
       
   340 compressed TIFF images. Patch supplied by Tom Kacvinsky (bug 328).
       
   341 	
       
   342 <li> <a href=./man/tiffcp.1.html>tiffcp</a>: Fixed problem with colorspace
       
   343 conversion for JPEG encoded images (bugs 23 and 275)
       
   344 
       
   345 <li> <a href=./man/fax2tiff.1.html>fax2tiff</a>: Applied patch from
       
   346 Julien Gaulmin. More switches for fax2tiff tool for better control
       
   347 of input and output (bugs 272 and 293).
       
   348 
       
   349 <li> <a href=./man/raw2tiff.1.html>raw2tiff</a>:
       
   350 New utility for turning raw raster images into TIFF files
       
   351 written by Andrey Kiselev.
       
   352 
       
   353 <li> <a href=./man/tiff2ps.1.html>tiff2ps</a>:
       
   354 Sebastian Eken provided patches (bug 200) to add new these new 
       
   355 switches:
       
   356   <ul>
       
   357     <li> <b>-b #</b>: for a bottom margin of # inches
       
   358     <li> <b>-c</b>: center image
       
   359     <li> <b>-l #</b>: for a left margin of # inches
       
   360     <li> <b>-r</b>: rotate the image by 180 degrees
       
   361   </ul>
       
   362 
       
   363 Also, new features merged with code for shrinking/overlapping.
       
   364 
       
   365 <li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Don't emit BeginData/EndData
       
   366 DSC comments since we are unable to properly include the amount to skip
       
   367 as per bug 80.
       
   368 
       
   369 <li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Added workaround for some
       
   370 software that may crash when last strip of image contains fewer number
       
   371 of scanlines than specified by the `/Height' variable as per bug 164.
       
   372 
       
   373 <li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Patch from John Williams to add new 
       
   374 functionality for tiff2ps utility splitting long images in several pages as
       
   375 per bug 142. New switches:
       
   376 	<ul>
       
   377 		<li> <b>-H #</b>: split image if height is more than # inches
       
   378 		<li> <b>-L #</b>: overLap split images by # inches
       
   379 	</ul>
       
   380 
       
   381 <li>  <a href=./man/tiff2ps.1.html>tiff2ps</a>: New commandline
       
   382 switches to override resolution units obtained from the input file per bug 131:
       
   383 	<ul>
       
   384 		<li> <b>-x</b>: override resolution units as centimeters
       
   385 		<li> <b>-y</b>: override resolution units as inches
       
   386 	</ul>
       
   387 
       
   388 <li> <a href=./man/fax2tiff.1.html>fax2tiff</a>: Updated to reflect
       
   389 latest changes in libtiff per bug 125.
       
   390 
       
   391 <li> tiff2ps: Division by zero fixed as per bug 88.
       
   392 
       
   393 <li> <a href=./man/tiffcp.1.html>tiffcp<a>:
       
   394 Added support for 'Orientation' tag.
       
   395 
       
   396 <li> <a href=./man/tiffdump.1.html>tiffdump</a>:
       
   397 include TIFFTAG_JPEGTABLES in tag list.
       
   398 
       
   399 <li> tiffset: fix bug in error reporting.
       
   400 
       
   401 </UL>
       
   402 
       
   403 <P><HR WIDTH=65% ALIGN=left>
       
   404 
       
   405 <!--------------------------------------------------------------------------->
       
   406 
       
   407 <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A>
       
   408 <UL> 
       
   409 
       
   410 <li> Fixed distribution to include contrib/addtiffo/tif_ovrcache.{c,h}.
       
   411 <li> libtiff/contrib/win95: renamed to contrib/win_dib.  Added new 
       
   412 Tiffile.cpp example of converting TIFF files into a DIB on Win32 as per 
       
   413 bug 143.
       
   414 
       
   415 </UL>
       
   416 
       
   417 <!--------------------------------------------------------------------------->
       
   418 
       
   419 <A NAME="lzwkit"><B><FONT SIZE=+3>C</FONT>HANGES IN THE LZW COMPRESSION
       
   420 KIT:</B></A>
       
   421 <UL> 
       
   422 
       
   423 <li> LZW compression kit synchronized with actual libtiff version.
       
   424 
       
   425 </UL>
       
   426 
       
   427 <A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR>
       
   428 
       
   429 <HR>
       
   430 
       
   431 Last updated $Date: 2003/10/04 11:38:17 $.
       
   432 
       
   433 </BODY>
       
   434 </HTML>