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,100 @@
1
+ /*
2
+ * Loongson MMI optimizations for libjpeg-turbo
3
+ *
4
+ * Copyright (C) 2015, 2018, 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
+ * Based on the x86 SIMD extension for IJG JPEG library
12
+ * Copyright (C) 1999-2006, MIYASAKA Masaru.
13
+ *
14
+ * This software is provided 'as-is', without any express or implied
15
+ * warranty. In no event will the authors be held liable for any damages
16
+ * arising from the use of this software.
17
+ *
18
+ * Permission is granted to anyone to use this software for any purpose,
19
+ * including commercial applications, and to alter it and redistribute it
20
+ * freely, subject to the following restrictions:
21
+ *
22
+ * 1. The origin of this software must not be misrepresented; you must not
23
+ * claim that you wrote the original software. If you use this software
24
+ * in a product, an acknowledgment in the product documentation would be
25
+ * appreciated but is not required.
26
+ * 2. Altered source versions must be plainly marked as such, and must not be
27
+ * misrepresented as being the original software.
28
+ * 3. This notice may not be removed or altered from any source distribution.
29
+ */
30
+
31
+ /* CHROMA DOWNSAMPLING */
32
+
33
+ #include "jsimd_mmi.h"
34
+ #include "jcsample.h"
35
+
36
+
37
+ void jsimd_h2v2_downsample_mmi(JDIMENSION image_width, int max_v_samp_factor,
38
+ JDIMENSION v_samp_factor,
39
+ JDIMENSION width_in_blocks,
40
+ JSAMPARRAY input_data, JSAMPARRAY output_data)
41
+ {
42
+ int inrow, outrow, outcol, bias;
43
+ JDIMENSION output_cols = width_in_blocks * DCTSIZE;
44
+ JSAMPROW inptr0, inptr1, outptr;
45
+ __m64 mm0, mm1, mm2, mm3, mm4, mm5, mm6 = 0.0, mm7;
46
+
47
+ expand_right_edge(input_data, max_v_samp_factor, image_width,
48
+ output_cols * 2);
49
+
50
+ bias = (1 << 17) + 1; /* 0x00020001 (bias pattern) */
51
+ mm7 = _mm_set1_pi32(bias); /* mm7={1, 2, 1, 2} */
52
+ mm6 = _mm_cmpeq_pi16(mm6, mm6);
53
+ mm6 = _mm_srli_pi16(mm6, BYTE_BIT); /* mm6={0xFF 0x00 0xFF 0x00 ..} */
54
+
55
+ for (inrow = 0, outrow = 0; outrow < v_samp_factor;
56
+ inrow += 2, outrow++) {
57
+
58
+ inptr0 = input_data[inrow];
59
+ inptr1 = input_data[inrow + 1];
60
+ outptr = output_data[outrow];
61
+
62
+ for (outcol = output_cols; outcol > 0;
63
+ outcol -= 8, inptr0 += 16, inptr1 += 16, outptr += 8) {
64
+
65
+ mm0 = _mm_load_si64((__m64 *)&inptr0[0]);
66
+ mm1 = _mm_load_si64((__m64 *)&inptr1[0]);
67
+ mm2 = _mm_load_si64((__m64 *)&inptr0[8]);
68
+ mm3 = _mm_load_si64((__m64 *)&inptr1[8]);
69
+
70
+ mm4 = mm0;
71
+ mm5 = mm1;
72
+ mm0 = _mm_and_si64(mm0, mm6);
73
+ mm4 = _mm_srli_pi16(mm4, BYTE_BIT);
74
+ mm1 = _mm_and_si64(mm1, mm6);
75
+ mm5 = _mm_srli_pi16(mm5, BYTE_BIT);
76
+ mm0 = _mm_add_pi16(mm0, mm4);
77
+ mm1 = _mm_add_pi16(mm1, mm5);
78
+
79
+ mm4 = mm2;
80
+ mm5 = mm3;
81
+ mm2 = _mm_and_si64(mm2, mm6);
82
+ mm4 = _mm_srli_pi16(mm4, BYTE_BIT);
83
+ mm3 = _mm_and_si64(mm3, mm6);
84
+ mm5 = _mm_srli_pi16(mm5, BYTE_BIT);
85
+ mm2 = _mm_add_pi16(mm2, mm4);
86
+ mm3 = _mm_add_pi16(mm3, mm5);
87
+
88
+ mm0 = _mm_add_pi16(mm0, mm1);
89
+ mm2 = _mm_add_pi16(mm2, mm3);
90
+ mm0 = _mm_add_pi16(mm0, mm7);
91
+ mm2 = _mm_add_pi16(mm2, mm7);
92
+ mm0 = _mm_srli_pi16(mm0, 2);
93
+ mm2 = _mm_srli_pi16(mm2, 2);
94
+
95
+ mm0 = _mm_packs_pu16(mm0, mm2);
96
+
97
+ _mm_store_si64((__m64 *)&outptr[0], mm0);
98
+ }
99
+ }
100
+ }
@@ -0,0 +1,28 @@
1
+ /*
2
+ * jcsample.h
3
+ *
4
+ * This file was part of the Independent JPEG Group's software:
5
+ * Copyright (C) 1991-1996, Thomas G. Lane.
6
+ * For conditions of distribution and use, see the accompanying README.ijg
7
+ * file.
8
+ */
9
+
10
+ LOCAL(void)
11
+ expand_right_edge(JSAMPARRAY image_data, int num_rows, JDIMENSION input_cols,
12
+ JDIMENSION output_cols)
13
+ {
14
+ register JSAMPROW ptr;
15
+ register JSAMPLE pixval;
16
+ register int count;
17
+ int row;
18
+ int numcols = (int)(output_cols - input_cols);
19
+
20
+ if (numcols > 0) {
21
+ for (row = 0; row < num_rows; row++) {
22
+ ptr = image_data[row] + input_cols;
23
+ pixval = ptr[-1]; /* don't need GETJSAMPLE() here */
24
+ for (count = numcols; count > 0; count--)
25
+ *ptr++ = pixval;
26
+ }
27
+ }
28
+ }
@@ -0,0 +1,424 @@
1
+ /*
2
+ * Loongson MMI optimizations for libjpeg-turbo
3
+ *
4
+ * Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
5
+ * Copyright (C) 2015, D. R. Commander. All Rights Reserved.
6
+ * Copyright (C) 2016-2017, 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
+ *
12
+ * Based on the x86 SIMD extension for IJG JPEG library
13
+ * Copyright (C) 1999-2006, MIYASAKA Masaru.
14
+ *
15
+ * This software is provided 'as-is', without any express or implied
16
+ * warranty. In no event will the authors be held liable for any damages
17
+ * arising from the use of this software.
18
+ *
19
+ * Permission is granted to anyone to use this software for any purpose,
20
+ * including commercial applications, and to alter it and redistribute it
21
+ * freely, subject to the following restrictions:
22
+ *
23
+ * 1. The origin of this software must not be misrepresented; you must not
24
+ * claim that you wrote the original software. If you use this software
25
+ * in a product, an acknowledgment in the product documentation would be
26
+ * appreciated but is not required.
27
+ * 2. Altered source versions must be plainly marked as such, and must not be
28
+ * misrepresented as being the original software.
29
+ * 3. This notice may not be removed or altered from any source distribution.
30
+ */
31
+
32
+ /* This file is included by jdcolor-mmi.c */
33
+
34
+
35
+ #if RGB_RED == 0
36
+ #define mmA mm0
37
+ #define mmB mm1
38
+ #elif RGB_GREEN == 0
39
+ #define mmA mm2
40
+ #define mmB mm3
41
+ #elif RGB_BLUE == 0
42
+ #define mmA mm4
43
+ #define mmB mm5
44
+ #else
45
+ #define mmA mm6
46
+ #define mmB mm7
47
+ #endif
48
+
49
+ #if RGB_RED == 1
50
+ #define mmC mm0
51
+ #define mmD mm1
52
+ #elif RGB_GREEN == 1
53
+ #define mmC mm2
54
+ #define mmD mm3
55
+ #elif RGB_BLUE == 1
56
+ #define mmC mm4
57
+ #define mmD mm5
58
+ #else
59
+ #define mmC mm6
60
+ #define mmD mm7
61
+ #endif
62
+
63
+ #if RGB_RED == 2
64
+ #define mmE mm0
65
+ #define mmF mm1
66
+ #elif RGB_GREEN == 2
67
+ #define mmE mm2
68
+ #define mmF mm3
69
+ #elif RGB_BLUE == 2
70
+ #define mmE mm4
71
+ #define mmF mm5
72
+ #else
73
+ #define mmE mm6
74
+ #define mmF mm7
75
+ #endif
76
+
77
+ #if RGB_RED == 3
78
+ #define mmG mm0
79
+ #define mmH mm1
80
+ #elif RGB_GREEN == 3
81
+ #define mmG mm2
82
+ #define mmH mm3
83
+ #elif RGB_BLUE == 3
84
+ #define mmG mm4
85
+ #define mmH mm5
86
+ #else
87
+ #define mmG mm6
88
+ #define mmH mm7
89
+ #endif
90
+
91
+
92
+ void jsimd_ycc_rgb_convert_mmi(JDIMENSION out_width, JSAMPIMAGE input_buf,
93
+ JDIMENSION input_row, JSAMPARRAY output_buf,
94
+ int num_rows)
95
+ {
96
+ JSAMPROW outptr, inptr0, inptr1, inptr2;
97
+ int num_cols, col;
98
+ __m64 mm0, mm1, mm2, mm3, mm4, mm5, mm6, mm7;
99
+ __m64 mm8, wk[2];
100
+
101
+ while (--num_rows >= 0) {
102
+ inptr0 = input_buf[0][input_row];
103
+ inptr1 = input_buf[1][input_row];
104
+ inptr2 = input_buf[2][input_row];
105
+ input_row++;
106
+ outptr = *output_buf++;
107
+
108
+ for (num_cols = out_width; num_cols > 0; num_cols -= 8,
109
+ inptr0 += 8, inptr1 += 8, inptr2 += 8) {
110
+
111
+ mm5 = _mm_load_si64((__m64 *)inptr1);
112
+ mm1 = _mm_load_si64((__m64 *)inptr2);
113
+ mm8 = _mm_load_si64((__m64 *)inptr0);
114
+ mm4 = 0;
115
+ mm7 = 0;
116
+ mm4 = _mm_cmpeq_pi16(mm4, mm4);
117
+ mm7 = _mm_cmpeq_pi16(mm7, mm7);
118
+ mm4 = _mm_srli_pi16(mm4, BYTE_BIT);
119
+ mm7 = _mm_slli_pi16(mm7, 7); /* mm7={0xFF80 0xFF80 0xFF80 0xFF80} */
120
+ mm0 = mm4; /* mm0=mm4={0xFF 0x00 0xFF 0x00 ..} */
121
+
122
+ mm4 = _mm_and_si64(mm4, mm5); /* mm4=Cb(0246)=CbE */
123
+ mm5 = _mm_srli_pi16(mm5, BYTE_BIT); /* mm5=Cb(1357)=CbO */
124
+ mm0 = _mm_and_si64(mm0, mm1); /* mm0=Cr(0246)=CrE */
125
+ mm1 = _mm_srli_pi16(mm1, BYTE_BIT); /* mm1=Cr(1357)=CrO */
126
+ mm4 = _mm_add_pi16(mm4, mm7);
127
+ mm5 = _mm_add_pi16(mm5, mm7);
128
+ mm0 = _mm_add_pi16(mm0, mm7);
129
+ mm1 = _mm_add_pi16(mm1, mm7);
130
+
131
+ /* (Original)
132
+ * R = Y + 1.40200 * Cr
133
+ * G = Y - 0.34414 * Cb - 0.71414 * Cr
134
+ * B = Y + 1.77200 * Cb
135
+ *
136
+ * (This implementation)
137
+ * R = Y + 0.40200 * Cr + Cr
138
+ * G = Y - 0.34414 * Cb + 0.28586 * Cr - Cr
139
+ * B = Y - 0.22800 * Cb + Cb + Cb
140
+ */
141
+
142
+ mm2 = mm4; /* mm2 = CbE */
143
+ mm3 = mm5; /* mm3 = CbO */
144
+ mm4 = _mm_add_pi16(mm4, mm4); /* mm4 = 2*CbE */
145
+ mm5 = _mm_add_pi16(mm5, mm5); /* mm5 = 2*CbO */
146
+ mm6 = mm0; /* mm6 = CrE */
147
+ mm7 = mm1; /* mm7 = CrO */
148
+ mm0 = _mm_add_pi16(mm0, mm0); /* mm0 = 2*CrE */
149
+ mm1 = _mm_add_pi16(mm1, mm1); /* mm1 = 2*CrO */
150
+
151
+ mm4 = _mm_mulhi_pi16(mm4, PW_MF0228); /* mm4=(2*CbE * -FIX(0.22800) */
152
+ mm5 = _mm_mulhi_pi16(mm5, PW_MF0228); /* mm5=(2*CbO * -FIX(0.22800) */
153
+ mm0 = _mm_mulhi_pi16(mm0, PW_F0402); /* mm0=(2*CrE * FIX(0.40200)) */
154
+ mm1 = _mm_mulhi_pi16(mm1, PW_F0402); /* mm1=(2*CrO * FIX(0.40200)) */
155
+
156
+ mm4 = _mm_add_pi16(mm4, PW_ONE);
157
+ mm5 = _mm_add_pi16(mm5, PW_ONE);
158
+ mm4 = _mm_srai_pi16(mm4, 1); /* mm4=(CbE * -FIX(0.22800)) */
159
+ mm5 = _mm_srai_pi16(mm5, 1); /* mm5=(CbO * -FIX(0.22800)) */
160
+ mm0 = _mm_add_pi16(mm0, PW_ONE);
161
+ mm1 = _mm_add_pi16(mm1, PW_ONE);
162
+ mm0 = _mm_srai_pi16(mm0, 1); /* mm0=(CrE * FIX(0.40200)) */
163
+ mm1 = _mm_srai_pi16(mm1, 1); /* mm1=(CrO * FIX(0.40200)) */
164
+
165
+ mm4 = _mm_add_pi16(mm4, mm2);
166
+ mm5 = _mm_add_pi16(mm5, mm3);
167
+ mm4 = _mm_add_pi16(mm4, mm2); /* mm4=(CbE * FIX(1.77200))=(B-Y)E */
168
+ mm5 = _mm_add_pi16(mm5, mm3); /* mm5=(CbO * FIX(1.77200))=(B-Y)O */
169
+ mm0 = _mm_add_pi16(mm0, mm6); /* mm0=(CrE * FIX(1.40200))=(R-Y)E */
170
+ mm1 = _mm_add_pi16(mm1, mm7); /* mm1=(CrO * FIX(1.40200))=(R-Y)O */
171
+
172
+ wk[0] = mm4; /* wk(0)=(B-Y)E */
173
+ wk[1] = mm5; /* wk(1)=(B-Y)O */
174
+
175
+ mm4 = mm2;
176
+ mm5 = mm3;
177
+ mm2 = _mm_unpacklo_pi16(mm2, mm6);
178
+ mm4 = _mm_unpackhi_pi16(mm4, mm6);
179
+ mm2 = _mm_madd_pi16(mm2, PW_MF0344_F0285);
180
+ mm4 = _mm_madd_pi16(mm4, PW_MF0344_F0285);
181
+ mm3 = _mm_unpacklo_pi16(mm3, mm7);
182
+ mm5 = _mm_unpackhi_pi16(mm5, mm7);
183
+ mm3 = _mm_madd_pi16(mm3, PW_MF0344_F0285);
184
+ mm5 = _mm_madd_pi16(mm5, PW_MF0344_F0285);
185
+
186
+ mm2 = _mm_add_pi32(mm2, PD_ONEHALF);
187
+ mm4 = _mm_add_pi32(mm4, PD_ONEHALF);
188
+ mm2 = _mm_srai_pi32(mm2, SCALEBITS);
189
+ mm4 = _mm_srai_pi32(mm4, SCALEBITS);
190
+ mm3 = _mm_add_pi32(mm3, PD_ONEHALF);
191
+ mm5 = _mm_add_pi32(mm5, PD_ONEHALF);
192
+ mm3 = _mm_srai_pi32(mm3, SCALEBITS);
193
+ mm5 = _mm_srai_pi32(mm5, SCALEBITS);
194
+
195
+ mm2 = _mm_packs_pi32(mm2, mm4); /* mm2=CbE*-FIX(0.344)+CrE*FIX(0.285) */
196
+ mm3 = _mm_packs_pi32(mm3, mm5); /* mm3=CbO*-FIX(0.344)+CrO*FIX(0.285) */
197
+ mm2 = _mm_sub_pi16(mm2, mm6); /* mm2=CbE*-FIX(0.344)+CrE*-FIX(0.714)=(G-Y)E */
198
+ mm3 = _mm_sub_pi16(mm3, mm7); /* mm3=CbO*-FIX(0.344)+CrO*-FIX(0.714)=(G-Y)O */
199
+
200
+ mm5 = mm8; /* mm5=Y(01234567) */
201
+
202
+ mm4 = _mm_cmpeq_pi16(mm4, mm4);
203
+ mm4 = _mm_srli_pi16(mm4, BYTE_BIT); /* mm4={0xFF 0x00 0xFF 0x00 ..} */
204
+ mm4 = _mm_and_si64(mm4, mm5); /* mm4=Y(0246)=YE */
205
+ mm5 = _mm_srli_pi16(mm5, BYTE_BIT); /* mm5=Y(1357)=YO */
206
+
207
+ mm0 = _mm_add_pi16(mm0, mm4); /* mm0=((R-Y)E+YE)=RE=(R0 R2 R4 R6) */
208
+ mm1 = _mm_add_pi16(mm1, mm5); /* mm1=((R-Y)O+YO)=RO=(R1 R3 R5 R7) */
209
+ mm0 = _mm_packs_pu16(mm0, mm0); /* mm0=(R0 R2 R4 R6 ** ** ** **) */
210
+ mm1 = _mm_packs_pu16(mm1, mm1); /* mm1=(R1 R3 R5 R7 ** ** ** **) */
211
+
212
+ mm2 = _mm_add_pi16(mm2, mm4); /* mm2=((G-Y)E+YE)=GE=(G0 G2 G4 G6) */
213
+ mm3 = _mm_add_pi16(mm3, mm5); /* mm3=((G-Y)O+YO)=GO=(G1 G3 G5 G7) */
214
+ mm2 = _mm_packs_pu16(mm2, mm2); /* mm2=(G0 G2 G4 G6 ** ** ** **) */
215
+ mm3 = _mm_packs_pu16(mm3, mm3); /* mm3=(G1 G3 G5 G7 ** ** ** **) */
216
+
217
+ mm4 = _mm_add_pi16(mm4, wk[0]); /* mm4=(YE+(B-Y)E)=BE=(B0 B2 B4 B6) */
218
+ mm5 = _mm_add_pi16(mm5, wk[1]); /* mm5=(YO+(B-Y)O)=BO=(B1 B3 B5 B7) */
219
+ mm4 = _mm_packs_pu16(mm4, mm4); /* mm4=(B0 B2 B4 B6 ** ** ** **) */
220
+ mm5 = _mm_packs_pu16(mm5, mm5); /* mm5=(B1 B3 B5 B7 ** ** ** **) */
221
+
222
+ #if RGB_PIXELSIZE == 3
223
+
224
+ /* mmA=(00 02 04 06 ** ** ** **), mmB=(01 03 05 07 ** ** ** **) */
225
+ /* mmC=(10 12 14 16 ** ** ** **), mmD=(11 13 15 17 ** ** ** **) */
226
+ mmA = _mm_unpacklo_pi8(mmA, mmC); /* mmA=(00 10 02 12 04 14 06 16) */
227
+ mmE = _mm_unpacklo_pi8(mmE, mmB); /* mmE=(20 01 22 03 24 05 26 07) */
228
+ mmD = _mm_unpacklo_pi8(mmD, mmF); /* mmD=(11 21 13 23 15 25 17 27) */
229
+
230
+ mmG = mmA;
231
+ mmH = mmA;
232
+ mmA = _mm_unpacklo_pi16(mmA, mmE); /* mmA=(00 10 20 01 02 12 22 03) */
233
+ mmG = _mm_unpackhi_pi16(mmG, mmE); /* mmG=(04 14 24 05 06 16 26 07) */
234
+
235
+ mmH = _mm_srli_si64(mmH, 2 * BYTE_BIT);
236
+ mmE = _mm_srli_si64(mmE, 2 * BYTE_BIT);
237
+
238
+ mmC = mmD;
239
+ mmB = mmD;
240
+ mmD = _mm_unpacklo_pi16(mmD, mmH); /* mmD=(11 21 02 12 13 23 04 14) */
241
+ mmC = _mm_unpackhi_pi16(mmC, mmH); /* mmC=(15 25 06 16 17 27 -- --) */
242
+
243
+ mmB = _mm_srli_si64(mmB, 2 * BYTE_BIT); /* mmB=(13 23 15 25 17 27 -- --) */
244
+
245
+ mmF = mmE;
246
+ mmE = _mm_unpacklo_pi16(mmE, mmB); /* mmE=(22 03 13 23 24 05 15 25) */
247
+ mmF = _mm_unpackhi_pi16(mmF, mmB); /* mmF=(26 07 17 27 -- -- -- --) */
248
+
249
+ mmA = _mm_unpacklo_pi32(mmA, mmD); /* mmA=(00 10 20 01 11 21 02 12) */
250
+ mmE = _mm_unpacklo_pi32(mmE, mmG); /* mmE=(22 03 13 23 04 14 24 05) */
251
+ mmC = _mm_unpacklo_pi32(mmC, mmF); /* mmC=(15 25 06 16 26 07 17 27) */
252
+
253
+ if (num_cols >= 8) {
254
+ _mm_store_si64((__m64 *)outptr, mmA);
255
+ _mm_store_si64((__m64 *)(outptr + 8), mmE);
256
+ _mm_store_si64((__m64 *)(outptr + 16), mmC);
257
+ outptr += RGB_PIXELSIZE * 8;
258
+ } else {
259
+ col = num_cols * 3;
260
+ asm(".set noreorder\r\n"
261
+
262
+ "li $8, 16\r\n"
263
+ "move $9, %4\r\n"
264
+ "mov.s $f4, %1\r\n"
265
+ "mov.s $f6, %3\r\n"
266
+ "move $10, %5\r\n"
267
+ "bltu $9, $8, 1f\r\n"
268
+ "nop \r\n"
269
+ "gssdlc1 $f4, 7($10)\r\n"
270
+ "gssdrc1 $f4, 0($10)\r\n"
271
+ "gssdlc1 $f6, 7+8($10)\r\n"
272
+ "gssdrc1 $f6, 8($10)\r\n"
273
+ "mov.s $f4, %2\r\n"
274
+ "subu $9, $9, 16\r\n"
275
+ "daddu $10, $10, 16\r\n"
276
+ "b 2f\r\n"
277
+ "nop \r\n"
278
+
279
+ "1: \r\n"
280
+ "li $8, 8\r\n" /* st8 */
281
+ "bltu $9, $8, 2f\r\n"
282
+ "nop \r\n"
283
+ "gssdlc1 $f4, 7($10)\r\n"
284
+ "gssdrc1 $f4, ($10)\r\n"
285
+ "mov.s $f4, %3\r\n"
286
+ "subu $9, $9, 8\r\n"
287
+ "daddu $10, $10, 8\r\n"
288
+
289
+ "2: \r\n"
290
+ "li $8, 4\r\n" /* st4 */
291
+ "mfc1 $11, $f4\r\n"
292
+ "bltu $9, $8, 3f\r\n"
293
+ "nop \r\n"
294
+ "swl $11, 3($10)\r\n"
295
+ "swr $11, 0($10)\r\n"
296
+ "li $8, 32\r\n"
297
+ "mtc1 $8, $f6\r\n"
298
+ "dsrl $f4, $f4, $f6\r\n"
299
+ "mfc1 $11, $f4\r\n"
300
+ "subu $9, $9, 4\r\n"
301
+ "daddu $10, $10, 4\r\n"
302
+
303
+ "3: \r\n"
304
+ "li $8, 2\r\n" /* st2 */
305
+ "bltu $9, $8, 4f\r\n"
306
+ "nop \r\n"
307
+ "ush $11, 0($10)\r\n"
308
+ "srl $11, 16\r\n"
309
+ "subu $9, $9, 2\r\n"
310
+ "daddu $10, $10, 2\r\n"
311
+
312
+ "4: \r\n"
313
+ "li $8, 1\r\n" /* st1 */
314
+ "bltu $9, $8, 5f\r\n"
315
+ "nop \r\n"
316
+ "sb $11, 0($10)\r\n"
317
+
318
+ "5: \r\n"
319
+ "nop \r\n" /* end */
320
+ : "=m" (*outptr)
321
+ : "f" (mmA), "f" (mmC), "f" (mmE), "r" (col), "r" (outptr)
322
+ : "$f4", "$f6", "$8", "$9", "$10", "$11", "memory"
323
+ );
324
+ }
325
+
326
+ #else /* RGB_PIXELSIZE == 4 */
327
+
328
+ #ifdef RGBX_FILLER_0XFF
329
+ mm6 = _mm_cmpeq_pi8(mm6, mm6);
330
+ mm7 = _mm_cmpeq_pi8(mm7, mm7);
331
+ #else
332
+ mm6 = _mm_xor_si64(mm6, mm6);
333
+ mm7 = _mm_xor_si64(mm7, mm7);
334
+ #endif
335
+ /* mmA=(00 02 04 06 ** ** ** **), mmB=(01 03 05 07 ** ** ** **) */
336
+ /* mmC=(10 12 14 16 ** ** ** **), mmD=(11 13 15 17 ** ** ** **) */
337
+ /* mmE=(20 22 24 26 ** ** ** **), mmF=(21 23 25 27 ** ** ** **) */
338
+ /* mmG=(30 32 34 36 ** ** ** **), mmH=(31 33 35 37 ** ** ** **) */
339
+
340
+ mmA = _mm_unpacklo_pi8(mmA, mmC); /* mmA=(00 10 02 12 04 14 06 16) */
341
+ mmE = _mm_unpacklo_pi8(mmE, mmG); /* mmE=(20 30 22 32 24 34 26 36) */
342
+ mmB = _mm_unpacklo_pi8(mmB, mmD); /* mmB=(01 11 03 13 05 15 07 17) */
343
+ mmF = _mm_unpacklo_pi8(mmF, mmH); /* mmF=(21 31 23 33 25 35 27 37) */
344
+
345
+ mmC = mmA;
346
+ mmA = _mm_unpacklo_pi16(mmA, mmE); /* mmA=(00 10 20 30 02 12 22 32) */
347
+ mmC = _mm_unpackhi_pi16(mmC, mmE); /* mmC=(04 14 24 34 06 16 26 36) */
348
+ mmG = mmB;
349
+ mmB = _mm_unpacklo_pi16(mmB, mmF); /* mmB=(01 11 21 31 03 13 23 33) */
350
+ mmG = _mm_unpackhi_pi16(mmG, mmF); /* mmG=(05 15 25 35 07 17 27 37) */
351
+
352
+ mmD = mmA;
353
+ mmA = _mm_unpacklo_pi32(mmA, mmB); /* mmA=(00 10 20 30 01 11 21 31) */
354
+ mmD = _mm_unpackhi_pi32(mmD, mmB); /* mmD=(02 12 22 32 03 13 23 33) */
355
+ mmH = mmC;
356
+ mmC = _mm_unpacklo_pi32(mmC, mmG); /* mmC=(04 14 24 34 05 15 25 35) */
357
+ mmH = _mm_unpackhi_pi32(mmH, mmG); /* mmH=(06 16 26 36 07 17 27 37) */
358
+
359
+ if (num_cols >= 8) {
360
+ _mm_store_si64((__m64 *)outptr, mmA);
361
+ _mm_store_si64((__m64 *)(outptr + 8), mmD);
362
+ _mm_store_si64((__m64 *)(outptr + 16), mmC);
363
+ _mm_store_si64((__m64 *)(outptr + 24), mmH);
364
+ outptr += RGB_PIXELSIZE * 8;
365
+ } else {
366
+ col = num_cols;
367
+ asm(".set noreorder\r\n" /* st16 */
368
+
369
+ "li $8, 4\r\n"
370
+ "move $9, %6\r\n"
371
+ "move $10, %7\r\n"
372
+ "mov.s $f4, %2\r\n"
373
+ "mov.s $f6, %4\r\n"
374
+ "bltu $9, $8, 1f\r\n"
375
+ "nop \r\n"
376
+ "gssdlc1 $f4, 7($10)\r\n"
377
+ "gssdrc1 $f4, ($10)\r\n"
378
+ "gssdlc1 $f6, 7+8($10)\r\n"
379
+ "gssdrc1 $f6, 8($10)\r\n"
380
+ "mov.s $f4, %3\r\n"
381
+ "mov.s $f6, %5\r\n"
382
+ "subu $9, $9, 4\r\n"
383
+ "daddu $10, $10, 16\r\n"
384
+
385
+ "1: \r\n"
386
+ "li $8, 2\r\n" /* st8 */
387
+ "bltu $9, $8, 2f\r\n"
388
+ "nop \r\n"
389
+ "gssdlc1 $f4, 7($10)\r\n"
390
+ "gssdrc1 $f4, 0($10)\r\n"
391
+ "mov.s $f4, $f6\r\n"
392
+ "subu $9, $9, 2\r\n"
393
+ "daddu $10, $10, 8\r\n"
394
+
395
+ "2: \r\n"
396
+ "li $8, 1\r\n" /* st4 */
397
+ "bltu $9, $8, 3f\r\n"
398
+ "nop \r\n"
399
+ "gsswlc1 $f4, 3($10)\r\n"
400
+ "gsswrc1 $f4, 0($10)\r\n"
401
+
402
+ "3: \r\n"
403
+ "li %1, 0\r\n" /* end */
404
+ : "=m" (*outptr), "=r" (col)
405
+ : "f" (mmA), "f" (mmC), "f" (mmD), "f" (mmH), "r" (col),
406
+ "r" (outptr)
407
+ : "$f4", "$f6", "$8", "$9", "$10", "memory"
408
+ );
409
+ }
410
+
411
+ #endif
412
+
413
+ }
414
+ }
415
+ }
416
+
417
+ #undef mmA
418
+ #undef mmB
419
+ #undef mmC
420
+ #undef mmD
421
+ #undef mmE
422
+ #undef mmF
423
+ #undef mmG
424
+ #undef mmH
@@ -0,0 +1,139 @@
1
+ /*
2
+ * Loongson MMI optimizations for libjpeg-turbo
3
+ *
4
+ * Copyright (C) 2011, 2015, 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
+ /* YCC --> RGB CONVERSION */
29
+
30
+ #include "jsimd_mmi.h"
31
+
32
+
33
+ #define F_0_344 ((short)22554) /* FIX(0.34414) */
34
+ #define F_0_402 ((short)26345) /* FIX(1.40200) - FIX(1) */
35
+ #define F_0_285 ((short)18734) /* FIX(1) - FIX(0.71414) */
36
+ #define F_0_228 ((short)14942) /* FIX(2) - FIX(1.77200) */
37
+
38
+ enum const_index {
39
+ index_PW_ONE,
40
+ index_PW_F0402,
41
+ index_PW_MF0228,
42
+ index_PW_MF0344_F0285,
43
+ index_PD_ONEHALF
44
+ };
45
+
46
+ static uint64_t const_value[] = {
47
+ _uint64_set_pi16(1, 1, 1, 1),
48
+ _uint64_set_pi16(F_0_402, F_0_402, F_0_402, F_0_402),
49
+ _uint64_set_pi16(-F_0_228, -F_0_228, -F_0_228, -F_0_228),
50
+ _uint64_set_pi16(F_0_285, -F_0_344, F_0_285, -F_0_344),
51
+ _uint64_set_pi32((int)(1 << (SCALEBITS - 1)), (int)(1 << (SCALEBITS - 1)))
52
+ };
53
+
54
+ #define PW_ONE get_const_value(index_PW_ONE)
55
+ #define PW_F0402 get_const_value(index_PW_F0402)
56
+ #define PW_MF0228 get_const_value(index_PW_MF0228)
57
+ #define PW_MF0344_F0285 get_const_value(index_PW_MF0344_F0285)
58
+ #define PD_ONEHALF get_const_value(index_PD_ONEHALF)
59
+
60
+ #define RGBX_FILLER_0XFF 1
61
+
62
+
63
+ #include "jdcolext-mmi.c"
64
+ #undef RGB_RED
65
+ #undef RGB_GREEN
66
+ #undef RGB_BLUE
67
+ #undef RGB_PIXELSIZE
68
+
69
+ #define RGB_RED EXT_RGB_RED
70
+ #define RGB_GREEN EXT_RGB_GREEN
71
+ #define RGB_BLUE EXT_RGB_BLUE
72
+ #define RGB_PIXELSIZE EXT_RGB_PIXELSIZE
73
+ #define jsimd_ycc_rgb_convert_mmi jsimd_ycc_extrgb_convert_mmi
74
+ #include "jdcolext-mmi.c"
75
+ #undef RGB_RED
76
+ #undef RGB_GREEN
77
+ #undef RGB_BLUE
78
+ #undef RGB_PIXELSIZE
79
+ #undef jsimd_ycc_rgb_convert_mmi
80
+
81
+ #define RGB_RED EXT_RGBX_RED
82
+ #define RGB_GREEN EXT_RGBX_GREEN
83
+ #define RGB_BLUE EXT_RGBX_BLUE
84
+ #define RGB_PIXELSIZE EXT_RGBX_PIXELSIZE
85
+ #define jsimd_ycc_rgb_convert_mmi jsimd_ycc_extrgbx_convert_mmi
86
+ #include "jdcolext-mmi.c"
87
+ #undef RGB_RED
88
+ #undef RGB_GREEN
89
+ #undef RGB_BLUE
90
+ #undef RGB_PIXELSIZE
91
+ #undef jsimd_ycc_rgb_convert_mmi
92
+
93
+ #define RGB_RED EXT_BGR_RED
94
+ #define RGB_GREEN EXT_BGR_GREEN
95
+ #define RGB_BLUE EXT_BGR_BLUE
96
+ #define RGB_PIXELSIZE EXT_BGR_PIXELSIZE
97
+ #define jsimd_ycc_rgb_convert_mmi jsimd_ycc_extbgr_convert_mmi
98
+ #include "jdcolext-mmi.c"
99
+ #undef RGB_RED
100
+ #undef RGB_GREEN
101
+ #undef RGB_BLUE
102
+ #undef RGB_PIXELSIZE
103
+ #undef jsimd_ycc_rgb_convert_mmi
104
+
105
+ #define RGB_RED EXT_BGRX_RED
106
+ #define RGB_GREEN EXT_BGRX_GREEN
107
+ #define RGB_BLUE EXT_BGRX_BLUE
108
+ #define RGB_PIXELSIZE EXT_BGRX_PIXELSIZE
109
+ #define jsimd_ycc_rgb_convert_mmi jsimd_ycc_extbgrx_convert_mmi
110
+ #include "jdcolext-mmi.c"
111
+ #undef RGB_RED
112
+ #undef RGB_GREEN
113
+ #undef RGB_BLUE
114
+ #undef RGB_PIXELSIZE
115
+ #undef jsimd_ycc_rgb_convert_mmi
116
+
117
+ #define RGB_RED EXT_XBGR_RED
118
+ #define RGB_GREEN EXT_XBGR_GREEN
119
+ #define RGB_BLUE EXT_XBGR_BLUE
120
+ #define RGB_PIXELSIZE EXT_XBGR_PIXELSIZE
121
+ #define jsimd_ycc_rgb_convert_mmi jsimd_ycc_extxbgr_convert_mmi
122
+ #include "jdcolext-mmi.c"
123
+ #undef RGB_RED
124
+ #undef RGB_GREEN
125
+ #undef RGB_BLUE
126
+ #undef RGB_PIXELSIZE
127
+ #undef jsimd_ycc_rgb_convert_mmi
128
+
129
+ #define RGB_RED EXT_XRGB_RED
130
+ #define RGB_GREEN EXT_XRGB_GREEN
131
+ #define RGB_BLUE EXT_XRGB_BLUE
132
+ #define RGB_PIXELSIZE EXT_XRGB_PIXELSIZE
133
+ #define jsimd_ycc_rgb_convert_mmi jsimd_ycc_extxrgb_convert_mmi
134
+ #include "jdcolext-mmi.c"
135
+ #undef RGB_RED
136
+ #undef RGB_GREEN
137
+ #undef RGB_BLUE
138
+ #undef RGB_PIXELSIZE
139
+ #undef jsimd_ycc_rgb_convert_mmi