laag-libjpeg-turbo 1.5.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (444) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +57 -0
  3. data/LICENSE.txt +139 -0
  4. data/README.org +34 -0
  5. data/ext/laag/libjpeg-turbo/extconf.rb +16 -0
  6. data/laag-libjpeg-turbo.gemspec +20 -0
  7. data/lib/laag/libjpeg-turbo.rb +29 -0
  8. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/.gitignore +14 -0
  9. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/.travis.yml +131 -0
  10. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/BUILDING.md +964 -0
  11. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/CMakeLists.txt +962 -0
  12. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/ChangeLog.md +1151 -0
  13. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/LICENSE.md +139 -0
  14. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/Makefile.am +794 -0
  15. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/README.ijg +279 -0
  16. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/README.md +341 -0
  17. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/acinclude.m4 +287 -0
  18. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/appveyor.yml +57 -0
  19. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/bmp.c +341 -0
  20. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/bmp.h +42 -0
  21. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/cderror.h +136 -0
  22. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/cdjpeg.c +144 -0
  23. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/cdjpeg.h +153 -0
  24. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/change.log +315 -0
  25. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/ci/keys.enc +0 -0
  26. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/cjpeg.1 +351 -0
  27. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/cjpeg.c +644 -0
  28. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/cmakescripts/cmake_uninstall.cmake.in +24 -0
  29. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/cmakescripts/testclean.cmake +39 -0
  30. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/coderules.txt +78 -0
  31. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/configure.ac +616 -0
  32. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/djpeg.1 +293 -0
  33. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/djpeg.c +782 -0
  34. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/annotated.html +104 -0
  35. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/bc_s.png +0 -0
  36. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/bdwn.png +0 -0
  37. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/classes.html +106 -0
  38. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/closed.png +0 -0
  39. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/doxygen-extra.css +3 -0
  40. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/doxygen.css +1184 -0
  41. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/doxygen.png +0 -0
  42. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/dynsections.js +97 -0
  43. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/ftv2blank.png +0 -0
  44. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/ftv2cl.png +0 -0
  45. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/ftv2doc.png +0 -0
  46. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/ftv2folderclosed.png +0 -0
  47. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/ftv2folderopen.png +0 -0
  48. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/ftv2lastnode.png +0 -0
  49. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/ftv2link.png +0 -0
  50. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/ftv2mlastnode.png +0 -0
  51. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/ftv2mnode.png +0 -0
  52. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/ftv2mo.png +0 -0
  53. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/ftv2node.png +0 -0
  54. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/ftv2ns.png +0 -0
  55. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/ftv2plastnode.png +0 -0
  56. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/ftv2pnode.png +0 -0
  57. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/ftv2splitbar.png +0 -0
  58. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/ftv2vertline.png +0 -0
  59. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/functions.html +134 -0
  60. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/functions_vars.html +134 -0
  61. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/group___turbo_j_p_e_g.html +2446 -0
  62. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/index.html +90 -0
  63. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/jquery.js +8 -0
  64. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/modules.html +95 -0
  65. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/nav_f.png +0 -0
  66. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/nav_g.png +0 -0
  67. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/nav_h.png +0 -0
  68. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/open.png +0 -0
  69. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/all_63.html +26 -0
  70. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/all_63.js +4 -0
  71. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/all_64.html +26 -0
  72. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/all_64.js +5 -0
  73. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/all_68.html +26 -0
  74. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/all_68.js +4 -0
  75. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/all_6e.html +26 -0
  76. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/all_6e.js +4 -0
  77. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/all_6f.html +26 -0
  78. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/all_6f.js +5 -0
  79. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/all_72.html +26 -0
  80. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/all_72.js +4 -0
  81. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/all_74.html +26 -0
  82. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/all_74.js +89 -0
  83. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/all_77.html +26 -0
  84. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/all_77.js +4 -0
  85. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/all_78.html +26 -0
  86. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/all_78.js +4 -0
  87. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/all_79.html +26 -0
  88. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/all_79.js +4 -0
  89. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/classes_74.html +26 -0
  90. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/classes_74.js +6 -0
  91. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/close.png +0 -0
  92. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/enums_74.html +26 -0
  93. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/enums_74.js +7 -0
  94. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/enumvalues_74.html +26 -0
  95. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/enumvalues_74.js +34 -0
  96. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/functions_74.html +26 -0
  97. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/functions_74.js +28 -0
  98. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/groups_74.html +26 -0
  99. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/groups_74.js +4 -0
  100. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/mag_sel.png +0 -0
  101. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/nomatches.html +12 -0
  102. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/search.css +271 -0
  103. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/search.js +809 -0
  104. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/search_l.png +0 -0
  105. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/search_m.png +0 -0
  106. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/search_r.png +0 -0
  107. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/typedefs_74.html +26 -0
  108. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/typedefs_74.js +5 -0
  109. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/variables_63.html +26 -0
  110. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/variables_63.js +4 -0
  111. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/variables_64.html +26 -0
  112. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/variables_64.js +5 -0
  113. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/variables_68.html +26 -0
  114. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/variables_68.js +4 -0
  115. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/variables_6e.html +26 -0
  116. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/variables_6e.js +4 -0
  117. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/variables_6f.html +26 -0
  118. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/variables_6f.js +5 -0
  119. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/variables_72.html +26 -0
  120. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/variables_72.js +4 -0
  121. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/variables_74.html +26 -0
  122. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/variables_74.js +9 -0
  123. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/variables_77.html +26 -0
  124. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/variables_77.js +4 -0
  125. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/variables_78.html +26 -0
  126. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/variables_78.js +4 -0
  127. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/variables_79.html +26 -0
  128. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/search/variables_79.js +4 -0
  129. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/structtjregion.html +186 -0
  130. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/structtjscalingfactor.html +148 -0
  131. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/structtjtransform.html +212 -0
  132. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/sync_off.png +0 -0
  133. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/sync_on.png +0 -0
  134. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/tab_a.png +0 -0
  135. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/tab_b.png +0 -0
  136. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/tab_h.png +0 -0
  137. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/tab_s.png +0 -0
  138. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doc/html/tabs.css +60 -0
  139. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doxygen-extra.css +3 -0
  140. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/doxygen.config +16 -0
  141. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/example.c +433 -0
  142. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jaricom.c +156 -0
  143. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/CMakeLists.txt +57 -0
  144. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/MANIFEST.MF +2 -0
  145. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/Makefile.am +75 -0
  146. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/README +52 -0
  147. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/TJBench.java +926 -0
  148. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/TJExample.java +362 -0
  149. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/TJUnitTest.java +959 -0
  150. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/doc/allclasses-frame.html +24 -0
  151. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/doc/allclasses-noframe.html +24 -0
  152. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/doc/constant-values.html +479 -0
  153. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/doc/deprecated-list.html +248 -0
  154. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/doc/help-doc.html +206 -0
  155. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/doc/index-all.html +980 -0
  156. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/doc/index.html +70 -0
  157. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/doc/org/libjpegturbo/turbojpeg/TJ.html +1254 -0
  158. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/doc/org/libjpegturbo/turbojpeg/TJCompressor.html +922 -0
  159. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/doc/org/libjpegturbo/turbojpeg/TJCustomFilter.html +237 -0
  160. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/doc/org/libjpegturbo/turbojpeg/TJDecompressor.html +1235 -0
  161. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/doc/org/libjpegturbo/turbojpeg/TJException.html +287 -0
  162. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/doc/org/libjpegturbo/turbojpeg/TJScalingFactor.html +333 -0
  163. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/doc/org/libjpegturbo/turbojpeg/TJTransform.html +706 -0
  164. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/doc/org/libjpegturbo/turbojpeg/TJTransformer.html +417 -0
  165. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/doc/org/libjpegturbo/turbojpeg/YUVImage.html +761 -0
  166. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/doc/org/libjpegturbo/turbojpeg/package-frame.html +31 -0
  167. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/doc/org/libjpegturbo/turbojpeg/package-summary.html +198 -0
  168. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/doc/org/libjpegturbo/turbojpeg/package-tree.html +156 -0
  169. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/doc/overview-tree.html +160 -0
  170. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/doc/package-list +1 -0
  171. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/doc/resources/background.gif +0 -0
  172. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/doc/resources/tab.gif +0 -0
  173. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/doc/resources/titlebar.gif +0 -0
  174. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/doc/resources/titlebar_end.gif +0 -0
  175. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/doc/serialized-form.html +159 -0
  176. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/doc/stylesheet.css +474 -0
  177. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/org/libjpegturbo/turbojpeg/TJ.java +513 -0
  178. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/org/libjpegturbo/turbojpeg/TJCompressor.java +658 -0
  179. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/org/libjpegturbo/turbojpeg/TJCustomFilter.java +76 -0
  180. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/org/libjpegturbo/turbojpeg/TJDecompressor.java +909 -0
  181. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/org/libjpegturbo/turbojpeg/TJException.java +53 -0
  182. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/org/libjpegturbo/turbojpeg/TJLoader.java.in +35 -0
  183. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/org/libjpegturbo/turbojpeg/TJLoader.java.tmpl +59 -0
  184. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/org/libjpegturbo/turbojpeg/TJScalingFactor.java +104 -0
  185. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/org/libjpegturbo/turbojpeg/TJTransform.java +208 -0
  186. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/org/libjpegturbo/turbojpeg/TJTransformer.java +163 -0
  187. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/org/libjpegturbo/turbojpeg/YUVImage.java +443 -0
  188. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/org_libjpegturbo_turbojpeg_TJ.h +129 -0
  189. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/org_libjpegturbo_turbojpeg_TJCompressor.h +101 -0
  190. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/org_libjpegturbo_turbojpeg_TJDecompressor.h +101 -0
  191. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/java/org_libjpegturbo_turbojpeg_TJTransformer.h +29 -0
  192. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jcapimin.c +295 -0
  193. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jcapistd.c +162 -0
  194. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jcarith.c +928 -0
  195. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jccoefct.c +449 -0
  196. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jccolext.c +148 -0
  197. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jccolor.c +719 -0
  198. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jcdctmgr.c +721 -0
  199. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jchuff.c +1091 -0
  200. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jchuff.h +43 -0
  201. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jcinit.c +77 -0
  202. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jcmainct.c +162 -0
  203. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jcmarker.c +665 -0
  204. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jcmaster.c +639 -0
  205. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jcomapi.c +109 -0
  206. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jconfig.h.in +73 -0
  207. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jconfig.txt +143 -0
  208. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jconfigint.h.in +17 -0
  209. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jcparam.c +542 -0
  210. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jcphuff.c +834 -0
  211. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jcprepct.c +357 -0
  212. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jcsample.c +539 -0
  213. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jcstest.c +126 -0
  214. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jctrans.c +402 -0
  215. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jdapimin.c +407 -0
  216. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jdapistd.c +637 -0
  217. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jdarith.c +769 -0
  218. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jdatadst-tj.c +202 -0
  219. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jdatadst.c +293 -0
  220. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jdatasrc-tj.c +191 -0
  221. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jdatasrc.c +295 -0
  222. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jdcoefct.c +693 -0
  223. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jdcoefct.h +82 -0
  224. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jdcol565.c +384 -0
  225. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jdcolext.c +143 -0
  226. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jdcolor.c +897 -0
  227. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jdct.h +208 -0
  228. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jddctmgr.c +352 -0
  229. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jdhuff.c +822 -0
  230. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jdhuff.h +234 -0
  231. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jdinput.c +405 -0
  232. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jdmainct.c +456 -0
  233. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jdmainct.h +71 -0
  234. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jdmarker.c +1377 -0
  235. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jdmaster.c +736 -0
  236. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jdmaster.h +28 -0
  237. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jdmerge.c +627 -0
  238. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jdmrg565.c +356 -0
  239. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jdmrgext.c +186 -0
  240. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jdphuff.c +674 -0
  241. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jdpostct.c +290 -0
  242. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jdsample.c +517 -0
  243. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jdsample.h +50 -0
  244. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jdtrans.c +155 -0
  245. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jerror.c +251 -0
  246. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jerror.h +317 -0
  247. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jfdctflt.c +169 -0
  248. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jfdctfst.c +227 -0
  249. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jfdctint.c +286 -0
  250. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jidctflt.c +240 -0
  251. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jidctfst.c +371 -0
  252. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jidctint.c +2627 -0
  253. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jidctred.c +403 -0
  254. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jinclude.h +84 -0
  255. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jmemmgr.c +1183 -0
  256. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jmemnobs.c +115 -0
  257. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jmemsys.h +178 -0
  258. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jmorecfg.h +421 -0
  259. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jpeg_nbits_table.h +4098 -0
  260. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jpegcomp.h +31 -0
  261. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jpegint.h +368 -0
  262. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jpeglib.h +1122 -0
  263. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jpegtran.1 +290 -0
  264. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jpegtran.c +551 -0
  265. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jquant1.c +857 -0
  266. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jquant2.c +1282 -0
  267. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jsimd.h +93 -0
  268. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jsimd_none.c +404 -0
  269. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jsimddct.h +74 -0
  270. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jstdhuff.c +135 -0
  271. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jutils.c +133 -0
  272. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/jversion.h +49 -0
  273. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/libjpeg.map.in +11 -0
  274. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/libjpeg.txt +3104 -0
  275. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/md5/CMakeLists.txt +1 -0
  276. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/md5/Makefile.am +4 -0
  277. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/md5/md5.c +340 -0
  278. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/md5/md5.h +49 -0
  279. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/md5/md5cmp.c +60 -0
  280. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/md5/md5hl.c +114 -0
  281. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/rdbmp.c +483 -0
  282. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/rdcolmap.c +254 -0
  283. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/rdgif.c +39 -0
  284. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/rdjpgcom.1 +63 -0
  285. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/rdjpgcom.c +510 -0
  286. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/rdppm.c +471 -0
  287. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/rdrle.c +389 -0
  288. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/rdswitch.c +424 -0
  289. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/rdtarga.c +503 -0
  290. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/release/Distribution.xml +24 -0
  291. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/release/License.rtf +20 -0
  292. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/release/ReadMe.txt +5 -0
  293. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/release/Welcome.rtf +17 -0
  294. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/release/deb-control.tmpl +31 -0
  295. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/release/libjpeg-turbo.nsi.in +162 -0
  296. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/release/libjpeg-turbo.spec.in +164 -0
  297. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/release/libjpeg.pc.in +10 -0
  298. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/release/libturbojpeg.pc.in +10 -0
  299. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/release/makecygwinpkg.in +42 -0
  300. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/release/makedpkg.in +82 -0
  301. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/release/makemacpkg.in +470 -0
  302. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/release/uninstall.in +112 -0
  303. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/sharedlib/CMakeLists.txt +73 -0
  304. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/CMakeLists.txt +81 -0
  305. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/Makefile.am +102 -0
  306. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jccolext-altivec.c +267 -0
  307. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jccolext-mmx.asm +476 -0
  308. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jccolext-sse2-64.asm +486 -0
  309. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jccolext-sse2.asm +503 -0
  310. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jccolor-altivec.c +104 -0
  311. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jccolor-mmx.asm +122 -0
  312. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jccolor-sse2-64.asm +121 -0
  313. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jccolor-sse2.asm +121 -0
  314. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jcgray-altivec.c +99 -0
  315. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jcgray-mmx.asm +115 -0
  316. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jcgray-sse2-64.asm +114 -0
  317. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jcgray-sse2.asm +114 -0
  318. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jcgryext-altivec.c +227 -0
  319. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jcgryext-mmx.asm +356 -0
  320. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jcgryext-sse2-64.asm +365 -0
  321. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jcgryext-sse2.asm +384 -0
  322. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jchuff-sse2-64.asm +360 -0
  323. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jchuff-sse2.asm +426 -0
  324. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jcolsamp.inc +104 -0
  325. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jcsample-altivec.c +158 -0
  326. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jcsample-mmx.asm +323 -0
  327. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jcsample-sse2-64.asm +329 -0
  328. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jcsample-sse2.asm +350 -0
  329. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jcsample.h +28 -0
  330. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jdcolext-altivec.c +274 -0
  331. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jdcolext-mmx.asm +404 -0
  332. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jdcolext-sse2-64.asm +440 -0
  333. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jdcolext-sse2.asm +459 -0
  334. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jdcolor-altivec.c +96 -0
  335. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jdcolor-mmx.asm +119 -0
  336. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jdcolor-sse2-64.asm +119 -0
  337. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jdcolor-sse2.asm +119 -0
  338. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jdct.inc +27 -0
  339. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jdmerge-altivec.c +108 -0
  340. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jdmerge-mmx.asm +125 -0
  341. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jdmerge-sse2-64.asm +125 -0
  342. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jdmerge-sse2.asm +125 -0
  343. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jdmrgext-altivec.c +323 -0
  344. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jdmrgext-mmx.asm +463 -0
  345. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jdmrgext-sse2-64.asm +537 -0
  346. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jdmrgext-sse2.asm +518 -0
  347. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jdsample-altivec.c +392 -0
  348. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jdsample-mmx.asm +736 -0
  349. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jdsample-sse2-64.asm +670 -0
  350. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jdsample-sse2.asm +728 -0
  351. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jfdctflt-3dn.asm +319 -0
  352. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jfdctflt-sse-64.asm +357 -0
  353. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jfdctflt-sse.asm +369 -0
  354. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jfdctfst-altivec.c +156 -0
  355. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jfdctfst-mmx.asm +396 -0
  356. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jfdctfst-sse2-64.asm +391 -0
  357. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jfdctfst-sse2.asm +403 -0
  358. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jfdctint-altivec.c +262 -0
  359. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jfdctint-mmx.asm +621 -0
  360. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jfdctint-sse2-64.asm +621 -0
  361. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jfdctint-sse2.asm +633 -0
  362. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jidctflt-3dn.asm +451 -0
  363. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jidctflt-sse.asm +571 -0
  364. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jidctflt-sse2-64.asm +482 -0
  365. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jidctflt-sse2.asm +497 -0
  366. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jidctfst-altivec.c +257 -0
  367. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jidctfst-mmx.asm +499 -0
  368. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jidctfst-sse2-64.asm +491 -0
  369. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jidctfst-sse2.asm +501 -0
  370. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jidctint-altivec.c +359 -0
  371. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jidctint-mmx.asm +851 -0
  372. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jidctint-sse2-64.asm +847 -0
  373. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jidctint-sse2.asm +858 -0
  374. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jidctred-mmx.asm +705 -0
  375. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jidctred-sse2-64.asm +575 -0
  376. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jidctred-sse2.asm +593 -0
  377. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jpeg_nbits_table.inc +4097 -0
  378. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jquant-3dn.asm +232 -0
  379. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jquant-mmx.asm +273 -0
  380. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jquant-sse.asm +210 -0
  381. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jquantf-sse2-64.asm +157 -0
  382. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jquantf-sse2.asm +170 -0
  383. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jquanti-altivec.c +252 -0
  384. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jquanti-sse2-64.asm +186 -0
  385. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jquanti-sse2.asm +199 -0
  386. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jsimd.h +871 -0
  387. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jsimd_altivec.h +99 -0
  388. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jsimd_arm.c +728 -0
  389. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jsimd_arm64.c +803 -0
  390. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jsimd_arm64_neon.S +3425 -0
  391. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jsimd_arm_neon.S +2878 -0
  392. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jsimd_i386.c +1091 -0
  393. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jsimd_mips.c +1140 -0
  394. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jsimd_mips_dspr2.S +4486 -0
  395. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jsimd_mips_dspr2_asm.h +283 -0
  396. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jsimd_powerpc.c +852 -0
  397. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jsimd_x86_64.c +887 -0
  398. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jsimdcfg.inc.h +130 -0
  399. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jsimdcpu.asm +104 -0
  400. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/jsimdext.inc +375 -0
  401. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/simd/nasm_lt.sh +60 -0
  402. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/structure.txt +904 -0
  403. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/testimages/nightshot_iso_100.bmp +0 -0
  404. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/testimages/nightshot_iso_100.txt +25 -0
  405. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/testimages/testimgari.jpg +0 -0
  406. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/testimages/testimgint.jpg +0 -0
  407. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/testimages/testorig.jpg +0 -0
  408. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/testimages/testorig.ppm +4 -0
  409. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/testimages/testorig12.jpg +0 -0
  410. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/testimages/vgl_5674_0098.bmp +0 -0
  411. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/testimages/vgl_6434_0018a.bmp +0 -0
  412. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/testimages/vgl_6548_0026a.bmp +0 -0
  413. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/tjbench.c +1010 -0
  414. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/tjbenchtest.in +252 -0
  415. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/tjbenchtest.java.in +207 -0
  416. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/tjexampletest.in +150 -0
  417. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/tjunittest.c +734 -0
  418. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/tjutil.c +66 -0
  419. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/tjutil.h +47 -0
  420. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/transupp.c +1626 -0
  421. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/transupp.h +207 -0
  422. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/turbojpeg-jni.c +1166 -0
  423. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/turbojpeg-mapfile +56 -0
  424. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/turbojpeg-mapfile.jni +92 -0
  425. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/turbojpeg.c +2175 -0
  426. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/turbojpeg.h +1545 -0
  427. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/usage.txt +635 -0
  428. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/win/jconfig.h.in +51 -0
  429. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/win/jconfigint.h.in +13 -0
  430. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/win/jpeg62-memsrcdst.def +106 -0
  431. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/win/jpeg62.def +104 -0
  432. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/win/jpeg7-memsrcdst.def +108 -0
  433. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/win/jpeg7.def +106 -0
  434. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/win/jpeg8.def +109 -0
  435. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/win/jsimdcfg.inc +94 -0
  436. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/wizard.txt +211 -0
  437. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/wrbmp.c +494 -0
  438. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/wrgif.c +413 -0
  439. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/wrjpgcom.1 +103 -0
  440. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/wrjpgcom.c +592 -0
  441. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/wrppm.c +280 -0
  442. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/wrrle.c +308 -0
  443. data/vendor/github.com/libjpeg-turbo/libjpeg-turbo/wrtarga.c +261 -0
  444. metadata +509 -0
@@ -0,0 +1,440 @@
1
+ ;
2
+ ; jdcolext.asm - colorspace conversion (64-bit SSE2)
3
+ ;
4
+ ; Copyright 2009, 2012 Pierre Ossman <ossman@cendio.se> for Cendio AB
5
+ ; Copyright (C) 2009, 2012, 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
+ ; [TAB8]
18
+
19
+ %include "jcolsamp.inc"
20
+
21
+ ; --------------------------------------------------------------------------
22
+ ;
23
+ ; Convert some rows of samples to the output colorspace.
24
+ ;
25
+ ; GLOBAL(void)
26
+ ; jsimd_ycc_rgb_convert_sse2 (JDIMENSION out_width,
27
+ ; JSAMPIMAGE input_buf, JDIMENSION input_row,
28
+ ; JSAMPARRAY output_buf, int num_rows)
29
+ ;
30
+
31
+ ; r10 = JDIMENSION out_width
32
+ ; r11 = JSAMPIMAGE input_buf
33
+ ; r12 = JDIMENSION input_row
34
+ ; r13 = JSAMPARRAY output_buf
35
+ ; r14 = int num_rows
36
+
37
+ %define wk(i) rbp-(WK_NUM-(i))*SIZEOF_XMMWORD ; xmmword wk[WK_NUM]
38
+ %define WK_NUM 2
39
+
40
+ align 16
41
+ global EXTN(jsimd_ycc_rgb_convert_sse2)
42
+
43
+ EXTN(jsimd_ycc_rgb_convert_sse2):
44
+ push rbp
45
+ mov rax,rsp ; rax = original rbp
46
+ sub rsp, byte 4
47
+ and rsp, byte (-SIZEOF_XMMWORD) ; align to 128 bits
48
+ mov [rsp],rax
49
+ mov rbp,rsp ; rbp = aligned rbp
50
+ lea rsp, [wk(0)]
51
+ collect_args
52
+ push rbx
53
+
54
+ mov ecx, r10d ; num_cols
55
+ test rcx,rcx
56
+ jz near .return
57
+
58
+ push rcx
59
+
60
+ mov rdi, r11
61
+ mov ecx, r12d
62
+ mov rsi, JSAMPARRAY [rdi+0*SIZEOF_JSAMPARRAY]
63
+ mov rbx, JSAMPARRAY [rdi+1*SIZEOF_JSAMPARRAY]
64
+ mov rdx, JSAMPARRAY [rdi+2*SIZEOF_JSAMPARRAY]
65
+ lea rsi, [rsi+rcx*SIZEOF_JSAMPROW]
66
+ lea rbx, [rbx+rcx*SIZEOF_JSAMPROW]
67
+ lea rdx, [rdx+rcx*SIZEOF_JSAMPROW]
68
+
69
+ pop rcx
70
+
71
+ mov rdi, r13
72
+ mov eax, r14d
73
+ test rax,rax
74
+ jle near .return
75
+ .rowloop:
76
+ push rax
77
+ push rdi
78
+ push rdx
79
+ push rbx
80
+ push rsi
81
+ push rcx ; col
82
+
83
+ mov rsi, JSAMPROW [rsi] ; inptr0
84
+ mov rbx, JSAMPROW [rbx] ; inptr1
85
+ mov rdx, JSAMPROW [rdx] ; inptr2
86
+ mov rdi, JSAMPROW [rdi] ; outptr
87
+ .columnloop:
88
+
89
+ movdqa xmm5, XMMWORD [rbx] ; xmm5=Cb(0123456789ABCDEF)
90
+ movdqa xmm1, XMMWORD [rdx] ; xmm1=Cr(0123456789ABCDEF)
91
+
92
+ pcmpeqw xmm4,xmm4
93
+ pcmpeqw xmm7,xmm7
94
+ psrlw xmm4,BYTE_BIT
95
+ psllw xmm7,7 ; xmm7={0xFF80 0xFF80 0xFF80 0xFF80 ..}
96
+ movdqa xmm0,xmm4 ; xmm0=xmm4={0xFF 0x00 0xFF 0x00 ..}
97
+
98
+ pand xmm4,xmm5 ; xmm4=Cb(02468ACE)=CbE
99
+ psrlw xmm5,BYTE_BIT ; xmm5=Cb(13579BDF)=CbO
100
+ pand xmm0,xmm1 ; xmm0=Cr(02468ACE)=CrE
101
+ psrlw xmm1,BYTE_BIT ; xmm1=Cr(13579BDF)=CrO
102
+
103
+ paddw xmm4,xmm7
104
+ paddw xmm5,xmm7
105
+ paddw xmm0,xmm7
106
+ paddw xmm1,xmm7
107
+
108
+ ; (Original)
109
+ ; R = Y + 1.40200 * Cr
110
+ ; G = Y - 0.34414 * Cb - 0.71414 * Cr
111
+ ; B = Y + 1.77200 * Cb
112
+ ;
113
+ ; (This implementation)
114
+ ; R = Y + 0.40200 * Cr + Cr
115
+ ; G = Y - 0.34414 * Cb + 0.28586 * Cr - Cr
116
+ ; B = Y - 0.22800 * Cb + Cb + Cb
117
+
118
+ movdqa xmm2,xmm4 ; xmm2=CbE
119
+ movdqa xmm3,xmm5 ; xmm3=CbO
120
+ paddw xmm4,xmm4 ; xmm4=2*CbE
121
+ paddw xmm5,xmm5 ; xmm5=2*CbO
122
+ movdqa xmm6,xmm0 ; xmm6=CrE
123
+ movdqa xmm7,xmm1 ; xmm7=CrO
124
+ paddw xmm0,xmm0 ; xmm0=2*CrE
125
+ paddw xmm1,xmm1 ; xmm1=2*CrO
126
+
127
+ pmulhw xmm4,[rel PW_MF0228] ; xmm4=(2*CbE * -FIX(0.22800))
128
+ pmulhw xmm5,[rel PW_MF0228] ; xmm5=(2*CbO * -FIX(0.22800))
129
+ pmulhw xmm0,[rel PW_F0402] ; xmm0=(2*CrE * FIX(0.40200))
130
+ pmulhw xmm1,[rel PW_F0402] ; xmm1=(2*CrO * FIX(0.40200))
131
+
132
+ paddw xmm4,[rel PW_ONE]
133
+ paddw xmm5,[rel PW_ONE]
134
+ psraw xmm4,1 ; xmm4=(CbE * -FIX(0.22800))
135
+ psraw xmm5,1 ; xmm5=(CbO * -FIX(0.22800))
136
+ paddw xmm0,[rel PW_ONE]
137
+ paddw xmm1,[rel PW_ONE]
138
+ psraw xmm0,1 ; xmm0=(CrE * FIX(0.40200))
139
+ psraw xmm1,1 ; xmm1=(CrO * FIX(0.40200))
140
+
141
+ paddw xmm4,xmm2
142
+ paddw xmm5,xmm3
143
+ paddw xmm4,xmm2 ; xmm4=(CbE * FIX(1.77200))=(B-Y)E
144
+ paddw xmm5,xmm3 ; xmm5=(CbO * FIX(1.77200))=(B-Y)O
145
+ paddw xmm0,xmm6 ; xmm0=(CrE * FIX(1.40200))=(R-Y)E
146
+ paddw xmm1,xmm7 ; xmm1=(CrO * FIX(1.40200))=(R-Y)O
147
+
148
+ movdqa XMMWORD [wk(0)], xmm4 ; wk(0)=(B-Y)E
149
+ movdqa XMMWORD [wk(1)], xmm5 ; wk(1)=(B-Y)O
150
+
151
+ movdqa xmm4,xmm2
152
+ movdqa xmm5,xmm3
153
+ punpcklwd xmm2,xmm6
154
+ punpckhwd xmm4,xmm6
155
+ pmaddwd xmm2,[rel PW_MF0344_F0285]
156
+ pmaddwd xmm4,[rel PW_MF0344_F0285]
157
+ punpcklwd xmm3,xmm7
158
+ punpckhwd xmm5,xmm7
159
+ pmaddwd xmm3,[rel PW_MF0344_F0285]
160
+ pmaddwd xmm5,[rel PW_MF0344_F0285]
161
+
162
+ paddd xmm2,[rel PD_ONEHALF]
163
+ paddd xmm4,[rel PD_ONEHALF]
164
+ psrad xmm2,SCALEBITS
165
+ psrad xmm4,SCALEBITS
166
+ paddd xmm3,[rel PD_ONEHALF]
167
+ paddd xmm5,[rel PD_ONEHALF]
168
+ psrad xmm3,SCALEBITS
169
+ psrad xmm5,SCALEBITS
170
+
171
+ packssdw xmm2,xmm4 ; xmm2=CbE*-FIX(0.344)+CrE*FIX(0.285)
172
+ packssdw xmm3,xmm5 ; xmm3=CbO*-FIX(0.344)+CrO*FIX(0.285)
173
+ psubw xmm2,xmm6 ; xmm2=CbE*-FIX(0.344)+CrE*-FIX(0.714)=(G-Y)E
174
+ psubw xmm3,xmm7 ; xmm3=CbO*-FIX(0.344)+CrO*-FIX(0.714)=(G-Y)O
175
+
176
+ movdqa xmm5, XMMWORD [rsi] ; xmm5=Y(0123456789ABCDEF)
177
+
178
+ pcmpeqw xmm4,xmm4
179
+ psrlw xmm4,BYTE_BIT ; xmm4={0xFF 0x00 0xFF 0x00 ..}
180
+ pand xmm4,xmm5 ; xmm4=Y(02468ACE)=YE
181
+ psrlw xmm5,BYTE_BIT ; xmm5=Y(13579BDF)=YO
182
+
183
+ paddw xmm0,xmm4 ; xmm0=((R-Y)E+YE)=RE=R(02468ACE)
184
+ paddw xmm1,xmm5 ; xmm1=((R-Y)O+YO)=RO=R(13579BDF)
185
+ packuswb xmm0,xmm0 ; xmm0=R(02468ACE********)
186
+ packuswb xmm1,xmm1 ; xmm1=R(13579BDF********)
187
+
188
+ paddw xmm2,xmm4 ; xmm2=((G-Y)E+YE)=GE=G(02468ACE)
189
+ paddw xmm3,xmm5 ; xmm3=((G-Y)O+YO)=GO=G(13579BDF)
190
+ packuswb xmm2,xmm2 ; xmm2=G(02468ACE********)
191
+ packuswb xmm3,xmm3 ; xmm3=G(13579BDF********)
192
+
193
+ paddw xmm4, XMMWORD [wk(0)] ; xmm4=(YE+(B-Y)E)=BE=B(02468ACE)
194
+ paddw xmm5, XMMWORD [wk(1)] ; xmm5=(YO+(B-Y)O)=BO=B(13579BDF)
195
+ packuswb xmm4,xmm4 ; xmm4=B(02468ACE********)
196
+ packuswb xmm5,xmm5 ; xmm5=B(13579BDF********)
197
+
198
+ %if RGB_PIXELSIZE == 3 ; ---------------
199
+
200
+ ; xmmA=(00 02 04 06 08 0A 0C 0E **), xmmB=(01 03 05 07 09 0B 0D 0F **)
201
+ ; xmmC=(10 12 14 16 18 1A 1C 1E **), xmmD=(11 13 15 17 19 1B 1D 1F **)
202
+ ; xmmE=(20 22 24 26 28 2A 2C 2E **), xmmF=(21 23 25 27 29 2B 2D 2F **)
203
+ ; xmmG=(** ** ** ** ** ** ** ** **), xmmH=(** ** ** ** ** ** ** ** **)
204
+
205
+ punpcklbw xmmA,xmmC ; xmmA=(00 10 02 12 04 14 06 16 08 18 0A 1A 0C 1C 0E 1E)
206
+ punpcklbw xmmE,xmmB ; xmmE=(20 01 22 03 24 05 26 07 28 09 2A 0B 2C 0D 2E 0F)
207
+ punpcklbw xmmD,xmmF ; xmmD=(11 21 13 23 15 25 17 27 19 29 1B 2B 1D 2D 1F 2F)
208
+
209
+ movdqa xmmG,xmmA
210
+ movdqa xmmH,xmmA
211
+ punpcklwd xmmA,xmmE ; xmmA=(00 10 20 01 02 12 22 03 04 14 24 05 06 16 26 07)
212
+ punpckhwd xmmG,xmmE ; xmmG=(08 18 28 09 0A 1A 2A 0B 0C 1C 2C 0D 0E 1E 2E 0F)
213
+
214
+ psrldq xmmH,2 ; xmmH=(02 12 04 14 06 16 08 18 0A 1A 0C 1C 0E 1E -- --)
215
+ psrldq xmmE,2 ; xmmE=(22 03 24 05 26 07 28 09 2A 0B 2C 0D 2E 0F -- --)
216
+
217
+ movdqa xmmC,xmmD
218
+ movdqa xmmB,xmmD
219
+ punpcklwd xmmD,xmmH ; xmmD=(11 21 02 12 13 23 04 14 15 25 06 16 17 27 08 18)
220
+ punpckhwd xmmC,xmmH ; xmmC=(19 29 0A 1A 1B 2B 0C 1C 1D 2D 0E 1E 1F 2F -- --)
221
+
222
+ psrldq xmmB,2 ; xmmB=(13 23 15 25 17 27 19 29 1B 2B 1D 2D 1F 2F -- --)
223
+
224
+ movdqa xmmF,xmmE
225
+ punpcklwd xmmE,xmmB ; xmmE=(22 03 13 23 24 05 15 25 26 07 17 27 28 09 19 29)
226
+ punpckhwd xmmF,xmmB ; xmmF=(2A 0B 1B 2B 2C 0D 1D 2D 2E 0F 1F 2F -- -- -- --)
227
+
228
+ pshufd xmmH,xmmA,0x4E; xmmH=(04 14 24 05 06 16 26 07 00 10 20 01 02 12 22 03)
229
+ movdqa xmmB,xmmE
230
+ punpckldq xmmA,xmmD ; xmmA=(00 10 20 01 11 21 02 12 02 12 22 03 13 23 04 14)
231
+ punpckldq xmmE,xmmH ; xmmE=(22 03 13 23 04 14 24 05 24 05 15 25 06 16 26 07)
232
+ punpckhdq xmmD,xmmB ; xmmD=(15 25 06 16 26 07 17 27 17 27 08 18 28 09 19 29)
233
+
234
+ pshufd xmmH,xmmG,0x4E; xmmH=(0C 1C 2C 0D 0E 1E 2E 0F 08 18 28 09 0A 1A 2A 0B)
235
+ movdqa xmmB,xmmF
236
+ punpckldq xmmG,xmmC ; xmmG=(08 18 28 09 19 29 0A 1A 0A 1A 2A 0B 1B 2B 0C 1C)
237
+ punpckldq xmmF,xmmH ; xmmF=(2A 0B 1B 2B 0C 1C 2C 0D 2C 0D 1D 2D 0E 1E 2E 0F)
238
+ punpckhdq xmmC,xmmB ; xmmC=(1D 2D 0E 1E 2E 0F 1F 2F 1F 2F -- -- -- -- -- --)
239
+
240
+ punpcklqdq xmmA,xmmE ; xmmA=(00 10 20 01 11 21 02 12 22 03 13 23 04 14 24 05)
241
+ punpcklqdq xmmD,xmmG ; xmmD=(15 25 06 16 26 07 17 27 08 18 28 09 19 29 0A 1A)
242
+ punpcklqdq xmmF,xmmC ; xmmF=(2A 0B 1B 2B 0C 1C 2C 0D 1D 2D 0E 1E 2E 0F 1F 2F)
243
+
244
+ cmp rcx, byte SIZEOF_XMMWORD
245
+ jb short .column_st32
246
+
247
+ test rdi, SIZEOF_XMMWORD-1
248
+ jnz short .out1
249
+ ; --(aligned)-------------------
250
+ movntdq XMMWORD [rdi+0*SIZEOF_XMMWORD], xmmA
251
+ movntdq XMMWORD [rdi+1*SIZEOF_XMMWORD], xmmD
252
+ movntdq XMMWORD [rdi+2*SIZEOF_XMMWORD], xmmF
253
+ jmp short .out0
254
+ .out1: ; --(unaligned)-----------------
255
+ movdqu XMMWORD [rdi+0*SIZEOF_XMMWORD], xmmA
256
+ movdqu XMMWORD [rdi+1*SIZEOF_XMMWORD], xmmD
257
+ movdqu XMMWORD [rdi+2*SIZEOF_XMMWORD], xmmF
258
+ .out0:
259
+ add rdi, byte RGB_PIXELSIZE*SIZEOF_XMMWORD ; outptr
260
+ sub rcx, byte SIZEOF_XMMWORD
261
+ jz near .nextrow
262
+
263
+ add rsi, byte SIZEOF_XMMWORD ; inptr0
264
+ add rbx, byte SIZEOF_XMMWORD ; inptr1
265
+ add rdx, byte SIZEOF_XMMWORD ; inptr2
266
+ jmp near .columnloop
267
+
268
+ .column_st32:
269
+ lea rcx, [rcx+rcx*2] ; imul ecx, RGB_PIXELSIZE
270
+ cmp rcx, byte 2*SIZEOF_XMMWORD
271
+ jb short .column_st16
272
+ movdqu XMMWORD [rdi+0*SIZEOF_XMMWORD], xmmA
273
+ movdqu XMMWORD [rdi+1*SIZEOF_XMMWORD], xmmD
274
+ add rdi, byte 2*SIZEOF_XMMWORD ; outptr
275
+ movdqa xmmA,xmmF
276
+ sub rcx, byte 2*SIZEOF_XMMWORD
277
+ jmp short .column_st15
278
+ .column_st16:
279
+ cmp rcx, byte SIZEOF_XMMWORD
280
+ jb short .column_st15
281
+ movdqu XMMWORD [rdi+0*SIZEOF_XMMWORD], xmmA
282
+ add rdi, byte SIZEOF_XMMWORD ; outptr
283
+ movdqa xmmA,xmmD
284
+ sub rcx, byte SIZEOF_XMMWORD
285
+ .column_st15:
286
+ ; Store the lower 8 bytes of xmmA to the output when it has enough
287
+ ; space.
288
+ cmp rcx, byte SIZEOF_MMWORD
289
+ jb short .column_st7
290
+ movq XMM_MMWORD [rdi], xmmA
291
+ add rdi, byte SIZEOF_MMWORD
292
+ sub rcx, byte SIZEOF_MMWORD
293
+ psrldq xmmA, SIZEOF_MMWORD
294
+ .column_st7:
295
+ ; Store the lower 4 bytes of xmmA to the output when it has enough
296
+ ; space.
297
+ cmp rcx, byte SIZEOF_DWORD
298
+ jb short .column_st3
299
+ movd XMM_DWORD [rdi], xmmA
300
+ add rdi, byte SIZEOF_DWORD
301
+ sub rcx, byte SIZEOF_DWORD
302
+ psrldq xmmA, SIZEOF_DWORD
303
+ .column_st3:
304
+ ; Store the lower 2 bytes of rax to the output when it has enough
305
+ ; space.
306
+ movd eax, xmmA
307
+ cmp rcx, byte SIZEOF_WORD
308
+ jb short .column_st1
309
+ mov WORD [rdi], ax
310
+ add rdi, byte SIZEOF_WORD
311
+ sub rcx, byte SIZEOF_WORD
312
+ shr rax, 16
313
+ .column_st1:
314
+ ; Store the lower 1 byte of rax to the output when it has enough
315
+ ; space.
316
+ test rcx, rcx
317
+ jz short .nextrow
318
+ mov BYTE [rdi], al
319
+
320
+ %else ; RGB_PIXELSIZE == 4 ; -----------
321
+
322
+ %ifdef RGBX_FILLER_0XFF
323
+ pcmpeqb xmm6,xmm6 ; xmm6=XE=X(02468ACE********)
324
+ pcmpeqb xmm7,xmm7 ; xmm7=XO=X(13579BDF********)
325
+ %else
326
+ pxor xmm6,xmm6 ; xmm6=XE=X(02468ACE********)
327
+ pxor xmm7,xmm7 ; xmm7=XO=X(13579BDF********)
328
+ %endif
329
+ ; xmmA=(00 02 04 06 08 0A 0C 0E **), xmmB=(01 03 05 07 09 0B 0D 0F **)
330
+ ; xmmC=(10 12 14 16 18 1A 1C 1E **), xmmD=(11 13 15 17 19 1B 1D 1F **)
331
+ ; xmmE=(20 22 24 26 28 2A 2C 2E **), xmmF=(21 23 25 27 29 2B 2D 2F **)
332
+ ; xmmG=(30 32 34 36 38 3A 3C 3E **), xmmH=(31 33 35 37 39 3B 3D 3F **)
333
+
334
+ punpcklbw xmmA,xmmC ; xmmA=(00 10 02 12 04 14 06 16 08 18 0A 1A 0C 1C 0E 1E)
335
+ punpcklbw xmmE,xmmG ; xmmE=(20 30 22 32 24 34 26 36 28 38 2A 3A 2C 3C 2E 3E)
336
+ punpcklbw xmmB,xmmD ; xmmB=(01 11 03 13 05 15 07 17 09 19 0B 1B 0D 1D 0F 1F)
337
+ punpcklbw xmmF,xmmH ; xmmF=(21 31 23 33 25 35 27 37 29 39 2B 3B 2D 3D 2F 3F)
338
+
339
+ movdqa xmmC,xmmA
340
+ punpcklwd xmmA,xmmE ; xmmA=(00 10 20 30 02 12 22 32 04 14 24 34 06 16 26 36)
341
+ punpckhwd xmmC,xmmE ; xmmC=(08 18 28 38 0A 1A 2A 3A 0C 1C 2C 3C 0E 1E 2E 3E)
342
+ movdqa xmmG,xmmB
343
+ punpcklwd xmmB,xmmF ; xmmB=(01 11 21 31 03 13 23 33 05 15 25 35 07 17 27 37)
344
+ punpckhwd xmmG,xmmF ; xmmG=(09 19 29 39 0B 1B 2B 3B 0D 1D 2D 3D 0F 1F 2F 3F)
345
+
346
+ movdqa xmmD,xmmA
347
+ punpckldq xmmA,xmmB ; xmmA=(00 10 20 30 01 11 21 31 02 12 22 32 03 13 23 33)
348
+ punpckhdq xmmD,xmmB ; xmmD=(04 14 24 34 05 15 25 35 06 16 26 36 07 17 27 37)
349
+ movdqa xmmH,xmmC
350
+ punpckldq xmmC,xmmG ; xmmC=(08 18 28 38 09 19 29 39 0A 1A 2A 3A 0B 1B 2B 3B)
351
+ punpckhdq xmmH,xmmG ; xmmH=(0C 1C 2C 3C 0D 1D 2D 3D 0E 1E 2E 3E 0F 1F 2F 3F)
352
+
353
+ cmp rcx, byte SIZEOF_XMMWORD
354
+ jb short .column_st32
355
+
356
+ test rdi, SIZEOF_XMMWORD-1
357
+ jnz short .out1
358
+ ; --(aligned)-------------------
359
+ movntdq XMMWORD [rdi+0*SIZEOF_XMMWORD], xmmA
360
+ movntdq XMMWORD [rdi+1*SIZEOF_XMMWORD], xmmD
361
+ movntdq XMMWORD [rdi+2*SIZEOF_XMMWORD], xmmC
362
+ movntdq XMMWORD [rdi+3*SIZEOF_XMMWORD], xmmH
363
+ jmp short .out0
364
+ .out1: ; --(unaligned)-----------------
365
+ movdqu XMMWORD [rdi+0*SIZEOF_XMMWORD], xmmA
366
+ movdqu XMMWORD [rdi+1*SIZEOF_XMMWORD], xmmD
367
+ movdqu XMMWORD [rdi+2*SIZEOF_XMMWORD], xmmC
368
+ movdqu XMMWORD [rdi+3*SIZEOF_XMMWORD], xmmH
369
+ .out0:
370
+ add rdi, byte RGB_PIXELSIZE*SIZEOF_XMMWORD ; outptr
371
+ sub rcx, byte SIZEOF_XMMWORD
372
+ jz near .nextrow
373
+
374
+ add rsi, byte SIZEOF_XMMWORD ; inptr0
375
+ add rbx, byte SIZEOF_XMMWORD ; inptr1
376
+ add rdx, byte SIZEOF_XMMWORD ; inptr2
377
+ jmp near .columnloop
378
+
379
+ .column_st32:
380
+ cmp rcx, byte SIZEOF_XMMWORD/2
381
+ jb short .column_st16
382
+ movdqu XMMWORD [rdi+0*SIZEOF_XMMWORD], xmmA
383
+ movdqu XMMWORD [rdi+1*SIZEOF_XMMWORD], xmmD
384
+ add rdi, byte 2*SIZEOF_XMMWORD ; outptr
385
+ movdqa xmmA,xmmC
386
+ movdqa xmmD,xmmH
387
+ sub rcx, byte SIZEOF_XMMWORD/2
388
+ .column_st16:
389
+ cmp rcx, byte SIZEOF_XMMWORD/4
390
+ jb short .column_st15
391
+ movdqu XMMWORD [rdi+0*SIZEOF_XMMWORD], xmmA
392
+ add rdi, byte SIZEOF_XMMWORD ; outptr
393
+ movdqa xmmA,xmmD
394
+ sub rcx, byte SIZEOF_XMMWORD/4
395
+ .column_st15:
396
+ ; Store two pixels (8 bytes) of xmmA to the output when it has enough
397
+ ; space.
398
+ cmp rcx, byte SIZEOF_XMMWORD/8
399
+ jb short .column_st7
400
+ movq MMWORD [rdi], xmmA
401
+ add rdi, byte SIZEOF_XMMWORD/8*4
402
+ sub rcx, byte SIZEOF_XMMWORD/8
403
+ psrldq xmmA, SIZEOF_XMMWORD/8*4
404
+ .column_st7:
405
+ ; Store one pixel (4 bytes) of xmmA to the output when it has enough
406
+ ; space.
407
+ test rcx, rcx
408
+ jz short .nextrow
409
+ movd XMM_DWORD [rdi], xmmA
410
+
411
+ %endif ; RGB_PIXELSIZE ; ---------------
412
+
413
+ .nextrow:
414
+ pop rcx
415
+ pop rsi
416
+ pop rbx
417
+ pop rdx
418
+ pop rdi
419
+ pop rax
420
+
421
+ add rsi, byte SIZEOF_JSAMPROW
422
+ add rbx, byte SIZEOF_JSAMPROW
423
+ add rdx, byte SIZEOF_JSAMPROW
424
+ add rdi, byte SIZEOF_JSAMPROW ; output_buf
425
+ dec rax ; num_rows
426
+ jg near .rowloop
427
+
428
+ sfence ; flush the write buffer
429
+
430
+ .return:
431
+ pop rbx
432
+ uncollect_args
433
+ mov rsp,rbp ; rsp <- aligned rbp
434
+ pop rsp ; rsp <- original rbp
435
+ pop rbp
436
+ ret
437
+
438
+ ; For some reason, the OS X linker does not honor the request to align the
439
+ ; segment unless we do this.
440
+ align 16
@@ -0,0 +1,459 @@
1
+ ;
2
+ ; jdcolext.asm - colorspace conversion (SSE2)
3
+ ;
4
+ ; Copyright 2009, 2012 Pierre Ossman <ossman@cendio.se> for Cendio AB
5
+ ; Copyright (C) 2012, 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
+ ; [TAB8]
18
+
19
+ %include "jcolsamp.inc"
20
+
21
+ ; --------------------------------------------------------------------------
22
+ ;
23
+ ; Convert some rows of samples to the output colorspace.
24
+ ;
25
+ ; GLOBAL(void)
26
+ ; jsimd_ycc_rgb_convert_sse2 (JDIMENSION out_width,
27
+ ; JSAMPIMAGE input_buf, JDIMENSION input_row,
28
+ ; JSAMPARRAY output_buf, int num_rows)
29
+ ;
30
+
31
+ %define out_width(b) (b)+8 ; JDIMENSION out_width
32
+ %define input_buf(b) (b)+12 ; JSAMPIMAGE input_buf
33
+ %define input_row(b) (b)+16 ; JDIMENSION input_row
34
+ %define output_buf(b) (b)+20 ; JSAMPARRAY output_buf
35
+ %define num_rows(b) (b)+24 ; int num_rows
36
+
37
+ %define original_ebp ebp+0
38
+ %define wk(i) ebp-(WK_NUM-(i))*SIZEOF_XMMWORD ; xmmword wk[WK_NUM]
39
+ %define WK_NUM 2
40
+ %define gotptr wk(0)-SIZEOF_POINTER ; void * gotptr
41
+
42
+ align 16
43
+ global EXTN(jsimd_ycc_rgb_convert_sse2)
44
+
45
+ EXTN(jsimd_ycc_rgb_convert_sse2):
46
+ push ebp
47
+ mov eax,esp ; eax = original ebp
48
+ sub esp, byte 4
49
+ and esp, byte (-SIZEOF_XMMWORD) ; align to 128 bits
50
+ mov [esp],eax
51
+ mov ebp,esp ; ebp = aligned ebp
52
+ lea esp, [wk(0)]
53
+ pushpic eax ; make a room for GOT address
54
+ push ebx
55
+ ; push ecx ; need not be preserved
56
+ ; push edx ; need not be preserved
57
+ push esi
58
+ push edi
59
+
60
+ get_GOT ebx ; get GOT address
61
+ movpic POINTER [gotptr], ebx ; save GOT address
62
+
63
+ mov ecx, JDIMENSION [out_width(eax)] ; num_cols
64
+ test ecx,ecx
65
+ jz near .return
66
+
67
+ push ecx
68
+
69
+ mov edi, JSAMPIMAGE [input_buf(eax)]
70
+ mov ecx, JDIMENSION [input_row(eax)]
71
+ mov esi, JSAMPARRAY [edi+0*SIZEOF_JSAMPARRAY]
72
+ mov ebx, JSAMPARRAY [edi+1*SIZEOF_JSAMPARRAY]
73
+ mov edx, JSAMPARRAY [edi+2*SIZEOF_JSAMPARRAY]
74
+ lea esi, [esi+ecx*SIZEOF_JSAMPROW]
75
+ lea ebx, [ebx+ecx*SIZEOF_JSAMPROW]
76
+ lea edx, [edx+ecx*SIZEOF_JSAMPROW]
77
+
78
+ pop ecx
79
+
80
+ mov edi, JSAMPARRAY [output_buf(eax)]
81
+ mov eax, INT [num_rows(eax)]
82
+ test eax,eax
83
+ jle near .return
84
+ alignx 16,7
85
+ .rowloop:
86
+ push eax
87
+ push edi
88
+ push edx
89
+ push ebx
90
+ push esi
91
+ push ecx ; col
92
+
93
+ mov esi, JSAMPROW [esi] ; inptr0
94
+ mov ebx, JSAMPROW [ebx] ; inptr1
95
+ mov edx, JSAMPROW [edx] ; inptr2
96
+ mov edi, JSAMPROW [edi] ; outptr
97
+ movpic eax, POINTER [gotptr] ; load GOT address (eax)
98
+ alignx 16,7
99
+ .columnloop:
100
+
101
+ movdqa xmm5, XMMWORD [ebx] ; xmm5=Cb(0123456789ABCDEF)
102
+ movdqa xmm1, XMMWORD [edx] ; xmm1=Cr(0123456789ABCDEF)
103
+
104
+ pcmpeqw xmm4,xmm4
105
+ pcmpeqw xmm7,xmm7
106
+ psrlw xmm4,BYTE_BIT
107
+ psllw xmm7,7 ; xmm7={0xFF80 0xFF80 0xFF80 0xFF80 ..}
108
+ movdqa xmm0,xmm4 ; xmm0=xmm4={0xFF 0x00 0xFF 0x00 ..}
109
+
110
+ pand xmm4,xmm5 ; xmm4=Cb(02468ACE)=CbE
111
+ psrlw xmm5,BYTE_BIT ; xmm5=Cb(13579BDF)=CbO
112
+ pand xmm0,xmm1 ; xmm0=Cr(02468ACE)=CrE
113
+ psrlw xmm1,BYTE_BIT ; xmm1=Cr(13579BDF)=CrO
114
+
115
+ paddw xmm4,xmm7
116
+ paddw xmm5,xmm7
117
+ paddw xmm0,xmm7
118
+ paddw xmm1,xmm7
119
+
120
+ ; (Original)
121
+ ; R = Y + 1.40200 * Cr
122
+ ; G = Y - 0.34414 * Cb - 0.71414 * Cr
123
+ ; B = Y + 1.77200 * Cb
124
+ ;
125
+ ; (This implementation)
126
+ ; R = Y + 0.40200 * Cr + Cr
127
+ ; G = Y - 0.34414 * Cb + 0.28586 * Cr - Cr
128
+ ; B = Y - 0.22800 * Cb + Cb + Cb
129
+
130
+ movdqa xmm2,xmm4 ; xmm2=CbE
131
+ movdqa xmm3,xmm5 ; xmm3=CbO
132
+ paddw xmm4,xmm4 ; xmm4=2*CbE
133
+ paddw xmm5,xmm5 ; xmm5=2*CbO
134
+ movdqa xmm6,xmm0 ; xmm6=CrE
135
+ movdqa xmm7,xmm1 ; xmm7=CrO
136
+ paddw xmm0,xmm0 ; xmm0=2*CrE
137
+ paddw xmm1,xmm1 ; xmm1=2*CrO
138
+
139
+ pmulhw xmm4,[GOTOFF(eax,PW_MF0228)] ; xmm4=(2*CbE * -FIX(0.22800))
140
+ pmulhw xmm5,[GOTOFF(eax,PW_MF0228)] ; xmm5=(2*CbO * -FIX(0.22800))
141
+ pmulhw xmm0,[GOTOFF(eax,PW_F0402)] ; xmm0=(2*CrE * FIX(0.40200))
142
+ pmulhw xmm1,[GOTOFF(eax,PW_F0402)] ; xmm1=(2*CrO * FIX(0.40200))
143
+
144
+ paddw xmm4,[GOTOFF(eax,PW_ONE)]
145
+ paddw xmm5,[GOTOFF(eax,PW_ONE)]
146
+ psraw xmm4,1 ; xmm4=(CbE * -FIX(0.22800))
147
+ psraw xmm5,1 ; xmm5=(CbO * -FIX(0.22800))
148
+ paddw xmm0,[GOTOFF(eax,PW_ONE)]
149
+ paddw xmm1,[GOTOFF(eax,PW_ONE)]
150
+ psraw xmm0,1 ; xmm0=(CrE * FIX(0.40200))
151
+ psraw xmm1,1 ; xmm1=(CrO * FIX(0.40200))
152
+
153
+ paddw xmm4,xmm2
154
+ paddw xmm5,xmm3
155
+ paddw xmm4,xmm2 ; xmm4=(CbE * FIX(1.77200))=(B-Y)E
156
+ paddw xmm5,xmm3 ; xmm5=(CbO * FIX(1.77200))=(B-Y)O
157
+ paddw xmm0,xmm6 ; xmm0=(CrE * FIX(1.40200))=(R-Y)E
158
+ paddw xmm1,xmm7 ; xmm1=(CrO * FIX(1.40200))=(R-Y)O
159
+
160
+ movdqa XMMWORD [wk(0)], xmm4 ; wk(0)=(B-Y)E
161
+ movdqa XMMWORD [wk(1)], xmm5 ; wk(1)=(B-Y)O
162
+
163
+ movdqa xmm4,xmm2
164
+ movdqa xmm5,xmm3
165
+ punpcklwd xmm2,xmm6
166
+ punpckhwd xmm4,xmm6
167
+ pmaddwd xmm2,[GOTOFF(eax,PW_MF0344_F0285)]
168
+ pmaddwd xmm4,[GOTOFF(eax,PW_MF0344_F0285)]
169
+ punpcklwd xmm3,xmm7
170
+ punpckhwd xmm5,xmm7
171
+ pmaddwd xmm3,[GOTOFF(eax,PW_MF0344_F0285)]
172
+ pmaddwd xmm5,[GOTOFF(eax,PW_MF0344_F0285)]
173
+
174
+ paddd xmm2,[GOTOFF(eax,PD_ONEHALF)]
175
+ paddd xmm4,[GOTOFF(eax,PD_ONEHALF)]
176
+ psrad xmm2,SCALEBITS
177
+ psrad xmm4,SCALEBITS
178
+ paddd xmm3,[GOTOFF(eax,PD_ONEHALF)]
179
+ paddd xmm5,[GOTOFF(eax,PD_ONEHALF)]
180
+ psrad xmm3,SCALEBITS
181
+ psrad xmm5,SCALEBITS
182
+
183
+ packssdw xmm2,xmm4 ; xmm2=CbE*-FIX(0.344)+CrE*FIX(0.285)
184
+ packssdw xmm3,xmm5 ; xmm3=CbO*-FIX(0.344)+CrO*FIX(0.285)
185
+ psubw xmm2,xmm6 ; xmm2=CbE*-FIX(0.344)+CrE*-FIX(0.714)=(G-Y)E
186
+ psubw xmm3,xmm7 ; xmm3=CbO*-FIX(0.344)+CrO*-FIX(0.714)=(G-Y)O
187
+
188
+ movdqa xmm5, XMMWORD [esi] ; xmm5=Y(0123456789ABCDEF)
189
+
190
+ pcmpeqw xmm4,xmm4
191
+ psrlw xmm4,BYTE_BIT ; xmm4={0xFF 0x00 0xFF 0x00 ..}
192
+ pand xmm4,xmm5 ; xmm4=Y(02468ACE)=YE
193
+ psrlw xmm5,BYTE_BIT ; xmm5=Y(13579BDF)=YO
194
+
195
+ paddw xmm0,xmm4 ; xmm0=((R-Y)E+YE)=RE=R(02468ACE)
196
+ paddw xmm1,xmm5 ; xmm1=((R-Y)O+YO)=RO=R(13579BDF)
197
+ packuswb xmm0,xmm0 ; xmm0=R(02468ACE********)
198
+ packuswb xmm1,xmm1 ; xmm1=R(13579BDF********)
199
+
200
+ paddw xmm2,xmm4 ; xmm2=((G-Y)E+YE)=GE=G(02468ACE)
201
+ paddw xmm3,xmm5 ; xmm3=((G-Y)O+YO)=GO=G(13579BDF)
202
+ packuswb xmm2,xmm2 ; xmm2=G(02468ACE********)
203
+ packuswb xmm3,xmm3 ; xmm3=G(13579BDF********)
204
+
205
+ paddw xmm4, XMMWORD [wk(0)] ; xmm4=(YE+(B-Y)E)=BE=B(02468ACE)
206
+ paddw xmm5, XMMWORD [wk(1)] ; xmm5=(YO+(B-Y)O)=BO=B(13579BDF)
207
+ packuswb xmm4,xmm4 ; xmm4=B(02468ACE********)
208
+ packuswb xmm5,xmm5 ; xmm5=B(13579BDF********)
209
+
210
+ %if RGB_PIXELSIZE == 3 ; ---------------
211
+
212
+ ; xmmA=(00 02 04 06 08 0A 0C 0E **), xmmB=(01 03 05 07 09 0B 0D 0F **)
213
+ ; xmmC=(10 12 14 16 18 1A 1C 1E **), xmmD=(11 13 15 17 19 1B 1D 1F **)
214
+ ; xmmE=(20 22 24 26 28 2A 2C 2E **), xmmF=(21 23 25 27 29 2B 2D 2F **)
215
+ ; xmmG=(** ** ** ** ** ** ** ** **), xmmH=(** ** ** ** ** ** ** ** **)
216
+
217
+ punpcklbw xmmA,xmmC ; xmmA=(00 10 02 12 04 14 06 16 08 18 0A 1A 0C 1C 0E 1E)
218
+ punpcklbw xmmE,xmmB ; xmmE=(20 01 22 03 24 05 26 07 28 09 2A 0B 2C 0D 2E 0F)
219
+ punpcklbw xmmD,xmmF ; xmmD=(11 21 13 23 15 25 17 27 19 29 1B 2B 1D 2D 1F 2F)
220
+
221
+ movdqa xmmG,xmmA
222
+ movdqa xmmH,xmmA
223
+ punpcklwd xmmA,xmmE ; xmmA=(00 10 20 01 02 12 22 03 04 14 24 05 06 16 26 07)
224
+ punpckhwd xmmG,xmmE ; xmmG=(08 18 28 09 0A 1A 2A 0B 0C 1C 2C 0D 0E 1E 2E 0F)
225
+
226
+ psrldq xmmH,2 ; xmmH=(02 12 04 14 06 16 08 18 0A 1A 0C 1C 0E 1E -- --)
227
+ psrldq xmmE,2 ; xmmE=(22 03 24 05 26 07 28 09 2A 0B 2C 0D 2E 0F -- --)
228
+
229
+ movdqa xmmC,xmmD
230
+ movdqa xmmB,xmmD
231
+ punpcklwd xmmD,xmmH ; xmmD=(11 21 02 12 13 23 04 14 15 25 06 16 17 27 08 18)
232
+ punpckhwd xmmC,xmmH ; xmmC=(19 29 0A 1A 1B 2B 0C 1C 1D 2D 0E 1E 1F 2F -- --)
233
+
234
+ psrldq xmmB,2 ; xmmB=(13 23 15 25 17 27 19 29 1B 2B 1D 2D 1F 2F -- --)
235
+
236
+ movdqa xmmF,xmmE
237
+ punpcklwd xmmE,xmmB ; xmmE=(22 03 13 23 24 05 15 25 26 07 17 27 28 09 19 29)
238
+ punpckhwd xmmF,xmmB ; xmmF=(2A 0B 1B 2B 2C 0D 1D 2D 2E 0F 1F 2F -- -- -- --)
239
+
240
+ pshufd xmmH,xmmA,0x4E; xmmH=(04 14 24 05 06 16 26 07 00 10 20 01 02 12 22 03)
241
+ movdqa xmmB,xmmE
242
+ punpckldq xmmA,xmmD ; xmmA=(00 10 20 01 11 21 02 12 02 12 22 03 13 23 04 14)
243
+ punpckldq xmmE,xmmH ; xmmE=(22 03 13 23 04 14 24 05 24 05 15 25 06 16 26 07)
244
+ punpckhdq xmmD,xmmB ; xmmD=(15 25 06 16 26 07 17 27 17 27 08 18 28 09 19 29)
245
+
246
+ pshufd xmmH,xmmG,0x4E; xmmH=(0C 1C 2C 0D 0E 1E 2E 0F 08 18 28 09 0A 1A 2A 0B)
247
+ movdqa xmmB,xmmF
248
+ punpckldq xmmG,xmmC ; xmmG=(08 18 28 09 19 29 0A 1A 0A 1A 2A 0B 1B 2B 0C 1C)
249
+ punpckldq xmmF,xmmH ; xmmF=(2A 0B 1B 2B 0C 1C 2C 0D 2C 0D 1D 2D 0E 1E 2E 0F)
250
+ punpckhdq xmmC,xmmB ; xmmC=(1D 2D 0E 1E 2E 0F 1F 2F 1F 2F -- -- -- -- -- --)
251
+
252
+ punpcklqdq xmmA,xmmE ; xmmA=(00 10 20 01 11 21 02 12 22 03 13 23 04 14 24 05)
253
+ punpcklqdq xmmD,xmmG ; xmmD=(15 25 06 16 26 07 17 27 08 18 28 09 19 29 0A 1A)
254
+ punpcklqdq xmmF,xmmC ; xmmF=(2A 0B 1B 2B 0C 1C 2C 0D 1D 2D 0E 1E 2E 0F 1F 2F)
255
+
256
+ cmp ecx, byte SIZEOF_XMMWORD
257
+ jb short .column_st32
258
+
259
+ test edi, SIZEOF_XMMWORD-1
260
+ jnz short .out1
261
+ ; --(aligned)-------------------
262
+ movntdq XMMWORD [edi+0*SIZEOF_XMMWORD], xmmA
263
+ movntdq XMMWORD [edi+1*SIZEOF_XMMWORD], xmmD
264
+ movntdq XMMWORD [edi+2*SIZEOF_XMMWORD], xmmF
265
+ jmp short .out0
266
+ .out1: ; --(unaligned)-----------------
267
+ movdqu XMMWORD [edi+0*SIZEOF_XMMWORD], xmmA
268
+ movdqu XMMWORD [edi+1*SIZEOF_XMMWORD], xmmD
269
+ movdqu XMMWORD [edi+2*SIZEOF_XMMWORD], xmmF
270
+ .out0:
271
+ add edi, byte RGB_PIXELSIZE*SIZEOF_XMMWORD ; outptr
272
+ sub ecx, byte SIZEOF_XMMWORD
273
+ jz near .nextrow
274
+
275
+ add esi, byte SIZEOF_XMMWORD ; inptr0
276
+ add ebx, byte SIZEOF_XMMWORD ; inptr1
277
+ add edx, byte SIZEOF_XMMWORD ; inptr2
278
+ jmp near .columnloop
279
+ alignx 16,7
280
+
281
+ .column_st32:
282
+ lea ecx, [ecx+ecx*2] ; imul ecx, RGB_PIXELSIZE
283
+ cmp ecx, byte 2*SIZEOF_XMMWORD
284
+ jb short .column_st16
285
+ movdqu XMMWORD [edi+0*SIZEOF_XMMWORD], xmmA
286
+ movdqu XMMWORD [edi+1*SIZEOF_XMMWORD], xmmD
287
+ add edi, byte 2*SIZEOF_XMMWORD ; outptr
288
+ movdqa xmmA,xmmF
289
+ sub ecx, byte 2*SIZEOF_XMMWORD
290
+ jmp short .column_st15
291
+ .column_st16:
292
+ cmp ecx, byte SIZEOF_XMMWORD
293
+ jb short .column_st15
294
+ movdqu XMMWORD [edi+0*SIZEOF_XMMWORD], xmmA
295
+ add edi, byte SIZEOF_XMMWORD ; outptr
296
+ movdqa xmmA,xmmD
297
+ sub ecx, byte SIZEOF_XMMWORD
298
+ .column_st15:
299
+ ; Store the lower 8 bytes of xmmA to the output when it has enough
300
+ ; space.
301
+ cmp ecx, byte SIZEOF_MMWORD
302
+ jb short .column_st7
303
+ movq XMM_MMWORD [edi], xmmA
304
+ add edi, byte SIZEOF_MMWORD
305
+ sub ecx, byte SIZEOF_MMWORD
306
+ psrldq xmmA, SIZEOF_MMWORD
307
+ .column_st7:
308
+ ; Store the lower 4 bytes of xmmA to the output when it has enough
309
+ ; space.
310
+ cmp ecx, byte SIZEOF_DWORD
311
+ jb short .column_st3
312
+ movd XMM_DWORD [edi], xmmA
313
+ add edi, byte SIZEOF_DWORD
314
+ sub ecx, byte SIZEOF_DWORD
315
+ psrldq xmmA, SIZEOF_DWORD
316
+ .column_st3:
317
+ ; Store the lower 2 bytes of eax to the output when it has enough
318
+ ; space.
319
+ movd eax, xmmA
320
+ cmp ecx, byte SIZEOF_WORD
321
+ jb short .column_st1
322
+ mov WORD [edi], ax
323
+ add edi, byte SIZEOF_WORD
324
+ sub ecx, byte SIZEOF_WORD
325
+ shr eax, 16
326
+ .column_st1:
327
+ ; Store the lower 1 byte of eax to the output when it has enough
328
+ ; space.
329
+ test ecx, ecx
330
+ jz short .nextrow
331
+ mov BYTE [edi], al
332
+
333
+ %else ; RGB_PIXELSIZE == 4 ; -----------
334
+
335
+ %ifdef RGBX_FILLER_0XFF
336
+ pcmpeqb xmm6,xmm6 ; xmm6=XE=X(02468ACE********)
337
+ pcmpeqb xmm7,xmm7 ; xmm7=XO=X(13579BDF********)
338
+ %else
339
+ pxor xmm6,xmm6 ; xmm6=XE=X(02468ACE********)
340
+ pxor xmm7,xmm7 ; xmm7=XO=X(13579BDF********)
341
+ %endif
342
+ ; xmmA=(00 02 04 06 08 0A 0C 0E **), xmmB=(01 03 05 07 09 0B 0D 0F **)
343
+ ; xmmC=(10 12 14 16 18 1A 1C 1E **), xmmD=(11 13 15 17 19 1B 1D 1F **)
344
+ ; xmmE=(20 22 24 26 28 2A 2C 2E **), xmmF=(21 23 25 27 29 2B 2D 2F **)
345
+ ; xmmG=(30 32 34 36 38 3A 3C 3E **), xmmH=(31 33 35 37 39 3B 3D 3F **)
346
+
347
+ punpcklbw xmmA,xmmC ; xmmA=(00 10 02 12 04 14 06 16 08 18 0A 1A 0C 1C 0E 1E)
348
+ punpcklbw xmmE,xmmG ; xmmE=(20 30 22 32 24 34 26 36 28 38 2A 3A 2C 3C 2E 3E)
349
+ punpcklbw xmmB,xmmD ; xmmB=(01 11 03 13 05 15 07 17 09 19 0B 1B 0D 1D 0F 1F)
350
+ punpcklbw xmmF,xmmH ; xmmF=(21 31 23 33 25 35 27 37 29 39 2B 3B 2D 3D 2F 3F)
351
+
352
+ movdqa xmmC,xmmA
353
+ punpcklwd xmmA,xmmE ; xmmA=(00 10 20 30 02 12 22 32 04 14 24 34 06 16 26 36)
354
+ punpckhwd xmmC,xmmE ; xmmC=(08 18 28 38 0A 1A 2A 3A 0C 1C 2C 3C 0E 1E 2E 3E)
355
+ movdqa xmmG,xmmB
356
+ punpcklwd xmmB,xmmF ; xmmB=(01 11 21 31 03 13 23 33 05 15 25 35 07 17 27 37)
357
+ punpckhwd xmmG,xmmF ; xmmG=(09 19 29 39 0B 1B 2B 3B 0D 1D 2D 3D 0F 1F 2F 3F)
358
+
359
+ movdqa xmmD,xmmA
360
+ punpckldq xmmA,xmmB ; xmmA=(00 10 20 30 01 11 21 31 02 12 22 32 03 13 23 33)
361
+ punpckhdq xmmD,xmmB ; xmmD=(04 14 24 34 05 15 25 35 06 16 26 36 07 17 27 37)
362
+ movdqa xmmH,xmmC
363
+ punpckldq xmmC,xmmG ; xmmC=(08 18 28 38 09 19 29 39 0A 1A 2A 3A 0B 1B 2B 3B)
364
+ punpckhdq xmmH,xmmG ; xmmH=(0C 1C 2C 3C 0D 1D 2D 3D 0E 1E 2E 3E 0F 1F 2F 3F)
365
+
366
+ cmp ecx, byte SIZEOF_XMMWORD
367
+ jb short .column_st32
368
+
369
+ test edi, SIZEOF_XMMWORD-1
370
+ jnz short .out1
371
+ ; --(aligned)-------------------
372
+ movntdq XMMWORD [edi+0*SIZEOF_XMMWORD], xmmA
373
+ movntdq XMMWORD [edi+1*SIZEOF_XMMWORD], xmmD
374
+ movntdq XMMWORD [edi+2*SIZEOF_XMMWORD], xmmC
375
+ movntdq XMMWORD [edi+3*SIZEOF_XMMWORD], xmmH
376
+ jmp short .out0
377
+ .out1: ; --(unaligned)-----------------
378
+ movdqu XMMWORD [edi+0*SIZEOF_XMMWORD], xmmA
379
+ movdqu XMMWORD [edi+1*SIZEOF_XMMWORD], xmmD
380
+ movdqu XMMWORD [edi+2*SIZEOF_XMMWORD], xmmC
381
+ movdqu XMMWORD [edi+3*SIZEOF_XMMWORD], xmmH
382
+ .out0:
383
+ add edi, byte RGB_PIXELSIZE*SIZEOF_XMMWORD ; outptr
384
+ sub ecx, byte SIZEOF_XMMWORD
385
+ jz near .nextrow
386
+
387
+ add esi, byte SIZEOF_XMMWORD ; inptr0
388
+ add ebx, byte SIZEOF_XMMWORD ; inptr1
389
+ add edx, byte SIZEOF_XMMWORD ; inptr2
390
+ jmp near .columnloop
391
+ alignx 16,7
392
+
393
+ .column_st32:
394
+ cmp ecx, byte SIZEOF_XMMWORD/2
395
+ jb short .column_st16
396
+ movdqu XMMWORD [edi+0*SIZEOF_XMMWORD], xmmA
397
+ movdqu XMMWORD [edi+1*SIZEOF_XMMWORD], xmmD
398
+ add edi, byte 2*SIZEOF_XMMWORD ; outptr
399
+ movdqa xmmA,xmmC
400
+ movdqa xmmD,xmmH
401
+ sub ecx, byte SIZEOF_XMMWORD/2
402
+ .column_st16:
403
+ cmp ecx, byte SIZEOF_XMMWORD/4
404
+ jb short .column_st15
405
+ movdqu XMMWORD [edi+0*SIZEOF_XMMWORD], xmmA
406
+ add edi, byte SIZEOF_XMMWORD ; outptr
407
+ movdqa xmmA,xmmD
408
+ sub ecx, byte SIZEOF_XMMWORD/4
409
+ .column_st15:
410
+ ; Store two pixels (8 bytes) of xmmA to the output when it has enough
411
+ ; space.
412
+ cmp ecx, byte SIZEOF_XMMWORD/8
413
+ jb short .column_st7
414
+ movq XMM_MMWORD [edi], xmmA
415
+ add edi, byte SIZEOF_XMMWORD/8*4
416
+ sub ecx, byte SIZEOF_XMMWORD/8
417
+ psrldq xmmA, SIZEOF_XMMWORD/8*4
418
+ .column_st7:
419
+ ; Store one pixel (4 bytes) of xmmA to the output when it has enough
420
+ ; space.
421
+ test ecx, ecx
422
+ jz short .nextrow
423
+ movd XMM_DWORD [edi], xmmA
424
+
425
+ %endif ; RGB_PIXELSIZE ; ---------------
426
+
427
+ alignx 16,7
428
+
429
+ .nextrow:
430
+ pop ecx
431
+ pop esi
432
+ pop ebx
433
+ pop edx
434
+ pop edi
435
+ pop eax
436
+
437
+ add esi, byte SIZEOF_JSAMPROW
438
+ add ebx, byte SIZEOF_JSAMPROW
439
+ add edx, byte SIZEOF_JSAMPROW
440
+ add edi, byte SIZEOF_JSAMPROW ; output_buf
441
+ dec eax ; num_rows
442
+ jg near .rowloop
443
+
444
+ sfence ; flush the write buffer
445
+
446
+ .return:
447
+ pop edi
448
+ pop esi
449
+ ; pop edx ; need not be preserved
450
+ ; pop ecx ; need not be preserved
451
+ pop ebx
452
+ mov esp,ebp ; esp <- aligned ebp
453
+ pop esp ; esp <- original ebp
454
+ pop ebp
455
+ ret
456
+
457
+ ; For some reason, the OS X linker does not honor the request to align the
458
+ ; segment unless we do this.
459
+ align 16