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,571 @@
1
+ ;
2
+ ; jidctflt.asm - floating-point IDCT (SSE & MMX)
3
+ ;
4
+ ; Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
5
+ ; Copyright (C) 2016, D. R. Commander.
6
+ ;
7
+ ; Based on the x86 SIMD extension for IJG JPEG library
8
+ ; Copyright (C) 1999-2006, MIYASAKA Masaru.
9
+ ; For conditions of distribution and use, see copyright notice in jsimdext.inc
10
+ ;
11
+ ; This file should be assembled with NASM (Netwide Assembler),
12
+ ; can *not* be assembled with Microsoft's MASM or any compatible
13
+ ; assembler (including Borland's Turbo Assembler).
14
+ ; NASM is available from http://nasm.sourceforge.net/ or
15
+ ; http://sourceforge.net/project/showfiles.php?group_id=6208
16
+ ;
17
+ ; This file contains a floating-point implementation of the inverse DCT
18
+ ; (Discrete Cosine Transform). The following code is based directly on
19
+ ; the IJG's original jidctflt.c; see the jidctflt.c for more details.
20
+
21
+ %include "jsimdext.inc"
22
+ %include "jdct.inc"
23
+
24
+ ; --------------------------------------------------------------------------
25
+
26
+ %macro unpcklps2 2 ; %1=(0 1 2 3) / %2=(4 5 6 7) => %1=(0 1 4 5)
27
+ shufps %1, %2, 0x44
28
+ %endmacro
29
+
30
+ %macro unpckhps2 2 ; %1=(0 1 2 3) / %2=(4 5 6 7) => %1=(2 3 6 7)
31
+ shufps %1, %2, 0xEE
32
+ %endmacro
33
+
34
+ ; --------------------------------------------------------------------------
35
+ SECTION SEG_CONST
36
+
37
+ alignz 32
38
+ GLOBAL_DATA(jconst_idct_float_sse)
39
+
40
+ EXTN(jconst_idct_float_sse):
41
+
42
+ PD_1_414 times 4 dd 1.414213562373095048801689
43
+ PD_1_847 times 4 dd 1.847759065022573512256366
44
+ PD_1_082 times 4 dd 1.082392200292393968799446
45
+ PD_M2_613 times 4 dd -2.613125929752753055713286
46
+ PD_0_125 times 4 dd 0.125 ; 1/8
47
+ PB_CENTERJSAMP times 8 db CENTERJSAMPLE
48
+
49
+ alignz 32
50
+
51
+ ; --------------------------------------------------------------------------
52
+ SECTION SEG_TEXT
53
+ BITS 32
54
+ ;
55
+ ; Perform dequantization and inverse DCT on one block of coefficients.
56
+ ;
57
+ ; GLOBAL(void)
58
+ ; jsimd_idct_float_sse(void *dct_table, JCOEFPTR coef_block,
59
+ ; JSAMPARRAY output_buf, JDIMENSION output_col)
60
+ ;
61
+
62
+ %define dct_table(b) (b) + 8 ; void *dct_table
63
+ %define coef_block(b) (b) + 12 ; JCOEFPTR coef_block
64
+ %define output_buf(b) (b) + 16 ; JSAMPARRAY output_buf
65
+ %define output_col(b) (b) + 20 ; JDIMENSION output_col
66
+
67
+ %define original_ebp ebp + 0
68
+ %define wk(i) ebp - (WK_NUM - (i)) * SIZEOF_XMMWORD
69
+ ; xmmword wk[WK_NUM]
70
+ %define WK_NUM 2
71
+ %define workspace wk(0) - DCTSIZE2 * SIZEOF_FAST_FLOAT
72
+ ; FAST_FLOAT workspace[DCTSIZE2]
73
+
74
+ align 32
75
+ GLOBAL_FUNCTION(jsimd_idct_float_sse)
76
+
77
+ EXTN(jsimd_idct_float_sse):
78
+ push ebp
79
+ mov eax, esp ; eax = original ebp
80
+ sub esp, byte 4
81
+ and esp, byte (-SIZEOF_XMMWORD) ; align to 128 bits
82
+ mov [esp], eax
83
+ mov ebp, esp ; ebp = aligned ebp
84
+ lea esp, [workspace]
85
+ push ebx
86
+ ; push ecx ; need not be preserved
87
+ ; push edx ; need not be preserved
88
+ push esi
89
+ push edi
90
+
91
+ get_GOT ebx ; get GOT address
92
+
93
+ ; ---- Pass 1: process columns from input, store into work array.
94
+
95
+ ; mov eax, [original_ebp]
96
+ mov edx, POINTER [dct_table(eax)] ; quantptr
97
+ mov esi, JCOEFPTR [coef_block(eax)] ; inptr
98
+ lea edi, [workspace] ; FAST_FLOAT *wsptr
99
+ mov ecx, DCTSIZE/4 ; ctr
100
+ alignx 16, 7
101
+ .columnloop:
102
+ %ifndef NO_ZERO_COLUMN_TEST_FLOAT_SSE
103
+ mov eax, dword [DWBLOCK(1,0,esi,SIZEOF_JCOEF)]
104
+ or eax, dword [DWBLOCK(2,0,esi,SIZEOF_JCOEF)]
105
+ jnz near .columnDCT
106
+
107
+ movq mm0, MMWORD [MMBLOCK(1,0,esi,SIZEOF_JCOEF)]
108
+ movq mm1, MMWORD [MMBLOCK(2,0,esi,SIZEOF_JCOEF)]
109
+ por mm0, MMWORD [MMBLOCK(3,0,esi,SIZEOF_JCOEF)]
110
+ por mm1, MMWORD [MMBLOCK(4,0,esi,SIZEOF_JCOEF)]
111
+ por mm0, MMWORD [MMBLOCK(5,0,esi,SIZEOF_JCOEF)]
112
+ por mm1, MMWORD [MMBLOCK(6,0,esi,SIZEOF_JCOEF)]
113
+ por mm0, MMWORD [MMBLOCK(7,0,esi,SIZEOF_JCOEF)]
114
+ por mm1, mm0
115
+ packsswb mm1, mm1
116
+ movd eax, mm1
117
+ test eax, eax
118
+ jnz short .columnDCT
119
+
120
+ ; -- AC terms all zero
121
+
122
+ movq mm0, MMWORD [MMBLOCK(0,0,esi,SIZEOF_JCOEF)]
123
+
124
+ punpckhwd mm1, mm0 ; mm1=(** 02 ** 03)
125
+ punpcklwd mm0, mm0 ; mm0=(00 00 01 01)
126
+ psrad mm1, (DWORD_BIT-WORD_BIT) ; mm1=in0H=(02 03)
127
+ psrad mm0, (DWORD_BIT-WORD_BIT) ; mm0=in0L=(00 01)
128
+ cvtpi2ps xmm3, mm1 ; xmm3=(02 03 ** **)
129
+ cvtpi2ps xmm0, mm0 ; xmm0=(00 01 ** **)
130
+ movlhps xmm0, xmm3 ; xmm0=in0=(00 01 02 03)
131
+
132
+ mulps xmm0, XMMWORD [XMMBLOCK(0,0,edx,SIZEOF_FLOAT_MULT_TYPE)]
133
+
134
+ movaps xmm1, xmm0
135
+ movaps xmm2, xmm0
136
+ movaps xmm3, xmm0
137
+
138
+ shufps xmm0, xmm0, 0x00 ; xmm0=(00 00 00 00)
139
+ shufps xmm1, xmm1, 0x55 ; xmm1=(01 01 01 01)
140
+ shufps xmm2, xmm2, 0xAA ; xmm2=(02 02 02 02)
141
+ shufps xmm3, xmm3, 0xFF ; xmm3=(03 03 03 03)
142
+
143
+ movaps XMMWORD [XMMBLOCK(0,0,edi,SIZEOF_FAST_FLOAT)], xmm0
144
+ movaps XMMWORD [XMMBLOCK(0,1,edi,SIZEOF_FAST_FLOAT)], xmm0
145
+ movaps XMMWORD [XMMBLOCK(1,0,edi,SIZEOF_FAST_FLOAT)], xmm1
146
+ movaps XMMWORD [XMMBLOCK(1,1,edi,SIZEOF_FAST_FLOAT)], xmm1
147
+ movaps XMMWORD [XMMBLOCK(2,0,edi,SIZEOF_FAST_FLOAT)], xmm2
148
+ movaps XMMWORD [XMMBLOCK(2,1,edi,SIZEOF_FAST_FLOAT)], xmm2
149
+ movaps XMMWORD [XMMBLOCK(3,0,edi,SIZEOF_FAST_FLOAT)], xmm3
150
+ movaps XMMWORD [XMMBLOCK(3,1,edi,SIZEOF_FAST_FLOAT)], xmm3
151
+ jmp near .nextcolumn
152
+ alignx 16, 7
153
+ %endif
154
+ .columnDCT:
155
+
156
+ ; -- Even part
157
+
158
+ movq mm0, MMWORD [MMBLOCK(0,0,esi,SIZEOF_JCOEF)]
159
+ movq mm1, MMWORD [MMBLOCK(2,0,esi,SIZEOF_JCOEF)]
160
+ movq mm2, MMWORD [MMBLOCK(4,0,esi,SIZEOF_JCOEF)]
161
+ movq mm3, MMWORD [MMBLOCK(6,0,esi,SIZEOF_JCOEF)]
162
+
163
+ punpckhwd mm4, mm0 ; mm4=(** 02 ** 03)
164
+ punpcklwd mm0, mm0 ; mm0=(00 00 01 01)
165
+ punpckhwd mm5, mm1 ; mm5=(** 22 ** 23)
166
+ punpcklwd mm1, mm1 ; mm1=(20 20 21 21)
167
+
168
+ psrad mm4, (DWORD_BIT-WORD_BIT) ; mm4=in0H=(02 03)
169
+ psrad mm0, (DWORD_BIT-WORD_BIT) ; mm0=in0L=(00 01)
170
+ cvtpi2ps xmm4, mm4 ; xmm4=(02 03 ** **)
171
+ cvtpi2ps xmm0, mm0 ; xmm0=(00 01 ** **)
172
+ psrad mm5, (DWORD_BIT-WORD_BIT) ; mm5=in2H=(22 23)
173
+ psrad mm1, (DWORD_BIT-WORD_BIT) ; mm1=in2L=(20 21)
174
+ cvtpi2ps xmm5, mm5 ; xmm5=(22 23 ** **)
175
+ cvtpi2ps xmm1, mm1 ; xmm1=(20 21 ** **)
176
+
177
+ punpckhwd mm6, mm2 ; mm6=(** 42 ** 43)
178
+ punpcklwd mm2, mm2 ; mm2=(40 40 41 41)
179
+ punpckhwd mm7, mm3 ; mm7=(** 62 ** 63)
180
+ punpcklwd mm3, mm3 ; mm3=(60 60 61 61)
181
+
182
+ psrad mm6, (DWORD_BIT-WORD_BIT) ; mm6=in4H=(42 43)
183
+ psrad mm2, (DWORD_BIT-WORD_BIT) ; mm2=in4L=(40 41)
184
+ cvtpi2ps xmm6, mm6 ; xmm6=(42 43 ** **)
185
+ cvtpi2ps xmm2, mm2 ; xmm2=(40 41 ** **)
186
+ psrad mm7, (DWORD_BIT-WORD_BIT) ; mm7=in6H=(62 63)
187
+ psrad mm3, (DWORD_BIT-WORD_BIT) ; mm3=in6L=(60 61)
188
+ cvtpi2ps xmm7, mm7 ; xmm7=(62 63 ** **)
189
+ cvtpi2ps xmm3, mm3 ; xmm3=(60 61 ** **)
190
+
191
+ movlhps xmm0, xmm4 ; xmm0=in0=(00 01 02 03)
192
+ movlhps xmm1, xmm5 ; xmm1=in2=(20 21 22 23)
193
+ mulps xmm0, XMMWORD [XMMBLOCK(0,0,edx,SIZEOF_FLOAT_MULT_TYPE)]
194
+ mulps xmm1, XMMWORD [XMMBLOCK(2,0,edx,SIZEOF_FLOAT_MULT_TYPE)]
195
+
196
+ movlhps xmm2, xmm6 ; xmm2=in4=(40 41 42 43)
197
+ movlhps xmm3, xmm7 ; xmm3=in6=(60 61 62 63)
198
+ mulps xmm2, XMMWORD [XMMBLOCK(4,0,edx,SIZEOF_FLOAT_MULT_TYPE)]
199
+ mulps xmm3, XMMWORD [XMMBLOCK(6,0,edx,SIZEOF_FLOAT_MULT_TYPE)]
200
+
201
+ movaps xmm4, xmm0
202
+ movaps xmm5, xmm1
203
+ subps xmm0, xmm2 ; xmm0=tmp11
204
+ subps xmm1, xmm3
205
+ addps xmm4, xmm2 ; xmm4=tmp10
206
+ addps xmm5, xmm3 ; xmm5=tmp13
207
+
208
+ mulps xmm1, [GOTOFF(ebx,PD_1_414)]
209
+ subps xmm1, xmm5 ; xmm1=tmp12
210
+
211
+ movaps xmm6, xmm4
212
+ movaps xmm7, xmm0
213
+ subps xmm4, xmm5 ; xmm4=tmp3
214
+ subps xmm0, xmm1 ; xmm0=tmp2
215
+ addps xmm6, xmm5 ; xmm6=tmp0
216
+ addps xmm7, xmm1 ; xmm7=tmp1
217
+
218
+ movaps XMMWORD [wk(1)], xmm4 ; tmp3
219
+ movaps XMMWORD [wk(0)], xmm0 ; tmp2
220
+
221
+ ; -- Odd part
222
+
223
+ movq mm4, MMWORD [MMBLOCK(1,0,esi,SIZEOF_JCOEF)]
224
+ movq mm0, MMWORD [MMBLOCK(3,0,esi,SIZEOF_JCOEF)]
225
+ movq mm5, MMWORD [MMBLOCK(5,0,esi,SIZEOF_JCOEF)]
226
+ movq mm1, MMWORD [MMBLOCK(7,0,esi,SIZEOF_JCOEF)]
227
+
228
+ punpckhwd mm6, mm4 ; mm6=(** 12 ** 13)
229
+ punpcklwd mm4, mm4 ; mm4=(10 10 11 11)
230
+ punpckhwd mm2, mm0 ; mm2=(** 32 ** 33)
231
+ punpcklwd mm0, mm0 ; mm0=(30 30 31 31)
232
+
233
+ psrad mm6, (DWORD_BIT-WORD_BIT) ; mm6=in1H=(12 13)
234
+ psrad mm4, (DWORD_BIT-WORD_BIT) ; mm4=in1L=(10 11)
235
+ cvtpi2ps xmm4, mm6 ; xmm4=(12 13 ** **)
236
+ cvtpi2ps xmm2, mm4 ; xmm2=(10 11 ** **)
237
+ psrad mm2, (DWORD_BIT-WORD_BIT) ; mm2=in3H=(32 33)
238
+ psrad mm0, (DWORD_BIT-WORD_BIT) ; mm0=in3L=(30 31)
239
+ cvtpi2ps xmm0, mm2 ; xmm0=(32 33 ** **)
240
+ cvtpi2ps xmm3, mm0 ; xmm3=(30 31 ** **)
241
+
242
+ punpckhwd mm7, mm5 ; mm7=(** 52 ** 53)
243
+ punpcklwd mm5, mm5 ; mm5=(50 50 51 51)
244
+ punpckhwd mm3, mm1 ; mm3=(** 72 ** 73)
245
+ punpcklwd mm1, mm1 ; mm1=(70 70 71 71)
246
+
247
+ movlhps xmm2, xmm4 ; xmm2=in1=(10 11 12 13)
248
+ movlhps xmm3, xmm0 ; xmm3=in3=(30 31 32 33)
249
+
250
+ psrad mm7, (DWORD_BIT-WORD_BIT) ; mm7=in5H=(52 53)
251
+ psrad mm5, (DWORD_BIT-WORD_BIT) ; mm5=in5L=(50 51)
252
+ cvtpi2ps xmm4, mm7 ; xmm4=(52 53 ** **)
253
+ cvtpi2ps xmm5, mm5 ; xmm5=(50 51 ** **)
254
+ psrad mm3, (DWORD_BIT-WORD_BIT) ; mm3=in7H=(72 73)
255
+ psrad mm1, (DWORD_BIT-WORD_BIT) ; mm1=in7L=(70 71)
256
+ cvtpi2ps xmm0, mm3 ; xmm0=(72 73 ** **)
257
+ cvtpi2ps xmm1, mm1 ; xmm1=(70 71 ** **)
258
+
259
+ mulps xmm2, XMMWORD [XMMBLOCK(1,0,edx,SIZEOF_FLOAT_MULT_TYPE)]
260
+ mulps xmm3, XMMWORD [XMMBLOCK(3,0,edx,SIZEOF_FLOAT_MULT_TYPE)]
261
+
262
+ movlhps xmm5, xmm4 ; xmm5=in5=(50 51 52 53)
263
+ movlhps xmm1, xmm0 ; xmm1=in7=(70 71 72 73)
264
+ mulps xmm5, XMMWORD [XMMBLOCK(5,0,edx,SIZEOF_FLOAT_MULT_TYPE)]
265
+ mulps xmm1, XMMWORD [XMMBLOCK(7,0,edx,SIZEOF_FLOAT_MULT_TYPE)]
266
+
267
+ movaps xmm4, xmm2
268
+ movaps xmm0, xmm5
269
+ addps xmm2, xmm1 ; xmm2=z11
270
+ addps xmm5, xmm3 ; xmm5=z13
271
+ subps xmm4, xmm1 ; xmm4=z12
272
+ subps xmm0, xmm3 ; xmm0=z10
273
+
274
+ movaps xmm1, xmm2
275
+ subps xmm2, xmm5
276
+ addps xmm1, xmm5 ; xmm1=tmp7
277
+
278
+ mulps xmm2, [GOTOFF(ebx,PD_1_414)] ; xmm2=tmp11
279
+
280
+ movaps xmm3, xmm0
281
+ addps xmm0, xmm4
282
+ mulps xmm0, [GOTOFF(ebx,PD_1_847)] ; xmm0=z5
283
+ mulps xmm3, [GOTOFF(ebx,PD_M2_613)] ; xmm3=(z10 * -2.613125930)
284
+ mulps xmm4, [GOTOFF(ebx,PD_1_082)] ; xmm4=(z12 * 1.082392200)
285
+ addps xmm3, xmm0 ; xmm3=tmp12
286
+ subps xmm4, xmm0 ; xmm4=tmp10
287
+
288
+ ; -- Final output stage
289
+
290
+ subps xmm3, xmm1 ; xmm3=tmp6
291
+ movaps xmm5, xmm6
292
+ movaps xmm0, xmm7
293
+ addps xmm6, xmm1 ; xmm6=data0=(00 01 02 03)
294
+ addps xmm7, xmm3 ; xmm7=data1=(10 11 12 13)
295
+ subps xmm5, xmm1 ; xmm5=data7=(70 71 72 73)
296
+ subps xmm0, xmm3 ; xmm0=data6=(60 61 62 63)
297
+ subps xmm2, xmm3 ; xmm2=tmp5
298
+
299
+ movaps xmm1, xmm6 ; transpose coefficients(phase 1)
300
+ unpcklps xmm6, xmm7 ; xmm6=(00 10 01 11)
301
+ unpckhps xmm1, xmm7 ; xmm1=(02 12 03 13)
302
+ movaps xmm3, xmm0 ; transpose coefficients(phase 1)
303
+ unpcklps xmm0, xmm5 ; xmm0=(60 70 61 71)
304
+ unpckhps xmm3, xmm5 ; xmm3=(62 72 63 73)
305
+
306
+ movaps xmm7, XMMWORD [wk(0)] ; xmm7=tmp2
307
+ movaps xmm5, XMMWORD [wk(1)] ; xmm5=tmp3
308
+
309
+ movaps XMMWORD [wk(0)], xmm0 ; wk(0)=(60 70 61 71)
310
+ movaps XMMWORD [wk(1)], xmm3 ; wk(1)=(62 72 63 73)
311
+
312
+ addps xmm4, xmm2 ; xmm4=tmp4
313
+ movaps xmm0, xmm7
314
+ movaps xmm3, xmm5
315
+ addps xmm7, xmm2 ; xmm7=data2=(20 21 22 23)
316
+ addps xmm5, xmm4 ; xmm5=data4=(40 41 42 43)
317
+ subps xmm0, xmm2 ; xmm0=data5=(50 51 52 53)
318
+ subps xmm3, xmm4 ; xmm3=data3=(30 31 32 33)
319
+
320
+ movaps xmm2, xmm7 ; transpose coefficients(phase 1)
321
+ unpcklps xmm7, xmm3 ; xmm7=(20 30 21 31)
322
+ unpckhps xmm2, xmm3 ; xmm2=(22 32 23 33)
323
+ movaps xmm4, xmm5 ; transpose coefficients(phase 1)
324
+ unpcklps xmm5, xmm0 ; xmm5=(40 50 41 51)
325
+ unpckhps xmm4, xmm0 ; xmm4=(42 52 43 53)
326
+
327
+ movaps xmm3, xmm6 ; transpose coefficients(phase 2)
328
+ unpcklps2 xmm6, xmm7 ; xmm6=(00 10 20 30)
329
+ unpckhps2 xmm3, xmm7 ; xmm3=(01 11 21 31)
330
+ movaps xmm0, xmm1 ; transpose coefficients(phase 2)
331
+ unpcklps2 xmm1, xmm2 ; xmm1=(02 12 22 32)
332
+ unpckhps2 xmm0, xmm2 ; xmm0=(03 13 23 33)
333
+
334
+ movaps xmm7, XMMWORD [wk(0)] ; xmm7=(60 70 61 71)
335
+ movaps xmm2, XMMWORD [wk(1)] ; xmm2=(62 72 63 73)
336
+
337
+ movaps XMMWORD [XMMBLOCK(0,0,edi,SIZEOF_FAST_FLOAT)], xmm6
338
+ movaps XMMWORD [XMMBLOCK(1,0,edi,SIZEOF_FAST_FLOAT)], xmm3
339
+ movaps XMMWORD [XMMBLOCK(2,0,edi,SIZEOF_FAST_FLOAT)], xmm1
340
+ movaps XMMWORD [XMMBLOCK(3,0,edi,SIZEOF_FAST_FLOAT)], xmm0
341
+
342
+ movaps xmm6, xmm5 ; transpose coefficients(phase 2)
343
+ unpcklps2 xmm5, xmm7 ; xmm5=(40 50 60 70)
344
+ unpckhps2 xmm6, xmm7 ; xmm6=(41 51 61 71)
345
+ movaps xmm3, xmm4 ; transpose coefficients(phase 2)
346
+ unpcklps2 xmm4, xmm2 ; xmm4=(42 52 62 72)
347
+ unpckhps2 xmm3, xmm2 ; xmm3=(43 53 63 73)
348
+
349
+ movaps XMMWORD [XMMBLOCK(0,1,edi,SIZEOF_FAST_FLOAT)], xmm5
350
+ movaps XMMWORD [XMMBLOCK(1,1,edi,SIZEOF_FAST_FLOAT)], xmm6
351
+ movaps XMMWORD [XMMBLOCK(2,1,edi,SIZEOF_FAST_FLOAT)], xmm4
352
+ movaps XMMWORD [XMMBLOCK(3,1,edi,SIZEOF_FAST_FLOAT)], xmm3
353
+
354
+ .nextcolumn:
355
+ add esi, byte 4*SIZEOF_JCOEF ; coef_block
356
+ add edx, byte 4*SIZEOF_FLOAT_MULT_TYPE ; quantptr
357
+ add edi, 4*DCTSIZE*SIZEOF_FAST_FLOAT ; wsptr
358
+ dec ecx ; ctr
359
+ jnz near .columnloop
360
+
361
+ ; -- Prefetch the next coefficient block
362
+
363
+ prefetchnta [esi + (DCTSIZE2-8)*SIZEOF_JCOEF + 0*32]
364
+ prefetchnta [esi + (DCTSIZE2-8)*SIZEOF_JCOEF + 1*32]
365
+ prefetchnta [esi + (DCTSIZE2-8)*SIZEOF_JCOEF + 2*32]
366
+ prefetchnta [esi + (DCTSIZE2-8)*SIZEOF_JCOEF + 3*32]
367
+
368
+ ; ---- Pass 2: process rows from work array, store into output array.
369
+
370
+ mov eax, [original_ebp]
371
+ lea esi, [workspace] ; FAST_FLOAT *wsptr
372
+ mov edi, JSAMPARRAY [output_buf(eax)] ; (JSAMPROW *)
373
+ mov eax, JDIMENSION [output_col(eax)]
374
+ mov ecx, DCTSIZE/4 ; ctr
375
+ alignx 16, 7
376
+ .rowloop:
377
+
378
+ ; -- Even part
379
+
380
+ movaps xmm0, XMMWORD [XMMBLOCK(0,0,esi,SIZEOF_FAST_FLOAT)]
381
+ movaps xmm1, XMMWORD [XMMBLOCK(2,0,esi,SIZEOF_FAST_FLOAT)]
382
+ movaps xmm2, XMMWORD [XMMBLOCK(4,0,esi,SIZEOF_FAST_FLOAT)]
383
+ movaps xmm3, XMMWORD [XMMBLOCK(6,0,esi,SIZEOF_FAST_FLOAT)]
384
+
385
+ movaps xmm4, xmm0
386
+ movaps xmm5, xmm1
387
+ subps xmm0, xmm2 ; xmm0=tmp11
388
+ subps xmm1, xmm3
389
+ addps xmm4, xmm2 ; xmm4=tmp10
390
+ addps xmm5, xmm3 ; xmm5=tmp13
391
+
392
+ mulps xmm1, [GOTOFF(ebx,PD_1_414)]
393
+ subps xmm1, xmm5 ; xmm1=tmp12
394
+
395
+ movaps xmm6, xmm4
396
+ movaps xmm7, xmm0
397
+ subps xmm4, xmm5 ; xmm4=tmp3
398
+ subps xmm0, xmm1 ; xmm0=tmp2
399
+ addps xmm6, xmm5 ; xmm6=tmp0
400
+ addps xmm7, xmm1 ; xmm7=tmp1
401
+
402
+ movaps XMMWORD [wk(1)], xmm4 ; tmp3
403
+ movaps XMMWORD [wk(0)], xmm0 ; tmp2
404
+
405
+ ; -- Odd part
406
+
407
+ movaps xmm2, XMMWORD [XMMBLOCK(1,0,esi,SIZEOF_FAST_FLOAT)]
408
+ movaps xmm3, XMMWORD [XMMBLOCK(3,0,esi,SIZEOF_FAST_FLOAT)]
409
+ movaps xmm5, XMMWORD [XMMBLOCK(5,0,esi,SIZEOF_FAST_FLOAT)]
410
+ movaps xmm1, XMMWORD [XMMBLOCK(7,0,esi,SIZEOF_FAST_FLOAT)]
411
+
412
+ movaps xmm4, xmm2
413
+ movaps xmm0, xmm5
414
+ addps xmm2, xmm1 ; xmm2=z11
415
+ addps xmm5, xmm3 ; xmm5=z13
416
+ subps xmm4, xmm1 ; xmm4=z12
417
+ subps xmm0, xmm3 ; xmm0=z10
418
+
419
+ movaps xmm1, xmm2
420
+ subps xmm2, xmm5
421
+ addps xmm1, xmm5 ; xmm1=tmp7
422
+
423
+ mulps xmm2, [GOTOFF(ebx,PD_1_414)] ; xmm2=tmp11
424
+
425
+ movaps xmm3, xmm0
426
+ addps xmm0, xmm4
427
+ mulps xmm0, [GOTOFF(ebx,PD_1_847)] ; xmm0=z5
428
+ mulps xmm3, [GOTOFF(ebx,PD_M2_613)] ; xmm3=(z10 * -2.613125930)
429
+ mulps xmm4, [GOTOFF(ebx,PD_1_082)] ; xmm4=(z12 * 1.082392200)
430
+ addps xmm3, xmm0 ; xmm3=tmp12
431
+ subps xmm4, xmm0 ; xmm4=tmp10
432
+
433
+ ; -- Final output stage
434
+
435
+ subps xmm3, xmm1 ; xmm3=tmp6
436
+ movaps xmm5, xmm6
437
+ movaps xmm0, xmm7
438
+ addps xmm6, xmm1 ; xmm6=data0=(00 10 20 30)
439
+ addps xmm7, xmm3 ; xmm7=data1=(01 11 21 31)
440
+ subps xmm5, xmm1 ; xmm5=data7=(07 17 27 37)
441
+ subps xmm0, xmm3 ; xmm0=data6=(06 16 26 36)
442
+ subps xmm2, xmm3 ; xmm2=tmp5
443
+
444
+ movaps xmm1, [GOTOFF(ebx,PD_0_125)] ; xmm1=[PD_0_125]
445
+
446
+ mulps xmm6, xmm1 ; descale(1/8)
447
+ mulps xmm7, xmm1 ; descale(1/8)
448
+ mulps xmm5, xmm1 ; descale(1/8)
449
+ mulps xmm0, xmm1 ; descale(1/8)
450
+
451
+ movhlps xmm3, xmm6
452
+ movhlps xmm1, xmm7
453
+ cvtps2pi mm0, xmm6 ; round to int32, mm0=data0L=(00 10)
454
+ cvtps2pi mm1, xmm7 ; round to int32, mm1=data1L=(01 11)
455
+ cvtps2pi mm2, xmm3 ; round to int32, mm2=data0H=(20 30)
456
+ cvtps2pi mm3, xmm1 ; round to int32, mm3=data1H=(21 31)
457
+ packssdw mm0, mm2 ; mm0=data0=(00 10 20 30)
458
+ packssdw mm1, mm3 ; mm1=data1=(01 11 21 31)
459
+
460
+ movhlps xmm6, xmm5
461
+ movhlps xmm7, xmm0
462
+ cvtps2pi mm4, xmm5 ; round to int32, mm4=data7L=(07 17)
463
+ cvtps2pi mm5, xmm0 ; round to int32, mm5=data6L=(06 16)
464
+ cvtps2pi mm6, xmm6 ; round to int32, mm6=data7H=(27 37)
465
+ cvtps2pi mm7, xmm7 ; round to int32, mm7=data6H=(26 36)
466
+ packssdw mm4, mm6 ; mm4=data7=(07 17 27 37)
467
+ packssdw mm5, mm7 ; mm5=data6=(06 16 26 36)
468
+
469
+ packsswb mm0, mm5 ; mm0=(00 10 20 30 06 16 26 36)
470
+ packsswb mm1, mm4 ; mm1=(01 11 21 31 07 17 27 37)
471
+
472
+ movaps xmm3, XMMWORD [wk(0)] ; xmm3=tmp2
473
+ movaps xmm1, XMMWORD [wk(1)] ; xmm1=tmp3
474
+
475
+ movaps xmm6, [GOTOFF(ebx,PD_0_125)] ; xmm6=[PD_0_125]
476
+
477
+ addps xmm4, xmm2 ; xmm4=tmp4
478
+ movaps xmm5, xmm3
479
+ movaps xmm0, xmm1
480
+ addps xmm3, xmm2 ; xmm3=data2=(02 12 22 32)
481
+ addps xmm1, xmm4 ; xmm1=data4=(04 14 24 34)
482
+ subps xmm5, xmm2 ; xmm5=data5=(05 15 25 35)
483
+ subps xmm0, xmm4 ; xmm0=data3=(03 13 23 33)
484
+
485
+ mulps xmm3, xmm6 ; descale(1/8)
486
+ mulps xmm1, xmm6 ; descale(1/8)
487
+ mulps xmm5, xmm6 ; descale(1/8)
488
+ mulps xmm0, xmm6 ; descale(1/8)
489
+
490
+ movhlps xmm7, xmm3
491
+ movhlps xmm2, xmm1
492
+ cvtps2pi mm2, xmm3 ; round to int32, mm2=data2L=(02 12)
493
+ cvtps2pi mm3, xmm1 ; round to int32, mm3=data4L=(04 14)
494
+ cvtps2pi mm6, xmm7 ; round to int32, mm6=data2H=(22 32)
495
+ cvtps2pi mm7, xmm2 ; round to int32, mm7=data4H=(24 34)
496
+ packssdw mm2, mm6 ; mm2=data2=(02 12 22 32)
497
+ packssdw mm3, mm7 ; mm3=data4=(04 14 24 34)
498
+
499
+ movhlps xmm4, xmm5
500
+ movhlps xmm6, xmm0
501
+ cvtps2pi mm5, xmm5 ; round to int32, mm5=data5L=(05 15)
502
+ cvtps2pi mm4, xmm0 ; round to int32, mm4=data3L=(03 13)
503
+ cvtps2pi mm6, xmm4 ; round to int32, mm6=data5H=(25 35)
504
+ cvtps2pi mm7, xmm6 ; round to int32, mm7=data3H=(23 33)
505
+ packssdw mm5, mm6 ; mm5=data5=(05 15 25 35)
506
+ packssdw mm4, mm7 ; mm4=data3=(03 13 23 33)
507
+
508
+ movq mm6, [GOTOFF(ebx,PB_CENTERJSAMP)] ; mm6=[PB_CENTERJSAMP]
509
+
510
+ packsswb mm2, mm3 ; mm2=(02 12 22 32 04 14 24 34)
511
+ packsswb mm4, mm5 ; mm4=(03 13 23 33 05 15 25 35)
512
+
513
+ paddb mm0, mm6
514
+ paddb mm1, mm6
515
+ paddb mm2, mm6
516
+ paddb mm4, mm6
517
+
518
+ movq mm7, mm0 ; transpose coefficients(phase 1)
519
+ punpcklbw mm0, mm1 ; mm0=(00 01 10 11 20 21 30 31)
520
+ punpckhbw mm7, mm1 ; mm7=(06 07 16 17 26 27 36 37)
521
+ movq mm3, mm2 ; transpose coefficients(phase 1)
522
+ punpcklbw mm2, mm4 ; mm2=(02 03 12 13 22 23 32 33)
523
+ punpckhbw mm3, mm4 ; mm3=(04 05 14 15 24 25 34 35)
524
+
525
+ movq mm5, mm0 ; transpose coefficients(phase 2)
526
+ punpcklwd mm0, mm2 ; mm0=(00 01 02 03 10 11 12 13)
527
+ punpckhwd mm5, mm2 ; mm5=(20 21 22 23 30 31 32 33)
528
+ movq mm6, mm3 ; transpose coefficients(phase 2)
529
+ punpcklwd mm3, mm7 ; mm3=(04 05 06 07 14 15 16 17)
530
+ punpckhwd mm6, mm7 ; mm6=(24 25 26 27 34 35 36 37)
531
+
532
+ movq mm1, mm0 ; transpose coefficients(phase 3)
533
+ punpckldq mm0, mm3 ; mm0=(00 01 02 03 04 05 06 07)
534
+ punpckhdq mm1, mm3 ; mm1=(10 11 12 13 14 15 16 17)
535
+ movq mm4, mm5 ; transpose coefficients(phase 3)
536
+ punpckldq mm5, mm6 ; mm5=(20 21 22 23 24 25 26 27)
537
+ punpckhdq mm4, mm6 ; mm4=(30 31 32 33 34 35 36 37)
538
+
539
+ pushpic ebx ; save GOT address
540
+
541
+ mov edx, JSAMPROW [edi+0*SIZEOF_JSAMPROW]
542
+ mov ebx, JSAMPROW [edi+1*SIZEOF_JSAMPROW]
543
+ movq MMWORD [edx+eax*SIZEOF_JSAMPLE], mm0
544
+ movq MMWORD [ebx+eax*SIZEOF_JSAMPLE], mm1
545
+ mov edx, JSAMPROW [edi+2*SIZEOF_JSAMPROW]
546
+ mov ebx, JSAMPROW [edi+3*SIZEOF_JSAMPROW]
547
+ movq MMWORD [edx+eax*SIZEOF_JSAMPLE], mm5
548
+ movq MMWORD [ebx+eax*SIZEOF_JSAMPLE], mm4
549
+
550
+ poppic ebx ; restore GOT address
551
+
552
+ add esi, byte 4*SIZEOF_FAST_FLOAT ; wsptr
553
+ add edi, byte 4*SIZEOF_JSAMPROW
554
+ dec ecx ; ctr
555
+ jnz near .rowloop
556
+
557
+ emms ; empty MMX state
558
+
559
+ pop edi
560
+ pop esi
561
+ ; pop edx ; need not be preserved
562
+ ; pop ecx ; need not be preserved
563
+ pop ebx
564
+ mov esp, ebp ; esp <- aligned ebp
565
+ pop esp ; esp <- original ebp
566
+ pop ebp
567
+ ret
568
+
569
+ ; For some reason, the OS X linker does not honor the request to align the
570
+ ; segment unless we do this.
571
+ align 32