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.
- checksums.yaml +7 -0
- data/Gemfile +4 -0
- data/MANIFEST +5 -0
- data/TODO +1 -0
- data/epeg/.dockerignore +4 -0
- data/epeg/.gitignore +5 -0
- data/epeg/CMakeLists.txt +30 -0
- data/epeg/Dockerfile +23 -0
- data/epeg/Epeg.h +90 -0
- data/epeg/README.md +42 -0
- data/epeg/epeg_main.c +1642 -0
- data/epeg/epeg_private.h +85 -0
- data/epeg/example/.gitignore +1 -0
- data/epeg/example/CMakeLists.txt +20 -0
- data/epeg/example/example.jpg +0 -0
- data/epeg/example/rotatetest.c +29 -0
- data/epeg/example/scaletest.c +48 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/BUILDING.md +828 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/CMakeLists.txt +1420 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/ChangeLog.md +1494 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/LICENSE.md +132 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/README.ijg +277 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/README.md +356 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/cderror.h +137 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/cdjpeg.c +145 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/cdjpeg.h +157 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/change.log +315 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/cjpeg.1 +354 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/cjpeg.c +695 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/cmakescripts/BuildPackages.cmake +182 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/cmakescripts/GNUInstallDirs.cmake +416 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/cmakescripts/cmake_uninstall.cmake.in +24 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/cmakescripts/testclean.cmake +41 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/cmyk.h +61 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/coderules.txt +78 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/djpeg.1 +296 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/djpeg.c +822 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/annotated.html +104 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/bc_s.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/bdwn.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/classes.html +106 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/closed.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/doxygen-extra.css +3 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/doxygen.css +1184 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/doxygen.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/dynsections.js +97 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2blank.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2cl.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2doc.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2folderclosed.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2folderopen.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2lastnode.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2link.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2mlastnode.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2mnode.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2mo.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2node.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2ns.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2plastnode.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2pnode.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2splitbar.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2vertline.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/functions.html +134 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/functions_vars.html +134 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/group___turbo_j_p_e_g.html +2775 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/index.html +90 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/jquery.js +8 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/modules.html +95 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/nav_f.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/nav_g.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/nav_h.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/open.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_63.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_63.js +4 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_64.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_64.js +5 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_68.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_68.js +4 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_6e.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_6e.js +4 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_6f.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_6f.js +5 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_72.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_72.js +4 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_74.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_74.js +102 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_77.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_77.js +4 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_78.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_78.js +4 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_79.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_79.js +4 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/classes_74.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/classes_74.js +6 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/close.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/enums_74.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/enums_74.js +8 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/enumvalues_74.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/enumvalues_74.js +37 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/functions_74.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/functions_74.js +31 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/groups_74.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/groups_74.js +4 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/mag_sel.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/nomatches.html +12 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/search.css +271 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/search.js +809 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/search_l.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/search_m.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/search_r.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/typedefs_74.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/typedefs_74.js +5 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_63.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_63.js +4 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_64.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_64.js +5 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_68.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_68.js +4 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_6e.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_6e.js +4 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_6f.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_6f.js +5 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_72.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_72.js +4 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_74.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_74.js +10 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_77.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_77.js +4 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_78.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_78.js +4 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_79.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_79.js +4 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/structtjregion.html +186 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/structtjscalingfactor.html +148 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/structtjtransform.html +212 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/sync_off.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/sync_on.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/tab_a.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/tab_b.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/tab_h.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/tab_s.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/tabs.css +60 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doxygen-extra.css +3 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doxygen.config +16 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/example.txt +464 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jaricom.c +157 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/CMakeLists.txt +88 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/MANIFEST.MF +2 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/README +52 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/TJBench.java +1021 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/TJExample.java +405 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/TJUnitTest.java +960 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/allclasses-frame.html +24 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/allclasses-noframe.html +24 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/constant-values.html +532 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/deprecated-list.html +252 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/help-doc.html +210 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/index-all.html +1029 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/index.html +71 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/TJ.html +1356 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/TJCompressor.html +926 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/TJCustomFilter.html +241 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/TJDecompressor.html +1255 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/TJException.html +340 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/TJScalingFactor.html +343 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/TJTransform.html +751 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/TJTransformer.html +421 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/YUVImage.html +765 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/package-frame.html +31 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/package-summary.html +202 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/package-tree.html +160 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/overview-tree.html +164 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/package-list +1 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/resources/background.gif +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/resources/tab.gif +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/resources/titlebar.gif +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/resources/titlebar_end.gif +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/script.js +30 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/serialized-form.html +176 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/stylesheet.css +474 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/org/libjpegturbo/turbojpeg/TJ.java +584 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/org/libjpegturbo/turbojpeg/TJCompressor.java +677 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/org/libjpegturbo/turbojpeg/TJCustomFilter.java +76 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/org/libjpegturbo/turbojpeg/TJDecompressor.java +931 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/org/libjpegturbo/turbojpeg/TJException.java +78 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/org/libjpegturbo/turbojpeg/TJLoader-unix.java.in +59 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/org/libjpegturbo/turbojpeg/TJLoader-win.java.in +35 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/org/libjpegturbo/turbojpeg/TJScalingFactor.java +115 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/org/libjpegturbo/turbojpeg/TJTransform.java +227 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/org/libjpegturbo/turbojpeg/TJTransformer.java +163 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/org/libjpegturbo/turbojpeg/YUVImage.java +445 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/org_libjpegturbo_turbojpeg_TJ.h +129 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/org_libjpegturbo_turbojpeg_TJCompressor.h +101 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/org_libjpegturbo_turbojpeg_TJDecompressor.h +101 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/org_libjpegturbo_turbojpeg_TJTransformer.h +29 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jcapimin.c +295 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jcapistd.c +162 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jcarith.c +932 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jccoefct.c +449 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jccolext.c +144 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jccolor.c +710 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jcdctmgr.c +721 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jchuff.c +1096 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jchuff.h +42 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jcicc.c +105 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jcinit.c +77 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jcmainct.c +162 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jcmarker.c +664 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jcmaster.c +640 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jcomapi.c +109 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jconfig.h.in +73 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jconfig.txt +143 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jconfigint.h.in +31 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jcparam.c +541 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jcphuff.c +1105 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jcprepct.c +351 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jcsample.c +539 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jcstest.c +126 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jctrans.c +400 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdapimin.c +407 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdapistd.c +639 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdarith.c +773 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdatadst-tj.c +203 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdatadst.c +293 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdatasrc-tj.c +194 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdatasrc.c +295 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdcoefct.c +692 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdcoefct.h +82 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdcol565.c +384 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdcolext.c +143 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdcolor.c +883 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdct.h +208 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jddctmgr.c +352 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdhuff.c +831 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdhuff.h +238 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdicc.c +171 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdinput.c +408 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdmainct.c +460 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdmainct.h +71 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdmarker.c +1377 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdmaster.c +737 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdmaster.h +28 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdmerge.c +617 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdmrg565.c +354 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdmrgext.c +184 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdphuff.c +687 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdpostct.c +294 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdsample.c +518 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdsample.h +50 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdtrans.c +155 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jerror.c +251 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jerror.h +316 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jfdctflt.c +169 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jfdctfst.c +227 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jfdctint.c +288 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jidctflt.c +240 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jidctfst.c +371 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jidctint.c +2627 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jidctred.c +409 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jinclude.h +88 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jmemmgr.c +1179 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jmemnobs.c +115 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jmemsys.h +178 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jmorecfg.h +421 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jpeg_nbits_table.h +4098 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jpegcomp.h +31 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jpegint.h +368 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jpeglib.h +1132 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jpegtran.1 +295 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jpegtran.c +601 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jquant1.c +859 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jquant2.c +1285 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jsimd.h +117 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jsimd_none.c +418 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jsimddct.h +70 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jstdhuff.c +143 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jutils.c +133 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jversion.h +52 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/libjpeg.map.in +11 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/libjpeg.txt +3144 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/md5/CMakeLists.txt +1 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/md5/md5.c +275 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/md5/md5.h +57 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/md5/md5cmp.c +59 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/md5/md5hl.c +125 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/rdbmp.c +689 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/rdcolmap.c +254 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/rdgif.c +39 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/rdjpgcom.1 +63 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/rdjpgcom.c +510 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/rdppm.c +766 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/rdrle.c +389 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/rdswitch.c +424 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/rdtarga.c +509 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/release/Distribution.xml.in +24 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/release/License.rtf +20 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/release/ReadMe.txt +5 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/release/Welcome.rtf +17 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/release/deb-control.in +31 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/release/installer.nsi.in +191 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/release/libjpeg.pc.in +10 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/release/libturbojpeg.pc.in +10 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/release/makecygwinpkg.in +66 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/release/makedpkg.in +115 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/release/makemacpkg.in +284 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/release/makerpm.in +30 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/release/makesrpm.in +48 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/release/maketarball.in +51 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/release/rpm.spec.in +221 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/release/uninstall.in +113 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/sharedlib/CMakeLists.txt +99 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/CMakeLists.txt +385 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/arm/jsimd.c +721 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/arm/jsimd_neon.S +2878 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/arm64/jsimd.c +798 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/arm64/jsimd_neon.S +3433 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/gas-preprocessor.in +1 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jccolext-avx2.asm +578 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jccolext-mmx.asm +476 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jccolext-sse2.asm +503 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jccolor-avx2.asm +121 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jccolor-mmx.asm +121 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jccolor-sse2.asm +120 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jcgray-avx2.asm +113 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jcgray-mmx.asm +113 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jcgray-sse2.asm +112 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jcgryext-avx2.asm +457 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jcgryext-mmx.asm +355 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jcgryext-sse2.asm +382 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jchuff-sse2.asm +424 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jcphuff-sse2.asm +660 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jcsample-avx2.asm +388 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jcsample-mmx.asm +324 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jcsample-sse2.asm +351 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdcolext-avx2.asm +515 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdcolext-mmx.asm +404 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdcolext-sse2.asm +458 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdcolor-avx2.asm +118 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdcolor-mmx.asm +117 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdcolor-sse2.asm +117 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdmerge-avx2.asm +136 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdmerge-mmx.asm +123 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdmerge-sse2.asm +135 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdmrgext-avx2.asm +575 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdmrgext-mmx.asm +460 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdmrgext-sse2.asm +517 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdsample-avx2.asm +760 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdsample-mmx.asm +731 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdsample-sse2.asm +724 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jfdctflt-3dn.asm +318 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jfdctflt-sse.asm +369 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jfdctfst-mmx.asm +395 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jfdctfst-sse2.asm +403 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jfdctint-avx2.asm +331 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jfdctint-mmx.asm +620 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jfdctint-sse2.asm +633 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jidctflt-3dn.asm +451 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jidctflt-sse.asm +571 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jidctflt-sse2.asm +497 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jidctfst-mmx.asm +499 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jidctfst-sse2.asm +501 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jidctint-avx2.asm +453 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jidctint-mmx.asm +851 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jidctint-sse2.asm +858 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jidctred-mmx.asm +704 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jidctred-sse2.asm +592 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jquant-3dn.asm +230 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jquant-mmx.asm +276 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jquant-sse.asm +208 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jquantf-sse2.asm +168 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jquanti-avx2.asm +188 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jquanti-sse2.asm +201 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jsimd.c +1253 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jsimdcpu.asm +135 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/jsimd.h +1083 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jccolext-mmi.c +483 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jccolor-mmi.c +148 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jcsample-mmi.c +100 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jcsample.h +28 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jdcolext-mmi.c +424 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jdcolor-mmi.c +139 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jdsample-mmi.c +245 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jfdctint-mmi.c +398 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jidctint-mmi.c +571 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jquanti-mmi.c +130 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jsimd.c +610 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jsimd_mmi.h +57 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/loongson-mmintrin.h +1324 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/mips/jsimd.c +1123 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/mips/jsimd_dspr2.S +4479 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/mips/jsimd_dspr2_asm.h +292 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/nasm/jcolsamp.inc +135 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/nasm/jdct.inc +31 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/nasm/jpeg_nbits_table.inc +4097 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/nasm/jsimdcfg.inc +93 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/nasm/jsimdcfg.inc.h +131 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/nasm/jsimdext.inc +479 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jccolext-altivec.c +269 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jccolor-altivec.c +116 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jcgray-altivec.c +111 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jcgryext-altivec.c +228 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jcsample-altivec.c +159 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jcsample.h +28 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jdcolext-altivec.c +276 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jdcolor-altivec.c +106 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jdmerge-altivec.c +130 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jdmrgext-altivec.c +329 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jdsample-altivec.c +400 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jfdctfst-altivec.c +154 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jfdctint-altivec.c +258 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jidctfst-altivec.c +255 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jidctint-altivec.c +357 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jquanti-altivec.c +250 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jsimd.c +872 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jsimd_altivec.h +98 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jccolext-avx2.asm +558 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jccolext-sse2.asm +483 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jccolor-avx2.asm +121 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jccolor-sse2.asm +120 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jcgray-avx2.asm +113 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jcgray-sse2.asm +112 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jcgryext-avx2.asm +437 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jcgryext-sse2.asm +362 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jchuff-sse2.asm +346 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jcphuff-sse2.asm +637 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jcsample-avx2.asm +366 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jcsample-sse2.asm +329 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jdcolext-avx2.asm +495 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jdcolext-sse2.asm +438 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jdcolor-avx2.asm +118 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jdcolor-sse2.asm +117 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jdmerge-avx2.asm +136 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jdmerge-sse2.asm +135 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jdmrgext-avx2.asm +593 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jdmrgext-sse2.asm +535 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jdsample-avx2.asm +695 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jdsample-sse2.asm +664 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jfdctflt-sse.asm +355 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jfdctfst-sse2.asm +389 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jfdctint-avx2.asm +320 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jfdctint-sse2.asm +619 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jidctflt-sse2.asm +481 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jidctfst-sse2.asm +490 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jidctint-avx2.asm +417 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jidctint-sse2.asm +846 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jidctred-sse2.asm +573 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jquantf-sse2.asm +154 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jquanti-avx2.asm +162 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jquanti-sse2.asm +187 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jsimd.c +1076 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jsimdcpu.asm +86 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/structure.txt +904 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/nightshot_iso_100.bmp +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/nightshot_iso_100.txt +25 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/test.scan +5 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/test1.icc +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/test1.icc.txt +20 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/test2.icc +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/test2.icc.txt +20 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/testimgari.jpg +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/testimgint.jpg +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/testorig.jpg +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/testorig.ppm +4 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/testorig12.jpg +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/vgl_5674_0098.bmp +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/vgl_6434_0018a.bmp +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/vgl_6548_0026a.bmp +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/tjbench.c +1031 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/tjbenchtest.in +256 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/tjbenchtest.java.in +215 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/tjexample.c +396 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/tjexampletest.in +149 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/tjexampletest.java.in +151 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/tjunittest.c +931 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/tjutil.c +70 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/tjutil.h +47 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/transupp.c +1628 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/transupp.h +210 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/turbojpeg-jni.c +1246 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/turbojpeg-mapfile +65 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/turbojpeg-mapfile.jni +101 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/turbojpeg.c +2152 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/turbojpeg.h +1744 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/usage.txt +635 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/win/jconfig.h.in +34 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/win/jpeg62-memsrcdst.def +108 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/win/jpeg62.def +106 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/win/jpeg7-memsrcdst.def +110 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/win/jpeg7.def +108 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/win/jpeg8.def +111 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/wizard.txt +212 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/wrbmp.c +558 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/wrgif.c +413 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/wrjpgcom.1 +103 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/wrjpgcom.c +591 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/wrppm.c +365 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/wrrle.c +309 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/wrtarga.c +261 -0
- data/epeg.c +131 -0
- data/epeg.gemspec +18 -0
- data/extconf.rb +80 -0
- data/test.jpg +0 -0
- data/test.rb +42 -0
- metadata +546 -0
@@ -0,0 +1,664 @@
|
|
1
|
+
;
|
2
|
+
; jdsample.asm - upsampling (64-bit SSE2)
|
3
|
+
;
|
4
|
+
; Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
|
5
|
+
; Copyright (C) 2009, 2016, D. R. Commander.
|
6
|
+
;
|
7
|
+
; Based on the x86 SIMD extension for IJG JPEG library
|
8
|
+
; Copyright (C) 1999-2006, MIYASAKA Masaru.
|
9
|
+
; For conditions of distribution and use, see copyright notice in jsimdext.inc
|
10
|
+
;
|
11
|
+
; This file should be assembled with NASM (Netwide Assembler),
|
12
|
+
; can *not* be assembled with Microsoft's MASM or any compatible
|
13
|
+
; assembler (including Borland's Turbo Assembler).
|
14
|
+
; NASM is available from http://nasm.sourceforge.net/ or
|
15
|
+
; http://sourceforge.net/project/showfiles.php?group_id=6208
|
16
|
+
|
17
|
+
%include "jsimdext.inc"
|
18
|
+
|
19
|
+
; --------------------------------------------------------------------------
|
20
|
+
SECTION SEG_CONST
|
21
|
+
|
22
|
+
alignz 32
|
23
|
+
GLOBAL_DATA(jconst_fancy_upsample_sse2)
|
24
|
+
|
25
|
+
EXTN(jconst_fancy_upsample_sse2):
|
26
|
+
|
27
|
+
PW_ONE times 8 dw 1
|
28
|
+
PW_TWO times 8 dw 2
|
29
|
+
PW_THREE times 8 dw 3
|
30
|
+
PW_SEVEN times 8 dw 7
|
31
|
+
PW_EIGHT times 8 dw 8
|
32
|
+
|
33
|
+
alignz 32
|
34
|
+
|
35
|
+
; --------------------------------------------------------------------------
|
36
|
+
SECTION SEG_TEXT
|
37
|
+
BITS 64
|
38
|
+
;
|
39
|
+
; Fancy processing for the common case of 2:1 horizontal and 1:1 vertical.
|
40
|
+
;
|
41
|
+
; The upsampling algorithm is linear interpolation between pixel centers,
|
42
|
+
; also known as a "triangle filter". This is a good compromise between
|
43
|
+
; speed and visual quality. The centers of the output pixels are 1/4 and 3/4
|
44
|
+
; of the way between input pixel centers.
|
45
|
+
;
|
46
|
+
; GLOBAL(void)
|
47
|
+
; jsimd_h2v1_fancy_upsample_sse2(int max_v_samp_factor,
|
48
|
+
; JDIMENSION downsampled_width,
|
49
|
+
; JSAMPARRAY input_data,
|
50
|
+
; JSAMPARRAY *output_data_ptr);
|
51
|
+
;
|
52
|
+
|
53
|
+
; r10 = int max_v_samp_factor
|
54
|
+
; r11d = JDIMENSION downsampled_width
|
55
|
+
; r12 = JSAMPARRAY input_data
|
56
|
+
; r13 = JSAMPARRAY *output_data_ptr
|
57
|
+
|
58
|
+
align 32
|
59
|
+
GLOBAL_FUNCTION(jsimd_h2v1_fancy_upsample_sse2)
|
60
|
+
|
61
|
+
EXTN(jsimd_h2v1_fancy_upsample_sse2):
|
62
|
+
push rbp
|
63
|
+
mov rax, rsp
|
64
|
+
mov rbp, rsp
|
65
|
+
collect_args 4
|
66
|
+
|
67
|
+
mov eax, r11d ; colctr
|
68
|
+
test rax, rax
|
69
|
+
jz near .return
|
70
|
+
|
71
|
+
mov rcx, r10 ; rowctr
|
72
|
+
test rcx, rcx
|
73
|
+
jz near .return
|
74
|
+
|
75
|
+
mov rsi, r12 ; input_data
|
76
|
+
mov rdi, r13
|
77
|
+
mov rdi, JSAMPARRAY [rdi] ; output_data
|
78
|
+
.rowloop:
|
79
|
+
push rax ; colctr
|
80
|
+
push rdi
|
81
|
+
push rsi
|
82
|
+
|
83
|
+
mov rsi, JSAMPROW [rsi] ; inptr
|
84
|
+
mov rdi, JSAMPROW [rdi] ; outptr
|
85
|
+
|
86
|
+
test rax, SIZEOF_XMMWORD-1
|
87
|
+
jz short .skip
|
88
|
+
mov dl, JSAMPLE [rsi+(rax-1)*SIZEOF_JSAMPLE]
|
89
|
+
mov JSAMPLE [rsi+rax*SIZEOF_JSAMPLE], dl ; insert a dummy sample
|
90
|
+
.skip:
|
91
|
+
pxor xmm0, xmm0 ; xmm0=(all 0's)
|
92
|
+
pcmpeqb xmm7, xmm7
|
93
|
+
psrldq xmm7, (SIZEOF_XMMWORD-1)
|
94
|
+
pand xmm7, XMMWORD [rsi+0*SIZEOF_XMMWORD]
|
95
|
+
|
96
|
+
add rax, byte SIZEOF_XMMWORD-1
|
97
|
+
and rax, byte -SIZEOF_XMMWORD
|
98
|
+
cmp rax, byte SIZEOF_XMMWORD
|
99
|
+
ja short .columnloop
|
100
|
+
|
101
|
+
.columnloop_last:
|
102
|
+
pcmpeqb xmm6, xmm6
|
103
|
+
pslldq xmm6, (SIZEOF_XMMWORD-1)
|
104
|
+
pand xmm6, XMMWORD [rsi+0*SIZEOF_XMMWORD]
|
105
|
+
jmp short .upsample
|
106
|
+
|
107
|
+
.columnloop:
|
108
|
+
movdqa xmm6, XMMWORD [rsi+1*SIZEOF_XMMWORD]
|
109
|
+
pslldq xmm6, (SIZEOF_XMMWORD-1)
|
110
|
+
|
111
|
+
.upsample:
|
112
|
+
movdqa xmm1, XMMWORD [rsi+0*SIZEOF_XMMWORD]
|
113
|
+
movdqa xmm2, xmm1
|
114
|
+
movdqa xmm3, xmm1 ; xmm1=( 0 1 2 ... 13 14 15)
|
115
|
+
pslldq xmm2, 1 ; xmm2=(-- 0 1 ... 12 13 14)
|
116
|
+
psrldq xmm3, 1 ; xmm3=( 1 2 3 ... 14 15 --)
|
117
|
+
|
118
|
+
por xmm2, xmm7 ; xmm2=(-1 0 1 ... 12 13 14)
|
119
|
+
por xmm3, xmm6 ; xmm3=( 1 2 3 ... 14 15 16)
|
120
|
+
|
121
|
+
movdqa xmm7, xmm1
|
122
|
+
psrldq xmm7, (SIZEOF_XMMWORD-1) ; xmm7=(15 -- -- ... -- -- --)
|
123
|
+
|
124
|
+
movdqa xmm4, xmm1
|
125
|
+
punpcklbw xmm1, xmm0 ; xmm1=( 0 1 2 3 4 5 6 7)
|
126
|
+
punpckhbw xmm4, xmm0 ; xmm4=( 8 9 10 11 12 13 14 15)
|
127
|
+
movdqa xmm5, xmm2
|
128
|
+
punpcklbw xmm2, xmm0 ; xmm2=(-1 0 1 2 3 4 5 6)
|
129
|
+
punpckhbw xmm5, xmm0 ; xmm5=( 7 8 9 10 11 12 13 14)
|
130
|
+
movdqa xmm6, xmm3
|
131
|
+
punpcklbw xmm3, xmm0 ; xmm3=( 1 2 3 4 5 6 7 8)
|
132
|
+
punpckhbw xmm6, xmm0 ; xmm6=( 9 10 11 12 13 14 15 16)
|
133
|
+
|
134
|
+
pmullw xmm1, [rel PW_THREE]
|
135
|
+
pmullw xmm4, [rel PW_THREE]
|
136
|
+
paddw xmm2, [rel PW_ONE]
|
137
|
+
paddw xmm5, [rel PW_ONE]
|
138
|
+
paddw xmm3, [rel PW_TWO]
|
139
|
+
paddw xmm6, [rel PW_TWO]
|
140
|
+
|
141
|
+
paddw xmm2, xmm1
|
142
|
+
paddw xmm5, xmm4
|
143
|
+
psrlw xmm2, 2 ; xmm2=OutLE=( 0 2 4 6 8 10 12 14)
|
144
|
+
psrlw xmm5, 2 ; xmm5=OutHE=(16 18 20 22 24 26 28 30)
|
145
|
+
paddw xmm3, xmm1
|
146
|
+
paddw xmm6, xmm4
|
147
|
+
psrlw xmm3, 2 ; xmm3=OutLO=( 1 3 5 7 9 11 13 15)
|
148
|
+
psrlw xmm6, 2 ; xmm6=OutHO=(17 19 21 23 25 27 29 31)
|
149
|
+
|
150
|
+
psllw xmm3, BYTE_BIT
|
151
|
+
psllw xmm6, BYTE_BIT
|
152
|
+
por xmm2, xmm3 ; xmm2=OutL=( 0 1 2 ... 13 14 15)
|
153
|
+
por xmm5, xmm6 ; xmm5=OutH=(16 17 18 ... 29 30 31)
|
154
|
+
|
155
|
+
movdqa XMMWORD [rdi+0*SIZEOF_XMMWORD], xmm2
|
156
|
+
movdqa XMMWORD [rdi+1*SIZEOF_XMMWORD], xmm5
|
157
|
+
|
158
|
+
sub rax, byte SIZEOF_XMMWORD
|
159
|
+
add rsi, byte 1*SIZEOF_XMMWORD ; inptr
|
160
|
+
add rdi, byte 2*SIZEOF_XMMWORD ; outptr
|
161
|
+
cmp rax, byte SIZEOF_XMMWORD
|
162
|
+
ja near .columnloop
|
163
|
+
test eax, eax
|
164
|
+
jnz near .columnloop_last
|
165
|
+
|
166
|
+
pop rsi
|
167
|
+
pop rdi
|
168
|
+
pop rax
|
169
|
+
|
170
|
+
add rsi, byte SIZEOF_JSAMPROW ; input_data
|
171
|
+
add rdi, byte SIZEOF_JSAMPROW ; output_data
|
172
|
+
dec rcx ; rowctr
|
173
|
+
jg near .rowloop
|
174
|
+
|
175
|
+
.return:
|
176
|
+
uncollect_args 4
|
177
|
+
pop rbp
|
178
|
+
ret
|
179
|
+
|
180
|
+
; --------------------------------------------------------------------------
|
181
|
+
;
|
182
|
+
; Fancy processing for the common case of 2:1 horizontal and 2:1 vertical.
|
183
|
+
; Again a triangle filter; see comments for h2v1 case, above.
|
184
|
+
;
|
185
|
+
; GLOBAL(void)
|
186
|
+
; jsimd_h2v2_fancy_upsample_sse2(int max_v_samp_factor,
|
187
|
+
; JDIMENSION downsampled_width,
|
188
|
+
; JSAMPARRAY input_data,
|
189
|
+
; JSAMPARRAY *output_data_ptr);
|
190
|
+
;
|
191
|
+
|
192
|
+
; r10 = int max_v_samp_factor
|
193
|
+
; r11d = JDIMENSION downsampled_width
|
194
|
+
; r12 = JSAMPARRAY input_data
|
195
|
+
; r13 = JSAMPARRAY *output_data_ptr
|
196
|
+
|
197
|
+
%define wk(i) rbp - (WK_NUM - (i)) * SIZEOF_XMMWORD ; xmmword wk[WK_NUM]
|
198
|
+
%define WK_NUM 4
|
199
|
+
|
200
|
+
align 32
|
201
|
+
GLOBAL_FUNCTION(jsimd_h2v2_fancy_upsample_sse2)
|
202
|
+
|
203
|
+
EXTN(jsimd_h2v2_fancy_upsample_sse2):
|
204
|
+
push rbp
|
205
|
+
mov rax, rsp ; rax = original rbp
|
206
|
+
sub rsp, byte 4
|
207
|
+
and rsp, byte (-SIZEOF_XMMWORD) ; align to 128 bits
|
208
|
+
mov [rsp], rax
|
209
|
+
mov rbp, rsp ; rbp = aligned rbp
|
210
|
+
lea rsp, [wk(0)]
|
211
|
+
collect_args 4
|
212
|
+
push rbx
|
213
|
+
|
214
|
+
mov eax, r11d ; colctr
|
215
|
+
test rax, rax
|
216
|
+
jz near .return
|
217
|
+
|
218
|
+
mov rcx, r10 ; rowctr
|
219
|
+
test rcx, rcx
|
220
|
+
jz near .return
|
221
|
+
|
222
|
+
mov rsi, r12 ; input_data
|
223
|
+
mov rdi, r13
|
224
|
+
mov rdi, JSAMPARRAY [rdi] ; output_data
|
225
|
+
.rowloop:
|
226
|
+
push rax ; colctr
|
227
|
+
push rcx
|
228
|
+
push rdi
|
229
|
+
push rsi
|
230
|
+
|
231
|
+
mov rcx, JSAMPROW [rsi-1*SIZEOF_JSAMPROW] ; inptr1(above)
|
232
|
+
mov rbx, JSAMPROW [rsi+0*SIZEOF_JSAMPROW] ; inptr0
|
233
|
+
mov rsi, JSAMPROW [rsi+1*SIZEOF_JSAMPROW] ; inptr1(below)
|
234
|
+
mov rdx, JSAMPROW [rdi+0*SIZEOF_JSAMPROW] ; outptr0
|
235
|
+
mov rdi, JSAMPROW [rdi+1*SIZEOF_JSAMPROW] ; outptr1
|
236
|
+
|
237
|
+
test rax, SIZEOF_XMMWORD-1
|
238
|
+
jz short .skip
|
239
|
+
push rdx
|
240
|
+
mov dl, JSAMPLE [rcx+(rax-1)*SIZEOF_JSAMPLE]
|
241
|
+
mov JSAMPLE [rcx+rax*SIZEOF_JSAMPLE], dl
|
242
|
+
mov dl, JSAMPLE [rbx+(rax-1)*SIZEOF_JSAMPLE]
|
243
|
+
mov JSAMPLE [rbx+rax*SIZEOF_JSAMPLE], dl
|
244
|
+
mov dl, JSAMPLE [rsi+(rax-1)*SIZEOF_JSAMPLE]
|
245
|
+
mov JSAMPLE [rsi+rax*SIZEOF_JSAMPLE], dl ; insert a dummy sample
|
246
|
+
pop rdx
|
247
|
+
.skip:
|
248
|
+
; -- process the first column block
|
249
|
+
|
250
|
+
movdqa xmm0, XMMWORD [rbx+0*SIZEOF_XMMWORD] ; xmm0=row[ 0][0]
|
251
|
+
movdqa xmm1, XMMWORD [rcx+0*SIZEOF_XMMWORD] ; xmm1=row[-1][0]
|
252
|
+
movdqa xmm2, XMMWORD [rsi+0*SIZEOF_XMMWORD] ; xmm2=row[+1][0]
|
253
|
+
|
254
|
+
pxor xmm3, xmm3 ; xmm3=(all 0's)
|
255
|
+
movdqa xmm4, xmm0
|
256
|
+
punpcklbw xmm0, xmm3 ; xmm0=row[ 0]( 0 1 2 3 4 5 6 7)
|
257
|
+
punpckhbw xmm4, xmm3 ; xmm4=row[ 0]( 8 9 10 11 12 13 14 15)
|
258
|
+
movdqa xmm5, xmm1
|
259
|
+
punpcklbw xmm1, xmm3 ; xmm1=row[-1]( 0 1 2 3 4 5 6 7)
|
260
|
+
punpckhbw xmm5, xmm3 ; xmm5=row[-1]( 8 9 10 11 12 13 14 15)
|
261
|
+
movdqa xmm6, xmm2
|
262
|
+
punpcklbw xmm2, xmm3 ; xmm2=row[+1]( 0 1 2 3 4 5 6 7)
|
263
|
+
punpckhbw xmm6, xmm3 ; xmm6=row[+1]( 8 9 10 11 12 13 14 15)
|
264
|
+
|
265
|
+
pmullw xmm0, [rel PW_THREE]
|
266
|
+
pmullw xmm4, [rel PW_THREE]
|
267
|
+
|
268
|
+
pcmpeqb xmm7, xmm7
|
269
|
+
psrldq xmm7, (SIZEOF_XMMWORD-2)
|
270
|
+
|
271
|
+
paddw xmm1, xmm0 ; xmm1=Int0L=( 0 1 2 3 4 5 6 7)
|
272
|
+
paddw xmm5, xmm4 ; xmm5=Int0H=( 8 9 10 11 12 13 14 15)
|
273
|
+
paddw xmm2, xmm0 ; xmm2=Int1L=( 0 1 2 3 4 5 6 7)
|
274
|
+
paddw xmm6, xmm4 ; xmm6=Int1H=( 8 9 10 11 12 13 14 15)
|
275
|
+
|
276
|
+
movdqa XMMWORD [rdx+0*SIZEOF_XMMWORD], xmm1 ; temporarily save
|
277
|
+
movdqa XMMWORD [rdx+1*SIZEOF_XMMWORD], xmm5 ; the intermediate data
|
278
|
+
movdqa XMMWORD [rdi+0*SIZEOF_XMMWORD], xmm2
|
279
|
+
movdqa XMMWORD [rdi+1*SIZEOF_XMMWORD], xmm6
|
280
|
+
|
281
|
+
pand xmm1, xmm7 ; xmm1=( 0 -- -- -- -- -- -- --)
|
282
|
+
pand xmm2, xmm7 ; xmm2=( 0 -- -- -- -- -- -- --)
|
283
|
+
|
284
|
+
movdqa XMMWORD [wk(0)], xmm1
|
285
|
+
movdqa XMMWORD [wk(1)], xmm2
|
286
|
+
|
287
|
+
add rax, byte SIZEOF_XMMWORD-1
|
288
|
+
and rax, byte -SIZEOF_XMMWORD
|
289
|
+
cmp rax, byte SIZEOF_XMMWORD
|
290
|
+
ja short .columnloop
|
291
|
+
|
292
|
+
.columnloop_last:
|
293
|
+
; -- process the last column block
|
294
|
+
|
295
|
+
pcmpeqb xmm1, xmm1
|
296
|
+
pslldq xmm1, (SIZEOF_XMMWORD-2)
|
297
|
+
movdqa xmm2, xmm1
|
298
|
+
|
299
|
+
pand xmm1, XMMWORD [rdx+1*SIZEOF_XMMWORD]
|
300
|
+
pand xmm2, XMMWORD [rdi+1*SIZEOF_XMMWORD]
|
301
|
+
|
302
|
+
movdqa XMMWORD [wk(2)], xmm1 ; xmm1=(-- -- -- -- -- -- -- 15)
|
303
|
+
movdqa XMMWORD [wk(3)], xmm2 ; xmm2=(-- -- -- -- -- -- -- 15)
|
304
|
+
|
305
|
+
jmp near .upsample
|
306
|
+
|
307
|
+
.columnloop:
|
308
|
+
; -- process the next column block
|
309
|
+
|
310
|
+
movdqa xmm0, XMMWORD [rbx+1*SIZEOF_XMMWORD] ; xmm0=row[ 0][1]
|
311
|
+
movdqa xmm1, XMMWORD [rcx+1*SIZEOF_XMMWORD] ; xmm1=row[-1][1]
|
312
|
+
movdqa xmm2, XMMWORD [rsi+1*SIZEOF_XMMWORD] ; xmm2=row[+1][1]
|
313
|
+
|
314
|
+
pxor xmm3, xmm3 ; xmm3=(all 0's)
|
315
|
+
movdqa xmm4, xmm0
|
316
|
+
punpcklbw xmm0, xmm3 ; xmm0=row[ 0]( 0 1 2 3 4 5 6 7)
|
317
|
+
punpckhbw xmm4, xmm3 ; xmm4=row[ 0]( 8 9 10 11 12 13 14 15)
|
318
|
+
movdqa xmm5, xmm1
|
319
|
+
punpcklbw xmm1, xmm3 ; xmm1=row[-1]( 0 1 2 3 4 5 6 7)
|
320
|
+
punpckhbw xmm5, xmm3 ; xmm5=row[-1]( 8 9 10 11 12 13 14 15)
|
321
|
+
movdqa xmm6, xmm2
|
322
|
+
punpcklbw xmm2, xmm3 ; xmm2=row[+1]( 0 1 2 3 4 5 6 7)
|
323
|
+
punpckhbw xmm6, xmm3 ; xmm6=row[+1]( 8 9 10 11 12 13 14 15)
|
324
|
+
|
325
|
+
pmullw xmm0, [rel PW_THREE]
|
326
|
+
pmullw xmm4, [rel PW_THREE]
|
327
|
+
|
328
|
+
paddw xmm1, xmm0 ; xmm1=Int0L=( 0 1 2 3 4 5 6 7)
|
329
|
+
paddw xmm5, xmm4 ; xmm5=Int0H=( 8 9 10 11 12 13 14 15)
|
330
|
+
paddw xmm2, xmm0 ; xmm2=Int1L=( 0 1 2 3 4 5 6 7)
|
331
|
+
paddw xmm6, xmm4 ; xmm6=Int1H=( 8 9 10 11 12 13 14 15)
|
332
|
+
|
333
|
+
movdqa XMMWORD [rdx+2*SIZEOF_XMMWORD], xmm1 ; temporarily save
|
334
|
+
movdqa XMMWORD [rdx+3*SIZEOF_XMMWORD], xmm5 ; the intermediate data
|
335
|
+
movdqa XMMWORD [rdi+2*SIZEOF_XMMWORD], xmm2
|
336
|
+
movdqa XMMWORD [rdi+3*SIZEOF_XMMWORD], xmm6
|
337
|
+
|
338
|
+
pslldq xmm1, (SIZEOF_XMMWORD-2) ; xmm1=(-- -- -- -- -- -- -- 0)
|
339
|
+
pslldq xmm2, (SIZEOF_XMMWORD-2) ; xmm2=(-- -- -- -- -- -- -- 0)
|
340
|
+
|
341
|
+
movdqa XMMWORD [wk(2)], xmm1
|
342
|
+
movdqa XMMWORD [wk(3)], xmm2
|
343
|
+
|
344
|
+
.upsample:
|
345
|
+
; -- process the upper row
|
346
|
+
|
347
|
+
movdqa xmm7, XMMWORD [rdx+0*SIZEOF_XMMWORD]
|
348
|
+
movdqa xmm3, XMMWORD [rdx+1*SIZEOF_XMMWORD]
|
349
|
+
|
350
|
+
movdqa xmm0, xmm7 ; xmm7=Int0L=( 0 1 2 3 4 5 6 7)
|
351
|
+
movdqa xmm4, xmm3 ; xmm3=Int0H=( 8 9 10 11 12 13 14 15)
|
352
|
+
psrldq xmm0, 2 ; xmm0=( 1 2 3 4 5 6 7 --)
|
353
|
+
pslldq xmm4, (SIZEOF_XMMWORD-2) ; xmm4=(-- -- -- -- -- -- -- 8)
|
354
|
+
movdqa xmm5, xmm7
|
355
|
+
movdqa xmm6, xmm3
|
356
|
+
psrldq xmm5, (SIZEOF_XMMWORD-2) ; xmm5=( 7 -- -- -- -- -- -- --)
|
357
|
+
pslldq xmm6, 2 ; xmm6=(-- 8 9 10 11 12 13 14)
|
358
|
+
|
359
|
+
por xmm0, xmm4 ; xmm0=( 1 2 3 4 5 6 7 8)
|
360
|
+
por xmm5, xmm6 ; xmm5=( 7 8 9 10 11 12 13 14)
|
361
|
+
|
362
|
+
movdqa xmm1, xmm7
|
363
|
+
movdqa xmm2, xmm3
|
364
|
+
pslldq xmm1, 2 ; xmm1=(-- 0 1 2 3 4 5 6)
|
365
|
+
psrldq xmm2, 2 ; xmm2=( 9 10 11 12 13 14 15 --)
|
366
|
+
movdqa xmm4, xmm3
|
367
|
+
psrldq xmm4, (SIZEOF_XMMWORD-2) ; xmm4=(15 -- -- -- -- -- -- --)
|
368
|
+
|
369
|
+
por xmm1, XMMWORD [wk(0)] ; xmm1=(-1 0 1 2 3 4 5 6)
|
370
|
+
por xmm2, XMMWORD [wk(2)] ; xmm2=( 9 10 11 12 13 14 15 16)
|
371
|
+
|
372
|
+
movdqa XMMWORD [wk(0)], xmm4
|
373
|
+
|
374
|
+
pmullw xmm7, [rel PW_THREE]
|
375
|
+
pmullw xmm3, [rel PW_THREE]
|
376
|
+
paddw xmm1, [rel PW_EIGHT]
|
377
|
+
paddw xmm5, [rel PW_EIGHT]
|
378
|
+
paddw xmm0, [rel PW_SEVEN]
|
379
|
+
paddw xmm2, [rel PW_SEVEN]
|
380
|
+
|
381
|
+
paddw xmm1, xmm7
|
382
|
+
paddw xmm5, xmm3
|
383
|
+
psrlw xmm1, 4 ; xmm1=Out0LE=( 0 2 4 6 8 10 12 14)
|
384
|
+
psrlw xmm5, 4 ; xmm5=Out0HE=(16 18 20 22 24 26 28 30)
|
385
|
+
paddw xmm0, xmm7
|
386
|
+
paddw xmm2, xmm3
|
387
|
+
psrlw xmm0, 4 ; xmm0=Out0LO=( 1 3 5 7 9 11 13 15)
|
388
|
+
psrlw xmm2, 4 ; xmm2=Out0HO=(17 19 21 23 25 27 29 31)
|
389
|
+
|
390
|
+
psllw xmm0, BYTE_BIT
|
391
|
+
psllw xmm2, BYTE_BIT
|
392
|
+
por xmm1, xmm0 ; xmm1=Out0L=( 0 1 2 ... 13 14 15)
|
393
|
+
por xmm5, xmm2 ; xmm5=Out0H=(16 17 18 ... 29 30 31)
|
394
|
+
|
395
|
+
movdqa XMMWORD [rdx+0*SIZEOF_XMMWORD], xmm1
|
396
|
+
movdqa XMMWORD [rdx+1*SIZEOF_XMMWORD], xmm5
|
397
|
+
|
398
|
+
; -- process the lower row
|
399
|
+
|
400
|
+
movdqa xmm6, XMMWORD [rdi+0*SIZEOF_XMMWORD]
|
401
|
+
movdqa xmm4, XMMWORD [rdi+1*SIZEOF_XMMWORD]
|
402
|
+
|
403
|
+
movdqa xmm7, xmm6 ; xmm6=Int1L=( 0 1 2 3 4 5 6 7)
|
404
|
+
movdqa xmm3, xmm4 ; xmm4=Int1H=( 8 9 10 11 12 13 14 15)
|
405
|
+
psrldq xmm7, 2 ; xmm7=( 1 2 3 4 5 6 7 --)
|
406
|
+
pslldq xmm3, (SIZEOF_XMMWORD-2) ; xmm3=(-- -- -- -- -- -- -- 8)
|
407
|
+
movdqa xmm0, xmm6
|
408
|
+
movdqa xmm2, xmm4
|
409
|
+
psrldq xmm0, (SIZEOF_XMMWORD-2) ; xmm0=( 7 -- -- -- -- -- -- --)
|
410
|
+
pslldq xmm2, 2 ; xmm2=(-- 8 9 10 11 12 13 14)
|
411
|
+
|
412
|
+
por xmm7, xmm3 ; xmm7=( 1 2 3 4 5 6 7 8)
|
413
|
+
por xmm0, xmm2 ; xmm0=( 7 8 9 10 11 12 13 14)
|
414
|
+
|
415
|
+
movdqa xmm1, xmm6
|
416
|
+
movdqa xmm5, xmm4
|
417
|
+
pslldq xmm1, 2 ; xmm1=(-- 0 1 2 3 4 5 6)
|
418
|
+
psrldq xmm5, 2 ; xmm5=( 9 10 11 12 13 14 15 --)
|
419
|
+
movdqa xmm3, xmm4
|
420
|
+
psrldq xmm3, (SIZEOF_XMMWORD-2) ; xmm3=(15 -- -- -- -- -- -- --)
|
421
|
+
|
422
|
+
por xmm1, XMMWORD [wk(1)] ; xmm1=(-1 0 1 2 3 4 5 6)
|
423
|
+
por xmm5, XMMWORD [wk(3)] ; xmm5=( 9 10 11 12 13 14 15 16)
|
424
|
+
|
425
|
+
movdqa XMMWORD [wk(1)], xmm3
|
426
|
+
|
427
|
+
pmullw xmm6, [rel PW_THREE]
|
428
|
+
pmullw xmm4, [rel PW_THREE]
|
429
|
+
paddw xmm1, [rel PW_EIGHT]
|
430
|
+
paddw xmm0, [rel PW_EIGHT]
|
431
|
+
paddw xmm7, [rel PW_SEVEN]
|
432
|
+
paddw xmm5, [rel PW_SEVEN]
|
433
|
+
|
434
|
+
paddw xmm1, xmm6
|
435
|
+
paddw xmm0, xmm4
|
436
|
+
psrlw xmm1, 4 ; xmm1=Out1LE=( 0 2 4 6 8 10 12 14)
|
437
|
+
psrlw xmm0, 4 ; xmm0=Out1HE=(16 18 20 22 24 26 28 30)
|
438
|
+
paddw xmm7, xmm6
|
439
|
+
paddw xmm5, xmm4
|
440
|
+
psrlw xmm7, 4 ; xmm7=Out1LO=( 1 3 5 7 9 11 13 15)
|
441
|
+
psrlw xmm5, 4 ; xmm5=Out1HO=(17 19 21 23 25 27 29 31)
|
442
|
+
|
443
|
+
psllw xmm7, BYTE_BIT
|
444
|
+
psllw xmm5, BYTE_BIT
|
445
|
+
por xmm1, xmm7 ; xmm1=Out1L=( 0 1 2 ... 13 14 15)
|
446
|
+
por xmm0, xmm5 ; xmm0=Out1H=(16 17 18 ... 29 30 31)
|
447
|
+
|
448
|
+
movdqa XMMWORD [rdi+0*SIZEOF_XMMWORD], xmm1
|
449
|
+
movdqa XMMWORD [rdi+1*SIZEOF_XMMWORD], xmm0
|
450
|
+
|
451
|
+
sub rax, byte SIZEOF_XMMWORD
|
452
|
+
add rcx, byte 1*SIZEOF_XMMWORD ; inptr1(above)
|
453
|
+
add rbx, byte 1*SIZEOF_XMMWORD ; inptr0
|
454
|
+
add rsi, byte 1*SIZEOF_XMMWORD ; inptr1(below)
|
455
|
+
add rdx, byte 2*SIZEOF_XMMWORD ; outptr0
|
456
|
+
add rdi, byte 2*SIZEOF_XMMWORD ; outptr1
|
457
|
+
cmp rax, byte SIZEOF_XMMWORD
|
458
|
+
ja near .columnloop
|
459
|
+
test rax, rax
|
460
|
+
jnz near .columnloop_last
|
461
|
+
|
462
|
+
pop rsi
|
463
|
+
pop rdi
|
464
|
+
pop rcx
|
465
|
+
pop rax
|
466
|
+
|
467
|
+
add rsi, byte 1*SIZEOF_JSAMPROW ; input_data
|
468
|
+
add rdi, byte 2*SIZEOF_JSAMPROW ; output_data
|
469
|
+
sub rcx, byte 2 ; rowctr
|
470
|
+
jg near .rowloop
|
471
|
+
|
472
|
+
.return:
|
473
|
+
pop rbx
|
474
|
+
uncollect_args 4
|
475
|
+
mov rsp, rbp ; rsp <- aligned rbp
|
476
|
+
pop rsp ; rsp <- original rbp
|
477
|
+
pop rbp
|
478
|
+
ret
|
479
|
+
|
480
|
+
; --------------------------------------------------------------------------
|
481
|
+
;
|
482
|
+
; Fast processing for the common case of 2:1 horizontal and 1:1 vertical.
|
483
|
+
; It's still a box filter.
|
484
|
+
;
|
485
|
+
; GLOBAL(void)
|
486
|
+
; jsimd_h2v1_upsample_sse2(int max_v_samp_factor, JDIMENSION output_width,
|
487
|
+
; JSAMPARRAY input_data, JSAMPARRAY *output_data_ptr);
|
488
|
+
;
|
489
|
+
|
490
|
+
; r10 = int max_v_samp_factor
|
491
|
+
; r11d = JDIMENSION output_width
|
492
|
+
; r12 = JSAMPARRAY input_data
|
493
|
+
; r13 = JSAMPARRAY *output_data_ptr
|
494
|
+
|
495
|
+
align 32
|
496
|
+
GLOBAL_FUNCTION(jsimd_h2v1_upsample_sse2)
|
497
|
+
|
498
|
+
EXTN(jsimd_h2v1_upsample_sse2):
|
499
|
+
push rbp
|
500
|
+
mov rax, rsp
|
501
|
+
mov rbp, rsp
|
502
|
+
collect_args 4
|
503
|
+
|
504
|
+
mov edx, r11d
|
505
|
+
add rdx, byte (2*SIZEOF_XMMWORD)-1
|
506
|
+
and rdx, byte -(2*SIZEOF_XMMWORD)
|
507
|
+
jz near .return
|
508
|
+
|
509
|
+
mov rcx, r10 ; rowctr
|
510
|
+
test rcx, rcx
|
511
|
+
jz short .return
|
512
|
+
|
513
|
+
mov rsi, r12 ; input_data
|
514
|
+
mov rdi, r13
|
515
|
+
mov rdi, JSAMPARRAY [rdi] ; output_data
|
516
|
+
.rowloop:
|
517
|
+
push rdi
|
518
|
+
push rsi
|
519
|
+
|
520
|
+
mov rsi, JSAMPROW [rsi] ; inptr
|
521
|
+
mov rdi, JSAMPROW [rdi] ; outptr
|
522
|
+
mov rax, rdx ; colctr
|
523
|
+
.columnloop:
|
524
|
+
|
525
|
+
movdqa xmm0, XMMWORD [rsi+0*SIZEOF_XMMWORD]
|
526
|
+
|
527
|
+
movdqa xmm1, xmm0
|
528
|
+
punpcklbw xmm0, xmm0
|
529
|
+
punpckhbw xmm1, xmm1
|
530
|
+
|
531
|
+
movdqa XMMWORD [rdi+0*SIZEOF_XMMWORD], xmm0
|
532
|
+
movdqa XMMWORD [rdi+1*SIZEOF_XMMWORD], xmm1
|
533
|
+
|
534
|
+
sub rax, byte 2*SIZEOF_XMMWORD
|
535
|
+
jz short .nextrow
|
536
|
+
|
537
|
+
movdqa xmm2, XMMWORD [rsi+1*SIZEOF_XMMWORD]
|
538
|
+
|
539
|
+
movdqa xmm3, xmm2
|
540
|
+
punpcklbw xmm2, xmm2
|
541
|
+
punpckhbw xmm3, xmm3
|
542
|
+
|
543
|
+
movdqa XMMWORD [rdi+2*SIZEOF_XMMWORD], xmm2
|
544
|
+
movdqa XMMWORD [rdi+3*SIZEOF_XMMWORD], xmm3
|
545
|
+
|
546
|
+
sub rax, byte 2*SIZEOF_XMMWORD
|
547
|
+
jz short .nextrow
|
548
|
+
|
549
|
+
add rsi, byte 2*SIZEOF_XMMWORD ; inptr
|
550
|
+
add rdi, byte 4*SIZEOF_XMMWORD ; outptr
|
551
|
+
jmp short .columnloop
|
552
|
+
|
553
|
+
.nextrow:
|
554
|
+
pop rsi
|
555
|
+
pop rdi
|
556
|
+
|
557
|
+
add rsi, byte SIZEOF_JSAMPROW ; input_data
|
558
|
+
add rdi, byte SIZEOF_JSAMPROW ; output_data
|
559
|
+
dec rcx ; rowctr
|
560
|
+
jg short .rowloop
|
561
|
+
|
562
|
+
.return:
|
563
|
+
uncollect_args 4
|
564
|
+
pop rbp
|
565
|
+
ret
|
566
|
+
|
567
|
+
; --------------------------------------------------------------------------
|
568
|
+
;
|
569
|
+
; Fast processing for the common case of 2:1 horizontal and 2:1 vertical.
|
570
|
+
; It's still a box filter.
|
571
|
+
;
|
572
|
+
; GLOBAL(void)
|
573
|
+
; jsimd_h2v2_upsample_sse2(int max_v_samp_factor, JDIMENSION output_width,
|
574
|
+
; JSAMPARRAY input_data, JSAMPARRAY *output_data_ptr);
|
575
|
+
;
|
576
|
+
|
577
|
+
; r10 = int max_v_samp_factor
|
578
|
+
; r11d = JDIMENSION output_width
|
579
|
+
; r12 = JSAMPARRAY input_data
|
580
|
+
; r13 = JSAMPARRAY *output_data_ptr
|
581
|
+
|
582
|
+
align 32
|
583
|
+
GLOBAL_FUNCTION(jsimd_h2v2_upsample_sse2)
|
584
|
+
|
585
|
+
EXTN(jsimd_h2v2_upsample_sse2):
|
586
|
+
push rbp
|
587
|
+
mov rax, rsp
|
588
|
+
mov rbp, rsp
|
589
|
+
collect_args 4
|
590
|
+
push rbx
|
591
|
+
|
592
|
+
mov edx, r11d
|
593
|
+
add rdx, byte (2*SIZEOF_XMMWORD)-1
|
594
|
+
and rdx, byte -(2*SIZEOF_XMMWORD)
|
595
|
+
jz near .return
|
596
|
+
|
597
|
+
mov rcx, r10 ; rowctr
|
598
|
+
test rcx, rcx
|
599
|
+
jz near .return
|
600
|
+
|
601
|
+
mov rsi, r12 ; input_data
|
602
|
+
mov rdi, r13
|
603
|
+
mov rdi, JSAMPARRAY [rdi] ; output_data
|
604
|
+
.rowloop:
|
605
|
+
push rdi
|
606
|
+
push rsi
|
607
|
+
|
608
|
+
mov rsi, JSAMPROW [rsi] ; inptr
|
609
|
+
mov rbx, JSAMPROW [rdi+0*SIZEOF_JSAMPROW] ; outptr0
|
610
|
+
mov rdi, JSAMPROW [rdi+1*SIZEOF_JSAMPROW] ; outptr1
|
611
|
+
mov rax, rdx ; colctr
|
612
|
+
.columnloop:
|
613
|
+
|
614
|
+
movdqa xmm0, XMMWORD [rsi+0*SIZEOF_XMMWORD]
|
615
|
+
|
616
|
+
movdqa xmm1, xmm0
|
617
|
+
punpcklbw xmm0, xmm0
|
618
|
+
punpckhbw xmm1, xmm1
|
619
|
+
|
620
|
+
movdqa XMMWORD [rbx+0*SIZEOF_XMMWORD], xmm0
|
621
|
+
movdqa XMMWORD [rbx+1*SIZEOF_XMMWORD], xmm1
|
622
|
+
movdqa XMMWORD [rdi+0*SIZEOF_XMMWORD], xmm0
|
623
|
+
movdqa XMMWORD [rdi+1*SIZEOF_XMMWORD], xmm1
|
624
|
+
|
625
|
+
sub rax, byte 2*SIZEOF_XMMWORD
|
626
|
+
jz short .nextrow
|
627
|
+
|
628
|
+
movdqa xmm2, XMMWORD [rsi+1*SIZEOF_XMMWORD]
|
629
|
+
|
630
|
+
movdqa xmm3, xmm2
|
631
|
+
punpcklbw xmm2, xmm2
|
632
|
+
punpckhbw xmm3, xmm3
|
633
|
+
|
634
|
+
movdqa XMMWORD [rbx+2*SIZEOF_XMMWORD], xmm2
|
635
|
+
movdqa XMMWORD [rbx+3*SIZEOF_XMMWORD], xmm3
|
636
|
+
movdqa XMMWORD [rdi+2*SIZEOF_XMMWORD], xmm2
|
637
|
+
movdqa XMMWORD [rdi+3*SIZEOF_XMMWORD], xmm3
|
638
|
+
|
639
|
+
sub rax, byte 2*SIZEOF_XMMWORD
|
640
|
+
jz short .nextrow
|
641
|
+
|
642
|
+
add rsi, byte 2*SIZEOF_XMMWORD ; inptr
|
643
|
+
add rbx, byte 4*SIZEOF_XMMWORD ; outptr0
|
644
|
+
add rdi, byte 4*SIZEOF_XMMWORD ; outptr1
|
645
|
+
jmp short .columnloop
|
646
|
+
|
647
|
+
.nextrow:
|
648
|
+
pop rsi
|
649
|
+
pop rdi
|
650
|
+
|
651
|
+
add rsi, byte 1*SIZEOF_JSAMPROW ; input_data
|
652
|
+
add rdi, byte 2*SIZEOF_JSAMPROW ; output_data
|
653
|
+
sub rcx, byte 2 ; rowctr
|
654
|
+
jg near .rowloop
|
655
|
+
|
656
|
+
.return:
|
657
|
+
pop rbx
|
658
|
+
uncollect_args 4
|
659
|
+
pop rbp
|
660
|
+
ret
|
661
|
+
|
662
|
+
; For some reason, the OS X linker does not honor the request to align the
|
663
|
+
; segment unless we do this.
|
664
|
+
align 32
|