<!DOCTYPE html>

<html lang="en">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />

    <title>Changes in TIFF v4.1.0 &#8212; LibTIFF 4.7.1 documentation</title>
    <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b849a4e9" />
    <link rel="stylesheet" type="text/css" href="../_static/sphinxdoc.css?v=0a676766" />
    <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js?v=3b5d5a7b"></script>
    <script src="../_static/doctools.js?v=888ff710"></script>
    <script src="../_static/sphinx_highlight.js?v=4825356b"></script>
    <link rel="index" title="Index" href="../genindex.html" />
    <link rel="search" title="Search" href="../search.html" />
    <link rel="next" title="Changes in TIFF v4.0.10" href="v4.0.10.html" />
    <link rel="prev" title="Changes in TIFF v4.2.0" href="v4.2.0.html" /> 
  </head><body>
    <div class="related" role="navigation" aria-label="related navigation">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="General Index"
             accesskey="I">index</a></li>
        <li class="right" >
          <a href="v4.0.10.html" title="Changes in TIFF v4.0.10"
             accesskey="N">next</a> |</li>
        <li class="right" >
          <a href="v4.2.0.html" title="Changes in TIFF v4.2.0"
             accesskey="P">previous</a> |</li>
        <li class="nav-item nav-item-0"><a href="../index.html">LibTIFF 4.7.1 documentation</a> &#187;</li>
          <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Release history</a> &#187;</li>
        <li class="nav-item nav-item-this"><a href="">Changes in TIFF v4.1.0</a></li> 
      </ul>
    </div>  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body" role="main">
            
  <section id="changes-in-tiff-v4-1-0">
<h1>Changes in TIFF v4.1.0<a class="headerlink" href="#changes-in-tiff-v4-1-0" title="Permalink to this heading">¶</a></h1>
<table class="docutils align-default" id="id1">
<caption><span class="caption-text">References</span><a class="headerlink" href="#id1" title="Permalink to this table">¶</a></caption>
<tbody>
<tr class="row-odd"><td><p>Current Version</p></td>
<td><p>v4.1.0 (<a class="reference external" href="https://gitlab.com/libtiff/libtiff/-/tags/v4.1.0">tag v4.1.0</a>)</p></td>
</tr>
<tr class="row-even"><td><p>Previous Version</p></td>
<td><p><a class="reference internal" href="v4.0.10.html"><span class="doc">v4.0.10</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>Master Download Site</p></td>
<td><p><a class="reference external" href="https://download.osgeo.org/libtiff/">https://download.osgeo.org/libtiff/</a></p></td>
</tr>
<tr class="row-even"><td><p>Master HTTP Site #1</p></td>
<td><p><a class="reference external" href="http://www.simplesystems.org/libtiff/">http://www.simplesystems.org/libtiff/</a></p></td>
</tr>
<tr class="row-odd"><td><p>Master HTTP Site #2</p></td>
<td><p><a class="reference external" href="http://libtiff.maptools.org/">http://libtiff.maptools.org/</a></p></td>
</tr>
</tbody>
</table>
<p>This document describes the changes made to the software between the
<em>previous</em> and <em>current</em> versions (see above).  If you don't
find something listed here, then it was not done in this timeframe, or
it was not considered important enough to be mentioned.  The following
information is located here. A change summary is also provided by the
<code class="file docutils literal notranslate"><span class="pre">ChangeLog</span></code> file included in the release package and by the Git commit
history:</p>
<section id="major-changes">
<h2>Major changes<a class="headerlink" href="#major-changes" title="Permalink to this heading">¶</a></h2>
<ul>
<li><p>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 <code class="docutils literal notranslate"><span class="pre">-DDEFER_STRILE_LOAD</span></code> available for default builds
when specifying the new <code class="docutils literal notranslate"><span class="pre">D</span></code> (Deferred) <a class="reference internal" href="../functions/TIFFOpen.html#c.TIFFOpen" title="TIFFOpen"><code class="xref c c-func docutils literal notranslate"><span class="pre">TIFFOpen()</span></code></a> flag. In that
mode, the [<code class="docutils literal notranslate"><span class="pre">Tile</span></code>/<code class="docutils literal notranslate"><span class="pre">Strip</span></code>][<code class="docutils literal notranslate"><span class="pre">ByteCounts</span></code>/<code class="docutils literal notranslate"><span class="pre">Offsets</span></code>] 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.</p>
<p>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 <code class="docutils literal notranslate"><span class="pre">O</span></code> (Ondemand) flag of
<a class="reference internal" href="../functions/TIFFOpen.html#c.TIFFOpen" title="TIFFOpen"><code class="xref c c-func docutils literal notranslate"><span class="pre">TIFFOpen()</span></code></a> (which implies <code class="docutils literal notranslate"><span class="pre">D</span></code>).</p>
<p>The public <a class="reference internal" href="../functions/TIFFStrileQuery.html#c.TIFFGetStrileOffset" title="TIFFGetStrileOffset"><code class="xref c c-func docutils literal notranslate"><span class="pre">TIFFGetStrileOffset()</span></code></a>,
<a class="reference internal" href="../functions/TIFFStrileQuery.html#c.TIFFGetStrileOffsetWithErr" title="TIFFGetStrileOffsetWithErr"><code class="xref c c-func docutils literal notranslate"><span class="pre">TIFFGetStrileOffsetWithErr()</span></code></a>,
<a class="reference internal" href="../functions/TIFFStrileQuery.html#c.TIFFGetStrileByteCount" title="TIFFGetStrileByteCount"><code class="xref c c-func docutils literal notranslate"><span class="pre">TIFFGetStrileByteCount()</span></code></a> and
<a class="reference internal" href="../functions/TIFFStrileQuery.html#c.TIFFGetStrileByteCountWithErr" title="TIFFGetStrileByteCountWithErr"><code class="xref c c-func docutils literal notranslate"><span class="pre">TIFFGetStrileByteCountWithErr()</span></code></a> functions have been added to
API. They are of particular interest when using sparse files (with
<code class="docutils literal notranslate"><span class="pre">offset</span> <span class="pre">==</span> <span class="pre">bytecount</span> <span class="pre">==</span> <span class="pre">0</span></code>) and you want to detect if a strile is
present or not without decompressing the data, or updating an
existing sparse file.</p>
</li>
<li><p>The BigTIFF writer now optimizes file size by using 32-bit <code class="docutils literal notranslate"><span class="pre">LONG</span></code>
values (rather than 64-bit) where it is reasonable and safe to do
so.  Likewise, the 16-bit <code class="docutils literal notranslate"><span class="pre">SHORT</span></code> type is used when possible for
<code class="docutils literal notranslate"><span class="pre">StripByteCounts</span></code>/<code class="docutils literal notranslate"><span class="pre">TileByteCounts</span></code>.</p></li>
</ul>
</section>
<section id="software-configuration-changes">
<h2>Software configuration changes<a class="headerlink" href="#software-configuration-changes" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><p>The <code class="docutils literal notranslate"><span class="pre">WIN32</span></code> build now uses <code class="file docutils literal notranslate"><span class="pre">tif_win32.c</span></code> when building with CMake.</p></li>
<li><p>Properly set value of <code class="xref c c-macro docutils literal notranslate"><span class="pre">HOST_FILLORDER</span></code> to <code class="xref c c-macro docutils literal notranslate"><span class="pre">LSB2MSB</span></code> for Windows
CMake builds.  It was not being properly set!</p></li>
</ul>
</section>
<section id="library-changes">
<h2>Library changes<a class="headerlink" href="#library-changes" title="Permalink to this heading">¶</a></h2>
<ul>
<li><p>Changes in the libtiff library may be viewed on-line
<a class="reference external" href="https://gitlab.com/libtiff/libtiff/commits/master/libtiff">Libtiff Library Commits</a>..</p></li>
<li><p>New function <a class="reference internal" href="../functions/TIFFReadFromUserBuffer.html#c.TIFFReadFromUserBuffer" title="TIFFReadFromUserBuffer"><code class="xref c c-func docutils literal notranslate"><span class="pre">TIFFReadFromUserBuffer()</span></code></a> which replaces the use of
<a class="reference internal" href="../functions/TIFFReadEncodedStrip.html#c.TIFFReadEncodedStrip" title="TIFFReadEncodedStrip"><code class="xref c c-func docutils literal notranslate"><span class="pre">TIFFReadEncodedStrip()</span></code></a>/<a class="reference internal" href="../functions/TIFFReadEncodedTile.html#c.TIFFReadEncodedTile" title="TIFFReadEncodedTile"><code class="xref c c-func docutils literal notranslate"><span class="pre">TIFFReadEncodedTile()</span></code></a> when the user can
provide the buffer for the input data, for example when he wants
to avoid libtiff to read the strile offset/count values from the
<code class="docutils literal notranslate"><span class="pre">[Strip|Tile][Offsets/ByteCounts]</span></code> array.</p></li>
<li><p>New functions <a class="reference internal" href="../functions/TIFFDeferStrileArrayWriting.html#c.TIFFDeferStrileArrayWriting" title="TIFFDeferStrileArrayWriting"><code class="xref c c-func docutils literal notranslate"><span class="pre">TIFFDeferStrileArrayWriting()</span></code></a> and <a class="reference internal" href="../functions/TIFFDeferStrileArrayWriting.html#c.TIFFForceStrileArrayWriting" title="TIFFForceStrileArrayWriting"><code class="xref c c-func docutils literal notranslate"><span class="pre">TIFFForceStrileArrayWriting()</span></code></a>.
Those advanced writing functions must be used in a particular sequence
to make their intended effect. Their aim is to control when/where
the <code class="docutils literal notranslate"><span class="pre">[Strip/Tile][Offsets/ByteCounts]</span></code> arrays are written into the file.</p>
<p>The purpose of this is to generate 'cloud-optimized geotiff' files where
the first KB of the file only contain the IFD entries without the potentially
large strile arrays. Those are written afterwards.</p>
</li>
</ul>
</section>
<section id="tools-changes">
<h2>Tools changes<a class="headerlink" href="#tools-changes" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><p>Changes in the libtiff utilities may be viewed on-line
at <a class="reference external" href="https://gitlab.com/libtiff/libtiff/commits/master/tools">Libtiff Tools Commits</a>.</p></li>
</ul>
</section>
<section id="contributed-software-changes">
<h2>Contributed software changes<a class="headerlink" href="#contributed-software-changes" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><p>Changes in the libtiff contrib area may be viewed on-line
at <a class="reference external" href="https://gitlab.com/libtiff/libtiff/commits/master/contrib">Libtiff Contrib Commits</a>.</p></li>
</ul>
</section>
</section>


            <div class="clearer"></div>
          </div>
        </div>
      </div>
      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
        <div class="sphinxsidebarwrapper">
  <div>
    <h3><a href="../index.html">Table of Contents</a></h3>
    <ul>
<li><a class="reference internal" href="#">Changes in TIFF v4.1.0</a><ul>
<li><a class="reference internal" href="#major-changes">Major changes</a></li>
<li><a class="reference internal" href="#software-configuration-changes">Software configuration changes</a></li>
<li><a class="reference internal" href="#library-changes">Library changes</a></li>
<li><a class="reference internal" href="#tools-changes">Tools changes</a></li>
<li><a class="reference internal" href="#contributed-software-changes">Contributed software changes</a></li>
</ul>
</li>
</ul>

  </div>
  <div>
    <h4>Previous topic</h4>
    <p class="topless"><a href="v4.2.0.html"
                          title="previous chapter">Changes in TIFF v4.2.0</a></p>
  </div>
  <div>
    <h4>Next topic</h4>
    <p class="topless"><a href="v4.0.10.html"
                          title="next chapter">Changes in TIFF v4.0.10</a></p>
  </div>
  <div role="note" aria-label="source link">
    <h3>This Page</h3>
    <ul class="this-page-menu">
      <li><a href="../_sources/releases/v4.1.0.rst.txt"
            rel="nofollow">Show Source</a></li>
    </ul>
   </div>
<div id="searchbox" style="display: none" role="search">
  <h3 id="searchlabel">Quick search</h3>
    <div class="searchformwrapper">
    <form class="search" action="../search.html" method="get">
      <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
      <input type="submit" value="Go" />
    </form>
    </div>
</div>
<script>document.getElementById('searchbox').style.display = "block"</script>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="related" role="navigation" aria-label="related navigation">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="General Index"
             >index</a></li>
        <li class="right" >
          <a href="v4.0.10.html" title="Changes in TIFF v4.0.10"
             >next</a> |</li>
        <li class="right" >
          <a href="v4.2.0.html" title="Changes in TIFF v4.2.0"
             >previous</a> |</li>
        <li class="nav-item nav-item-0"><a href="../index.html">LibTIFF 4.7.1 documentation</a> &#187;</li>
          <li class="nav-item nav-item-1"><a href="index.html" >Release history</a> &#187;</li>
        <li class="nav-item nav-item-this"><a href="">Changes in TIFF v4.1.0</a></li> 
      </ul>
    </div>
    <div class="footer" role="contentinfo">
    &#169; Copyright 1988-2025, LibTIFF contributors.
      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.1.2.
    </div>
  </body>
</html>