Short: fastest JPEG picture datatype Author: Henryk Richter, gni@gecko.de (Gunther Nikl) Uploader: henryk richter gmx net (Henryk Richter) Type: util/dtype Version: 44.18 Architecture: m68k-amigaos >= 3.0.0 Distribution: NoCD The special focus of Release 44.18 was improved performance on the 68040. JPEG loading using the default HQ iDCT is now about 30% faster on 68040 compared to earlier releases. Speed gains on 68060 are more modest at up to 10%. An installer was included, too. In short: the fastest 68k Amiga JPEG datatype got faster, again. A performance comparison is shown below. (on A3000 with BFG9060@100 MHz, 3.1 ROM, CyberVision64 in HiColor, picture.datatype 47.15 from OS3.2.1, all datatypes at default settings; times in seconds measured as median over 5 iterations with "visage nojpeg time test"): Name |akjfif |jfif |warpjpeg|os32jpeg| Version |45.95 |44.18 |45.16 |47.8 | ----------------------|--------|--------|--------|--------| APac640x480.jpg |0.501 |0.319 |0.473 |0.382 | BGA1024x1024.jpg |1.568 |1.370 |1.524 |1.515 | Casa2592x1728A.jpg |4.713 |3.069 |4.048 |3.743 | Casa2592x1728B.jpg |8.376 |5.553 |7.816 |6.676 | Goose1024x768.jpg |2.027 |1.479 |1.884 |1.829 | Molli512x384.jpg |0.392 |0.267 |0.363 |0.320 | Peacock800x600.jpg |0.945 |0.630 |0.904 |0.762 | Sail768x576.jpg |0.699 |0.443 |0.643 |0.530 | Wnmde1152x768.jpg |1.829 |1.514 |1.721 |1.664 | Wnmde1536x1024.jpg |1.871 |1.227 |1.715 |1.474 | jordan199b.jpg |1.219 |0.743 |1.068 |0.899 | The numbers for 68040/25 MHz are following below. (A4000, BFG9060 in 68040 mode, Kick3.2.1, PicassoIV) Name |akjfif |jfif |warpjpeg|os32jpeg| Version |45.95 |44.18 |45.16 |47.6 | ----------------------|--------|--------|--------|--------| APac640x480.jpg |3.541 |2.549 |3.472 |3.566 | BGA1024x1024.jpg |9.048 |8.245 |8.631 |9.641 | Casa2592x1728A.jpg |34.007 |26.946 |31.752 |36.476 | Casa2592x1728B.jpg |63.804 |49.727 |62.038 |65.766 | Goose1024x768.jpg |16.123 |13.733 |15.451 |17.822 | Molli512x384.jpg |2.808 |2.188 |2.704 |2.925 | Peacock800x600.jpg |7.152 |5.550 |7.090 |7.424 | Sail768x576.jpg |4.873 |3.514 |4.715 |4.874 | Wnmde1152x768.jpg |10.140 |11.078 |10.010 |12.858 | Wnmde1536x1024.jpg |13.778 |10.239 |13.095 |14.160 | jordan199b.jpg |8.217 |6.087 |7.905 |8.615 | The test images, benchmarking scripts, system details and raw results are available at: http://bax.comlab.uni-rostock.de/fileadmin/downloads/jpegbench.zip The datatype is an all-in-one binary for any 68020+ Amiga. A 68000 version (without assembly optimizations) is provided as well. Changes in this release 44.18: - added installer script - overhauled YCC to RGB conversion by avoiding multiplications such that it runs much faster on MC68030/68040 - updated both HQ and fast integer iDCT algorithms with faster paths for some special cases that are computed as more efficient 2D iDCT instead of the customary 1D separated row/column approach 44.17: - fixed V42 mode (3.0/3.1 without updated picture.datatype) - added CPU check to 020+ version to exit cleanly on 68000/68010 - removed FPU requirement (FPU iDCT is still optionally available on FPU equipped systems) - added minimum CPU type to version string 44.16: - fixed occasionally missing rows of pixels in cases where the SCALE or MAXLENGTH options are active - prepared for additional speedup on OS3.2.1 (about 100ms per megapixel on 060/50 with picture.datatype 47.15) 44.15: - fixed incompatibility with picture.datatype 45.17 (OS3.9BB2) 44.14: - enabled arithmetic residual coding (not part of the JPEG standard last I checked, but there are some pictures on the internet using this mode) - improvements to Huffman decoding functions - leverage V47 picture.datatype features for more performance - improvements to grayscale image handling Feature overview - supports normal and progressive JFIFs with all its flavours - supports HAM output (HAM6 as well as HAM8) - switches to V43 mode if a picture.datatype V43 or newer is found - asynchronous file I/O to speedup image loading and decoding - utilizes WritePixelLine8() for chunky-to-planar in V42 mode - automatic colour quantizing of true-colour data for V42 - can be configured to suit personal preferences - OS 3.5 and later support (minimum OS3.0) - FBlit tolerance - based on libjpeg-turbo - ASM optimizations to Huffman decoding, iDCT and color transform (68020+) - 30 bit internal resolution for color transform functions - Highly accurate and fast default inverse cosine transform function (stock libjpeg methods still available as options) - AMMX optimization for Apollo Core Gold 2.7 and later - FPU and AMMX availability is checked before use at runtime - support for XMP JFIF files - all-in-one binary for 68020+ Tuning (see also the guide file for additional options): Classic 68k based Amigas - The old fast iDCT is still about 10% faster than the default on 68030/68040. If you care more for speed than accuracy, just type makedir envarc:classes makedir envarc:classes/datatypes echo "DCT=FAST" >envarc:classes/datatypes/jfif44.prefs in a shell window. Alternatively, a single commandline call is also possible: setenv envarc:classes/datatypes/jfif44.prefs DCT=FAST Vampire Amigas - On Vampire, the default iDCT is the AMMX fast, less accurate iDCT. If you'd like to have the better accuracy of the new iDCT, type the following lines in a shell window: makedir envarc:classes makedir envarc:classes/datatypes echo "DCT=FASTGOOD" >envarc:classes/datatypes/jfif44.prefs alternative: setenv envarc:classes/datatypes/jfif44.prefs DCT=FASTGOOD