2004.05.27 09:25 "Re: [Tiff] large TIFF - two alternatives", by Rob van den Tillaart
Alternative 1: Minimal changes for TIFF to support 8-byte addresses
- ID = 43 (or maybe 0x4242?)
- 8-byte offset to 0th IFD
- Value/Offset fields are 8 bytes
- 8-byte offset to the next IFD (does anyone use this?)
Is needed if one wants to add an IFD after the 2G/4G barrier
- add TIFFType of LONG8, an 8 byte (unsigned) int
- StripOffsets and TileOffsets and ByteCounts can be LONG8
You allow the mix of 4byte and 8byte offsets in one file? OK.
Should the file extention still be .TIF(F)? or one of the others proposed earlier?
Alternative 2: A more modern and general approach
(in the following, any power of two can be used instead of 8)
- ID = the string "TIFF2"
Why not making the string 8 bytes (e.g. TIFF2004) so all fields are 8bytes aligned.
=> easier for 64 bit architectures.
- 8-byte pointer to 0th IFD/Dictionary
- Value/pointer fields are 8 (2**x) bytes
- 8-byte child pointers
- add an 8-byte TIFF integer type, but it's rarely used explicitly
- StripOffsets and TileOffsets and ByteCounts are 8 bytes
- support for 4 or 8 or 16 or ... 2**X byte addresses (header tells which one you're using)
This will complicate things and I expect that we do not need an 16 Byte or larger adressspace soon. 8 bytes will give an address space of 18.446.744.073.709.551.616 roughly a million times the largest harddisks today. As disks double in capacity every year it will take approx. 20 years before 8 bytes is not enough. But 20 years can pass quickly.
- use of ASCII tags/keys instead of binary ones
- most values are ASCII strings, too: integers, floating point numbers, enums, yielding fewer data types
Which not? Why not all? Proprietary tags too?
In the big tiff discussion there was also someone who stated that string key/val would ease the recovery of corrupted TIFFfiles. This could be done automatically if every IFD gets an IFD signature e.g. a string "TIFF_IFD" as first field.
Sofar my 2 cents;