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,724 @@
|
|
1
|
+
;
|
2
|
+
; jdsample.asm - upsampling (SSE2)
|
3
|
+
;
|
4
|
+
; Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
|
5
|
+
; Copyright (C) 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 32
|
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
|
+
%define max_v_samp(b) (b) + 8 ; int max_v_samp_factor
|
54
|
+
%define downsamp_width(b) (b) + 12 ; JDIMENSION downsampled_width
|
55
|
+
%define input_data(b) (b) + 16 ; JSAMPARRAY input_data
|
56
|
+
%define output_data_ptr(b) (b) + 20 ; 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 ebp
|
63
|
+
mov ebp, esp
|
64
|
+
pushpic ebx
|
65
|
+
; push ecx ; need not be preserved
|
66
|
+
; push edx ; need not be preserved
|
67
|
+
push esi
|
68
|
+
push edi
|
69
|
+
|
70
|
+
get_GOT ebx ; get GOT address
|
71
|
+
|
72
|
+
mov eax, JDIMENSION [downsamp_width(ebp)] ; colctr
|
73
|
+
test eax, eax
|
74
|
+
jz near .return
|
75
|
+
|
76
|
+
mov ecx, INT [max_v_samp(ebp)] ; rowctr
|
77
|
+
test ecx, ecx
|
78
|
+
jz near .return
|
79
|
+
|
80
|
+
mov esi, JSAMPARRAY [input_data(ebp)] ; input_data
|
81
|
+
mov edi, POINTER [output_data_ptr(ebp)]
|
82
|
+
mov edi, JSAMPARRAY [edi] ; output_data
|
83
|
+
alignx 16, 7
|
84
|
+
.rowloop:
|
85
|
+
push eax ; colctr
|
86
|
+
push edi
|
87
|
+
push esi
|
88
|
+
|
89
|
+
mov esi, JSAMPROW [esi] ; inptr
|
90
|
+
mov edi, JSAMPROW [edi] ; outptr
|
91
|
+
|
92
|
+
test eax, SIZEOF_XMMWORD-1
|
93
|
+
jz short .skip
|
94
|
+
mov dl, JSAMPLE [esi+(eax-1)*SIZEOF_JSAMPLE]
|
95
|
+
mov JSAMPLE [esi+eax*SIZEOF_JSAMPLE], dl ; insert a dummy sample
|
96
|
+
.skip:
|
97
|
+
pxor xmm0, xmm0 ; xmm0=(all 0's)
|
98
|
+
pcmpeqb xmm7, xmm7
|
99
|
+
psrldq xmm7, (SIZEOF_XMMWORD-1)
|
100
|
+
pand xmm7, XMMWORD [esi+0*SIZEOF_XMMWORD]
|
101
|
+
|
102
|
+
add eax, byte SIZEOF_XMMWORD-1
|
103
|
+
and eax, byte -SIZEOF_XMMWORD
|
104
|
+
cmp eax, byte SIZEOF_XMMWORD
|
105
|
+
ja short .columnloop
|
106
|
+
alignx 16, 7
|
107
|
+
|
108
|
+
.columnloop_last:
|
109
|
+
pcmpeqb xmm6, xmm6
|
110
|
+
pslldq xmm6, (SIZEOF_XMMWORD-1)
|
111
|
+
pand xmm6, XMMWORD [esi+0*SIZEOF_XMMWORD]
|
112
|
+
jmp short .upsample
|
113
|
+
alignx 16, 7
|
114
|
+
|
115
|
+
.columnloop:
|
116
|
+
movdqa xmm6, XMMWORD [esi+1*SIZEOF_XMMWORD]
|
117
|
+
pslldq xmm6, (SIZEOF_XMMWORD-1)
|
118
|
+
|
119
|
+
.upsample:
|
120
|
+
movdqa xmm1, XMMWORD [esi+0*SIZEOF_XMMWORD]
|
121
|
+
movdqa xmm2, xmm1
|
122
|
+
movdqa xmm3, xmm1 ; xmm1=( 0 1 2 ... 13 14 15)
|
123
|
+
pslldq xmm2, 1 ; xmm2=(-- 0 1 ... 12 13 14)
|
124
|
+
psrldq xmm3, 1 ; xmm3=( 1 2 3 ... 14 15 --)
|
125
|
+
|
126
|
+
por xmm2, xmm7 ; xmm2=(-1 0 1 ... 12 13 14)
|
127
|
+
por xmm3, xmm6 ; xmm3=( 1 2 3 ... 14 15 16)
|
128
|
+
|
129
|
+
movdqa xmm7, xmm1
|
130
|
+
psrldq xmm7, (SIZEOF_XMMWORD-1) ; xmm7=(15 -- -- ... -- -- --)
|
131
|
+
|
132
|
+
movdqa xmm4, xmm1
|
133
|
+
punpcklbw xmm1, xmm0 ; xmm1=( 0 1 2 3 4 5 6 7)
|
134
|
+
punpckhbw xmm4, xmm0 ; xmm4=( 8 9 10 11 12 13 14 15)
|
135
|
+
movdqa xmm5, xmm2
|
136
|
+
punpcklbw xmm2, xmm0 ; xmm2=(-1 0 1 2 3 4 5 6)
|
137
|
+
punpckhbw xmm5, xmm0 ; xmm5=( 7 8 9 10 11 12 13 14)
|
138
|
+
movdqa xmm6, xmm3
|
139
|
+
punpcklbw xmm3, xmm0 ; xmm3=( 1 2 3 4 5 6 7 8)
|
140
|
+
punpckhbw xmm6, xmm0 ; xmm6=( 9 10 11 12 13 14 15 16)
|
141
|
+
|
142
|
+
pmullw xmm1, [GOTOFF(ebx,PW_THREE)]
|
143
|
+
pmullw xmm4, [GOTOFF(ebx,PW_THREE)]
|
144
|
+
paddw xmm2, [GOTOFF(ebx,PW_ONE)]
|
145
|
+
paddw xmm5, [GOTOFF(ebx,PW_ONE)]
|
146
|
+
paddw xmm3, [GOTOFF(ebx,PW_TWO)]
|
147
|
+
paddw xmm6, [GOTOFF(ebx,PW_TWO)]
|
148
|
+
|
149
|
+
paddw xmm2, xmm1
|
150
|
+
paddw xmm5, xmm4
|
151
|
+
psrlw xmm2, 2 ; xmm2=OutLE=( 0 2 4 6 8 10 12 14)
|
152
|
+
psrlw xmm5, 2 ; xmm5=OutHE=(16 18 20 22 24 26 28 30)
|
153
|
+
paddw xmm3, xmm1
|
154
|
+
paddw xmm6, xmm4
|
155
|
+
psrlw xmm3, 2 ; xmm3=OutLO=( 1 3 5 7 9 11 13 15)
|
156
|
+
psrlw xmm6, 2 ; xmm6=OutHO=(17 19 21 23 25 27 29 31)
|
157
|
+
|
158
|
+
psllw xmm3, BYTE_BIT
|
159
|
+
psllw xmm6, BYTE_BIT
|
160
|
+
por xmm2, xmm3 ; xmm2=OutL=( 0 1 2 ... 13 14 15)
|
161
|
+
por xmm5, xmm6 ; xmm5=OutH=(16 17 18 ... 29 30 31)
|
162
|
+
|
163
|
+
movdqa XMMWORD [edi+0*SIZEOF_XMMWORD], xmm2
|
164
|
+
movdqa XMMWORD [edi+1*SIZEOF_XMMWORD], xmm5
|
165
|
+
|
166
|
+
sub eax, byte SIZEOF_XMMWORD
|
167
|
+
add esi, byte 1*SIZEOF_XMMWORD ; inptr
|
168
|
+
add edi, byte 2*SIZEOF_XMMWORD ; outptr
|
169
|
+
cmp eax, byte SIZEOF_XMMWORD
|
170
|
+
ja near .columnloop
|
171
|
+
test eax, eax
|
172
|
+
jnz near .columnloop_last
|
173
|
+
|
174
|
+
pop esi
|
175
|
+
pop edi
|
176
|
+
pop eax
|
177
|
+
|
178
|
+
add esi, byte SIZEOF_JSAMPROW ; input_data
|
179
|
+
add edi, byte SIZEOF_JSAMPROW ; output_data
|
180
|
+
dec ecx ; rowctr
|
181
|
+
jg near .rowloop
|
182
|
+
|
183
|
+
.return:
|
184
|
+
pop edi
|
185
|
+
pop esi
|
186
|
+
; pop edx ; need not be preserved
|
187
|
+
; pop ecx ; need not be preserved
|
188
|
+
poppic ebx
|
189
|
+
pop ebp
|
190
|
+
ret
|
191
|
+
|
192
|
+
; --------------------------------------------------------------------------
|
193
|
+
;
|
194
|
+
; Fancy processing for the common case of 2:1 horizontal and 2:1 vertical.
|
195
|
+
; Again a triangle filter; see comments for h2v1 case, above.
|
196
|
+
;
|
197
|
+
; GLOBAL(void)
|
198
|
+
; jsimd_h2v2_fancy_upsample_sse2(int max_v_samp_factor,
|
199
|
+
; JDIMENSION downsampled_width,
|
200
|
+
; JSAMPARRAY input_data,
|
201
|
+
; JSAMPARRAY *output_data_ptr);
|
202
|
+
;
|
203
|
+
|
204
|
+
%define max_v_samp(b) (b) + 8 ; int max_v_samp_factor
|
205
|
+
%define downsamp_width(b) (b) + 12 ; JDIMENSION downsampled_width
|
206
|
+
%define input_data(b) (b) + 16 ; JSAMPARRAY input_data
|
207
|
+
%define output_data_ptr(b) (b) + 20 ; JSAMPARRAY *output_data_ptr
|
208
|
+
|
209
|
+
%define original_ebp ebp + 0
|
210
|
+
%define wk(i) ebp - (WK_NUM - (i)) * SIZEOF_XMMWORD
|
211
|
+
; xmmword wk[WK_NUM]
|
212
|
+
%define WK_NUM 4
|
213
|
+
%define gotptr wk(0) - SIZEOF_POINTER ; void *gotptr
|
214
|
+
|
215
|
+
align 32
|
216
|
+
GLOBAL_FUNCTION(jsimd_h2v2_fancy_upsample_sse2)
|
217
|
+
|
218
|
+
EXTN(jsimd_h2v2_fancy_upsample_sse2):
|
219
|
+
push ebp
|
220
|
+
mov eax, esp ; eax = original ebp
|
221
|
+
sub esp, byte 4
|
222
|
+
and esp, byte (-SIZEOF_XMMWORD) ; align to 128 bits
|
223
|
+
mov [esp], eax
|
224
|
+
mov ebp, esp ; ebp = aligned ebp
|
225
|
+
lea esp, [wk(0)]
|
226
|
+
pushpic eax ; make a room for GOT address
|
227
|
+
push ebx
|
228
|
+
; push ecx ; need not be preserved
|
229
|
+
; push edx ; need not be preserved
|
230
|
+
push esi
|
231
|
+
push edi
|
232
|
+
|
233
|
+
get_GOT ebx ; get GOT address
|
234
|
+
movpic POINTER [gotptr], ebx ; save GOT address
|
235
|
+
|
236
|
+
mov edx, eax ; edx = original ebp
|
237
|
+
mov eax, JDIMENSION [downsamp_width(edx)] ; colctr
|
238
|
+
test eax, eax
|
239
|
+
jz near .return
|
240
|
+
|
241
|
+
mov ecx, INT [max_v_samp(edx)] ; rowctr
|
242
|
+
test ecx, ecx
|
243
|
+
jz near .return
|
244
|
+
|
245
|
+
mov esi, JSAMPARRAY [input_data(edx)] ; input_data
|
246
|
+
mov edi, POINTER [output_data_ptr(edx)]
|
247
|
+
mov edi, JSAMPARRAY [edi] ; output_data
|
248
|
+
alignx 16, 7
|
249
|
+
.rowloop:
|
250
|
+
push eax ; colctr
|
251
|
+
push ecx
|
252
|
+
push edi
|
253
|
+
push esi
|
254
|
+
|
255
|
+
mov ecx, JSAMPROW [esi-1*SIZEOF_JSAMPROW] ; inptr1(above)
|
256
|
+
mov ebx, JSAMPROW [esi+0*SIZEOF_JSAMPROW] ; inptr0
|
257
|
+
mov esi, JSAMPROW [esi+1*SIZEOF_JSAMPROW] ; inptr1(below)
|
258
|
+
mov edx, JSAMPROW [edi+0*SIZEOF_JSAMPROW] ; outptr0
|
259
|
+
mov edi, JSAMPROW [edi+1*SIZEOF_JSAMPROW] ; outptr1
|
260
|
+
|
261
|
+
test eax, SIZEOF_XMMWORD-1
|
262
|
+
jz short .skip
|
263
|
+
push edx
|
264
|
+
mov dl, JSAMPLE [ecx+(eax-1)*SIZEOF_JSAMPLE]
|
265
|
+
mov JSAMPLE [ecx+eax*SIZEOF_JSAMPLE], dl
|
266
|
+
mov dl, JSAMPLE [ebx+(eax-1)*SIZEOF_JSAMPLE]
|
267
|
+
mov JSAMPLE [ebx+eax*SIZEOF_JSAMPLE], dl
|
268
|
+
mov dl, JSAMPLE [esi+(eax-1)*SIZEOF_JSAMPLE]
|
269
|
+
mov JSAMPLE [esi+eax*SIZEOF_JSAMPLE], dl ; insert a dummy sample
|
270
|
+
pop edx
|
271
|
+
.skip:
|
272
|
+
; -- process the first column block
|
273
|
+
|
274
|
+
movdqa xmm0, XMMWORD [ebx+0*SIZEOF_XMMWORD] ; xmm0=row[ 0][0]
|
275
|
+
movdqa xmm1, XMMWORD [ecx+0*SIZEOF_XMMWORD] ; xmm1=row[-1][0]
|
276
|
+
movdqa xmm2, XMMWORD [esi+0*SIZEOF_XMMWORD] ; xmm2=row[+1][0]
|
277
|
+
|
278
|
+
pushpic ebx
|
279
|
+
movpic ebx, POINTER [gotptr] ; load GOT address
|
280
|
+
|
281
|
+
pxor xmm3, xmm3 ; xmm3=(all 0's)
|
282
|
+
movdqa xmm4, xmm0
|
283
|
+
punpcklbw xmm0, xmm3 ; xmm0=row[ 0]( 0 1 2 3 4 5 6 7)
|
284
|
+
punpckhbw xmm4, xmm3 ; xmm4=row[ 0]( 8 9 10 11 12 13 14 15)
|
285
|
+
movdqa xmm5, xmm1
|
286
|
+
punpcklbw xmm1, xmm3 ; xmm1=row[-1]( 0 1 2 3 4 5 6 7)
|
287
|
+
punpckhbw xmm5, xmm3 ; xmm5=row[-1]( 8 9 10 11 12 13 14 15)
|
288
|
+
movdqa xmm6, xmm2
|
289
|
+
punpcklbw xmm2, xmm3 ; xmm2=row[+1]( 0 1 2 3 4 5 6 7)
|
290
|
+
punpckhbw xmm6, xmm3 ; xmm6=row[+1]( 8 9 10 11 12 13 14 15)
|
291
|
+
|
292
|
+
pmullw xmm0, [GOTOFF(ebx,PW_THREE)]
|
293
|
+
pmullw xmm4, [GOTOFF(ebx,PW_THREE)]
|
294
|
+
|
295
|
+
pcmpeqb xmm7, xmm7
|
296
|
+
psrldq xmm7, (SIZEOF_XMMWORD-2)
|
297
|
+
|
298
|
+
paddw xmm1, xmm0 ; xmm1=Int0L=( 0 1 2 3 4 5 6 7)
|
299
|
+
paddw xmm5, xmm4 ; xmm5=Int0H=( 8 9 10 11 12 13 14 15)
|
300
|
+
paddw xmm2, xmm0 ; xmm2=Int1L=( 0 1 2 3 4 5 6 7)
|
301
|
+
paddw xmm6, xmm4 ; xmm6=Int1H=( 8 9 10 11 12 13 14 15)
|
302
|
+
|
303
|
+
movdqa XMMWORD [edx+0*SIZEOF_XMMWORD], xmm1 ; temporarily save
|
304
|
+
movdqa XMMWORD [edx+1*SIZEOF_XMMWORD], xmm5 ; the intermediate data
|
305
|
+
movdqa XMMWORD [edi+0*SIZEOF_XMMWORD], xmm2
|
306
|
+
movdqa XMMWORD [edi+1*SIZEOF_XMMWORD], xmm6
|
307
|
+
|
308
|
+
pand xmm1, xmm7 ; xmm1=( 0 -- -- -- -- -- -- --)
|
309
|
+
pand xmm2, xmm7 ; xmm2=( 0 -- -- -- -- -- -- --)
|
310
|
+
|
311
|
+
movdqa XMMWORD [wk(0)], xmm1
|
312
|
+
movdqa XMMWORD [wk(1)], xmm2
|
313
|
+
|
314
|
+
poppic ebx
|
315
|
+
|
316
|
+
add eax, byte SIZEOF_XMMWORD-1
|
317
|
+
and eax, byte -SIZEOF_XMMWORD
|
318
|
+
cmp eax, byte SIZEOF_XMMWORD
|
319
|
+
ja short .columnloop
|
320
|
+
alignx 16, 7
|
321
|
+
|
322
|
+
.columnloop_last:
|
323
|
+
; -- process the last column block
|
324
|
+
|
325
|
+
pushpic ebx
|
326
|
+
movpic ebx, POINTER [gotptr] ; load GOT address
|
327
|
+
|
328
|
+
pcmpeqb xmm1, xmm1
|
329
|
+
pslldq xmm1, (SIZEOF_XMMWORD-2)
|
330
|
+
movdqa xmm2, xmm1
|
331
|
+
|
332
|
+
pand xmm1, XMMWORD [edx+1*SIZEOF_XMMWORD]
|
333
|
+
pand xmm2, XMMWORD [edi+1*SIZEOF_XMMWORD]
|
334
|
+
|
335
|
+
movdqa XMMWORD [wk(2)], xmm1 ; xmm1=(-- -- -- -- -- -- -- 15)
|
336
|
+
movdqa XMMWORD [wk(3)], xmm2 ; xmm2=(-- -- -- -- -- -- -- 15)
|
337
|
+
|
338
|
+
jmp near .upsample
|
339
|
+
alignx 16, 7
|
340
|
+
|
341
|
+
.columnloop:
|
342
|
+
; -- process the next column block
|
343
|
+
|
344
|
+
movdqa xmm0, XMMWORD [ebx+1*SIZEOF_XMMWORD] ; xmm0=row[ 0][1]
|
345
|
+
movdqa xmm1, XMMWORD [ecx+1*SIZEOF_XMMWORD] ; xmm1=row[-1][1]
|
346
|
+
movdqa xmm2, XMMWORD [esi+1*SIZEOF_XMMWORD] ; xmm2=row[+1][1]
|
347
|
+
|
348
|
+
pushpic ebx
|
349
|
+
movpic ebx, POINTER [gotptr] ; load GOT address
|
350
|
+
|
351
|
+
pxor xmm3, xmm3 ; xmm3=(all 0's)
|
352
|
+
movdqa xmm4, xmm0
|
353
|
+
punpcklbw xmm0, xmm3 ; xmm0=row[ 0]( 0 1 2 3 4 5 6 7)
|
354
|
+
punpckhbw xmm4, xmm3 ; xmm4=row[ 0]( 8 9 10 11 12 13 14 15)
|
355
|
+
movdqa xmm5, xmm1
|
356
|
+
punpcklbw xmm1, xmm3 ; xmm1=row[-1]( 0 1 2 3 4 5 6 7)
|
357
|
+
punpckhbw xmm5, xmm3 ; xmm5=row[-1]( 8 9 10 11 12 13 14 15)
|
358
|
+
movdqa xmm6, xmm2
|
359
|
+
punpcklbw xmm2, xmm3 ; xmm2=row[+1]( 0 1 2 3 4 5 6 7)
|
360
|
+
punpckhbw xmm6, xmm3 ; xmm6=row[+1]( 8 9 10 11 12 13 14 15)
|
361
|
+
|
362
|
+
pmullw xmm0, [GOTOFF(ebx,PW_THREE)]
|
363
|
+
pmullw xmm4, [GOTOFF(ebx,PW_THREE)]
|
364
|
+
|
365
|
+
paddw xmm1, xmm0 ; xmm1=Int0L=( 0 1 2 3 4 5 6 7)
|
366
|
+
paddw xmm5, xmm4 ; xmm5=Int0H=( 8 9 10 11 12 13 14 15)
|
367
|
+
paddw xmm2, xmm0 ; xmm2=Int1L=( 0 1 2 3 4 5 6 7)
|
368
|
+
paddw xmm6, xmm4 ; xmm6=Int1H=( 8 9 10 11 12 13 14 15)
|
369
|
+
|
370
|
+
movdqa XMMWORD [edx+2*SIZEOF_XMMWORD], xmm1 ; temporarily save
|
371
|
+
movdqa XMMWORD [edx+3*SIZEOF_XMMWORD], xmm5 ; the intermediate data
|
372
|
+
movdqa XMMWORD [edi+2*SIZEOF_XMMWORD], xmm2
|
373
|
+
movdqa XMMWORD [edi+3*SIZEOF_XMMWORD], xmm6
|
374
|
+
|
375
|
+
pslldq xmm1, (SIZEOF_XMMWORD-2) ; xmm1=(-- -- -- -- -- -- -- 0)
|
376
|
+
pslldq xmm2, (SIZEOF_XMMWORD-2) ; xmm2=(-- -- -- -- -- -- -- 0)
|
377
|
+
|
378
|
+
movdqa XMMWORD [wk(2)], xmm1
|
379
|
+
movdqa XMMWORD [wk(3)], xmm2
|
380
|
+
|
381
|
+
.upsample:
|
382
|
+
; -- process the upper row
|
383
|
+
|
384
|
+
movdqa xmm7, XMMWORD [edx+0*SIZEOF_XMMWORD]
|
385
|
+
movdqa xmm3, XMMWORD [edx+1*SIZEOF_XMMWORD]
|
386
|
+
|
387
|
+
movdqa xmm0, xmm7 ; xmm7=Int0L=( 0 1 2 3 4 5 6 7)
|
388
|
+
movdqa xmm4, xmm3 ; xmm3=Int0H=( 8 9 10 11 12 13 14 15)
|
389
|
+
psrldq xmm0, 2 ; xmm0=( 1 2 3 4 5 6 7 --)
|
390
|
+
pslldq xmm4, (SIZEOF_XMMWORD-2) ; xmm4=(-- -- -- -- -- -- -- 8)
|
391
|
+
movdqa xmm5, xmm7
|
392
|
+
movdqa xmm6, xmm3
|
393
|
+
psrldq xmm5, (SIZEOF_XMMWORD-2) ; xmm5=( 7 -- -- -- -- -- -- --)
|
394
|
+
pslldq xmm6, 2 ; xmm6=(-- 8 9 10 11 12 13 14)
|
395
|
+
|
396
|
+
por xmm0, xmm4 ; xmm0=( 1 2 3 4 5 6 7 8)
|
397
|
+
por xmm5, xmm6 ; xmm5=( 7 8 9 10 11 12 13 14)
|
398
|
+
|
399
|
+
movdqa xmm1, xmm7
|
400
|
+
movdqa xmm2, xmm3
|
401
|
+
pslldq xmm1, 2 ; xmm1=(-- 0 1 2 3 4 5 6)
|
402
|
+
psrldq xmm2, 2 ; xmm2=( 9 10 11 12 13 14 15 --)
|
403
|
+
movdqa xmm4, xmm3
|
404
|
+
psrldq xmm4, (SIZEOF_XMMWORD-2) ; xmm4=(15 -- -- -- -- -- -- --)
|
405
|
+
|
406
|
+
por xmm1, XMMWORD [wk(0)] ; xmm1=(-1 0 1 2 3 4 5 6)
|
407
|
+
por xmm2, XMMWORD [wk(2)] ; xmm2=( 9 10 11 12 13 14 15 16)
|
408
|
+
|
409
|
+
movdqa XMMWORD [wk(0)], xmm4
|
410
|
+
|
411
|
+
pmullw xmm7, [GOTOFF(ebx,PW_THREE)]
|
412
|
+
pmullw xmm3, [GOTOFF(ebx,PW_THREE)]
|
413
|
+
paddw xmm1, [GOTOFF(ebx,PW_EIGHT)]
|
414
|
+
paddw xmm5, [GOTOFF(ebx,PW_EIGHT)]
|
415
|
+
paddw xmm0, [GOTOFF(ebx,PW_SEVEN)]
|
416
|
+
paddw xmm2, [GOTOFF(ebx,PW_SEVEN)]
|
417
|
+
|
418
|
+
paddw xmm1, xmm7
|
419
|
+
paddw xmm5, xmm3
|
420
|
+
psrlw xmm1, 4 ; xmm1=Out0LE=( 0 2 4 6 8 10 12 14)
|
421
|
+
psrlw xmm5, 4 ; xmm5=Out0HE=(16 18 20 22 24 26 28 30)
|
422
|
+
paddw xmm0, xmm7
|
423
|
+
paddw xmm2, xmm3
|
424
|
+
psrlw xmm0, 4 ; xmm0=Out0LO=( 1 3 5 7 9 11 13 15)
|
425
|
+
psrlw xmm2, 4 ; xmm2=Out0HO=(17 19 21 23 25 27 29 31)
|
426
|
+
|
427
|
+
psllw xmm0, BYTE_BIT
|
428
|
+
psllw xmm2, BYTE_BIT
|
429
|
+
por xmm1, xmm0 ; xmm1=Out0L=( 0 1 2 ... 13 14 15)
|
430
|
+
por xmm5, xmm2 ; xmm5=Out0H=(16 17 18 ... 29 30 31)
|
431
|
+
|
432
|
+
movdqa XMMWORD [edx+0*SIZEOF_XMMWORD], xmm1
|
433
|
+
movdqa XMMWORD [edx+1*SIZEOF_XMMWORD], xmm5
|
434
|
+
|
435
|
+
; -- process the lower row
|
436
|
+
|
437
|
+
movdqa xmm6, XMMWORD [edi+0*SIZEOF_XMMWORD]
|
438
|
+
movdqa xmm4, XMMWORD [edi+1*SIZEOF_XMMWORD]
|
439
|
+
|
440
|
+
movdqa xmm7, xmm6 ; xmm6=Int1L=( 0 1 2 3 4 5 6 7)
|
441
|
+
movdqa xmm3, xmm4 ; xmm4=Int1H=( 8 9 10 11 12 13 14 15)
|
442
|
+
psrldq xmm7, 2 ; xmm7=( 1 2 3 4 5 6 7 --)
|
443
|
+
pslldq xmm3, (SIZEOF_XMMWORD-2) ; xmm3=(-- -- -- -- -- -- -- 8)
|
444
|
+
movdqa xmm0, xmm6
|
445
|
+
movdqa xmm2, xmm4
|
446
|
+
psrldq xmm0, (SIZEOF_XMMWORD-2) ; xmm0=( 7 -- -- -- -- -- -- --)
|
447
|
+
pslldq xmm2, 2 ; xmm2=(-- 8 9 10 11 12 13 14)
|
448
|
+
|
449
|
+
por xmm7, xmm3 ; xmm7=( 1 2 3 4 5 6 7 8)
|
450
|
+
por xmm0, xmm2 ; xmm0=( 7 8 9 10 11 12 13 14)
|
451
|
+
|
452
|
+
movdqa xmm1, xmm6
|
453
|
+
movdqa xmm5, xmm4
|
454
|
+
pslldq xmm1, 2 ; xmm1=(-- 0 1 2 3 4 5 6)
|
455
|
+
psrldq xmm5, 2 ; xmm5=( 9 10 11 12 13 14 15 --)
|
456
|
+
movdqa xmm3, xmm4
|
457
|
+
psrldq xmm3, (SIZEOF_XMMWORD-2) ; xmm3=(15 -- -- -- -- -- -- --)
|
458
|
+
|
459
|
+
por xmm1, XMMWORD [wk(1)] ; xmm1=(-1 0 1 2 3 4 5 6)
|
460
|
+
por xmm5, XMMWORD [wk(3)] ; xmm5=( 9 10 11 12 13 14 15 16)
|
461
|
+
|
462
|
+
movdqa XMMWORD [wk(1)], xmm3
|
463
|
+
|
464
|
+
pmullw xmm6, [GOTOFF(ebx,PW_THREE)]
|
465
|
+
pmullw xmm4, [GOTOFF(ebx,PW_THREE)]
|
466
|
+
paddw xmm1, [GOTOFF(ebx,PW_EIGHT)]
|
467
|
+
paddw xmm0, [GOTOFF(ebx,PW_EIGHT)]
|
468
|
+
paddw xmm7, [GOTOFF(ebx,PW_SEVEN)]
|
469
|
+
paddw xmm5, [GOTOFF(ebx,PW_SEVEN)]
|
470
|
+
|
471
|
+
paddw xmm1, xmm6
|
472
|
+
paddw xmm0, xmm4
|
473
|
+
psrlw xmm1, 4 ; xmm1=Out1LE=( 0 2 4 6 8 10 12 14)
|
474
|
+
psrlw xmm0, 4 ; xmm0=Out1HE=(16 18 20 22 24 26 28 30)
|
475
|
+
paddw xmm7, xmm6
|
476
|
+
paddw xmm5, xmm4
|
477
|
+
psrlw xmm7, 4 ; xmm7=Out1LO=( 1 3 5 7 9 11 13 15)
|
478
|
+
psrlw xmm5, 4 ; xmm5=Out1HO=(17 19 21 23 25 27 29 31)
|
479
|
+
|
480
|
+
psllw xmm7, BYTE_BIT
|
481
|
+
psllw xmm5, BYTE_BIT
|
482
|
+
por xmm1, xmm7 ; xmm1=Out1L=( 0 1 2 ... 13 14 15)
|
483
|
+
por xmm0, xmm5 ; xmm0=Out1H=(16 17 18 ... 29 30 31)
|
484
|
+
|
485
|
+
movdqa XMMWORD [edi+0*SIZEOF_XMMWORD], xmm1
|
486
|
+
movdqa XMMWORD [edi+1*SIZEOF_XMMWORD], xmm0
|
487
|
+
|
488
|
+
poppic ebx
|
489
|
+
|
490
|
+
sub eax, byte SIZEOF_XMMWORD
|
491
|
+
add ecx, byte 1*SIZEOF_XMMWORD ; inptr1(above)
|
492
|
+
add ebx, byte 1*SIZEOF_XMMWORD ; inptr0
|
493
|
+
add esi, byte 1*SIZEOF_XMMWORD ; inptr1(below)
|
494
|
+
add edx, byte 2*SIZEOF_XMMWORD ; outptr0
|
495
|
+
add edi, byte 2*SIZEOF_XMMWORD ; outptr1
|
496
|
+
cmp eax, byte SIZEOF_XMMWORD
|
497
|
+
ja near .columnloop
|
498
|
+
test eax, eax
|
499
|
+
jnz near .columnloop_last
|
500
|
+
|
501
|
+
pop esi
|
502
|
+
pop edi
|
503
|
+
pop ecx
|
504
|
+
pop eax
|
505
|
+
|
506
|
+
add esi, byte 1*SIZEOF_JSAMPROW ; input_data
|
507
|
+
add edi, byte 2*SIZEOF_JSAMPROW ; output_data
|
508
|
+
sub ecx, byte 2 ; rowctr
|
509
|
+
jg near .rowloop
|
510
|
+
|
511
|
+
.return:
|
512
|
+
pop edi
|
513
|
+
pop esi
|
514
|
+
; pop edx ; need not be preserved
|
515
|
+
; pop ecx ; need not be preserved
|
516
|
+
pop ebx
|
517
|
+
mov esp, ebp ; esp <- aligned ebp
|
518
|
+
pop esp ; esp <- original ebp
|
519
|
+
pop ebp
|
520
|
+
ret
|
521
|
+
|
522
|
+
; --------------------------------------------------------------------------
|
523
|
+
;
|
524
|
+
; Fast processing for the common case of 2:1 horizontal and 1:1 vertical.
|
525
|
+
; It's still a box filter.
|
526
|
+
;
|
527
|
+
; GLOBAL(void)
|
528
|
+
; jsimd_h2v1_upsample_sse2(int max_v_samp_factor, JDIMENSION output_width,
|
529
|
+
; JSAMPARRAY input_data, JSAMPARRAY *output_data_ptr);
|
530
|
+
;
|
531
|
+
|
532
|
+
%define max_v_samp(b) (b) + 8 ; int max_v_samp_factor
|
533
|
+
%define output_width(b) (b) + 12 ; JDIMENSION output_width
|
534
|
+
%define input_data(b) (b) + 16 ; JSAMPARRAY input_data
|
535
|
+
%define output_data_ptr(b) (b) + 20 ; JSAMPARRAY *output_data_ptr
|
536
|
+
|
537
|
+
align 32
|
538
|
+
GLOBAL_FUNCTION(jsimd_h2v1_upsample_sse2)
|
539
|
+
|
540
|
+
EXTN(jsimd_h2v1_upsample_sse2):
|
541
|
+
push ebp
|
542
|
+
mov ebp, esp
|
543
|
+
; push ebx ; unused
|
544
|
+
; push ecx ; need not be preserved
|
545
|
+
; push edx ; need not be preserved
|
546
|
+
push esi
|
547
|
+
push edi
|
548
|
+
|
549
|
+
mov edx, JDIMENSION [output_width(ebp)]
|
550
|
+
add edx, byte (2*SIZEOF_XMMWORD)-1
|
551
|
+
and edx, byte -(2*SIZEOF_XMMWORD)
|
552
|
+
jz short .return
|
553
|
+
|
554
|
+
mov ecx, INT [max_v_samp(ebp)] ; rowctr
|
555
|
+
test ecx, ecx
|
556
|
+
jz short .return
|
557
|
+
|
558
|
+
mov esi, JSAMPARRAY [input_data(ebp)] ; input_data
|
559
|
+
mov edi, POINTER [output_data_ptr(ebp)]
|
560
|
+
mov edi, JSAMPARRAY [edi] ; output_data
|
561
|
+
alignx 16, 7
|
562
|
+
.rowloop:
|
563
|
+
push edi
|
564
|
+
push esi
|
565
|
+
|
566
|
+
mov esi, JSAMPROW [esi] ; inptr
|
567
|
+
mov edi, JSAMPROW [edi] ; outptr
|
568
|
+
mov eax, edx ; colctr
|
569
|
+
alignx 16, 7
|
570
|
+
.columnloop:
|
571
|
+
|
572
|
+
movdqa xmm0, XMMWORD [esi+0*SIZEOF_XMMWORD]
|
573
|
+
|
574
|
+
movdqa xmm1, xmm0
|
575
|
+
punpcklbw xmm0, xmm0
|
576
|
+
punpckhbw xmm1, xmm1
|
577
|
+
|
578
|
+
movdqa XMMWORD [edi+0*SIZEOF_XMMWORD], xmm0
|
579
|
+
movdqa XMMWORD [edi+1*SIZEOF_XMMWORD], xmm1
|
580
|
+
|
581
|
+
sub eax, byte 2*SIZEOF_XMMWORD
|
582
|
+
jz short .nextrow
|
583
|
+
|
584
|
+
movdqa xmm2, XMMWORD [esi+1*SIZEOF_XMMWORD]
|
585
|
+
|
586
|
+
movdqa xmm3, xmm2
|
587
|
+
punpcklbw xmm2, xmm2
|
588
|
+
punpckhbw xmm3, xmm3
|
589
|
+
|
590
|
+
movdqa XMMWORD [edi+2*SIZEOF_XMMWORD], xmm2
|
591
|
+
movdqa XMMWORD [edi+3*SIZEOF_XMMWORD], xmm3
|
592
|
+
|
593
|
+
sub eax, byte 2*SIZEOF_XMMWORD
|
594
|
+
jz short .nextrow
|
595
|
+
|
596
|
+
add esi, byte 2*SIZEOF_XMMWORD ; inptr
|
597
|
+
add edi, byte 4*SIZEOF_XMMWORD ; outptr
|
598
|
+
jmp short .columnloop
|
599
|
+
alignx 16, 7
|
600
|
+
|
601
|
+
.nextrow:
|
602
|
+
pop esi
|
603
|
+
pop edi
|
604
|
+
|
605
|
+
add esi, byte SIZEOF_JSAMPROW ; input_data
|
606
|
+
add edi, byte SIZEOF_JSAMPROW ; output_data
|
607
|
+
dec ecx ; rowctr
|
608
|
+
jg short .rowloop
|
609
|
+
|
610
|
+
.return:
|
611
|
+
pop edi
|
612
|
+
pop esi
|
613
|
+
; pop edx ; need not be preserved
|
614
|
+
; pop ecx ; need not be preserved
|
615
|
+
; pop ebx ; unused
|
616
|
+
pop ebp
|
617
|
+
ret
|
618
|
+
|
619
|
+
; --------------------------------------------------------------------------
|
620
|
+
;
|
621
|
+
; Fast processing for the common case of 2:1 horizontal and 2:1 vertical.
|
622
|
+
; It's still a box filter.
|
623
|
+
;
|
624
|
+
; GLOBAL(void)
|
625
|
+
; jsimd_h2v2_upsample_sse2(int max_v_samp_factor, JDIMENSION output_width,
|
626
|
+
; JSAMPARRAY input_data, JSAMPARRAY *output_data_ptr);
|
627
|
+
;
|
628
|
+
|
629
|
+
%define max_v_samp(b) (b) + 8 ; int max_v_samp_factor
|
630
|
+
%define output_width(b) (b) + 12 ; JDIMENSION output_width
|
631
|
+
%define input_data(b) (b) + 16 ; JSAMPARRAY input_data
|
632
|
+
%define output_data_ptr(b) (b) + 20 ; JSAMPARRAY *output_data_ptr
|
633
|
+
|
634
|
+
align 32
|
635
|
+
GLOBAL_FUNCTION(jsimd_h2v2_upsample_sse2)
|
636
|
+
|
637
|
+
EXTN(jsimd_h2v2_upsample_sse2):
|
638
|
+
push ebp
|
639
|
+
mov ebp, esp
|
640
|
+
push ebx
|
641
|
+
; push ecx ; need not be preserved
|
642
|
+
; push edx ; need not be preserved
|
643
|
+
push esi
|
644
|
+
push edi
|
645
|
+
|
646
|
+
mov edx, JDIMENSION [output_width(ebp)]
|
647
|
+
add edx, byte (2*SIZEOF_XMMWORD)-1
|
648
|
+
and edx, byte -(2*SIZEOF_XMMWORD)
|
649
|
+
jz near .return
|
650
|
+
|
651
|
+
mov ecx, INT [max_v_samp(ebp)] ; rowctr
|
652
|
+
test ecx, ecx
|
653
|
+
jz near .return
|
654
|
+
|
655
|
+
mov esi, JSAMPARRAY [input_data(ebp)] ; input_data
|
656
|
+
mov edi, POINTER [output_data_ptr(ebp)]
|
657
|
+
mov edi, JSAMPARRAY [edi] ; output_data
|
658
|
+
alignx 16, 7
|
659
|
+
.rowloop:
|
660
|
+
push edi
|
661
|
+
push esi
|
662
|
+
|
663
|
+
mov esi, JSAMPROW [esi] ; inptr
|
664
|
+
mov ebx, JSAMPROW [edi+0*SIZEOF_JSAMPROW] ; outptr0
|
665
|
+
mov edi, JSAMPROW [edi+1*SIZEOF_JSAMPROW] ; outptr1
|
666
|
+
mov eax, edx ; colctr
|
667
|
+
alignx 16, 7
|
668
|
+
.columnloop:
|
669
|
+
|
670
|
+
movdqa xmm0, XMMWORD [esi+0*SIZEOF_XMMWORD]
|
671
|
+
|
672
|
+
movdqa xmm1, xmm0
|
673
|
+
punpcklbw xmm0, xmm0
|
674
|
+
punpckhbw xmm1, xmm1
|
675
|
+
|
676
|
+
movdqa XMMWORD [ebx+0*SIZEOF_XMMWORD], xmm0
|
677
|
+
movdqa XMMWORD [ebx+1*SIZEOF_XMMWORD], xmm1
|
678
|
+
movdqa XMMWORD [edi+0*SIZEOF_XMMWORD], xmm0
|
679
|
+
movdqa XMMWORD [edi+1*SIZEOF_XMMWORD], xmm1
|
680
|
+
|
681
|
+
sub eax, byte 2*SIZEOF_XMMWORD
|
682
|
+
jz short .nextrow
|
683
|
+
|
684
|
+
movdqa xmm2, XMMWORD [esi+1*SIZEOF_XMMWORD]
|
685
|
+
|
686
|
+
movdqa xmm3, xmm2
|
687
|
+
punpcklbw xmm2, xmm2
|
688
|
+
punpckhbw xmm3, xmm3
|
689
|
+
|
690
|
+
movdqa XMMWORD [ebx+2*SIZEOF_XMMWORD], xmm2
|
691
|
+
movdqa XMMWORD [ebx+3*SIZEOF_XMMWORD], xmm3
|
692
|
+
movdqa XMMWORD [edi+2*SIZEOF_XMMWORD], xmm2
|
693
|
+
movdqa XMMWORD [edi+3*SIZEOF_XMMWORD], xmm3
|
694
|
+
|
695
|
+
sub eax, byte 2*SIZEOF_XMMWORD
|
696
|
+
jz short .nextrow
|
697
|
+
|
698
|
+
add esi, byte 2*SIZEOF_XMMWORD ; inptr
|
699
|
+
add ebx, byte 4*SIZEOF_XMMWORD ; outptr0
|
700
|
+
add edi, byte 4*SIZEOF_XMMWORD ; outptr1
|
701
|
+
jmp short .columnloop
|
702
|
+
alignx 16, 7
|
703
|
+
|
704
|
+
.nextrow:
|
705
|
+
pop esi
|
706
|
+
pop edi
|
707
|
+
|
708
|
+
add esi, byte 1*SIZEOF_JSAMPROW ; input_data
|
709
|
+
add edi, byte 2*SIZEOF_JSAMPROW ; output_data
|
710
|
+
sub ecx, byte 2 ; rowctr
|
711
|
+
jg short .rowloop
|
712
|
+
|
713
|
+
.return:
|
714
|
+
pop edi
|
715
|
+
pop esi
|
716
|
+
; pop edx ; need not be preserved
|
717
|
+
; pop ecx ; need not be preserved
|
718
|
+
pop ebx
|
719
|
+
pop ebp
|
720
|
+
ret
|
721
|
+
|
722
|
+
; For some reason, the OS X linker does not honor the request to align the
|
723
|
+
; segment unless we do this.
|
724
|
+
align 32
|