laag-libtiff 4.0.9.0

Sign up to get free protection for your applications and to get access to all the features.
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>