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,445 @@
1
+ /*
2
+ * Copyright (C)2014, 2017 D. R. Commander. All Rights Reserved.
3
+ * Copyright (C)2015 Viktor Szathmáry. All Rights Reserved.
4
+ *
5
+ * Redistribution and use in source and binary forms, with or without
6
+ * modification, are permitted provided that the following conditions are met:
7
+ *
8
+ * - Redistributions of source code must retain the above copyright notice,
9
+ * this list of conditions and the following disclaimer.
10
+ * - Redistributions in binary form must reproduce the above copyright notice,
11
+ * this list of conditions and the following disclaimer in the documentation
12
+ * and/or other materials provided with the distribution.
13
+ * - Neither the name of the libjpeg-turbo Project nor the names of its
14
+ * contributors may be used to endorse or promote products derived from this
15
+ * software without specific prior written permission.
16
+ *
17
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS",
18
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
21
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27
+ * POSSIBILITY OF SUCH DAMAGE.
28
+ */
29
+
30
+ package org.libjpegturbo.turbojpeg;
31
+
32
+ /**
33
+ * This class encapsulates a YUV planar image and the metadata
34
+ * associated with it. The TurboJPEG API allows both the JPEG compression and
35
+ * decompression pipelines to be split into stages: YUV encode, compress from
36
+ * YUV, decompress to YUV, and YUV decode. A <code>YUVImage</code> instance
37
+ * serves as the destination image for YUV encode and decompress-to-YUV
38
+ * operations and as the source image for compress-from-YUV and YUV decode
39
+ * operations.
40
+ * <p>
41
+ * Technically, the JPEG format uses the YCbCr colorspace (which technically is
42
+ * not a "colorspace" but rather a "color transform"), but per the convention
43
+ * of the digital video community, the TurboJPEG API uses "YUV" to refer to an
44
+ * image format consisting of Y, Cb, and Cr image planes.
45
+ * <p>
46
+ * Each plane is simply a 2D array of bytes, each byte representing the value
47
+ * of one of the components (Y, Cb, or Cr) at a particular location in the
48
+ * image. The width and height of each plane are determined by the image
49
+ * width, height, and level of chrominance subsampling. The luminance plane
50
+ * width is the image width padded to the nearest multiple of the horizontal
51
+ * subsampling factor (2 in the case of 4:2:0 and 4:2:2, 4 in the case of
52
+ * 4:1:1, 1 in the case of 4:4:4 or grayscale.) Similarly, the luminance plane
53
+ * height is the image height padded to the nearest multiple of the vertical
54
+ * subsampling factor (2 in the case of 4:2:0 or 4:4:0, 1 in the case of 4:4:4
55
+ * or grayscale.) The chrominance plane width is equal to the luminance plane
56
+ * width divided by the horizontal subsampling factor, and the chrominance
57
+ * plane height is equal to the luminance plane height divided by the vertical
58
+ * subsampling factor.
59
+ * <p>
60
+ * For example, if the source image is 35 x 35 pixels and 4:2:2 subsampling is
61
+ * used, then the luminance plane would be 36 x 35 bytes, and each of the
62
+ * chrominance planes would be 18 x 35 bytes. If you specify a line padding of
63
+ * 4 bytes on top of this, then the luminance plane would be 36 x 35 bytes, and
64
+ * each of the chrominance planes would be 20 x 35 bytes.
65
+ */
66
+ public class YUVImage {
67
+
68
+ private static final String NO_ASSOC_ERROR =
69
+ "No image data is associated with this instance";
70
+
71
+ /**
72
+ * Create a new <code>YUVImage</code> instance backed by separate image
73
+ * planes, and allocate memory for the image planes.
74
+ *
75
+ * @param width width (in pixels) of the YUV image
76
+ *
77
+ * @param strides an array of integers, each specifying the number of bytes
78
+ * per line in the corresponding plane of the YUV image. Setting the stride
79
+ * for any plane to 0 is the same as setting it to the plane width (see
80
+ * {@link YUVImage above}.) If <code>strides</code> is null, then the
81
+ * strides for all planes will be set to their respective plane widths. When
82
+ * using this constructor, the stride for each plane must be equal to or
83
+ * greater than the plane width.
84
+ *
85
+ * @param height height (in pixels) of the YUV image
86
+ *
87
+ * @param subsamp the level of chrominance subsampling to be used in the YUV
88
+ * image (one of {@link TJ#SAMP_444 TJ.SAMP_*})
89
+ */
90
+ public YUVImage(int width, int[] strides, int height, int subsamp) {
91
+ setBuf(null, null, width, strides, height, subsamp, true);
92
+ }
93
+
94
+ /**
95
+ * Create a new <code>YUVImage</code> instance backed by a unified image
96
+ * buffer, and allocate memory for the image buffer.
97
+ *
98
+ * @param width width (in pixels) of the YUV image
99
+ *
100
+ * @param pad Each line of each plane in the YUV image buffer will be padded
101
+ * to this number of bytes (must be a power of 2.)
102
+ *
103
+ * @param height height (in pixels) of the YUV image
104
+ *
105
+ * @param subsamp the level of chrominance subsampling to be used in the YUV
106
+ * image (one of {@link TJ#SAMP_444 TJ.SAMP_*})
107
+ */
108
+ public YUVImage(int width, int pad, int height, int subsamp) {
109
+ setBuf(new byte[TJ.bufSizeYUV(width, pad, height, subsamp)], width, pad,
110
+ height, subsamp);
111
+ }
112
+
113
+ /**
114
+ * Create a new <code>YUVImage</code> instance from a set of existing image
115
+ * planes.
116
+ *
117
+ * @param planes an array of buffers representing the Y, U (Cb), and V (Cr)
118
+ * image planes (or just the Y plane, if the image is grayscale.) These
119
+ * planes can be contiguous or non-contiguous in memory. Plane
120
+ * <code>i</code> should be at least <code>offsets[i] +
121
+ * {@link TJ#planeSizeYUV TJ.planeSizeYUV}(i, width, strides[i], height, subsamp)</code>
122
+ * bytes in size.
123
+ *
124
+ * @param offsets If this <code>YUVImage</code> instance represents a
125
+ * subregion of a larger image, then <code>offsets[i]</code> specifies the
126
+ * offset (in bytes) of the subregion within plane <code>i</code> of the
127
+ * larger image. Setting this to null is the same as setting the offsets for
128
+ * all planes to 0.
129
+ *
130
+ * @param width width (in pixels) of the new YUV image (or subregion)
131
+ *
132
+ * @param strides an array of integers, each specifying the number of bytes
133
+ * per line in the corresponding plane of the YUV image. Setting the stride
134
+ * for any plane to 0 is the same as setting it to the plane width (see
135
+ * {@link YUVImage above}.) If <code>strides</code> is null, then the
136
+ * strides for all planes will be set to their respective plane widths. You
137
+ * can adjust the strides in order to add an arbitrary amount of line padding
138
+ * to each plane or to specify that this <code>YUVImage</code> instance is a
139
+ * subregion of a larger image (in which case, <code>strides[i]</code> should
140
+ * be set to the plane width of plane <code>i</code> in the larger image.)
141
+ *
142
+ * @param height height (in pixels) of the new YUV image (or subregion)
143
+ *
144
+ * @param subsamp the level of chrominance subsampling used in the YUV
145
+ * image (one of {@link TJ#SAMP_444 TJ.SAMP_*})
146
+ */
147
+ public YUVImage(byte[][] planes, int[] offsets, int width, int[] strides,
148
+ int height, int subsamp) {
149
+ setBuf(planes, offsets, width, strides, height, subsamp, false);
150
+ }
151
+
152
+ /**
153
+ * Create a new <code>YUVImage</code> instance from an existing unified image
154
+ * buffer.
155
+ *
156
+ * @param yuvImage image buffer that contains or will contain YUV planar
157
+ * image data. Use {@link TJ#bufSizeYUV} to determine the minimum size for
158
+ * this buffer. The Y, U (Cb), and V (Cr) image planes are stored
159
+ * sequentially in the buffer (see {@link YUVImage above} for a description
160
+ * of the image format.)
161
+ *
162
+ * @param width width (in pixels) of the YUV image
163
+ *
164
+ * @param pad the line padding used in the YUV image buffer. For
165
+ * instance, if each line in each plane of the buffer is padded to the
166
+ * nearest multiple of 4 bytes, then <code>pad</code> should be set to 4.
167
+ *
168
+ * @param height height (in pixels) of the YUV image
169
+ *
170
+ * @param subsamp the level of chrominance subsampling used in the YUV
171
+ * image (one of {@link TJ#SAMP_444 TJ.SAMP_*})
172
+ */
173
+ public YUVImage(byte[] yuvImage, int width, int pad, int height,
174
+ int subsamp) {
175
+ setBuf(yuvImage, width, pad, height, subsamp);
176
+ }
177
+
178
+ /**
179
+ * Assign a set of image planes to this <code>YUVImage</code> instance.
180
+ *
181
+ * @param planes an array of buffers representing the Y, U (Cb), and V (Cr)
182
+ * image planes (or just the Y plane, if the image is grayscale.) These
183
+ * planes can be contiguous or non-contiguous in memory. Plane
184
+ * <code>i</code> should be at least <code>offsets[i] +
185
+ * {@link TJ#planeSizeYUV TJ.planeSizeYUV}(i, width, strides[i], height, subsamp)</code>
186
+ * bytes in size.
187
+ *
188
+ * @param offsets If this <code>YUVImage</code> instance represents a
189
+ * subregion of a larger image, then <code>offsets[i]</code> specifies the
190
+ * offset (in bytes) of the subregion within plane <code>i</code> of the
191
+ * larger image. Setting this to null is the same as setting the offsets for
192
+ * all planes to 0.
193
+ *
194
+ * @param width width (in pixels) of the YUV image (or subregion)
195
+ *
196
+ * @param strides an array of integers, each specifying the number of bytes
197
+ * per line in the corresponding plane of the YUV image. Setting the stride
198
+ * for any plane to 0 is the same as setting it to the plane width (see
199
+ * {@link YUVImage above}.) If <code>strides</code> is null, then the
200
+ * strides for all planes will be set to their respective plane widths. You
201
+ * can adjust the strides in order to add an arbitrary amount of line padding
202
+ * to each plane or to specify that this <code>YUVImage</code> image is a
203
+ * subregion of a larger image (in which case, <code>strides[i]</code> should
204
+ * be set to the plane width of plane <code>i</code> in the larger image.)
205
+ *
206
+ * @param height height (in pixels) of the YUV image (or subregion)
207
+ *
208
+ * @param subsamp the level of chrominance subsampling used in the YUV
209
+ * image (one of {@link TJ#SAMP_444 TJ.SAMP_*})
210
+ */
211
+ public void setBuf(byte[][] planes, int[] offsets, int width, int[] strides,
212
+ int height, int subsamp) {
213
+ setBuf(planes, offsets, width, strides, height, subsamp, false);
214
+ }
215
+
216
+ private void setBuf(byte[][] planes, int[] offsets, int width, int[] strides,
217
+ int height, int subsamp, boolean alloc) {
218
+ if ((planes == null && !alloc) || width < 1 || height < 1 || subsamp < 0 ||
219
+ subsamp >= TJ.NUMSAMP)
220
+ throw new IllegalArgumentException("Invalid argument in YUVImage::setBuf()");
221
+
222
+ int nc = (subsamp == TJ.SAMP_GRAY ? 1 : 3);
223
+ if ((planes != null && planes.length != nc) ||
224
+ (offsets != null && offsets.length != nc) ||
225
+ (strides != null && strides.length != nc))
226
+ throw new IllegalArgumentException("YUVImage::setBuf(): planes, offsets, or strides array is the wrong size");
227
+
228
+ if (planes == null)
229
+ planes = new byte[nc][];
230
+ if (offsets == null)
231
+ offsets = new int[nc];
232
+ if (strides == null)
233
+ strides = new int[nc];
234
+
235
+ for (int i = 0; i < nc; i++) {
236
+ int pw = TJ.planeWidth(i, width, subsamp);
237
+ int ph = TJ.planeHeight(i, height, subsamp);
238
+ int planeSize = TJ.planeSizeYUV(i, width, strides[i], height, subsamp);
239
+
240
+ if (strides[i] == 0)
241
+ strides[i] = pw;
242
+ if (alloc) {
243
+ if (strides[i] < pw)
244
+ throw new IllegalArgumentException("Stride must be >= plane width when allocating a new YUV image");
245
+ planes[i] = new byte[strides[i] * ph];
246
+ }
247
+ if (planes[i] == null || offsets[i] < 0)
248
+ throw new IllegalArgumentException("Invalid argument in YUVImage::setBuf()");
249
+ if (strides[i] < 0 && offsets[i] - planeSize + pw < 0)
250
+ throw new IllegalArgumentException("Stride for plane " + i +
251
+ " would cause memory to be accessed below plane boundary");
252
+ if (planes[i].length < offsets[i] + planeSize)
253
+ throw new IllegalArgumentException("Image plane " + i +
254
+ " is not large enough");
255
+ }
256
+
257
+ yuvPlanes = planes;
258
+ yuvOffsets = offsets;
259
+ yuvWidth = width;
260
+ yuvStrides = strides;
261
+ yuvHeight = height;
262
+ yuvSubsamp = subsamp;
263
+ }
264
+
265
+ /**
266
+ * Assign a unified image buffer to this <code>YUVImage</code> instance.
267
+ *
268
+ * @param yuvImage image buffer that contains or will contain YUV planar
269
+ * image data. Use {@link TJ#bufSizeYUV} to determine the minimum size for
270
+ * this buffer. The Y, U (Cb), and V (Cr) image planes are stored
271
+ * sequentially in the buffer (see {@link YUVImage above} for a description
272
+ * of the image format.)
273
+ *
274
+ * @param width width (in pixels) of the YUV image
275
+ *
276
+ * @param pad the line padding used in the YUV image buffer. For
277
+ * instance, if each line in each plane of the buffer is padded to the
278
+ * nearest multiple of 4 bytes, then <code>pad</code> should be set to 4.
279
+ *
280
+ * @param height height (in pixels) of the YUV image
281
+ *
282
+ * @param subsamp the level of chrominance subsampling used in the YUV
283
+ * image (one of {@link TJ#SAMP_444 TJ.SAMP_*})
284
+ */
285
+ public void setBuf(byte[] yuvImage, int width, int pad, int height,
286
+ int subsamp) {
287
+ if (yuvImage == null || width < 1 || pad < 1 || ((pad & (pad - 1)) != 0) ||
288
+ height < 1 || subsamp < 0 || subsamp >= TJ.NUMSAMP)
289
+ throw new IllegalArgumentException("Invalid argument in YUVImage::setBuf()");
290
+ if (yuvImage.length < TJ.bufSizeYUV(width, pad, height, subsamp))
291
+ throw new IllegalArgumentException("YUV image buffer is not large enough");
292
+
293
+ int nc = (subsamp == TJ.SAMP_GRAY ? 1 : 3);
294
+ byte[][] planes = new byte[nc][];
295
+ int[] strides = new int[nc];
296
+ int[] offsets = new int[nc];
297
+
298
+ planes[0] = yuvImage;
299
+ strides[0] = pad(TJ.planeWidth(0, width, subsamp), pad);
300
+ if (subsamp != TJ.SAMP_GRAY) {
301
+ strides[1] = strides[2] = pad(TJ.planeWidth(1, width, subsamp), pad);
302
+ planes[1] = planes[2] = yuvImage;
303
+ offsets[1] = offsets[0] +
304
+ strides[0] * TJ.planeHeight(0, height, subsamp);
305
+ offsets[2] = offsets[1] +
306
+ strides[1] * TJ.planeHeight(1, height, subsamp);
307
+ }
308
+
309
+ yuvPad = pad;
310
+ setBuf(planes, offsets, width, strides, height, subsamp);
311
+ }
312
+
313
+ /**
314
+ * Returns the width of the YUV image (or subregion.)
315
+ *
316
+ * @return the width of the YUV image (or subregion)
317
+ */
318
+ public int getWidth() {
319
+ if (yuvWidth < 1)
320
+ throw new IllegalStateException(NO_ASSOC_ERROR);
321
+ return yuvWidth;
322
+ }
323
+
324
+ /**
325
+ * Returns the height of the YUV image (or subregion.)
326
+ *
327
+ * @return the height of the YUV image (or subregion)
328
+ */
329
+ public int getHeight() {
330
+ if (yuvHeight < 1)
331
+ throw new IllegalStateException(NO_ASSOC_ERROR);
332
+ return yuvHeight;
333
+ }
334
+
335
+ /**
336
+ * Returns the line padding used in the YUV image buffer (if this image is
337
+ * stored in a unified buffer rather than separate image planes.)
338
+ *
339
+ * @return the line padding used in the YUV image buffer
340
+ */
341
+ public int getPad() {
342
+ if (yuvPlanes == null)
343
+ throw new IllegalStateException(NO_ASSOC_ERROR);
344
+ if (yuvPad < 1 || ((yuvPad & (yuvPad - 1)) != 0))
345
+ throw new IllegalStateException("Image is not stored in a unified buffer");
346
+ return yuvPad;
347
+ }
348
+
349
+ /**
350
+ * Returns the number of bytes per line of each plane in the YUV image.
351
+ *
352
+ * @return the number of bytes per line of each plane in the YUV image
353
+ */
354
+ public int[] getStrides() {
355
+ if (yuvStrides == null)
356
+ throw new IllegalStateException(NO_ASSOC_ERROR);
357
+ return yuvStrides;
358
+ }
359
+
360
+ /**
361
+ * Returns the offsets (in bytes) of each plane within the planes of a larger
362
+ * YUV image.
363
+ *
364
+ * @return the offsets (in bytes) of each plane within the planes of a larger
365
+ * YUV image
366
+ */
367
+ public int[] getOffsets() {
368
+ if (yuvOffsets == null)
369
+ throw new IllegalStateException(NO_ASSOC_ERROR);
370
+ return yuvOffsets;
371
+ }
372
+
373
+ /**
374
+ * Returns the level of chrominance subsampling used in the YUV image. See
375
+ * {@link TJ#SAMP_444 TJ.SAMP_*}.
376
+ *
377
+ * @return the level of chrominance subsampling used in the YUV image
378
+ */
379
+ public int getSubsamp() {
380
+ if (yuvSubsamp < 0 || yuvSubsamp >= TJ.NUMSAMP)
381
+ throw new IllegalStateException(NO_ASSOC_ERROR);
382
+ return yuvSubsamp;
383
+ }
384
+
385
+ /**
386
+ * Returns the YUV image planes. If the image is stored in a unified buffer,
387
+ * then all image planes will point to that buffer.
388
+ *
389
+ * @return the YUV image planes
390
+ */
391
+ public byte[][] getPlanes() {
392
+ if (yuvPlanes == null)
393
+ throw new IllegalStateException(NO_ASSOC_ERROR);
394
+ return yuvPlanes;
395
+ }
396
+
397
+ /**
398
+ * Returns the YUV image buffer (if this image is stored in a unified
399
+ * buffer rather than separate image planes.)
400
+ *
401
+ * @return the YUV image buffer
402
+ */
403
+ public byte[] getBuf() {
404
+ if (yuvPlanes == null || yuvSubsamp < 0 || yuvSubsamp >= TJ.NUMSAMP)
405
+ throw new IllegalStateException(NO_ASSOC_ERROR);
406
+ int nc = (yuvSubsamp == TJ.SAMP_GRAY ? 1 : 3);
407
+ for (int i = 1; i < nc; i++) {
408
+ if (yuvPlanes[i] != yuvPlanes[0])
409
+ throw new IllegalStateException("Image is not stored in a unified buffer");
410
+ }
411
+ return yuvPlanes[0];
412
+ }
413
+
414
+ /**
415
+ * Returns the size (in bytes) of the YUV image buffer (if this image is
416
+ * stored in a unified buffer rather than separate image planes.)
417
+ *
418
+ * @return the size (in bytes) of the YUV image buffer
419
+ */
420
+ public int getSize() {
421
+ if (yuvPlanes == null || yuvSubsamp < 0 || yuvSubsamp >= TJ.NUMSAMP)
422
+ throw new IllegalStateException(NO_ASSOC_ERROR);
423
+ int nc = (yuvSubsamp == TJ.SAMP_GRAY ? 1 : 3);
424
+ if (yuvPad < 1)
425
+ throw new IllegalStateException("Image is not stored in a unified buffer");
426
+ for (int i = 1; i < nc; i++) {
427
+ if (yuvPlanes[i] != yuvPlanes[0])
428
+ throw new IllegalStateException("Image is not stored in a unified buffer");
429
+ }
430
+ return TJ.bufSizeYUV(yuvWidth, yuvPad, yuvHeight, yuvSubsamp);
431
+ }
432
+
433
+ private static int pad(int v, int p) {
434
+ return (v + p - 1) & (~(p - 1));
435
+ }
436
+
437
+ protected long handle = 0;
438
+ protected byte[][] yuvPlanes = null;
439
+ protected int[] yuvOffsets = null;
440
+ protected int[] yuvStrides = null;
441
+ protected int yuvPad = 0;
442
+ protected int yuvWidth = 0;
443
+ protected int yuvHeight = 0;
444
+ protected int yuvSubsamp = -1;
445
+ }
@@ -0,0 +1,129 @@
1
+ /* DO NOT EDIT THIS FILE - it is machine generated */
2
+ #include <jni.h>
3
+ /* Header for class org_libjpegturbo_turbojpeg_TJ */
4
+
5
+ #ifndef _Included_org_libjpegturbo_turbojpeg_TJ
6
+ #define _Included_org_libjpegturbo_turbojpeg_TJ
7
+ #ifdef __cplusplus
8
+ extern "C" {
9
+ #endif
10
+ #undef org_libjpegturbo_turbojpeg_TJ_NUMSAMP
11
+ #define org_libjpegturbo_turbojpeg_TJ_NUMSAMP 6L
12
+ #undef org_libjpegturbo_turbojpeg_TJ_SAMP_444
13
+ #define org_libjpegturbo_turbojpeg_TJ_SAMP_444 0L
14
+ #undef org_libjpegturbo_turbojpeg_TJ_SAMP_422
15
+ #define org_libjpegturbo_turbojpeg_TJ_SAMP_422 1L
16
+ #undef org_libjpegturbo_turbojpeg_TJ_SAMP_420
17
+ #define org_libjpegturbo_turbojpeg_TJ_SAMP_420 2L
18
+ #undef org_libjpegturbo_turbojpeg_TJ_SAMP_GRAY
19
+ #define org_libjpegturbo_turbojpeg_TJ_SAMP_GRAY 3L
20
+ #undef org_libjpegturbo_turbojpeg_TJ_SAMP_440
21
+ #define org_libjpegturbo_turbojpeg_TJ_SAMP_440 4L
22
+ #undef org_libjpegturbo_turbojpeg_TJ_SAMP_411
23
+ #define org_libjpegturbo_turbojpeg_TJ_SAMP_411 5L
24
+ #undef org_libjpegturbo_turbojpeg_TJ_NUMPF
25
+ #define org_libjpegturbo_turbojpeg_TJ_NUMPF 12L
26
+ #undef org_libjpegturbo_turbojpeg_TJ_PF_RGB
27
+ #define org_libjpegturbo_turbojpeg_TJ_PF_RGB 0L
28
+ #undef org_libjpegturbo_turbojpeg_TJ_PF_BGR
29
+ #define org_libjpegturbo_turbojpeg_TJ_PF_BGR 1L
30
+ #undef org_libjpegturbo_turbojpeg_TJ_PF_RGBX
31
+ #define org_libjpegturbo_turbojpeg_TJ_PF_RGBX 2L
32
+ #undef org_libjpegturbo_turbojpeg_TJ_PF_BGRX
33
+ #define org_libjpegturbo_turbojpeg_TJ_PF_BGRX 3L
34
+ #undef org_libjpegturbo_turbojpeg_TJ_PF_XBGR
35
+ #define org_libjpegturbo_turbojpeg_TJ_PF_XBGR 4L
36
+ #undef org_libjpegturbo_turbojpeg_TJ_PF_XRGB
37
+ #define org_libjpegturbo_turbojpeg_TJ_PF_XRGB 5L
38
+ #undef org_libjpegturbo_turbojpeg_TJ_PF_GRAY
39
+ #define org_libjpegturbo_turbojpeg_TJ_PF_GRAY 6L
40
+ #undef org_libjpegturbo_turbojpeg_TJ_PF_RGBA
41
+ #define org_libjpegturbo_turbojpeg_TJ_PF_RGBA 7L
42
+ #undef org_libjpegturbo_turbojpeg_TJ_PF_BGRA
43
+ #define org_libjpegturbo_turbojpeg_TJ_PF_BGRA 8L
44
+ #undef org_libjpegturbo_turbojpeg_TJ_PF_ABGR
45
+ #define org_libjpegturbo_turbojpeg_TJ_PF_ABGR 9L
46
+ #undef org_libjpegturbo_turbojpeg_TJ_PF_ARGB
47
+ #define org_libjpegturbo_turbojpeg_TJ_PF_ARGB 10L
48
+ #undef org_libjpegturbo_turbojpeg_TJ_PF_CMYK
49
+ #define org_libjpegturbo_turbojpeg_TJ_PF_CMYK 11L
50
+ #undef org_libjpegturbo_turbojpeg_TJ_NUMCS
51
+ #define org_libjpegturbo_turbojpeg_TJ_NUMCS 5L
52
+ #undef org_libjpegturbo_turbojpeg_TJ_CS_RGB
53
+ #define org_libjpegturbo_turbojpeg_TJ_CS_RGB 0L
54
+ #undef org_libjpegturbo_turbojpeg_TJ_CS_YCbCr
55
+ #define org_libjpegturbo_turbojpeg_TJ_CS_YCbCr 1L
56
+ #undef org_libjpegturbo_turbojpeg_TJ_CS_GRAY
57
+ #define org_libjpegturbo_turbojpeg_TJ_CS_GRAY 2L
58
+ #undef org_libjpegturbo_turbojpeg_TJ_CS_CMYK
59
+ #define org_libjpegturbo_turbojpeg_TJ_CS_CMYK 3L
60
+ #undef org_libjpegturbo_turbojpeg_TJ_CS_YCCK
61
+ #define org_libjpegturbo_turbojpeg_TJ_CS_YCCK 4L
62
+ #undef org_libjpegturbo_turbojpeg_TJ_FLAG_BOTTOMUP
63
+ #define org_libjpegturbo_turbojpeg_TJ_FLAG_BOTTOMUP 2L
64
+ #undef org_libjpegturbo_turbojpeg_TJ_FLAG_FASTUPSAMPLE
65
+ #define org_libjpegturbo_turbojpeg_TJ_FLAG_FASTUPSAMPLE 256L
66
+ #undef org_libjpegturbo_turbojpeg_TJ_FLAG_FASTDCT
67
+ #define org_libjpegturbo_turbojpeg_TJ_FLAG_FASTDCT 2048L
68
+ #undef org_libjpegturbo_turbojpeg_TJ_FLAG_ACCURATEDCT
69
+ #define org_libjpegturbo_turbojpeg_TJ_FLAG_ACCURATEDCT 4096L
70
+ /*
71
+ * Class: org_libjpegturbo_turbojpeg_TJ
72
+ * Method: bufSize
73
+ * Signature: (III)I
74
+ */
75
+ JNIEXPORT jint JNICALL Java_org_libjpegturbo_turbojpeg_TJ_bufSize
76
+ (JNIEnv *, jclass, jint, jint, jint);
77
+
78
+ /*
79
+ * Class: org_libjpegturbo_turbojpeg_TJ
80
+ * Method: bufSizeYUV
81
+ * Signature: (IIII)I
82
+ */
83
+ JNIEXPORT jint JNICALL Java_org_libjpegturbo_turbojpeg_TJ_bufSizeYUV__IIII
84
+ (JNIEnv *, jclass, jint, jint, jint, jint);
85
+
86
+ /*
87
+ * Class: org_libjpegturbo_turbojpeg_TJ
88
+ * Method: bufSizeYUV
89
+ * Signature: (III)I
90
+ */
91
+ JNIEXPORT jint JNICALL Java_org_libjpegturbo_turbojpeg_TJ_bufSizeYUV__III
92
+ (JNIEnv *, jclass, jint, jint, jint);
93
+
94
+ /*
95
+ * Class: org_libjpegturbo_turbojpeg_TJ
96
+ * Method: planeSizeYUV
97
+ * Signature: (IIIII)I
98
+ */
99
+ JNIEXPORT jint JNICALL Java_org_libjpegturbo_turbojpeg_TJ_planeSizeYUV__IIIII
100
+ (JNIEnv *, jclass, jint, jint, jint, jint, jint);
101
+
102
+ /*
103
+ * Class: org_libjpegturbo_turbojpeg_TJ
104
+ * Method: planeWidth
105
+ * Signature: (III)I
106
+ */
107
+ JNIEXPORT jint JNICALL Java_org_libjpegturbo_turbojpeg_TJ_planeWidth__III
108
+ (JNIEnv *, jclass, jint, jint, jint);
109
+
110
+ /*
111
+ * Class: org_libjpegturbo_turbojpeg_TJ
112
+ * Method: planeHeight
113
+ * Signature: (III)I
114
+ */
115
+ JNIEXPORT jint JNICALL Java_org_libjpegturbo_turbojpeg_TJ_planeHeight__III
116
+ (JNIEnv *, jclass, jint, jint, jint);
117
+
118
+ /*
119
+ * Class: org_libjpegturbo_turbojpeg_TJ
120
+ * Method: getScalingFactors
121
+ * Signature: ()[Lorg/libjpegturbo/turbojpeg/TJScalingFactor;
122
+ */
123
+ JNIEXPORT jobjectArray JNICALL Java_org_libjpegturbo_turbojpeg_TJ_getScalingFactors
124
+ (JNIEnv *, jclass);
125
+
126
+ #ifdef __cplusplus
127
+ }
128
+ #endif
129
+ #endif
@@ -0,0 +1,101 @@
1
+ /* DO NOT EDIT THIS FILE - it is machine generated */
2
+ #include <jni.h>
3
+ /* Header for class org_libjpegturbo_turbojpeg_TJCompressor */
4
+
5
+ #ifndef _Included_org_libjpegturbo_turbojpeg_TJCompressor
6
+ #define _Included_org_libjpegturbo_turbojpeg_TJCompressor
7
+ #ifdef __cplusplus
8
+ extern "C" {
9
+ #endif
10
+ /*
11
+ * Class: org_libjpegturbo_turbojpeg_TJCompressor
12
+ * Method: init
13
+ * Signature: ()V
14
+ */
15
+ JNIEXPORT void JNICALL Java_org_libjpegturbo_turbojpeg_TJCompressor_init
16
+ (JNIEnv *, jobject);
17
+
18
+ /*
19
+ * Class: org_libjpegturbo_turbojpeg_TJCompressor
20
+ * Method: destroy
21
+ * Signature: ()V
22
+ */
23
+ JNIEXPORT void JNICALL Java_org_libjpegturbo_turbojpeg_TJCompressor_destroy
24
+ (JNIEnv *, jobject);
25
+
26
+ /*
27
+ * Class: org_libjpegturbo_turbojpeg_TJCompressor
28
+ * Method: compress
29
+ * Signature: ([BIIII[BIII)I
30
+ */
31
+ JNIEXPORT jint JNICALL Java_org_libjpegturbo_turbojpeg_TJCompressor_compress___3BIIII_3BIII
32
+ (JNIEnv *, jobject, jbyteArray, jint, jint, jint, jint, jbyteArray, jint, jint, jint);
33
+
34
+ /*
35
+ * Class: org_libjpegturbo_turbojpeg_TJCompressor
36
+ * Method: compress
37
+ * Signature: ([BIIIIII[BIII)I
38
+ */
39
+ JNIEXPORT jint JNICALL Java_org_libjpegturbo_turbojpeg_TJCompressor_compress___3BIIIIII_3BIII
40
+ (JNIEnv *, jobject, jbyteArray, jint, jint, jint, jint, jint, jint, jbyteArray, jint, jint, jint);
41
+
42
+ /*
43
+ * Class: org_libjpegturbo_turbojpeg_TJCompressor
44
+ * Method: compress
45
+ * Signature: ([IIIII[BIII)I
46
+ */
47
+ JNIEXPORT jint JNICALL Java_org_libjpegturbo_turbojpeg_TJCompressor_compress___3IIIII_3BIII
48
+ (JNIEnv *, jobject, jintArray, jint, jint, jint, jint, jbyteArray, jint, jint, jint);
49
+
50
+ /*
51
+ * Class: org_libjpegturbo_turbojpeg_TJCompressor
52
+ * Method: compress
53
+ * Signature: ([IIIIIII[BIII)I
54
+ */
55
+ JNIEXPORT jint JNICALL Java_org_libjpegturbo_turbojpeg_TJCompressor_compress___3IIIIIII_3BIII
56
+ (JNIEnv *, jobject, jintArray, jint, jint, jint, jint, jint, jint, jbyteArray, jint, jint, jint);
57
+
58
+ /*
59
+ * Class: org_libjpegturbo_turbojpeg_TJCompressor
60
+ * Method: compressFromYUV
61
+ * Signature: ([[B[II[III[BII)I
62
+ */
63
+ JNIEXPORT jint JNICALL Java_org_libjpegturbo_turbojpeg_TJCompressor_compressFromYUV___3_3B_3II_3III_3BII
64
+ (JNIEnv *, jobject, jobjectArray, jintArray, jint, jintArray, jint, jint, jbyteArray, jint, jint);
65
+
66
+ /*
67
+ * Class: org_libjpegturbo_turbojpeg_TJCompressor
68
+ * Method: encodeYUV
69
+ * Signature: ([BIIII[BII)V
70
+ */
71
+ JNIEXPORT void JNICALL Java_org_libjpegturbo_turbojpeg_TJCompressor_encodeYUV___3BIIII_3BII
72
+ (JNIEnv *, jobject, jbyteArray, jint, jint, jint, jint, jbyteArray, jint, jint);
73
+
74
+ /*
75
+ * Class: org_libjpegturbo_turbojpeg_TJCompressor
76
+ * Method: encodeYUV
77
+ * Signature: ([BIIIIII[[B[I[III)V
78
+ */
79
+ JNIEXPORT void JNICALL Java_org_libjpegturbo_turbojpeg_TJCompressor_encodeYUV___3BIIIIII_3_3B_3I_3III
80
+ (JNIEnv *, jobject, jbyteArray, jint, jint, jint, jint, jint, jint, jobjectArray, jintArray, jintArray, jint, jint);
81
+
82
+ /*
83
+ * Class: org_libjpegturbo_turbojpeg_TJCompressor
84
+ * Method: encodeYUV
85
+ * Signature: ([IIIII[BII)V
86
+ */
87
+ JNIEXPORT void JNICALL Java_org_libjpegturbo_turbojpeg_TJCompressor_encodeYUV___3IIIII_3BII
88
+ (JNIEnv *, jobject, jintArray, jint, jint, jint, jint, jbyteArray, jint, jint);
89
+
90
+ /*
91
+ * Class: org_libjpegturbo_turbojpeg_TJCompressor
92
+ * Method: encodeYUV
93
+ * Signature: ([IIIIIII[[B[I[III)V
94
+ */
95
+ JNIEXPORT void JNICALL Java_org_libjpegturbo_turbojpeg_TJCompressor_encodeYUV___3IIIIIII_3_3B_3I_3III
96
+ (JNIEnv *, jobject, jintArray, jint, jint, jint, jint, jint, jint, jobjectArray, jintArray, jintArray, jint, jint);
97
+
98
+ #ifdef __cplusplus
99
+ }
100
+ #endif
101
+ #endif