xref: /libtiff-4.0.7/html/bigtiffdesign.html (revision 7e03e5cc)
1e145894eSFrank Warmerdam<html>
2e145894eSFrank Warmerdam<head>
3e145894eSFrank Warmerdam<title>BigTIFF Design</title>
4e145894eSFrank Warmerdam</head>
5e145894eSFrank Warmerdam<body>
6e145894eSFrank Warmerdam
7e145894eSFrank Warmerdam<h1>BigTIFF Design</h1>
8e145894eSFrank Warmerdam
9e145894eSFrank Warmerdam<p>This is the HTML equivalent of a former Wiki working place for preparing a 64-bit (larger than 4GB) TIFF
10e145894eSFrank Warmerdamformat specification. The design is based on a proposal by Steve Carlsen of Adobe, with input from various
11e145894eSFrank Warmerdamother parties.</p>
12e145894eSFrank Warmerdam
13e145894eSFrank Warmerdam<h2>Briefly</h2>
14e145894eSFrank Warmerdam<ul>
15e145894eSFrank Warmerdam<li>Version = 43</li>
16e145894eSFrank Warmerdam
17e145894eSFrank Warmerdam<li>8-byte offset to first IFD</li>
18e145894eSFrank Warmerdam<li>Value/Offset fields are 8 bytes</li>
19e145894eSFrank Warmerdam<li>8-byte offset to the next IFD</li>
20e145894eSFrank Warmerdam<li>add TIFFType of LONG8, an 8 byte (unsigned) int</li>
21e145894eSFrank Warmerdam<li>StripOffsets and TileOffsets and ByteCounts can be LONG8</li>
22e145894eSFrank Warmerdam</ul>
23e145894eSFrank Warmerdam
24e145894eSFrank Warmerdam<h2>More Detail</h2>
25e145894eSFrank Warmerdam<ul>
26e145894eSFrank Warmerdam<li>The Version ID, in header bytes 2-3, formerly decimal 42, now changes to 43</li>
27e145894eSFrank Warmerdam
28e145894eSFrank Warmerdam<li>Header bytes 4-5 contain the decimal number 8.<ul>
29e145894eSFrank Warmerdam  <li>If there is some other number here, a reader should give up.</li>
30e145894eSFrank Warmerdam  <li>This is to provide a nice way to move to 16-byte pointers some day.</li></ul></li>
31e145894eSFrank Warmerdam<li>Header bytes 6-7 are reserved and must be zero.<ul>
32e145894eSFrank Warmerdam  <li>If they're not, a reader should give up.</li></ul></li>
33e145894eSFrank Warmerdam<li>Header bytes 8-15 contain the 8-byte offset to the first IFD.</li>
34e145894eSFrank Warmerdam<li>Value/Offset fields are 8 bytes long, and take up bytes 8-15 in an IFD entry.<ul>
35e145894eSFrank Warmerdam
36e145894eSFrank Warmerdam  <li>If the value is <= 8 bytes, it must be stored in the field.</li>
37e145894eSFrank Warmerdam  <li>All values must begin at an 8-byte-aligned address.</li></ul></li>
38e145894eSFrank Warmerdam<li>8-byte offset to the Next_IFD, at the end of an IFD.</li>
39e145894eSFrank Warmerdam<li>To keep IFD entries 8-byte-aligned, we begin with an 8-byte (instead of 2-byte) count of the number of directory entries.</li>
40e145894eSFrank Warmerdam<li>Add TIFFTypes of LONG8 (= 16), an 8 byte (unsigned) int, and SLONG8 (= 17).</li>
41e145894eSFrank Warmerdam<li>Add TIFFType IFD8 (=18) an 8byte IFD offset.</li>
42e145894eSFrank Warmerdam<li>StripOffsets and TileOffsets and ByteCounts may be LONG8 or the traditionally allowed LONG or SHORT.</li>
43e145894eSFrank Warmerdam
44e145894eSFrank Warmerdam<li>The proposed extension is ".tf8", and call it "8-Byte TIFF".</li>
45e145894eSFrank Warmerdam</ul>
46e145894eSFrank Warmerdam<p>Otherwise, it's just like "original TIFF." ("TIFF Classic?")</p>
47e145894eSFrank Warmerdam
48e145894eSFrank Warmerdam<h2>Open Issues</h2>
49e145894eSFrank Warmerdam<ul>
50e145894eSFrank Warmerdam<li>What to call the new format<ul>
51e145894eSFrank Warmerdam  <li>ChrisCox -- I don't think end users will understand what "8-byte TIFF" means</li>
52e145894eSFrank Warmerdam  <li>AndreyKiselev - 23 Sep 2004 -- What about TIFF64? "64" is a widely used buzzword and should be directly associated with the 64-bit offsets and 64-bit architectures.</li></ul></li>
53e145894eSFrank Warmerdam
54e145894eSFrank Warmerdam<li>What 3 character file extension to use (gotta be DOS compatible)</li>
55e145894eSFrank Warmerdam<li>What 4 character file type to use (for Macintosh)</li>
56e145894eSFrank Warmerdam<li>What MIME type to use</li>
57e145894eSFrank Warmerdam</ul>
58e145894eSFrank Warmerdam
59e145894eSFrank Warmerdam<h2>Samples</h2>
60*7e03e5ccSFrank Warmerdam<p><a href="http://www.awaresystems.be/imaging/tiff/bigtiff/BigTIFFSamples.zip">Example files</a> from Joris Van Damme</p>
61e145894eSFrank Warmerdam
62e145894eSFrank Warmerdam<h2>Changes</h2>
63e145894eSFrank Warmerdam
64e145894eSFrank Warmerdam<ul>
65e145894eSFrank Warmerdam<li>TIFFType 13 is ttIFD, 14 is assigned to ttUnicode, and 15 is assigned to ttComplex. So, I changed the types for ttLong8 and ttSLong8 to 16 and 17, respectively.<ul>
66e145894eSFrank Warmerdam  <li>AndreyKiselev - 23 Sep 2004 -- Where are these fields defined? Is there any new Technical Note or something? And what is encoding behind the word "Unicode"?</li>
67e145894eSFrank Warmerdam  <li>ChrisCox - 27 Sep 2004 -- They are in the Adobe TIFF definitions.  I am still working on releasing updated TIFF documentation.</li></ul></li>
68e145894eSFrank Warmerdam<li>Added list of open issues.</li>
69e145894eSFrank Warmerdam<li>settle on version 43</li>
70e145894eSFrank Warmerdam<li>cleanup</li>
71e145894eSFrank Warmerdam<li>TIFFType 18 (8 byte IFD) added.</li>
72e145894eSFrank Warmerdam
73e145894eSFrank Warmerdam<li>Clarified that fields which may be LONG8 can also be one of the old supported types.</li>
74e145894eSFrank Warmerdam</ul>
75e145894eSFrank Warmerdam
76e145894eSFrank Warmerdam<h2>See also</h2>
77e145894eSFrank Warmerdam<p><a href="http://www.awaresystems.be/imaging/tiff/bigtiff.html">AWare Systems' informal overview of the BigTIFF proposal</a></p>
78e145894eSFrank Warmerdam
79e145894eSFrank Warmerdam</body>
80e145894eSFrank Warmerdam</html>
81