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,704 @@
|
|
1
|
+
;
|
2
|
+
; jidctred.asm - reduced-size IDCT (MMX)
|
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
|
+
; This file contains inverse-DCT routines that produce reduced-size
|
18
|
+
; output: either 4x4 or 2x2 pixels from an 8x8 DCT block.
|
19
|
+
; The following code is based directly on the IJG's original jidctred.c;
|
20
|
+
; see the jidctred.c for more details.
|
21
|
+
|
22
|
+
%include "jsimdext.inc"
|
23
|
+
%include "jdct.inc"
|
24
|
+
|
25
|
+
; --------------------------------------------------------------------------
|
26
|
+
|
27
|
+
%define CONST_BITS 13
|
28
|
+
%define PASS1_BITS 2
|
29
|
+
|
30
|
+
%define DESCALE_P1_4 (CONST_BITS - PASS1_BITS + 1)
|
31
|
+
%define DESCALE_P2_4 (CONST_BITS + PASS1_BITS + 3 + 1)
|
32
|
+
%define DESCALE_P1_2 (CONST_BITS - PASS1_BITS + 2)
|
33
|
+
%define DESCALE_P2_2 (CONST_BITS + PASS1_BITS + 3 + 2)
|
34
|
+
|
35
|
+
%if CONST_BITS == 13
|
36
|
+
F_0_211 equ 1730 ; FIX(0.211164243)
|
37
|
+
F_0_509 equ 4176 ; FIX(0.509795579)
|
38
|
+
F_0_601 equ 4926 ; FIX(0.601344887)
|
39
|
+
F_0_720 equ 5906 ; FIX(0.720959822)
|
40
|
+
F_0_765 equ 6270 ; FIX(0.765366865)
|
41
|
+
F_0_850 equ 6967 ; FIX(0.850430095)
|
42
|
+
F_0_899 equ 7373 ; FIX(0.899976223)
|
43
|
+
F_1_061 equ 8697 ; FIX(1.061594337)
|
44
|
+
F_1_272 equ 10426 ; FIX(1.272758580)
|
45
|
+
F_1_451 equ 11893 ; FIX(1.451774981)
|
46
|
+
F_1_847 equ 15137 ; FIX(1.847759065)
|
47
|
+
F_2_172 equ 17799 ; FIX(2.172734803)
|
48
|
+
F_2_562 equ 20995 ; FIX(2.562915447)
|
49
|
+
F_3_624 equ 29692 ; FIX(3.624509785)
|
50
|
+
%else
|
51
|
+
; NASM cannot do compile-time arithmetic on floating-point constants.
|
52
|
+
%define DESCALE(x, n) (((x) + (1 << ((n) - 1))) >> (n))
|
53
|
+
F_0_211 equ DESCALE( 226735879, 30 - CONST_BITS) ; FIX(0.211164243)
|
54
|
+
F_0_509 equ DESCALE( 547388834, 30 - CONST_BITS) ; FIX(0.509795579)
|
55
|
+
F_0_601 equ DESCALE( 645689155, 30 - CONST_BITS) ; FIX(0.601344887)
|
56
|
+
F_0_720 equ DESCALE( 774124714, 30 - CONST_BITS) ; FIX(0.720959822)
|
57
|
+
F_0_765 equ DESCALE( 821806413, 30 - CONST_BITS) ; FIX(0.765366865)
|
58
|
+
F_0_850 equ DESCALE( 913142361, 30 - CONST_BITS) ; FIX(0.850430095)
|
59
|
+
F_0_899 equ DESCALE( 966342111, 30 - CONST_BITS) ; FIX(0.899976223)
|
60
|
+
F_1_061 equ DESCALE(1139878239, 30 - CONST_BITS) ; FIX(1.061594337)
|
61
|
+
F_1_272 equ DESCALE(1366614119, 30 - CONST_BITS) ; FIX(1.272758580)
|
62
|
+
F_1_451 equ DESCALE(1558831516, 30 - CONST_BITS) ; FIX(1.451774981)
|
63
|
+
F_1_847 equ DESCALE(1984016188, 30 - CONST_BITS) ; FIX(1.847759065)
|
64
|
+
F_2_172 equ DESCALE(2332956230, 30 - CONST_BITS) ; FIX(2.172734803)
|
65
|
+
F_2_562 equ DESCALE(2751909506, 30 - CONST_BITS) ; FIX(2.562915447)
|
66
|
+
F_3_624 equ DESCALE(3891787747, 30 - CONST_BITS) ; FIX(3.624509785)
|
67
|
+
%endif
|
68
|
+
|
69
|
+
; --------------------------------------------------------------------------
|
70
|
+
SECTION SEG_CONST
|
71
|
+
|
72
|
+
alignz 32
|
73
|
+
GLOBAL_DATA(jconst_idct_red_mmx)
|
74
|
+
|
75
|
+
EXTN(jconst_idct_red_mmx):
|
76
|
+
|
77
|
+
PW_F184_MF076 times 2 dw F_1_847, -F_0_765
|
78
|
+
PW_F256_F089 times 2 dw F_2_562, F_0_899
|
79
|
+
PW_F106_MF217 times 2 dw F_1_061, -F_2_172
|
80
|
+
PW_MF060_MF050 times 2 dw -F_0_601, -F_0_509
|
81
|
+
PW_F145_MF021 times 2 dw F_1_451, -F_0_211
|
82
|
+
PW_F362_MF127 times 2 dw F_3_624, -F_1_272
|
83
|
+
PW_F085_MF072 times 2 dw F_0_850, -F_0_720
|
84
|
+
PD_DESCALE_P1_4 times 2 dd 1 << (DESCALE_P1_4 - 1)
|
85
|
+
PD_DESCALE_P2_4 times 2 dd 1 << (DESCALE_P2_4 - 1)
|
86
|
+
PD_DESCALE_P1_2 times 2 dd 1 << (DESCALE_P1_2 - 1)
|
87
|
+
PD_DESCALE_P2_2 times 2 dd 1 << (DESCALE_P2_2 - 1)
|
88
|
+
PB_CENTERJSAMP times 8 db CENTERJSAMPLE
|
89
|
+
|
90
|
+
alignz 32
|
91
|
+
|
92
|
+
; --------------------------------------------------------------------------
|
93
|
+
SECTION SEG_TEXT
|
94
|
+
BITS 32
|
95
|
+
;
|
96
|
+
; Perform dequantization and inverse DCT on one block of coefficients,
|
97
|
+
; producing a reduced-size 4x4 output block.
|
98
|
+
;
|
99
|
+
; GLOBAL(void)
|
100
|
+
; jsimd_idct_4x4_mmx(void *dct_table, JCOEFPTR coef_block,
|
101
|
+
; JSAMPARRAY output_buf, JDIMENSION output_col)
|
102
|
+
;
|
103
|
+
|
104
|
+
%define dct_table(b) (b) + 8 ; void *dct_table
|
105
|
+
%define coef_block(b) (b) + 12 ; JCOEFPTR coef_block
|
106
|
+
%define output_buf(b) (b) + 16 ; JSAMPARRAY output_buf
|
107
|
+
%define output_col(b) (b) + 20 ; JDIMENSION output_col
|
108
|
+
|
109
|
+
%define original_ebp ebp + 0
|
110
|
+
%define wk(i) ebp - (WK_NUM - (i)) * SIZEOF_MMWORD
|
111
|
+
; mmword wk[WK_NUM]
|
112
|
+
%define WK_NUM 2
|
113
|
+
%define workspace wk(0) - DCTSIZE2 * SIZEOF_JCOEF
|
114
|
+
; JCOEF workspace[DCTSIZE2]
|
115
|
+
|
116
|
+
align 32
|
117
|
+
GLOBAL_FUNCTION(jsimd_idct_4x4_mmx)
|
118
|
+
|
119
|
+
EXTN(jsimd_idct_4x4_mmx):
|
120
|
+
push ebp
|
121
|
+
mov eax, esp ; eax = original ebp
|
122
|
+
sub esp, byte 4
|
123
|
+
and esp, byte (-SIZEOF_MMWORD) ; align to 64 bits
|
124
|
+
mov [esp], eax
|
125
|
+
mov ebp, esp ; ebp = aligned ebp
|
126
|
+
lea esp, [workspace]
|
127
|
+
pushpic ebx
|
128
|
+
; push ecx ; need not be preserved
|
129
|
+
; push edx ; need not be preserved
|
130
|
+
push esi
|
131
|
+
push edi
|
132
|
+
|
133
|
+
get_GOT ebx ; get GOT address
|
134
|
+
|
135
|
+
; ---- Pass 1: process columns from input, store into work array.
|
136
|
+
|
137
|
+
; mov eax, [original_ebp]
|
138
|
+
mov edx, POINTER [dct_table(eax)] ; quantptr
|
139
|
+
mov esi, JCOEFPTR [coef_block(eax)] ; inptr
|
140
|
+
lea edi, [workspace] ; JCOEF *wsptr
|
141
|
+
mov ecx, DCTSIZE/4 ; ctr
|
142
|
+
alignx 16, 7
|
143
|
+
.columnloop:
|
144
|
+
%ifndef NO_ZERO_COLUMN_TEST_4X4_MMX
|
145
|
+
mov eax, dword [DWBLOCK(1,0,esi,SIZEOF_JCOEF)]
|
146
|
+
or eax, dword [DWBLOCK(2,0,esi,SIZEOF_JCOEF)]
|
147
|
+
jnz short .columnDCT
|
148
|
+
|
149
|
+
movq mm0, MMWORD [MMBLOCK(1,0,esi,SIZEOF_JCOEF)]
|
150
|
+
movq mm1, MMWORD [MMBLOCK(2,0,esi,SIZEOF_JCOEF)]
|
151
|
+
por mm0, MMWORD [MMBLOCK(3,0,esi,SIZEOF_JCOEF)]
|
152
|
+
por mm1, MMWORD [MMBLOCK(5,0,esi,SIZEOF_JCOEF)]
|
153
|
+
por mm0, MMWORD [MMBLOCK(6,0,esi,SIZEOF_JCOEF)]
|
154
|
+
por mm1, MMWORD [MMBLOCK(7,0,esi,SIZEOF_JCOEF)]
|
155
|
+
por mm0, mm1
|
156
|
+
packsswb mm0, mm0
|
157
|
+
movd eax, mm0
|
158
|
+
test eax, eax
|
159
|
+
jnz short .columnDCT
|
160
|
+
|
161
|
+
; -- AC terms all zero
|
162
|
+
|
163
|
+
movq mm0, MMWORD [MMBLOCK(0,0,esi,SIZEOF_JCOEF)]
|
164
|
+
pmullw mm0, MMWORD [MMBLOCK(0,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
|
165
|
+
|
166
|
+
psllw mm0, PASS1_BITS
|
167
|
+
|
168
|
+
movq mm2, mm0 ; mm0=in0=(00 01 02 03)
|
169
|
+
punpcklwd mm0, mm0 ; mm0=(00 00 01 01)
|
170
|
+
punpckhwd mm2, mm2 ; mm2=(02 02 03 03)
|
171
|
+
|
172
|
+
movq mm1, mm0
|
173
|
+
punpckldq mm0, mm0 ; mm0=(00 00 00 00)
|
174
|
+
punpckhdq mm1, mm1 ; mm1=(01 01 01 01)
|
175
|
+
movq mm3, mm2
|
176
|
+
punpckldq mm2, mm2 ; mm2=(02 02 02 02)
|
177
|
+
punpckhdq mm3, mm3 ; mm3=(03 03 03 03)
|
178
|
+
|
179
|
+
movq MMWORD [MMBLOCK(0,0,edi,SIZEOF_JCOEF)], mm0
|
180
|
+
movq MMWORD [MMBLOCK(1,0,edi,SIZEOF_JCOEF)], mm1
|
181
|
+
movq MMWORD [MMBLOCK(2,0,edi,SIZEOF_JCOEF)], mm2
|
182
|
+
movq MMWORD [MMBLOCK(3,0,edi,SIZEOF_JCOEF)], mm3
|
183
|
+
jmp near .nextcolumn
|
184
|
+
alignx 16, 7
|
185
|
+
%endif
|
186
|
+
.columnDCT:
|
187
|
+
|
188
|
+
; -- Odd part
|
189
|
+
|
190
|
+
movq mm0, MMWORD [MMBLOCK(1,0,esi,SIZEOF_JCOEF)]
|
191
|
+
movq mm1, MMWORD [MMBLOCK(3,0,esi,SIZEOF_JCOEF)]
|
192
|
+
pmullw mm0, MMWORD [MMBLOCK(1,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
|
193
|
+
pmullw mm1, MMWORD [MMBLOCK(3,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
|
194
|
+
movq mm2, MMWORD [MMBLOCK(5,0,esi,SIZEOF_JCOEF)]
|
195
|
+
movq mm3, MMWORD [MMBLOCK(7,0,esi,SIZEOF_JCOEF)]
|
196
|
+
pmullw mm2, MMWORD [MMBLOCK(5,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
|
197
|
+
pmullw mm3, MMWORD [MMBLOCK(7,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
|
198
|
+
|
199
|
+
movq mm4, mm0
|
200
|
+
movq mm5, mm0
|
201
|
+
punpcklwd mm4, mm1
|
202
|
+
punpckhwd mm5, mm1
|
203
|
+
movq mm0, mm4
|
204
|
+
movq mm1, mm5
|
205
|
+
pmaddwd mm4, [GOTOFF(ebx,PW_F256_F089)] ; mm4=(tmp2L)
|
206
|
+
pmaddwd mm5, [GOTOFF(ebx,PW_F256_F089)] ; mm5=(tmp2H)
|
207
|
+
pmaddwd mm0, [GOTOFF(ebx,PW_F106_MF217)] ; mm0=(tmp0L)
|
208
|
+
pmaddwd mm1, [GOTOFF(ebx,PW_F106_MF217)] ; mm1=(tmp0H)
|
209
|
+
|
210
|
+
movq mm6, mm2
|
211
|
+
movq mm7, mm2
|
212
|
+
punpcklwd mm6, mm3
|
213
|
+
punpckhwd mm7, mm3
|
214
|
+
movq mm2, mm6
|
215
|
+
movq mm3, mm7
|
216
|
+
pmaddwd mm6, [GOTOFF(ebx,PW_MF060_MF050)] ; mm6=(tmp2L)
|
217
|
+
pmaddwd mm7, [GOTOFF(ebx,PW_MF060_MF050)] ; mm7=(tmp2H)
|
218
|
+
pmaddwd mm2, [GOTOFF(ebx,PW_F145_MF021)] ; mm2=(tmp0L)
|
219
|
+
pmaddwd mm3, [GOTOFF(ebx,PW_F145_MF021)] ; mm3=(tmp0H)
|
220
|
+
|
221
|
+
paddd mm6, mm4 ; mm6=tmp2L
|
222
|
+
paddd mm7, mm5 ; mm7=tmp2H
|
223
|
+
paddd mm2, mm0 ; mm2=tmp0L
|
224
|
+
paddd mm3, mm1 ; mm3=tmp0H
|
225
|
+
|
226
|
+
movq MMWORD [wk(0)], mm2 ; wk(0)=tmp0L
|
227
|
+
movq MMWORD [wk(1)], mm3 ; wk(1)=tmp0H
|
228
|
+
|
229
|
+
; -- Even part
|
230
|
+
|
231
|
+
movq mm4, MMWORD [MMBLOCK(0,0,esi,SIZEOF_JCOEF)]
|
232
|
+
movq mm5, MMWORD [MMBLOCK(2,0,esi,SIZEOF_JCOEF)]
|
233
|
+
movq mm0, MMWORD [MMBLOCK(6,0,esi,SIZEOF_JCOEF)]
|
234
|
+
pmullw mm4, MMWORD [MMBLOCK(0,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
|
235
|
+
pmullw mm5, MMWORD [MMBLOCK(2,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
|
236
|
+
pmullw mm0, MMWORD [MMBLOCK(6,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
|
237
|
+
|
238
|
+
pxor mm1, mm1
|
239
|
+
pxor mm2, mm2
|
240
|
+
punpcklwd mm1, mm4 ; mm1=tmp0L
|
241
|
+
punpckhwd mm2, mm4 ; mm2=tmp0H
|
242
|
+
psrad mm1, (16-CONST_BITS-1) ; psrad mm1,16 & pslld mm1,CONST_BITS+1
|
243
|
+
psrad mm2, (16-CONST_BITS-1) ; psrad mm2,16 & pslld mm2,CONST_BITS+1
|
244
|
+
|
245
|
+
movq mm3, mm5 ; mm5=in2=z2
|
246
|
+
punpcklwd mm5, mm0 ; mm0=in6=z3
|
247
|
+
punpckhwd mm3, mm0
|
248
|
+
pmaddwd mm5, [GOTOFF(ebx,PW_F184_MF076)] ; mm5=tmp2L
|
249
|
+
pmaddwd mm3, [GOTOFF(ebx,PW_F184_MF076)] ; mm3=tmp2H
|
250
|
+
|
251
|
+
movq mm4, mm1
|
252
|
+
movq mm0, mm2
|
253
|
+
paddd mm1, mm5 ; mm1=tmp10L
|
254
|
+
paddd mm2, mm3 ; mm2=tmp10H
|
255
|
+
psubd mm4, mm5 ; mm4=tmp12L
|
256
|
+
psubd mm0, mm3 ; mm0=tmp12H
|
257
|
+
|
258
|
+
; -- Final output stage
|
259
|
+
|
260
|
+
movq mm5, mm1
|
261
|
+
movq mm3, mm2
|
262
|
+
paddd mm1, mm6 ; mm1=data0L
|
263
|
+
paddd mm2, mm7 ; mm2=data0H
|
264
|
+
psubd mm5, mm6 ; mm5=data3L
|
265
|
+
psubd mm3, mm7 ; mm3=data3H
|
266
|
+
|
267
|
+
movq mm6, [GOTOFF(ebx,PD_DESCALE_P1_4)] ; mm6=[PD_DESCALE_P1_4]
|
268
|
+
|
269
|
+
paddd mm1, mm6
|
270
|
+
paddd mm2, mm6
|
271
|
+
psrad mm1, DESCALE_P1_4
|
272
|
+
psrad mm2, DESCALE_P1_4
|
273
|
+
paddd mm5, mm6
|
274
|
+
paddd mm3, mm6
|
275
|
+
psrad mm5, DESCALE_P1_4
|
276
|
+
psrad mm3, DESCALE_P1_4
|
277
|
+
|
278
|
+
packssdw mm1, mm2 ; mm1=data0=(00 01 02 03)
|
279
|
+
packssdw mm5, mm3 ; mm5=data3=(30 31 32 33)
|
280
|
+
|
281
|
+
movq mm7, MMWORD [wk(0)] ; mm7=tmp0L
|
282
|
+
movq mm6, MMWORD [wk(1)] ; mm6=tmp0H
|
283
|
+
|
284
|
+
movq mm2, mm4
|
285
|
+
movq mm3, mm0
|
286
|
+
paddd mm4, mm7 ; mm4=data1L
|
287
|
+
paddd mm0, mm6 ; mm0=data1H
|
288
|
+
psubd mm2, mm7 ; mm2=data2L
|
289
|
+
psubd mm3, mm6 ; mm3=data2H
|
290
|
+
|
291
|
+
movq mm7, [GOTOFF(ebx,PD_DESCALE_P1_4)] ; mm7=[PD_DESCALE_P1_4]
|
292
|
+
|
293
|
+
paddd mm4, mm7
|
294
|
+
paddd mm0, mm7
|
295
|
+
psrad mm4, DESCALE_P1_4
|
296
|
+
psrad mm0, DESCALE_P1_4
|
297
|
+
paddd mm2, mm7
|
298
|
+
paddd mm3, mm7
|
299
|
+
psrad mm2, DESCALE_P1_4
|
300
|
+
psrad mm3, DESCALE_P1_4
|
301
|
+
|
302
|
+
packssdw mm4, mm0 ; mm4=data1=(10 11 12 13)
|
303
|
+
packssdw mm2, mm3 ; mm2=data2=(20 21 22 23)
|
304
|
+
|
305
|
+
movq mm6, mm1 ; transpose coefficients(phase 1)
|
306
|
+
punpcklwd mm1, mm4 ; mm1=(00 10 01 11)
|
307
|
+
punpckhwd mm6, mm4 ; mm6=(02 12 03 13)
|
308
|
+
movq mm7, mm2 ; transpose coefficients(phase 1)
|
309
|
+
punpcklwd mm2, mm5 ; mm2=(20 30 21 31)
|
310
|
+
punpckhwd mm7, mm5 ; mm7=(22 32 23 33)
|
311
|
+
|
312
|
+
movq mm0, mm1 ; transpose coefficients(phase 2)
|
313
|
+
punpckldq mm1, mm2 ; mm1=(00 10 20 30)
|
314
|
+
punpckhdq mm0, mm2 ; mm0=(01 11 21 31)
|
315
|
+
movq mm3, mm6 ; transpose coefficients(phase 2)
|
316
|
+
punpckldq mm6, mm7 ; mm6=(02 12 22 32)
|
317
|
+
punpckhdq mm3, mm7 ; mm3=(03 13 23 33)
|
318
|
+
|
319
|
+
movq MMWORD [MMBLOCK(0,0,edi,SIZEOF_JCOEF)], mm1
|
320
|
+
movq MMWORD [MMBLOCK(1,0,edi,SIZEOF_JCOEF)], mm0
|
321
|
+
movq MMWORD [MMBLOCK(2,0,edi,SIZEOF_JCOEF)], mm6
|
322
|
+
movq MMWORD [MMBLOCK(3,0,edi,SIZEOF_JCOEF)], mm3
|
323
|
+
|
324
|
+
.nextcolumn:
|
325
|
+
add esi, byte 4*SIZEOF_JCOEF ; coef_block
|
326
|
+
add edx, byte 4*SIZEOF_ISLOW_MULT_TYPE ; quantptr
|
327
|
+
add edi, byte 4*DCTSIZE*SIZEOF_JCOEF ; wsptr
|
328
|
+
dec ecx ; ctr
|
329
|
+
jnz near .columnloop
|
330
|
+
|
331
|
+
; ---- Pass 2: process rows from work array, store into output array.
|
332
|
+
|
333
|
+
mov eax, [original_ebp]
|
334
|
+
lea esi, [workspace] ; JCOEF *wsptr
|
335
|
+
mov edi, JSAMPARRAY [output_buf(eax)] ; (JSAMPROW *)
|
336
|
+
mov eax, JDIMENSION [output_col(eax)]
|
337
|
+
|
338
|
+
; -- Odd part
|
339
|
+
|
340
|
+
movq mm0, MMWORD [MMBLOCK(1,0,esi,SIZEOF_JCOEF)]
|
341
|
+
movq mm1, MMWORD [MMBLOCK(3,0,esi,SIZEOF_JCOEF)]
|
342
|
+
movq mm2, MMWORD [MMBLOCK(5,0,esi,SIZEOF_JCOEF)]
|
343
|
+
movq mm3, MMWORD [MMBLOCK(7,0,esi,SIZEOF_JCOEF)]
|
344
|
+
|
345
|
+
movq mm4, mm0
|
346
|
+
movq mm5, mm0
|
347
|
+
punpcklwd mm4, mm1
|
348
|
+
punpckhwd mm5, mm1
|
349
|
+
movq mm0, mm4
|
350
|
+
movq mm1, mm5
|
351
|
+
pmaddwd mm4, [GOTOFF(ebx,PW_F256_F089)] ; mm4=(tmp2L)
|
352
|
+
pmaddwd mm5, [GOTOFF(ebx,PW_F256_F089)] ; mm5=(tmp2H)
|
353
|
+
pmaddwd mm0, [GOTOFF(ebx,PW_F106_MF217)] ; mm0=(tmp0L)
|
354
|
+
pmaddwd mm1, [GOTOFF(ebx,PW_F106_MF217)] ; mm1=(tmp0H)
|
355
|
+
|
356
|
+
movq mm6, mm2
|
357
|
+
movq mm7, mm2
|
358
|
+
punpcklwd mm6, mm3
|
359
|
+
punpckhwd mm7, mm3
|
360
|
+
movq mm2, mm6
|
361
|
+
movq mm3, mm7
|
362
|
+
pmaddwd mm6, [GOTOFF(ebx,PW_MF060_MF050)] ; mm6=(tmp2L)
|
363
|
+
pmaddwd mm7, [GOTOFF(ebx,PW_MF060_MF050)] ; mm7=(tmp2H)
|
364
|
+
pmaddwd mm2, [GOTOFF(ebx,PW_F145_MF021)] ; mm2=(tmp0L)
|
365
|
+
pmaddwd mm3, [GOTOFF(ebx,PW_F145_MF021)] ; mm3=(tmp0H)
|
366
|
+
|
367
|
+
paddd mm6, mm4 ; mm6=tmp2L
|
368
|
+
paddd mm7, mm5 ; mm7=tmp2H
|
369
|
+
paddd mm2, mm0 ; mm2=tmp0L
|
370
|
+
paddd mm3, mm1 ; mm3=tmp0H
|
371
|
+
|
372
|
+
movq MMWORD [wk(0)], mm2 ; wk(0)=tmp0L
|
373
|
+
movq MMWORD [wk(1)], mm3 ; wk(1)=tmp0H
|
374
|
+
|
375
|
+
; -- Even part
|
376
|
+
|
377
|
+
movq mm4, MMWORD [MMBLOCK(0,0,esi,SIZEOF_JCOEF)]
|
378
|
+
movq mm5, MMWORD [MMBLOCK(2,0,esi,SIZEOF_JCOEF)]
|
379
|
+
movq mm0, MMWORD [MMBLOCK(6,0,esi,SIZEOF_JCOEF)]
|
380
|
+
|
381
|
+
pxor mm1, mm1
|
382
|
+
pxor mm2, mm2
|
383
|
+
punpcklwd mm1, mm4 ; mm1=tmp0L
|
384
|
+
punpckhwd mm2, mm4 ; mm2=tmp0H
|
385
|
+
psrad mm1, (16-CONST_BITS-1) ; psrad mm1,16 & pslld mm1,CONST_BITS+1
|
386
|
+
psrad mm2, (16-CONST_BITS-1) ; psrad mm2,16 & pslld mm2,CONST_BITS+1
|
387
|
+
|
388
|
+
movq mm3, mm5 ; mm5=in2=z2
|
389
|
+
punpcklwd mm5, mm0 ; mm0=in6=z3
|
390
|
+
punpckhwd mm3, mm0
|
391
|
+
pmaddwd mm5, [GOTOFF(ebx,PW_F184_MF076)] ; mm5=tmp2L
|
392
|
+
pmaddwd mm3, [GOTOFF(ebx,PW_F184_MF076)] ; mm3=tmp2H
|
393
|
+
|
394
|
+
movq mm4, mm1
|
395
|
+
movq mm0, mm2
|
396
|
+
paddd mm1, mm5 ; mm1=tmp10L
|
397
|
+
paddd mm2, mm3 ; mm2=tmp10H
|
398
|
+
psubd mm4, mm5 ; mm4=tmp12L
|
399
|
+
psubd mm0, mm3 ; mm0=tmp12H
|
400
|
+
|
401
|
+
; -- Final output stage
|
402
|
+
|
403
|
+
movq mm5, mm1
|
404
|
+
movq mm3, mm2
|
405
|
+
paddd mm1, mm6 ; mm1=data0L
|
406
|
+
paddd mm2, mm7 ; mm2=data0H
|
407
|
+
psubd mm5, mm6 ; mm5=data3L
|
408
|
+
psubd mm3, mm7 ; mm3=data3H
|
409
|
+
|
410
|
+
movq mm6, [GOTOFF(ebx,PD_DESCALE_P2_4)] ; mm6=[PD_DESCALE_P2_4]
|
411
|
+
|
412
|
+
paddd mm1, mm6
|
413
|
+
paddd mm2, mm6
|
414
|
+
psrad mm1, DESCALE_P2_4
|
415
|
+
psrad mm2, DESCALE_P2_4
|
416
|
+
paddd mm5, mm6
|
417
|
+
paddd mm3, mm6
|
418
|
+
psrad mm5, DESCALE_P2_4
|
419
|
+
psrad mm3, DESCALE_P2_4
|
420
|
+
|
421
|
+
packssdw mm1, mm2 ; mm1=data0=(00 10 20 30)
|
422
|
+
packssdw mm5, mm3 ; mm5=data3=(03 13 23 33)
|
423
|
+
|
424
|
+
movq mm7, MMWORD [wk(0)] ; mm7=tmp0L
|
425
|
+
movq mm6, MMWORD [wk(1)] ; mm6=tmp0H
|
426
|
+
|
427
|
+
movq mm2, mm4
|
428
|
+
movq mm3, mm0
|
429
|
+
paddd mm4, mm7 ; mm4=data1L
|
430
|
+
paddd mm0, mm6 ; mm0=data1H
|
431
|
+
psubd mm2, mm7 ; mm2=data2L
|
432
|
+
psubd mm3, mm6 ; mm3=data2H
|
433
|
+
|
434
|
+
movq mm7, [GOTOFF(ebx,PD_DESCALE_P2_4)] ; mm7=[PD_DESCALE_P2_4]
|
435
|
+
|
436
|
+
paddd mm4, mm7
|
437
|
+
paddd mm0, mm7
|
438
|
+
psrad mm4, DESCALE_P2_4
|
439
|
+
psrad mm0, DESCALE_P2_4
|
440
|
+
paddd mm2, mm7
|
441
|
+
paddd mm3, mm7
|
442
|
+
psrad mm2, DESCALE_P2_4
|
443
|
+
psrad mm3, DESCALE_P2_4
|
444
|
+
|
445
|
+
packssdw mm4, mm0 ; mm4=data1=(01 11 21 31)
|
446
|
+
packssdw mm2, mm3 ; mm2=data2=(02 12 22 32)
|
447
|
+
|
448
|
+
movq mm6, [GOTOFF(ebx,PB_CENTERJSAMP)] ; mm6=[PB_CENTERJSAMP]
|
449
|
+
|
450
|
+
packsswb mm1, mm2 ; mm1=(00 10 20 30 02 12 22 32)
|
451
|
+
packsswb mm4, mm5 ; mm4=(01 11 21 31 03 13 23 33)
|
452
|
+
paddb mm1, mm6
|
453
|
+
paddb mm4, mm6
|
454
|
+
|
455
|
+
movq mm7, mm1 ; transpose coefficients(phase 1)
|
456
|
+
punpcklbw mm1, mm4 ; mm1=(00 01 10 11 20 21 30 31)
|
457
|
+
punpckhbw mm7, mm4 ; mm7=(02 03 12 13 22 23 32 33)
|
458
|
+
|
459
|
+
movq mm0, mm1 ; transpose coefficients(phase 2)
|
460
|
+
punpcklwd mm1, mm7 ; mm1=(00 01 02 03 10 11 12 13)
|
461
|
+
punpckhwd mm0, mm7 ; mm0=(20 21 22 23 30 31 32 33)
|
462
|
+
|
463
|
+
mov edx, JSAMPROW [edi+0*SIZEOF_JSAMPROW]
|
464
|
+
mov esi, JSAMPROW [edi+2*SIZEOF_JSAMPROW]
|
465
|
+
movd dword [edx+eax*SIZEOF_JSAMPLE], mm1
|
466
|
+
movd dword [esi+eax*SIZEOF_JSAMPLE], mm0
|
467
|
+
|
468
|
+
psrlq mm1, 4*BYTE_BIT
|
469
|
+
psrlq mm0, 4*BYTE_BIT
|
470
|
+
|
471
|
+
mov edx, JSAMPROW [edi+1*SIZEOF_JSAMPROW]
|
472
|
+
mov esi, JSAMPROW [edi+3*SIZEOF_JSAMPROW]
|
473
|
+
movd dword [edx+eax*SIZEOF_JSAMPLE], mm1
|
474
|
+
movd dword [esi+eax*SIZEOF_JSAMPLE], mm0
|
475
|
+
|
476
|
+
emms ; empty MMX state
|
477
|
+
|
478
|
+
pop edi
|
479
|
+
pop esi
|
480
|
+
; pop edx ; need not be preserved
|
481
|
+
; pop ecx ; need not be preserved
|
482
|
+
poppic ebx
|
483
|
+
mov esp, ebp ; esp <- aligned ebp
|
484
|
+
pop esp ; esp <- original ebp
|
485
|
+
pop ebp
|
486
|
+
ret
|
487
|
+
|
488
|
+
; --------------------------------------------------------------------------
|
489
|
+
;
|
490
|
+
; Perform dequantization and inverse DCT on one block of coefficients,
|
491
|
+
; producing a reduced-size 2x2 output block.
|
492
|
+
;
|
493
|
+
; GLOBAL(void)
|
494
|
+
; jsimd_idct_2x2_mmx(void *dct_table, JCOEFPTR coef_block,
|
495
|
+
; JSAMPARRAY output_buf, JDIMENSION output_col)
|
496
|
+
;
|
497
|
+
|
498
|
+
%define dct_table(b) (b) + 8 ; void *dct_table
|
499
|
+
%define coef_block(b) (b) + 12 ; JCOEFPTR coef_block
|
500
|
+
%define output_buf(b) (b) + 16 ; JSAMPARRAY output_buf
|
501
|
+
%define output_col(b) (b) + 20 ; JDIMENSION output_col
|
502
|
+
|
503
|
+
align 32
|
504
|
+
GLOBAL_FUNCTION(jsimd_idct_2x2_mmx)
|
505
|
+
|
506
|
+
EXTN(jsimd_idct_2x2_mmx):
|
507
|
+
push ebp
|
508
|
+
mov ebp, esp
|
509
|
+
push ebx
|
510
|
+
; push ecx ; need not be preserved
|
511
|
+
; push edx ; need not be preserved
|
512
|
+
push esi
|
513
|
+
push edi
|
514
|
+
|
515
|
+
get_GOT ebx ; get GOT address
|
516
|
+
|
517
|
+
; ---- Pass 1: process columns from input.
|
518
|
+
|
519
|
+
mov edx, POINTER [dct_table(ebp)] ; quantptr
|
520
|
+
mov esi, JCOEFPTR [coef_block(ebp)] ; inptr
|
521
|
+
|
522
|
+
; | input: | result: |
|
523
|
+
; | 00 01 ** 03 ** 05 ** 07 | |
|
524
|
+
; | 10 11 ** 13 ** 15 ** 17 | |
|
525
|
+
; | ** ** ** ** ** ** ** ** | |
|
526
|
+
; | 30 31 ** 33 ** 35 ** 37 | A0 A1 A3 A5 A7 |
|
527
|
+
; | ** ** ** ** ** ** ** ** | B0 B1 B3 B5 B7 |
|
528
|
+
; | 50 51 ** 53 ** 55 ** 57 | |
|
529
|
+
; | ** ** ** ** ** ** ** ** | |
|
530
|
+
; | 70 71 ** 73 ** 75 ** 77 | |
|
531
|
+
|
532
|
+
; -- Odd part
|
533
|
+
|
534
|
+
movq mm0, MMWORD [MMBLOCK(1,0,esi,SIZEOF_JCOEF)]
|
535
|
+
movq mm1, MMWORD [MMBLOCK(3,0,esi,SIZEOF_JCOEF)]
|
536
|
+
pmullw mm0, MMWORD [MMBLOCK(1,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
|
537
|
+
pmullw mm1, MMWORD [MMBLOCK(3,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
|
538
|
+
movq mm2, MMWORD [MMBLOCK(5,0,esi,SIZEOF_JCOEF)]
|
539
|
+
movq mm3, MMWORD [MMBLOCK(7,0,esi,SIZEOF_JCOEF)]
|
540
|
+
pmullw mm2, MMWORD [MMBLOCK(5,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
|
541
|
+
pmullw mm3, MMWORD [MMBLOCK(7,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
|
542
|
+
|
543
|
+
; mm0=(10 11 ** 13), mm1=(30 31 ** 33)
|
544
|
+
; mm2=(50 51 ** 53), mm3=(70 71 ** 73)
|
545
|
+
|
546
|
+
pcmpeqd mm7, mm7
|
547
|
+
pslld mm7, WORD_BIT ; mm7={0x0000 0xFFFF 0x0000 0xFFFF}
|
548
|
+
|
549
|
+
movq mm4, mm0 ; mm4=(10 11 ** 13)
|
550
|
+
movq mm5, mm2 ; mm5=(50 51 ** 53)
|
551
|
+
punpcklwd mm4, mm1 ; mm4=(10 30 11 31)
|
552
|
+
punpcklwd mm5, mm3 ; mm5=(50 70 51 71)
|
553
|
+
pmaddwd mm4, [GOTOFF(ebx,PW_F362_MF127)]
|
554
|
+
pmaddwd mm5, [GOTOFF(ebx,PW_F085_MF072)]
|
555
|
+
|
556
|
+
psrld mm0, WORD_BIT ; mm0=(11 -- 13 --)
|
557
|
+
pand mm1, mm7 ; mm1=(-- 31 -- 33)
|
558
|
+
psrld mm2, WORD_BIT ; mm2=(51 -- 53 --)
|
559
|
+
pand mm3, mm7 ; mm3=(-- 71 -- 73)
|
560
|
+
por mm0, mm1 ; mm0=(11 31 13 33)
|
561
|
+
por mm2, mm3 ; mm2=(51 71 53 73)
|
562
|
+
pmaddwd mm0, [GOTOFF(ebx,PW_F362_MF127)]
|
563
|
+
pmaddwd mm2, [GOTOFF(ebx,PW_F085_MF072)]
|
564
|
+
|
565
|
+
paddd mm4, mm5 ; mm4=tmp0[col0 col1]
|
566
|
+
|
567
|
+
movq mm6, MMWORD [MMBLOCK(1,1,esi,SIZEOF_JCOEF)]
|
568
|
+
movq mm1, MMWORD [MMBLOCK(3,1,esi,SIZEOF_JCOEF)]
|
569
|
+
pmullw mm6, MMWORD [MMBLOCK(1,1,edx,SIZEOF_ISLOW_MULT_TYPE)]
|
570
|
+
pmullw mm1, MMWORD [MMBLOCK(3,1,edx,SIZEOF_ISLOW_MULT_TYPE)]
|
571
|
+
movq mm3, MMWORD [MMBLOCK(5,1,esi,SIZEOF_JCOEF)]
|
572
|
+
movq mm5, MMWORD [MMBLOCK(7,1,esi,SIZEOF_JCOEF)]
|
573
|
+
pmullw mm3, MMWORD [MMBLOCK(5,1,edx,SIZEOF_ISLOW_MULT_TYPE)]
|
574
|
+
pmullw mm5, MMWORD [MMBLOCK(7,1,edx,SIZEOF_ISLOW_MULT_TYPE)]
|
575
|
+
|
576
|
+
; mm6=(** 15 ** 17), mm1=(** 35 ** 37)
|
577
|
+
; mm3=(** 55 ** 57), mm5=(** 75 ** 77)
|
578
|
+
|
579
|
+
psrld mm6, WORD_BIT ; mm6=(15 -- 17 --)
|
580
|
+
pand mm1, mm7 ; mm1=(-- 35 -- 37)
|
581
|
+
psrld mm3, WORD_BIT ; mm3=(55 -- 57 --)
|
582
|
+
pand mm5, mm7 ; mm5=(-- 75 -- 77)
|
583
|
+
por mm6, mm1 ; mm6=(15 35 17 37)
|
584
|
+
por mm3, mm5 ; mm3=(55 75 57 77)
|
585
|
+
pmaddwd mm6, [GOTOFF(ebx,PW_F362_MF127)]
|
586
|
+
pmaddwd mm3, [GOTOFF(ebx,PW_F085_MF072)]
|
587
|
+
|
588
|
+
paddd mm0, mm2 ; mm0=tmp0[col1 col3]
|
589
|
+
paddd mm6, mm3 ; mm6=tmp0[col5 col7]
|
590
|
+
|
591
|
+
; -- Even part
|
592
|
+
|
593
|
+
movq mm1, MMWORD [MMBLOCK(0,0,esi,SIZEOF_JCOEF)]
|
594
|
+
movq mm5, MMWORD [MMBLOCK(0,1,esi,SIZEOF_JCOEF)]
|
595
|
+
pmullw mm1, MMWORD [MMBLOCK(0,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
|
596
|
+
pmullw mm5, MMWORD [MMBLOCK(0,1,edx,SIZEOF_ISLOW_MULT_TYPE)]
|
597
|
+
|
598
|
+
; mm1=(00 01 ** 03), mm5=(** 05 ** 07)
|
599
|
+
|
600
|
+
movq mm2, mm1 ; mm2=(00 01 ** 03)
|
601
|
+
pslld mm1, WORD_BIT ; mm1=(-- 00 -- **)
|
602
|
+
psrad mm1, (WORD_BIT-CONST_BITS-2) ; mm1=tmp10[col0 ****]
|
603
|
+
|
604
|
+
pand mm2, mm7 ; mm2=(-- 01 -- 03)
|
605
|
+
pand mm5, mm7 ; mm5=(-- 05 -- 07)
|
606
|
+
psrad mm2, (WORD_BIT-CONST_BITS-2) ; mm2=tmp10[col1 col3]
|
607
|
+
psrad mm5, (WORD_BIT-CONST_BITS-2) ; mm5=tmp10[col5 col7]
|
608
|
+
|
609
|
+
; -- Final output stage
|
610
|
+
|
611
|
+
movq mm3, mm1
|
612
|
+
paddd mm1, mm4 ; mm1=data0[col0 ****]=(A0 **)
|
613
|
+
psubd mm3, mm4 ; mm3=data1[col0 ****]=(B0 **)
|
614
|
+
punpckldq mm1, mm3 ; mm1=(A0 B0)
|
615
|
+
|
616
|
+
movq mm7, [GOTOFF(ebx,PD_DESCALE_P1_2)] ; mm7=[PD_DESCALE_P1_2]
|
617
|
+
|
618
|
+
movq mm4, mm2
|
619
|
+
movq mm3, mm5
|
620
|
+
paddd mm2, mm0 ; mm2=data0[col1 col3]=(A1 A3)
|
621
|
+
paddd mm5, mm6 ; mm5=data0[col5 col7]=(A5 A7)
|
622
|
+
psubd mm4, mm0 ; mm4=data1[col1 col3]=(B1 B3)
|
623
|
+
psubd mm3, mm6 ; mm3=data1[col5 col7]=(B5 B7)
|
624
|
+
|
625
|
+
paddd mm1, mm7
|
626
|
+
psrad mm1, DESCALE_P1_2
|
627
|
+
|
628
|
+
paddd mm2, mm7
|
629
|
+
paddd mm5, mm7
|
630
|
+
psrad mm2, DESCALE_P1_2
|
631
|
+
psrad mm5, DESCALE_P1_2
|
632
|
+
paddd mm4, mm7
|
633
|
+
paddd mm3, mm7
|
634
|
+
psrad mm4, DESCALE_P1_2
|
635
|
+
psrad mm3, DESCALE_P1_2
|
636
|
+
|
637
|
+
; ---- Pass 2: process rows, store into output array.
|
638
|
+
|
639
|
+
mov edi, JSAMPARRAY [output_buf(ebp)] ; (JSAMPROW *)
|
640
|
+
mov eax, JDIMENSION [output_col(ebp)]
|
641
|
+
|
642
|
+
; | input:| result:|
|
643
|
+
; | A0 B0 | |
|
644
|
+
; | A1 B1 | C0 C1 |
|
645
|
+
; | A3 B3 | D0 D1 |
|
646
|
+
; | A5 B5 | |
|
647
|
+
; | A7 B7 | |
|
648
|
+
|
649
|
+
; -- Odd part
|
650
|
+
|
651
|
+
packssdw mm2, mm4 ; mm2=(A1 A3 B1 B3)
|
652
|
+
packssdw mm5, mm3 ; mm5=(A5 A7 B5 B7)
|
653
|
+
pmaddwd mm2, [GOTOFF(ebx,PW_F362_MF127)]
|
654
|
+
pmaddwd mm5, [GOTOFF(ebx,PW_F085_MF072)]
|
655
|
+
|
656
|
+
paddd mm2, mm5 ; mm2=tmp0[row0 row1]
|
657
|
+
|
658
|
+
; -- Even part
|
659
|
+
|
660
|
+
pslld mm1, (CONST_BITS+2) ; mm1=tmp10[row0 row1]
|
661
|
+
|
662
|
+
; -- Final output stage
|
663
|
+
|
664
|
+
movq mm0, [GOTOFF(ebx,PD_DESCALE_P2_2)] ; mm0=[PD_DESCALE_P2_2]
|
665
|
+
|
666
|
+
movq mm6, mm1
|
667
|
+
paddd mm1, mm2 ; mm1=data0[row0 row1]=(C0 C1)
|
668
|
+
psubd mm6, mm2 ; mm6=data1[row0 row1]=(D0 D1)
|
669
|
+
|
670
|
+
paddd mm1, mm0
|
671
|
+
paddd mm6, mm0
|
672
|
+
psrad mm1, DESCALE_P2_2
|
673
|
+
psrad mm6, DESCALE_P2_2
|
674
|
+
|
675
|
+
movq mm7, mm1 ; transpose coefficients
|
676
|
+
punpckldq mm1, mm6 ; mm1=(C0 D0)
|
677
|
+
punpckhdq mm7, mm6 ; mm7=(C1 D1)
|
678
|
+
|
679
|
+
packssdw mm1, mm7 ; mm1=(C0 D0 C1 D1)
|
680
|
+
packsswb mm1, mm1 ; mm1=(C0 D0 C1 D1 C0 D0 C1 D1)
|
681
|
+
paddb mm1, [GOTOFF(ebx,PB_CENTERJSAMP)]
|
682
|
+
|
683
|
+
movd ecx, mm1
|
684
|
+
movd ebx, mm1 ; ebx=(C0 D0 C1 D1)
|
685
|
+
shr ecx, 2*BYTE_BIT ; ecx=(C1 D1 -- --)
|
686
|
+
|
687
|
+
mov edx, JSAMPROW [edi+0*SIZEOF_JSAMPROW]
|
688
|
+
mov esi, JSAMPROW [edi+1*SIZEOF_JSAMPROW]
|
689
|
+
mov word [edx+eax*SIZEOF_JSAMPLE], bx
|
690
|
+
mov word [esi+eax*SIZEOF_JSAMPLE], cx
|
691
|
+
|
692
|
+
emms ; empty MMX state
|
693
|
+
|
694
|
+
pop edi
|
695
|
+
pop esi
|
696
|
+
; pop edx ; need not be preserved
|
697
|
+
; pop ecx ; need not be preserved
|
698
|
+
pop ebx
|
699
|
+
pop ebp
|
700
|
+
ret
|
701
|
+
|
702
|
+
; For some reason, the OS X linker does not honor the request to align the
|
703
|
+
; segment unless we do this.
|
704
|
+
align 32
|