AmigaOS 4.0


IBrowse - Get It

Valid XHTML 1.0!


RegisterRegister Now
Bug Tracker
Futaura.co.uk / Oliver Roberts
· WarpJPEG.datatype
The fastest 24-bit JPEG picture datatype!
For 68k, OS4, WarpOS and MorphOS.
Copyright © 1999-2022 Oliver Roberts, All Rights Reserved.
Version: 45.17
Released: 8 October 2022

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 9e/6b and libjpeg-turbo
Warp Datatypes

· Speed

All benchmarks below were calculated with PicDTBench and its default settings, loading images from a HDD, using the average of 10 iterations, functionally comparable to "visage test.jpg nojpeg time test". For a fair comparison, other datatypes tested were configured as close as possible to WarpJPEG's default settings (jpeglib defaults), including best quality, slower integer IDCT. Obviously, you can get faster speeds by choosing to switch to the faster less accurate IDCT.

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.

Benchmarked system
AmigaOne-XE G4-7455/800MHz
with Radeon 7500
AmigaOS 4.x (PowerPC)
WarpJPEG 45.17OS 4.1
AltiVec OnAltiVec Off
6088x4550 24-bit colour, 3461416 bytes2.403.213.79
4288x2848 24-bit colour, 2774552 bytes1.281.952.03
2749x4049 24-bit colour, 1650665 bytes0.981.291.53
3136x2352 24-bit colour, 438485 bytes0.560.770.91
2000x3008 24-bit colour, 691688 bytes0.490.670.77
3072x2048 24-bit colour, 421864 bytes0.470.660.78
2008x1597 24-bit colour, 225570 bytes0.250.340.40
1280x1012 24-bit colour, 148387 bytes0.110.150.17
804x1040 24-bit colour, 306821 bytes0.100.140.15
1024x766 24-bit colour, 244522 bytes0.090.130.14
779x767 24-bit colour, 162752 bytes0.070.100.10
779x767 24-bit colour progressive, 86016 bytes0.140.170.17
450x450 24-bit colour, 50845 bytes0.030.040.04
370x502 24-bit colour, 24480 bytes0.020.030.03
506x1007 8-bit grey, 88115 bytes0.040.050.05
761x495 8-bit grey progressive, 68593 bytes0.060.070.07

The tables below shows the time (in seconds) it took to decode 13 different images on my A1200 + BlizzardPPC 603e+/240MHz 060/50MHz, with BVision and CGX picture.datatype, and test files located on a SCSI2SD V6. I should emphasize that the figures below 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 60-80% 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 similar speed as the WarpOS version (above), although a little slower for larger images. It's faster than both akJFIF and the JPEG datatype supplied with MorphOS, where it is up to 30% faster. Obviously, if running the MorphOS version on AltiVec capable hardware, you can expect WarpJPEG to be much faster, of a magnitude similar to the AmigaOS 4.x version.

The results for the 68k version are much tighter, and in some cases WarpJPEG is actually much faster, especially for larger images.

Benchmarked system
A1200 + BlizzardPPC 603e+/240MHz 060/50MHz, BVision, CGX picture.datatype + SCSI2SD V6
PowerPC/68K (dual-cpu) PowerPC (no 68K) M68K
akJFIF 44.131WarpJPEG
3136x2352 24-bit colour, 438485 bytes2.905.
2000x3008 24-bit colour, 691688 bytes2.494.514.472.773.684.1611.1112.1812.8417.8121.63
3072x2048 24-bit colour, 421864 bytes2.594.544.492.713.444.148.799.6310.1815.4717.75
2008x1597 24-bit colour, 225570 bytes1.322.212.191.351.662.064.875.375.548.229.61
1280x1012 24-bit colour, 148387 bytes0.571.031.000.570.730.832.292.502.653.764.45
804x1040 24-bit colour, 306821 bytes0.641.041.040.690.840.732.952.903.373.374.29
1024x766 24-bit colour, 244522 bytes0.611.071.050.660.890.752.822.803.223.194.09
779x767 24-bit colour, 162752 bytes0.440.730.730.460.560.511.991.972.262.242.86
779x767 24-bit colour progressive, 86016 bytes0.660.970.960.660.950.712.212.532.762.72x
450x450 24-bit colour, 50845 bytes0.160.310.300.
370x502 24-bit colour, 24480 bytes0.
506x1007 8-bit grey, 88115 bytes0.150.680.670.
761x495 8-bit grey progressive, 68593 bytes0.260.650.630.

(x = not supported)

· System Requirements

68k version

  • Kickstart 3.0 or higher
  • 68020 processor or higher (optimized versions included)
  • picture.datatype v43 or higher (supplied with AmigaOS 3.1.4, 3.2, 3.5, 3.9, CyberGraphX, P96 or AfA OS)
WarpOS version
  • Kickstart 3.0 or higher
  • PPC accelerator card + 68040/060
  • WarpUp Release 5.0 or higher
  • picture.datatype v43 or higher (supplied with AmigaOS 3.1.4, 3.2, 3.5, 3.9, CyberGraphX, P96 or AfA OS)
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-2024, All Rights Reserved - Terms & Conditions