AmigaOS 4.0


IBrowse - Get It

Valid XHTML 1.0!


RegisterRegister Now
Bug Tracker
Futaura.co.uk / Oliver Roberts
JPEG 45.13
PNG 45.21
TIFF 45.9
BMP 45.7
PCX 45.5
PSD 45.5
Prefs 45.9
· WarpJPEG.datatype
The fastest 24-bit JPEG picture datatype!
For 68k, OS4, WarpOS and MorphOS.
Copyright © 1999-2016 Oliver Roberts, All Rights Reserved.
Version: 45.13
Released: 20 April 2016

WarpJPEG.datatype is a yet another JFIF/JPEG datatype. The original difference being that it was for owners of PPC cards, and was targetted specifically at WarpUp (not PowerUp). Even better, it is fast, compact, clean, well behaved and fast - a true plug'n'play PPC datatype. Now though, 68k optimized and MorphOS + OS4 native versions have been added with AltiVec enhancements, which also benefit from my WarpDT engine. One of the key features is its superior speed, hence the name WarpJPEG. There are various user settings available, which can be changed using the WarpDT Preferences program.

· Features

  • Supports regular JFIF files, and also many JPEG variant formats such as Exif, Adobe, Photoshop, Mavi, Windows, JCCK/CMYK colorspace files and other less common formats
  • Supports both normal and progressive JPEG files
  • SmartScale lossless capable JPEG decoder
  • Can optionally downscale large images to fit the screen, during the JPEG decoding process, allowing huge oversized images to be loaded and displayed much faster.
  • Full true colour (24-bit) and high quality reduced colour (256 colours or less) and greyscale output modes, for graphics cards and native Amiga displays respectively
  • Highly optimized datatype dispatch engine, and fast JPEG decoder, resulting in a very efficient, compact and quick JPEG datatype
  • Asynchronous file i/o and double buffering techniques (WarpOS only), which speeds up image decoding
  • Optimized versions for 68020, 030, 040 and 060
  • PowerPC support with native OS4, WarpOS and MorphOS versions
  • AltiVec speed optimizations for OS4 and MorphOS
  • Alter the pen allocation precision when images are remapped to an 8-bit display
  • Specific support for the AmigaOS picture.datatype v44+, when available
  • The dithering feature of the AmigaOS picture.datatype v44+ can be configured to your liking (e.g. disabled for 15/16-bit displays)
  • Based on the Independent JPEG Group's jpeglib 9b/6b and libjpeg-turbo
Warp Datatypes

· Speed

The table below shows the time (in seconds) it took to decode 16 different images on my AmigaOne-XE G4-7455/800MHz with Radeon 7500. You may be aware that the jpeg.datatype supplied with OS4 was originally developed by myself and based on WarpJPEG, although WarpJPEG has moved on since then. It is therefore no surprise that without AltiVec there is not a lot of difference in speed between the two datatypes for smaller images, but WarpJPEG excels with images over 1 megapixels in size. With an AltiVec equipped processor, WarpJPEG comes into its own with a noticable performance increase - the performance gain on a PA6T is even greater than on a G4.

AmigaOS 4.x (PowerPC)
WarpJPEG 45.13OS 4.1
AltiVec OnAltiVec Off
6088x4550 24-bit colour progressive, 3461416 bytes1.7942.4963.008
4288x2848 24-bit colour progressive, 2774552 bytes1.0291.6221.702
2749x4049 24-bit colour progressive, 1650665 bytes0.6590.9471.21
3136x2352 24-bit colour progressive, 438485 bytes0.3540.5320.679
2000x3008 24-bit colour progressive, 691688 bytes0.3270.4810.612
3072x2048 24-bit colour progressive, 421864 bytes0.3060.4550.577
2008x1597 24-bit colour progressive, 225570 bytes0.1540.2310.291
1280x1012 24-bit colour progressive, 148387 bytes0.0680.1010.128
804x1040 24-bit colour progressive, 306821 bytes0.0770.1190.121
1024x766 24-bit colour progressive, 244522 bytes0.0710.110.112
779x767 24-bit colour progressive, 162752 bytes0.0520.0810.082
779x767 24-bit colour progressive, 86016 bytes0.1230.1480.15
450x450 24-bit colour progressive, 50845 bytes0.0180.0290.029
370x502 24-bit colour progressive, 24480 bytes0.0130.0180.022
506x1007 24-bit colour progressive, 88115 bytes0.0210.0270.029
761x495 24-bit colour progressive, 68593 bytes0.050.050.053

Note: the above benchmarks measure the time taken by NewDTObject() to load and decode the image from a HDD, and are the average of 10 iterations.

The table below shows the time (in seconds) it took to decode 10 different images on my A1200 603e/240MHz 060/50MHz, with BVision and CGX picture.datatype, with other tested datatypes configured as close as possible to WarpJPEG's internal settings. However, I should emphasize that the figures above are for comparison purposes only - the actual values are likely to be slightly different (faster or slower) on your system, but I'm confident that the WarpOS version of WarpJPEG is noticably faster than all alternative PPC datatypes.

The figures speak for themselves... WarpJPEG for WarpOS is around 70-90% faster on most images (twice as fast on greyscale and small colour images) than other PPC datatypes and around 3-4 times faster than 68k datatypes on a 060 (the speed difference will be even greater on 040 systems with a fast PPC). Maybe you don't believe these claims - my answer to that is simple... Try WarpJPEG for yourself and you will see the difference! :)

The results for the MorphOS version are interesting. It's actually on par with the WarpOS version (above), and actually even faster in some cases, especially with larger images. It's also faster than the PowerUp version of akJFIF running under PowerUp emulation in MorphOS, where it's at least 30% faster. For smaller images, it's twice as fast, and for greyscale images it can be upto 5 times faster than akJFIF! No benchmarks for 68k versions are included because they were found to be many times slower.

The results for the 68k version are much tighter, although overall, WarpJPEG comes out on top. Not by that much, but faster nonetheless.

PowerPC/68K (dual-cpu) PowerPC (no 68K) M68K
akJFIF 44.112WarpJPEG
akJFIF 44.112WarpJPEG
JFIFdt 44.7
2008x1597 24-bit colour progressive, 225570 bytes1.983.863.61.542.035.565.856.758.77
1280x1012 24-bit colour progressive, 148387 bytes0.881.741.590.741.012.632.753.093.96
804x1040 24-bit colour progressive, 306821 bytes0.881.561.460.871.133.283.343.633.5
1024x766 24-bit colour progressive, 244522 bytes0.841.541.410.831.
779x767 24-bit colour progressive, 162752 bytes0.621.
779x767 24-bit colour progressive, 86016 bytes1.131.631.470.771.052.62.973.193.03
450x450 24-bit colour progressive, 50845 bytes0.250.480.410.240.420.720.730.810.76
370x502 24-bit colour progressive, 24480 bytes0.180.380.320.160.340.430.450.530.63
506x1007 24-bit colour progressive, 88115 bytes0.220.510.450.241.140.720.910.830.76
761x495 24-bit colour progressive, 68593 bytes0.380.610.540.321.0711.141.091.05

Note: all tests were performed, multiple times, using Visage, with the following command line: "visage test.jpg nojpeg time test".

· Requirements

  • Kickstart 3.0 or higher
  • picture.datatype v43 or higher (i.e. either of the ones supplied with AmigaOS 3.5+, P96 or CGraphX)
68k version
  • 68020 processor or higher (optimized versions included)
WarpOS version
  • PPC accelerator card + 68040/060
  • WarpUp Release 5.0 or higher
OS4 version
  • PPC accelerator card / AmigaOne / SAM
  • AmigaOS 4.0 or higher
MorphOS version
  • PPC accelerator card / Pegasos / Efika
  • MorphOS 1.4 or higher
Note that a graphics card is not necessary.

Page design by Oliver Roberts - Copyright © 2001-2020, All Rights Reserved - Terms & Conditions