epeg 1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (504) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +4 -0
  3. data/MANIFEST +5 -0
  4. data/TODO +1 -0
  5. data/epeg/.dockerignore +4 -0
  6. data/epeg/.gitignore +5 -0
  7. data/epeg/CMakeLists.txt +30 -0
  8. data/epeg/Dockerfile +23 -0
  9. data/epeg/Epeg.h +90 -0
  10. data/epeg/README.md +42 -0
  11. data/epeg/epeg_main.c +1642 -0
  12. data/epeg/epeg_private.h +85 -0
  13. data/epeg/example/.gitignore +1 -0
  14. data/epeg/example/CMakeLists.txt +20 -0
  15. data/epeg/example/example.jpg +0 -0
  16. data/epeg/example/rotatetest.c +29 -0
  17. data/epeg/example/scaletest.c +48 -0
  18. data/epeg/vendor/libjpeg-turbo-2.0.4/BUILDING.md +828 -0
  19. data/epeg/vendor/libjpeg-turbo-2.0.4/CMakeLists.txt +1420 -0
  20. data/epeg/vendor/libjpeg-turbo-2.0.4/ChangeLog.md +1494 -0
  21. data/epeg/vendor/libjpeg-turbo-2.0.4/LICENSE.md +132 -0
  22. data/epeg/vendor/libjpeg-turbo-2.0.4/README.ijg +277 -0
  23. data/epeg/vendor/libjpeg-turbo-2.0.4/README.md +356 -0
  24. data/epeg/vendor/libjpeg-turbo-2.0.4/cderror.h +137 -0
  25. data/epeg/vendor/libjpeg-turbo-2.0.4/cdjpeg.c +145 -0
  26. data/epeg/vendor/libjpeg-turbo-2.0.4/cdjpeg.h +157 -0
  27. data/epeg/vendor/libjpeg-turbo-2.0.4/change.log +315 -0
  28. data/epeg/vendor/libjpeg-turbo-2.0.4/cjpeg.1 +354 -0
  29. data/epeg/vendor/libjpeg-turbo-2.0.4/cjpeg.c +695 -0
  30. data/epeg/vendor/libjpeg-turbo-2.0.4/cmakescripts/BuildPackages.cmake +182 -0
  31. data/epeg/vendor/libjpeg-turbo-2.0.4/cmakescripts/GNUInstallDirs.cmake +416 -0
  32. data/epeg/vendor/libjpeg-turbo-2.0.4/cmakescripts/cmake_uninstall.cmake.in +24 -0
  33. data/epeg/vendor/libjpeg-turbo-2.0.4/cmakescripts/testclean.cmake +41 -0
  34. data/epeg/vendor/libjpeg-turbo-2.0.4/cmyk.h +61 -0
  35. data/epeg/vendor/libjpeg-turbo-2.0.4/coderules.txt +78 -0
  36. data/epeg/vendor/libjpeg-turbo-2.0.4/djpeg.1 +296 -0
  37. data/epeg/vendor/libjpeg-turbo-2.0.4/djpeg.c +822 -0
  38. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/annotated.html +104 -0
  39. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/bc_s.png +0 -0
  40. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/bdwn.png +0 -0
  41. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/classes.html +106 -0
  42. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/closed.png +0 -0
  43. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/doxygen-extra.css +3 -0
  44. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/doxygen.css +1184 -0
  45. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/doxygen.png +0 -0
  46. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/dynsections.js +97 -0
  47. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2blank.png +0 -0
  48. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2cl.png +0 -0
  49. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2doc.png +0 -0
  50. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2folderclosed.png +0 -0
  51. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2folderopen.png +0 -0
  52. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2lastnode.png +0 -0
  53. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2link.png +0 -0
  54. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2mlastnode.png +0 -0
  55. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2mnode.png +0 -0
  56. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2mo.png +0 -0
  57. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2node.png +0 -0
  58. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2ns.png +0 -0
  59. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2plastnode.png +0 -0
  60. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2pnode.png +0 -0
  61. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2splitbar.png +0 -0
  62. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2vertline.png +0 -0
  63. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/functions.html +134 -0
  64. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/functions_vars.html +134 -0
  65. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/group___turbo_j_p_e_g.html +2775 -0
  66. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/index.html +90 -0
  67. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/jquery.js +8 -0
  68. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/modules.html +95 -0
  69. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/nav_f.png +0 -0
  70. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/nav_g.png +0 -0
  71. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/nav_h.png +0 -0
  72. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/open.png +0 -0
  73. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_63.html +26 -0
  74. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_63.js +4 -0
  75. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_64.html +26 -0
  76. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_64.js +5 -0
  77. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_68.html +26 -0
  78. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_68.js +4 -0
  79. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_6e.html +26 -0
  80. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_6e.js +4 -0
  81. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_6f.html +26 -0
  82. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_6f.js +5 -0
  83. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_72.html +26 -0
  84. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_72.js +4 -0
  85. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_74.html +26 -0
  86. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_74.js +102 -0
  87. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_77.html +26 -0
  88. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_77.js +4 -0
  89. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_78.html +26 -0
  90. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_78.js +4 -0
  91. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_79.html +26 -0
  92. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_79.js +4 -0
  93. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/classes_74.html +26 -0
  94. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/classes_74.js +6 -0
  95. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/close.png +0 -0
  96. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/enums_74.html +26 -0
  97. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/enums_74.js +8 -0
  98. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/enumvalues_74.html +26 -0
  99. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/enumvalues_74.js +37 -0
  100. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/functions_74.html +26 -0
  101. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/functions_74.js +31 -0
  102. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/groups_74.html +26 -0
  103. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/groups_74.js +4 -0
  104. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/mag_sel.png +0 -0
  105. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/nomatches.html +12 -0
  106. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/search.css +271 -0
  107. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/search.js +809 -0
  108. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/search_l.png +0 -0
  109. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/search_m.png +0 -0
  110. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/search_r.png +0 -0
  111. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/typedefs_74.html +26 -0
  112. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/typedefs_74.js +5 -0
  113. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_63.html +26 -0
  114. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_63.js +4 -0
  115. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_64.html +26 -0
  116. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_64.js +5 -0
  117. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_68.html +26 -0
  118. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_68.js +4 -0
  119. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_6e.html +26 -0
  120. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_6e.js +4 -0
  121. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_6f.html +26 -0
  122. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_6f.js +5 -0
  123. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_72.html +26 -0
  124. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_72.js +4 -0
  125. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_74.html +26 -0
  126. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_74.js +10 -0
  127. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_77.html +26 -0
  128. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_77.js +4 -0
  129. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_78.html +26 -0
  130. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_78.js +4 -0
  131. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_79.html +26 -0
  132. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_79.js +4 -0
  133. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/structtjregion.html +186 -0
  134. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/structtjscalingfactor.html +148 -0
  135. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/structtjtransform.html +212 -0
  136. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/sync_off.png +0 -0
  137. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/sync_on.png +0 -0
  138. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/tab_a.png +0 -0
  139. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/tab_b.png +0 -0
  140. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/tab_h.png +0 -0
  141. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/tab_s.png +0 -0
  142. data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/tabs.css +60 -0
  143. data/epeg/vendor/libjpeg-turbo-2.0.4/doxygen-extra.css +3 -0
  144. data/epeg/vendor/libjpeg-turbo-2.0.4/doxygen.config +16 -0
  145. data/epeg/vendor/libjpeg-turbo-2.0.4/example.txt +464 -0
  146. data/epeg/vendor/libjpeg-turbo-2.0.4/jaricom.c +157 -0
  147. data/epeg/vendor/libjpeg-turbo-2.0.4/java/CMakeLists.txt +88 -0
  148. data/epeg/vendor/libjpeg-turbo-2.0.4/java/MANIFEST.MF +2 -0
  149. data/epeg/vendor/libjpeg-turbo-2.0.4/java/README +52 -0
  150. data/epeg/vendor/libjpeg-turbo-2.0.4/java/TJBench.java +1021 -0
  151. data/epeg/vendor/libjpeg-turbo-2.0.4/java/TJExample.java +405 -0
  152. data/epeg/vendor/libjpeg-turbo-2.0.4/java/TJUnitTest.java +960 -0
  153. data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/allclasses-frame.html +24 -0
  154. data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/allclasses-noframe.html +24 -0
  155. data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/constant-values.html +532 -0
  156. data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/deprecated-list.html +252 -0
  157. data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/help-doc.html +210 -0
  158. data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/index-all.html +1029 -0
  159. data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/index.html +71 -0
  160. data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/TJ.html +1356 -0
  161. data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/TJCompressor.html +926 -0
  162. data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/TJCustomFilter.html +241 -0
  163. data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/TJDecompressor.html +1255 -0
  164. data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/TJException.html +340 -0
  165. data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/TJScalingFactor.html +343 -0
  166. data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/TJTransform.html +751 -0
  167. data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/TJTransformer.html +421 -0
  168. data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/YUVImage.html +765 -0
  169. data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/package-frame.html +31 -0
  170. data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/package-summary.html +202 -0
  171. data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/package-tree.html +160 -0
  172. data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/overview-tree.html +164 -0
  173. data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/package-list +1 -0
  174. data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/resources/background.gif +0 -0
  175. data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/resources/tab.gif +0 -0
  176. data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/resources/titlebar.gif +0 -0
  177. data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/resources/titlebar_end.gif +0 -0
  178. data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/script.js +30 -0
  179. data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/serialized-form.html +176 -0
  180. data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/stylesheet.css +474 -0
  181. data/epeg/vendor/libjpeg-turbo-2.0.4/java/org/libjpegturbo/turbojpeg/TJ.java +584 -0
  182. data/epeg/vendor/libjpeg-turbo-2.0.4/java/org/libjpegturbo/turbojpeg/TJCompressor.java +677 -0
  183. data/epeg/vendor/libjpeg-turbo-2.0.4/java/org/libjpegturbo/turbojpeg/TJCustomFilter.java +76 -0
  184. data/epeg/vendor/libjpeg-turbo-2.0.4/java/org/libjpegturbo/turbojpeg/TJDecompressor.java +931 -0
  185. data/epeg/vendor/libjpeg-turbo-2.0.4/java/org/libjpegturbo/turbojpeg/TJException.java +78 -0
  186. data/epeg/vendor/libjpeg-turbo-2.0.4/java/org/libjpegturbo/turbojpeg/TJLoader-unix.java.in +59 -0
  187. data/epeg/vendor/libjpeg-turbo-2.0.4/java/org/libjpegturbo/turbojpeg/TJLoader-win.java.in +35 -0
  188. data/epeg/vendor/libjpeg-turbo-2.0.4/java/org/libjpegturbo/turbojpeg/TJScalingFactor.java +115 -0
  189. data/epeg/vendor/libjpeg-turbo-2.0.4/java/org/libjpegturbo/turbojpeg/TJTransform.java +227 -0
  190. data/epeg/vendor/libjpeg-turbo-2.0.4/java/org/libjpegturbo/turbojpeg/TJTransformer.java +163 -0
  191. data/epeg/vendor/libjpeg-turbo-2.0.4/java/org/libjpegturbo/turbojpeg/YUVImage.java +445 -0
  192. data/epeg/vendor/libjpeg-turbo-2.0.4/java/org_libjpegturbo_turbojpeg_TJ.h +129 -0
  193. data/epeg/vendor/libjpeg-turbo-2.0.4/java/org_libjpegturbo_turbojpeg_TJCompressor.h +101 -0
  194. data/epeg/vendor/libjpeg-turbo-2.0.4/java/org_libjpegturbo_turbojpeg_TJDecompressor.h +101 -0
  195. data/epeg/vendor/libjpeg-turbo-2.0.4/java/org_libjpegturbo_turbojpeg_TJTransformer.h +29 -0
  196. data/epeg/vendor/libjpeg-turbo-2.0.4/jcapimin.c +295 -0
  197. data/epeg/vendor/libjpeg-turbo-2.0.4/jcapistd.c +162 -0
  198. data/epeg/vendor/libjpeg-turbo-2.0.4/jcarith.c +932 -0
  199. data/epeg/vendor/libjpeg-turbo-2.0.4/jccoefct.c +449 -0
  200. data/epeg/vendor/libjpeg-turbo-2.0.4/jccolext.c +144 -0
  201. data/epeg/vendor/libjpeg-turbo-2.0.4/jccolor.c +710 -0
  202. data/epeg/vendor/libjpeg-turbo-2.0.4/jcdctmgr.c +721 -0
  203. data/epeg/vendor/libjpeg-turbo-2.0.4/jchuff.c +1096 -0
  204. data/epeg/vendor/libjpeg-turbo-2.0.4/jchuff.h +42 -0
  205. data/epeg/vendor/libjpeg-turbo-2.0.4/jcicc.c +105 -0
  206. data/epeg/vendor/libjpeg-turbo-2.0.4/jcinit.c +77 -0
  207. data/epeg/vendor/libjpeg-turbo-2.0.4/jcmainct.c +162 -0
  208. data/epeg/vendor/libjpeg-turbo-2.0.4/jcmarker.c +664 -0
  209. data/epeg/vendor/libjpeg-turbo-2.0.4/jcmaster.c +640 -0
  210. data/epeg/vendor/libjpeg-turbo-2.0.4/jcomapi.c +109 -0
  211. data/epeg/vendor/libjpeg-turbo-2.0.4/jconfig.h.in +73 -0
  212. data/epeg/vendor/libjpeg-turbo-2.0.4/jconfig.txt +143 -0
  213. data/epeg/vendor/libjpeg-turbo-2.0.4/jconfigint.h.in +31 -0
  214. data/epeg/vendor/libjpeg-turbo-2.0.4/jcparam.c +541 -0
  215. data/epeg/vendor/libjpeg-turbo-2.0.4/jcphuff.c +1105 -0
  216. data/epeg/vendor/libjpeg-turbo-2.0.4/jcprepct.c +351 -0
  217. data/epeg/vendor/libjpeg-turbo-2.0.4/jcsample.c +539 -0
  218. data/epeg/vendor/libjpeg-turbo-2.0.4/jcstest.c +126 -0
  219. data/epeg/vendor/libjpeg-turbo-2.0.4/jctrans.c +400 -0
  220. data/epeg/vendor/libjpeg-turbo-2.0.4/jdapimin.c +407 -0
  221. data/epeg/vendor/libjpeg-turbo-2.0.4/jdapistd.c +639 -0
  222. data/epeg/vendor/libjpeg-turbo-2.0.4/jdarith.c +773 -0
  223. data/epeg/vendor/libjpeg-turbo-2.0.4/jdatadst-tj.c +203 -0
  224. data/epeg/vendor/libjpeg-turbo-2.0.4/jdatadst.c +293 -0
  225. data/epeg/vendor/libjpeg-turbo-2.0.4/jdatasrc-tj.c +194 -0
  226. data/epeg/vendor/libjpeg-turbo-2.0.4/jdatasrc.c +295 -0
  227. data/epeg/vendor/libjpeg-turbo-2.0.4/jdcoefct.c +692 -0
  228. data/epeg/vendor/libjpeg-turbo-2.0.4/jdcoefct.h +82 -0
  229. data/epeg/vendor/libjpeg-turbo-2.0.4/jdcol565.c +384 -0
  230. data/epeg/vendor/libjpeg-turbo-2.0.4/jdcolext.c +143 -0
  231. data/epeg/vendor/libjpeg-turbo-2.0.4/jdcolor.c +883 -0
  232. data/epeg/vendor/libjpeg-turbo-2.0.4/jdct.h +208 -0
  233. data/epeg/vendor/libjpeg-turbo-2.0.4/jddctmgr.c +352 -0
  234. data/epeg/vendor/libjpeg-turbo-2.0.4/jdhuff.c +831 -0
  235. data/epeg/vendor/libjpeg-turbo-2.0.4/jdhuff.h +238 -0
  236. data/epeg/vendor/libjpeg-turbo-2.0.4/jdicc.c +171 -0
  237. data/epeg/vendor/libjpeg-turbo-2.0.4/jdinput.c +408 -0
  238. data/epeg/vendor/libjpeg-turbo-2.0.4/jdmainct.c +460 -0
  239. data/epeg/vendor/libjpeg-turbo-2.0.4/jdmainct.h +71 -0
  240. data/epeg/vendor/libjpeg-turbo-2.0.4/jdmarker.c +1377 -0
  241. data/epeg/vendor/libjpeg-turbo-2.0.4/jdmaster.c +737 -0
  242. data/epeg/vendor/libjpeg-turbo-2.0.4/jdmaster.h +28 -0
  243. data/epeg/vendor/libjpeg-turbo-2.0.4/jdmerge.c +617 -0
  244. data/epeg/vendor/libjpeg-turbo-2.0.4/jdmrg565.c +354 -0
  245. data/epeg/vendor/libjpeg-turbo-2.0.4/jdmrgext.c +184 -0
  246. data/epeg/vendor/libjpeg-turbo-2.0.4/jdphuff.c +687 -0
  247. data/epeg/vendor/libjpeg-turbo-2.0.4/jdpostct.c +294 -0
  248. data/epeg/vendor/libjpeg-turbo-2.0.4/jdsample.c +518 -0
  249. data/epeg/vendor/libjpeg-turbo-2.0.4/jdsample.h +50 -0
  250. data/epeg/vendor/libjpeg-turbo-2.0.4/jdtrans.c +155 -0
  251. data/epeg/vendor/libjpeg-turbo-2.0.4/jerror.c +251 -0
  252. data/epeg/vendor/libjpeg-turbo-2.0.4/jerror.h +316 -0
  253. data/epeg/vendor/libjpeg-turbo-2.0.4/jfdctflt.c +169 -0
  254. data/epeg/vendor/libjpeg-turbo-2.0.4/jfdctfst.c +227 -0
  255. data/epeg/vendor/libjpeg-turbo-2.0.4/jfdctint.c +288 -0
  256. data/epeg/vendor/libjpeg-turbo-2.0.4/jidctflt.c +240 -0
  257. data/epeg/vendor/libjpeg-turbo-2.0.4/jidctfst.c +371 -0
  258. data/epeg/vendor/libjpeg-turbo-2.0.4/jidctint.c +2627 -0
  259. data/epeg/vendor/libjpeg-turbo-2.0.4/jidctred.c +409 -0
  260. data/epeg/vendor/libjpeg-turbo-2.0.4/jinclude.h +88 -0
  261. data/epeg/vendor/libjpeg-turbo-2.0.4/jmemmgr.c +1179 -0
  262. data/epeg/vendor/libjpeg-turbo-2.0.4/jmemnobs.c +115 -0
  263. data/epeg/vendor/libjpeg-turbo-2.0.4/jmemsys.h +178 -0
  264. data/epeg/vendor/libjpeg-turbo-2.0.4/jmorecfg.h +421 -0
  265. data/epeg/vendor/libjpeg-turbo-2.0.4/jpeg_nbits_table.h +4098 -0
  266. data/epeg/vendor/libjpeg-turbo-2.0.4/jpegcomp.h +31 -0
  267. data/epeg/vendor/libjpeg-turbo-2.0.4/jpegint.h +368 -0
  268. data/epeg/vendor/libjpeg-turbo-2.0.4/jpeglib.h +1132 -0
  269. data/epeg/vendor/libjpeg-turbo-2.0.4/jpegtran.1 +295 -0
  270. data/epeg/vendor/libjpeg-turbo-2.0.4/jpegtran.c +601 -0
  271. data/epeg/vendor/libjpeg-turbo-2.0.4/jquant1.c +859 -0
  272. data/epeg/vendor/libjpeg-turbo-2.0.4/jquant2.c +1285 -0
  273. data/epeg/vendor/libjpeg-turbo-2.0.4/jsimd.h +117 -0
  274. data/epeg/vendor/libjpeg-turbo-2.0.4/jsimd_none.c +418 -0
  275. data/epeg/vendor/libjpeg-turbo-2.0.4/jsimddct.h +70 -0
  276. data/epeg/vendor/libjpeg-turbo-2.0.4/jstdhuff.c +143 -0
  277. data/epeg/vendor/libjpeg-turbo-2.0.4/jutils.c +133 -0
  278. data/epeg/vendor/libjpeg-turbo-2.0.4/jversion.h +52 -0
  279. data/epeg/vendor/libjpeg-turbo-2.0.4/libjpeg.map.in +11 -0
  280. data/epeg/vendor/libjpeg-turbo-2.0.4/libjpeg.txt +3144 -0
  281. data/epeg/vendor/libjpeg-turbo-2.0.4/md5/CMakeLists.txt +1 -0
  282. data/epeg/vendor/libjpeg-turbo-2.0.4/md5/md5.c +275 -0
  283. data/epeg/vendor/libjpeg-turbo-2.0.4/md5/md5.h +57 -0
  284. data/epeg/vendor/libjpeg-turbo-2.0.4/md5/md5cmp.c +59 -0
  285. data/epeg/vendor/libjpeg-turbo-2.0.4/md5/md5hl.c +125 -0
  286. data/epeg/vendor/libjpeg-turbo-2.0.4/rdbmp.c +689 -0
  287. data/epeg/vendor/libjpeg-turbo-2.0.4/rdcolmap.c +254 -0
  288. data/epeg/vendor/libjpeg-turbo-2.0.4/rdgif.c +39 -0
  289. data/epeg/vendor/libjpeg-turbo-2.0.4/rdjpgcom.1 +63 -0
  290. data/epeg/vendor/libjpeg-turbo-2.0.4/rdjpgcom.c +510 -0
  291. data/epeg/vendor/libjpeg-turbo-2.0.4/rdppm.c +766 -0
  292. data/epeg/vendor/libjpeg-turbo-2.0.4/rdrle.c +389 -0
  293. data/epeg/vendor/libjpeg-turbo-2.0.4/rdswitch.c +424 -0
  294. data/epeg/vendor/libjpeg-turbo-2.0.4/rdtarga.c +509 -0
  295. data/epeg/vendor/libjpeg-turbo-2.0.4/release/Distribution.xml.in +24 -0
  296. data/epeg/vendor/libjpeg-turbo-2.0.4/release/License.rtf +20 -0
  297. data/epeg/vendor/libjpeg-turbo-2.0.4/release/ReadMe.txt +5 -0
  298. data/epeg/vendor/libjpeg-turbo-2.0.4/release/Welcome.rtf +17 -0
  299. data/epeg/vendor/libjpeg-turbo-2.0.4/release/deb-control.in +31 -0
  300. data/epeg/vendor/libjpeg-turbo-2.0.4/release/installer.nsi.in +191 -0
  301. data/epeg/vendor/libjpeg-turbo-2.0.4/release/libjpeg.pc.in +10 -0
  302. data/epeg/vendor/libjpeg-turbo-2.0.4/release/libturbojpeg.pc.in +10 -0
  303. data/epeg/vendor/libjpeg-turbo-2.0.4/release/makecygwinpkg.in +66 -0
  304. data/epeg/vendor/libjpeg-turbo-2.0.4/release/makedpkg.in +115 -0
  305. data/epeg/vendor/libjpeg-turbo-2.0.4/release/makemacpkg.in +284 -0
  306. data/epeg/vendor/libjpeg-turbo-2.0.4/release/makerpm.in +30 -0
  307. data/epeg/vendor/libjpeg-turbo-2.0.4/release/makesrpm.in +48 -0
  308. data/epeg/vendor/libjpeg-turbo-2.0.4/release/maketarball.in +51 -0
  309. data/epeg/vendor/libjpeg-turbo-2.0.4/release/rpm.spec.in +221 -0
  310. data/epeg/vendor/libjpeg-turbo-2.0.4/release/uninstall.in +113 -0
  311. data/epeg/vendor/libjpeg-turbo-2.0.4/sharedlib/CMakeLists.txt +99 -0
  312. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/CMakeLists.txt +385 -0
  313. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/arm/jsimd.c +721 -0
  314. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/arm/jsimd_neon.S +2878 -0
  315. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/arm64/jsimd.c +798 -0
  316. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/arm64/jsimd_neon.S +3433 -0
  317. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/gas-preprocessor.in +1 -0
  318. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jccolext-avx2.asm +578 -0
  319. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jccolext-mmx.asm +476 -0
  320. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jccolext-sse2.asm +503 -0
  321. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jccolor-avx2.asm +121 -0
  322. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jccolor-mmx.asm +121 -0
  323. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jccolor-sse2.asm +120 -0
  324. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jcgray-avx2.asm +113 -0
  325. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jcgray-mmx.asm +113 -0
  326. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jcgray-sse2.asm +112 -0
  327. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jcgryext-avx2.asm +457 -0
  328. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jcgryext-mmx.asm +355 -0
  329. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jcgryext-sse2.asm +382 -0
  330. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jchuff-sse2.asm +424 -0
  331. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jcphuff-sse2.asm +660 -0
  332. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jcsample-avx2.asm +388 -0
  333. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jcsample-mmx.asm +324 -0
  334. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jcsample-sse2.asm +351 -0
  335. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdcolext-avx2.asm +515 -0
  336. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdcolext-mmx.asm +404 -0
  337. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdcolext-sse2.asm +458 -0
  338. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdcolor-avx2.asm +118 -0
  339. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdcolor-mmx.asm +117 -0
  340. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdcolor-sse2.asm +117 -0
  341. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdmerge-avx2.asm +136 -0
  342. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdmerge-mmx.asm +123 -0
  343. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdmerge-sse2.asm +135 -0
  344. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdmrgext-avx2.asm +575 -0
  345. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdmrgext-mmx.asm +460 -0
  346. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdmrgext-sse2.asm +517 -0
  347. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdsample-avx2.asm +760 -0
  348. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdsample-mmx.asm +731 -0
  349. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdsample-sse2.asm +724 -0
  350. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jfdctflt-3dn.asm +318 -0
  351. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jfdctflt-sse.asm +369 -0
  352. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jfdctfst-mmx.asm +395 -0
  353. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jfdctfst-sse2.asm +403 -0
  354. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jfdctint-avx2.asm +331 -0
  355. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jfdctint-mmx.asm +620 -0
  356. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jfdctint-sse2.asm +633 -0
  357. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jidctflt-3dn.asm +451 -0
  358. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jidctflt-sse.asm +571 -0
  359. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jidctflt-sse2.asm +497 -0
  360. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jidctfst-mmx.asm +499 -0
  361. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jidctfst-sse2.asm +501 -0
  362. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jidctint-avx2.asm +453 -0
  363. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jidctint-mmx.asm +851 -0
  364. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jidctint-sse2.asm +858 -0
  365. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jidctred-mmx.asm +704 -0
  366. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jidctred-sse2.asm +592 -0
  367. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jquant-3dn.asm +230 -0
  368. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jquant-mmx.asm +276 -0
  369. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jquant-sse.asm +208 -0
  370. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jquantf-sse2.asm +168 -0
  371. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jquanti-avx2.asm +188 -0
  372. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jquanti-sse2.asm +201 -0
  373. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jsimd.c +1253 -0
  374. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jsimdcpu.asm +135 -0
  375. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/jsimd.h +1083 -0
  376. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jccolext-mmi.c +483 -0
  377. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jccolor-mmi.c +148 -0
  378. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jcsample-mmi.c +100 -0
  379. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jcsample.h +28 -0
  380. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jdcolext-mmi.c +424 -0
  381. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jdcolor-mmi.c +139 -0
  382. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jdsample-mmi.c +245 -0
  383. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jfdctint-mmi.c +398 -0
  384. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jidctint-mmi.c +571 -0
  385. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jquanti-mmi.c +130 -0
  386. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jsimd.c +610 -0
  387. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jsimd_mmi.h +57 -0
  388. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/loongson-mmintrin.h +1324 -0
  389. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/mips/jsimd.c +1123 -0
  390. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/mips/jsimd_dspr2.S +4479 -0
  391. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/mips/jsimd_dspr2_asm.h +292 -0
  392. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/nasm/jcolsamp.inc +135 -0
  393. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/nasm/jdct.inc +31 -0
  394. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/nasm/jpeg_nbits_table.inc +4097 -0
  395. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/nasm/jsimdcfg.inc +93 -0
  396. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/nasm/jsimdcfg.inc.h +131 -0
  397. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/nasm/jsimdext.inc +479 -0
  398. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jccolext-altivec.c +269 -0
  399. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jccolor-altivec.c +116 -0
  400. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jcgray-altivec.c +111 -0
  401. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jcgryext-altivec.c +228 -0
  402. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jcsample-altivec.c +159 -0
  403. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jcsample.h +28 -0
  404. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jdcolext-altivec.c +276 -0
  405. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jdcolor-altivec.c +106 -0
  406. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jdmerge-altivec.c +130 -0
  407. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jdmrgext-altivec.c +329 -0
  408. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jdsample-altivec.c +400 -0
  409. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jfdctfst-altivec.c +154 -0
  410. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jfdctint-altivec.c +258 -0
  411. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jidctfst-altivec.c +255 -0
  412. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jidctint-altivec.c +357 -0
  413. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jquanti-altivec.c +250 -0
  414. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jsimd.c +872 -0
  415. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jsimd_altivec.h +98 -0
  416. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jccolext-avx2.asm +558 -0
  417. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jccolext-sse2.asm +483 -0
  418. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jccolor-avx2.asm +121 -0
  419. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jccolor-sse2.asm +120 -0
  420. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jcgray-avx2.asm +113 -0
  421. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jcgray-sse2.asm +112 -0
  422. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jcgryext-avx2.asm +437 -0
  423. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jcgryext-sse2.asm +362 -0
  424. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jchuff-sse2.asm +346 -0
  425. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jcphuff-sse2.asm +637 -0
  426. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jcsample-avx2.asm +366 -0
  427. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jcsample-sse2.asm +329 -0
  428. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jdcolext-avx2.asm +495 -0
  429. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jdcolext-sse2.asm +438 -0
  430. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jdcolor-avx2.asm +118 -0
  431. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jdcolor-sse2.asm +117 -0
  432. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jdmerge-avx2.asm +136 -0
  433. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jdmerge-sse2.asm +135 -0
  434. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jdmrgext-avx2.asm +593 -0
  435. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jdmrgext-sse2.asm +535 -0
  436. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jdsample-avx2.asm +695 -0
  437. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jdsample-sse2.asm +664 -0
  438. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jfdctflt-sse.asm +355 -0
  439. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jfdctfst-sse2.asm +389 -0
  440. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jfdctint-avx2.asm +320 -0
  441. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jfdctint-sse2.asm +619 -0
  442. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jidctflt-sse2.asm +481 -0
  443. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jidctfst-sse2.asm +490 -0
  444. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jidctint-avx2.asm +417 -0
  445. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jidctint-sse2.asm +846 -0
  446. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jidctred-sse2.asm +573 -0
  447. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jquantf-sse2.asm +154 -0
  448. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jquanti-avx2.asm +162 -0
  449. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jquanti-sse2.asm +187 -0
  450. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jsimd.c +1076 -0
  451. data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jsimdcpu.asm +86 -0
  452. data/epeg/vendor/libjpeg-turbo-2.0.4/structure.txt +904 -0
  453. data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/nightshot_iso_100.bmp +0 -0
  454. data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/nightshot_iso_100.txt +25 -0
  455. data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/test.scan +5 -0
  456. data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/test1.icc +0 -0
  457. data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/test1.icc.txt +20 -0
  458. data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/test2.icc +0 -0
  459. data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/test2.icc.txt +20 -0
  460. data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/testimgari.jpg +0 -0
  461. data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/testimgint.jpg +0 -0
  462. data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/testorig.jpg +0 -0
  463. data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/testorig.ppm +4 -0
  464. data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/testorig12.jpg +0 -0
  465. data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/vgl_5674_0098.bmp +0 -0
  466. data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/vgl_6434_0018a.bmp +0 -0
  467. data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/vgl_6548_0026a.bmp +0 -0
  468. data/epeg/vendor/libjpeg-turbo-2.0.4/tjbench.c +1031 -0
  469. data/epeg/vendor/libjpeg-turbo-2.0.4/tjbenchtest.in +256 -0
  470. data/epeg/vendor/libjpeg-turbo-2.0.4/tjbenchtest.java.in +215 -0
  471. data/epeg/vendor/libjpeg-turbo-2.0.4/tjexample.c +396 -0
  472. data/epeg/vendor/libjpeg-turbo-2.0.4/tjexampletest.in +149 -0
  473. data/epeg/vendor/libjpeg-turbo-2.0.4/tjexampletest.java.in +151 -0
  474. data/epeg/vendor/libjpeg-turbo-2.0.4/tjunittest.c +931 -0
  475. data/epeg/vendor/libjpeg-turbo-2.0.4/tjutil.c +70 -0
  476. data/epeg/vendor/libjpeg-turbo-2.0.4/tjutil.h +47 -0
  477. data/epeg/vendor/libjpeg-turbo-2.0.4/transupp.c +1628 -0
  478. data/epeg/vendor/libjpeg-turbo-2.0.4/transupp.h +210 -0
  479. data/epeg/vendor/libjpeg-turbo-2.0.4/turbojpeg-jni.c +1246 -0
  480. data/epeg/vendor/libjpeg-turbo-2.0.4/turbojpeg-mapfile +65 -0
  481. data/epeg/vendor/libjpeg-turbo-2.0.4/turbojpeg-mapfile.jni +101 -0
  482. data/epeg/vendor/libjpeg-turbo-2.0.4/turbojpeg.c +2152 -0
  483. data/epeg/vendor/libjpeg-turbo-2.0.4/turbojpeg.h +1744 -0
  484. data/epeg/vendor/libjpeg-turbo-2.0.4/usage.txt +635 -0
  485. data/epeg/vendor/libjpeg-turbo-2.0.4/win/jconfig.h.in +34 -0
  486. data/epeg/vendor/libjpeg-turbo-2.0.4/win/jpeg62-memsrcdst.def +108 -0
  487. data/epeg/vendor/libjpeg-turbo-2.0.4/win/jpeg62.def +106 -0
  488. data/epeg/vendor/libjpeg-turbo-2.0.4/win/jpeg7-memsrcdst.def +110 -0
  489. data/epeg/vendor/libjpeg-turbo-2.0.4/win/jpeg7.def +108 -0
  490. data/epeg/vendor/libjpeg-turbo-2.0.4/win/jpeg8.def +111 -0
  491. data/epeg/vendor/libjpeg-turbo-2.0.4/wizard.txt +212 -0
  492. data/epeg/vendor/libjpeg-turbo-2.0.4/wrbmp.c +558 -0
  493. data/epeg/vendor/libjpeg-turbo-2.0.4/wrgif.c +413 -0
  494. data/epeg/vendor/libjpeg-turbo-2.0.4/wrjpgcom.1 +103 -0
  495. data/epeg/vendor/libjpeg-turbo-2.0.4/wrjpgcom.c +591 -0
  496. data/epeg/vendor/libjpeg-turbo-2.0.4/wrppm.c +365 -0
  497. data/epeg/vendor/libjpeg-turbo-2.0.4/wrrle.c +309 -0
  498. data/epeg/vendor/libjpeg-turbo-2.0.4/wrtarga.c +261 -0
  499. data/epeg.c +131 -0
  500. data/epeg.gemspec +18 -0
  501. data/extconf.rb +80 -0
  502. data/test.jpg +0 -0
  503. data/test.rb +42 -0
  504. metadata +546 -0
@@ -0,0 +1,1132 @@
1
+ /*
2
+ * jpeglib.h
3
+ *
4
+ * This file was part of the Independent JPEG Group's software:
5
+ * Copyright (C) 1991-1998, Thomas G. Lane.
6
+ * Modified 2002-2009 by Guido Vollbeding.
7
+ * libjpeg-turbo Modifications:
8
+ * Copyright (C) 2009-2011, 2013-2014, 2016-2017, D. R. Commander.
9
+ * Copyright (C) 2015, Google, Inc.
10
+ * For conditions of distribution and use, see the accompanying README.ijg
11
+ * file.
12
+ *
13
+ * This file defines the application interface for the JPEG library.
14
+ * Most applications using the library need only include this file,
15
+ * and perhaps jerror.h if they want to know the exact error codes.
16
+ */
17
+
18
+ #ifndef JPEGLIB_H
19
+ #define JPEGLIB_H
20
+
21
+ /*
22
+ * First we include the configuration files that record how this
23
+ * installation of the JPEG library is set up. jconfig.h can be
24
+ * generated automatically for many systems. jmorecfg.h contains
25
+ * manual configuration options that most people need not worry about.
26
+ */
27
+
28
+ #ifndef JCONFIG_INCLUDED /* in case jinclude.h already did */
29
+ #include "jconfig.h" /* widely used configuration options */
30
+ #endif
31
+ #include "jmorecfg.h" /* seldom changed options */
32
+
33
+
34
+ #ifdef __cplusplus
35
+ #ifndef DONT_USE_EXTERN_C
36
+ extern "C" {
37
+ #endif
38
+ #endif
39
+
40
+
41
+ /* Various constants determining the sizes of things.
42
+ * All of these are specified by the JPEG standard, so don't change them
43
+ * if you want to be compatible.
44
+ */
45
+
46
+ #define DCTSIZE 8 /* The basic DCT block is 8x8 samples */
47
+ #define DCTSIZE2 64 /* DCTSIZE squared; # of elements in a block */
48
+ #define NUM_QUANT_TBLS 4 /* Quantization tables are numbered 0..3 */
49
+ #define NUM_HUFF_TBLS 4 /* Huffman tables are numbered 0..3 */
50
+ #define NUM_ARITH_TBLS 16 /* Arith-coding tables are numbered 0..15 */
51
+ #define MAX_COMPS_IN_SCAN 4 /* JPEG limit on # of components in one scan */
52
+ #define MAX_SAMP_FACTOR 4 /* JPEG limit on sampling factors */
53
+ /* Unfortunately, some bozo at Adobe saw no reason to be bound by the standard;
54
+ * the PostScript DCT filter can emit files with many more than 10 blocks/MCU.
55
+ * If you happen to run across such a file, you can up D_MAX_BLOCKS_IN_MCU
56
+ * to handle it. We even let you do this from the jconfig.h file. However,
57
+ * we strongly discourage changing C_MAX_BLOCKS_IN_MCU; just because Adobe
58
+ * sometimes emits noncompliant files doesn't mean you should too.
59
+ */
60
+ #define C_MAX_BLOCKS_IN_MCU 10 /* compressor's limit on blocks per MCU */
61
+ #ifndef D_MAX_BLOCKS_IN_MCU
62
+ #define D_MAX_BLOCKS_IN_MCU 10 /* decompressor's limit on blocks per MCU */
63
+ #endif
64
+
65
+
66
+ /* Data structures for images (arrays of samples and of DCT coefficients).
67
+ */
68
+
69
+ typedef JSAMPLE *JSAMPROW; /* ptr to one image row of pixel samples. */
70
+ typedef JSAMPROW *JSAMPARRAY; /* ptr to some rows (a 2-D sample array) */
71
+ typedef JSAMPARRAY *JSAMPIMAGE; /* a 3-D sample array: top index is color */
72
+
73
+ typedef JCOEF JBLOCK[DCTSIZE2]; /* one block of coefficients */
74
+ typedef JBLOCK *JBLOCKROW; /* pointer to one row of coefficient blocks */
75
+ typedef JBLOCKROW *JBLOCKARRAY; /* a 2-D array of coefficient blocks */
76
+ typedef JBLOCKARRAY *JBLOCKIMAGE; /* a 3-D array of coefficient blocks */
77
+
78
+ typedef JCOEF *JCOEFPTR; /* useful in a couple of places */
79
+
80
+
81
+ /* Types for JPEG compression parameters and working tables. */
82
+
83
+
84
+ /* DCT coefficient quantization tables. */
85
+
86
+ typedef struct {
87
+ /* This array gives the coefficient quantizers in natural array order
88
+ * (not the zigzag order in which they are stored in a JPEG DQT marker).
89
+ * CAUTION: IJG versions prior to v6a kept this array in zigzag order.
90
+ */
91
+ UINT16 quantval[DCTSIZE2]; /* quantization step for each coefficient */
92
+ /* This field is used only during compression. It's initialized FALSE when
93
+ * the table is created, and set TRUE when it's been output to the file.
94
+ * You could suppress output of a table by setting this to TRUE.
95
+ * (See jpeg_suppress_tables for an example.)
96
+ */
97
+ boolean sent_table; /* TRUE when table has been output */
98
+ } JQUANT_TBL;
99
+
100
+
101
+ /* Huffman coding tables. */
102
+
103
+ typedef struct {
104
+ /* These two fields directly represent the contents of a JPEG DHT marker */
105
+ UINT8 bits[17]; /* bits[k] = # of symbols with codes of */
106
+ /* length k bits; bits[0] is unused */
107
+ UINT8 huffval[256]; /* The symbols, in order of incr code length */
108
+ /* This field is used only during compression. It's initialized FALSE when
109
+ * the table is created, and set TRUE when it's been output to the file.
110
+ * You could suppress output of a table by setting this to TRUE.
111
+ * (See jpeg_suppress_tables for an example.)
112
+ */
113
+ boolean sent_table; /* TRUE when table has been output */
114
+ } JHUFF_TBL;
115
+
116
+
117
+ /* Basic info about one component (color channel). */
118
+
119
+ typedef struct {
120
+ /* These values are fixed over the whole image. */
121
+ /* For compression, they must be supplied by parameter setup; */
122
+ /* for decompression, they are read from the SOF marker. */
123
+ int component_id; /* identifier for this component (0..255) */
124
+ int component_index; /* its index in SOF or cinfo->comp_info[] */
125
+ int h_samp_factor; /* horizontal sampling factor (1..4) */
126
+ int v_samp_factor; /* vertical sampling factor (1..4) */
127
+ int quant_tbl_no; /* quantization table selector (0..3) */
128
+ /* These values may vary between scans. */
129
+ /* For compression, they must be supplied by parameter setup; */
130
+ /* for decompression, they are read from the SOS marker. */
131
+ /* The decompressor output side may not use these variables. */
132
+ int dc_tbl_no; /* DC entropy table selector (0..3) */
133
+ int ac_tbl_no; /* AC entropy table selector (0..3) */
134
+
135
+ /* Remaining fields should be treated as private by applications. */
136
+
137
+ /* These values are computed during compression or decompression startup: */
138
+ /* Component's size in DCT blocks.
139
+ * Any dummy blocks added to complete an MCU are not counted; therefore
140
+ * these values do not depend on whether a scan is interleaved or not.
141
+ */
142
+ JDIMENSION width_in_blocks;
143
+ JDIMENSION height_in_blocks;
144
+ /* Size of a DCT block in samples. Always DCTSIZE for compression.
145
+ * For decompression this is the size of the output from one DCT block,
146
+ * reflecting any scaling we choose to apply during the IDCT step.
147
+ * Values from 1 to 16 are supported.
148
+ * Note that different components may receive different IDCT scalings.
149
+ */
150
+ #if JPEG_LIB_VERSION >= 70
151
+ int DCT_h_scaled_size;
152
+ int DCT_v_scaled_size;
153
+ #else
154
+ int DCT_scaled_size;
155
+ #endif
156
+ /* The downsampled dimensions are the component's actual, unpadded number
157
+ * of samples at the main buffer (preprocessing/compression interface), thus
158
+ * downsampled_width = ceil(image_width * Hi/Hmax)
159
+ * and similarly for height. For decompression, IDCT scaling is included, so
160
+ * downsampled_width = ceil(image_width * Hi/Hmax * DCT_[h_]scaled_size/DCTSIZE)
161
+ */
162
+ JDIMENSION downsampled_width; /* actual width in samples */
163
+ JDIMENSION downsampled_height; /* actual height in samples */
164
+ /* This flag is used only for decompression. In cases where some of the
165
+ * components will be ignored (eg grayscale output from YCbCr image),
166
+ * we can skip most computations for the unused components.
167
+ */
168
+ boolean component_needed; /* do we need the value of this component? */
169
+
170
+ /* These values are computed before starting a scan of the component. */
171
+ /* The decompressor output side may not use these variables. */
172
+ int MCU_width; /* number of blocks per MCU, horizontally */
173
+ int MCU_height; /* number of blocks per MCU, vertically */
174
+ int MCU_blocks; /* MCU_width * MCU_height */
175
+ int MCU_sample_width; /* MCU width in samples, MCU_width*DCT_[h_]scaled_size */
176
+ int last_col_width; /* # of non-dummy blocks across in last MCU */
177
+ int last_row_height; /* # of non-dummy blocks down in last MCU */
178
+
179
+ /* Saved quantization table for component; NULL if none yet saved.
180
+ * See jdinput.c comments about the need for this information.
181
+ * This field is currently used only for decompression.
182
+ */
183
+ JQUANT_TBL *quant_table;
184
+
185
+ /* Private per-component storage for DCT or IDCT subsystem. */
186
+ void *dct_table;
187
+ } jpeg_component_info;
188
+
189
+
190
+ /* The script for encoding a multiple-scan file is an array of these: */
191
+
192
+ typedef struct {
193
+ int comps_in_scan; /* number of components encoded in this scan */
194
+ int component_index[MAX_COMPS_IN_SCAN]; /* their SOF/comp_info[] indexes */
195
+ int Ss, Se; /* progressive JPEG spectral selection parms */
196
+ int Ah, Al; /* progressive JPEG successive approx. parms */
197
+ } jpeg_scan_info;
198
+
199
+ /* The decompressor can save APPn and COM markers in a list of these: */
200
+
201
+ typedef struct jpeg_marker_struct *jpeg_saved_marker_ptr;
202
+
203
+ struct jpeg_marker_struct {
204
+ jpeg_saved_marker_ptr next; /* next in list, or NULL */
205
+ UINT8 marker; /* marker code: JPEG_COM, or JPEG_APP0+n */
206
+ unsigned int original_length; /* # bytes of data in the file */
207
+ unsigned int data_length; /* # bytes of data saved at data[] */
208
+ JOCTET *data; /* the data contained in the marker */
209
+ /* the marker length word is not counted in data_length or original_length */
210
+ };
211
+
212
+ /* Known color spaces. */
213
+
214
+ #define JCS_EXTENSIONS 1
215
+ #define JCS_ALPHA_EXTENSIONS 1
216
+
217
+ typedef enum {
218
+ JCS_UNKNOWN, /* error/unspecified */
219
+ JCS_GRAYSCALE, /* monochrome */
220
+ JCS_RGB, /* red/green/blue as specified by the RGB_RED,
221
+ RGB_GREEN, RGB_BLUE, and RGB_PIXELSIZE macros */
222
+ JCS_YCbCr, /* Y/Cb/Cr (also known as YUV) */
223
+ JCS_CMYK, /* C/M/Y/K */
224
+ JCS_YCCK, /* Y/Cb/Cr/K */
225
+ JCS_EXT_RGB, /* red/green/blue */
226
+ JCS_EXT_RGBX, /* red/green/blue/x */
227
+ JCS_EXT_BGR, /* blue/green/red */
228
+ JCS_EXT_BGRX, /* blue/green/red/x */
229
+ JCS_EXT_XBGR, /* x/blue/green/red */
230
+ JCS_EXT_XRGB, /* x/red/green/blue */
231
+ /* When out_color_space it set to JCS_EXT_RGBX, JCS_EXT_BGRX, JCS_EXT_XBGR,
232
+ or JCS_EXT_XRGB during decompression, the X byte is undefined, and in
233
+ order to ensure the best performance, libjpeg-turbo can set that byte to
234
+ whatever value it wishes. Use the following colorspace constants to
235
+ ensure that the X byte is set to 0xFF, so that it can be interpreted as an
236
+ opaque alpha channel. */
237
+ JCS_EXT_RGBA, /* red/green/blue/alpha */
238
+ JCS_EXT_BGRA, /* blue/green/red/alpha */
239
+ JCS_EXT_ABGR, /* alpha/blue/green/red */
240
+ JCS_EXT_ARGB, /* alpha/red/green/blue */
241
+ JCS_RGB565 /* 5-bit red/6-bit green/5-bit blue */
242
+ } J_COLOR_SPACE;
243
+
244
+ /* DCT/IDCT algorithm options. */
245
+
246
+ typedef enum {
247
+ JDCT_ISLOW, /* slow but accurate integer algorithm */
248
+ JDCT_IFAST, /* faster, less accurate integer method */
249
+ JDCT_FLOAT /* floating-point: accurate, fast on fast HW */
250
+ } J_DCT_METHOD;
251
+
252
+ #ifndef JDCT_DEFAULT /* may be overridden in jconfig.h */
253
+ #define JDCT_DEFAULT JDCT_ISLOW
254
+ #endif
255
+ #ifndef JDCT_FASTEST /* may be overridden in jconfig.h */
256
+ #define JDCT_FASTEST JDCT_IFAST
257
+ #endif
258
+
259
+ /* Dithering options for decompression. */
260
+
261
+ typedef enum {
262
+ JDITHER_NONE, /* no dithering */
263
+ JDITHER_ORDERED, /* simple ordered dither */
264
+ JDITHER_FS /* Floyd-Steinberg error diffusion dither */
265
+ } J_DITHER_MODE;
266
+
267
+
268
+ /* Common fields between JPEG compression and decompression master structs. */
269
+
270
+ #define jpeg_common_fields \
271
+ struct jpeg_error_mgr *err; /* Error handler module */ \
272
+ struct jpeg_memory_mgr *mem; /* Memory manager module */ \
273
+ struct jpeg_progress_mgr *progress; /* Progress monitor, or NULL if none */ \
274
+ void *client_data; /* Available for use by application */ \
275
+ boolean is_decompressor; /* So common code can tell which is which */ \
276
+ int global_state /* For checking call sequence validity */
277
+
278
+ /* Routines that are to be used by both halves of the library are declared
279
+ * to receive a pointer to this structure. There are no actual instances of
280
+ * jpeg_common_struct, only of jpeg_compress_struct and jpeg_decompress_struct.
281
+ */
282
+ struct jpeg_common_struct {
283
+ jpeg_common_fields; /* Fields common to both master struct types */
284
+ /* Additional fields follow in an actual jpeg_compress_struct or
285
+ * jpeg_decompress_struct. All three structs must agree on these
286
+ * initial fields! (This would be a lot cleaner in C++.)
287
+ */
288
+ };
289
+
290
+ typedef struct jpeg_common_struct *j_common_ptr;
291
+ typedef struct jpeg_compress_struct *j_compress_ptr;
292
+ typedef struct jpeg_decompress_struct *j_decompress_ptr;
293
+
294
+
295
+ /* Master record for a compression instance */
296
+
297
+ struct jpeg_compress_struct {
298
+ jpeg_common_fields; /* Fields shared with jpeg_decompress_struct */
299
+
300
+ /* Destination for compressed data */
301
+ struct jpeg_destination_mgr *dest;
302
+
303
+ /* Description of source image --- these fields must be filled in by
304
+ * outer application before starting compression. in_color_space must
305
+ * be correct before you can even call jpeg_set_defaults().
306
+ */
307
+
308
+ JDIMENSION image_width; /* input image width */
309
+ JDIMENSION image_height; /* input image height */
310
+ int input_components; /* # of color components in input image */
311
+ J_COLOR_SPACE in_color_space; /* colorspace of input image */
312
+
313
+ double input_gamma; /* image gamma of input image */
314
+
315
+ /* Compression parameters --- these fields must be set before calling
316
+ * jpeg_start_compress(). We recommend calling jpeg_set_defaults() to
317
+ * initialize everything to reasonable defaults, then changing anything
318
+ * the application specifically wants to change. That way you won't get
319
+ * burnt when new parameters are added. Also note that there are several
320
+ * helper routines to simplify changing parameters.
321
+ */
322
+
323
+ #if JPEG_LIB_VERSION >= 70
324
+ unsigned int scale_num, scale_denom; /* fraction by which to scale image */
325
+
326
+ JDIMENSION jpeg_width; /* scaled JPEG image width */
327
+ JDIMENSION jpeg_height; /* scaled JPEG image height */
328
+ /* Dimensions of actual JPEG image that will be written to file,
329
+ * derived from input dimensions by scaling factors above.
330
+ * These fields are computed by jpeg_start_compress().
331
+ * You can also use jpeg_calc_jpeg_dimensions() to determine these values
332
+ * in advance of calling jpeg_start_compress().
333
+ */
334
+ #endif
335
+
336
+ int data_precision; /* bits of precision in image data */
337
+
338
+ int num_components; /* # of color components in JPEG image */
339
+ J_COLOR_SPACE jpeg_color_space; /* colorspace of JPEG image */
340
+
341
+ jpeg_component_info *comp_info;
342
+ /* comp_info[i] describes component that appears i'th in SOF */
343
+
344
+ JQUANT_TBL *quant_tbl_ptrs[NUM_QUANT_TBLS];
345
+ #if JPEG_LIB_VERSION >= 70
346
+ int q_scale_factor[NUM_QUANT_TBLS];
347
+ #endif
348
+ /* ptrs to coefficient quantization tables, or NULL if not defined,
349
+ * and corresponding scale factors (percentage, initialized 100).
350
+ */
351
+
352
+ JHUFF_TBL *dc_huff_tbl_ptrs[NUM_HUFF_TBLS];
353
+ JHUFF_TBL *ac_huff_tbl_ptrs[NUM_HUFF_TBLS];
354
+ /* ptrs to Huffman coding tables, or NULL if not defined */
355
+
356
+ UINT8 arith_dc_L[NUM_ARITH_TBLS]; /* L values for DC arith-coding tables */
357
+ UINT8 arith_dc_U[NUM_ARITH_TBLS]; /* U values for DC arith-coding tables */
358
+ UINT8 arith_ac_K[NUM_ARITH_TBLS]; /* Kx values for AC arith-coding tables */
359
+
360
+ int num_scans; /* # of entries in scan_info array */
361
+ const jpeg_scan_info *scan_info; /* script for multi-scan file, or NULL */
362
+ /* The default value of scan_info is NULL, which causes a single-scan
363
+ * sequential JPEG file to be emitted. To create a multi-scan file,
364
+ * set num_scans and scan_info to point to an array of scan definitions.
365
+ */
366
+
367
+ boolean raw_data_in; /* TRUE=caller supplies downsampled data */
368
+ boolean arith_code; /* TRUE=arithmetic coding, FALSE=Huffman */
369
+ boolean optimize_coding; /* TRUE=optimize entropy encoding parms */
370
+ boolean CCIR601_sampling; /* TRUE=first samples are cosited */
371
+ #if JPEG_LIB_VERSION >= 70
372
+ boolean do_fancy_downsampling; /* TRUE=apply fancy downsampling */
373
+ #endif
374
+ int smoothing_factor; /* 1..100, or 0 for no input smoothing */
375
+ J_DCT_METHOD dct_method; /* DCT algorithm selector */
376
+
377
+ /* The restart interval can be specified in absolute MCUs by setting
378
+ * restart_interval, or in MCU rows by setting restart_in_rows
379
+ * (in which case the correct restart_interval will be figured
380
+ * for each scan).
381
+ */
382
+ unsigned int restart_interval; /* MCUs per restart, or 0 for no restart */
383
+ int restart_in_rows; /* if > 0, MCU rows per restart interval */
384
+
385
+ /* Parameters controlling emission of special markers. */
386
+
387
+ boolean write_JFIF_header; /* should a JFIF marker be written? */
388
+ UINT8 JFIF_major_version; /* What to write for the JFIF version number */
389
+ UINT8 JFIF_minor_version;
390
+ /* These three values are not used by the JPEG code, merely copied */
391
+ /* into the JFIF APP0 marker. density_unit can be 0 for unknown, */
392
+ /* 1 for dots/inch, or 2 for dots/cm. Note that the pixel aspect */
393
+ /* ratio is defined by X_density/Y_density even when density_unit=0. */
394
+ UINT8 density_unit; /* JFIF code for pixel size units */
395
+ UINT16 X_density; /* Horizontal pixel density */
396
+ UINT16 Y_density; /* Vertical pixel density */
397
+ boolean write_Adobe_marker; /* should an Adobe marker be written? */
398
+
399
+ /* State variable: index of next scanline to be written to
400
+ * jpeg_write_scanlines(). Application may use this to control its
401
+ * processing loop, e.g., "while (next_scanline < image_height)".
402
+ */
403
+
404
+ JDIMENSION next_scanline; /* 0 .. image_height-1 */
405
+
406
+ /* Remaining fields are known throughout compressor, but generally
407
+ * should not be touched by a surrounding application.
408
+ */
409
+
410
+ /*
411
+ * These fields are computed during compression startup
412
+ */
413
+ boolean progressive_mode; /* TRUE if scan script uses progressive mode */
414
+ int max_h_samp_factor; /* largest h_samp_factor */
415
+ int max_v_samp_factor; /* largest v_samp_factor */
416
+
417
+ #if JPEG_LIB_VERSION >= 70
418
+ int min_DCT_h_scaled_size; /* smallest DCT_h_scaled_size of any component */
419
+ int min_DCT_v_scaled_size; /* smallest DCT_v_scaled_size of any component */
420
+ #endif
421
+
422
+ JDIMENSION total_iMCU_rows; /* # of iMCU rows to be input to coef ctlr */
423
+ /* The coefficient controller receives data in units of MCU rows as defined
424
+ * for fully interleaved scans (whether the JPEG file is interleaved or not).
425
+ * There are v_samp_factor * DCTSIZE sample rows of each component in an
426
+ * "iMCU" (interleaved MCU) row.
427
+ */
428
+
429
+ /*
430
+ * These fields are valid during any one scan.
431
+ * They describe the components and MCUs actually appearing in the scan.
432
+ */
433
+ int comps_in_scan; /* # of JPEG components in this scan */
434
+ jpeg_component_info *cur_comp_info[MAX_COMPS_IN_SCAN];
435
+ /* *cur_comp_info[i] describes component that appears i'th in SOS */
436
+
437
+ JDIMENSION MCUs_per_row; /* # of MCUs across the image */
438
+ JDIMENSION MCU_rows_in_scan; /* # of MCU rows in the image */
439
+
440
+ int blocks_in_MCU; /* # of DCT blocks per MCU */
441
+ int MCU_membership[C_MAX_BLOCKS_IN_MCU];
442
+ /* MCU_membership[i] is index in cur_comp_info of component owning */
443
+ /* i'th block in an MCU */
444
+
445
+ int Ss, Se, Ah, Al; /* progressive JPEG parameters for scan */
446
+
447
+ #if JPEG_LIB_VERSION >= 80
448
+ int block_size; /* the basic DCT block size: 1..16 */
449
+ const int *natural_order; /* natural-order position array */
450
+ int lim_Se; /* min( Se, DCTSIZE2-1 ) */
451
+ #endif
452
+
453
+ /*
454
+ * Links to compression subobjects (methods and private variables of modules)
455
+ */
456
+ struct jpeg_comp_master *master;
457
+ struct jpeg_c_main_controller *main;
458
+ struct jpeg_c_prep_controller *prep;
459
+ struct jpeg_c_coef_controller *coef;
460
+ struct jpeg_marker_writer *marker;
461
+ struct jpeg_color_converter *cconvert;
462
+ struct jpeg_downsampler *downsample;
463
+ struct jpeg_forward_dct *fdct;
464
+ struct jpeg_entropy_encoder *entropy;
465
+ jpeg_scan_info *script_space; /* workspace for jpeg_simple_progression */
466
+ int script_space_size;
467
+ };
468
+
469
+
470
+ /* Master record for a decompression instance */
471
+
472
+ struct jpeg_decompress_struct {
473
+ jpeg_common_fields; /* Fields shared with jpeg_compress_struct */
474
+
475
+ /* Source of compressed data */
476
+ struct jpeg_source_mgr *src;
477
+
478
+ /* Basic description of image --- filled in by jpeg_read_header(). */
479
+ /* Application may inspect these values to decide how to process image. */
480
+
481
+ JDIMENSION image_width; /* nominal image width (from SOF marker) */
482
+ JDIMENSION image_height; /* nominal image height */
483
+ int num_components; /* # of color components in JPEG image */
484
+ J_COLOR_SPACE jpeg_color_space; /* colorspace of JPEG image */
485
+
486
+ /* Decompression processing parameters --- these fields must be set before
487
+ * calling jpeg_start_decompress(). Note that jpeg_read_header() initializes
488
+ * them to default values.
489
+ */
490
+
491
+ J_COLOR_SPACE out_color_space; /* colorspace for output */
492
+
493
+ unsigned int scale_num, scale_denom; /* fraction by which to scale image */
494
+
495
+ double output_gamma; /* image gamma wanted in output */
496
+
497
+ boolean buffered_image; /* TRUE=multiple output passes */
498
+ boolean raw_data_out; /* TRUE=downsampled data wanted */
499
+
500
+ J_DCT_METHOD dct_method; /* IDCT algorithm selector */
501
+ boolean do_fancy_upsampling; /* TRUE=apply fancy upsampling */
502
+ boolean do_block_smoothing; /* TRUE=apply interblock smoothing */
503
+
504
+ boolean quantize_colors; /* TRUE=colormapped output wanted */
505
+ /* the following are ignored if not quantize_colors: */
506
+ J_DITHER_MODE dither_mode; /* type of color dithering to use */
507
+ boolean two_pass_quantize; /* TRUE=use two-pass color quantization */
508
+ int desired_number_of_colors; /* max # colors to use in created colormap */
509
+ /* these are significant only in buffered-image mode: */
510
+ boolean enable_1pass_quant; /* enable future use of 1-pass quantizer */
511
+ boolean enable_external_quant;/* enable future use of external colormap */
512
+ boolean enable_2pass_quant; /* enable future use of 2-pass quantizer */
513
+
514
+ /* Description of actual output image that will be returned to application.
515
+ * These fields are computed by jpeg_start_decompress().
516
+ * You can also use jpeg_calc_output_dimensions() to determine these values
517
+ * in advance of calling jpeg_start_decompress().
518
+ */
519
+
520
+ JDIMENSION output_width; /* scaled image width */
521
+ JDIMENSION output_height; /* scaled image height */
522
+ int out_color_components; /* # of color components in out_color_space */
523
+ int output_components; /* # of color components returned */
524
+ /* output_components is 1 (a colormap index) when quantizing colors;
525
+ * otherwise it equals out_color_components.
526
+ */
527
+ int rec_outbuf_height; /* min recommended height of scanline buffer */
528
+ /* If the buffer passed to jpeg_read_scanlines() is less than this many rows
529
+ * high, space and time will be wasted due to unnecessary data copying.
530
+ * Usually rec_outbuf_height will be 1 or 2, at most 4.
531
+ */
532
+
533
+ /* When quantizing colors, the output colormap is described by these fields.
534
+ * The application can supply a colormap by setting colormap non-NULL before
535
+ * calling jpeg_start_decompress; otherwise a colormap is created during
536
+ * jpeg_start_decompress or jpeg_start_output.
537
+ * The map has out_color_components rows and actual_number_of_colors columns.
538
+ */
539
+ int actual_number_of_colors; /* number of entries in use */
540
+ JSAMPARRAY colormap; /* The color map as a 2-D pixel array */
541
+
542
+ /* State variables: these variables indicate the progress of decompression.
543
+ * The application may examine these but must not modify them.
544
+ */
545
+
546
+ /* Row index of next scanline to be read from jpeg_read_scanlines().
547
+ * Application may use this to control its processing loop, e.g.,
548
+ * "while (output_scanline < output_height)".
549
+ */
550
+ JDIMENSION output_scanline; /* 0 .. output_height-1 */
551
+
552
+ /* Current input scan number and number of iMCU rows completed in scan.
553
+ * These indicate the progress of the decompressor input side.
554
+ */
555
+ int input_scan_number; /* Number of SOS markers seen so far */
556
+ JDIMENSION input_iMCU_row; /* Number of iMCU rows completed */
557
+
558
+ /* The "output scan number" is the notional scan being displayed by the
559
+ * output side. The decompressor will not allow output scan/row number
560
+ * to get ahead of input scan/row, but it can fall arbitrarily far behind.
561
+ */
562
+ int output_scan_number; /* Nominal scan number being displayed */
563
+ JDIMENSION output_iMCU_row; /* Number of iMCU rows read */
564
+
565
+ /* Current progression status. coef_bits[c][i] indicates the precision
566
+ * with which component c's DCT coefficient i (in zigzag order) is known.
567
+ * It is -1 when no data has yet been received, otherwise it is the point
568
+ * transform (shift) value for the most recent scan of the coefficient
569
+ * (thus, 0 at completion of the progression).
570
+ * This pointer is NULL when reading a non-progressive file.
571
+ */
572
+ int (*coef_bits)[DCTSIZE2]; /* -1 or current Al value for each coef */
573
+
574
+ /* Internal JPEG parameters --- the application usually need not look at
575
+ * these fields. Note that the decompressor output side may not use
576
+ * any parameters that can change between scans.
577
+ */
578
+
579
+ /* Quantization and Huffman tables are carried forward across input
580
+ * datastreams when processing abbreviated JPEG datastreams.
581
+ */
582
+
583
+ JQUANT_TBL *quant_tbl_ptrs[NUM_QUANT_TBLS];
584
+ /* ptrs to coefficient quantization tables, or NULL if not defined */
585
+
586
+ JHUFF_TBL *dc_huff_tbl_ptrs[NUM_HUFF_TBLS];
587
+ JHUFF_TBL *ac_huff_tbl_ptrs[NUM_HUFF_TBLS];
588
+ /* ptrs to Huffman coding tables, or NULL if not defined */
589
+
590
+ /* These parameters are never carried across datastreams, since they
591
+ * are given in SOF/SOS markers or defined to be reset by SOI.
592
+ */
593
+
594
+ int data_precision; /* bits of precision in image data */
595
+
596
+ jpeg_component_info *comp_info;
597
+ /* comp_info[i] describes component that appears i'th in SOF */
598
+
599
+ #if JPEG_LIB_VERSION >= 80
600
+ boolean is_baseline; /* TRUE if Baseline SOF0 encountered */
601
+ #endif
602
+ boolean progressive_mode; /* TRUE if SOFn specifies progressive mode */
603
+ boolean arith_code; /* TRUE=arithmetic coding, FALSE=Huffman */
604
+
605
+ UINT8 arith_dc_L[NUM_ARITH_TBLS]; /* L values for DC arith-coding tables */
606
+ UINT8 arith_dc_U[NUM_ARITH_TBLS]; /* U values for DC arith-coding tables */
607
+ UINT8 arith_ac_K[NUM_ARITH_TBLS]; /* Kx values for AC arith-coding tables */
608
+
609
+ unsigned int restart_interval; /* MCUs per restart interval, or 0 for no restart */
610
+
611
+ /* These fields record data obtained from optional markers recognized by
612
+ * the JPEG library.
613
+ */
614
+ boolean saw_JFIF_marker; /* TRUE iff a JFIF APP0 marker was found */
615
+ /* Data copied from JFIF marker; only valid if saw_JFIF_marker is TRUE: */
616
+ UINT8 JFIF_major_version; /* JFIF version number */
617
+ UINT8 JFIF_minor_version;
618
+ UINT8 density_unit; /* JFIF code for pixel size units */
619
+ UINT16 X_density; /* Horizontal pixel density */
620
+ UINT16 Y_density; /* Vertical pixel density */
621
+ boolean saw_Adobe_marker; /* TRUE iff an Adobe APP14 marker was found */
622
+ UINT8 Adobe_transform; /* Color transform code from Adobe marker */
623
+
624
+ boolean CCIR601_sampling; /* TRUE=first samples are cosited */
625
+
626
+ /* Aside from the specific data retained from APPn markers known to the
627
+ * library, the uninterpreted contents of any or all APPn and COM markers
628
+ * can be saved in a list for examination by the application.
629
+ */
630
+ jpeg_saved_marker_ptr marker_list; /* Head of list of saved markers */
631
+
632
+ /* Remaining fields are known throughout decompressor, but generally
633
+ * should not be touched by a surrounding application.
634
+ */
635
+
636
+ /*
637
+ * These fields are computed during decompression startup
638
+ */
639
+ int max_h_samp_factor; /* largest h_samp_factor */
640
+ int max_v_samp_factor; /* largest v_samp_factor */
641
+
642
+ #if JPEG_LIB_VERSION >= 70
643
+ int min_DCT_h_scaled_size; /* smallest DCT_h_scaled_size of any component */
644
+ int min_DCT_v_scaled_size; /* smallest DCT_v_scaled_size of any component */
645
+ #else
646
+ int min_DCT_scaled_size; /* smallest DCT_scaled_size of any component */
647
+ #endif
648
+
649
+ JDIMENSION total_iMCU_rows; /* # of iMCU rows in image */
650
+ /* The coefficient controller's input and output progress is measured in
651
+ * units of "iMCU" (interleaved MCU) rows. These are the same as MCU rows
652
+ * in fully interleaved JPEG scans, but are used whether the scan is
653
+ * interleaved or not. We define an iMCU row as v_samp_factor DCT block
654
+ * rows of each component. Therefore, the IDCT output contains
655
+ * v_samp_factor*DCT_[v_]scaled_size sample rows of a component per iMCU row.
656
+ */
657
+
658
+ JSAMPLE *sample_range_limit; /* table for fast range-limiting */
659
+
660
+ /*
661
+ * These fields are valid during any one scan.
662
+ * They describe the components and MCUs actually appearing in the scan.
663
+ * Note that the decompressor output side must not use these fields.
664
+ */
665
+ int comps_in_scan; /* # of JPEG components in this scan */
666
+ jpeg_component_info *cur_comp_info[MAX_COMPS_IN_SCAN];
667
+ /* *cur_comp_info[i] describes component that appears i'th in SOS */
668
+
669
+ JDIMENSION MCUs_per_row; /* # of MCUs across the image */
670
+ JDIMENSION MCU_rows_in_scan; /* # of MCU rows in the image */
671
+
672
+ int blocks_in_MCU; /* # of DCT blocks per MCU */
673
+ int MCU_membership[D_MAX_BLOCKS_IN_MCU];
674
+ /* MCU_membership[i] is index in cur_comp_info of component owning */
675
+ /* i'th block in an MCU */
676
+
677
+ int Ss, Se, Ah, Al; /* progressive JPEG parameters for scan */
678
+
679
+ #if JPEG_LIB_VERSION >= 80
680
+ /* These fields are derived from Se of first SOS marker.
681
+ */
682
+ int block_size; /* the basic DCT block size: 1..16 */
683
+ const int *natural_order; /* natural-order position array for entropy decode */
684
+ int lim_Se; /* min( Se, DCTSIZE2-1 ) for entropy decode */
685
+ #endif
686
+
687
+ /* This field is shared between entropy decoder and marker parser.
688
+ * It is either zero or the code of a JPEG marker that has been
689
+ * read from the data source, but has not yet been processed.
690
+ */
691
+ int unread_marker;
692
+
693
+ /*
694
+ * Links to decompression subobjects (methods, private variables of modules)
695
+ */
696
+ struct jpeg_decomp_master *master;
697
+ struct jpeg_d_main_controller *main;
698
+ struct jpeg_d_coef_controller *coef;
699
+ struct jpeg_d_post_controller *post;
700
+ struct jpeg_input_controller *inputctl;
701
+ struct jpeg_marker_reader *marker;
702
+ struct jpeg_entropy_decoder *entropy;
703
+ struct jpeg_inverse_dct *idct;
704
+ struct jpeg_upsampler *upsample;
705
+ struct jpeg_color_deconverter *cconvert;
706
+ struct jpeg_color_quantizer *cquantize;
707
+ };
708
+
709
+
710
+ /* "Object" declarations for JPEG modules that may be supplied or called
711
+ * directly by the surrounding application.
712
+ * As with all objects in the JPEG library, these structs only define the
713
+ * publicly visible methods and state variables of a module. Additional
714
+ * private fields may exist after the public ones.
715
+ */
716
+
717
+
718
+ /* Error handler object */
719
+
720
+ struct jpeg_error_mgr {
721
+ /* Error exit handler: does not return to caller */
722
+ void (*error_exit) (j_common_ptr cinfo);
723
+ /* Conditionally emit a trace or warning message */
724
+ void (*emit_message) (j_common_ptr cinfo, int msg_level);
725
+ /* Routine that actually outputs a trace or error message */
726
+ void (*output_message) (j_common_ptr cinfo);
727
+ /* Format a message string for the most recent JPEG error or message */
728
+ void (*format_message) (j_common_ptr cinfo, char *buffer);
729
+ #define JMSG_LENGTH_MAX 200 /* recommended size of format_message buffer */
730
+ /* Reset error state variables at start of a new image */
731
+ void (*reset_error_mgr) (j_common_ptr cinfo);
732
+
733
+ /* The message ID code and any parameters are saved here.
734
+ * A message can have one string parameter or up to 8 int parameters.
735
+ */
736
+ int msg_code;
737
+ #define JMSG_STR_PARM_MAX 80
738
+ union {
739
+ int i[8];
740
+ char s[JMSG_STR_PARM_MAX];
741
+ } msg_parm;
742
+
743
+ /* Standard state variables for error facility */
744
+
745
+ int trace_level; /* max msg_level that will be displayed */
746
+
747
+ /* For recoverable corrupt-data errors, we emit a warning message,
748
+ * but keep going unless emit_message chooses to abort. emit_message
749
+ * should count warnings in num_warnings. The surrounding application
750
+ * can check for bad data by seeing if num_warnings is nonzero at the
751
+ * end of processing.
752
+ */
753
+ long num_warnings; /* number of corrupt-data warnings */
754
+
755
+ /* These fields point to the table(s) of error message strings.
756
+ * An application can change the table pointer to switch to a different
757
+ * message list (typically, to change the language in which errors are
758
+ * reported). Some applications may wish to add additional error codes
759
+ * that will be handled by the JPEG library error mechanism; the second
760
+ * table pointer is used for this purpose.
761
+ *
762
+ * First table includes all errors generated by JPEG library itself.
763
+ * Error code 0 is reserved for a "no such error string" message.
764
+ */
765
+ const char * const *jpeg_message_table; /* Library errors */
766
+ int last_jpeg_message; /* Table contains strings 0..last_jpeg_message */
767
+ /* Second table can be added by application (see cjpeg/djpeg for example).
768
+ * It contains strings numbered first_addon_message..last_addon_message.
769
+ */
770
+ const char * const *addon_message_table; /* Non-library errors */
771
+ int first_addon_message; /* code for first string in addon table */
772
+ int last_addon_message; /* code for last string in addon table */
773
+ };
774
+
775
+
776
+ /* Progress monitor object */
777
+
778
+ struct jpeg_progress_mgr {
779
+ void (*progress_monitor) (j_common_ptr cinfo);
780
+
781
+ long pass_counter; /* work units completed in this pass */
782
+ long pass_limit; /* total number of work units in this pass */
783
+ int completed_passes; /* passes completed so far */
784
+ int total_passes; /* total number of passes expected */
785
+ };
786
+
787
+
788
+ /* Data destination object for compression */
789
+
790
+ struct jpeg_destination_mgr {
791
+ JOCTET *next_output_byte; /* => next byte to write in buffer */
792
+ size_t free_in_buffer; /* # of byte spaces remaining in buffer */
793
+
794
+ void (*init_destination) (j_compress_ptr cinfo);
795
+ boolean (*empty_output_buffer) (j_compress_ptr cinfo);
796
+ void (*term_destination) (j_compress_ptr cinfo);
797
+ };
798
+
799
+
800
+ /* Data source object for decompression */
801
+
802
+ struct jpeg_source_mgr {
803
+ const JOCTET *next_input_byte; /* => next byte to read from buffer */
804
+ size_t bytes_in_buffer; /* # of bytes remaining in buffer */
805
+
806
+ void (*init_source) (j_decompress_ptr cinfo);
807
+ boolean (*fill_input_buffer) (j_decompress_ptr cinfo);
808
+ void (*skip_input_data) (j_decompress_ptr cinfo, long num_bytes);
809
+ boolean (*resync_to_restart) (j_decompress_ptr cinfo, int desired);
810
+ void (*term_source) (j_decompress_ptr cinfo);
811
+ };
812
+
813
+
814
+ /* Memory manager object.
815
+ * Allocates "small" objects (a few K total), "large" objects (tens of K),
816
+ * and "really big" objects (virtual arrays with backing store if needed).
817
+ * The memory manager does not allow individual objects to be freed; rather,
818
+ * each created object is assigned to a pool, and whole pools can be freed
819
+ * at once. This is faster and more convenient than remembering exactly what
820
+ * to free, especially where malloc()/free() are not too speedy.
821
+ * NB: alloc routines never return NULL. They exit to error_exit if not
822
+ * successful.
823
+ */
824
+
825
+ #define JPOOL_PERMANENT 0 /* lasts until master record is destroyed */
826
+ #define JPOOL_IMAGE 1 /* lasts until done with image/datastream */
827
+ #define JPOOL_NUMPOOLS 2
828
+
829
+ typedef struct jvirt_sarray_control *jvirt_sarray_ptr;
830
+ typedef struct jvirt_barray_control *jvirt_barray_ptr;
831
+
832
+
833
+ struct jpeg_memory_mgr {
834
+ /* Method pointers */
835
+ void *(*alloc_small) (j_common_ptr cinfo, int pool_id, size_t sizeofobject);
836
+ void *(*alloc_large) (j_common_ptr cinfo, int pool_id,
837
+ size_t sizeofobject);
838
+ JSAMPARRAY (*alloc_sarray) (j_common_ptr cinfo, int pool_id,
839
+ JDIMENSION samplesperrow, JDIMENSION numrows);
840
+ JBLOCKARRAY (*alloc_barray) (j_common_ptr cinfo, int pool_id,
841
+ JDIMENSION blocksperrow, JDIMENSION numrows);
842
+ jvirt_sarray_ptr (*request_virt_sarray) (j_common_ptr cinfo, int pool_id,
843
+ boolean pre_zero,
844
+ JDIMENSION samplesperrow,
845
+ JDIMENSION numrows,
846
+ JDIMENSION maxaccess);
847
+ jvirt_barray_ptr (*request_virt_barray) (j_common_ptr cinfo, int pool_id,
848
+ boolean pre_zero,
849
+ JDIMENSION blocksperrow,
850
+ JDIMENSION numrows,
851
+ JDIMENSION maxaccess);
852
+ void (*realize_virt_arrays) (j_common_ptr cinfo);
853
+ JSAMPARRAY (*access_virt_sarray) (j_common_ptr cinfo, jvirt_sarray_ptr ptr,
854
+ JDIMENSION start_row, JDIMENSION num_rows,
855
+ boolean writable);
856
+ JBLOCKARRAY (*access_virt_barray) (j_common_ptr cinfo, jvirt_barray_ptr ptr,
857
+ JDIMENSION start_row, JDIMENSION num_rows,
858
+ boolean writable);
859
+ void (*free_pool) (j_common_ptr cinfo, int pool_id);
860
+ void (*self_destruct) (j_common_ptr cinfo);
861
+
862
+ /* Limit on memory allocation for this JPEG object. (Note that this is
863
+ * merely advisory, not a guaranteed maximum; it only affects the space
864
+ * used for virtual-array buffers.) May be changed by outer application
865
+ * after creating the JPEG object.
866
+ */
867
+ long max_memory_to_use;
868
+
869
+ /* Maximum allocation request accepted by alloc_large. */
870
+ long max_alloc_chunk;
871
+ };
872
+
873
+
874
+ /* Routine signature for application-supplied marker processing methods.
875
+ * Need not pass marker code since it is stored in cinfo->unread_marker.
876
+ */
877
+ typedef boolean (*jpeg_marker_parser_method) (j_decompress_ptr cinfo);
878
+
879
+
880
+ /* Originally, this macro was used as a way of defining function prototypes
881
+ * for both modern compilers as well as older compilers that did not support
882
+ * prototype parameters. libjpeg-turbo has never supported these older,
883
+ * non-ANSI compilers, but the macro is still included because there is some
884
+ * software out there that uses it.
885
+ */
886
+
887
+ #define JPP(arglist) arglist
888
+
889
+
890
+ /* Default error-management setup */
891
+ EXTERN(struct jpeg_error_mgr *) jpeg_std_error(struct jpeg_error_mgr *err);
892
+
893
+ /* Initialization of JPEG compression objects.
894
+ * jpeg_create_compress() and jpeg_create_decompress() are the exported
895
+ * names that applications should call. These expand to calls on
896
+ * jpeg_CreateCompress and jpeg_CreateDecompress with additional information
897
+ * passed for version mismatch checking.
898
+ * NB: you must set up the error-manager BEFORE calling jpeg_create_xxx.
899
+ */
900
+ #define jpeg_create_compress(cinfo) \
901
+ jpeg_CreateCompress((cinfo), JPEG_LIB_VERSION, \
902
+ (size_t)sizeof(struct jpeg_compress_struct))
903
+ #define jpeg_create_decompress(cinfo) \
904
+ jpeg_CreateDecompress((cinfo), JPEG_LIB_VERSION, \
905
+ (size_t)sizeof(struct jpeg_decompress_struct))
906
+ EXTERN(void) jpeg_CreateCompress(j_compress_ptr cinfo, int version,
907
+ size_t structsize);
908
+ EXTERN(void) jpeg_CreateDecompress(j_decompress_ptr cinfo, int version,
909
+ size_t structsize);
910
+ /* Destruction of JPEG compression objects */
911
+ EXTERN(void) jpeg_destroy_compress(j_compress_ptr cinfo);
912
+ EXTERN(void) jpeg_destroy_decompress(j_decompress_ptr cinfo);
913
+
914
+ /* Standard data source and destination managers: stdio streams. */
915
+ /* Caller is responsible for opening the file before and closing after. */
916
+ EXTERN(void) jpeg_stdio_dest(j_compress_ptr cinfo, FILE *outfile);
917
+ EXTERN(void) jpeg_stdio_src(j_decompress_ptr cinfo, FILE *infile);
918
+
919
+ #if JPEG_LIB_VERSION >= 80 || defined(MEM_SRCDST_SUPPORTED)
920
+ /* Data source and destination managers: memory buffers. */
921
+ EXTERN(void) jpeg_mem_dest(j_compress_ptr cinfo, unsigned char **outbuffer,
922
+ unsigned long *outsize);
923
+ EXTERN(void) jpeg_mem_src(j_decompress_ptr cinfo,
924
+ const unsigned char *inbuffer, unsigned long insize);
925
+ #endif
926
+
927
+ /* Default parameter setup for compression */
928
+ EXTERN(void) jpeg_set_defaults(j_compress_ptr cinfo);
929
+ /* Compression parameter setup aids */
930
+ EXTERN(void) jpeg_set_colorspace(j_compress_ptr cinfo,
931
+ J_COLOR_SPACE colorspace);
932
+ EXTERN(void) jpeg_default_colorspace(j_compress_ptr cinfo);
933
+ EXTERN(void) jpeg_set_quality(j_compress_ptr cinfo, int quality,
934
+ boolean force_baseline);
935
+ EXTERN(void) jpeg_set_linear_quality(j_compress_ptr cinfo, int scale_factor,
936
+ boolean force_baseline);
937
+ #if JPEG_LIB_VERSION >= 70
938
+ EXTERN(void) jpeg_default_qtables(j_compress_ptr cinfo,
939
+ boolean force_baseline);
940
+ #endif
941
+ EXTERN(void) jpeg_add_quant_table(j_compress_ptr cinfo, int which_tbl,
942
+ const unsigned int *basic_table,
943
+ int scale_factor, boolean force_baseline);
944
+ EXTERN(int) jpeg_quality_scaling(int quality);
945
+ EXTERN(void) jpeg_simple_progression(j_compress_ptr cinfo);
946
+ EXTERN(void) jpeg_suppress_tables(j_compress_ptr cinfo, boolean suppress);
947
+ EXTERN(JQUANT_TBL *) jpeg_alloc_quant_table(j_common_ptr cinfo);
948
+ EXTERN(JHUFF_TBL *) jpeg_alloc_huff_table(j_common_ptr cinfo);
949
+
950
+ /* Main entry points for compression */
951
+ EXTERN(void) jpeg_start_compress(j_compress_ptr cinfo,
952
+ boolean write_all_tables);
953
+ EXTERN(JDIMENSION) jpeg_write_scanlines(j_compress_ptr cinfo,
954
+ JSAMPARRAY scanlines,
955
+ JDIMENSION num_lines);
956
+ EXTERN(void) jpeg_finish_compress(j_compress_ptr cinfo);
957
+
958
+ #if JPEG_LIB_VERSION >= 70
959
+ /* Precalculate JPEG dimensions for current compression parameters. */
960
+ EXTERN(void) jpeg_calc_jpeg_dimensions(j_compress_ptr cinfo);
961
+ #endif
962
+
963
+ /* Replaces jpeg_write_scanlines when writing raw downsampled data. */
964
+ EXTERN(JDIMENSION) jpeg_write_raw_data(j_compress_ptr cinfo, JSAMPIMAGE data,
965
+ JDIMENSION num_lines);
966
+
967
+ /* Write a special marker. See libjpeg.txt concerning safe usage. */
968
+ EXTERN(void) jpeg_write_marker(j_compress_ptr cinfo, int marker,
969
+ const JOCTET *dataptr, unsigned int datalen);
970
+ /* Same, but piecemeal. */
971
+ EXTERN(void) jpeg_write_m_header(j_compress_ptr cinfo, int marker,
972
+ unsigned int datalen);
973
+ EXTERN(void) jpeg_write_m_byte(j_compress_ptr cinfo, int val);
974
+
975
+ /* Alternate compression function: just write an abbreviated table file */
976
+ EXTERN(void) jpeg_write_tables(j_compress_ptr cinfo);
977
+
978
+ /* Write ICC profile. See libjpeg.txt for usage information. */
979
+ EXTERN(void) jpeg_write_icc_profile(j_compress_ptr cinfo,
980
+ const JOCTET *icc_data_ptr,
981
+ unsigned int icc_data_len);
982
+
983
+
984
+ /* Decompression startup: read start of JPEG datastream to see what's there */
985
+ EXTERN(int) jpeg_read_header(j_decompress_ptr cinfo, boolean require_image);
986
+ /* Return value is one of: */
987
+ #define JPEG_SUSPENDED 0 /* Suspended due to lack of input data */
988
+ #define JPEG_HEADER_OK 1 /* Found valid image datastream */
989
+ #define JPEG_HEADER_TABLES_ONLY 2 /* Found valid table-specs-only datastream */
990
+ /* If you pass require_image = TRUE (normal case), you need not check for
991
+ * a TABLES_ONLY return code; an abbreviated file will cause an error exit.
992
+ * JPEG_SUSPENDED is only possible if you use a data source module that can
993
+ * give a suspension return (the stdio source module doesn't).
994
+ */
995
+
996
+ /* Main entry points for decompression */
997
+ EXTERN(boolean) jpeg_start_decompress(j_decompress_ptr cinfo);
998
+ EXTERN(JDIMENSION) jpeg_read_scanlines(j_decompress_ptr cinfo,
999
+ JSAMPARRAY scanlines,
1000
+ JDIMENSION max_lines);
1001
+ EXTERN(JDIMENSION) jpeg_skip_scanlines(j_decompress_ptr cinfo,
1002
+ JDIMENSION num_lines);
1003
+ EXTERN(void) jpeg_crop_scanline(j_decompress_ptr cinfo, JDIMENSION *xoffset,
1004
+ JDIMENSION *width);
1005
+ EXTERN(boolean) jpeg_finish_decompress(j_decompress_ptr cinfo);
1006
+
1007
+ /* Replaces jpeg_read_scanlines when reading raw downsampled data. */
1008
+ EXTERN(JDIMENSION) jpeg_read_raw_data(j_decompress_ptr cinfo, JSAMPIMAGE data,
1009
+ JDIMENSION max_lines);
1010
+
1011
+ /* Additional entry points for buffered-image mode. */
1012
+ EXTERN(boolean) jpeg_has_multiple_scans(j_decompress_ptr cinfo);
1013
+ EXTERN(boolean) jpeg_start_output(j_decompress_ptr cinfo, int scan_number);
1014
+ EXTERN(boolean) jpeg_finish_output(j_decompress_ptr cinfo);
1015
+ EXTERN(boolean) jpeg_input_complete(j_decompress_ptr cinfo);
1016
+ EXTERN(void) jpeg_new_colormap(j_decompress_ptr cinfo);
1017
+ EXTERN(int) jpeg_consume_input(j_decompress_ptr cinfo);
1018
+ /* Return value is one of: */
1019
+ /* #define JPEG_SUSPENDED 0 Suspended due to lack of input data */
1020
+ #define JPEG_REACHED_SOS 1 /* Reached start of new scan */
1021
+ #define JPEG_REACHED_EOI 2 /* Reached end of image */
1022
+ #define JPEG_ROW_COMPLETED 3 /* Completed one iMCU row */
1023
+ #define JPEG_SCAN_COMPLETED 4 /* Completed last iMCU row of a scan */
1024
+
1025
+ /* Precalculate output dimensions for current decompression parameters. */
1026
+ #if JPEG_LIB_VERSION >= 80
1027
+ EXTERN(void) jpeg_core_output_dimensions(j_decompress_ptr cinfo);
1028
+ #endif
1029
+ EXTERN(void) jpeg_calc_output_dimensions(j_decompress_ptr cinfo);
1030
+
1031
+ /* Control saving of COM and APPn markers into marker_list. */
1032
+ EXTERN(void) jpeg_save_markers(j_decompress_ptr cinfo, int marker_code,
1033
+ unsigned int length_limit);
1034
+
1035
+ /* Install a special processing method for COM or APPn markers. */
1036
+ EXTERN(void) jpeg_set_marker_processor(j_decompress_ptr cinfo,
1037
+ int marker_code,
1038
+ jpeg_marker_parser_method routine);
1039
+
1040
+ /* Read or write raw DCT coefficients --- useful for lossless transcoding. */
1041
+ EXTERN(jvirt_barray_ptr *) jpeg_read_coefficients(j_decompress_ptr cinfo);
1042
+ EXTERN(void) jpeg_write_coefficients(j_compress_ptr cinfo,
1043
+ jvirt_barray_ptr *coef_arrays);
1044
+ EXTERN(void) jpeg_copy_critical_parameters(j_decompress_ptr srcinfo,
1045
+ j_compress_ptr dstinfo);
1046
+
1047
+ /* If you choose to abort compression or decompression before completing
1048
+ * jpeg_finish_(de)compress, then you need to clean up to release memory,
1049
+ * temporary files, etc. You can just call jpeg_destroy_(de)compress
1050
+ * if you're done with the JPEG object, but if you want to clean it up and
1051
+ * reuse it, call this:
1052
+ */
1053
+ EXTERN(void) jpeg_abort_compress(j_compress_ptr cinfo);
1054
+ EXTERN(void) jpeg_abort_decompress(j_decompress_ptr cinfo);
1055
+
1056
+ /* Generic versions of jpeg_abort and jpeg_destroy that work on either
1057
+ * flavor of JPEG object. These may be more convenient in some places.
1058
+ */
1059
+ EXTERN(void) jpeg_abort(j_common_ptr cinfo);
1060
+ EXTERN(void) jpeg_destroy(j_common_ptr cinfo);
1061
+
1062
+ /* Default restart-marker-resync procedure for use by data source modules */
1063
+ EXTERN(boolean) jpeg_resync_to_restart(j_decompress_ptr cinfo, int desired);
1064
+
1065
+ /* Read ICC profile. See libjpeg.txt for usage information. */
1066
+ EXTERN(boolean) jpeg_read_icc_profile(j_decompress_ptr cinfo,
1067
+ JOCTET **icc_data_ptr,
1068
+ unsigned int *icc_data_len);
1069
+
1070
+
1071
+ /* These marker codes are exported since applications and data source modules
1072
+ * are likely to want to use them.
1073
+ */
1074
+
1075
+ #define JPEG_RST0 0xD0 /* RST0 marker code */
1076
+ #define JPEG_EOI 0xD9 /* EOI marker code */
1077
+ #define JPEG_APP0 0xE0 /* APP0 marker code */
1078
+ #define JPEG_COM 0xFE /* COM marker code */
1079
+
1080
+
1081
+ /* If we have a brain-damaged compiler that emits warnings (or worse, errors)
1082
+ * for structure definitions that are never filled in, keep it quiet by
1083
+ * supplying dummy definitions for the various substructures.
1084
+ */
1085
+
1086
+ #ifdef INCOMPLETE_TYPES_BROKEN
1087
+ #ifndef JPEG_INTERNALS /* will be defined in jpegint.h */
1088
+ struct jvirt_sarray_control { long dummy; };
1089
+ struct jvirt_barray_control { long dummy; };
1090
+ struct jpeg_comp_master { long dummy; };
1091
+ struct jpeg_c_main_controller { long dummy; };
1092
+ struct jpeg_c_prep_controller { long dummy; };
1093
+ struct jpeg_c_coef_controller { long dummy; };
1094
+ struct jpeg_marker_writer { long dummy; };
1095
+ struct jpeg_color_converter { long dummy; };
1096
+ struct jpeg_downsampler { long dummy; };
1097
+ struct jpeg_forward_dct { long dummy; };
1098
+ struct jpeg_entropy_encoder { long dummy; };
1099
+ struct jpeg_decomp_master { long dummy; };
1100
+ struct jpeg_d_main_controller { long dummy; };
1101
+ struct jpeg_d_coef_controller { long dummy; };
1102
+ struct jpeg_d_post_controller { long dummy; };
1103
+ struct jpeg_input_controller { long dummy; };
1104
+ struct jpeg_marker_reader { long dummy; };
1105
+ struct jpeg_entropy_decoder { long dummy; };
1106
+ struct jpeg_inverse_dct { long dummy; };
1107
+ struct jpeg_upsampler { long dummy; };
1108
+ struct jpeg_color_deconverter { long dummy; };
1109
+ struct jpeg_color_quantizer { long dummy; };
1110
+ #endif /* JPEG_INTERNALS */
1111
+ #endif /* INCOMPLETE_TYPES_BROKEN */
1112
+
1113
+
1114
+ /*
1115
+ * The JPEG library modules define JPEG_INTERNALS before including this file.
1116
+ * The internal structure declarations are read only when that is true.
1117
+ * Applications using the library should not include jpegint.h, but may wish
1118
+ * to include jerror.h.
1119
+ */
1120
+
1121
+ #ifdef JPEG_INTERNALS
1122
+ #include "jpegint.h" /* fetch private declarations */
1123
+ #include "jerror.h" /* fetch error codes too */
1124
+ #endif
1125
+
1126
+ #ifdef __cplusplus
1127
+ #ifndef DONT_USE_EXTERN_C
1128
+ }
1129
+ #endif
1130
+ #endif
1131
+
1132
+ #endif /* JPEGLIB_H */