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,633 @@
1
+ ;
2
+ ; jfdctint.asm - accurate integer FDCT (SSE2)
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 slow-but-accurate integer implementation of the
18
+ ; forward DCT (Discrete Cosine Transform). The following code is based
19
+ ; directly on the IJG's original jfdctint.c; see the jfdctint.c for
20
+ ; more details.
21
+
22
+ %include "jsimdext.inc"
23
+ %include "jdct.inc"
24
+
25
+ ; --------------------------------------------------------------------------
26
+
27
+ %define CONST_BITS 13
28
+ %define PASS1_BITS 2
29
+
30
+ %define DESCALE_P1 (CONST_BITS - PASS1_BITS)
31
+ %define DESCALE_P2 (CONST_BITS + PASS1_BITS)
32
+
33
+ %if CONST_BITS == 13
34
+ F_0_298 equ 2446 ; FIX(0.298631336)
35
+ F_0_390 equ 3196 ; FIX(0.390180644)
36
+ F_0_541 equ 4433 ; FIX(0.541196100)
37
+ F_0_765 equ 6270 ; FIX(0.765366865)
38
+ F_0_899 equ 7373 ; FIX(0.899976223)
39
+ F_1_175 equ 9633 ; FIX(1.175875602)
40
+ F_1_501 equ 12299 ; FIX(1.501321110)
41
+ F_1_847 equ 15137 ; FIX(1.847759065)
42
+ F_1_961 equ 16069 ; FIX(1.961570560)
43
+ F_2_053 equ 16819 ; FIX(2.053119869)
44
+ F_2_562 equ 20995 ; FIX(2.562915447)
45
+ F_3_072 equ 25172 ; FIX(3.072711026)
46
+ %else
47
+ ; NASM cannot do compile-time arithmetic on floating-point constants.
48
+ %define DESCALE(x, n) (((x) + (1 << ((n) - 1))) >> (n))
49
+ F_0_298 equ DESCALE( 320652955, 30 - CONST_BITS) ; FIX(0.298631336)
50
+ F_0_390 equ DESCALE( 418953276, 30 - CONST_BITS) ; FIX(0.390180644)
51
+ F_0_541 equ DESCALE( 581104887, 30 - CONST_BITS) ; FIX(0.541196100)
52
+ F_0_765 equ DESCALE( 821806413, 30 - CONST_BITS) ; FIX(0.765366865)
53
+ F_0_899 equ DESCALE( 966342111, 30 - CONST_BITS) ; FIX(0.899976223)
54
+ F_1_175 equ DESCALE(1262586813, 30 - CONST_BITS) ; FIX(1.175875602)
55
+ F_1_501 equ DESCALE(1612031267, 30 - CONST_BITS) ; FIX(1.501321110)
56
+ F_1_847 equ DESCALE(1984016188, 30 - CONST_BITS) ; FIX(1.847759065)
57
+ F_1_961 equ DESCALE(2106220350, 30 - CONST_BITS) ; FIX(1.961570560)
58
+ F_2_053 equ DESCALE(2204520673, 30 - CONST_BITS) ; FIX(2.053119869)
59
+ F_2_562 equ DESCALE(2751909506, 30 - CONST_BITS) ; FIX(2.562915447)
60
+ F_3_072 equ DESCALE(3299298341, 30 - CONST_BITS) ; FIX(3.072711026)
61
+ %endif
62
+
63
+ ; --------------------------------------------------------------------------
64
+ SECTION SEG_CONST
65
+
66
+ alignz 32
67
+ GLOBAL_DATA(jconst_fdct_islow_sse2)
68
+
69
+ EXTN(jconst_fdct_islow_sse2):
70
+
71
+ PW_F130_F054 times 4 dw (F_0_541 + F_0_765), F_0_541
72
+ PW_F054_MF130 times 4 dw F_0_541, (F_0_541 - F_1_847)
73
+ PW_MF078_F117 times 4 dw (F_1_175 - F_1_961), F_1_175
74
+ PW_F117_F078 times 4 dw F_1_175, (F_1_175 - F_0_390)
75
+ PW_MF060_MF089 times 4 dw (F_0_298 - F_0_899), -F_0_899
76
+ PW_MF089_F060 times 4 dw -F_0_899, (F_1_501 - F_0_899)
77
+ PW_MF050_MF256 times 4 dw (F_2_053 - F_2_562), -F_2_562
78
+ PW_MF256_F050 times 4 dw -F_2_562, (F_3_072 - F_2_562)
79
+ PD_DESCALE_P1 times 4 dd 1 << (DESCALE_P1 - 1)
80
+ PD_DESCALE_P2 times 4 dd 1 << (DESCALE_P2 - 1)
81
+ PW_DESCALE_P2X times 8 dw 1 << (PASS1_BITS - 1)
82
+
83
+ alignz 32
84
+
85
+ ; --------------------------------------------------------------------------
86
+ SECTION SEG_TEXT
87
+ BITS 32
88
+ ;
89
+ ; Perform the forward DCT on one block of samples.
90
+ ;
91
+ ; GLOBAL(void)
92
+ ; jsimd_fdct_islow_sse2(DCTELEM *data)
93
+ ;
94
+
95
+ %define data(b) (b) + 8 ; DCTELEM *data
96
+
97
+ %define original_ebp ebp + 0
98
+ %define wk(i) ebp - (WK_NUM - (i)) * SIZEOF_XMMWORD
99
+ ; xmmword wk[WK_NUM]
100
+ %define WK_NUM 6
101
+
102
+ align 32
103
+ GLOBAL_FUNCTION(jsimd_fdct_islow_sse2)
104
+
105
+ EXTN(jsimd_fdct_islow_sse2):
106
+ push ebp
107
+ mov eax, esp ; eax = original ebp
108
+ sub esp, byte 4
109
+ and esp, byte (-SIZEOF_XMMWORD) ; align to 128 bits
110
+ mov [esp], eax
111
+ mov ebp, esp ; ebp = aligned ebp
112
+ lea esp, [wk(0)]
113
+ pushpic ebx
114
+ ; push ecx ; unused
115
+ ; push edx ; need not be preserved
116
+ ; push esi ; unused
117
+ ; push edi ; unused
118
+
119
+ get_GOT ebx ; get GOT address
120
+
121
+ ; ---- Pass 1: process rows.
122
+
123
+ mov edx, POINTER [data(eax)] ; (DCTELEM *)
124
+
125
+ movdqa xmm0, XMMWORD [XMMBLOCK(0,0,edx,SIZEOF_DCTELEM)]
126
+ movdqa xmm1, XMMWORD [XMMBLOCK(1,0,edx,SIZEOF_DCTELEM)]
127
+ movdqa xmm2, XMMWORD [XMMBLOCK(2,0,edx,SIZEOF_DCTELEM)]
128
+ movdqa xmm3, XMMWORD [XMMBLOCK(3,0,edx,SIZEOF_DCTELEM)]
129
+
130
+ ; xmm0=(00 01 02 03 04 05 06 07), xmm2=(20 21 22 23 24 25 26 27)
131
+ ; xmm1=(10 11 12 13 14 15 16 17), xmm3=(30 31 32 33 34 35 36 37)
132
+
133
+ movdqa xmm4, xmm0 ; transpose coefficients(phase 1)
134
+ punpcklwd xmm0, xmm1 ; xmm0=(00 10 01 11 02 12 03 13)
135
+ punpckhwd xmm4, xmm1 ; xmm4=(04 14 05 15 06 16 07 17)
136
+ movdqa xmm5, xmm2 ; transpose coefficients(phase 1)
137
+ punpcklwd xmm2, xmm3 ; xmm2=(20 30 21 31 22 32 23 33)
138
+ punpckhwd xmm5, xmm3 ; xmm5=(24 34 25 35 26 36 27 37)
139
+
140
+ movdqa xmm6, XMMWORD [XMMBLOCK(4,0,edx,SIZEOF_DCTELEM)]
141
+ movdqa xmm7, XMMWORD [XMMBLOCK(5,0,edx,SIZEOF_DCTELEM)]
142
+ movdqa xmm1, XMMWORD [XMMBLOCK(6,0,edx,SIZEOF_DCTELEM)]
143
+ movdqa xmm3, XMMWORD [XMMBLOCK(7,0,edx,SIZEOF_DCTELEM)]
144
+
145
+ ; xmm6=( 4 12 20 28 36 44 52 60), xmm1=( 6 14 22 30 38 46 54 62)
146
+ ; xmm7=( 5 13 21 29 37 45 53 61), xmm3=( 7 15 23 31 39 47 55 63)
147
+
148
+ movdqa XMMWORD [wk(0)], xmm2 ; wk(0)=(20 30 21 31 22 32 23 33)
149
+ movdqa XMMWORD [wk(1)], xmm5 ; wk(1)=(24 34 25 35 26 36 27 37)
150
+
151
+ movdqa xmm2, xmm6 ; transpose coefficients(phase 1)
152
+ punpcklwd xmm6, xmm7 ; xmm6=(40 50 41 51 42 52 43 53)
153
+ punpckhwd xmm2, xmm7 ; xmm2=(44 54 45 55 46 56 47 57)
154
+ movdqa xmm5, xmm1 ; transpose coefficients(phase 1)
155
+ punpcklwd xmm1, xmm3 ; xmm1=(60 70 61 71 62 72 63 73)
156
+ punpckhwd xmm5, xmm3 ; xmm5=(64 74 65 75 66 76 67 77)
157
+
158
+ movdqa xmm7, xmm6 ; transpose coefficients(phase 2)
159
+ punpckldq xmm6, xmm1 ; xmm6=(40 50 60 70 41 51 61 71)
160
+ punpckhdq xmm7, xmm1 ; xmm7=(42 52 62 72 43 53 63 73)
161
+ movdqa xmm3, xmm2 ; transpose coefficients(phase 2)
162
+ punpckldq xmm2, xmm5 ; xmm2=(44 54 64 74 45 55 65 75)
163
+ punpckhdq xmm3, xmm5 ; xmm3=(46 56 66 76 47 57 67 77)
164
+
165
+ movdqa xmm1, XMMWORD [wk(0)] ; xmm1=(20 30 21 31 22 32 23 33)
166
+ movdqa xmm5, XMMWORD [wk(1)] ; xmm5=(24 34 25 35 26 36 27 37)
167
+ movdqa XMMWORD [wk(2)], xmm7 ; wk(2)=(42 52 62 72 43 53 63 73)
168
+ movdqa XMMWORD [wk(3)], xmm2 ; wk(3)=(44 54 64 74 45 55 65 75)
169
+
170
+ movdqa xmm7, xmm0 ; transpose coefficients(phase 2)
171
+ punpckldq xmm0, xmm1 ; xmm0=(00 10 20 30 01 11 21 31)
172
+ punpckhdq xmm7, xmm1 ; xmm7=(02 12 22 32 03 13 23 33)
173
+ movdqa xmm2, xmm4 ; transpose coefficients(phase 2)
174
+ punpckldq xmm4, xmm5 ; xmm4=(04 14 24 34 05 15 25 35)
175
+ punpckhdq xmm2, xmm5 ; xmm2=(06 16 26 36 07 17 27 37)
176
+
177
+ movdqa xmm1, xmm0 ; transpose coefficients(phase 3)
178
+ punpcklqdq xmm0, xmm6 ; xmm0=(00 10 20 30 40 50 60 70)=data0
179
+ punpckhqdq xmm1, xmm6 ; xmm1=(01 11 21 31 41 51 61 71)=data1
180
+ movdqa xmm5, xmm2 ; transpose coefficients(phase 3)
181
+ punpcklqdq xmm2, xmm3 ; xmm2=(06 16 26 36 46 56 66 76)=data6
182
+ punpckhqdq xmm5, xmm3 ; xmm5=(07 17 27 37 47 57 67 77)=data7
183
+
184
+ movdqa xmm6, xmm1
185
+ movdqa xmm3, xmm0
186
+ psubw xmm1, xmm2 ; xmm1=data1-data6=tmp6
187
+ psubw xmm0, xmm5 ; xmm0=data0-data7=tmp7
188
+ paddw xmm6, xmm2 ; xmm6=data1+data6=tmp1
189
+ paddw xmm3, xmm5 ; xmm3=data0+data7=tmp0
190
+
191
+ movdqa xmm2, XMMWORD [wk(2)] ; xmm2=(42 52 62 72 43 53 63 73)
192
+ movdqa xmm5, XMMWORD [wk(3)] ; xmm5=(44 54 64 74 45 55 65 75)
193
+ movdqa XMMWORD [wk(0)], xmm1 ; wk(0)=tmp6
194
+ movdqa XMMWORD [wk(1)], xmm0 ; wk(1)=tmp7
195
+
196
+ movdqa xmm1, xmm7 ; transpose coefficients(phase 3)
197
+ punpcklqdq xmm7, xmm2 ; xmm7=(02 12 22 32 42 52 62 72)=data2
198
+ punpckhqdq xmm1, xmm2 ; xmm1=(03 13 23 33 43 53 63 73)=data3
199
+ movdqa xmm0, xmm4 ; transpose coefficients(phase 3)
200
+ punpcklqdq xmm4, xmm5 ; xmm4=(04 14 24 34 44 54 64 74)=data4
201
+ punpckhqdq xmm0, xmm5 ; xmm0=(05 15 25 35 45 55 65 75)=data5
202
+
203
+ movdqa xmm2, xmm1
204
+ movdqa xmm5, xmm7
205
+ paddw xmm1, xmm4 ; xmm1=data3+data4=tmp3
206
+ paddw xmm7, xmm0 ; xmm7=data2+data5=tmp2
207
+ psubw xmm2, xmm4 ; xmm2=data3-data4=tmp4
208
+ psubw xmm5, xmm0 ; xmm5=data2-data5=tmp5
209
+
210
+ ; -- Even part
211
+
212
+ movdqa xmm4, xmm3
213
+ movdqa xmm0, xmm6
214
+ paddw xmm3, xmm1 ; xmm3=tmp10
215
+ paddw xmm6, xmm7 ; xmm6=tmp11
216
+ psubw xmm4, xmm1 ; xmm4=tmp13
217
+ psubw xmm0, xmm7 ; xmm0=tmp12
218
+
219
+ movdqa xmm1, xmm3
220
+ paddw xmm3, xmm6 ; xmm3=tmp10+tmp11
221
+ psubw xmm1, xmm6 ; xmm1=tmp10-tmp11
222
+
223
+ psllw xmm3, PASS1_BITS ; xmm3=data0
224
+ psllw xmm1, PASS1_BITS ; xmm1=data4
225
+
226
+ movdqa XMMWORD [wk(2)], xmm3 ; wk(2)=data0
227
+ movdqa XMMWORD [wk(3)], xmm1 ; wk(3)=data4
228
+
229
+ ; (Original)
230
+ ; z1 = (tmp12 + tmp13) * 0.541196100;
231
+ ; data2 = z1 + tmp13 * 0.765366865;
232
+ ; data6 = z1 + tmp12 * -1.847759065;
233
+ ;
234
+ ; (This implementation)
235
+ ; data2 = tmp13 * (0.541196100 + 0.765366865) + tmp12 * 0.541196100;
236
+ ; data6 = tmp13 * 0.541196100 + tmp12 * (0.541196100 - 1.847759065);
237
+
238
+ movdqa xmm7, xmm4 ; xmm4=tmp13
239
+ movdqa xmm6, xmm4
240
+ punpcklwd xmm7, xmm0 ; xmm0=tmp12
241
+ punpckhwd xmm6, xmm0
242
+ movdqa xmm4, xmm7
243
+ movdqa xmm0, xmm6
244
+ pmaddwd xmm7, [GOTOFF(ebx,PW_F130_F054)] ; xmm7=data2L
245
+ pmaddwd xmm6, [GOTOFF(ebx,PW_F130_F054)] ; xmm6=data2H
246
+ pmaddwd xmm4, [GOTOFF(ebx,PW_F054_MF130)] ; xmm4=data6L
247
+ pmaddwd xmm0, [GOTOFF(ebx,PW_F054_MF130)] ; xmm0=data6H
248
+
249
+ paddd xmm7, [GOTOFF(ebx,PD_DESCALE_P1)]
250
+ paddd xmm6, [GOTOFF(ebx,PD_DESCALE_P1)]
251
+ psrad xmm7, DESCALE_P1
252
+ psrad xmm6, DESCALE_P1
253
+ paddd xmm4, [GOTOFF(ebx,PD_DESCALE_P1)]
254
+ paddd xmm0, [GOTOFF(ebx,PD_DESCALE_P1)]
255
+ psrad xmm4, DESCALE_P1
256
+ psrad xmm0, DESCALE_P1
257
+
258
+ packssdw xmm7, xmm6 ; xmm7=data2
259
+ packssdw xmm4, xmm0 ; xmm4=data6
260
+
261
+ movdqa XMMWORD [wk(4)], xmm7 ; wk(4)=data2
262
+ movdqa XMMWORD [wk(5)], xmm4 ; wk(5)=data6
263
+
264
+ ; -- Odd part
265
+
266
+ movdqa xmm3, XMMWORD [wk(0)] ; xmm3=tmp6
267
+ movdqa xmm1, XMMWORD [wk(1)] ; xmm1=tmp7
268
+
269
+ movdqa xmm6, xmm2 ; xmm2=tmp4
270
+ movdqa xmm0, xmm5 ; xmm5=tmp5
271
+ paddw xmm6, xmm3 ; xmm6=z3
272
+ paddw xmm0, xmm1 ; xmm0=z4
273
+
274
+ ; (Original)
275
+ ; z5 = (z3 + z4) * 1.175875602;
276
+ ; z3 = z3 * -1.961570560; z4 = z4 * -0.390180644;
277
+ ; z3 += z5; z4 += z5;
278
+ ;
279
+ ; (This implementation)
280
+ ; z3 = z3 * (1.175875602 - 1.961570560) + z4 * 1.175875602;
281
+ ; z4 = z3 * 1.175875602 + z4 * (1.175875602 - 0.390180644);
282
+
283
+ movdqa xmm7, xmm6
284
+ movdqa xmm4, xmm6
285
+ punpcklwd xmm7, xmm0
286
+ punpckhwd xmm4, xmm0
287
+ movdqa xmm6, xmm7
288
+ movdqa xmm0, xmm4
289
+ pmaddwd xmm7, [GOTOFF(ebx,PW_MF078_F117)] ; xmm7=z3L
290
+ pmaddwd xmm4, [GOTOFF(ebx,PW_MF078_F117)] ; xmm4=z3H
291
+ pmaddwd xmm6, [GOTOFF(ebx,PW_F117_F078)] ; xmm6=z4L
292
+ pmaddwd xmm0, [GOTOFF(ebx,PW_F117_F078)] ; xmm0=z4H
293
+
294
+ movdqa XMMWORD [wk(0)], xmm7 ; wk(0)=z3L
295
+ movdqa XMMWORD [wk(1)], xmm4 ; wk(1)=z3H
296
+
297
+ ; (Original)
298
+ ; z1 = tmp4 + tmp7; z2 = tmp5 + tmp6;
299
+ ; tmp4 = tmp4 * 0.298631336; tmp5 = tmp5 * 2.053119869;
300
+ ; tmp6 = tmp6 * 3.072711026; tmp7 = tmp7 * 1.501321110;
301
+ ; z1 = z1 * -0.899976223; z2 = z2 * -2.562915447;
302
+ ; data7 = tmp4 + z1 + z3; data5 = tmp5 + z2 + z4;
303
+ ; data3 = tmp6 + z2 + z3; data1 = tmp7 + z1 + z4;
304
+ ;
305
+ ; (This implementation)
306
+ ; tmp4 = tmp4 * (0.298631336 - 0.899976223) + tmp7 * -0.899976223;
307
+ ; tmp5 = tmp5 * (2.053119869 - 2.562915447) + tmp6 * -2.562915447;
308
+ ; tmp6 = tmp5 * -2.562915447 + tmp6 * (3.072711026 - 2.562915447);
309
+ ; tmp7 = tmp4 * -0.899976223 + tmp7 * (1.501321110 - 0.899976223);
310
+ ; data7 = tmp4 + z3; data5 = tmp5 + z4;
311
+ ; data3 = tmp6 + z3; data1 = tmp7 + z4;
312
+
313
+ movdqa xmm7, xmm2
314
+ movdqa xmm4, xmm2
315
+ punpcklwd xmm7, xmm1
316
+ punpckhwd xmm4, xmm1
317
+ movdqa xmm2, xmm7
318
+ movdqa xmm1, xmm4
319
+ pmaddwd xmm7, [GOTOFF(ebx,PW_MF060_MF089)] ; xmm7=tmp4L
320
+ pmaddwd xmm4, [GOTOFF(ebx,PW_MF060_MF089)] ; xmm4=tmp4H
321
+ pmaddwd xmm2, [GOTOFF(ebx,PW_MF089_F060)] ; xmm2=tmp7L
322
+ pmaddwd xmm1, [GOTOFF(ebx,PW_MF089_F060)] ; xmm1=tmp7H
323
+
324
+ paddd xmm7, XMMWORD [wk(0)] ; xmm7=data7L
325
+ paddd xmm4, XMMWORD [wk(1)] ; xmm4=data7H
326
+ paddd xmm2, xmm6 ; xmm2=data1L
327
+ paddd xmm1, xmm0 ; xmm1=data1H
328
+
329
+ paddd xmm7, [GOTOFF(ebx,PD_DESCALE_P1)]
330
+ paddd xmm4, [GOTOFF(ebx,PD_DESCALE_P1)]
331
+ psrad xmm7, DESCALE_P1
332
+ psrad xmm4, DESCALE_P1
333
+ paddd xmm2, [GOTOFF(ebx,PD_DESCALE_P1)]
334
+ paddd xmm1, [GOTOFF(ebx,PD_DESCALE_P1)]
335
+ psrad xmm2, DESCALE_P1
336
+ psrad xmm1, DESCALE_P1
337
+
338
+ packssdw xmm7, xmm4 ; xmm7=data7
339
+ packssdw xmm2, xmm1 ; xmm2=data1
340
+
341
+ movdqa xmm4, xmm5
342
+ movdqa xmm1, xmm5
343
+ punpcklwd xmm4, xmm3
344
+ punpckhwd xmm1, xmm3
345
+ movdqa xmm5, xmm4
346
+ movdqa xmm3, xmm1
347
+ pmaddwd xmm4, [GOTOFF(ebx,PW_MF050_MF256)] ; xmm4=tmp5L
348
+ pmaddwd xmm1, [GOTOFF(ebx,PW_MF050_MF256)] ; xmm1=tmp5H
349
+ pmaddwd xmm5, [GOTOFF(ebx,PW_MF256_F050)] ; xmm5=tmp6L
350
+ pmaddwd xmm3, [GOTOFF(ebx,PW_MF256_F050)] ; xmm3=tmp6H
351
+
352
+ paddd xmm4, xmm6 ; xmm4=data5L
353
+ paddd xmm1, xmm0 ; xmm1=data5H
354
+ paddd xmm5, XMMWORD [wk(0)] ; xmm5=data3L
355
+ paddd xmm3, XMMWORD [wk(1)] ; xmm3=data3H
356
+
357
+ paddd xmm4, [GOTOFF(ebx,PD_DESCALE_P1)]
358
+ paddd xmm1, [GOTOFF(ebx,PD_DESCALE_P1)]
359
+ psrad xmm4, DESCALE_P1
360
+ psrad xmm1, DESCALE_P1
361
+ paddd xmm5, [GOTOFF(ebx,PD_DESCALE_P1)]
362
+ paddd xmm3, [GOTOFF(ebx,PD_DESCALE_P1)]
363
+ psrad xmm5, DESCALE_P1
364
+ psrad xmm3, DESCALE_P1
365
+
366
+ packssdw xmm4, xmm1 ; xmm4=data5
367
+ packssdw xmm5, xmm3 ; xmm5=data3
368
+
369
+ ; ---- Pass 2: process columns.
370
+
371
+ ; mov edx, POINTER [data(eax)] ; (DCTELEM *)
372
+
373
+ movdqa xmm6, XMMWORD [wk(2)] ; xmm6=col0
374
+ movdqa xmm0, XMMWORD [wk(4)] ; xmm0=col2
375
+
376
+ ; xmm6=(00 10 20 30 40 50 60 70), xmm0=(02 12 22 32 42 52 62 72)
377
+ ; xmm2=(01 11 21 31 41 51 61 71), xmm5=(03 13 23 33 43 53 63 73)
378
+
379
+ movdqa xmm1, xmm6 ; transpose coefficients(phase 1)
380
+ punpcklwd xmm6, xmm2 ; xmm6=(00 01 10 11 20 21 30 31)
381
+ punpckhwd xmm1, xmm2 ; xmm1=(40 41 50 51 60 61 70 71)
382
+ movdqa xmm3, xmm0 ; transpose coefficients(phase 1)
383
+ punpcklwd xmm0, xmm5 ; xmm0=(02 03 12 13 22 23 32 33)
384
+ punpckhwd xmm3, xmm5 ; xmm3=(42 43 52 53 62 63 72 73)
385
+
386
+ movdqa xmm2, XMMWORD [wk(3)] ; xmm2=col4
387
+ movdqa xmm5, XMMWORD [wk(5)] ; xmm5=col6
388
+
389
+ ; xmm2=(04 14 24 34 44 54 64 74), xmm5=(06 16 26 36 46 56 66 76)
390
+ ; xmm4=(05 15 25 35 45 55 65 75), xmm7=(07 17 27 37 47 57 67 77)
391
+
392
+ movdqa XMMWORD [wk(0)], xmm0 ; wk(0)=(02 03 12 13 22 23 32 33)
393
+ movdqa XMMWORD [wk(1)], xmm3 ; wk(1)=(42 43 52 53 62 63 72 73)
394
+
395
+ movdqa xmm0, xmm2 ; transpose coefficients(phase 1)
396
+ punpcklwd xmm2, xmm4 ; xmm2=(04 05 14 15 24 25 34 35)
397
+ punpckhwd xmm0, xmm4 ; xmm0=(44 45 54 55 64 65 74 75)
398
+ movdqa xmm3, xmm5 ; transpose coefficients(phase 1)
399
+ punpcklwd xmm5, xmm7 ; xmm5=(06 07 16 17 26 27 36 37)
400
+ punpckhwd xmm3, xmm7 ; xmm3=(46 47 56 57 66 67 76 77)
401
+
402
+ movdqa xmm4, xmm2 ; transpose coefficients(phase 2)
403
+ punpckldq xmm2, xmm5 ; xmm2=(04 05 06 07 14 15 16 17)
404
+ punpckhdq xmm4, xmm5 ; xmm4=(24 25 26 27 34 35 36 37)
405
+ movdqa xmm7, xmm0 ; transpose coefficients(phase 2)
406
+ punpckldq xmm0, xmm3 ; xmm0=(44 45 46 47 54 55 56 57)
407
+ punpckhdq xmm7, xmm3 ; xmm7=(64 65 66 67 74 75 76 77)
408
+
409
+ movdqa xmm5, XMMWORD [wk(0)] ; xmm5=(02 03 12 13 22 23 32 33)
410
+ movdqa xmm3, XMMWORD [wk(1)] ; xmm3=(42 43 52 53 62 63 72 73)
411
+ movdqa XMMWORD [wk(2)], xmm4 ; wk(2)=(24 25 26 27 34 35 36 37)
412
+ movdqa XMMWORD [wk(3)], xmm0 ; wk(3)=(44 45 46 47 54 55 56 57)
413
+
414
+ movdqa xmm4, xmm6 ; transpose coefficients(phase 2)
415
+ punpckldq xmm6, xmm5 ; xmm6=(00 01 02 03 10 11 12 13)
416
+ punpckhdq xmm4, xmm5 ; xmm4=(20 21 22 23 30 31 32 33)
417
+ movdqa xmm0, xmm1 ; transpose coefficients(phase 2)
418
+ punpckldq xmm1, xmm3 ; xmm1=(40 41 42 43 50 51 52 53)
419
+ punpckhdq xmm0, xmm3 ; xmm0=(60 61 62 63 70 71 72 73)
420
+
421
+ movdqa xmm5, xmm6 ; transpose coefficients(phase 3)
422
+ punpcklqdq xmm6, xmm2 ; xmm6=(00 01 02 03 04 05 06 07)=data0
423
+ punpckhqdq xmm5, xmm2 ; xmm5=(10 11 12 13 14 15 16 17)=data1
424
+ movdqa xmm3, xmm0 ; transpose coefficients(phase 3)
425
+ punpcklqdq xmm0, xmm7 ; xmm0=(60 61 62 63 64 65 66 67)=data6
426
+ punpckhqdq xmm3, xmm7 ; xmm3=(70 71 72 73 74 75 76 77)=data7
427
+
428
+ movdqa xmm2, xmm5
429
+ movdqa xmm7, xmm6
430
+ psubw xmm5, xmm0 ; xmm5=data1-data6=tmp6
431
+ psubw xmm6, xmm3 ; xmm6=data0-data7=tmp7
432
+ paddw xmm2, xmm0 ; xmm2=data1+data6=tmp1
433
+ paddw xmm7, xmm3 ; xmm7=data0+data7=tmp0
434
+
435
+ movdqa xmm0, XMMWORD [wk(2)] ; xmm0=(24 25 26 27 34 35 36 37)
436
+ movdqa xmm3, XMMWORD [wk(3)] ; xmm3=(44 45 46 47 54 55 56 57)
437
+ movdqa XMMWORD [wk(0)], xmm5 ; wk(0)=tmp6
438
+ movdqa XMMWORD [wk(1)], xmm6 ; wk(1)=tmp7
439
+
440
+ movdqa xmm5, xmm4 ; transpose coefficients(phase 3)
441
+ punpcklqdq xmm4, xmm0 ; xmm4=(20 21 22 23 24 25 26 27)=data2
442
+ punpckhqdq xmm5, xmm0 ; xmm5=(30 31 32 33 34 35 36 37)=data3
443
+ movdqa xmm6, xmm1 ; transpose coefficients(phase 3)
444
+ punpcklqdq xmm1, xmm3 ; xmm1=(40 41 42 43 44 45 46 47)=data4
445
+ punpckhqdq xmm6, xmm3 ; xmm6=(50 51 52 53 54 55 56 57)=data5
446
+
447
+ movdqa xmm0, xmm5
448
+ movdqa xmm3, xmm4
449
+ paddw xmm5, xmm1 ; xmm5=data3+data4=tmp3
450
+ paddw xmm4, xmm6 ; xmm4=data2+data5=tmp2
451
+ psubw xmm0, xmm1 ; xmm0=data3-data4=tmp4
452
+ psubw xmm3, xmm6 ; xmm3=data2-data5=tmp5
453
+
454
+ ; -- Even part
455
+
456
+ movdqa xmm1, xmm7
457
+ movdqa xmm6, xmm2
458
+ paddw xmm7, xmm5 ; xmm7=tmp10
459
+ paddw xmm2, xmm4 ; xmm2=tmp11
460
+ psubw xmm1, xmm5 ; xmm1=tmp13
461
+ psubw xmm6, xmm4 ; xmm6=tmp12
462
+
463
+ movdqa xmm5, xmm7
464
+ paddw xmm7, xmm2 ; xmm7=tmp10+tmp11
465
+ psubw xmm5, xmm2 ; xmm5=tmp10-tmp11
466
+
467
+ paddw xmm7, [GOTOFF(ebx,PW_DESCALE_P2X)]
468
+ paddw xmm5, [GOTOFF(ebx,PW_DESCALE_P2X)]
469
+ psraw xmm7, PASS1_BITS ; xmm7=data0
470
+ psraw xmm5, PASS1_BITS ; xmm5=data4
471
+
472
+ movdqa XMMWORD [XMMBLOCK(0,0,edx,SIZEOF_DCTELEM)], xmm7
473
+ movdqa XMMWORD [XMMBLOCK(4,0,edx,SIZEOF_DCTELEM)], xmm5
474
+
475
+ ; (Original)
476
+ ; z1 = (tmp12 + tmp13) * 0.541196100;
477
+ ; data2 = z1 + tmp13 * 0.765366865;
478
+ ; data6 = z1 + tmp12 * -1.847759065;
479
+ ;
480
+ ; (This implementation)
481
+ ; data2 = tmp13 * (0.541196100 + 0.765366865) + tmp12 * 0.541196100;
482
+ ; data6 = tmp13 * 0.541196100 + tmp12 * (0.541196100 - 1.847759065);
483
+
484
+ movdqa xmm4, xmm1 ; xmm1=tmp13
485
+ movdqa xmm2, xmm1
486
+ punpcklwd xmm4, xmm6 ; xmm6=tmp12
487
+ punpckhwd xmm2, xmm6
488
+ movdqa xmm1, xmm4
489
+ movdqa xmm6, xmm2
490
+ pmaddwd xmm4, [GOTOFF(ebx,PW_F130_F054)] ; xmm4=data2L
491
+ pmaddwd xmm2, [GOTOFF(ebx,PW_F130_F054)] ; xmm2=data2H
492
+ pmaddwd xmm1, [GOTOFF(ebx,PW_F054_MF130)] ; xmm1=data6L
493
+ pmaddwd xmm6, [GOTOFF(ebx,PW_F054_MF130)] ; xmm6=data6H
494
+
495
+ paddd xmm4, [GOTOFF(ebx,PD_DESCALE_P2)]
496
+ paddd xmm2, [GOTOFF(ebx,PD_DESCALE_P2)]
497
+ psrad xmm4, DESCALE_P2
498
+ psrad xmm2, DESCALE_P2
499
+ paddd xmm1, [GOTOFF(ebx,PD_DESCALE_P2)]
500
+ paddd xmm6, [GOTOFF(ebx,PD_DESCALE_P2)]
501
+ psrad xmm1, DESCALE_P2
502
+ psrad xmm6, DESCALE_P2
503
+
504
+ packssdw xmm4, xmm2 ; xmm4=data2
505
+ packssdw xmm1, xmm6 ; xmm1=data6
506
+
507
+ movdqa XMMWORD [XMMBLOCK(2,0,edx,SIZEOF_DCTELEM)], xmm4
508
+ movdqa XMMWORD [XMMBLOCK(6,0,edx,SIZEOF_DCTELEM)], xmm1
509
+
510
+ ; -- Odd part
511
+
512
+ movdqa xmm7, XMMWORD [wk(0)] ; xmm7=tmp6
513
+ movdqa xmm5, XMMWORD [wk(1)] ; xmm5=tmp7
514
+
515
+ movdqa xmm2, xmm0 ; xmm0=tmp4
516
+ movdqa xmm6, xmm3 ; xmm3=tmp5
517
+ paddw xmm2, xmm7 ; xmm2=z3
518
+ paddw xmm6, xmm5 ; xmm6=z4
519
+
520
+ ; (Original)
521
+ ; z5 = (z3 + z4) * 1.175875602;
522
+ ; z3 = z3 * -1.961570560; z4 = z4 * -0.390180644;
523
+ ; z3 += z5; z4 += z5;
524
+ ;
525
+ ; (This implementation)
526
+ ; z3 = z3 * (1.175875602 - 1.961570560) + z4 * 1.175875602;
527
+ ; z4 = z3 * 1.175875602 + z4 * (1.175875602 - 0.390180644);
528
+
529
+ movdqa xmm4, xmm2
530
+ movdqa xmm1, xmm2
531
+ punpcklwd xmm4, xmm6
532
+ punpckhwd xmm1, xmm6
533
+ movdqa xmm2, xmm4
534
+ movdqa xmm6, xmm1
535
+ pmaddwd xmm4, [GOTOFF(ebx,PW_MF078_F117)] ; xmm4=z3L
536
+ pmaddwd xmm1, [GOTOFF(ebx,PW_MF078_F117)] ; xmm1=z3H
537
+ pmaddwd xmm2, [GOTOFF(ebx,PW_F117_F078)] ; xmm2=z4L
538
+ pmaddwd xmm6, [GOTOFF(ebx,PW_F117_F078)] ; xmm6=z4H
539
+
540
+ movdqa XMMWORD [wk(0)], xmm4 ; wk(0)=z3L
541
+ movdqa XMMWORD [wk(1)], xmm1 ; wk(1)=z3H
542
+
543
+ ; (Original)
544
+ ; z1 = tmp4 + tmp7; z2 = tmp5 + tmp6;
545
+ ; tmp4 = tmp4 * 0.298631336; tmp5 = tmp5 * 2.053119869;
546
+ ; tmp6 = tmp6 * 3.072711026; tmp7 = tmp7 * 1.501321110;
547
+ ; z1 = z1 * -0.899976223; z2 = z2 * -2.562915447;
548
+ ; data7 = tmp4 + z1 + z3; data5 = tmp5 + z2 + z4;
549
+ ; data3 = tmp6 + z2 + z3; data1 = tmp7 + z1 + z4;
550
+ ;
551
+ ; (This implementation)
552
+ ; tmp4 = tmp4 * (0.298631336 - 0.899976223) + tmp7 * -0.899976223;
553
+ ; tmp5 = tmp5 * (2.053119869 - 2.562915447) + tmp6 * -2.562915447;
554
+ ; tmp6 = tmp5 * -2.562915447 + tmp6 * (3.072711026 - 2.562915447);
555
+ ; tmp7 = tmp4 * -0.899976223 + tmp7 * (1.501321110 - 0.899976223);
556
+ ; data7 = tmp4 + z3; data5 = tmp5 + z4;
557
+ ; data3 = tmp6 + z3; data1 = tmp7 + z4;
558
+
559
+ movdqa xmm4, xmm0
560
+ movdqa xmm1, xmm0
561
+ punpcklwd xmm4, xmm5
562
+ punpckhwd xmm1, xmm5
563
+ movdqa xmm0, xmm4
564
+ movdqa xmm5, xmm1
565
+ pmaddwd xmm4, [GOTOFF(ebx,PW_MF060_MF089)] ; xmm4=tmp4L
566
+ pmaddwd xmm1, [GOTOFF(ebx,PW_MF060_MF089)] ; xmm1=tmp4H
567
+ pmaddwd xmm0, [GOTOFF(ebx,PW_MF089_F060)] ; xmm0=tmp7L
568
+ pmaddwd xmm5, [GOTOFF(ebx,PW_MF089_F060)] ; xmm5=tmp7H
569
+
570
+ paddd xmm4, XMMWORD [wk(0)] ; xmm4=data7L
571
+ paddd xmm1, XMMWORD [wk(1)] ; xmm1=data7H
572
+ paddd xmm0, xmm2 ; xmm0=data1L
573
+ paddd xmm5, xmm6 ; xmm5=data1H
574
+
575
+ paddd xmm4, [GOTOFF(ebx,PD_DESCALE_P2)]
576
+ paddd xmm1, [GOTOFF(ebx,PD_DESCALE_P2)]
577
+ psrad xmm4, DESCALE_P2
578
+ psrad xmm1, DESCALE_P2
579
+ paddd xmm0, [GOTOFF(ebx,PD_DESCALE_P2)]
580
+ paddd xmm5, [GOTOFF(ebx,PD_DESCALE_P2)]
581
+ psrad xmm0, DESCALE_P2
582
+ psrad xmm5, DESCALE_P2
583
+
584
+ packssdw xmm4, xmm1 ; xmm4=data7
585
+ packssdw xmm0, xmm5 ; xmm0=data1
586
+
587
+ movdqa XMMWORD [XMMBLOCK(7,0,edx,SIZEOF_DCTELEM)], xmm4
588
+ movdqa XMMWORD [XMMBLOCK(1,0,edx,SIZEOF_DCTELEM)], xmm0
589
+
590
+ movdqa xmm1, xmm3
591
+ movdqa xmm5, xmm3
592
+ punpcklwd xmm1, xmm7
593
+ punpckhwd xmm5, xmm7
594
+ movdqa xmm3, xmm1
595
+ movdqa xmm7, xmm5
596
+ pmaddwd xmm1, [GOTOFF(ebx,PW_MF050_MF256)] ; xmm1=tmp5L
597
+ pmaddwd xmm5, [GOTOFF(ebx,PW_MF050_MF256)] ; xmm5=tmp5H
598
+ pmaddwd xmm3, [GOTOFF(ebx,PW_MF256_F050)] ; xmm3=tmp6L
599
+ pmaddwd xmm7, [GOTOFF(ebx,PW_MF256_F050)] ; xmm7=tmp6H
600
+
601
+ paddd xmm1, xmm2 ; xmm1=data5L
602
+ paddd xmm5, xmm6 ; xmm5=data5H
603
+ paddd xmm3, XMMWORD [wk(0)] ; xmm3=data3L
604
+ paddd xmm7, XMMWORD [wk(1)] ; xmm7=data3H
605
+
606
+ paddd xmm1, [GOTOFF(ebx,PD_DESCALE_P2)]
607
+ paddd xmm5, [GOTOFF(ebx,PD_DESCALE_P2)]
608
+ psrad xmm1, DESCALE_P2
609
+ psrad xmm5, DESCALE_P2
610
+ paddd xmm3, [GOTOFF(ebx,PD_DESCALE_P2)]
611
+ paddd xmm7, [GOTOFF(ebx,PD_DESCALE_P2)]
612
+ psrad xmm3, DESCALE_P2
613
+ psrad xmm7, DESCALE_P2
614
+
615
+ packssdw xmm1, xmm5 ; xmm1=data5
616
+ packssdw xmm3, xmm7 ; xmm3=data3
617
+
618
+ movdqa XMMWORD [XMMBLOCK(5,0,edx,SIZEOF_DCTELEM)], xmm1
619
+ movdqa XMMWORD [XMMBLOCK(3,0,edx,SIZEOF_DCTELEM)], xmm3
620
+
621
+ ; pop edi ; unused
622
+ ; pop esi ; unused
623
+ ; pop edx ; need not be preserved
624
+ ; pop ecx ; unused
625
+ poppic ebx
626
+ mov esp, ebp ; esp <- aligned ebp
627
+ pop esp ; esp <- original ebp
628
+ pop ebp
629
+ ret
630
+
631
+ ; For some reason, the OS X linker does not honor the request to align the
632
+ ; segment unless we do this.
633
+ align 32