Declaration
property JPEG_DCTMethod: TIOJPEGDCTMethod;
Description
Specifies the DCT method used for reading and writing JPEG images.
The ioJPEG_ISLOW algorithm should produce a smaller file of better quality, while ioJPEG_IFAST will be larger. ioJPEG_FLOAT will produce a mid-sized file. The actual speed difference between the algorithms will depend on the system, and in real world testing ioJPEG_ISLOW may not be slower than ioJPEG_IFAST.
Default: ioJPEG_ISLOW (Specified by
IOParamDefaults)
Detail
When the Independent JPEG Group's software was first released in 1991, the compression time for a 1-megapixel JPEG image on a mainstream PC was measured in minutes. Thus, ioJPEG_IFAST provided noticeable performance benefits. On modern CPUs, however, the compression time for a 1-megapixel JPEG image is measured in milliseconds, and thus the performance benefits
of ioJPEG_IFAST are much less noticeable. On modern x86/x86-64 CPUs that support AVX2 instructions, ioJPEG_IFAST and ioJPEG_ISLOW have similar performance. On other types of CPUs, ioJPEG_IFAST is generally about 5-15% faster than ioJPEG_ISLOW.
For quality levels of 90 and below, there should be little or no perceptible quality difference between the two algorithms. For quality levels above 90, however, the difference between ioJPEG_IFAST and ioJPEG_ISLOW becomes more pronounced. With quality=97, for instance, ioJPEG_IFAST incurs generally about a 1-3 dB loss in PSNR relative to ioJPEG_ISLOW, but this
can be larger for some images. Do not use ioJPEG_IFAST with quality levels above 97. The algorithm often degenerates at quality=98 and above and can actually produce a more lossy image than if lower quality levels had been used.
ioJPEG_FLOAT does not produce significantly more accurate results than ioJPEG_ISLOW, and it is much slower. ioJPEG_FLOAT may also give different results on different machines due to varying rounding behavior, whereas the integer methods should give the same results on all machines.
See Also
◼OptimizeLoadingParams