laag-libtiff 4.0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (629) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +57 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.org +34 -0
  5. data/ext/laag/libtiff/extconf.rb +13 -0
  6. data/laag-libtiff.gemspec +20 -0
  7. data/lib/laag/libtiff.rb +29 -0
  8. data/vendor/gitlab.com/libtiff/libtiff/.appveyor.yml +109 -0
  9. data/vendor/gitlab.com/libtiff/libtiff/.cvsignore +4 -0
  10. data/vendor/gitlab.com/libtiff/libtiff/.travis.yml +34 -0
  11. data/vendor/gitlab.com/libtiff/libtiff/CMakeLists.txt +764 -0
  12. data/vendor/gitlab.com/libtiff/libtiff/COMMITTERS +19 -0
  13. data/vendor/gitlab.com/libtiff/libtiff/COPYRIGHT +21 -0
  14. data/vendor/gitlab.com/libtiff/libtiff/ChangeLog +8073 -0
  15. data/vendor/gitlab.com/libtiff/libtiff/HOWTO-RELEASE +119 -0
  16. data/vendor/gitlab.com/libtiff/libtiff/HOWTO-SECURITY-RELEASE +19 -0
  17. data/vendor/gitlab.com/libtiff/libtiff/Makefile.am +91 -0
  18. data/vendor/gitlab.com/libtiff/libtiff/Makefile.in +995 -0
  19. data/vendor/gitlab.com/libtiff/libtiff/Makefile.vc +58 -0
  20. data/vendor/gitlab.com/libtiff/libtiff/README +61 -0
  21. data/vendor/gitlab.com/libtiff/libtiff/README.vms +12 -0
  22. data/vendor/gitlab.com/libtiff/libtiff/RELEASE-DATE +1 -0
  23. data/vendor/gitlab.com/libtiff/libtiff/SConstruct +171 -0
  24. data/vendor/gitlab.com/libtiff/libtiff/TODO +12 -0
  25. data/vendor/gitlab.com/libtiff/libtiff/VERSION +1 -0
  26. data/vendor/gitlab.com/libtiff/libtiff/aclocal.m4 +1194 -0
  27. data/vendor/gitlab.com/libtiff/libtiff/archive/html/man/bmp2tiff.1.html +121 -0
  28. data/vendor/gitlab.com/libtiff/libtiff/archive/html/man/gif2tiff.1.html +141 -0
  29. data/vendor/gitlab.com/libtiff/libtiff/archive/html/man/ras2tiff.1.html +139 -0
  30. data/vendor/gitlab.com/libtiff/libtiff/archive/html/man/sgi2tiff.1.html +147 -0
  31. data/vendor/gitlab.com/libtiff/libtiff/archive/html/man/tiffsv.1.html +207 -0
  32. data/vendor/gitlab.com/libtiff/libtiff/archive/man/bmp2tiff.1 +85 -0
  33. data/vendor/gitlab.com/libtiff/libtiff/archive/man/gif2tiff.1 +81 -0
  34. data/vendor/gitlab.com/libtiff/libtiff/archive/man/ras2tiff.1 +96 -0
  35. data/vendor/gitlab.com/libtiff/libtiff/archive/man/sgi2tiff.1 +93 -0
  36. data/vendor/gitlab.com/libtiff/libtiff/archive/man/tiffsv.1 +142 -0
  37. data/vendor/gitlab.com/libtiff/libtiff/archive/tools/bmp2tiff.c +937 -0
  38. data/vendor/gitlab.com/libtiff/libtiff/archive/tools/gif2tiff.c +591 -0
  39. data/vendor/gitlab.com/libtiff/libtiff/archive/tools/ras2tiff.c +338 -0
  40. data/vendor/gitlab.com/libtiff/libtiff/archive/tools/rasterfile.h +44 -0
  41. data/vendor/gitlab.com/libtiff/libtiff/archive/tools/sgi2tiff.c +337 -0
  42. data/vendor/gitlab.com/libtiff/libtiff/archive/tools/sgisv.c +318 -0
  43. data/vendor/gitlab.com/libtiff/libtiff/archive/tools/ycbcr.c +168 -0
  44. data/vendor/gitlab.com/libtiff/libtiff/autogen.sh +8 -0
  45. data/vendor/gitlab.com/libtiff/libtiff/build/.cvsignore +1 -0
  46. data/vendor/gitlab.com/libtiff/libtiff/build/CMakeLists.txt +25 -0
  47. data/vendor/gitlab.com/libtiff/libtiff/build/Makefile.am +32 -0
  48. data/vendor/gitlab.com/libtiff/libtiff/build/Makefile.in +680 -0
  49. data/vendor/gitlab.com/libtiff/libtiff/build/README +3 -0
  50. data/vendor/gitlab.com/libtiff/libtiff/build/travis-ci +108 -0
  51. data/vendor/gitlab.com/libtiff/libtiff/commit +233 -0
  52. data/vendor/gitlab.com/libtiff/libtiff/config/compile +347 -0
  53. data/vendor/gitlab.com/libtiff/libtiff/config/config.guess +1526 -0
  54. data/vendor/gitlab.com/libtiff/libtiff/config/config.sub +1658 -0
  55. data/vendor/gitlab.com/libtiff/libtiff/config/depcomp +791 -0
  56. data/vendor/gitlab.com/libtiff/libtiff/config/install-sh +507 -0
  57. data/vendor/gitlab.com/libtiff/libtiff/config/ltmain.sh +11156 -0
  58. data/vendor/gitlab.com/libtiff/libtiff/config/missing +215 -0
  59. data/vendor/gitlab.com/libtiff/libtiff/config/mkinstalldirs +161 -0
  60. data/vendor/gitlab.com/libtiff/libtiff/config/test-driver +127 -0
  61. data/vendor/gitlab.com/libtiff/libtiff/configure +23612 -0
  62. data/vendor/gitlab.com/libtiff/libtiff/configure.ac +1112 -0
  63. data/vendor/gitlab.com/libtiff/libtiff/configure.com +1357 -0
  64. data/vendor/gitlab.com/libtiff/libtiff/contrib/.cvsignore +2 -0
  65. data/vendor/gitlab.com/libtiff/libtiff/contrib/CMakeLists.txt +35 -0
  66. data/vendor/gitlab.com/libtiff/libtiff/contrib/Makefile.am +31 -0
  67. data/vendor/gitlab.com/libtiff/libtiff/contrib/Makefile.in +679 -0
  68. data/vendor/gitlab.com/libtiff/libtiff/contrib/README +2 -0
  69. data/vendor/gitlab.com/libtiff/libtiff/contrib/addtiffo/.cvsignore +5 -0
  70. data/vendor/gitlab.com/libtiff/libtiff/contrib/addtiffo/CMakeLists.txt +34 -0
  71. data/vendor/gitlab.com/libtiff/libtiff/contrib/addtiffo/Makefile.am +39 -0
  72. data/vendor/gitlab.com/libtiff/libtiff/contrib/addtiffo/Makefile.in +652 -0
  73. data/vendor/gitlab.com/libtiff/libtiff/contrib/addtiffo/Makefile.vc +28 -0
  74. data/vendor/gitlab.com/libtiff/libtiff/contrib/addtiffo/README +142 -0
  75. data/vendor/gitlab.com/libtiff/libtiff/contrib/addtiffo/addtiffo.c +181 -0
  76. data/vendor/gitlab.com/libtiff/libtiff/contrib/addtiffo/tif_overview.c +916 -0
  77. data/vendor/gitlab.com/libtiff/libtiff/contrib/addtiffo/tif_ovrcache.c +344 -0
  78. data/vendor/gitlab.com/libtiff/libtiff/contrib/addtiffo/tif_ovrcache.h +103 -0
  79. data/vendor/gitlab.com/libtiff/libtiff/contrib/dbs/.cvsignore +8 -0
  80. data/vendor/gitlab.com/libtiff/libtiff/contrib/dbs/CMakeLists.txt +43 -0
  81. data/vendor/gitlab.com/libtiff/libtiff/contrib/dbs/Makefile.am +46 -0
  82. data/vendor/gitlab.com/libtiff/libtiff/contrib/dbs/Makefile.in +798 -0
  83. data/vendor/gitlab.com/libtiff/libtiff/contrib/dbs/README +7 -0
  84. data/vendor/gitlab.com/libtiff/libtiff/contrib/dbs/tiff-bi.c +91 -0
  85. data/vendor/gitlab.com/libtiff/libtiff/contrib/dbs/tiff-grayscale.c +147 -0
  86. data/vendor/gitlab.com/libtiff/libtiff/contrib/dbs/tiff-palette.c +284 -0
  87. data/vendor/gitlab.com/libtiff/libtiff/contrib/dbs/tiff-rgb.c +201 -0
  88. data/vendor/gitlab.com/libtiff/libtiff/contrib/dbs/xtiff/.cvsignore +2 -0
  89. data/vendor/gitlab.com/libtiff/libtiff/contrib/dbs/xtiff/CMakeLists.txt +29 -0
  90. data/vendor/gitlab.com/libtiff/libtiff/contrib/dbs/xtiff/Makefile.am +47 -0
  91. data/vendor/gitlab.com/libtiff/libtiff/contrib/dbs/xtiff/Makefile.in +516 -0
  92. data/vendor/gitlab.com/libtiff/libtiff/contrib/dbs/xtiff/README +6 -0
  93. data/vendor/gitlab.com/libtiff/libtiff/contrib/dbs/xtiff/patchlevel.h +8 -0
  94. data/vendor/gitlab.com/libtiff/libtiff/contrib/dbs/xtiff/xtiff.c +1290 -0
  95. data/vendor/gitlab.com/libtiff/libtiff/contrib/dbs/xtiff/xtifficon.h +21 -0
  96. data/vendor/gitlab.com/libtiff/libtiff/contrib/iptcutil/.cvsignore +5 -0
  97. data/vendor/gitlab.com/libtiff/libtiff/contrib/iptcutil/CMakeLists.txt +35 -0
  98. data/vendor/gitlab.com/libtiff/libtiff/contrib/iptcutil/Makefile.am +40 -0
  99. data/vendor/gitlab.com/libtiff/libtiff/contrib/iptcutil/Makefile.in +650 -0
  100. data/vendor/gitlab.com/libtiff/libtiff/contrib/iptcutil/README +25 -0
  101. data/vendor/gitlab.com/libtiff/libtiff/contrib/iptcutil/iptcutil.c +954 -0
  102. data/vendor/gitlab.com/libtiff/libtiff/contrib/iptcutil/test.iptc +0 -0
  103. data/vendor/gitlab.com/libtiff/libtiff/contrib/iptcutil/test.txt +32 -0
  104. data/vendor/gitlab.com/libtiff/libtiff/contrib/mfs/.cvsignore +2 -0
  105. data/vendor/gitlab.com/libtiff/libtiff/contrib/mfs/CMakeLists.txt +27 -0
  106. data/vendor/gitlab.com/libtiff/libtiff/contrib/mfs/Makefile.am +29 -0
  107. data/vendor/gitlab.com/libtiff/libtiff/contrib/mfs/Makefile.in +499 -0
  108. data/vendor/gitlab.com/libtiff/libtiff/contrib/mfs/README +37 -0
  109. data/vendor/gitlab.com/libtiff/libtiff/contrib/mfs/mfs_file.c +586 -0
  110. data/vendor/gitlab.com/libtiff/libtiff/contrib/pds/.cvsignore +2 -0
  111. data/vendor/gitlab.com/libtiff/libtiff/contrib/pds/CMakeLists.txt +30 -0
  112. data/vendor/gitlab.com/libtiff/libtiff/contrib/pds/Makefile.am +32 -0
  113. data/vendor/gitlab.com/libtiff/libtiff/contrib/pds/Makefile.in +502 -0
  114. data/vendor/gitlab.com/libtiff/libtiff/contrib/pds/README +90 -0
  115. data/vendor/gitlab.com/libtiff/libtiff/contrib/pds/tif_imageiter.c +525 -0
  116. data/vendor/gitlab.com/libtiff/libtiff/contrib/pds/tif_imageiter.h +64 -0
  117. data/vendor/gitlab.com/libtiff/libtiff/contrib/pds/tif_pdsdirread.c +1131 -0
  118. data/vendor/gitlab.com/libtiff/libtiff/contrib/pds/tif_pdsdirwrite.c +971 -0
  119. data/vendor/gitlab.com/libtiff/libtiff/contrib/ras/.cvsignore +2 -0
  120. data/vendor/gitlab.com/libtiff/libtiff/contrib/ras/CMakeLists.txt +28 -0
  121. data/vendor/gitlab.com/libtiff/libtiff/contrib/ras/Makefile.am +30 -0
  122. data/vendor/gitlab.com/libtiff/libtiff/contrib/ras/Makefile.in +500 -0
  123. data/vendor/gitlab.com/libtiff/libtiff/contrib/ras/README +10 -0
  124. data/vendor/gitlab.com/libtiff/libtiff/contrib/ras/ras2tif.c +254 -0
  125. data/vendor/gitlab.com/libtiff/libtiff/contrib/ras/tif2ras.c +344 -0
  126. data/vendor/gitlab.com/libtiff/libtiff/contrib/stream/.cvsignore +2 -0
  127. data/vendor/gitlab.com/libtiff/libtiff/contrib/stream/CMakeLists.txt +28 -0
  128. data/vendor/gitlab.com/libtiff/libtiff/contrib/stream/Makefile.am +30 -0
  129. data/vendor/gitlab.com/libtiff/libtiff/contrib/stream/Makefile.in +500 -0
  130. data/vendor/gitlab.com/libtiff/libtiff/contrib/stream/README +30 -0
  131. data/vendor/gitlab.com/libtiff/libtiff/contrib/stream/tiffstream.cpp +238 -0
  132. data/vendor/gitlab.com/libtiff/libtiff/contrib/stream/tiffstream.h +70 -0
  133. data/vendor/gitlab.com/libtiff/libtiff/contrib/tags/.cvsignore +2 -0
  134. data/vendor/gitlab.com/libtiff/libtiff/contrib/tags/CMakeLists.txt +32 -0
  135. data/vendor/gitlab.com/libtiff/libtiff/contrib/tags/Makefile.am +33 -0
  136. data/vendor/gitlab.com/libtiff/libtiff/contrib/tags/Makefile.in +503 -0
  137. data/vendor/gitlab.com/libtiff/libtiff/contrib/tags/README +132 -0
  138. data/vendor/gitlab.com/libtiff/libtiff/contrib/tags/listtif.c +39 -0
  139. data/vendor/gitlab.com/libtiff/libtiff/contrib/tags/maketif.c +77 -0
  140. data/vendor/gitlab.com/libtiff/libtiff/contrib/tags/xtif_dir.c +350 -0
  141. data/vendor/gitlab.com/libtiff/libtiff/contrib/tags/xtiffio.h +59 -0
  142. data/vendor/gitlab.com/libtiff/libtiff/contrib/tags/xtiffiop.h +72 -0
  143. data/vendor/gitlab.com/libtiff/libtiff/contrib/win_dib/.cvsignore +2 -0
  144. data/vendor/gitlab.com/libtiff/libtiff/contrib/win_dib/CMakeLists.txt +30 -0
  145. data/vendor/gitlab.com/libtiff/libtiff/contrib/win_dib/Makefile.am +32 -0
  146. data/vendor/gitlab.com/libtiff/libtiff/contrib/win_dib/Makefile.in +502 -0
  147. data/vendor/gitlab.com/libtiff/libtiff/contrib/win_dib/Makefile.w95 +134 -0
  148. data/vendor/gitlab.com/libtiff/libtiff/contrib/win_dib/README.Tiffile +31 -0
  149. data/vendor/gitlab.com/libtiff/libtiff/contrib/win_dib/README.tiff2dib +51 -0
  150. data/vendor/gitlab.com/libtiff/libtiff/contrib/win_dib/Tiffile.cpp +449 -0
  151. data/vendor/gitlab.com/libtiff/libtiff/contrib/win_dib/tiff2dib.c +379 -0
  152. data/vendor/gitlab.com/libtiff/libtiff/html/.cvsignore +5 -0
  153. data/vendor/gitlab.com/libtiff/libtiff/html/BigTIFFProposal.html +99 -0
  154. data/vendor/gitlab.com/libtiff/libtiff/html/CMakeLists.txt +87 -0
  155. data/vendor/gitlab.com/libtiff/libtiff/html/Makefile.am +96 -0
  156. data/vendor/gitlab.com/libtiff/libtiff/html/Makefile.in +798 -0
  157. data/vendor/gitlab.com/libtiff/libtiff/html/TIFFTechNote2.html +707 -0
  158. data/vendor/gitlab.com/libtiff/libtiff/html/addingtags.html +292 -0
  159. data/vendor/gitlab.com/libtiff/libtiff/html/bigtiffdesign.html +80 -0
  160. data/vendor/gitlab.com/libtiff/libtiff/html/bigtiffpr.html +77 -0
  161. data/vendor/gitlab.com/libtiff/libtiff/html/bigtiffpr_images/esri.png +0 -0
  162. data/vendor/gitlab.com/libtiff/libtiff/html/bigtiffpr_images/leica.png +0 -0
  163. data/vendor/gitlab.com/libtiff/libtiff/html/bigtiffpr_images/safe.png +0 -0
  164. data/vendor/gitlab.com/libtiff/libtiff/html/bigtiffpr_images/weogeo.png +0 -0
  165. data/vendor/gitlab.com/libtiff/libtiff/html/bugs.html +61 -0
  166. data/vendor/gitlab.com/libtiff/libtiff/html/build.html +737 -0
  167. data/vendor/gitlab.com/libtiff/libtiff/html/contrib.html +209 -0
  168. data/vendor/gitlab.com/libtiff/libtiff/html/document.html +52 -0
  169. data/vendor/gitlab.com/libtiff/libtiff/html/images.html +41 -0
  170. data/vendor/gitlab.com/libtiff/libtiff/html/images/.cvsignore +2 -0
  171. data/vendor/gitlab.com/libtiff/libtiff/html/images/CMakeLists.txt +46 -0
  172. data/vendor/gitlab.com/libtiff/libtiff/html/images/Makefile.am +49 -0
  173. data/vendor/gitlab.com/libtiff/libtiff/html/images/Makefile.in +572 -0
  174. data/vendor/gitlab.com/libtiff/libtiff/html/images/back.gif +0 -0
  175. data/vendor/gitlab.com/libtiff/libtiff/html/images/bali.jpg +0 -0
  176. data/vendor/gitlab.com/libtiff/libtiff/html/images/cat.gif +0 -0
  177. data/vendor/gitlab.com/libtiff/libtiff/html/images/cover.jpg +0 -0
  178. data/vendor/gitlab.com/libtiff/libtiff/html/images/cramps.gif +0 -0
  179. data/vendor/gitlab.com/libtiff/libtiff/html/images/dave.gif +0 -0
  180. data/vendor/gitlab.com/libtiff/libtiff/html/images/info.gif +0 -0
  181. data/vendor/gitlab.com/libtiff/libtiff/html/images/jello.jpg +0 -0
  182. data/vendor/gitlab.com/libtiff/libtiff/html/images/jim.gif +0 -0
  183. data/vendor/gitlab.com/libtiff/libtiff/html/images/note.gif +0 -0
  184. data/vendor/gitlab.com/libtiff/libtiff/html/images/oxford.gif +0 -0
  185. data/vendor/gitlab.com/libtiff/libtiff/html/images/quad.jpg +0 -0
  186. data/vendor/gitlab.com/libtiff/libtiff/html/images/ring.gif +0 -0
  187. data/vendor/gitlab.com/libtiff/libtiff/html/images/smallliz.jpg +0 -0
  188. data/vendor/gitlab.com/libtiff/libtiff/html/images/strike.gif +0 -0
  189. data/vendor/gitlab.com/libtiff/libtiff/html/images/warning.gif +0 -0
  190. data/vendor/gitlab.com/libtiff/libtiff/html/index.html +122 -0
  191. data/vendor/gitlab.com/libtiff/libtiff/html/internals.html +572 -0
  192. data/vendor/gitlab.com/libtiff/libtiff/html/intro.html +68 -0
  193. data/vendor/gitlab.com/libtiff/libtiff/html/libtiff.html +747 -0
  194. data/vendor/gitlab.com/libtiff/libtiff/html/man/.cvsignore +2 -0
  195. data/vendor/gitlab.com/libtiff/libtiff/html/man/CMakeLists.txt +108 -0
  196. data/vendor/gitlab.com/libtiff/libtiff/html/man/HtmlDoc.cmake +50 -0
  197. data/vendor/gitlab.com/libtiff/libtiff/html/man/Makefile.am +122 -0
  198. data/vendor/gitlab.com/libtiff/libtiff/html/man/Makefile.in +642 -0
  199. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFClose.3tiff.html +87 -0
  200. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFDataWidth.3tiff.html +98 -0
  201. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFError.3tiff.html +106 -0
  202. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFFieldDataType.3tiff.html +89 -0
  203. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFFieldName.3tiff.html +86 -0
  204. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFFieldPassCount.3tiff.html +98 -0
  205. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFFieldReadCount.3tiff.html +101 -0
  206. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFFieldTag.3tiff.html +88 -0
  207. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFFieldWriteCount.3tiff.html +108 -0
  208. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFFlush.3tiff.html +113 -0
  209. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFGetField.3tiff.html +1969 -0
  210. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFOpen.3tiff.html +421 -0
  211. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFPrintDirectory.3tiff.html +225 -0
  212. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFRGBAImage.3tiff.html +319 -0
  213. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFReadDirectory.3tiff.html +218 -0
  214. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFReadEncodedStrip.3tiff.html +133 -0
  215. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFReadEncodedTile.3tiff.html +130 -0
  216. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFReadRGBAImage.3tiff.html +301 -0
  217. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFReadRGBAStrip.3tiff.html +208 -0
  218. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFReadRGBATile.3tiff.html +261 -0
  219. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFReadRawStrip.3tiff.html +109 -0
  220. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFReadRawTile.3tiff.html +111 -0
  221. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFReadScanline.3tiff.html +157 -0
  222. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFReadTile.3tiff.html +133 -0
  223. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFSetDirectory.3tiff.html +122 -0
  224. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFSetField.3tiff.html +1865 -0
  225. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFWarning.3tiff.html +108 -0
  226. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFWriteDirectory.3tiff.html +176 -0
  227. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFWriteEncodedStrip.3tiff.html +153 -0
  228. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFWriteEncodedTile.3tiff.html +147 -0
  229. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFWriteRawStrip.3tiff.html +144 -0
  230. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFWriteRawTile.3tiff.html +128 -0
  231. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFWriteScanline.3tiff.html +206 -0
  232. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFWriteTile.3tiff.html +115 -0
  233. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFbuffer.3tiff.html +116 -0
  234. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFcodec.3tiff.html +116 -0
  235. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFcolor.3tiff.html +975 -0
  236. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFmemory.3tiff.html +110 -0
  237. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFquery.3tiff.html +148 -0
  238. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFsize.3tiff.html +95 -0
  239. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFstrip.3tiff.html +129 -0
  240. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFswab.3tiff.html +110 -0
  241. data/vendor/gitlab.com/libtiff/libtiff/html/man/TIFFtile.3tiff.html +141 -0
  242. data/vendor/gitlab.com/libtiff/libtiff/html/man/fax2ps.1.html +252 -0
  243. data/vendor/gitlab.com/libtiff/libtiff/html/man/fax2tiff.1.html +607 -0
  244. data/vendor/gitlab.com/libtiff/libtiff/html/man/index.html +64 -0
  245. data/vendor/gitlab.com/libtiff/libtiff/html/man/libtiff.3tiff.html +1150 -0
  246. data/vendor/gitlab.com/libtiff/libtiff/html/man/pal2rgb.1.html +189 -0
  247. data/vendor/gitlab.com/libtiff/libtiff/html/man/ppm2tiff.1.html +141 -0
  248. data/vendor/gitlab.com/libtiff/libtiff/html/man/raw2tiff.1.html +510 -0
  249. data/vendor/gitlab.com/libtiff/libtiff/html/man/rgb2ycbcr.1.html +155 -0
  250. data/vendor/gitlab.com/libtiff/libtiff/html/man/thumbnail.1.html +148 -0
  251. data/vendor/gitlab.com/libtiff/libtiff/html/man/tiff2bw.1.html +161 -0
  252. data/vendor/gitlab.com/libtiff/libtiff/html/man/tiff2pdf.1.html +609 -0
  253. data/vendor/gitlab.com/libtiff/libtiff/html/man/tiff2ps.1.html +639 -0
  254. data/vendor/gitlab.com/libtiff/libtiff/html/man/tiff2rgba.1.html +162 -0
  255. data/vendor/gitlab.com/libtiff/libtiff/html/man/tiffcmp.1.html +156 -0
  256. data/vendor/gitlab.com/libtiff/libtiff/html/man/tiffcp.1.html +569 -0
  257. data/vendor/gitlab.com/libtiff/libtiff/html/man/tiffcrop.1.html +684 -0
  258. data/vendor/gitlab.com/libtiff/libtiff/html/man/tiffdither.1.html +196 -0
  259. data/vendor/gitlab.com/libtiff/libtiff/html/man/tiffdump.1.html +145 -0
  260. data/vendor/gitlab.com/libtiff/libtiff/html/man/tiffgt.1.html +551 -0
  261. data/vendor/gitlab.com/libtiff/libtiff/html/man/tiffinfo.1.html +196 -0
  262. data/vendor/gitlab.com/libtiff/libtiff/html/man/tiffmedian.1.html +183 -0
  263. data/vendor/gitlab.com/libtiff/libtiff/html/man/tiffset.1.html +176 -0
  264. data/vendor/gitlab.com/libtiff/libtiff/html/man/tiffsplit.1.html +102 -0
  265. data/vendor/gitlab.com/libtiff/libtiff/html/misc.html +117 -0
  266. data/vendor/gitlab.com/libtiff/libtiff/html/support.html +655 -0
  267. data/vendor/gitlab.com/libtiff/libtiff/html/tools.html +137 -0
  268. data/vendor/gitlab.com/libtiff/libtiff/html/v3.4beta007.html +112 -0
  269. data/vendor/gitlab.com/libtiff/libtiff/html/v3.4beta016.html +122 -0
  270. data/vendor/gitlab.com/libtiff/libtiff/html/v3.4beta018.html +84 -0
  271. data/vendor/gitlab.com/libtiff/libtiff/html/v3.4beta024.html +139 -0
  272. data/vendor/gitlab.com/libtiff/libtiff/html/v3.4beta028.html +146 -0
  273. data/vendor/gitlab.com/libtiff/libtiff/html/v3.4beta029.html +86 -0
  274. data/vendor/gitlab.com/libtiff/libtiff/html/v3.4beta031.html +94 -0
  275. data/vendor/gitlab.com/libtiff/libtiff/html/v3.4beta032.html +90 -0
  276. data/vendor/gitlab.com/libtiff/libtiff/html/v3.4beta033.html +82 -0
  277. data/vendor/gitlab.com/libtiff/libtiff/html/v3.4beta034.html +68 -0
  278. data/vendor/gitlab.com/libtiff/libtiff/html/v3.4beta035.html +63 -0
  279. data/vendor/gitlab.com/libtiff/libtiff/html/v3.4beta036.html +117 -0
  280. data/vendor/gitlab.com/libtiff/libtiff/html/v3.5.1.html +75 -0
  281. data/vendor/gitlab.com/libtiff/libtiff/html/v3.5.2.html +108 -0
  282. data/vendor/gitlab.com/libtiff/libtiff/html/v3.5.3.html +132 -0
  283. data/vendor/gitlab.com/libtiff/libtiff/html/v3.5.4.html +88 -0
  284. data/vendor/gitlab.com/libtiff/libtiff/html/v3.5.5.html +155 -0
  285. data/vendor/gitlab.com/libtiff/libtiff/html/v3.5.6-beta.html +185 -0
  286. data/vendor/gitlab.com/libtiff/libtiff/html/v3.5.7.html +259 -0
  287. data/vendor/gitlab.com/libtiff/libtiff/html/v3.6.0.html +434 -0
  288. data/vendor/gitlab.com/libtiff/libtiff/html/v3.6.1.html +199 -0
  289. data/vendor/gitlab.com/libtiff/libtiff/html/v3.7.0.html +144 -0
  290. data/vendor/gitlab.com/libtiff/libtiff/html/v3.7.0alpha.html +249 -0
  291. data/vendor/gitlab.com/libtiff/libtiff/html/v3.7.0beta.html +162 -0
  292. data/vendor/gitlab.com/libtiff/libtiff/html/v3.7.0beta2.html +131 -0
  293. data/vendor/gitlab.com/libtiff/libtiff/html/v3.7.1.html +233 -0
  294. data/vendor/gitlab.com/libtiff/libtiff/html/v3.7.2.html +222 -0
  295. data/vendor/gitlab.com/libtiff/libtiff/html/v3.7.3.html +230 -0
  296. data/vendor/gitlab.com/libtiff/libtiff/html/v3.7.4.html +133 -0
  297. data/vendor/gitlab.com/libtiff/libtiff/html/v3.8.0.html +199 -0
  298. data/vendor/gitlab.com/libtiff/libtiff/html/v3.8.1.html +217 -0
  299. data/vendor/gitlab.com/libtiff/libtiff/html/v3.8.2.html +137 -0
  300. data/vendor/gitlab.com/libtiff/libtiff/html/v3.9.0.html +261 -0
  301. data/vendor/gitlab.com/libtiff/libtiff/html/v3.9.0beta.html +304 -0
  302. data/vendor/gitlab.com/libtiff/libtiff/html/v3.9.1.html +115 -0
  303. data/vendor/gitlab.com/libtiff/libtiff/html/v3.9.2.html +122 -0
  304. data/vendor/gitlab.com/libtiff/libtiff/html/v3.9.3.html +160 -0
  305. data/vendor/gitlab.com/libtiff/libtiff/html/v3.9.4.html +125 -0
  306. data/vendor/gitlab.com/libtiff/libtiff/html/v3.9.5.html +270 -0
  307. data/vendor/gitlab.com/libtiff/libtiff/html/v4.0.0.html +269 -0
  308. data/vendor/gitlab.com/libtiff/libtiff/html/v4.0.1.html +113 -0
  309. data/vendor/gitlab.com/libtiff/libtiff/html/v4.0.2.html +118 -0
  310. data/vendor/gitlab.com/libtiff/libtiff/html/v4.0.3.html +125 -0
  311. data/vendor/gitlab.com/libtiff/libtiff/html/v4.0.4.html +274 -0
  312. data/vendor/gitlab.com/libtiff/libtiff/html/v4.0.4beta.html +291 -0
  313. data/vendor/gitlab.com/libtiff/libtiff/html/v4.0.5.html +148 -0
  314. data/vendor/gitlab.com/libtiff/libtiff/html/v4.0.6.html +139 -0
  315. data/vendor/gitlab.com/libtiff/libtiff/html/v4.0.7.html +411 -0
  316. data/vendor/gitlab.com/libtiff/libtiff/html/v4.0.8.html +445 -0
  317. data/vendor/gitlab.com/libtiff/libtiff/html/v4.0.9.html +373 -0
  318. data/vendor/gitlab.com/libtiff/libtiff/libtiff-4.pc.in +11 -0
  319. data/vendor/gitlab.com/libtiff/libtiff/libtiff/.cvsignore +22 -0
  320. data/vendor/gitlab.com/libtiff/libtiff/libtiff/CMakeLists.txt +165 -0
  321. data/vendor/gitlab.com/libtiff/libtiff/libtiff/Makefile.am +154 -0
  322. data/vendor/gitlab.com/libtiff/libtiff/libtiff/Makefile.in +966 -0
  323. data/vendor/gitlab.com/libtiff/libtiff/libtiff/Makefile.lcc +129 -0
  324. data/vendor/gitlab.com/libtiff/libtiff/libtiff/Makefile.vc +102 -0
  325. data/vendor/gitlab.com/libtiff/libtiff/libtiff/SConstruct +73 -0
  326. data/vendor/gitlab.com/libtiff/libtiff/libtiff/libtiff.def +168 -0
  327. data/vendor/gitlab.com/libtiff/libtiff/libtiff/libtiff.map +4 -0
  328. data/vendor/gitlab.com/libtiff/libtiff/libtiff/libtiffxx.map +4 -0
  329. data/vendor/gitlab.com/libtiff/libtiff/libtiff/mkg3states.c +454 -0
  330. data/vendor/gitlab.com/libtiff/libtiff/libtiff/mkspans.c +82 -0
  331. data/vendor/gitlab.com/libtiff/libtiff/libtiff/t4.h +292 -0
  332. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_aux.c +376 -0
  333. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_close.c +140 -0
  334. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_codec.c +165 -0
  335. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_color.c +309 -0
  336. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_compress.c +304 -0
  337. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_config.h-vms +46 -0
  338. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_config.h.cmake.in +261 -0
  339. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_config.h.in +410 -0
  340. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_config.vc.h +137 -0
  341. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_config.wince.h +71 -0
  342. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_dir.c +1767 -0
  343. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_dir.h +309 -0
  344. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_dirinfo.c +1070 -0
  345. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_dirread.c +5803 -0
  346. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_dirwrite.c +3024 -0
  347. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_dumpmode.c +143 -0
  348. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_error.c +88 -0
  349. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_extension.c +118 -0
  350. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_fax3.c +1648 -0
  351. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_fax3.h +540 -0
  352. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_fax3sm.c +1260 -0
  353. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_flush.c +118 -0
  354. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_getimage.c +3048 -0
  355. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_jbig.c +214 -0
  356. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_jpeg.c +2601 -0
  357. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_jpeg_12.c +69 -0
  358. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_luv.c +1765 -0
  359. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_lzma.c +495 -0
  360. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_lzw.c +1218 -0
  361. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_next.c +189 -0
  362. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_ojpeg.c +2563 -0
  363. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_open.c +725 -0
  364. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_packbits.c +311 -0
  365. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_pixarlog.c +1485 -0
  366. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_predict.c +881 -0
  367. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_predict.h +79 -0
  368. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_print.c +722 -0
  369. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_read.c +1572 -0
  370. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_stream.cxx +430 -0
  371. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_strip.c +389 -0
  372. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_swab.c +312 -0
  373. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_thunder.c +208 -0
  374. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_tile.c +322 -0
  375. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_unix.c +386 -0
  376. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_version.c +40 -0
  377. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_vms.c +611 -0
  378. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_warning.c +89 -0
  379. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_win32.c +476 -0
  380. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_wince.c +293 -0
  381. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_write.c +834 -0
  382. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tif_zip.c +476 -0
  383. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tiff.h +681 -0
  384. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tiffconf.h-vms +99 -0
  385. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tiffconf.h.cmake.in +130 -0
  386. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tiffconf.h.in +127 -0
  387. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tiffconf.vc.h +161 -0
  388. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tiffconf.wince.h +121 -0
  389. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tiffio.h +560 -0
  390. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tiffio.hxx +49 -0
  391. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tiffiop.h +445 -0
  392. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tiffvers.h +9 -0
  393. data/vendor/gitlab.com/libtiff/libtiff/libtiff/tiffvers.h.in +9 -0
  394. data/vendor/gitlab.com/libtiff/libtiff/libtiff/uvcode.h +180 -0
  395. data/vendor/gitlab.com/libtiff/libtiff/m4/acinclude.m4 +851 -0
  396. data/vendor/gitlab.com/libtiff/libtiff/m4/ice_find_athena.m4 +187 -0
  397. data/vendor/gitlab.com/libtiff/libtiff/m4/libtool.m4 +8388 -0
  398. data/vendor/gitlab.com/libtiff/libtiff/m4/ltoptions.m4 +437 -0
  399. data/vendor/gitlab.com/libtiff/libtiff/m4/ltsugar.m4 +124 -0
  400. data/vendor/gitlab.com/libtiff/libtiff/m4/ltversion.m4 +23 -0
  401. data/vendor/gitlab.com/libtiff/libtiff/m4/lt~obsolete.m4 +99 -0
  402. data/vendor/gitlab.com/libtiff/libtiff/man/.cvsignore +3 -0
  403. data/vendor/gitlab.com/libtiff/libtiff/man/CMakeLists.txt +97 -0
  404. data/vendor/gitlab.com/libtiff/libtiff/man/Makefile.am +94 -0
  405. data/vendor/gitlab.com/libtiff/libtiff/man/Makefile.in +684 -0
  406. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFClose.3tiff +53 -0
  407. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFDataWidth.3tiff +74 -0
  408. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFError.3tiff +69 -0
  409. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFFieldDataType.3tiff +53 -0
  410. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFFieldName.3tiff +52 -0
  411. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFFieldPassCount.3tiff +73 -0
  412. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFFieldReadCount.3tiff +77 -0
  413. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFFieldTag.3tiff +56 -0
  414. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFFieldWriteCount.3tiff +88 -0
  415. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFFlush.3tiff +64 -0
  416. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFGetField.3tiff +229 -0
  417. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFOpen.3tiff +279 -0
  418. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFPrintDirectory.3tiff +70 -0
  419. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFRGBAImage.3tiff +286 -0
  420. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFReadDirectory.3tiff +164 -0
  421. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFReadEncodedStrip.3tiff +78 -0
  422. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFReadEncodedTile.3tiff +76 -0
  423. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFReadRGBAImage.3tiff +218 -0
  424. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFReadRGBAStrip.3tiff +170 -0
  425. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFReadRGBATile.3tiff +171 -0
  426. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFReadRawStrip.3tiff +64 -0
  427. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFReadRawTile.3tiff +65 -0
  428. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFReadScanline.3tiff +94 -0
  429. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFReadTile.3tiff +84 -0
  430. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFSetDirectory.3tiff +79 -0
  431. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFSetField.3tiff +217 -0
  432. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFWarning.3tiff +70 -0
  433. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFWriteDirectory.3tiff +138 -0
  434. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFWriteEncodedStrip.3tiff +102 -0
  435. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFWriteEncodedTile.3tiff +96 -0
  436. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFWriteRawStrip.3tiff +96 -0
  437. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFWriteRawTile.3tiff +84 -0
  438. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFWriteScanline.3tiff +154 -0
  439. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFWriteTile.3tiff +77 -0
  440. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFbuffer.3tiff +77 -0
  441. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFcodec.3tiff +82 -0
  442. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFcolor.3tiff +268 -0
  443. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFmemory.3tiff +90 -0
  444. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFquery.3tiff +142 -0
  445. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFsize.3tiff +59 -0
  446. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFstrip.3tiff +99 -0
  447. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFswab.3tiff +80 -0
  448. data/vendor/gitlab.com/libtiff/libtiff/man/TIFFtile.3tiff +131 -0
  449. data/vendor/gitlab.com/libtiff/libtiff/man/fax2ps.1 +159 -0
  450. data/vendor/gitlab.com/libtiff/libtiff/man/fax2tiff.1 +286 -0
  451. data/vendor/gitlab.com/libtiff/libtiff/man/libtiff.3tiff +545 -0
  452. data/vendor/gitlab.com/libtiff/libtiff/man/pal2rgb.1 +111 -0
  453. data/vendor/gitlab.com/libtiff/libtiff/man/ppm2tiff.1 +105 -0
  454. data/vendor/gitlab.com/libtiff/libtiff/man/raw2tiff.1 +196 -0
  455. data/vendor/gitlab.com/libtiff/libtiff/man/rgb2ycbcr.1 +99 -0
  456. data/vendor/gitlab.com/libtiff/libtiff/man/thumbnail.1 +90 -0
  457. data/vendor/gitlab.com/libtiff/libtiff/man/tiff2bw.1 +94 -0
  458. data/vendor/gitlab.com/libtiff/libtiff/man/tiff2pdf.1 +254 -0
  459. data/vendor/gitlab.com/libtiff/libtiff/man/tiff2ps.1 +294 -0
  460. data/vendor/gitlab.com/libtiff/libtiff/man/tiff2rgba.1 +97 -0
  461. data/vendor/gitlab.com/libtiff/libtiff/man/tiffcmp.1 +87 -0
  462. data/vendor/gitlab.com/libtiff/libtiff/man/tiffcp.1 +317 -0
  463. data/vendor/gitlab.com/libtiff/libtiff/man/tiffcrop.1 +571 -0
  464. data/vendor/gitlab.com/libtiff/libtiff/man/tiffdither.1 +135 -0
  465. data/vendor/gitlab.com/libtiff/libtiff/man/tiffdump.1 +81 -0
  466. data/vendor/gitlab.com/libtiff/libtiff/man/tiffgt.1 +245 -0
  467. data/vendor/gitlab.com/libtiff/libtiff/man/tiffinfo.1 +88 -0
  468. data/vendor/gitlab.com/libtiff/libtiff/man/tiffmedian.1 +112 -0
  469. data/vendor/gitlab.com/libtiff/libtiff/man/tiffset.1 +99 -0
  470. data/vendor/gitlab.com/libtiff/libtiff/man/tiffsplit.1 +69 -0
  471. data/vendor/gitlab.com/libtiff/libtiff/nmake.opt +229 -0
  472. data/vendor/gitlab.com/libtiff/libtiff/port/.cvsignore +7 -0
  473. data/vendor/gitlab.com/libtiff/libtiff/port/CMakeLists.txt +60 -0
  474. data/vendor/gitlab.com/libtiff/libtiff/port/Makefile.am +35 -0
  475. data/vendor/gitlab.com/libtiff/libtiff/port/Makefile.in +656 -0
  476. data/vendor/gitlab.com/libtiff/libtiff/port/Makefile.vc +44 -0
  477. data/vendor/gitlab.com/libtiff/libtiff/port/dummy.c +12 -0
  478. data/vendor/gitlab.com/libtiff/libtiff/port/getopt.c +125 -0
  479. data/vendor/gitlab.com/libtiff/libtiff/port/lfind.c +62 -0
  480. data/vendor/gitlab.com/libtiff/libtiff/port/libport.h +60 -0
  481. data/vendor/gitlab.com/libtiff/libtiff/port/snprintf.c +38 -0
  482. data/vendor/gitlab.com/libtiff/libtiff/port/strcasecmp.c +51 -0
  483. data/vendor/gitlab.com/libtiff/libtiff/port/strtoul.c +109 -0
  484. data/vendor/gitlab.com/libtiff/libtiff/port/strtoull.c +116 -0
  485. data/vendor/gitlab.com/libtiff/libtiff/test/.cvsignore +12 -0
  486. data/vendor/gitlab.com/libtiff/libtiff/test/CMakeLists.txt +382 -0
  487. data/vendor/gitlab.com/libtiff/libtiff/test/Makefile.am +334 -0
  488. data/vendor/gitlab.com/libtiff/libtiff/test/Makefile.in +1987 -0
  489. data/vendor/gitlab.com/libtiff/libtiff/test/TiffSplitTest.cmake +34 -0
  490. data/vendor/gitlab.com/libtiff/libtiff/test/TiffTest.cmake +63 -0
  491. data/vendor/gitlab.com/libtiff/libtiff/test/TiffTestCommon.cmake +108 -0
  492. data/vendor/gitlab.com/libtiff/libtiff/test/ascii_tag.c +177 -0
  493. data/vendor/gitlab.com/libtiff/libtiff/test/check_tag.c +91 -0
  494. data/vendor/gitlab.com/libtiff/libtiff/test/common.sh +122 -0
  495. data/vendor/gitlab.com/libtiff/libtiff/test/custom_dir.c +247 -0
  496. data/vendor/gitlab.com/libtiff/libtiff/test/images/README.txt +29 -0
  497. data/vendor/gitlab.com/libtiff/libtiff/test/images/logluv-3c-16b.tiff +0 -0
  498. data/vendor/gitlab.com/libtiff/libtiff/test/images/minisblack-1c-16b.tiff +0 -0
  499. data/vendor/gitlab.com/libtiff/libtiff/test/images/minisblack-1c-8b.pgm +0 -0
  500. data/vendor/gitlab.com/libtiff/libtiff/test/images/minisblack-1c-8b.tiff +0 -0
  501. data/vendor/gitlab.com/libtiff/libtiff/test/images/minisblack-2c-8b-alpha.tiff +0 -0
  502. data/vendor/gitlab.com/libtiff/libtiff/test/images/miniswhite-1c-1b.pbm +0 -0
  503. data/vendor/gitlab.com/libtiff/libtiff/test/images/miniswhite-1c-1b.tiff +0 -0
  504. data/vendor/gitlab.com/libtiff/libtiff/test/images/palette-1c-1b.tiff +0 -0
  505. data/vendor/gitlab.com/libtiff/libtiff/test/images/palette-1c-4b.tiff +0 -0
  506. data/vendor/gitlab.com/libtiff/libtiff/test/images/palette-1c-8b.tiff +0 -0
  507. data/vendor/gitlab.com/libtiff/libtiff/test/images/quad-lzw-compat.tiff +0 -0
  508. data/vendor/gitlab.com/libtiff/libtiff/test/images/quad-tile.jpg.tiff +0 -0
  509. data/vendor/gitlab.com/libtiff/libtiff/test/images/rgb-3c-16b.tiff +0 -0
  510. data/vendor/gitlab.com/libtiff/libtiff/test/images/rgb-3c-8b.ppm +0 -0
  511. data/vendor/gitlab.com/libtiff/libtiff/test/images/rgb-3c-8b.tiff +0 -0
  512. data/vendor/gitlab.com/libtiff/libtiff/test/long_tag.c +156 -0
  513. data/vendor/gitlab.com/libtiff/libtiff/test/ppm2tiff_pbm.sh +7 -0
  514. data/vendor/gitlab.com/libtiff/libtiff/test/ppm2tiff_pgm.sh +7 -0
  515. data/vendor/gitlab.com/libtiff/libtiff/test/ppm2tiff_ppm.sh +7 -0
  516. data/vendor/gitlab.com/libtiff/libtiff/test/raw_decode.c +304 -0
  517. data/vendor/gitlab.com/libtiff/libtiff/test/rewrite_tag.c +344 -0
  518. data/vendor/gitlab.com/libtiff/libtiff/test/short_tag.c +205 -0
  519. data/vendor/gitlab.com/libtiff/libtiff/test/strip.c +290 -0
  520. data/vendor/gitlab.com/libtiff/libtiff/test/strip_rw.c +157 -0
  521. data/vendor/gitlab.com/libtiff/libtiff/test/test_arrays.c +829 -0
  522. data/vendor/gitlab.com/libtiff/libtiff/test/test_arrays.h +63 -0
  523. data/vendor/gitlab.com/libtiff/libtiff/test/tiff2bw-palette-1c-8b.sh +7 -0
  524. data/vendor/gitlab.com/libtiff/libtiff/test/tiff2bw-quad-lzw-compat.sh +7 -0
  525. data/vendor/gitlab.com/libtiff/libtiff/test/tiff2bw-rgb-3c-8b.sh +7 -0
  526. data/vendor/gitlab.com/libtiff/libtiff/test/tiff2pdf.sh +6 -0
  527. data/vendor/gitlab.com/libtiff/libtiff/test/tiff2ps-EPS1.sh +6 -0
  528. data/vendor/gitlab.com/libtiff/libtiff/test/tiff2ps-PS1.sh +6 -0
  529. data/vendor/gitlab.com/libtiff/libtiff/test/tiff2ps-PS2.sh +6 -0
  530. data/vendor/gitlab.com/libtiff/libtiff/test/tiff2ps-PS3.sh +6 -0
  531. data/vendor/gitlab.com/libtiff/libtiff/test/tiff2rgba-logluv-3c-16b.sh +7 -0
  532. data/vendor/gitlab.com/libtiff/libtiff/test/tiff2rgba-minisblack-1c-16b.sh +7 -0
  533. data/vendor/gitlab.com/libtiff/libtiff/test/tiff2rgba-minisblack-1c-8b.sh +7 -0
  534. data/vendor/gitlab.com/libtiff/libtiff/test/tiff2rgba-minisblack-2c-8b-alpha.sh +7 -0
  535. data/vendor/gitlab.com/libtiff/libtiff/test/tiff2rgba-miniswhite-1c-1b.sh +7 -0
  536. data/vendor/gitlab.com/libtiff/libtiff/test/tiff2rgba-palette-1c-1b.sh +7 -0
  537. data/vendor/gitlab.com/libtiff/libtiff/test/tiff2rgba-palette-1c-4b.sh +7 -0
  538. data/vendor/gitlab.com/libtiff/libtiff/test/tiff2rgba-palette-1c-8b.sh +7 -0
  539. data/vendor/gitlab.com/libtiff/libtiff/test/tiff2rgba-quad-tile.jpg.sh +7 -0
  540. data/vendor/gitlab.com/libtiff/libtiff/test/tiff2rgba-rgb-3c-16b.sh +7 -0
  541. data/vendor/gitlab.com/libtiff/libtiff/test/tiff2rgba-rgb-3c-8b.sh +7 -0
  542. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcp-g3-1d-fill.sh +7 -0
  543. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcp-g3-1d.sh +6 -0
  544. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcp-g3-2d-fill.sh +7 -0
  545. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcp-g3-2d.sh +6 -0
  546. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcp-g3.sh +6 -0
  547. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcp-g4.sh +6 -0
  548. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcp-logluv.sh +7 -0
  549. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcp-lzw-compat.sh +6 -0
  550. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcp-split-join.sh +16 -0
  551. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcp-split.sh +13 -0
  552. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcp-thumbnail.sh +10 -0
  553. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-R90-logluv-3c-16b.sh +7 -0
  554. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-R90-minisblack-1c-16b.sh +7 -0
  555. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-R90-minisblack-1c-8b.sh +7 -0
  556. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-R90-minisblack-2c-8b-alpha.sh +7 -0
  557. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-R90-miniswhite-1c-1b.sh +7 -0
  558. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-R90-palette-1c-1b.sh +7 -0
  559. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-R90-palette-1c-4b.sh +7 -0
  560. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-R90-palette-1c-8b.sh +7 -0
  561. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-R90-quad-tile.jpg.sh +7 -0
  562. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-R90-rgb-3c-16b.sh +7 -0
  563. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-R90-rgb-3c-8b.sh +7 -0
  564. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-doubleflip-logluv-3c-16b.sh +7 -0
  565. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-doubleflip-minisblack-1c-16b.sh +7 -0
  566. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-doubleflip-minisblack-1c-8b.sh +7 -0
  567. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-doubleflip-minisblack-2c-8b-alpha.sh +7 -0
  568. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-doubleflip-miniswhite-1c-1b.sh +7 -0
  569. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-doubleflip-palette-1c-1b.sh +7 -0
  570. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-doubleflip-palette-1c-4b.sh +7 -0
  571. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-doubleflip-palette-1c-8b.sh +7 -0
  572. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-doubleflip-quad-tile.jpg.sh +7 -0
  573. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-doubleflip-rgb-3c-16b.sh +7 -0
  574. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-doubleflip-rgb-3c-8b.sh +7 -0
  575. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-extract-logluv-3c-16b.sh +7 -0
  576. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-extract-minisblack-1c-16b.sh +7 -0
  577. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-extract-minisblack-1c-8b.sh +7 -0
  578. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-extract-minisblack-2c-8b-alpha.sh +7 -0
  579. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-extract-miniswhite-1c-1b.sh +7 -0
  580. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-extract-palette-1c-1b.sh +7 -0
  581. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-extract-palette-1c-4b.sh +7 -0
  582. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-extract-palette-1c-8b.sh +7 -0
  583. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-extract-quad-tile.jpg.sh +7 -0
  584. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-extract-rgb-3c-16b.sh +7 -0
  585. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-extract-rgb-3c-8b.sh +7 -0
  586. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-extractz14-logluv-3c-16b.sh +7 -0
  587. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-extractz14-minisblack-1c-16b.sh +7 -0
  588. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-extractz14-minisblack-1c-8b.sh +7 -0
  589. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-extractz14-minisblack-2c-8b-alpha.sh +7 -0
  590. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-extractz14-miniswhite-1c-1b.sh +7 -0
  591. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-extractz14-palette-1c-1b.sh +7 -0
  592. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-extractz14-palette-1c-4b.sh +7 -0
  593. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-extractz14-palette-1c-8b.sh +7 -0
  594. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-extractz14-quad-tile.jpg.sh +7 -0
  595. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-extractz14-rgb-3c-16b.sh +7 -0
  596. data/vendor/gitlab.com/libtiff/libtiff/test/tiffcrop-extractz14-rgb-3c-8b.sh +7 -0
  597. data/vendor/gitlab.com/libtiff/libtiff/test/tiffdump.sh +6 -0
  598. data/vendor/gitlab.com/libtiff/libtiff/test/tiffinfo.sh +6 -0
  599. data/vendor/gitlab.com/libtiff/libtiff/test/tifftest.h +42 -0
  600. data/vendor/gitlab.com/libtiff/libtiff/tiff.spec +68 -0
  601. data/vendor/gitlab.com/libtiff/libtiff/tools/.cvsignore +27 -0
  602. data/vendor/gitlab.com/libtiff/libtiff/tools/CMakeLists.txt +125 -0
  603. data/vendor/gitlab.com/libtiff/libtiff/tools/Makefile.am +138 -0
  604. data/vendor/gitlab.com/libtiff/libtiff/tools/Makefile.in +955 -0
  605. data/vendor/gitlab.com/libtiff/libtiff/tools/Makefile.lcc +133 -0
  606. data/vendor/gitlab.com/libtiff/libtiff/tools/Makefile.vc +52 -0
  607. data/vendor/gitlab.com/libtiff/libtiff/tools/fax2ps.c +463 -0
  608. data/vendor/gitlab.com/libtiff/libtiff/tools/fax2tiff.c +491 -0
  609. data/vendor/gitlab.com/libtiff/libtiff/tools/pal2rgb.c +438 -0
  610. data/vendor/gitlab.com/libtiff/libtiff/tools/ppm2tiff.c +397 -0
  611. data/vendor/gitlab.com/libtiff/libtiff/tools/raw2tiff.c +690 -0
  612. data/vendor/gitlab.com/libtiff/libtiff/tools/rgb2ycbcr.c +397 -0
  613. data/vendor/gitlab.com/libtiff/libtiff/tools/thumbnail.c +691 -0
  614. data/vendor/gitlab.com/libtiff/libtiff/tools/tiff2bw.c +501 -0
  615. data/vendor/gitlab.com/libtiff/libtiff/tools/tiff2pdf.c +5594 -0
  616. data/vendor/gitlab.com/libtiff/libtiff/tools/tiff2ps.c +3106 -0
  617. data/vendor/gitlab.com/libtiff/libtiff/tools/tiff2rgba.c +569 -0
  618. data/vendor/gitlab.com/libtiff/libtiff/tools/tiffcmp.c +659 -0
  619. data/vendor/gitlab.com/libtiff/libtiff/tools/tiffcp.c +1913 -0
  620. data/vendor/gitlab.com/libtiff/libtiff/tools/tiffcrop.c +9231 -0
  621. data/vendor/gitlab.com/libtiff/libtiff/tools/tiffdither.c +347 -0
  622. data/vendor/gitlab.com/libtiff/libtiff/tools/tiffdump.c +889 -0
  623. data/vendor/gitlab.com/libtiff/libtiff/tools/tiffgt.c +486 -0
  624. data/vendor/gitlab.com/libtiff/libtiff/tools/tiffinfo.c +488 -0
  625. data/vendor/gitlab.com/libtiff/libtiff/tools/tiffinfoce.c +472 -0
  626. data/vendor/gitlab.com/libtiff/libtiff/tools/tiffmedian.c +918 -0
  627. data/vendor/gitlab.com/libtiff/libtiff/tools/tiffset.c +356 -0
  628. data/vendor/gitlab.com/libtiff/libtiff/tools/tiffsplit.c +305 -0
  629. metadata +692 -0
@@ -0,0 +1,707 @@
1
+ <pre>
2
+ DRAFT TIFF Technical Note #2 17-Mar-95
3
+ ============================
4
+
5
+ This Technical Note describes serious problems that have been found in
6
+ TIFF 6.0's design for embedding JPEG-compressed data in TIFF (Section 22
7
+ of the TIFF 6.0 spec of 3 June 1992). A replacement TIFF/JPEG
8
+ specification is given. Some corrections to Section 21 are also given.
9
+
10
+ To permit TIFF implementations to continue to read existing files, the 6.0
11
+ JPEG fields and tag values will remain reserved indefinitely. However,
12
+ TIFF writers are strongly discouraged from using the 6.0 JPEG design. It
13
+ is expected that the next full release of the TIFF specification will not
14
+ describe the old design at all, except to note that certain tag numbers
15
+ are reserved. The existing Section 22 will be replaced by the
16
+ specification text given in the second part of this Tech Note.
17
+
18
+
19
+ Problems in TIFF 6.0 JPEG
20
+ =========================
21
+
22
+ Abandoning a published spec is not a step to be taken lightly. This
23
+ section summarizes the reasons that have forced this decision.
24
+ TIFF 6.0's JPEG design suffers from design errors and limitations,
25
+ ambiguities, and unnecessary complexity.
26
+
27
+
28
+ Design errors and limitations
29
+ -----------------------------
30
+
31
+ The fundamental design error in the existing Section 22 is that JPEG's
32
+ various tables and parameters are broken out as separate fields which the
33
+ TIFF control logic must manage. This is bad software engineering: that
34
+ information should be treated as private to the JPEG codec
35
+ (compressor/decompressor). Worse, the fields themselves are specified
36
+ without sufficient thought for future extension and without regard to
37
+ well-established TIFF conventions. Here are some of the significant
38
+ problems:
39
+
40
+ * The JPEGxxTable fields do not store the table data directly in the
41
+ IFD/field structure; rather, the fields hold pointers to information
42
+ elsewhere in the file. This requires special-purpose code to be added to
43
+ *every* TIFF-manipulating application, whether it needs to decode JPEG
44
+ image data or not. Even a trivial TIFF editor, for example a program to
45
+ add an ImageDescription field to a TIFF file, must be explicitly aware of
46
+ the internal structure of the JPEG-related tables, or else it will probably
47
+ break the file. Every other auxiliary field in the TIFF spec contains
48
+ data, not pointers, and can be copied or relocated by standard code that
49
+ doesn't know anything about the particular field. This is a crucial
50
+ property of the TIFF format that must not be given up.
51
+
52
+ * To manipulate these fields, the TIFF control logic is required to know a
53
+ great deal about JPEG details, for example such arcana as how to compute
54
+ the length of a Huffman code table --- the length is not supplied in the
55
+ field structure and can only be found by inspecting the table contents.
56
+ This is again a violation of good software practice. Moreover, it will
57
+ prevent easy adoption of future JPEG extensions that might change these
58
+ low-level details.
59
+
60
+ * The design neglects the fact that baseline JPEG codecs support only two
61
+ sets of Huffman tables: it specifies a separate table for each color
62
+ component. This implies that encoders must waste space (by storing
63
+ duplicate Huffman tables) or else violate the well-founded TIFF convention
64
+ that prohibits duplicate pointers. Furthermore, baseline decoders must
65
+ test to find out which tables are identical, a waste of time and code
66
+ space.
67
+
68
+ * The JPEGInterchangeFormat field also violates TIFF's proscription against
69
+ duplicate pointers: the normal strip/tile pointers are expected to point
70
+ into the larger data area pointed to by JPEGInterchangeFormat. All TIFF
71
+ editing applications must be specifically aware of this relationship, since
72
+ they must maintain it or else delete the JPEGInterchangeFormat field. The
73
+ JPEGxxTables fields are also likely to point into the JPEGInterchangeFormat
74
+ area, creating additional pointer relationships that must be maintained.
75
+
76
+ * The JPEGQTables field is fixed at a byte per table entry; there is no
77
+ way to support 16-bit quantization values. This is a serious impediment
78
+ to extending TIFF to use 12-bit JPEG.
79
+
80
+ * The 6.0 design cannot support using different quantization tables in
81
+ different strips/tiles of an image (so as to encode some areas at higher
82
+ quality than others). Furthermore, since quantization tables are tied
83
+ one-for-one to color components, the design cannot support table switching
84
+ options that are likely to be added in future JPEG revisions.
85
+
86
+
87
+ Ambiguities
88
+ -----------
89
+
90
+ Several incompatible interpretations are possible for 6.0's treatment of
91
+ JPEG restart markers:
92
+
93
+ * It is unclear whether restart markers must be omitted at TIFF segment
94
+ (strip/tile) boundaries, or whether they are optional.
95
+
96
+ * It is unclear whether the segment size is required to be chosen as
97
+ a multiple of the specified restart interval (if any); perhaps the
98
+ JPEG codec is supposed to be reset at each segment boundary as if
99
+ there were a restart marker there, even if the boundary does not fall
100
+ at a multiple of the nominal restart interval.
101
+
102
+ * The spec fails to address the question of restart marker numbering:
103
+ do the numbers begin again within each segment, or not?
104
+
105
+ That last point is particularly nasty. If we make numbering begin again
106
+ within each segment, we give up the ability to impose a TIFF strip/tile
107
+ structure on an existing JPEG datastream with restarts (which was clearly a
108
+ goal of Section 22's authors). But the other choice interferes with random
109
+ access to the image segments: a reader must compute the first restart
110
+ number to be expected within a segment, and must have a way to reset its
111
+ JPEG decoder to expect a nonzero restart number first. This may not even
112
+ be possible with some JPEG chips.
113
+
114
+ The tile height restriction found on page 104 contradicts Section 15's
115
+ general description of tiles. For an image that is not vertically
116
+ downsampled, page 104 specifies a tile height of one MCU or 8 pixels; but
117
+ Section 15 requires tiles to be a multiple of 16 pixels high.
118
+
119
+ This Tech Note does not attempt to resolve these ambiguities, so
120
+ implementations that follow the 6.0 design should be aware that
121
+ inter-application compatibility problems are likely to arise.
122
+
123
+
124
+ Unnecessary complexity
125
+ ----------------------
126
+
127
+ The 6.0 design creates problems for implementations that need to keep the
128
+ JPEG codec separate from the TIFF control logic --- for example, consider
129
+ using a JPEG chip that was not designed specifically for TIFF. JPEG codecs
130
+ generally want to produce or consume a standard ISO JPEG datastream, not
131
+ just raw compressed data. (If they were to handle raw data, a separate
132
+ out-of-band mechanism would be needed to load tables into the codec.)
133
+ With such a codec, the TIFF control logic must parse JPEG markers emitted
134
+ by the codec to create the TIFF table fields (when writing) or synthesize
135
+ JPEG markers from the TIFF fields to feed the codec (when reading). This
136
+ means that the control logic must know a great deal more about JPEG details
137
+ than we would like. The parsing and reconstruction of the markers also
138
+ represents a fair amount of unnecessary work.
139
+
140
+ Quite a few implementors have proposed writing "TIFF/JPEG" files in which
141
+ a standard JPEG datastream is simply dumped into the file and pointed to
142
+ by JPEGInterchangeFormat. To avoid parsing the JPEG datastream, they
143
+ suggest not writing the JPEG auxiliary fields (JPEGxxTables etc) nor even
144
+ the basic TIFF strip/tile data pointers. This approach is incompatible
145
+ with implementations that handle the full TIFF 6.0 JPEG design, since they
146
+ will expect to find strip/tile pointers and auxiliary fields. Indeed this
147
+ is arguably not TIFF at all, since *all* TIFF-reading applications expect
148
+ to find strip or tile pointers. A subset implementation that is not
149
+ upward-compatible with the full spec is clearly unacceptable. However,
150
+ the frequency with which this idea has come up makes it clear that
151
+ implementors find the existing Section 22 too complex.
152
+
153
+
154
+ Overview of the solution
155
+ ========================
156
+
157
+ To solve these problems, we adopt a new design for embedding
158
+ JPEG-compressed data in TIFF files. The new design uses only complete,
159
+ uninterpreted ISO JPEG datastreams, so it should be much more forgiving of
160
+ extensions to the ISO standard. It should also be far easier to implement
161
+ using unmodified JPEG codecs.
162
+
163
+ To reduce overhead in multi-segment TIFF files, we allow JPEG overhead
164
+ tables to be stored just once in a JPEGTables auxiliary field. This
165
+ feature does not violate the integrity of the JPEG datastreams, because it
166
+ uses the notions of "tables-only datastreams" and "abbreviated image
167
+ datastreams" as defined by the ISO standard.
168
+
169
+ To prevent confusion with the old design, the new design is given a new
170
+ Compression tag value, Compression=7. Readers that need to handle
171
+ existing 6.0 JPEG files may read both old and new files, using whatever
172
+ interpretation of the 6.0 spec they did before. Compression tag value 6
173
+ and the field tag numbers defined by 6.0 section 22 will remain reserved
174
+ indefinitely, even though detailed descriptions of them will be dropped
175
+ from future editions of the TIFF specification.
176
+
177
+
178
+ Replacement TIFF/JPEG specification
179
+ ===================================
180
+
181
+ [This section of the Tech Note is expected to replace Section 22 in the
182
+ next release of the TIFF specification.]
183
+
184
+ This section describes TIFF compression scheme 7, a high-performance
185
+ compression method for continuous-tone images.
186
+
187
+ Introduction
188
+ ------------
189
+
190
+ This TIFF compression method uses the international standard for image
191
+ compression ISO/IEC 10918-1, usually known as "JPEG" (after the original
192
+ name of the standards committee, Joint Photographic Experts Group). JPEG
193
+ is a joint ISO/CCITT standard for compression of continuous-tone images.
194
+
195
+ The JPEG committee decided that because of the broad scope of the standard,
196
+ no one algorithmic procedure was able to satisfy the requirements of all
197
+ applications. Instead, the JPEG standard became a "toolkit" of multiple
198
+ algorithms and optional capabilities. Individual applications may select
199
+ a subset of the JPEG standard that meets their requirements.
200
+
201
+ The most important distinction among the JPEG processes is between lossy
202
+ and lossless compression. Lossy compression methods provide high
203
+ compression but allow only approximate reconstruction of the original
204
+ image. JPEG's lossy processes allow the encoder to trade off compressed
205
+ file size against reconstruction fidelity over a wide range. Typically,
206
+ 10:1 or more compression of full-color data can be obtained while keeping
207
+ the reconstructed image visually indistinguishable from the original. Much
208
+ higher compression ratios are possible if a low-quality reconstructed image
209
+ is acceptable. Lossless compression provides exact reconstruction of the
210
+ source data, but the achievable compression ratio is much lower than for
211
+ the lossy processes; JPEG's rather simple lossless process typically
212
+ achieves around 2:1 compression of full-color data.
213
+
214
+ The most widely implemented JPEG subset is the "baseline" JPEG process.
215
+ This provides lossy compression of 8-bit-per-channel data. Optional
216
+ extensions include 12-bit-per-channel data, arithmetic entropy coding for
217
+ better compression, and progressive/hierarchical representations. The
218
+ lossless process is an independent algorithm that has little in
219
+ common with the lossy processes.
220
+
221
+ It should be noted that the optional arithmetic-coding extension is subject
222
+ to several US and Japanese patents. To avoid patent problems, use of
223
+ arithmetic coding processes in TIFF files intended for inter-application
224
+ interchange is discouraged.
225
+
226
+ All of the JPEG processes are useful only for "continuous tone" data,
227
+ in which the difference between adjacent pixel values is usually small.
228
+ Low-bit-depth source data is not appropriate for JPEG compression, nor
229
+ are palette-color images good candidates. The JPEG processes work well
230
+ on grayscale and full-color data.
231
+
232
+ Describing the JPEG compression algorithms in sufficient detail to permit
233
+ implementation would require more space than we have here. Instead, we
234
+ refer the reader to the References section.
235
+
236
+
237
+ What data is being compressed?
238
+ ------------------------------
239
+
240
+ In lossy JPEG compression, it is customary to convert color source data
241
+ to YCbCr and then downsample it before JPEG compression. This gives
242
+ 2:1 data compression with hardly any visible image degradation, and it
243
+ permits additional space savings within the JPEG compression step proper.
244
+ However, these steps are not considered part of the ISO JPEG standard.
245
+ The ISO standard is "color blind": it accepts data in any color space.
246
+
247
+ For TIFF purposes, the JPEG compression tag is considered to represent the
248
+ ISO JPEG compression standard only. The ISO standard is applied to the
249
+ same data that would be stored in the TIFF file if no compression were
250
+ used. Therefore, if color conversion or downsampling are used, they must
251
+ be reflected in the regular TIFF fields; these steps are not considered to
252
+ be implicit in the JPEG compression tag value. PhotometricInterpretation
253
+ and related fields shall describe the color space actually stored in the
254
+ file. With the TIFF 6.0 field definitions, downsampling is permissible
255
+ only for YCbCr data, and it must correspond to the YCbCrSubSampling field.
256
+ (Note that the default value for this field is not 1,1; so the default for
257
+ YCbCr is to apply downsampling!) It is likely that future versions of TIFF
258
+ will provide additional PhotometricInterpretation values and a more general
259
+ way of defining subsampling, so as to allow more flexibility in
260
+ JPEG-compressed files. But that issue is not addressed in this Tech Note.
261
+
262
+ Implementors should note that many popular JPEG codecs
263
+ (compressor/decompressors) provide automatic color conversion and
264
+ downsampling, so that the application may supply full-size RGB data which
265
+ is nonetheless converted to downsampled YCbCr. This is an implementation
266
+ convenience which does not excuse the TIFF control layer from its
267
+ responsibility to know what is really going on. The
268
+ PhotometricInterpretation and subsampling fields written to the file must
269
+ describe what is actually in the file.
270
+
271
+ A JPEG-compressed TIFF file will typically have PhotometricInterpretation =
272
+ YCbCr and YCbCrSubSampling = [2,1] or [2,2], unless the source data was
273
+ grayscale or CMYK.
274
+
275
+
276
+ Basic representation of JPEG-compressed images
277
+ ----------------------------------------------
278
+
279
+ JPEG compression works in either strip-based or tile-based TIFF files.
280
+ Rather than repeating "strip or tile" constantly, we will use the term
281
+ "segment" to mean either a strip or a tile.
282
+
283
+ When the Compression field has the value 7, each image segment contains
284
+ a complete JPEG datastream which is valid according to the ISO JPEG
285
+ standard (ISO/IEC 10918-1). Any sequential JPEG process can be used,
286
+ including lossless JPEG, but progressive and hierarchical processes are not
287
+ supported. Since JPEG is useful only for continuous-tone images, the
288
+ PhotometricInterpretation of the image shall not be 3 (palette color) nor
289
+ 4 (transparency mask). The bit depth of the data is also restricted as
290
+ specified below.
291
+
292
+ Each image segment in a JPEG-compressed TIFF file shall contain a valid
293
+ JPEG datastream according to the ISO JPEG standard's rules for
294
+ interchange-format or abbreviated-image-format data. The datastream shall
295
+ contain a single JPEG frame storing that segment of the image. The
296
+ required JPEG markers within a segment are:
297
+ SOI (must appear at very beginning of segment)
298
+ SOFn
299
+ SOS (one for each scan, if there is more than one scan)
300
+ EOI (must appear at very end of segment)
301
+ The actual compressed data follows SOS; it may contain RSTn markers if DRI
302
+ is used.
303
+
304
+ Additional JPEG "tables and miscellaneous" markers may appear between SOI
305
+ and SOFn, between SOFn and SOS, and before each subsequent SOS if there is
306
+ more than one scan. These markers include:
307
+ DQT
308
+ DHT
309
+ DAC (not to appear unless arithmetic coding is used)
310
+ DRI
311
+ APPn (shall be ignored by TIFF readers)
312
+ COM (shall be ignored by TIFF readers)
313
+ DNL markers shall not be used in TIFF files. Readers should abort if any
314
+ other marker type is found, especially the JPEG reserved markers;
315
+ occurrence of such a marker is likely to indicate a JPEG extension.
316
+
317
+ The tables/miscellaneous markers may appear in any order. Readers are
318
+ cautioned that although the SOFn marker refers to DQT tables, JPEG does not
319
+ require those tables to precede the SOFn, only the SOS. Missing-table
320
+ checks should be made when SOS is reached.
321
+
322
+ If no JPEGTables field is used, then each image segment shall be a complete
323
+ JPEG interchange datastream. Each segment must define all the tables it
324
+ references. To allow readers to decode segments in any order, no segment
325
+ may rely on tables being carried over from a previous segment.
326
+
327
+ When a JPEGTables field is used, image segments may omit tables that have
328
+ been specified in the JPEGTables field. Further details appear below.
329
+
330
+ The SOFn marker shall be of type SOF0 for strict baseline JPEG data, of
331
+ type SOF1 for non-baseline lossy JPEG data, or of type SOF3 for lossless
332
+ JPEG data. (SOF9 or SOF11 would be used for arithmetic coding.) All
333
+ segments of a JPEG-compressed TIFF image shall use the same JPEG
334
+ compression process, in particular the same SOFn type.
335
+
336
+ The data precision field of the SOFn marker shall agree with the TIFF
337
+ BitsPerSample field. (Note that when PlanarConfiguration=1, this implies
338
+ that all components must have the same BitsPerSample value; when
339
+ PlanarConfiguration=2, different components could have different bit
340
+ depths.) For SOF0 only precision 8 is permitted; for SOF1, precision 8 or
341
+ 12 is permitted; for SOF3, precisions 2 to 16 are permitted.
342
+
343
+ The image dimensions given in the SOFn marker shall agree with the logical
344
+ dimensions of that particular strip or tile. For strip images, the SOFn
345
+ image width shall equal ImageWidth and the height shall equal RowsPerStrip,
346
+ except in the last strip; its SOFn height shall equal the number of rows
347
+ remaining in the ImageLength. (In other words, no padding data is counted
348
+ in the SOFn dimensions.) For tile images, each SOFn shall have width
349
+ TileWidth and height TileHeight; adding and removing any padding needed in
350
+ the edge tiles is the concern of some higher level of the TIFF software.
351
+ (The dimensional rules are slightly different when PlanarConfiguration=2,
352
+ as described below.)
353
+
354
+ The ISO JPEG standard only permits images up to 65535 pixels in width or
355
+ height, due to 2-byte fields in the SOFn markers. In TIFF, this limits
356
+ the size of an individual JPEG-compressed strip or tile, but the total
357
+ image size can be greater.
358
+
359
+ The number of components in the JPEG datastream shall equal SamplesPerPixel
360
+ for PlanarConfiguration=1, and shall be 1 for PlanarConfiguration=2. The
361
+ components shall be stored in the same order as they are described at the
362
+ TIFF field level. (This applies both to their order in the SOFn marker,
363
+ and to the order in which they are scanned if multiple JPEG scans are
364
+ used.) The component ID bytes are arbitrary so long as each component
365
+ within an image segment is given a distinct ID. To avoid any possible
366
+ confusion, we require that all segments of a TIFF image use the same ID
367
+ code for a given component.
368
+
369
+ In PlanarConfiguration 1, the sampling factors given in SOFn markers shall
370
+ agree with the sampling factors defined by the related TIFF fields (or with
371
+ the default values that are specified in the absence of those fields).
372
+
373
+ When DCT-based JPEG is used in a strip TIFF file, RowsPerStrip is required
374
+ to be a multiple of 8 times the largest vertical sampling factor, i.e., a
375
+ multiple of the height of an interleaved MCU. (For simplicity of
376
+ specification, we require this even if the data is not actually
377
+ interleaved.) For example, if YCbCrSubSampling = [2,2] then RowsPerStrip
378
+ must be a multiple of 16. An exception to this rule is made for
379
+ single-strip images (RowsPerStrip >= ImageLength): the exact value of
380
+ RowsPerStrip is unimportant in that case. This rule ensures that no data
381
+ padding is needed at the bottom of a strip, except perhaps the last strip.
382
+ Any padding required at the right edge of the image, or at the bottom of
383
+ the last strip, is expected to occur internally to the JPEG codec.
384
+
385
+ When DCT-based JPEG is used in a tiled TIFF file, TileLength is required
386
+ to be a multiple of 8 times the largest vertical sampling factor, i.e.,
387
+ a multiple of the height of an interleaved MCU; and TileWidth is required
388
+ to be a multiple of 8 times the largest horizontal sampling factor, i.e.,
389
+ a multiple of the width of an interleaved MCU. (For simplicity of
390
+ specification, we require this even if the data is not actually
391
+ interleaved.) All edge padding required will therefore occur in the course
392
+ of normal TIFF tile padding; it is not special to JPEG.
393
+
394
+ Lossless JPEG does not impose these constraints on strip and tile sizes,
395
+ since it is not DCT-based.
396
+
397
+ Note that within JPEG datastreams, multibyte values appear in the MSB-first
398
+ order specified by the JPEG standard, regardless of the byte ordering of
399
+ the surrounding TIFF file.
400
+
401
+
402
+ JPEGTables field
403
+ ----------------
404
+
405
+ The only auxiliary TIFF field added for Compression=7 is the optional
406
+ JPEGTables field. The purpose of JPEGTables is to predefine JPEG
407
+ quantization and/or Huffman tables for subsequent use by JPEG image
408
+ segments. When this is done, these rather bulky tables need not be
409
+ duplicated in each segment, thus saving space and processing time.
410
+ JPEGTables may be used even in a single-segment file, although there is no
411
+ space savings in that case.
412
+
413
+ JPEGTables:
414
+ Tag = 347 (15B.H)
415
+ Type = UNDEFINED
416
+ N = number of bytes in tables datastream, typically a few hundred
417
+ JPEGTables provides default JPEG quantization and/or Huffman tables which
418
+ are used whenever a segment datastream does not contain its own tables, as
419
+ specified below.
420
+
421
+ Notice that the JPEGTables field is required to have type code UNDEFINED,
422
+ not type code BYTE. This is to cue readers that expanding individual bytes
423
+ to short or long integers is not appropriate. A TIFF reader will generally
424
+ need to store the field value as an uninterpreted byte sequence until it is
425
+ fed to the JPEG decoder.
426
+
427
+ Multibyte quantities within the tables follow the ISO JPEG convention of
428
+ MSB-first storage, regardless of the byte ordering of the surrounding TIFF
429
+ file.
430
+
431
+ When the JPEGTables field is present, it shall contain a valid JPEG
432
+ "abbreviated table specification" datastream. This datastream shall begin
433
+ with SOI and end with EOI. It may contain zero or more JPEG "tables and
434
+ miscellaneous" markers, namely:
435
+ DQT
436
+ DHT
437
+ DAC (not to appear unless arithmetic coding is used)
438
+ DRI
439
+ APPn (shall be ignored by TIFF readers)
440
+ COM (shall be ignored by TIFF readers)
441
+ Since JPEG defines the SOI marker to reset the DAC and DRI state, these two
442
+ markers' values cannot be carried over into any image datastream, and thus
443
+ they are effectively no-ops in the JPEGTables field. To avoid confusion,
444
+ it is recommended that writers not place DAC or DRI markers in JPEGTables.
445
+ However readers must properly skip over them if they appear.
446
+
447
+ When JPEGTables is present, readers shall load the table specifications
448
+ contained in JPEGTables before processing image segment datastreams.
449
+ Image segments may simply refer to these preloaded tables without defining
450
+ them. An image segment can still define and use its own tables, subject to
451
+ the restrictions below.
452
+
453
+ An image segment may not redefine any table defined in JPEGTables. (This
454
+ restriction is imposed to allow readers to process image segments in random
455
+ order without having to reload JPEGTables between segments.) Therefore, use
456
+ of JPEGTables divides the available table slots into two groups: "global"
457
+ slots are defined in JPEGTables and may be used but not redefined by
458
+ segments; "local" slots are available for local definition and use in each
459
+ segment. To permit random access, a segment may not reference any local
460
+ tables that it does not itself define.
461
+
462
+
463
+ Special considerations for PlanarConfiguration 2
464
+ ------------------------------------------------
465
+
466
+ In PlanarConfiguration 2, each image segment contains data for only one
467
+ color component. To avoid confusing the JPEG codec, we wish the segments
468
+ to look like valid single-channel (i.e., grayscale) JPEG datastreams. This
469
+ means that different rules must be used for the SOFn parameters.
470
+
471
+ In PlanarConfiguration 2, the dimensions given in the SOFn of a subsampled
472
+ component shall be scaled down by the sampling factors compared to the SOFn
473
+ dimensions that would be used in PlanarConfiguration 1. This is necessary
474
+ to match the actual number of samples stored in that segment, so that the
475
+ JPEG codec doesn't complain about too much or too little data. In strip
476
+ TIFF files the computed dimensions may need to be rounded up to the next
477
+ integer; in tiled files, the restrictions on tile size make this case
478
+ impossible.
479
+
480
+ Furthermore, all SOFn sampling factors shall be given as 1. (This is
481
+ merely to avoid confusion, since the sampling factors in a single-channel
482
+ JPEG datastream have no real effect.)
483
+
484
+ Any downsampling will need to happen externally to the JPEG codec, since
485
+ JPEG sampling factors are defined with reference to the full-precision
486
+ component. In PlanarConfiguration 2, the JPEG codec will be working on
487
+ only one component at a time and thus will have no reference component to
488
+ downsample against.
489
+
490
+
491
+ Minimum requirements for TIFF/JPEG
492
+ ----------------------------------
493
+
494
+ ISO JPEG is a large and complex standard; most implementations support only
495
+ a subset of it. Here we define a "core" subset of TIFF/JPEG which readers
496
+ must support to claim TIFF/JPEG compatibility. For maximum
497
+ cross-application compatibility, we recommend that writers confine
498
+ themselves to this subset unless there is very good reason to do otherwise.
499
+
500
+ Use the ISO baseline JPEG process: 8-bit data precision, Huffman coding,
501
+ with no more than 2 DC and 2 AC Huffman tables. Note that this implies
502
+ BitsPerSample = 8 for each component. We recommend deviating from baseline
503
+ JPEG only if 12-bit data precision or lossless coding is required.
504
+
505
+ Use no subsampling (all JPEG sampling factors = 1) for color spaces other
506
+ than YCbCr. (This is, in fact, required with the TIFF 6.0 field
507
+ definitions, but may not be so in future revisions.) For YCbCr, use one of
508
+ the following choices:
509
+ YCbCrSubSampling field JPEG sampling factors
510
+ 1,1 1h1v, 1h1v, 1h1v
511
+ 2,1 2h1v, 1h1v, 1h1v
512
+ 2,2 (default value) 2h2v, 1h1v, 1h1v
513
+ We recommend that RGB source data be converted to YCbCr for best compression
514
+ results. Other source data colorspaces should probably be left alone.
515
+ Minimal readers need not support JPEG images with colorspaces other than
516
+ YCbCr and grayscale (PhotometricInterpretation = 6 or 1).
517
+
518
+ A minimal reader also need not support JPEG YCbCr images with nondefault
519
+ values of YCbCrCoefficients or YCbCrPositioning, nor with values of
520
+ ReferenceBlackWhite other than [0,255,128,255,128,255]. (These values
521
+ correspond to the RGB<=>YCbCr conversion specified by JFIF, which is widely
522
+ implemented in JPEG codecs.)
523
+
524
+ Writers are reminded that a ReferenceBlackWhite field *must* be included
525
+ when PhotometricInterpretation is YCbCr, because the default
526
+ ReferenceBlackWhite values are inappropriate for YCbCr.
527
+
528
+ If any subsampling is used, PlanarConfiguration=1 is preferred to avoid the
529
+ possibly-confusing requirements of PlanarConfiguration=2. In any case,
530
+ readers are not required to support PlanarConfiguration=2.
531
+
532
+ If possible, use a single interleaved scan in each image segment. This is
533
+ not legal JPEG if there are more than 4 SamplesPerPixel or if the sampling
534
+ factors are such that more than 10 blocks would be needed per MCU; in that
535
+ case, use a separate scan for each component. (The recommended color
536
+ spaces and sampling factors will not run into that restriction, so a
537
+ minimal reader need not support more than one scan per segment.)
538
+
539
+ To claim TIFF/JPEG compatibility, readers shall support multiple-strip TIFF
540
+ files and the optional JPEGTables field; it is not acceptable to read only
541
+ single-datastream files. Support for tiled TIFF files is strongly
542
+ recommended but not required.
543
+
544
+
545
+ Other recommendations for implementors
546
+ --------------------------------------
547
+
548
+ The TIFF tag Compression=7 guarantees only that the compressed data is
549
+ represented as ISO JPEG datastreams. Since JPEG is a large and evolving
550
+ standard, readers should apply careful error checking to the JPEG markers
551
+ to ensure that the compression process is within their capabilities. In
552
+ particular, to avoid being confused by future extensions to the JPEG
553
+ standard, it is important to abort if unknown marker codes are seen.
554
+
555
+ The point of requiring that all image segments use the same JPEG process is
556
+ to ensure that a reader need check only one segment to determine whether it
557
+ can handle the image. For example, consider a TIFF reader that has access
558
+ to fast but restricted JPEG hardware, as well as a slower, more general
559
+ software implementation. It is desirable to check only one image segment
560
+ to find out whether the fast hardware can be used. Thus, writers should
561
+ try to ensure that all segments of an image look as much "alike" as
562
+ possible: there should be no variation in scan layout, use of options such
563
+ as DRI, etc. Ideally, segments will be processed identically except
564
+ perhaps for using different local quantization or entropy-coding tables.
565
+
566
+ Writers should avoid including "noise" JPEG markers (COM and APPn markers).
567
+ Standard TIFF fields provide a better way to transport any non-image data.
568
+ Some JPEG codecs may change behavior if they see an APPn marker they
569
+ think they understand; since the TIFF spec requires these markers to be
570
+ ignored, this behavior is undesirable.
571
+
572
+ It is possible to convert an interchange-JPEG file (e.g., a JFIF file) to
573
+ TIFF simply by dropping the interchange datastream into a single strip.
574
+ (However, designers are reminded that the TIFF spec discourages huge
575
+ strips; splitting the image is somewhat more work but may give better
576
+ results.) Conversion from TIFF to interchange JPEG is more complex. A
577
+ strip-based TIFF/JPEG file can be converted fairly easily if all strips use
578
+ identical JPEG tables and no RSTn markers: just delete the overhead markers
579
+ and insert RSTn markers between strips. Converting tiled images is harder,
580
+ since the data will usually not be in the right order (unless the tiles are
581
+ only one MCU high). This can still be done losslessly, but it will require
582
+ undoing and redoing the entropy coding so that the DC coefficient
583
+ differences can be updated.
584
+
585
+ There is no default value for JPEGTables: standard TIFF files must define all
586
+ tables that they reference. For some closed systems in which many files will
587
+ have identical tables, it might make sense to define a default JPEGTables
588
+ value to avoid actually storing the tables. Or even better, invent a
589
+ private field selecting one of N default JPEGTables settings, so as to allow
590
+ for future expansion. Either of these must be regarded as a private
591
+ extension that will render the files unreadable by other applications.
592
+
593
+
594
+ References
595
+ ----------
596
+
597
+ [1] Wallace, Gregory K. "The JPEG Still Picture Compression Standard",
598
+ Communications of the ACM, April 1991 (vol. 34 no. 4), pp. 30-44.
599
+
600
+ This is the best short technical introduction to the JPEG algorithms.
601
+ It is a good overview but does not provide sufficiently detailed
602
+ information to write an implementation.
603
+
604
+ [2] Pennebaker, William B. and Mitchell, Joan L. "JPEG Still Image Data
605
+ Compression Standard", Van Nostrand Reinhold, 1993, ISBN 0-442-01272-1.
606
+ 638pp.
607
+
608
+ This textbook is by far the most complete exposition of JPEG in existence.
609
+ It includes the full text of the ISO JPEG standards (DIS 10918-1 and draft
610
+ DIS 10918-2). No would-be JPEG implementor should be without it.
611
+
612
+ [3] ISO/IEC IS 10918-1, "Digital Compression and Coding of Continuous-tone
613
+ Still Images, Part 1: Requirements and guidelines", February 1994.
614
+ ISO/IEC DIS 10918-2, "Digital Compression and Coding of Continuous-tone
615
+ Still Images, Part 2: Compliance testing", final approval expected 1994.
616
+
617
+ These are the official standards documents. Note that the Pennebaker and
618
+ Mitchell textbook is likely to be cheaper and more useful than the official
619
+ standards.
620
+
621
+
622
+ Changes to Section 21: YCbCr Images
623
+ ===================================
624
+
625
+ [This section of the Tech Note clarifies section 21 to make clear the
626
+ interpretation of image dimensions in a subsampled image. Furthermore,
627
+ the section is changed to allow the original image dimensions not to be
628
+ multiples of the sampling factors. This change is necessary to support use
629
+ of JPEG compression on odd-size images.]
630
+
631
+ Add the following paragraphs to the Section 21 introduction (p. 89),
632
+ just after the paragraph beginning "When a Class Y image is subsampled":
633
+
634
+ In a subsampled image, it is understood that all TIFF image
635
+ dimensions are measured in terms of the highest-resolution
636
+ (luminance) component. In particular, ImageWidth, ImageLength,
637
+ RowsPerStrip, TileWidth, TileLength, XResolution, and YResolution
638
+ are measured in luminance samples.
639
+
640
+ RowsPerStrip, TileWidth, and TileLength are constrained so that
641
+ there are an integral number of samples of each component in a
642
+ complete strip or tile. However, ImageWidth/ImageLength are not
643
+ constrained. If an odd-size image is to be converted to subsampled
644
+ format, the writer should pad the source data to a multiple of the
645
+ sampling factors by replication of the last column and/or row, then
646
+ downsample. The number of luminance samples actually stored in the
647
+ file will be a multiple of the sampling factors. Conversely,
648
+ readers must ignore any extra data (outside the specified image
649
+ dimensions) after upsampling.
650
+
651
+ When PlanarConfiguration=2, each strip or tile covers the same
652
+ image area despite subsampling; that is, the total number of strips
653
+ or tiles in the image is the same for each component. Therefore
654
+ strips or tiles of the subsampled components contain fewer samples
655
+ than strips or tiles of the luminance component.
656
+
657
+ If there are extra samples per pixel (see field ExtraSamples),
658
+ these data channels have the same number of samples as the
659
+ luminance component.
660
+
661
+ Rewrite the YCbCrSubSampling field description (pp 91-92) as follows
662
+ (largely to eliminate possibly-misleading references to
663
+ ImageWidth/ImageLength of the subsampled components):
664
+
665
+ (first paragraph unchanged)
666
+
667
+ The two elements of this field are defined as follows:
668
+
669
+ Short 0: ChromaSubsampleHoriz:
670
+
671
+ 1 = there are equal numbers of luma and chroma samples horizontally.
672
+
673
+ 2 = there are twice as many luma samples as chroma samples
674
+ horizontally.
675
+
676
+ 4 = there are four times as many luma samples as chroma samples
677
+ horizontally.
678
+
679
+ Short 1: ChromaSubsampleVert:
680
+
681
+ 1 = there are equal numbers of luma and chroma samples vertically.
682
+
683
+ 2 = there are twice as many luma samples as chroma samples
684
+ vertically.
685
+
686
+ 4 = there are four times as many luma samples as chroma samples
687
+ vertically.
688
+
689
+ ChromaSubsampleVert shall always be less than or equal to
690
+ ChromaSubsampleHoriz. Note that Cb and Cr have the same sampling
691
+ ratios.
692
+
693
+ In a strip TIFF file, RowsPerStrip is required to be an integer
694
+ multiple of ChromaSubSampleVert (unless RowsPerStrip >=
695
+ ImageLength, in which case its exact value is unimportant).
696
+ If ImageWidth and ImageLength are not multiples of
697
+ ChromaSubsampleHoriz and ChromaSubsampleVert respectively, then the
698
+ source data shall be padded to the next integer multiple of these
699
+ values before downsampling.
700
+
701
+ In a tiled TIFF file, TileWidth must be an integer multiple of
702
+ ChromaSubsampleHoriz and TileLength must be an integer multiple of
703
+ ChromaSubsampleVert. Padding will occur to tile boundaries.
704
+
705
+ The default values of this field are [ 2,2 ]. Thus, YCbCr data is
706
+ downsampled by default!
707
+ </pre>