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,483 @@
1
+ /*
2
+ * Loongson MMI optimizations for libjpeg-turbo
3
+ *
4
+ * Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
5
+ * Copyright (C) 2014-2015, 2019, D. R. Commander. All Rights Reserved.
6
+ * Copyright (C) 2016-2018, Loongson Technology Corporation Limited, BeiJing.
7
+ * All Rights Reserved.
8
+ * Authors: ZhuChen <zhuchen@loongson.cn>
9
+ * SunZhangzhi <sunzhangzhi-cq@loongson.cn>
10
+ * CaiWanwei <caiwanwei@loongson.cn>
11
+ * ZhangLixia <zhanglixia-hf@loongson.cn>
12
+ *
13
+ * Based on the x86 SIMD extension for IJG JPEG library
14
+ * Copyright (C) 1999-2006, MIYASAKA Masaru.
15
+ *
16
+ * This software is provided 'as-is', without any express or implied
17
+ * warranty. In no event will the authors be held liable for any damages
18
+ * arising from the use of this software.
19
+ *
20
+ * Permission is granted to anyone to use this software for any purpose,
21
+ * including commercial applications, and to alter it and redistribute it
22
+ * freely, subject to the following restrictions:
23
+ *
24
+ * 1. The origin of this software must not be misrepresented; you must not
25
+ * claim that you wrote the original software. If you use this software
26
+ * in a product, an acknowledgment in the product documentation would be
27
+ * appreciated but is not required.
28
+ * 2. Altered source versions must be plainly marked as such, and must not be
29
+ * misrepresented as being the original software.
30
+ * 3. This notice may not be removed or altered from any source distribution.
31
+ */
32
+
33
+ /* This file is included by jccolor-mmi.c */
34
+
35
+
36
+ #if RGB_RED == 0
37
+ #define mmA mm0
38
+ #define mmB mm1
39
+ #elif RGB_GREEN == 0
40
+ #define mmA mm2
41
+ #define mmB mm3
42
+ #elif RGB_BLUE == 0
43
+ #define mmA mm4
44
+ #define mmB mm5
45
+ #else
46
+ #define mmA mm6
47
+ #define mmB mm7
48
+ #endif
49
+
50
+ #if RGB_RED == 1
51
+ #define mmC mm0
52
+ #define mmD mm1
53
+ #elif RGB_GREEN == 1
54
+ #define mmC mm2
55
+ #define mmD mm3
56
+ #elif RGB_BLUE == 1
57
+ #define mmC mm4
58
+ #define mmD mm5
59
+ #else
60
+ #define mmC mm6
61
+ #define mmD mm7
62
+ #endif
63
+
64
+ #if RGB_RED == 2
65
+ #define mmE mm0
66
+ #define mmF mm1
67
+ #elif RGB_GREEN == 2
68
+ #define mmE mm2
69
+ #define mmF mm3
70
+ #elif RGB_BLUE == 2
71
+ #define mmE mm4
72
+ #define mmF mm5
73
+ #else
74
+ #define mmE mm6
75
+ #define mmF mm7
76
+ #endif
77
+
78
+ #if RGB_RED == 3
79
+ #define mmG mm0
80
+ #define mmH mm1
81
+ #elif RGB_GREEN == 3
82
+ #define mmG mm2
83
+ #define mmH mm3
84
+ #elif RGB_BLUE == 3
85
+ #define mmG mm4
86
+ #define mmH mm5
87
+ #else
88
+ #define mmG mm6
89
+ #define mmH mm7
90
+ #endif
91
+
92
+
93
+ void jsimd_rgb_ycc_convert_mmi(JDIMENSION image_width, JSAMPARRAY input_buf,
94
+ JSAMPIMAGE output_buf, JDIMENSION output_row,
95
+ int num_rows)
96
+ {
97
+ JSAMPROW inptr, outptr0, outptr1, outptr2;
98
+ int num_cols, col;
99
+ __m64 mm0, mm1, mm2, mm3, mm4, mm5, mm6, mm7;
100
+ __m64 wk[7];
101
+ __m64 Y_BG, Cb_RG, Cr_BG;
102
+
103
+ while (--num_rows >= 0) {
104
+ inptr = *input_buf++;
105
+ outptr0 = output_buf[0][output_row];
106
+ outptr1 = output_buf[1][output_row];
107
+ outptr2 = output_buf[2][output_row];
108
+ output_row++;
109
+
110
+ for (num_cols = image_width; num_cols > 0; num_cols -= 8,
111
+ outptr0 += 8, outptr1 += 8, outptr2 += 8) {
112
+
113
+ #if RGB_PIXELSIZE == 3
114
+
115
+ if (num_cols < 8) {
116
+ col = num_cols * 3;
117
+ asm(".set noreorder\r\n"
118
+
119
+ "li $8, 1\r\n"
120
+ "move $9, %3\r\n"
121
+ "and $10, $9, $8\r\n"
122
+ "beqz $10, 1f\r\n"
123
+ "nop \r\n"
124
+ "subu $9, $9, 1\r\n"
125
+ "xor $12, $12, $12\r\n"
126
+ "move $13, %5\r\n"
127
+ "dadd $13, $13, $9\r\n"
128
+ "lbu $12, 0($13)\r\n"
129
+
130
+ "1: \r\n"
131
+ "li $8, 2\r\n"
132
+ "and $10, $9, $8\r\n"
133
+ "beqz $10, 2f\r\n"
134
+ "nop \r\n"
135
+ "subu $9, $9, 2\r\n"
136
+ "xor $11, $11, $11\r\n"
137
+ "move $13, %5\r\n"
138
+ "dadd $13, $13, $9\r\n"
139
+ "lhu $11, 0($13)\r\n"
140
+ "sll $12, $12, 16\r\n"
141
+ "or $12, $12, $11\r\n"
142
+
143
+ "2: \r\n"
144
+ "dmtc1 $12, %0\r\n"
145
+ "li $8, 4\r\n"
146
+ "and $10, $9, $8\r\n"
147
+ "beqz $10, 3f\r\n"
148
+ "nop \r\n"
149
+ "subu $9, $9, 4\r\n"
150
+ "move $13, %5\r\n"
151
+ "dadd $13, $13, $9\r\n"
152
+ "lwu $14, 0($13)\r\n"
153
+ "dmtc1 $14, %1\r\n"
154
+ "dsll32 $12, $12, 0\r\n"
155
+ "or $12, $12, $14\r\n"
156
+ "dmtc1 $12, %0\r\n"
157
+
158
+ "3: \r\n"
159
+ "li $8, 8\r\n"
160
+ "and $10, $9, $8\r\n"
161
+ "beqz $10, 4f\r\n"
162
+ "nop \r\n"
163
+ "mov.s %1, %0\r\n"
164
+ "ldc1 %0, 0(%5)\r\n"
165
+ "li $9, 8\r\n"
166
+ "j 5f\r\n"
167
+ "nop \r\n"
168
+
169
+ "4: \r\n"
170
+ "li $8, 16\r\n"
171
+ "and $10, $9, $8\r\n"
172
+ "beqz $10, 5f\r\n"
173
+ "nop \r\n"
174
+ "mov.s %2, %0\r\n"
175
+ "ldc1 %0, 0(%5)\r\n"
176
+ "ldc1 %1, 8(%5)\r\n"
177
+
178
+ "5: \r\n"
179
+ "nop \r\n"
180
+ ".set reorder\r\n"
181
+
182
+ : "=f" (mmA), "=f" (mmG), "=f" (mmF)
183
+ : "r" (col), "r" (num_rows), "r" (inptr)
184
+ : "$f0", "$f2", "$f4", "$8", "$9", "$10", "$11", "$12", "$13",
185
+ "$14", "memory"
186
+ );
187
+ } else {
188
+ if (!(((long)inptr) & 7)) {
189
+ mmA = _mm_load_si64((__m64 *)&inptr[0]);
190
+ mmG = _mm_load_si64((__m64 *)&inptr[8]);
191
+ mmF = _mm_load_si64((__m64 *)&inptr[16]);
192
+ } else {
193
+ mmA = _mm_loadu_si64((__m64 *)&inptr[0]);
194
+ mmG = _mm_loadu_si64((__m64 *)&inptr[8]);
195
+ mmF = _mm_loadu_si64((__m64 *)&inptr[16]);
196
+ }
197
+ inptr += RGB_PIXELSIZE * 8;
198
+ }
199
+ mmD = mmA;
200
+ mmA = _mm_slli_si64(mmA, 4 * BYTE_BIT);
201
+ mmD = _mm_srli_si64(mmD, 4 * BYTE_BIT);
202
+
203
+ mmA = _mm_unpackhi_pi8(mmA, mmG);
204
+ mmG = _mm_slli_si64(mmG, 4 * BYTE_BIT);
205
+
206
+ mmD = _mm_unpacklo_pi8(mmD, mmF);
207
+ mmG = _mm_unpackhi_pi8(mmG, mmF);
208
+
209
+ mmE = mmA;
210
+ mmA = _mm_slli_si64(mmA, 4 * BYTE_BIT);
211
+ mmE = _mm_srli_si64(mmE, 4 * BYTE_BIT);
212
+
213
+ mmA = _mm_unpackhi_pi8(mmA, mmD);
214
+ mmD = _mm_slli_si64(mmD, 4 * BYTE_BIT);
215
+
216
+ mmE = _mm_unpacklo_pi8(mmE, mmG);
217
+ mmD = _mm_unpackhi_pi8(mmD, mmG);
218
+ mmC = mmA;
219
+ mmA = _mm_loadlo_pi8_f(mmA);
220
+ mmC = _mm_loadhi_pi8_f(mmC);
221
+
222
+ mmB = mmE;
223
+ mmE = _mm_loadlo_pi8_f(mmE);
224
+ mmB = _mm_loadhi_pi8_f(mmB);
225
+
226
+ mmF = mmD;
227
+ mmD = _mm_loadlo_pi8_f(mmD);
228
+ mmF = _mm_loadhi_pi8_f(mmF);
229
+
230
+ #else /* RGB_PIXELSIZE == 4 */
231
+
232
+ if (num_cols < 8) {
233
+ col = num_cols;
234
+ asm(".set noreorder\r\n"
235
+
236
+ "li $8, 1\r\n"
237
+ "move $9, %4\r\n"
238
+ "and $10, $9, $8\r\n"
239
+ "beqz $10, 1f\r\n"
240
+ "nop \r\n"
241
+ "subu $9, $9, 1\r\n"
242
+ "dsll $11, $9, 2\r\n"
243
+ "move $13, %5\r\n"
244
+ "daddu $13, $13, $11\r\n"
245
+ "lwc1 %0, 0($13)\r\n"
246
+
247
+ "1: \r\n"
248
+ "li $8, 2\r\n"
249
+ "and $10, $9, $8\r\n"
250
+ "beqz $10, 2f\r\n"
251
+ "nop \r\n"
252
+ "subu $9, $9, 2\r\n"
253
+ "dsll $11, $9, 2\r\n"
254
+ "move $13, %5\r\n"
255
+ "daddu $13, $13, $11\r\n"
256
+ "mov.s %1, %0\r\n"
257
+ "ldc1 %0, 0($13)\r\n"
258
+
259
+ "2: \r\n"
260
+ "li $8, 4\r\n"
261
+ "and $10, $9, $8\r\n"
262
+ "beqz $10, 3f\r\n"
263
+ "nop \r\n"
264
+ "mov.s %2, %0\r\n"
265
+ "mov.s %3, %1\r\n"
266
+ "ldc1 %0, 0(%5)\r\n"
267
+ "ldc1 %1, 8(%5)\r\n"
268
+
269
+ "3: \r\n"
270
+ "nop \r\n"
271
+ ".set reorder\r\n"
272
+
273
+ : "=f" (mmA), "=f" (mmF), "=f" (mmD), "=f" (mmC)
274
+ : "r" (col), "r" (inptr)
275
+ : "$f0", "$f2", "$8", "$9", "$10", "$11", "$13", "memory"
276
+ );
277
+ } else {
278
+ if (!(((long)inptr) & 7)) {
279
+ mmA = _mm_load_si64((__m64 *)&inptr[0]);
280
+ mmF = _mm_load_si64((__m64 *)&inptr[8]);
281
+ mmD = _mm_load_si64((__m64 *)&inptr[16]);
282
+ mmC = _mm_load_si64((__m64 *)&inptr[24]);
283
+ } else {
284
+ mmA = _mm_loadu_si64((__m64 *)&inptr[0]);
285
+ mmF = _mm_loadu_si64((__m64 *)&inptr[8]);
286
+ mmD = _mm_loadu_si64((__m64 *)&inptr[16]);
287
+ mmC = _mm_loadu_si64((__m64 *)&inptr[24]);
288
+ }
289
+ inptr += RGB_PIXELSIZE * 8;
290
+ }
291
+ mmB = mmA;
292
+ mmA = _mm_unpacklo_pi8(mmA, mmF);
293
+ mmB = _mm_unpackhi_pi8(mmB, mmF);
294
+
295
+ mmG = mmD;
296
+ mmD = _mm_unpacklo_pi8(mmD, mmC);
297
+ mmG = _mm_unpackhi_pi8(mmG, mmC);
298
+
299
+ mmE = mmA;
300
+ mmA = _mm_unpacklo_pi16(mmA, mmD);
301
+ mmE = _mm_unpackhi_pi16(mmE, mmD);
302
+
303
+ mmH = mmB;
304
+ mmB = _mm_unpacklo_pi16(mmB, mmG);
305
+ mmH = _mm_unpackhi_pi16(mmH, mmG);
306
+
307
+ mmC = mmA;
308
+ mmA = _mm_loadlo_pi8_f(mmA);
309
+ mmC = _mm_loadhi_pi8_f(mmC);
310
+
311
+ mmD = mmB;
312
+ mmB = _mm_loadlo_pi8_f(mmB);
313
+ mmD = _mm_loadhi_pi8_f(mmD);
314
+
315
+ mmG = mmE;
316
+ mmE = _mm_loadlo_pi8_f(mmE);
317
+ mmG = _mm_loadhi_pi8_f(mmG);
318
+
319
+ mmF = mmH;
320
+ mmF = _mm_unpacklo_pi8(mmF, mmH);
321
+ mmH = _mm_unpackhi_pi8(mmH, mmH);
322
+ mmF = _mm_srli_pi16(mmF, BYTE_BIT);
323
+ mmH = _mm_srli_pi16(mmH, BYTE_BIT);
324
+
325
+ #endif
326
+
327
+ wk[0] = mm0;
328
+ wk[1] = mm1;
329
+ wk[2] = mm4;
330
+ wk[3] = mm5;
331
+
332
+ mm6 = mm1;
333
+ mm1 = _mm_unpacklo_pi16(mm1, mm3);
334
+ mm6 = _mm_unpackhi_pi16(mm6, mm3);
335
+ mm7 = mm1;
336
+ mm4 = mm6;
337
+ mm1 = _mm_madd_pi16(mm1, PW_F0299_F0337);
338
+ mm6 = _mm_madd_pi16(mm6, PW_F0299_F0337);
339
+ mm7 = _mm_madd_pi16(mm7, PW_MF016_MF033);
340
+ mm4 = _mm_madd_pi16(mm4, PW_MF016_MF033);
341
+
342
+ wk[4] = mm1;
343
+ wk[5] = mm6;
344
+
345
+ mm1 = _mm_loadlo_pi16_f(mm5);
346
+ mm6 = _mm_loadhi_pi16_f(mm5);
347
+ mm1 = _mm_srli_pi32(mm1, 1);
348
+ mm6 = _mm_srli_pi32(mm6, 1);
349
+
350
+ mm5 = PD_ONEHALFM1_CJ;
351
+ mm7 = _mm_add_pi32(mm7, mm1);
352
+ mm4 = _mm_add_pi32(mm4, mm6);
353
+ mm7 = _mm_add_pi32(mm7, mm5);
354
+ mm4 = _mm_add_pi32(mm4, mm5);
355
+ mm7 = _mm_srli_pi32(mm7, SCALEBITS);
356
+ mm4 = _mm_srli_pi32(mm4, SCALEBITS);
357
+ mm7 = _mm_packs_pi32(mm7, mm4);
358
+
359
+ mm1 = wk[2];
360
+ mm6 = mm0;
361
+ mm0 = _mm_unpacklo_pi16(mm0, mm2);
362
+ mm6 = _mm_unpackhi_pi16(mm6, mm2);
363
+ mm5 = mm0;
364
+ mm4 = mm6;
365
+ mm0 = _mm_madd_pi16(mm0, PW_F0299_F0337);
366
+ mm6 = _mm_madd_pi16(mm6, PW_F0299_F0337);
367
+ mm5 = _mm_madd_pi16(mm5, PW_MF016_MF033);
368
+ mm4 = _mm_madd_pi16(mm4, PW_MF016_MF033);
369
+
370
+ wk[6] = mm0;
371
+ wk[7] = mm6;
372
+ mm0 = _mm_loadlo_pi16_f(mm1);
373
+ mm6 = _mm_loadhi_pi16_f(mm1);
374
+ mm0 = _mm_srli_pi32(mm0, 1);
375
+ mm6 = _mm_srli_pi32(mm6, 1);
376
+
377
+ mm1 = PD_ONEHALFM1_CJ;
378
+ mm5 = _mm_add_pi32(mm5, mm0);
379
+ mm4 = _mm_add_pi32(mm4, mm6);
380
+ mm5 = _mm_add_pi32(mm5, mm1);
381
+ mm4 = _mm_add_pi32(mm4, mm1);
382
+ mm5 = _mm_srli_pi32(mm5, SCALEBITS);
383
+ mm4 = _mm_srli_pi32(mm4, SCALEBITS);
384
+ mm5 = _mm_packs_pi32(mm5, mm4);
385
+
386
+ mm7 = _mm_slli_pi16(mm7, BYTE_BIT);
387
+ mm5 = _mm_or_si64(mm5, mm7);
388
+ Cb_RG = mm5;
389
+
390
+ mm0 = wk[3];
391
+ mm6 = wk[2];
392
+ mm1 = wk[1];
393
+
394
+ mm4 = mm0;
395
+ mm0 = _mm_unpacklo_pi16(mm0, mm3);
396
+ mm4 = _mm_unpackhi_pi16(mm4, mm3);
397
+ mm7 = mm0;
398
+ mm5 = mm4;
399
+ mm0 = _mm_madd_pi16(mm0, PW_F0114_F0250);
400
+ mm4 = _mm_madd_pi16(mm4, PW_F0114_F0250);
401
+ mm7 = _mm_madd_pi16(mm7, PW_MF008_MF041);
402
+ mm5 = _mm_madd_pi16(mm5, PW_MF008_MF041);
403
+
404
+ mm3 = PD_ONEHALF;
405
+ mm0 = _mm_add_pi32(mm0, wk[4]);
406
+ mm4 = _mm_add_pi32(mm4, wk[5]);
407
+ mm0 = _mm_add_pi32(mm0, mm3);
408
+ mm4 = _mm_add_pi32(mm4, mm3);
409
+ mm0 = _mm_srli_pi32(mm0, SCALEBITS);
410
+ mm4 = _mm_srli_pi32(mm4, SCALEBITS);
411
+ mm0 = _mm_packs_pi32(mm0, mm4);
412
+
413
+ mm3 = _mm_loadlo_pi16_f(mm1);
414
+ mm4 = _mm_loadhi_pi16_f(mm1);
415
+ mm3 = _mm_srli_pi32(mm3, 1);
416
+ mm4 = _mm_srli_pi32(mm4, 1);
417
+
418
+ mm1 = PD_ONEHALFM1_CJ;
419
+ mm7 = _mm_add_pi32(mm7, mm3);
420
+ mm5 = _mm_add_pi32(mm5, mm4);
421
+ mm7 = _mm_add_pi32(mm7, mm1);
422
+ mm5 = _mm_add_pi32(mm5, mm1);
423
+ mm7 = _mm_srli_pi32(mm7, SCALEBITS);
424
+ mm5 = _mm_srli_pi32(mm5, SCALEBITS);
425
+ mm7 = _mm_packs_pi32(mm7, mm5);
426
+
427
+ mm3 = wk[0];
428
+ mm4 = mm6;
429
+ mm6 = _mm_unpacklo_pi16(mm6, mm2);
430
+ mm4 = _mm_unpackhi_pi16(mm4, mm2);
431
+ mm1 = mm6;
432
+ mm5 = mm4;
433
+ mm6 = _mm_madd_pi16(mm6, PW_F0114_F0250);
434
+ mm4 = _mm_madd_pi16(mm4, PW_F0114_F0250);
435
+ mm1 = _mm_madd_pi16(mm1, PW_MF008_MF041);
436
+ mm5 = _mm_madd_pi16(mm5, PW_MF008_MF041);
437
+
438
+ mm2 = PD_ONEHALF;
439
+ mm6 = _mm_add_pi32(mm6, wk[6]);
440
+ mm4 = _mm_add_pi32(mm4, wk[7]);
441
+ mm6 = _mm_add_pi32(mm6, mm2);
442
+ mm4 = _mm_add_pi32(mm4, mm2);
443
+ mm6 = _mm_srli_pi32(mm6, SCALEBITS);
444
+ mm4 = _mm_srli_pi32(mm4, SCALEBITS);
445
+ mm6 = _mm_packs_pi32(mm6, mm4);
446
+
447
+ mm0 = _mm_slli_pi16(mm0, BYTE_BIT);
448
+ mm6 = _mm_or_si64(mm6, mm0);
449
+ Y_BG = mm6;
450
+
451
+ mm2 = _mm_loadlo_pi16_f(mm3);
452
+ mm4 = _mm_loadhi_pi16_f(mm3);
453
+ mm2 = _mm_srli_pi32(mm2, 1);
454
+ mm4 = _mm_srli_pi32(mm4, 1);
455
+
456
+ mm0 = PD_ONEHALFM1_CJ;
457
+ mm1 = _mm_add_pi32(mm1, mm2);
458
+ mm5 = _mm_add_pi32(mm5, mm4);
459
+ mm1 = _mm_add_pi32(mm1, mm0);
460
+ mm5 = _mm_add_pi32(mm5, mm0);
461
+ mm1 = _mm_srli_pi32(mm1, SCALEBITS);
462
+ mm5 = _mm_srli_pi32(mm5, SCALEBITS);
463
+ mm1 = _mm_packs_pi32(mm1, mm5);
464
+
465
+ mm7 = _mm_slli_pi16(mm7, BYTE_BIT);
466
+ mm1 = _mm_or_si64(mm1, mm7);
467
+ Cr_BG = mm1;
468
+
469
+ _mm_store_si64((__m64 *)&outptr0[0], Y_BG);
470
+ _mm_store_si64((__m64 *)&outptr1[0], Cb_RG);
471
+ _mm_store_si64((__m64 *)&outptr2[0], Cr_BG);
472
+ }
473
+ }
474
+ }
475
+
476
+ #undef mmA
477
+ #undef mmB
478
+ #undef mmC
479
+ #undef mmD
480
+ #undef mmE
481
+ #undef mmF
482
+ #undef mmG
483
+ #undef mmH
@@ -0,0 +1,148 @@
1
+ /*
2
+ * Loongson MMI optimizations for libjpeg-turbo
3
+ *
4
+ * Copyright (C) 2011, 2014, D. R. Commander. All Rights Reserved.
5
+ * Copyright (C) 2016-2017, Loongson Technology Corporation Limited, BeiJing.
6
+ * All Rights Reserved.
7
+ * Authors: ZhuChen <zhuchen@loongson.cn>
8
+ * CaiWanwei <caiwanwei@loongson.cn>
9
+ * SunZhangzhi <sunzhangzhi-cq@loongson.cn>
10
+ *
11
+ * This software is provided 'as-is', without any express or implied
12
+ * warranty. In no event will the authors be held liable for any damages
13
+ * arising from the use of this software.
14
+ *
15
+ * Permission is granted to anyone to use this software for any purpose,
16
+ * including commercial applications, and to alter it and redistribute it
17
+ * freely, subject to the following restrictions:
18
+ *
19
+ * 1. The origin of this software must not be misrepresented; you must not
20
+ * claim that you wrote the original software. If you use this software
21
+ * in a product, an acknowledgment in the product documentation would be
22
+ * appreciated but is not required.
23
+ * 2. Altered source versions must be plainly marked as such, and must not be
24
+ * misrepresented as being the original software.
25
+ * 3. This notice may not be removed or altered from any source distribution.
26
+ */
27
+
28
+ /* RGB --> YCC CONVERSION */
29
+
30
+ #include "jsimd_mmi.h"
31
+
32
+
33
+ #define F_0_081 ((short)5329) /* FIX(0.08131) */
34
+ #define F_0_114 ((short)7471) /* FIX(0.11400) */
35
+ #define F_0_168 ((short)11059) /* FIX(0.16874) */
36
+ #define F_0_250 ((short)16384) /* FIX(0.25000) */
37
+ #define F_0_299 ((short)19595) /* FIX(0.29900) */
38
+ #define F_0_331 ((short)21709) /* FIX(0.33126) */
39
+ #define F_0_418 ((short)27439) /* FIX(0.41869) */
40
+ #define F_0_587 ((short)38470) /* FIX(0.58700) */
41
+ #define F_0_337 ((short)(F_0_587 - F_0_250)) /* FIX(0.58700) - FIX(0.25000) */
42
+
43
+ enum const_index {
44
+ index_PD_ONEHALF,
45
+ index_PW_F0299_F0337,
46
+ index_PW_F0114_F0250,
47
+ index_PW_MF016_MF033,
48
+ index_PW_MF008_MF041,
49
+ index_PD_ONEHALFM1_CJ
50
+ };
51
+
52
+ static uint64_t const_value[] = {
53
+ _uint64_set_pi32((int)(1 << (SCALEBITS - 1)), (int)(1 << (SCALEBITS - 1))),
54
+ _uint64_set_pi16(F_0_337, F_0_299, F_0_337, F_0_299),
55
+ _uint64_set_pi16(F_0_250, F_0_114, F_0_250, F_0_114),
56
+ _uint64_set_pi16(-F_0_331, -F_0_168, -F_0_331, -F_0_168),
57
+ _uint64_set_pi16(-F_0_418, -F_0_081, -F_0_418, -F_0_081),
58
+ _uint64_set_pi32(((1 << (SCALEBITS - 1)) - 1 + (CENTERJSAMPLE << SCALEBITS)),
59
+ ((1 << (SCALEBITS - 1)) - 1 + (CENTERJSAMPLE << SCALEBITS)))
60
+ };
61
+
62
+ #define get_const_value(index) (*(__m64 *)&const_value[index])
63
+
64
+ #define PD_ONEHALF get_const_value(index_PD_ONEHALF)
65
+ #define PW_F0299_F0337 get_const_value(index_PW_F0299_F0337)
66
+ #define PW_F0114_F0250 get_const_value(index_PW_F0114_F0250)
67
+ #define PW_MF016_MF033 get_const_value(index_PW_MF016_MF033)
68
+ #define PW_MF008_MF041 get_const_value(index_PW_MF008_MF041)
69
+ #define PD_ONEHALFM1_CJ get_const_value(index_PD_ONEHALFM1_CJ)
70
+
71
+
72
+ #include "jccolext-mmi.c"
73
+ #undef RGB_RED
74
+ #undef RGB_GREEN
75
+ #undef RGB_BLUE
76
+ #undef RGB_PIXELSIZE
77
+
78
+ #define RGB_RED EXT_RGB_RED
79
+ #define RGB_GREEN EXT_RGB_GREEN
80
+ #define RGB_BLUE EXT_RGB_BLUE
81
+ #define RGB_PIXELSIZE EXT_RGB_PIXELSIZE
82
+ #define jsimd_rgb_ycc_convert_mmi jsimd_extrgb_ycc_convert_mmi
83
+ #include "jccolext-mmi.c"
84
+ #undef RGB_RED
85
+ #undef RGB_GREEN
86
+ #undef RGB_BLUE
87
+ #undef RGB_PIXELSIZE
88
+ #undef jsimd_rgb_ycc_convert_mmi
89
+
90
+ #define RGB_RED EXT_RGBX_RED
91
+ #define RGB_GREEN EXT_RGBX_GREEN
92
+ #define RGB_BLUE EXT_RGBX_BLUE
93
+ #define RGB_PIXELSIZE EXT_RGBX_PIXELSIZE
94
+ #define jsimd_rgb_ycc_convert_mmi jsimd_extrgbx_ycc_convert_mmi
95
+ #include "jccolext-mmi.c"
96
+ #undef RGB_RED
97
+ #undef RGB_GREEN
98
+ #undef RGB_BLUE
99
+ #undef RGB_PIXELSIZE
100
+ #undef jsimd_rgb_ycc_convert_mmi
101
+
102
+ #define RGB_RED EXT_BGR_RED
103
+ #define RGB_GREEN EXT_BGR_GREEN
104
+ #define RGB_BLUE EXT_BGR_BLUE
105
+ #define RGB_PIXELSIZE EXT_BGR_PIXELSIZE
106
+ #define jsimd_rgb_ycc_convert_mmi jsimd_extbgr_ycc_convert_mmi
107
+ #include "jccolext-mmi.c"
108
+ #undef RGB_RED
109
+ #undef RGB_GREEN
110
+ #undef RGB_BLUE
111
+ #undef RGB_PIXELSIZE
112
+ #undef jsimd_rgb_ycc_convert_mmi
113
+
114
+ #define RGB_RED EXT_BGRX_RED
115
+ #define RGB_GREEN EXT_BGRX_GREEN
116
+ #define RGB_BLUE EXT_BGRX_BLUE
117
+ #define RGB_PIXELSIZE EXT_BGRX_PIXELSIZE
118
+ #define jsimd_rgb_ycc_convert_mmi jsimd_extbgrx_ycc_convert_mmi
119
+ #include "jccolext-mmi.c"
120
+ #undef RGB_RED
121
+ #undef RGB_GREEN
122
+ #undef RGB_BLUE
123
+ #undef RGB_PIXELSIZE
124
+ #undef jsimd_rgb_ycc_convert_mmi
125
+
126
+ #define RGB_RED EXT_XBGR_RED
127
+ #define RGB_GREEN EXT_XBGR_GREEN
128
+ #define RGB_BLUE EXT_XBGR_BLUE
129
+ #define RGB_PIXELSIZE EXT_XBGR_PIXELSIZE
130
+ #define jsimd_rgb_ycc_convert_mmi jsimd_extxbgr_ycc_convert_mmi
131
+ #include "jccolext-mmi.c"
132
+ #undef RGB_RED
133
+ #undef RGB_GREEN
134
+ #undef RGB_BLUE
135
+ #undef RGB_PIXELSIZE
136
+ #undef jsimd_rgb_ycc_convert_mmi
137
+
138
+ #define RGB_RED EXT_XRGB_RED
139
+ #define RGB_GREEN EXT_XRGB_GREEN
140
+ #define RGB_BLUE EXT_XRGB_BLUE
141
+ #define RGB_PIXELSIZE EXT_XRGB_PIXELSIZE
142
+ #define jsimd_rgb_ycc_convert_mmi jsimd_extxrgb_ycc_convert_mmi
143
+ #include "jccolext-mmi.c"
144
+ #undef RGB_RED
145
+ #undef RGB_GREEN
146
+ #undef RGB_BLUE
147
+ #undef RGB_PIXELSIZE
148
+ #undef jsimd_rgb_ycc_convert_mmi