epeg 1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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,660 @@
1
+ ;
2
+ ; jcphuff-sse2.asm - prepare data for progressive Huffman encoding (SSE2)
3
+ ;
4
+ ; Copyright (C) 2016, 2018, Matthieu Darbois
5
+ ;
6
+ ; Based on the x86 SIMD extension for IJG JPEG library
7
+ ; Copyright (C) 1999-2006, MIYASAKA Masaru.
8
+ ; For conditions of distribution and use, see copyright notice in jsimdext.inc
9
+ ;
10
+ ; This file should be assembled with NASM (Netwide Assembler),
11
+ ; can *not* be assembled with Microsoft's MASM or any compatible
12
+ ; assembler (including Borland's Turbo Assembler).
13
+ ; NASM is available from http://nasm.sourceforge.net/ or
14
+ ; http://sourceforge.net/project/showfiles.php?group_id=6208
15
+ ;
16
+ ; This file contains an SSE2 implementation of data preparation for progressive
17
+ ; Huffman encoding. See jcphuff.c for more details.
18
+
19
+ %include "jsimdext.inc"
20
+
21
+ ; --------------------------------------------------------------------------
22
+ SECTION SEG_TEXT
23
+ BITS 32
24
+
25
+ ; --------------------------------------------------------------------------
26
+ ; Macros to load data for jsimd_encode_mcu_AC_first_prepare_sse2() and
27
+ ; jsimd_encode_mcu_AC_refine_prepare_sse2()
28
+
29
+ %macro LOAD16 0
30
+ pxor N0, N0
31
+ pxor N1, N1
32
+
33
+ mov T0, INT [LUT + 0*SIZEOF_INT]
34
+ mov T1, INT [LUT + 8*SIZEOF_INT]
35
+ pinsrw X0, word [BLOCK + T0 * 2], 0
36
+ pinsrw X1, word [BLOCK + T1 * 2], 0
37
+
38
+ mov T0, INT [LUT + 1*SIZEOF_INT]
39
+ mov T1, INT [LUT + 9*SIZEOF_INT]
40
+ pinsrw X0, word [BLOCK + T0 * 2], 1
41
+ pinsrw X1, word [BLOCK + T1 * 2], 1
42
+
43
+ mov T0, INT [LUT + 2*SIZEOF_INT]
44
+ mov T1, INT [LUT + 10*SIZEOF_INT]
45
+ pinsrw X0, word [BLOCK + T0 * 2], 2
46
+ pinsrw X1, word [BLOCK + T1 * 2], 2
47
+
48
+ mov T0, INT [LUT + 3*SIZEOF_INT]
49
+ mov T1, INT [LUT + 11*SIZEOF_INT]
50
+ pinsrw X0, word [BLOCK + T0 * 2], 3
51
+ pinsrw X1, word [BLOCK + T1 * 2], 3
52
+
53
+ mov T0, INT [LUT + 4*SIZEOF_INT]
54
+ mov T1, INT [LUT + 12*SIZEOF_INT]
55
+ pinsrw X0, word [BLOCK + T0 * 2], 4
56
+ pinsrw X1, word [BLOCK + T1 * 2], 4
57
+
58
+ mov T0, INT [LUT + 5*SIZEOF_INT]
59
+ mov T1, INT [LUT + 13*SIZEOF_INT]
60
+ pinsrw X0, word [BLOCK + T0 * 2], 5
61
+ pinsrw X1, word [BLOCK + T1 * 2], 5
62
+
63
+ mov T0, INT [LUT + 6*SIZEOF_INT]
64
+ mov T1, INT [LUT + 14*SIZEOF_INT]
65
+ pinsrw X0, word [BLOCK + T0 * 2], 6
66
+ pinsrw X1, word [BLOCK + T1 * 2], 6
67
+
68
+ mov T0, INT [LUT + 7*SIZEOF_INT]
69
+ mov T1, INT [LUT + 15*SIZEOF_INT]
70
+ pinsrw X0, word [BLOCK + T0 * 2], 7
71
+ pinsrw X1, word [BLOCK + T1 * 2], 7
72
+ %endmacro
73
+
74
+ %macro LOAD15 0
75
+ pxor N0, N0
76
+ pxor N1, N1
77
+ pxor X1, X1
78
+
79
+ mov T0, INT [LUT + 0*SIZEOF_INT]
80
+ mov T1, INT [LUT + 8*SIZEOF_INT]
81
+ pinsrw X0, word [BLOCK + T0 * 2], 0
82
+ pinsrw X1, word [BLOCK + T1 * 2], 0
83
+
84
+ mov T0, INT [LUT + 1*SIZEOF_INT]
85
+ pinsrw X0, word [BLOCK + T0 * 2], 1
86
+
87
+ mov T0, INT [LUT + 2*SIZEOF_INT]
88
+ pinsrw X0, word [BLOCK + T0 * 2], 2
89
+
90
+ mov T0, INT [LUT + 3*SIZEOF_INT]
91
+ pinsrw X0, word [BLOCK + T0 * 2], 3
92
+
93
+ mov T0, INT [LUT + 4*SIZEOF_INT]
94
+ pinsrw X0, word [BLOCK + T0 * 2], 4
95
+
96
+ mov T0, INT [LUT + 5*SIZEOF_INT]
97
+ pinsrw X0, word [BLOCK + T0 * 2], 5
98
+
99
+ mov T0, INT [LUT + 6*SIZEOF_INT]
100
+ pinsrw X0, word [BLOCK + T0 * 2], 6
101
+
102
+ mov T0, INT [LUT + 7*SIZEOF_INT]
103
+ pinsrw X0, word [BLOCK + T0 * 2], 7
104
+
105
+ cmp LENEND, 2
106
+ jl %%.ELOAD15
107
+ mov T1, INT [LUT + 9*SIZEOF_INT]
108
+ pinsrw X1, word [BLOCK + T1 * 2], 1
109
+
110
+ cmp LENEND, 3
111
+ jl %%.ELOAD15
112
+ mov T1, INT [LUT + 10*SIZEOF_INT]
113
+ pinsrw X1, word [BLOCK + T1 * 2], 2
114
+
115
+ cmp LENEND, 4
116
+ jl %%.ELOAD15
117
+ mov T1, INT [LUT + 11*SIZEOF_INT]
118
+ pinsrw X1, word [BLOCK + T1 * 2], 3
119
+
120
+ cmp LENEND, 5
121
+ jl %%.ELOAD15
122
+ mov T1, INT [LUT + 12*SIZEOF_INT]
123
+ pinsrw X1, word [BLOCK + T1 * 2], 4
124
+
125
+ cmp LENEND, 6
126
+ jl %%.ELOAD15
127
+ mov T1, INT [LUT + 13*SIZEOF_INT]
128
+ pinsrw X1, word [BLOCK + T1 * 2], 5
129
+
130
+ cmp LENEND, 7
131
+ jl %%.ELOAD15
132
+ mov T1, INT [LUT + 14*SIZEOF_INT]
133
+ pinsrw X1, word [BLOCK + T1 * 2], 6
134
+ %%.ELOAD15:
135
+ %endmacro
136
+
137
+ %macro LOAD8 0
138
+ pxor N0, N0
139
+
140
+ mov T0, INT [LUT + 0*SIZEOF_INT]
141
+ pinsrw X0, word [BLOCK + T0 * 2], 0
142
+
143
+ mov T0, INT [LUT + 1*SIZEOF_INT]
144
+ pinsrw X0, word [BLOCK + T0 * 2], 1
145
+
146
+ mov T0, INT [LUT + 2*SIZEOF_INT]
147
+ pinsrw X0, word [BLOCK + T0 * 2], 2
148
+
149
+ mov T0, INT [LUT + 3*SIZEOF_INT]
150
+ pinsrw X0, word [BLOCK + T0 * 2], 3
151
+
152
+ mov T0, INT [LUT + 4*SIZEOF_INT]
153
+ pinsrw X0, word [BLOCK + T0 * 2], 4
154
+
155
+ mov T0, INT [LUT + 5*SIZEOF_INT]
156
+ pinsrw X0, word [BLOCK + T0 * 2], 5
157
+
158
+ mov T0, INT [LUT + 6*SIZEOF_INT]
159
+ pinsrw X0, word [BLOCK + T0 * 2], 6
160
+
161
+ mov T0, INT [LUT + 7*SIZEOF_INT]
162
+ pinsrw X0, word [BLOCK + T0 * 2], 7
163
+ %endmacro
164
+
165
+ %macro LOAD7 0
166
+ pxor N0, N0
167
+ pxor X0, X0
168
+
169
+ mov T1, INT [LUT + 0*SIZEOF_INT]
170
+ pinsrw X0, word [BLOCK + T1 * 2], 0
171
+
172
+ cmp LENEND, 2
173
+ jl %%.ELOAD7
174
+ mov T1, INT [LUT + 1*SIZEOF_INT]
175
+ pinsrw X0, word [BLOCK + T1 * 2], 1
176
+
177
+ cmp LENEND, 3
178
+ jl %%.ELOAD7
179
+ mov T1, INT [LUT + 2*SIZEOF_INT]
180
+ pinsrw X0, word [BLOCK + T1 * 2], 2
181
+
182
+ cmp LENEND, 4
183
+ jl %%.ELOAD7
184
+ mov T1, INT [LUT + 3*SIZEOF_INT]
185
+ pinsrw X0, word [BLOCK + T1 * 2], 3
186
+
187
+ cmp LENEND, 5
188
+ jl %%.ELOAD7
189
+ mov T1, INT [LUT + 4*SIZEOF_INT]
190
+ pinsrw X0, word [BLOCK + T1 * 2], 4
191
+
192
+ cmp LENEND, 6
193
+ jl %%.ELOAD7
194
+ mov T1, INT [LUT + 5*SIZEOF_INT]
195
+ pinsrw X0, word [BLOCK + T1 * 2], 5
196
+
197
+ cmp LENEND, 7
198
+ jl %%.ELOAD7
199
+ mov T1, INT [LUT + 6*SIZEOF_INT]
200
+ pinsrw X0, word [BLOCK + T1 * 2], 6
201
+ %%.ELOAD7:
202
+ %endmacro
203
+
204
+ %macro REDUCE0 0
205
+ movdqa xmm0, XMMWORD [VALUES + ( 0*2)]
206
+ movdqa xmm1, XMMWORD [VALUES + ( 8*2)]
207
+ movdqa xmm2, XMMWORD [VALUES + (16*2)]
208
+ movdqa xmm3, XMMWORD [VALUES + (24*2)]
209
+ movdqa xmm4, XMMWORD [VALUES + (32*2)]
210
+ movdqa xmm5, XMMWORD [VALUES + (40*2)]
211
+ movdqa xmm6, XMMWORD [VALUES + (48*2)]
212
+
213
+ pcmpeqw xmm0, ZERO
214
+ pcmpeqw xmm1, ZERO
215
+ pcmpeqw xmm2, ZERO
216
+ pcmpeqw xmm3, ZERO
217
+ pcmpeqw xmm4, ZERO
218
+ pcmpeqw xmm5, ZERO
219
+ pcmpeqw xmm6, ZERO
220
+ pcmpeqw xmm7, XMMWORD [VALUES + (56*2)]
221
+
222
+ packsswb xmm0, xmm1
223
+ packsswb xmm2, xmm3
224
+ packsswb xmm4, xmm5
225
+ packsswb xmm6, xmm7
226
+
227
+ pmovmskb eax, xmm0
228
+ pmovmskb ecx, xmm2
229
+ pmovmskb edx, xmm4
230
+ pmovmskb esi, xmm6
231
+
232
+ shl ecx, 16
233
+ shl esi, 16
234
+
235
+ or eax, ecx
236
+ or edx, esi
237
+
238
+ not eax
239
+ not edx
240
+
241
+ mov edi, ZEROBITS
242
+
243
+ mov INT [edi], eax
244
+ mov INT [edi+SIZEOF_INT], edx
245
+ %endmacro
246
+
247
+ ;
248
+ ; Prepare data for jsimd_encode_mcu_AC_first().
249
+ ;
250
+ ; GLOBAL(void)
251
+ ; jsimd_encode_mcu_AC_first_prepare_sse2(const JCOEF *block,
252
+ ; const int *jpeg_natural_order_start,
253
+ ; int Sl, int Al, JCOEF *values,
254
+ ; size_t *zerobits)
255
+ ;
256
+ ; eax + 8 = const JCOEF *block
257
+ ; eax + 12 = const int *jpeg_natural_order_start
258
+ ; eax + 16 = int Sl
259
+ ; eax + 20 = int Al
260
+ ; eax + 24 = JCOEF *values
261
+ ; eax + 28 = size_t *zerobits
262
+
263
+ %define ZERO xmm7
264
+ %define X0 xmm0
265
+ %define X1 xmm1
266
+ %define N0 xmm2
267
+ %define N1 xmm3
268
+ %define AL xmm4
269
+ %define K eax
270
+ %define LENEND eax
271
+ %define LUT ebx
272
+ %define T0 ecx
273
+ %define T1 edx
274
+ %define BLOCK esi
275
+ %define VALUES edi
276
+ %define LEN ebp
277
+
278
+ %define ZEROBITS INT [esp + 5 * 4]
279
+
280
+ align 32
281
+ GLOBAL_FUNCTION(jsimd_encode_mcu_AC_first_prepare_sse2)
282
+
283
+ EXTN(jsimd_encode_mcu_AC_first_prepare_sse2):
284
+ push ebp
285
+ mov eax, esp ; eax = original ebp
286
+ sub esp, byte 4
287
+ and esp, byte (-SIZEOF_XMMWORD) ; align to 128 bits
288
+ mov [esp], eax
289
+ mov ebp, esp ; ebp = aligned ebp
290
+ sub esp, 4
291
+ push ebx
292
+ push ecx
293
+ ; push edx ; need not be preserved
294
+ push esi
295
+ push edi
296
+ push ebp
297
+
298
+ mov BLOCK, INT [eax + 8]
299
+ mov LUT, INT [eax + 12]
300
+ mov VALUES, INT [eax + 24]
301
+ movd AL, INT [eax + 20]
302
+ mov T0, INT [eax + 28]
303
+ mov ZEROBITS, T0
304
+ mov LEN, INT [eax + 16]
305
+ pxor ZERO, ZERO
306
+ mov K, LEN
307
+ and K, -16
308
+ shr K, 4
309
+ jz .ELOOP16
310
+ .BLOOP16:
311
+ LOAD16
312
+ pcmpgtw N0, X0
313
+ pcmpgtw N1, X1
314
+ paddw X0, N0
315
+ paddw X1, N1
316
+ pxor X0, N0
317
+ pxor X1, N1
318
+ psrlw X0, AL
319
+ psrlw X1, AL
320
+ pxor N0, X0
321
+ pxor N1, X1
322
+ movdqa XMMWORD [VALUES + (0) * 2], X0
323
+ movdqa XMMWORD [VALUES + (8) * 2], X1
324
+ movdqa XMMWORD [VALUES + (0 + DCTSIZE2) * 2], N0
325
+ movdqa XMMWORD [VALUES + (8 + DCTSIZE2) * 2], N1
326
+ add VALUES, 16*2
327
+ add LUT, 16*SIZEOF_INT
328
+ dec K
329
+ jnz .BLOOP16
330
+ test LEN, 15
331
+ je .PADDING
332
+ .ELOOP16:
333
+ mov LENEND, LEN
334
+ and LENEND, 7
335
+
336
+ test LEN, 8
337
+ jz .TRY7
338
+ test LEN, 7
339
+ jz .TRY8
340
+
341
+ LOAD15
342
+ pcmpgtw N0, X0
343
+ pcmpgtw N1, X1
344
+ paddw X0, N0
345
+ paddw X1, N1
346
+ pxor X0, N0
347
+ pxor X1, N1
348
+ psrlw X0, AL
349
+ psrlw X1, AL
350
+ pxor N0, X0
351
+ pxor N1, X1
352
+ movdqa XMMWORD [VALUES + (0) * 2], X0
353
+ movdqa XMMWORD [VALUES + (8) * 2], X1
354
+ movdqa XMMWORD [VALUES + (0 + DCTSIZE2) * 2], N0
355
+ movdqa XMMWORD [VALUES + (8 + DCTSIZE2) * 2], N1
356
+ add VALUES, 16*2
357
+ jmp .PADDING
358
+ .TRY8:
359
+ LOAD8
360
+ pcmpgtw N0, X0
361
+ paddw X0, N0
362
+ pxor X0, N0
363
+ psrlw X0, AL
364
+ pxor N0, X0
365
+ movdqa XMMWORD [VALUES + (0) * 2], X0
366
+ movdqa XMMWORD [VALUES + (0 + DCTSIZE2) * 2], N0
367
+ add VALUES, 8*2
368
+ jmp .PADDING
369
+ .TRY7:
370
+ LOAD7
371
+ pcmpgtw N0, X0
372
+ paddw X0, N0
373
+ pxor X0, N0
374
+ psrlw X0, AL
375
+ pxor N0, X0
376
+ movdqa XMMWORD [VALUES + (0) * 2], X0
377
+ movdqa XMMWORD [VALUES + (0 + DCTSIZE2) * 2], N0
378
+ add VALUES, 8*2
379
+ .PADDING:
380
+ mov K, LEN
381
+ add K, 7
382
+ and K, -8
383
+ shr K, 3
384
+ sub K, DCTSIZE2/8
385
+ jz .EPADDING
386
+ align 16
387
+ .ZEROLOOP:
388
+ movdqa XMMWORD [VALUES + 0], ZERO
389
+ add VALUES, 8*2
390
+ inc K
391
+ jnz .ZEROLOOP
392
+ .EPADDING:
393
+ sub VALUES, DCTSIZE2*2
394
+
395
+ REDUCE0
396
+
397
+ pop ebp
398
+ pop edi
399
+ pop esi
400
+ ; pop edx ; need not be preserved
401
+ pop ecx
402
+ pop ebx
403
+ mov esp, ebp ; esp <- aligned ebp
404
+ pop esp ; esp <- original ebp
405
+ pop ebp
406
+ ret
407
+
408
+ %undef ZERO
409
+ %undef X0
410
+ %undef X1
411
+ %undef N0
412
+ %undef N1
413
+ %undef AL
414
+ %undef K
415
+ %undef LUT
416
+ %undef T0
417
+ %undef T1
418
+ %undef BLOCK
419
+ %undef VALUES
420
+ %undef LEN
421
+
422
+ ;
423
+ ; Prepare data for jsimd_encode_mcu_AC_refine().
424
+ ;
425
+ ; GLOBAL(int)
426
+ ; jsimd_encode_mcu_AC_refine_prepare_sse2(const JCOEF *block,
427
+ ; const int *jpeg_natural_order_start,
428
+ ; int Sl, int Al, JCOEF *absvalues,
429
+ ; size_t *bits)
430
+ ;
431
+ ; eax + 8 = const JCOEF *block
432
+ ; eax + 12 = const int *jpeg_natural_order_start
433
+ ; eax + 16 = int Sl
434
+ ; eax + 20 = int Al
435
+ ; eax + 24 = JCOEF *values
436
+ ; eax + 28 = size_t *bits
437
+
438
+ %define ZERO xmm7
439
+ %define ONE xmm5
440
+ %define X0 xmm0
441
+ %define X1 xmm1
442
+ %define N0 xmm2
443
+ %define N1 xmm3
444
+ %define AL xmm4
445
+ %define K eax
446
+ %define LENEND eax
447
+ %define LUT ebx
448
+ %define T0 ecx
449
+ %define T0w cx
450
+ %define T1 edx
451
+ %define BLOCK esi
452
+ %define VALUES edi
453
+ %define KK ebp
454
+
455
+ %define ZEROBITS INT [esp + 5 * 4]
456
+ %define EOB INT [esp + 5 * 4 + 4]
457
+ %define LEN INT [esp + 5 * 4 + 8]
458
+
459
+ align 32
460
+ GLOBAL_FUNCTION(jsimd_encode_mcu_AC_refine_prepare_sse2)
461
+
462
+ EXTN(jsimd_encode_mcu_AC_refine_prepare_sse2):
463
+ push ebp
464
+ mov eax, esp ; eax = original ebp
465
+ sub esp, byte 4
466
+ and esp, byte (-SIZEOF_XMMWORD) ; align to 128 bits
467
+ mov [esp], eax
468
+ mov ebp, esp ; ebp = aligned ebp
469
+ sub esp, 16
470
+ push ebx
471
+ push ecx
472
+ ; push edx ; need not be preserved
473
+ push esi
474
+ push edi
475
+ push ebp
476
+
477
+ pcmpeqw ONE, ONE
478
+ psrlw ONE, 15
479
+ mov BLOCK, INT [eax + 8]
480
+ mov LUT, INT [eax + 12]
481
+ mov VALUES, INT [eax + 24]
482
+ movd AL, INT [eax + 20]
483
+ mov T0, INT [eax + 28]
484
+ mov K, INT [eax + 16]
485
+ mov INT [T0 + 2 * SIZEOF_INT], -1
486
+ mov INT [T0 + 3 * SIZEOF_INT], -1
487
+ mov ZEROBITS, T0
488
+ mov LEN, K
489
+ pxor ZERO, ZERO
490
+ and K, -16
491
+ mov EOB, 0
492
+ xor KK, KK
493
+ shr K, 4
494
+ jz .ELOOPR16
495
+ .BLOOPR16:
496
+ LOAD16
497
+ pcmpgtw N0, X0
498
+ pcmpgtw N1, X1
499
+ paddw X0, N0
500
+ paddw X1, N1
501
+ pxor X0, N0
502
+ pxor X1, N1
503
+ psrlw X0, AL
504
+ psrlw X1, AL
505
+ movdqa XMMWORD [VALUES + (0) * 2], X0
506
+ movdqa XMMWORD [VALUES + (8) * 2], X1
507
+ pcmpeqw X0, ONE
508
+ pcmpeqw X1, ONE
509
+ packsswb N0, N1
510
+ packsswb X0, X1
511
+ pmovmskb T0, N0 ; lsignbits.val16u[k>>4] = _mm_movemask_epi8(neg);
512
+ mov T1, ZEROBITS
513
+ not T0
514
+ mov word [T1 + 2 * SIZEOF_INT + KK], T0w
515
+ pmovmskb T1, X0 ; idx = _mm_movemask_epi8(x1);
516
+ bsr T1, T1 ; idx = 16 - (__builtin_clz(idx)>>1);
517
+ jz .CONTINUER16 ; if (idx) {
518
+ lea T1, [T1+KK*8]
519
+ mov EOB, T1 ; EOB = k + idx;
520
+ .CONTINUER16:
521
+ add VALUES, 16*2
522
+ add LUT, 16*SIZEOF_INT
523
+ add KK, 2
524
+ dec K
525
+ jnz .BLOOPR16
526
+ .ELOOPR16:
527
+ mov LENEND, LEN
528
+
529
+ test LENEND, 8
530
+ jz .TRYR7
531
+ test LENEND, 7
532
+ jz .TRYR8
533
+
534
+ and LENEND, 7
535
+ LOAD15
536
+ pcmpgtw N0, X0
537
+ pcmpgtw N1, X1
538
+ paddw X0, N0
539
+ paddw X1, N1
540
+ pxor X0, N0
541
+ pxor X1, N1
542
+ psrlw X0, AL
543
+ psrlw X1, AL
544
+ movdqa XMMWORD [VALUES + (0) * 2], X0
545
+ movdqa XMMWORD [VALUES + (8) * 2], X1
546
+ pcmpeqw X0, ONE
547
+ pcmpeqw X1, ONE
548
+ packsswb N0, N1
549
+ packsswb X0, X1
550
+ pmovmskb T0, N0 ; lsignbits.val16u[k>>4] = _mm_movemask_epi8(neg);
551
+ mov T1, ZEROBITS
552
+ not T0
553
+ mov word [T1 + 2 * SIZEOF_INT + KK], T0w
554
+ pmovmskb T1, X0 ; idx = _mm_movemask_epi8(x1);
555
+ bsr T1, T1 ; idx = 16 - (__builtin_clz(idx)>>1);
556
+ jz .CONTINUER15 ; if (idx) {
557
+ lea T1, [T1+KK*8]
558
+ mov EOB, T1 ; EOB = k + idx;
559
+ .CONTINUER15:
560
+ add VALUES, 16*2
561
+ jmp .PADDINGR
562
+ .TRYR8:
563
+ LOAD8
564
+
565
+ pcmpgtw N0, X0
566
+ paddw X0, N0
567
+ pxor X0, N0
568
+ psrlw X0, AL
569
+ movdqa XMMWORD [VALUES + (0) * 2], X0
570
+ pcmpeqw X0, ONE
571
+ packsswb N0, ZERO
572
+ packsswb X0, ZERO
573
+ pmovmskb T0, N0 ; lsignbits.val16u[k>>4] = _mm_movemask_epi8(neg);
574
+ mov T1, ZEROBITS
575
+ not T0
576
+ mov word [T1 + 2 * SIZEOF_INT + KK], T0w
577
+ pmovmskb T1, X0 ; idx = _mm_movemask_epi8(x1);
578
+ bsr T1, T1 ; idx = 16 - (__builtin_clz(idx)>>1);
579
+ jz .CONTINUER8 ; if (idx) {
580
+ lea T1, [T1+KK*8]
581
+ mov EOB, T1 ; EOB = k + idx;
582
+ .CONTINUER8:
583
+ add VALUES, 8*2
584
+ jmp .PADDINGR
585
+ .TRYR7:
586
+ and LENEND, 7
587
+ LOAD7
588
+
589
+ pcmpgtw N0, X0
590
+ paddw X0, N0
591
+ pxor X0, N0
592
+ psrlw X0, AL
593
+ movdqa XMMWORD [VALUES + (0) * 2], X0
594
+ pcmpeqw X0, ONE
595
+ packsswb N0, ZERO
596
+ packsswb X0, ZERO
597
+ pmovmskb T0, N0 ; lsignbits.val16u[k>>4] = _mm_movemask_epi8(neg);
598
+ mov T1, ZEROBITS
599
+ not T0
600
+ mov word [T1 + 2 * SIZEOF_INT + KK], T0w
601
+ pmovmskb T1, X0 ; idx = _mm_movemask_epi8(x1);
602
+ bsr T1, T1 ; idx = 16 - (__builtin_clz(idx)>>1);
603
+ jz .CONTINUER7 ; if (idx) {
604
+ lea T1, [T1+KK*8]
605
+ mov EOB, T1 ; EOB = k + idx;
606
+ .CONTINUER7:
607
+ add VALUES, 8*2
608
+ .PADDINGR:
609
+ mov K, LEN
610
+ add K, 7
611
+ and K, -8
612
+ shr K, 3
613
+ sub K, DCTSIZE2/8
614
+ jz .EPADDINGR
615
+ align 16
616
+ .ZEROLOOPR:
617
+ movdqa XMMWORD [VALUES + 0], ZERO
618
+ add VALUES, 8*2
619
+ inc K
620
+ jnz .ZEROLOOPR
621
+ .EPADDINGR:
622
+ sub VALUES, DCTSIZE2*2
623
+
624
+ REDUCE0
625
+
626
+ mov eax, EOB
627
+
628
+ pop ebp
629
+ pop edi
630
+ pop esi
631
+ ; pop edx ; need not be preserved
632
+ pop ecx
633
+ pop ebx
634
+ mov esp, ebp ; esp <- aligned ebp
635
+ pop esp ; esp <- original ebp
636
+ pop ebp
637
+ ret
638
+
639
+ %undef ZERO
640
+ %undef ONE
641
+ %undef X0
642
+ %undef X1
643
+ %undef N0
644
+ %undef N1
645
+ %undef AL
646
+ %undef K
647
+ %undef KK
648
+ %undef EOB
649
+ %undef SIGN
650
+ %undef LUT
651
+ %undef T0
652
+ %undef T1
653
+ %undef BLOCK
654
+ %undef VALUES
655
+ %undef LEN
656
+ %undef LENEND
657
+
658
+ ; For some reason, the OS X linker does not honor the request to align the
659
+ ; segment unless we do this.
660
+ align 32