Compression
Integer Algorithms [8-bit Data Precision]
| MMX (i386) | SSE2 (i386) | AVX2 (i386) | SSE2 (x86_64) | AVX2 (x86_64) | Neon (AArch32) | Neon (AArch64) | MIPS DSP r2 | PPC AltiVec VMX | Loongson MMI |
RGB-to-YCbCr Color Conversion | Yes | Yes | v2.0+ | Yes | v2.0+ | v1.2+ 1 | v1.5+ 1 | v1.4+ | v1.5+ | v2.0+ |
RGB-to-Grayscale Color Conversion | Yes | Yes | v2.0+ | Yes | v2.0+ | v2.1+ | v2.1+ | v1.4+ | v1.5+ | v2.1+ |
H2V1 (4:2:2) Downsampling | Yes | Yes | v2.0+ | Yes | v2.0+ | v2.1+ | v1.5+ | v1.4+ | v1.5+ | No |
H2V2 (4:2:0) Downsampling | Yes | Yes | v2.0+ | Yes | v2.0+ | v2.1+ | v1.5+ | v1.4+ | v1.5+ | v2.0+ |
Integer Sample Conversion | Yes | Yes | v2.0+ | Yes | v2.0+ | v1.2+ | v1.5+ | v1.4+ | v1.5+ | No |
Fast Integer Forward DCT (Legacy Feature) | Yes | Yes | No | Yes | No | v1.2+ | v1.5+ | v1.4+ | v1.5+ | v2.1+ |
Accurate Integer Forward DCT | Yes | Yes | v2.0+ | Yes | v2.0+ | v2.1+ | v1.5+ 1 | v1.4+ | v1.5+ | v2.0+ |
Integer Quantization | Yes | Yes | v2.0+ | Yes | v2.0+ | v1.2+ | v1.5+ | v1.4+ | v1.5+ | v2.0+ |
1 Both intrinsics (libjpeg-turbo v2.1+) and GAS (legacy) implementations provided; GAS implementation used by default with GCC to avoid performance regression
Infrequently Used Integer Algorithms [8-bit Data Precision]
| MIPS DSP r2 |
NULL Color Conversion 1 | v1.4+ |
H2V2 Smooth Downsampling 2 | v1.4+ |
1 Used when compressing an RGB-colorspace JPEG image from RGB pixels or a CMYK-colorspace JPEG image from CMYK pixels
2 Used when compressing a JPEG image with cjpeg -smooth
(never used in the TurboJPEG API)
Floating Point Algorithms (Legacy Feature)
| 3DNow! (i386) | SSE (i386) | SSE (x86_64) | MIPS DSP r2 |
Floating Point Sample Conversion | Yes | Yes | Yes | v1.4+ |
Floating Point Forward DCT | Yes | Yes | Yes | No |
Floating Point Quantization | Yes | Yes | Yes | v1.4+ |
Entropy Coding Algorithms
| SSE2 (i386) | SSE2 (x86_64) | Neon (AArch32) | Neon (AArch64) |
Huffman Encoding | v1.5+ | v1.5+ | v1.5+ | v1.5+ 1 |
Progressive Huffman Encoding | v2.0+ | v2.0+ | v2.1+ | v2.1+ |
1 Both intrinsics (libjpeg-turbo v2.1+) and GAS (legacy) implementations provided; GAS implementation used by default with GCC to avoid performance regression
Decompression
Integer Algorithms [8-bit Data Precision]
| MMX (i386) | SSE2 (i386) | AVX2 (i386) | SSE2 (x86_64) | AVX2 (x86_64) | Neon (AArch32) | Neon (AArch64) | MIPS DSP r2 | PPC AltiVec VMX | Loongson MMI |
YCbCr-to-RGB Color Conversion | Yes | Yes | v2.0+ | Yes | v2.0+ | v1.2+ | v1.4+ 2 3 | v1.4+ | v1.5+ | v2.0+ |
H2V1 (4:2:2) Fancy (Smooth) Upsampling | Yes | Yes | v2.0+ | Yes | v2.0+ | v1.2.1+ | v2.1+ | v1.4+ | v1.5+ | v2.1+ |
H2V2 (4:2:0) Fancy (Smooth) Upsampling | Yes | Yes | v2.0+ | Yes | v2.0+ | v2.1+ | v2.1+ | v1.4+ | v1.5+ | v2.0+ |
H1V2 (4:4:0) Fancy (Smooth) Upsampling | No | No | No | No | No | v2.1+ | v2.1+ | No | No | No |
H2V1 (4:2:2) Merged Upsampling/Color Conversion 1 | Yes | Yes | v2.0+ | Yes | v2.0+ | v2.1+ | v2.1+ | v1.4+ | v1.5+ | v2.1+ |
H2V2 (4:2:0) Merged Upsampling/Color Conversion 1 | Yes | Yes | v2.0+ | Yes | v2.0+ | v2.1+ | v2.1+ | v1.4+ | v1.5+ | v2.1+ |
Fast Integer Inverse DCT (Legacy Feature) | Yes | Yes | No | Yes | No | v1.2+ 3 | v1.4+ 2 | v1.4+ | v1.5+ | v2.1+ |
Accurate Integer Inverse DCT | Yes | Yes | v2.0+ | Yes | v2.0+ | v1.2+ 3 | v1.4+ 2 3 | v1.4+ | v1.5+ | v2.0+ |
1 Used when decompressing subsampled YCbCr JPEG images into an RGB output image with djpeg -nosmooth
or TJFLAG_FASTUPSAMPLE
2 Further optimized for in-order pipelines in libjpeg-turbo 1.5+.
3 Both intrinsics (libjpeg-turbo v2.1+) and GAS (legacy) implementations provided; GAS implementation used by default with GCC to avoid performance regression
Infrequently Used Integer Algorithms [8-bit Data Precision]
| MMX (i386) | SSE2 (i386) | AVX2 (i386) | SSE2 (x86_64) | AVX2 (x86_64) | Neon (AArch32) | Neon (AArch64) | MIPS DSP r2 | PPC AltiVec VMX |
YCbCr-to-RGB565 Color Conversion | No | No | No | No | No | v1.4+ | v1.4+ | No | No |
H2V1 (4:2:2) Plain Upsampling 1 | Yes | Yes | v2.0+ | Yes | v2.0+ | v2.1+ | v2.1+ | v1.4+ | v1.5+ |
H2V2 (4:2:0) Plain Upsampling 1 | Yes | Yes | v2.0+ | Yes | v2.0+ | v2.1+ | v2.1+ | v1.4+ | v1.5+ |
Integer Upsampling 2 | No | No | No | No | No | No | No | v1.4+ | No |
2x2 (1/4 Scaling) Integer Inverse DCT | Yes | Yes | No | Yes | No | v1.2+ | v1.4+ | v1.4+ | No |
4x4 (1/2 Scaling) Integer Inverse DCT | Yes | Yes | No | Yes | No | v1.2+ | v1.4+ | v1.4+ | No |
6x6 (3/4 Scaling) Integer Inverse DCT | No | No | No | No | No | No | No | v1.4+ | No |
12x12 (3/2 Scaling) Integer Inverse DCT | No | No | No | No | No | No | No | v1.4+ | No |
1 Used when decompressing subsampled non-YCbCr JPEG images into an RGB or CMYK output image with djpeg -nosmooth
or TJFLAG_FASTUPSAMPLE
2 Used when decompressing subsampled JPEG images with a sampling factor other than 4:2:0 or 4:2:2
Floating Point Algorithms (Legacy Feature)
| 3DNow! (i386) | SSE (i386) | SSE (x86_64) |
Floating Point Inverse DCT | Yes | Yes | Yes |