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,773 @@
1
+ /*
2
+ * jdarith.c
3
+ *
4
+ * This file was part of the Independent JPEG Group's software:
5
+ * Developed 1997-2015 by Guido Vollbeding.
6
+ * libjpeg-turbo Modifications:
7
+ * Copyright (C) 2015-2018, D. R. Commander.
8
+ * For conditions of distribution and use, see the accompanying README.ijg
9
+ * file.
10
+ *
11
+ * This file contains portable arithmetic entropy encoding routines for JPEG
12
+ * (implementing Recommendation ITU-T T.81 | ISO/IEC 10918-1).
13
+ *
14
+ * Both sequential and progressive modes are supported in this single module.
15
+ *
16
+ * Suspension is not currently supported in this module.
17
+ *
18
+ * NOTE: All referenced figures are from
19
+ * Recommendation ITU-T T.81 (1992) | ISO/IEC 10918-1:1994.
20
+ */
21
+
22
+ #define JPEG_INTERNALS
23
+ #include "jinclude.h"
24
+ #include "jpeglib.h"
25
+
26
+
27
+ #define NEG_1 ((unsigned int)-1)
28
+
29
+
30
+ /* Expanded entropy decoder object for arithmetic decoding. */
31
+
32
+ typedef struct {
33
+ struct jpeg_entropy_decoder pub; /* public fields */
34
+
35
+ JLONG c; /* C register, base of coding interval + input bit buffer */
36
+ JLONG a; /* A register, normalized size of coding interval */
37
+ int ct; /* bit shift counter, # of bits left in bit buffer part of C */
38
+ /* init: ct = -16 */
39
+ /* run: ct = 0..7 */
40
+ /* error: ct = -1 */
41
+ int last_dc_val[MAX_COMPS_IN_SCAN]; /* last DC coef for each component */
42
+ int dc_context[MAX_COMPS_IN_SCAN]; /* context index for DC conditioning */
43
+
44
+ unsigned int restarts_to_go; /* MCUs left in this restart interval */
45
+
46
+ /* Pointers to statistics areas (these workspaces have image lifespan) */
47
+ unsigned char *dc_stats[NUM_ARITH_TBLS];
48
+ unsigned char *ac_stats[NUM_ARITH_TBLS];
49
+
50
+ /* Statistics bin for coding with fixed probability 0.5 */
51
+ unsigned char fixed_bin[4];
52
+ } arith_entropy_decoder;
53
+
54
+ typedef arith_entropy_decoder *arith_entropy_ptr;
55
+
56
+ /* The following two definitions specify the allocation chunk size
57
+ * for the statistics area.
58
+ * According to sections F.1.4.4.1.3 and F.1.4.4.2, we need at least
59
+ * 49 statistics bins for DC, and 245 statistics bins for AC coding.
60
+ *
61
+ * We use a compact representation with 1 byte per statistics bin,
62
+ * thus the numbers directly represent byte sizes.
63
+ * This 1 byte per statistics bin contains the meaning of the MPS
64
+ * (more probable symbol) in the highest bit (mask 0x80), and the
65
+ * index into the probability estimation state machine table
66
+ * in the lower bits (mask 0x7F).
67
+ */
68
+
69
+ #define DC_STAT_BINS 64
70
+ #define AC_STAT_BINS 256
71
+
72
+
73
+ LOCAL(int)
74
+ get_byte(j_decompress_ptr cinfo)
75
+ /* Read next input byte; we do not support suspension in this module. */
76
+ {
77
+ struct jpeg_source_mgr *src = cinfo->src;
78
+
79
+ if (src->bytes_in_buffer == 0)
80
+ if (!(*src->fill_input_buffer) (cinfo))
81
+ ERREXIT(cinfo, JERR_CANT_SUSPEND);
82
+ src->bytes_in_buffer--;
83
+ return GETJOCTET(*src->next_input_byte++);
84
+ }
85
+
86
+
87
+ /*
88
+ * The core arithmetic decoding routine (common in JPEG and JBIG).
89
+ * This needs to go as fast as possible.
90
+ * Machine-dependent optimization facilities
91
+ * are not utilized in this portable implementation.
92
+ * However, this code should be fairly efficient and
93
+ * may be a good base for further optimizations anyway.
94
+ *
95
+ * Return value is 0 or 1 (binary decision).
96
+ *
97
+ * Note: I've changed the handling of the code base & bit
98
+ * buffer register C compared to other implementations
99
+ * based on the standards layout & procedures.
100
+ * While it also contains both the actual base of the
101
+ * coding interval (16 bits) and the next-bits buffer,
102
+ * the cut-point between these two parts is floating
103
+ * (instead of fixed) with the bit shift counter CT.
104
+ * Thus, we also need only one (variable instead of
105
+ * fixed size) shift for the LPS/MPS decision, and
106
+ * we can do away with any renormalization update
107
+ * of C (except for new data insertion, of course).
108
+ *
109
+ * I've also introduced a new scheme for accessing
110
+ * the probability estimation state machine table,
111
+ * derived from Markus Kuhn's JBIG implementation.
112
+ */
113
+
114
+ LOCAL(int)
115
+ arith_decode(j_decompress_ptr cinfo, unsigned char *st)
116
+ {
117
+ register arith_entropy_ptr e = (arith_entropy_ptr)cinfo->entropy;
118
+ register unsigned char nl, nm;
119
+ register JLONG qe, temp;
120
+ register int sv, data;
121
+
122
+ /* Renormalization & data input per section D.2.6 */
123
+ while (e->a < 0x8000L) {
124
+ if (--e->ct < 0) {
125
+ /* Need to fetch next data byte */
126
+ if (cinfo->unread_marker)
127
+ data = 0; /* stuff zero data */
128
+ else {
129
+ data = get_byte(cinfo); /* read next input byte */
130
+ if (data == 0xFF) { /* zero stuff or marker code */
131
+ do data = get_byte(cinfo);
132
+ while (data == 0xFF); /* swallow extra 0xFF bytes */
133
+ if (data == 0)
134
+ data = 0xFF; /* discard stuffed zero byte */
135
+ else {
136
+ /* Note: Different from the Huffman decoder, hitting
137
+ * a marker while processing the compressed data
138
+ * segment is legal in arithmetic coding.
139
+ * The convention is to supply zero data
140
+ * then until decoding is complete.
141
+ */
142
+ cinfo->unread_marker = data;
143
+ data = 0;
144
+ }
145
+ }
146
+ }
147
+ e->c = (e->c << 8) | data; /* insert data into C register */
148
+ if ((e->ct += 8) < 0) /* update bit shift counter */
149
+ /* Need more initial bytes */
150
+ if (++e->ct == 0)
151
+ /* Got 2 initial bytes -> re-init A and exit loop */
152
+ e->a = 0x8000L; /* => e->a = 0x10000L after loop exit */
153
+ }
154
+ e->a <<= 1;
155
+ }
156
+
157
+ /* Fetch values from our compact representation of Table D.2:
158
+ * Qe values and probability estimation state machine
159
+ */
160
+ sv = *st;
161
+ qe = jpeg_aritab[sv & 0x7F]; /* => Qe_Value */
162
+ nl = qe & 0xFF; qe >>= 8; /* Next_Index_LPS + Switch_MPS */
163
+ nm = qe & 0xFF; qe >>= 8; /* Next_Index_MPS */
164
+
165
+ /* Decode & estimation procedures per sections D.2.4 & D.2.5 */
166
+ temp = e->a - qe;
167
+ e->a = temp;
168
+ temp <<= e->ct;
169
+ if (e->c >= temp) {
170
+ e->c -= temp;
171
+ /* Conditional LPS (less probable symbol) exchange */
172
+ if (e->a < qe) {
173
+ e->a = qe;
174
+ *st = (sv & 0x80) ^ nm; /* Estimate_after_MPS */
175
+ } else {
176
+ e->a = qe;
177
+ *st = (sv & 0x80) ^ nl; /* Estimate_after_LPS */
178
+ sv ^= 0x80; /* Exchange LPS/MPS */
179
+ }
180
+ } else if (e->a < 0x8000L) {
181
+ /* Conditional MPS (more probable symbol) exchange */
182
+ if (e->a < qe) {
183
+ *st = (sv & 0x80) ^ nl; /* Estimate_after_LPS */
184
+ sv ^= 0x80; /* Exchange LPS/MPS */
185
+ } else {
186
+ *st = (sv & 0x80) ^ nm; /* Estimate_after_MPS */
187
+ }
188
+ }
189
+
190
+ return sv >> 7;
191
+ }
192
+
193
+
194
+ /*
195
+ * Check for a restart marker & resynchronize decoder.
196
+ */
197
+
198
+ LOCAL(void)
199
+ process_restart(j_decompress_ptr cinfo)
200
+ {
201
+ arith_entropy_ptr entropy = (arith_entropy_ptr)cinfo->entropy;
202
+ int ci;
203
+ jpeg_component_info *compptr;
204
+
205
+ /* Advance past the RSTn marker */
206
+ if (!(*cinfo->marker->read_restart_marker) (cinfo))
207
+ ERREXIT(cinfo, JERR_CANT_SUSPEND);
208
+
209
+ /* Re-initialize statistics areas */
210
+ for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
211
+ compptr = cinfo->cur_comp_info[ci];
212
+ if (!cinfo->progressive_mode || (cinfo->Ss == 0 && cinfo->Ah == 0)) {
213
+ MEMZERO(entropy->dc_stats[compptr->dc_tbl_no], DC_STAT_BINS);
214
+ /* Reset DC predictions to 0 */
215
+ entropy->last_dc_val[ci] = 0;
216
+ entropy->dc_context[ci] = 0;
217
+ }
218
+ if (!cinfo->progressive_mode || cinfo->Ss) {
219
+ MEMZERO(entropy->ac_stats[compptr->ac_tbl_no], AC_STAT_BINS);
220
+ }
221
+ }
222
+
223
+ /* Reset arithmetic decoding variables */
224
+ entropy->c = 0;
225
+ entropy->a = 0;
226
+ entropy->ct = -16; /* force reading 2 initial bytes to fill C */
227
+
228
+ /* Reset restart counter */
229
+ entropy->restarts_to_go = cinfo->restart_interval;
230
+ }
231
+
232
+
233
+ /*
234
+ * Arithmetic MCU decoding.
235
+ * Each of these routines decodes and returns one MCU's worth of
236
+ * arithmetic-compressed coefficients.
237
+ * The coefficients are reordered from zigzag order into natural array order,
238
+ * but are not dequantized.
239
+ *
240
+ * The i'th block of the MCU is stored into the block pointed to by
241
+ * MCU_data[i]. WE ASSUME THIS AREA IS INITIALLY ZEROED BY THE CALLER.
242
+ */
243
+
244
+ /*
245
+ * MCU decoding for DC initial scan (either spectral selection,
246
+ * or first pass of successive approximation).
247
+ */
248
+
249
+ METHODDEF(boolean)
250
+ decode_mcu_DC_first(j_decompress_ptr cinfo, JBLOCKROW *MCU_data)
251
+ {
252
+ arith_entropy_ptr entropy = (arith_entropy_ptr)cinfo->entropy;
253
+ JBLOCKROW block;
254
+ unsigned char *st;
255
+ int blkn, ci, tbl, sign;
256
+ int v, m;
257
+
258
+ /* Process restart marker if needed */
259
+ if (cinfo->restart_interval) {
260
+ if (entropy->restarts_to_go == 0)
261
+ process_restart(cinfo);
262
+ entropy->restarts_to_go--;
263
+ }
264
+
265
+ if (entropy->ct == -1) return TRUE; /* if error do nothing */
266
+
267
+ /* Outer loop handles each block in the MCU */
268
+
269
+ for (blkn = 0; blkn < cinfo->blocks_in_MCU; blkn++) {
270
+ block = MCU_data[blkn];
271
+ ci = cinfo->MCU_membership[blkn];
272
+ tbl = cinfo->cur_comp_info[ci]->dc_tbl_no;
273
+
274
+ /* Sections F.2.4.1 & F.1.4.4.1: Decoding of DC coefficients */
275
+
276
+ /* Table F.4: Point to statistics bin S0 for DC coefficient coding */
277
+ st = entropy->dc_stats[tbl] + entropy->dc_context[ci];
278
+
279
+ /* Figure F.19: Decode_DC_DIFF */
280
+ if (arith_decode(cinfo, st) == 0)
281
+ entropy->dc_context[ci] = 0;
282
+ else {
283
+ /* Figure F.21: Decoding nonzero value v */
284
+ /* Figure F.22: Decoding the sign of v */
285
+ sign = arith_decode(cinfo, st + 1);
286
+ st += 2; st += sign;
287
+ /* Figure F.23: Decoding the magnitude category of v */
288
+ if ((m = arith_decode(cinfo, st)) != 0) {
289
+ st = entropy->dc_stats[tbl] + 20; /* Table F.4: X1 = 20 */
290
+ while (arith_decode(cinfo, st)) {
291
+ if ((m <<= 1) == 0x8000) {
292
+ WARNMS(cinfo, JWRN_ARITH_BAD_CODE);
293
+ entropy->ct = -1; /* magnitude overflow */
294
+ return TRUE;
295
+ }
296
+ st += 1;
297
+ }
298
+ }
299
+ /* Section F.1.4.4.1.2: Establish dc_context conditioning category */
300
+ if (m < (int)((1L << cinfo->arith_dc_L[tbl]) >> 1))
301
+ entropy->dc_context[ci] = 0; /* zero diff category */
302
+ else if (m > (int)((1L << cinfo->arith_dc_U[tbl]) >> 1))
303
+ entropy->dc_context[ci] = 12 + (sign * 4); /* large diff category */
304
+ else
305
+ entropy->dc_context[ci] = 4 + (sign * 4); /* small diff category */
306
+ v = m;
307
+ /* Figure F.24: Decoding the magnitude bit pattern of v */
308
+ st += 14;
309
+ while (m >>= 1)
310
+ if (arith_decode(cinfo, st)) v |= m;
311
+ v += 1; if (sign) v = -v;
312
+ entropy->last_dc_val[ci] = (entropy->last_dc_val[ci] + v) & 0xffff;
313
+ }
314
+
315
+ /* Scale and output the DC coefficient (assumes jpeg_natural_order[0]=0) */
316
+ (*block)[0] = (JCOEF)LEFT_SHIFT(entropy->last_dc_val[ci], cinfo->Al);
317
+ }
318
+
319
+ return TRUE;
320
+ }
321
+
322
+
323
+ /*
324
+ * MCU decoding for AC initial scan (either spectral selection,
325
+ * or first pass of successive approximation).
326
+ */
327
+
328
+ METHODDEF(boolean)
329
+ decode_mcu_AC_first(j_decompress_ptr cinfo, JBLOCKROW *MCU_data)
330
+ {
331
+ arith_entropy_ptr entropy = (arith_entropy_ptr)cinfo->entropy;
332
+ JBLOCKROW block;
333
+ unsigned char *st;
334
+ int tbl, sign, k;
335
+ int v, m;
336
+
337
+ /* Process restart marker if needed */
338
+ if (cinfo->restart_interval) {
339
+ if (entropy->restarts_to_go == 0)
340
+ process_restart(cinfo);
341
+ entropy->restarts_to_go--;
342
+ }
343
+
344
+ if (entropy->ct == -1) return TRUE; /* if error do nothing */
345
+
346
+ /* There is always only one block per MCU */
347
+ block = MCU_data[0];
348
+ tbl = cinfo->cur_comp_info[0]->ac_tbl_no;
349
+
350
+ /* Sections F.2.4.2 & F.1.4.4.2: Decoding of AC coefficients */
351
+
352
+ /* Figure F.20: Decode_AC_coefficients */
353
+ for (k = cinfo->Ss; k <= cinfo->Se; k++) {
354
+ st = entropy->ac_stats[tbl] + 3 * (k - 1);
355
+ if (arith_decode(cinfo, st)) break; /* EOB flag */
356
+ while (arith_decode(cinfo, st + 1) == 0) {
357
+ st += 3; k++;
358
+ if (k > cinfo->Se) {
359
+ WARNMS(cinfo, JWRN_ARITH_BAD_CODE);
360
+ entropy->ct = -1; /* spectral overflow */
361
+ return TRUE;
362
+ }
363
+ }
364
+ /* Figure F.21: Decoding nonzero value v */
365
+ /* Figure F.22: Decoding the sign of v */
366
+ sign = arith_decode(cinfo, entropy->fixed_bin);
367
+ st += 2;
368
+ /* Figure F.23: Decoding the magnitude category of v */
369
+ if ((m = arith_decode(cinfo, st)) != 0) {
370
+ if (arith_decode(cinfo, st)) {
371
+ m <<= 1;
372
+ st = entropy->ac_stats[tbl] +
373
+ (k <= cinfo->arith_ac_K[tbl] ? 189 : 217);
374
+ while (arith_decode(cinfo, st)) {
375
+ if ((m <<= 1) == 0x8000) {
376
+ WARNMS(cinfo, JWRN_ARITH_BAD_CODE);
377
+ entropy->ct = -1; /* magnitude overflow */
378
+ return TRUE;
379
+ }
380
+ st += 1;
381
+ }
382
+ }
383
+ }
384
+ v = m;
385
+ /* Figure F.24: Decoding the magnitude bit pattern of v */
386
+ st += 14;
387
+ while (m >>= 1)
388
+ if (arith_decode(cinfo, st)) v |= m;
389
+ v += 1; if (sign) v = -v;
390
+ /* Scale and output coefficient in natural (dezigzagged) order */
391
+ (*block)[jpeg_natural_order[k]] = (JCOEF)((unsigned)v << cinfo->Al);
392
+ }
393
+
394
+ return TRUE;
395
+ }
396
+
397
+
398
+ /*
399
+ * MCU decoding for DC successive approximation refinement scan.
400
+ */
401
+
402
+ METHODDEF(boolean)
403
+ decode_mcu_DC_refine(j_decompress_ptr cinfo, JBLOCKROW *MCU_data)
404
+ {
405
+ arith_entropy_ptr entropy = (arith_entropy_ptr)cinfo->entropy;
406
+ unsigned char *st;
407
+ int p1, blkn;
408
+
409
+ /* Process restart marker if needed */
410
+ if (cinfo->restart_interval) {
411
+ if (entropy->restarts_to_go == 0)
412
+ process_restart(cinfo);
413
+ entropy->restarts_to_go--;
414
+ }
415
+
416
+ st = entropy->fixed_bin; /* use fixed probability estimation */
417
+ p1 = 1 << cinfo->Al; /* 1 in the bit position being coded */
418
+
419
+ /* Outer loop handles each block in the MCU */
420
+
421
+ for (blkn = 0; blkn < cinfo->blocks_in_MCU; blkn++) {
422
+ /* Encoded data is simply the next bit of the two's-complement DC value */
423
+ if (arith_decode(cinfo, st))
424
+ MCU_data[blkn][0][0] |= p1;
425
+ }
426
+
427
+ return TRUE;
428
+ }
429
+
430
+
431
+ /*
432
+ * MCU decoding for AC successive approximation refinement scan.
433
+ */
434
+
435
+ METHODDEF(boolean)
436
+ decode_mcu_AC_refine(j_decompress_ptr cinfo, JBLOCKROW *MCU_data)
437
+ {
438
+ arith_entropy_ptr entropy = (arith_entropy_ptr)cinfo->entropy;
439
+ JBLOCKROW block;
440
+ JCOEFPTR thiscoef;
441
+ unsigned char *st;
442
+ int tbl, k, kex;
443
+ int p1, m1;
444
+
445
+ /* Process restart marker if needed */
446
+ if (cinfo->restart_interval) {
447
+ if (entropy->restarts_to_go == 0)
448
+ process_restart(cinfo);
449
+ entropy->restarts_to_go--;
450
+ }
451
+
452
+ if (entropy->ct == -1) return TRUE; /* if error do nothing */
453
+
454
+ /* There is always only one block per MCU */
455
+ block = MCU_data[0];
456
+ tbl = cinfo->cur_comp_info[0]->ac_tbl_no;
457
+
458
+ p1 = 1 << cinfo->Al; /* 1 in the bit position being coded */
459
+ m1 = (NEG_1) << cinfo->Al; /* -1 in the bit position being coded */
460
+
461
+ /* Establish EOBx (previous stage end-of-block) index */
462
+ for (kex = cinfo->Se; kex > 0; kex--)
463
+ if ((*block)[jpeg_natural_order[kex]]) break;
464
+
465
+ for (k = cinfo->Ss; k <= cinfo->Se; k++) {
466
+ st = entropy->ac_stats[tbl] + 3 * (k - 1);
467
+ if (k > kex)
468
+ if (arith_decode(cinfo, st)) break; /* EOB flag */
469
+ for (;;) {
470
+ thiscoef = *block + jpeg_natural_order[k];
471
+ if (*thiscoef) { /* previously nonzero coef */
472
+ if (arith_decode(cinfo, st + 2)) {
473
+ if (*thiscoef < 0)
474
+ *thiscoef += m1;
475
+ else
476
+ *thiscoef += p1;
477
+ }
478
+ break;
479
+ }
480
+ if (arith_decode(cinfo, st + 1)) { /* newly nonzero coef */
481
+ if (arith_decode(cinfo, entropy->fixed_bin))
482
+ *thiscoef = m1;
483
+ else
484
+ *thiscoef = p1;
485
+ break;
486
+ }
487
+ st += 3; k++;
488
+ if (k > cinfo->Se) {
489
+ WARNMS(cinfo, JWRN_ARITH_BAD_CODE);
490
+ entropy->ct = -1; /* spectral overflow */
491
+ return TRUE;
492
+ }
493
+ }
494
+ }
495
+
496
+ return TRUE;
497
+ }
498
+
499
+
500
+ /*
501
+ * Decode one MCU's worth of arithmetic-compressed coefficients.
502
+ */
503
+
504
+ METHODDEF(boolean)
505
+ decode_mcu(j_decompress_ptr cinfo, JBLOCKROW *MCU_data)
506
+ {
507
+ arith_entropy_ptr entropy = (arith_entropy_ptr)cinfo->entropy;
508
+ jpeg_component_info *compptr;
509
+ JBLOCKROW block;
510
+ unsigned char *st;
511
+ int blkn, ci, tbl, sign, k;
512
+ int v, m;
513
+
514
+ /* Process restart marker if needed */
515
+ if (cinfo->restart_interval) {
516
+ if (entropy->restarts_to_go == 0)
517
+ process_restart(cinfo);
518
+ entropy->restarts_to_go--;
519
+ }
520
+
521
+ if (entropy->ct == -1) return TRUE; /* if error do nothing */
522
+
523
+ /* Outer loop handles each block in the MCU */
524
+
525
+ for (blkn = 0; blkn < cinfo->blocks_in_MCU; blkn++) {
526
+ block = MCU_data ? MCU_data[blkn] : NULL;
527
+ ci = cinfo->MCU_membership[blkn];
528
+ compptr = cinfo->cur_comp_info[ci];
529
+
530
+ /* Sections F.2.4.1 & F.1.4.4.1: Decoding of DC coefficients */
531
+
532
+ tbl = compptr->dc_tbl_no;
533
+
534
+ /* Table F.4: Point to statistics bin S0 for DC coefficient coding */
535
+ st = entropy->dc_stats[tbl] + entropy->dc_context[ci];
536
+
537
+ /* Figure F.19: Decode_DC_DIFF */
538
+ if (arith_decode(cinfo, st) == 0)
539
+ entropy->dc_context[ci] = 0;
540
+ else {
541
+ /* Figure F.21: Decoding nonzero value v */
542
+ /* Figure F.22: Decoding the sign of v */
543
+ sign = arith_decode(cinfo, st + 1);
544
+ st += 2; st += sign;
545
+ /* Figure F.23: Decoding the magnitude category of v */
546
+ if ((m = arith_decode(cinfo, st)) != 0) {
547
+ st = entropy->dc_stats[tbl] + 20; /* Table F.4: X1 = 20 */
548
+ while (arith_decode(cinfo, st)) {
549
+ if ((m <<= 1) == 0x8000) {
550
+ WARNMS(cinfo, JWRN_ARITH_BAD_CODE);
551
+ entropy->ct = -1; /* magnitude overflow */
552
+ return TRUE;
553
+ }
554
+ st += 1;
555
+ }
556
+ }
557
+ /* Section F.1.4.4.1.2: Establish dc_context conditioning category */
558
+ if (m < (int)((1L << cinfo->arith_dc_L[tbl]) >> 1))
559
+ entropy->dc_context[ci] = 0; /* zero diff category */
560
+ else if (m > (int)((1L << cinfo->arith_dc_U[tbl]) >> 1))
561
+ entropy->dc_context[ci] = 12 + (sign * 4); /* large diff category */
562
+ else
563
+ entropy->dc_context[ci] = 4 + (sign * 4); /* small diff category */
564
+ v = m;
565
+ /* Figure F.24: Decoding the magnitude bit pattern of v */
566
+ st += 14;
567
+ while (m >>= 1)
568
+ if (arith_decode(cinfo, st)) v |= m;
569
+ v += 1; if (sign) v = -v;
570
+ entropy->last_dc_val[ci] = (entropy->last_dc_val[ci] + v) & 0xffff;
571
+ }
572
+
573
+ if (block)
574
+ (*block)[0] = (JCOEF)entropy->last_dc_val[ci];
575
+
576
+ /* Sections F.2.4.2 & F.1.4.4.2: Decoding of AC coefficients */
577
+
578
+ tbl = compptr->ac_tbl_no;
579
+
580
+ /* Figure F.20: Decode_AC_coefficients */
581
+ for (k = 1; k <= DCTSIZE2 - 1; k++) {
582
+ st = entropy->ac_stats[tbl] + 3 * (k - 1);
583
+ if (arith_decode(cinfo, st)) break; /* EOB flag */
584
+ while (arith_decode(cinfo, st + 1) == 0) {
585
+ st += 3; k++;
586
+ if (k > DCTSIZE2 - 1) {
587
+ WARNMS(cinfo, JWRN_ARITH_BAD_CODE);
588
+ entropy->ct = -1; /* spectral overflow */
589
+ return TRUE;
590
+ }
591
+ }
592
+ /* Figure F.21: Decoding nonzero value v */
593
+ /* Figure F.22: Decoding the sign of v */
594
+ sign = arith_decode(cinfo, entropy->fixed_bin);
595
+ st += 2;
596
+ /* Figure F.23: Decoding the magnitude category of v */
597
+ if ((m = arith_decode(cinfo, st)) != 0) {
598
+ if (arith_decode(cinfo, st)) {
599
+ m <<= 1;
600
+ st = entropy->ac_stats[tbl] +
601
+ (k <= cinfo->arith_ac_K[tbl] ? 189 : 217);
602
+ while (arith_decode(cinfo, st)) {
603
+ if ((m <<= 1) == 0x8000) {
604
+ WARNMS(cinfo, JWRN_ARITH_BAD_CODE);
605
+ entropy->ct = -1; /* magnitude overflow */
606
+ return TRUE;
607
+ }
608
+ st += 1;
609
+ }
610
+ }
611
+ }
612
+ v = m;
613
+ /* Figure F.24: Decoding the magnitude bit pattern of v */
614
+ st += 14;
615
+ while (m >>= 1)
616
+ if (arith_decode(cinfo, st)) v |= m;
617
+ v += 1; if (sign) v = -v;
618
+ if (block)
619
+ (*block)[jpeg_natural_order[k]] = (JCOEF)v;
620
+ }
621
+ }
622
+
623
+ return TRUE;
624
+ }
625
+
626
+
627
+ /*
628
+ * Initialize for an arithmetic-compressed scan.
629
+ */
630
+
631
+ METHODDEF(void)
632
+ start_pass(j_decompress_ptr cinfo)
633
+ {
634
+ arith_entropy_ptr entropy = (arith_entropy_ptr)cinfo->entropy;
635
+ int ci, tbl;
636
+ jpeg_component_info *compptr;
637
+
638
+ if (cinfo->progressive_mode) {
639
+ /* Validate progressive scan parameters */
640
+ if (cinfo->Ss == 0) {
641
+ if (cinfo->Se != 0)
642
+ goto bad;
643
+ } else {
644
+ /* need not check Ss/Se < 0 since they came from unsigned bytes */
645
+ if (cinfo->Se < cinfo->Ss || cinfo->Se > DCTSIZE2 - 1)
646
+ goto bad;
647
+ /* AC scans may have only one component */
648
+ if (cinfo->comps_in_scan != 1)
649
+ goto bad;
650
+ }
651
+ if (cinfo->Ah != 0) {
652
+ /* Successive approximation refinement scan: must have Al = Ah-1. */
653
+ if (cinfo->Ah - 1 != cinfo->Al)
654
+ goto bad;
655
+ }
656
+ if (cinfo->Al > 13) { /* need not check for < 0 */
657
+ bad:
658
+ ERREXIT4(cinfo, JERR_BAD_PROGRESSION,
659
+ cinfo->Ss, cinfo->Se, cinfo->Ah, cinfo->Al);
660
+ }
661
+ /* Update progression status, and verify that scan order is legal.
662
+ * Note that inter-scan inconsistencies are treated as warnings
663
+ * not fatal errors ... not clear if this is right way to behave.
664
+ */
665
+ for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
666
+ int coefi, cindex = cinfo->cur_comp_info[ci]->component_index;
667
+ int *coef_bit_ptr = &cinfo->coef_bits[cindex][0];
668
+ if (cinfo->Ss && coef_bit_ptr[0] < 0) /* AC without prior DC scan */
669
+ WARNMS2(cinfo, JWRN_BOGUS_PROGRESSION, cindex, 0);
670
+ for (coefi = cinfo->Ss; coefi <= cinfo->Se; coefi++) {
671
+ int expected = (coef_bit_ptr[coefi] < 0) ? 0 : coef_bit_ptr[coefi];
672
+ if (cinfo->Ah != expected)
673
+ WARNMS2(cinfo, JWRN_BOGUS_PROGRESSION, cindex, coefi);
674
+ coef_bit_ptr[coefi] = cinfo->Al;
675
+ }
676
+ }
677
+ /* Select MCU decoding routine */
678
+ if (cinfo->Ah == 0) {
679
+ if (cinfo->Ss == 0)
680
+ entropy->pub.decode_mcu = decode_mcu_DC_first;
681
+ else
682
+ entropy->pub.decode_mcu = decode_mcu_AC_first;
683
+ } else {
684
+ if (cinfo->Ss == 0)
685
+ entropy->pub.decode_mcu = decode_mcu_DC_refine;
686
+ else
687
+ entropy->pub.decode_mcu = decode_mcu_AC_refine;
688
+ }
689
+ } else {
690
+ /* Check that the scan parameters Ss, Se, Ah/Al are OK for sequential JPEG.
691
+ * This ought to be an error condition, but we make it a warning.
692
+ */
693
+ if (cinfo->Ss != 0 || cinfo->Ah != 0 || cinfo->Al != 0 ||
694
+ (cinfo->Se < DCTSIZE2 && cinfo->Se != DCTSIZE2 - 1))
695
+ WARNMS(cinfo, JWRN_NOT_SEQUENTIAL);
696
+ /* Select MCU decoding routine */
697
+ entropy->pub.decode_mcu = decode_mcu;
698
+ }
699
+
700
+ /* Allocate & initialize requested statistics areas */
701
+ for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
702
+ compptr = cinfo->cur_comp_info[ci];
703
+ if (!cinfo->progressive_mode || (cinfo->Ss == 0 && cinfo->Ah == 0)) {
704
+ tbl = compptr->dc_tbl_no;
705
+ if (tbl < 0 || tbl >= NUM_ARITH_TBLS)
706
+ ERREXIT1(cinfo, JERR_NO_ARITH_TABLE, tbl);
707
+ if (entropy->dc_stats[tbl] == NULL)
708
+ entropy->dc_stats[tbl] = (unsigned char *)(*cinfo->mem->alloc_small)
709
+ ((j_common_ptr)cinfo, JPOOL_IMAGE, DC_STAT_BINS);
710
+ MEMZERO(entropy->dc_stats[tbl], DC_STAT_BINS);
711
+ /* Initialize DC predictions to 0 */
712
+ entropy->last_dc_val[ci] = 0;
713
+ entropy->dc_context[ci] = 0;
714
+ }
715
+ if (!cinfo->progressive_mode || cinfo->Ss) {
716
+ tbl = compptr->ac_tbl_no;
717
+ if (tbl < 0 || tbl >= NUM_ARITH_TBLS)
718
+ ERREXIT1(cinfo, JERR_NO_ARITH_TABLE, tbl);
719
+ if (entropy->ac_stats[tbl] == NULL)
720
+ entropy->ac_stats[tbl] = (unsigned char *)(*cinfo->mem->alloc_small)
721
+ ((j_common_ptr)cinfo, JPOOL_IMAGE, AC_STAT_BINS);
722
+ MEMZERO(entropy->ac_stats[tbl], AC_STAT_BINS);
723
+ }
724
+ }
725
+
726
+ /* Initialize arithmetic decoding variables */
727
+ entropy->c = 0;
728
+ entropy->a = 0;
729
+ entropy->ct = -16; /* force reading 2 initial bytes to fill C */
730
+
731
+ /* Initialize restart counter */
732
+ entropy->restarts_to_go = cinfo->restart_interval;
733
+ }
734
+
735
+
736
+ /*
737
+ * Module initialization routine for arithmetic entropy decoding.
738
+ */
739
+
740
+ GLOBAL(void)
741
+ jinit_arith_decoder(j_decompress_ptr cinfo)
742
+ {
743
+ arith_entropy_ptr entropy;
744
+ int i;
745
+
746
+ entropy = (arith_entropy_ptr)
747
+ (*cinfo->mem->alloc_small) ((j_common_ptr)cinfo, JPOOL_IMAGE,
748
+ sizeof(arith_entropy_decoder));
749
+ cinfo->entropy = (struct jpeg_entropy_decoder *)entropy;
750
+ entropy->pub.start_pass = start_pass;
751
+
752
+ /* Mark tables unallocated */
753
+ for (i = 0; i < NUM_ARITH_TBLS; i++) {
754
+ entropy->dc_stats[i] = NULL;
755
+ entropy->ac_stats[i] = NULL;
756
+ }
757
+
758
+ /* Initialize index for fixed probability estimation */
759
+ entropy->fixed_bin[0] = 113;
760
+
761
+ if (cinfo->progressive_mode) {
762
+ /* Create progression status table */
763
+ int *coef_bit_ptr, ci;
764
+ cinfo->coef_bits = (int (*)[DCTSIZE2])
765
+ (*cinfo->mem->alloc_small) ((j_common_ptr)cinfo, JPOOL_IMAGE,
766
+ cinfo->num_components * DCTSIZE2 *
767
+ sizeof(int));
768
+ coef_bit_ptr = &cinfo->coef_bits[0][0];
769
+ for (ci = 0; ci < cinfo->num_components; ci++)
770
+ for (i = 0; i < DCTSIZE2; i++)
771
+ *coef_bit_ptr++ = -1;
772
+ }
773
+ }