epeg 1.0

Sign up to get free protection for your applications and to get access to all the features.
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,710 @@
1
+ /*
2
+ * jccolor.c
3
+ *
4
+ * This file was part of the Independent JPEG Group's software:
5
+ * Copyright (C) 1991-1996, Thomas G. Lane.
6
+ * libjpeg-turbo Modifications:
7
+ * Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
8
+ * Copyright (C) 2009-2012, 2015, D. R. Commander.
9
+ * Copyright (C) 2014, MIPS Technologies, Inc., California.
10
+ * For conditions of distribution and use, see the accompanying README.ijg
11
+ * file.
12
+ *
13
+ * This file contains input colorspace conversion routines.
14
+ */
15
+
16
+ #define JPEG_INTERNALS
17
+ #include "jinclude.h"
18
+ #include "jpeglib.h"
19
+ #include "jsimd.h"
20
+ #include "jconfigint.h"
21
+
22
+
23
+ /* Private subobject */
24
+
25
+ typedef struct {
26
+ struct jpeg_color_converter pub; /* public fields */
27
+
28
+ /* Private state for RGB->YCC conversion */
29
+ JLONG *rgb_ycc_tab; /* => table for RGB to YCbCr conversion */
30
+ } my_color_converter;
31
+
32
+ typedef my_color_converter *my_cconvert_ptr;
33
+
34
+
35
+ /**************** RGB -> YCbCr conversion: most common case **************/
36
+
37
+ /*
38
+ * YCbCr is defined per CCIR 601-1, except that Cb and Cr are
39
+ * normalized to the range 0..MAXJSAMPLE rather than -0.5 .. 0.5.
40
+ * The conversion equations to be implemented are therefore
41
+ * Y = 0.29900 * R + 0.58700 * G + 0.11400 * B
42
+ * Cb = -0.16874 * R - 0.33126 * G + 0.50000 * B + CENTERJSAMPLE
43
+ * Cr = 0.50000 * R - 0.41869 * G - 0.08131 * B + CENTERJSAMPLE
44
+ * (These numbers are derived from TIFF 6.0 section 21, dated 3-June-92.)
45
+ * Note: older versions of the IJG code used a zero offset of MAXJSAMPLE/2,
46
+ * rather than CENTERJSAMPLE, for Cb and Cr. This gave equal positive and
47
+ * negative swings for Cb/Cr, but meant that grayscale values (Cb=Cr=0)
48
+ * were not represented exactly. Now we sacrifice exact representation of
49
+ * maximum red and maximum blue in order to get exact grayscales.
50
+ *
51
+ * To avoid floating-point arithmetic, we represent the fractional constants
52
+ * as integers scaled up by 2^16 (about 4 digits precision); we have to divide
53
+ * the products by 2^16, with appropriate rounding, to get the correct answer.
54
+ *
55
+ * For even more speed, we avoid doing any multiplications in the inner loop
56
+ * by precalculating the constants times R,G,B for all possible values.
57
+ * For 8-bit JSAMPLEs this is very reasonable (only 256 entries per table);
58
+ * for 12-bit samples it is still acceptable. It's not very reasonable for
59
+ * 16-bit samples, but if you want lossless storage you shouldn't be changing
60
+ * colorspace anyway.
61
+ * The CENTERJSAMPLE offsets and the rounding fudge-factor of 0.5 are included
62
+ * in the tables to save adding them separately in the inner loop.
63
+ */
64
+
65
+ #define SCALEBITS 16 /* speediest right-shift on some machines */
66
+ #define CBCR_OFFSET ((JLONG)CENTERJSAMPLE << SCALEBITS)
67
+ #define ONE_HALF ((JLONG)1 << (SCALEBITS - 1))
68
+ #define FIX(x) ((JLONG)((x) * (1L << SCALEBITS) + 0.5))
69
+
70
+ /* We allocate one big table and divide it up into eight parts, instead of
71
+ * doing eight alloc_small requests. This lets us use a single table base
72
+ * address, which can be held in a register in the inner loops on many
73
+ * machines (more than can hold all eight addresses, anyway).
74
+ */
75
+
76
+ #define R_Y_OFF 0 /* offset to R => Y section */
77
+ #define G_Y_OFF (1 * (MAXJSAMPLE + 1)) /* offset to G => Y section */
78
+ #define B_Y_OFF (2 * (MAXJSAMPLE + 1)) /* etc. */
79
+ #define R_CB_OFF (3 * (MAXJSAMPLE + 1))
80
+ #define G_CB_OFF (4 * (MAXJSAMPLE + 1))
81
+ #define B_CB_OFF (5 * (MAXJSAMPLE + 1))
82
+ #define R_CR_OFF B_CB_OFF /* B=>Cb, R=>Cr are the same */
83
+ #define G_CR_OFF (6 * (MAXJSAMPLE + 1))
84
+ #define B_CR_OFF (7 * (MAXJSAMPLE + 1))
85
+ #define TABLE_SIZE (8 * (MAXJSAMPLE + 1))
86
+
87
+
88
+ /* Include inline routines for colorspace extensions */
89
+
90
+ #include "jccolext.c"
91
+ #undef RGB_RED
92
+ #undef RGB_GREEN
93
+ #undef RGB_BLUE
94
+ #undef RGB_PIXELSIZE
95
+
96
+ #define RGB_RED EXT_RGB_RED
97
+ #define RGB_GREEN EXT_RGB_GREEN
98
+ #define RGB_BLUE EXT_RGB_BLUE
99
+ #define RGB_PIXELSIZE EXT_RGB_PIXELSIZE
100
+ #define rgb_ycc_convert_internal extrgb_ycc_convert_internal
101
+ #define rgb_gray_convert_internal extrgb_gray_convert_internal
102
+ #define rgb_rgb_convert_internal extrgb_rgb_convert_internal
103
+ #include "jccolext.c"
104
+ #undef RGB_RED
105
+ #undef RGB_GREEN
106
+ #undef RGB_BLUE
107
+ #undef RGB_PIXELSIZE
108
+ #undef rgb_ycc_convert_internal
109
+ #undef rgb_gray_convert_internal
110
+ #undef rgb_rgb_convert_internal
111
+
112
+ #define RGB_RED EXT_RGBX_RED
113
+ #define RGB_GREEN EXT_RGBX_GREEN
114
+ #define RGB_BLUE EXT_RGBX_BLUE
115
+ #define RGB_PIXELSIZE EXT_RGBX_PIXELSIZE
116
+ #define rgb_ycc_convert_internal extrgbx_ycc_convert_internal
117
+ #define rgb_gray_convert_internal extrgbx_gray_convert_internal
118
+ #define rgb_rgb_convert_internal extrgbx_rgb_convert_internal
119
+ #include "jccolext.c"
120
+ #undef RGB_RED
121
+ #undef RGB_GREEN
122
+ #undef RGB_BLUE
123
+ #undef RGB_PIXELSIZE
124
+ #undef rgb_ycc_convert_internal
125
+ #undef rgb_gray_convert_internal
126
+ #undef rgb_rgb_convert_internal
127
+
128
+ #define RGB_RED EXT_BGR_RED
129
+ #define RGB_GREEN EXT_BGR_GREEN
130
+ #define RGB_BLUE EXT_BGR_BLUE
131
+ #define RGB_PIXELSIZE EXT_BGR_PIXELSIZE
132
+ #define rgb_ycc_convert_internal extbgr_ycc_convert_internal
133
+ #define rgb_gray_convert_internal extbgr_gray_convert_internal
134
+ #define rgb_rgb_convert_internal extbgr_rgb_convert_internal
135
+ #include "jccolext.c"
136
+ #undef RGB_RED
137
+ #undef RGB_GREEN
138
+ #undef RGB_BLUE
139
+ #undef RGB_PIXELSIZE
140
+ #undef rgb_ycc_convert_internal
141
+ #undef rgb_gray_convert_internal
142
+ #undef rgb_rgb_convert_internal
143
+
144
+ #define RGB_RED EXT_BGRX_RED
145
+ #define RGB_GREEN EXT_BGRX_GREEN
146
+ #define RGB_BLUE EXT_BGRX_BLUE
147
+ #define RGB_PIXELSIZE EXT_BGRX_PIXELSIZE
148
+ #define rgb_ycc_convert_internal extbgrx_ycc_convert_internal
149
+ #define rgb_gray_convert_internal extbgrx_gray_convert_internal
150
+ #define rgb_rgb_convert_internal extbgrx_rgb_convert_internal
151
+ #include "jccolext.c"
152
+ #undef RGB_RED
153
+ #undef RGB_GREEN
154
+ #undef RGB_BLUE
155
+ #undef RGB_PIXELSIZE
156
+ #undef rgb_ycc_convert_internal
157
+ #undef rgb_gray_convert_internal
158
+ #undef rgb_rgb_convert_internal
159
+
160
+ #define RGB_RED EXT_XBGR_RED
161
+ #define RGB_GREEN EXT_XBGR_GREEN
162
+ #define RGB_BLUE EXT_XBGR_BLUE
163
+ #define RGB_PIXELSIZE EXT_XBGR_PIXELSIZE
164
+ #define rgb_ycc_convert_internal extxbgr_ycc_convert_internal
165
+ #define rgb_gray_convert_internal extxbgr_gray_convert_internal
166
+ #define rgb_rgb_convert_internal extxbgr_rgb_convert_internal
167
+ #include "jccolext.c"
168
+ #undef RGB_RED
169
+ #undef RGB_GREEN
170
+ #undef RGB_BLUE
171
+ #undef RGB_PIXELSIZE
172
+ #undef rgb_ycc_convert_internal
173
+ #undef rgb_gray_convert_internal
174
+ #undef rgb_rgb_convert_internal
175
+
176
+ #define RGB_RED EXT_XRGB_RED
177
+ #define RGB_GREEN EXT_XRGB_GREEN
178
+ #define RGB_BLUE EXT_XRGB_BLUE
179
+ #define RGB_PIXELSIZE EXT_XRGB_PIXELSIZE
180
+ #define rgb_ycc_convert_internal extxrgb_ycc_convert_internal
181
+ #define rgb_gray_convert_internal extxrgb_gray_convert_internal
182
+ #define rgb_rgb_convert_internal extxrgb_rgb_convert_internal
183
+ #include "jccolext.c"
184
+ #undef RGB_RED
185
+ #undef RGB_GREEN
186
+ #undef RGB_BLUE
187
+ #undef RGB_PIXELSIZE
188
+ #undef rgb_ycc_convert_internal
189
+ #undef rgb_gray_convert_internal
190
+ #undef rgb_rgb_convert_internal
191
+
192
+
193
+ /*
194
+ * Initialize for RGB->YCC colorspace conversion.
195
+ */
196
+
197
+ METHODDEF(void)
198
+ rgb_ycc_start(j_compress_ptr cinfo)
199
+ {
200
+ my_cconvert_ptr cconvert = (my_cconvert_ptr)cinfo->cconvert;
201
+ JLONG *rgb_ycc_tab;
202
+ JLONG i;
203
+
204
+ /* Allocate and fill in the conversion tables. */
205
+ cconvert->rgb_ycc_tab = rgb_ycc_tab = (JLONG *)
206
+ (*cinfo->mem->alloc_small) ((j_common_ptr)cinfo, JPOOL_IMAGE,
207
+ (TABLE_SIZE * sizeof(JLONG)));
208
+
209
+ for (i = 0; i <= MAXJSAMPLE; i++) {
210
+ rgb_ycc_tab[i + R_Y_OFF] = FIX(0.29900) * i;
211
+ rgb_ycc_tab[i + G_Y_OFF] = FIX(0.58700) * i;
212
+ rgb_ycc_tab[i + B_Y_OFF] = FIX(0.11400) * i + ONE_HALF;
213
+ rgb_ycc_tab[i + R_CB_OFF] = (-FIX(0.16874)) * i;
214
+ rgb_ycc_tab[i + G_CB_OFF] = (-FIX(0.33126)) * i;
215
+ /* We use a rounding fudge-factor of 0.5-epsilon for Cb and Cr.
216
+ * This ensures that the maximum output will round to MAXJSAMPLE
217
+ * not MAXJSAMPLE+1, and thus that we don't have to range-limit.
218
+ */
219
+ rgb_ycc_tab[i + B_CB_OFF] = FIX(0.50000) * i + CBCR_OFFSET + ONE_HALF - 1;
220
+ /* B=>Cb and R=>Cr tables are the same
221
+ rgb_ycc_tab[i + R_CR_OFF] = FIX(0.50000) * i + CBCR_OFFSET + ONE_HALF - 1;
222
+ */
223
+ rgb_ycc_tab[i + G_CR_OFF] = (-FIX(0.41869)) * i;
224
+ rgb_ycc_tab[i + B_CR_OFF] = (-FIX(0.08131)) * i;
225
+ }
226
+ }
227
+
228
+
229
+ /*
230
+ * Convert some rows of samples to the JPEG colorspace.
231
+ */
232
+
233
+ METHODDEF(void)
234
+ rgb_ycc_convert(j_compress_ptr cinfo, JSAMPARRAY input_buf,
235
+ JSAMPIMAGE output_buf, JDIMENSION output_row, int num_rows)
236
+ {
237
+ switch (cinfo->in_color_space) {
238
+ case JCS_EXT_RGB:
239
+ extrgb_ycc_convert_internal(cinfo, input_buf, output_buf, output_row,
240
+ num_rows);
241
+ break;
242
+ case JCS_EXT_RGBX:
243
+ case JCS_EXT_RGBA:
244
+ extrgbx_ycc_convert_internal(cinfo, input_buf, output_buf, output_row,
245
+ num_rows);
246
+ break;
247
+ case JCS_EXT_BGR:
248
+ extbgr_ycc_convert_internal(cinfo, input_buf, output_buf, output_row,
249
+ num_rows);
250
+ break;
251
+ case JCS_EXT_BGRX:
252
+ case JCS_EXT_BGRA:
253
+ extbgrx_ycc_convert_internal(cinfo, input_buf, output_buf, output_row,
254
+ num_rows);
255
+ break;
256
+ case JCS_EXT_XBGR:
257
+ case JCS_EXT_ABGR:
258
+ extxbgr_ycc_convert_internal(cinfo, input_buf, output_buf, output_row,
259
+ num_rows);
260
+ break;
261
+ case JCS_EXT_XRGB:
262
+ case JCS_EXT_ARGB:
263
+ extxrgb_ycc_convert_internal(cinfo, input_buf, output_buf, output_row,
264
+ num_rows);
265
+ break;
266
+ default:
267
+ rgb_ycc_convert_internal(cinfo, input_buf, output_buf, output_row,
268
+ num_rows);
269
+ break;
270
+ }
271
+ }
272
+
273
+
274
+ /**************** Cases other than RGB -> YCbCr **************/
275
+
276
+
277
+ /*
278
+ * Convert some rows of samples to the JPEG colorspace.
279
+ */
280
+
281
+ METHODDEF(void)
282
+ rgb_gray_convert(j_compress_ptr cinfo, JSAMPARRAY input_buf,
283
+ JSAMPIMAGE output_buf, JDIMENSION output_row, int num_rows)
284
+ {
285
+ switch (cinfo->in_color_space) {
286
+ case JCS_EXT_RGB:
287
+ extrgb_gray_convert_internal(cinfo, input_buf, output_buf, output_row,
288
+ num_rows);
289
+ break;
290
+ case JCS_EXT_RGBX:
291
+ case JCS_EXT_RGBA:
292
+ extrgbx_gray_convert_internal(cinfo, input_buf, output_buf, output_row,
293
+ num_rows);
294
+ break;
295
+ case JCS_EXT_BGR:
296
+ extbgr_gray_convert_internal(cinfo, input_buf, output_buf, output_row,
297
+ num_rows);
298
+ break;
299
+ case JCS_EXT_BGRX:
300
+ case JCS_EXT_BGRA:
301
+ extbgrx_gray_convert_internal(cinfo, input_buf, output_buf, output_row,
302
+ num_rows);
303
+ break;
304
+ case JCS_EXT_XBGR:
305
+ case JCS_EXT_ABGR:
306
+ extxbgr_gray_convert_internal(cinfo, input_buf, output_buf, output_row,
307
+ num_rows);
308
+ break;
309
+ case JCS_EXT_XRGB:
310
+ case JCS_EXT_ARGB:
311
+ extxrgb_gray_convert_internal(cinfo, input_buf, output_buf, output_row,
312
+ num_rows);
313
+ break;
314
+ default:
315
+ rgb_gray_convert_internal(cinfo, input_buf, output_buf, output_row,
316
+ num_rows);
317
+ break;
318
+ }
319
+ }
320
+
321
+
322
+ /*
323
+ * Extended RGB to plain RGB conversion
324
+ */
325
+
326
+ METHODDEF(void)
327
+ rgb_rgb_convert(j_compress_ptr cinfo, JSAMPARRAY input_buf,
328
+ JSAMPIMAGE output_buf, JDIMENSION output_row, int num_rows)
329
+ {
330
+ switch (cinfo->in_color_space) {
331
+ case JCS_EXT_RGB:
332
+ extrgb_rgb_convert_internal(cinfo, input_buf, output_buf, output_row,
333
+ num_rows);
334
+ break;
335
+ case JCS_EXT_RGBX:
336
+ case JCS_EXT_RGBA:
337
+ extrgbx_rgb_convert_internal(cinfo, input_buf, output_buf, output_row,
338
+ num_rows);
339
+ break;
340
+ case JCS_EXT_BGR:
341
+ extbgr_rgb_convert_internal(cinfo, input_buf, output_buf, output_row,
342
+ num_rows);
343
+ break;
344
+ case JCS_EXT_BGRX:
345
+ case JCS_EXT_BGRA:
346
+ extbgrx_rgb_convert_internal(cinfo, input_buf, output_buf, output_row,
347
+ num_rows);
348
+ break;
349
+ case JCS_EXT_XBGR:
350
+ case JCS_EXT_ABGR:
351
+ extxbgr_rgb_convert_internal(cinfo, input_buf, output_buf, output_row,
352
+ num_rows);
353
+ break;
354
+ case JCS_EXT_XRGB:
355
+ case JCS_EXT_ARGB:
356
+ extxrgb_rgb_convert_internal(cinfo, input_buf, output_buf, output_row,
357
+ num_rows);
358
+ break;
359
+ default:
360
+ rgb_rgb_convert_internal(cinfo, input_buf, output_buf, output_row,
361
+ num_rows);
362
+ break;
363
+ }
364
+ }
365
+
366
+
367
+ /*
368
+ * Convert some rows of samples to the JPEG colorspace.
369
+ * This version handles Adobe-style CMYK->YCCK conversion,
370
+ * where we convert R=1-C, G=1-M, and B=1-Y to YCbCr using the same
371
+ * conversion as above, while passing K (black) unchanged.
372
+ * We assume rgb_ycc_start has been called.
373
+ */
374
+
375
+ METHODDEF(void)
376
+ cmyk_ycck_convert(j_compress_ptr cinfo, JSAMPARRAY input_buf,
377
+ JSAMPIMAGE output_buf, JDIMENSION output_row, int num_rows)
378
+ {
379
+ my_cconvert_ptr cconvert = (my_cconvert_ptr)cinfo->cconvert;
380
+ register int r, g, b;
381
+ register JLONG *ctab = cconvert->rgb_ycc_tab;
382
+ register JSAMPROW inptr;
383
+ register JSAMPROW outptr0, outptr1, outptr2, outptr3;
384
+ register JDIMENSION col;
385
+ JDIMENSION num_cols = cinfo->image_width;
386
+
387
+ while (--num_rows >= 0) {
388
+ inptr = *input_buf++;
389
+ outptr0 = output_buf[0][output_row];
390
+ outptr1 = output_buf[1][output_row];
391
+ outptr2 = output_buf[2][output_row];
392
+ outptr3 = output_buf[3][output_row];
393
+ output_row++;
394
+ for (col = 0; col < num_cols; col++) {
395
+ r = MAXJSAMPLE - GETJSAMPLE(inptr[0]);
396
+ g = MAXJSAMPLE - GETJSAMPLE(inptr[1]);
397
+ b = MAXJSAMPLE - GETJSAMPLE(inptr[2]);
398
+ /* K passes through as-is */
399
+ outptr3[col] = inptr[3]; /* don't need GETJSAMPLE here */
400
+ inptr += 4;
401
+ /* If the inputs are 0..MAXJSAMPLE, the outputs of these equations
402
+ * must be too; we do not need an explicit range-limiting operation.
403
+ * Hence the value being shifted is never negative, and we don't
404
+ * need the general RIGHT_SHIFT macro.
405
+ */
406
+ /* Y */
407
+ outptr0[col] = (JSAMPLE)((ctab[r + R_Y_OFF] + ctab[g + G_Y_OFF] +
408
+ ctab[b + B_Y_OFF]) >> SCALEBITS);
409
+ /* Cb */
410
+ outptr1[col] = (JSAMPLE)((ctab[r + R_CB_OFF] + ctab[g + G_CB_OFF] +
411
+ ctab[b + B_CB_OFF]) >> SCALEBITS);
412
+ /* Cr */
413
+ outptr2[col] = (JSAMPLE)((ctab[r + R_CR_OFF] + ctab[g + G_CR_OFF] +
414
+ ctab[b + B_CR_OFF]) >> SCALEBITS);
415
+ }
416
+ }
417
+ }
418
+
419
+
420
+ /*
421
+ * Convert some rows of samples to the JPEG colorspace.
422
+ * This version handles grayscale output with no conversion.
423
+ * The source can be either plain grayscale or YCbCr (since Y == gray).
424
+ */
425
+
426
+ METHODDEF(void)
427
+ grayscale_convert(j_compress_ptr cinfo, JSAMPARRAY input_buf,
428
+ JSAMPIMAGE output_buf, JDIMENSION output_row, int num_rows)
429
+ {
430
+ register JSAMPROW inptr;
431
+ register JSAMPROW outptr;
432
+ register JDIMENSION col;
433
+ JDIMENSION num_cols = cinfo->image_width;
434
+ int instride = cinfo->input_components;
435
+
436
+ while (--num_rows >= 0) {
437
+ inptr = *input_buf++;
438
+ outptr = output_buf[0][output_row];
439
+ output_row++;
440
+ for (col = 0; col < num_cols; col++) {
441
+ outptr[col] = inptr[0]; /* don't need GETJSAMPLE() here */
442
+ inptr += instride;
443
+ }
444
+ }
445
+ }
446
+
447
+
448
+ /*
449
+ * Convert some rows of samples to the JPEG colorspace.
450
+ * This version handles multi-component colorspaces without conversion.
451
+ * We assume input_components == num_components.
452
+ */
453
+
454
+ METHODDEF(void)
455
+ null_convert(j_compress_ptr cinfo, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
456
+ JDIMENSION output_row, int num_rows)
457
+ {
458
+ register JSAMPROW inptr;
459
+ register JSAMPROW outptr, outptr0, outptr1, outptr2, outptr3;
460
+ register JDIMENSION col;
461
+ register int ci;
462
+ int nc = cinfo->num_components;
463
+ JDIMENSION num_cols = cinfo->image_width;
464
+
465
+ if (nc == 3) {
466
+ while (--num_rows >= 0) {
467
+ inptr = *input_buf++;
468
+ outptr0 = output_buf[0][output_row];
469
+ outptr1 = output_buf[1][output_row];
470
+ outptr2 = output_buf[2][output_row];
471
+ output_row++;
472
+ for (col = 0; col < num_cols; col++) {
473
+ outptr0[col] = *inptr++;
474
+ outptr1[col] = *inptr++;
475
+ outptr2[col] = *inptr++;
476
+ }
477
+ }
478
+ } else if (nc == 4) {
479
+ while (--num_rows >= 0) {
480
+ inptr = *input_buf++;
481
+ outptr0 = output_buf[0][output_row];
482
+ outptr1 = output_buf[1][output_row];
483
+ outptr2 = output_buf[2][output_row];
484
+ outptr3 = output_buf[3][output_row];
485
+ output_row++;
486
+ for (col = 0; col < num_cols; col++) {
487
+ outptr0[col] = *inptr++;
488
+ outptr1[col] = *inptr++;
489
+ outptr2[col] = *inptr++;
490
+ outptr3[col] = *inptr++;
491
+ }
492
+ }
493
+ } else {
494
+ while (--num_rows >= 0) {
495
+ /* It seems fastest to make a separate pass for each component. */
496
+ for (ci = 0; ci < nc; ci++) {
497
+ inptr = *input_buf;
498
+ outptr = output_buf[ci][output_row];
499
+ for (col = 0; col < num_cols; col++) {
500
+ outptr[col] = inptr[ci]; /* don't need GETJSAMPLE() here */
501
+ inptr += nc;
502
+ }
503
+ }
504
+ input_buf++;
505
+ output_row++;
506
+ }
507
+ }
508
+ }
509
+
510
+
511
+ /*
512
+ * Empty method for start_pass.
513
+ */
514
+
515
+ METHODDEF(void)
516
+ null_method(j_compress_ptr cinfo)
517
+ {
518
+ /* no work needed */
519
+ }
520
+
521
+
522
+ /*
523
+ * Module initialization routine for input colorspace conversion.
524
+ */
525
+
526
+ GLOBAL(void)
527
+ jinit_color_converter(j_compress_ptr cinfo)
528
+ {
529
+ my_cconvert_ptr cconvert;
530
+
531
+ cconvert = (my_cconvert_ptr)
532
+ (*cinfo->mem->alloc_small) ((j_common_ptr)cinfo, JPOOL_IMAGE,
533
+ sizeof(my_color_converter));
534
+ cinfo->cconvert = (struct jpeg_color_converter *)cconvert;
535
+ /* set start_pass to null method until we find out differently */
536
+ cconvert->pub.start_pass = null_method;
537
+
538
+ /* Make sure input_components agrees with in_color_space */
539
+ switch (cinfo->in_color_space) {
540
+ case JCS_GRAYSCALE:
541
+ if (cinfo->input_components != 1)
542
+ ERREXIT(cinfo, JERR_BAD_IN_COLORSPACE);
543
+ break;
544
+
545
+ case JCS_RGB:
546
+ case JCS_EXT_RGB:
547
+ case JCS_EXT_RGBX:
548
+ case JCS_EXT_BGR:
549
+ case JCS_EXT_BGRX:
550
+ case JCS_EXT_XBGR:
551
+ case JCS_EXT_XRGB:
552
+ case JCS_EXT_RGBA:
553
+ case JCS_EXT_BGRA:
554
+ case JCS_EXT_ABGR:
555
+ case JCS_EXT_ARGB:
556
+ if (cinfo->input_components != rgb_pixelsize[cinfo->in_color_space])
557
+ ERREXIT(cinfo, JERR_BAD_IN_COLORSPACE);
558
+ break;
559
+
560
+ case JCS_YCbCr:
561
+ if (cinfo->input_components != 3)
562
+ ERREXIT(cinfo, JERR_BAD_IN_COLORSPACE);
563
+ break;
564
+
565
+ case JCS_CMYK:
566
+ case JCS_YCCK:
567
+ if (cinfo->input_components != 4)
568
+ ERREXIT(cinfo, JERR_BAD_IN_COLORSPACE);
569
+ break;
570
+
571
+ default: /* JCS_UNKNOWN can be anything */
572
+ if (cinfo->input_components < 1)
573
+ ERREXIT(cinfo, JERR_BAD_IN_COLORSPACE);
574
+ break;
575
+ }
576
+
577
+ /* Check num_components, set conversion method based on requested space */
578
+ switch (cinfo->jpeg_color_space) {
579
+ case JCS_GRAYSCALE:
580
+ if (cinfo->num_components != 1)
581
+ ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
582
+ if (cinfo->in_color_space == JCS_GRAYSCALE)
583
+ cconvert->pub.color_convert = grayscale_convert;
584
+ else if (cinfo->in_color_space == JCS_RGB ||
585
+ cinfo->in_color_space == JCS_EXT_RGB ||
586
+ cinfo->in_color_space == JCS_EXT_RGBX ||
587
+ cinfo->in_color_space == JCS_EXT_BGR ||
588
+ cinfo->in_color_space == JCS_EXT_BGRX ||
589
+ cinfo->in_color_space == JCS_EXT_XBGR ||
590
+ cinfo->in_color_space == JCS_EXT_XRGB ||
591
+ cinfo->in_color_space == JCS_EXT_RGBA ||
592
+ cinfo->in_color_space == JCS_EXT_BGRA ||
593
+ cinfo->in_color_space == JCS_EXT_ABGR ||
594
+ cinfo->in_color_space == JCS_EXT_ARGB) {
595
+ if (jsimd_can_rgb_gray())
596
+ cconvert->pub.color_convert = jsimd_rgb_gray_convert;
597
+ else {
598
+ cconvert->pub.start_pass = rgb_ycc_start;
599
+ cconvert->pub.color_convert = rgb_gray_convert;
600
+ }
601
+ } else if (cinfo->in_color_space == JCS_YCbCr)
602
+ cconvert->pub.color_convert = grayscale_convert;
603
+ else
604
+ ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
605
+ break;
606
+
607
+ case JCS_RGB:
608
+ if (cinfo->num_components != 3)
609
+ ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
610
+ if (rgb_red[cinfo->in_color_space] == 0 &&
611
+ rgb_green[cinfo->in_color_space] == 1 &&
612
+ rgb_blue[cinfo->in_color_space] == 2 &&
613
+ rgb_pixelsize[cinfo->in_color_space] == 3) {
614
+ #if defined(__mips__)
615
+ if (jsimd_c_can_null_convert())
616
+ cconvert->pub.color_convert = jsimd_c_null_convert;
617
+ else
618
+ #endif
619
+ cconvert->pub.color_convert = null_convert;
620
+ } else if (cinfo->in_color_space == JCS_RGB ||
621
+ cinfo->in_color_space == JCS_EXT_RGB ||
622
+ cinfo->in_color_space == JCS_EXT_RGBX ||
623
+ cinfo->in_color_space == JCS_EXT_BGR ||
624
+ cinfo->in_color_space == JCS_EXT_BGRX ||
625
+ cinfo->in_color_space == JCS_EXT_XBGR ||
626
+ cinfo->in_color_space == JCS_EXT_XRGB ||
627
+ cinfo->in_color_space == JCS_EXT_RGBA ||
628
+ cinfo->in_color_space == JCS_EXT_BGRA ||
629
+ cinfo->in_color_space == JCS_EXT_ABGR ||
630
+ cinfo->in_color_space == JCS_EXT_ARGB)
631
+ cconvert->pub.color_convert = rgb_rgb_convert;
632
+ else
633
+ ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
634
+ break;
635
+
636
+ case JCS_YCbCr:
637
+ if (cinfo->num_components != 3)
638
+ ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
639
+ if (cinfo->in_color_space == JCS_RGB ||
640
+ cinfo->in_color_space == JCS_EXT_RGB ||
641
+ cinfo->in_color_space == JCS_EXT_RGBX ||
642
+ cinfo->in_color_space == JCS_EXT_BGR ||
643
+ cinfo->in_color_space == JCS_EXT_BGRX ||
644
+ cinfo->in_color_space == JCS_EXT_XBGR ||
645
+ cinfo->in_color_space == JCS_EXT_XRGB ||
646
+ cinfo->in_color_space == JCS_EXT_RGBA ||
647
+ cinfo->in_color_space == JCS_EXT_BGRA ||
648
+ cinfo->in_color_space == JCS_EXT_ABGR ||
649
+ cinfo->in_color_space == JCS_EXT_ARGB) {
650
+ if (jsimd_can_rgb_ycc())
651
+ cconvert->pub.color_convert = jsimd_rgb_ycc_convert;
652
+ else {
653
+ cconvert->pub.start_pass = rgb_ycc_start;
654
+ cconvert->pub.color_convert = rgb_ycc_convert;
655
+ }
656
+ } else if (cinfo->in_color_space == JCS_YCbCr) {
657
+ #if defined(__mips__)
658
+ if (jsimd_c_can_null_convert())
659
+ cconvert->pub.color_convert = jsimd_c_null_convert;
660
+ else
661
+ #endif
662
+ cconvert->pub.color_convert = null_convert;
663
+ } else
664
+ ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
665
+ break;
666
+
667
+ case JCS_CMYK:
668
+ if (cinfo->num_components != 4)
669
+ ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
670
+ if (cinfo->in_color_space == JCS_CMYK) {
671
+ #if defined(__mips__)
672
+ if (jsimd_c_can_null_convert())
673
+ cconvert->pub.color_convert = jsimd_c_null_convert;
674
+ else
675
+ #endif
676
+ cconvert->pub.color_convert = null_convert;
677
+ } else
678
+ ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
679
+ break;
680
+
681
+ case JCS_YCCK:
682
+ if (cinfo->num_components != 4)
683
+ ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
684
+ if (cinfo->in_color_space == JCS_CMYK) {
685
+ cconvert->pub.start_pass = rgb_ycc_start;
686
+ cconvert->pub.color_convert = cmyk_ycck_convert;
687
+ } else if (cinfo->in_color_space == JCS_YCCK) {
688
+ #if defined(__mips__)
689
+ if (jsimd_c_can_null_convert())
690
+ cconvert->pub.color_convert = jsimd_c_null_convert;
691
+ else
692
+ #endif
693
+ cconvert->pub.color_convert = null_convert;
694
+ } else
695
+ ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
696
+ break;
697
+
698
+ default: /* allow null conversion of JCS_UNKNOWN */
699
+ if (cinfo->jpeg_color_space != cinfo->in_color_space ||
700
+ cinfo->num_components != cinfo->input_components)
701
+ ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
702
+ #if defined(__mips__)
703
+ if (jsimd_c_can_null_convert())
704
+ cconvert->pub.color_convert = jsimd_c_null_convert;
705
+ else
706
+ #endif
707
+ cconvert->pub.color_convert = null_convert;
708
+ break;
709
+ }
710
+ }