Recent Changes - Search:

libjpeg-turbo Home

About libjpeg-turbo

Downloads

Documentation

Reports

Position Statements

Developer Info

Contact

SIMD Coverage of the libjpeg Algorithms

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 r2PPC AltiVec VMXLoongson MMI
RGB-to-YCbCr Color ConversionYesYesv2.0+Yesv2.0+v1.2+ 1v1.5+ 1v1.4+v1.5+v2.0+
RGB-to-Grayscale Color ConversionYesYesv2.0+Yesv2.0+v2.1+v2.1+v1.4+v1.5+v2.1+
H2V1 (4:2:2) DownsamplingYesYesv2.0+Yesv2.0+v2.1+v1.5+v1.4+v1.5+No
H2V2 (4:2:0) DownsamplingYesYesv2.0+Yesv2.0+v2.1+v1.5+v1.4+v1.5+v2.0+
Integer Sample ConversionYesYesv2.0+Yesv2.0+v1.2+v1.5+v1.4+v1.5+No
Fast Integer Forward DCT (Legacy Feature)YesYesNoYesNov1.2+v1.5+v1.4+v1.5+v2.1+
Accurate Integer Forward DCTYesYesv2.0+Yesv2.0+v2.1+v1.5+ 1v1.4+v1.5+v2.0+
Integer QuantizationYesYesv2.0+Yesv2.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 1v1.4+
H2V2 Smooth Downsampling 2v1.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 ConversionYesYesYesv1.4+
Floating Point Forward DCTYesYesYesNo
Floating Point QuantizationYesYesYesv1.4+

Entropy Coding Algorithms

 SSE2 (i386)SSE2 (x86_64)Neon (AArch32)Neon (AArch64)
Huffman Encodingv1.5+v1.5+v1.5+v1.5+ 1
Progressive Huffman Encodingv2.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 r2PPC AltiVec VMXLoongson MMI
YCbCr-to-RGB Color ConversionYesYesv2.0+Yesv2.0+v1.2+v1.4+ 2 3v1.4+v1.5+v2.0+
H2V1 (4:2:2) Fancy (Smooth) UpsamplingYesYesv2.0+Yesv2.0+v1.2.1+v2.1+v1.4+v1.5+v2.1+
H2V2 (4:2:0) Fancy (Smooth) UpsamplingYesYesv2.0+Yesv2.0+v2.1+v2.1+v1.4+v1.5+v2.0+
H1V2 (4:4:0) Fancy (Smooth) UpsamplingNoNoNoNoNov2.1+v2.1+NoNoNo
H2V1 (4:2:2) Merged Upsampling/Color Conversion 1YesYesv2.0+Yesv2.0+v2.1+v2.1+v1.4+v1.5+v2.1+
H2V2 (4:2:0) Merged Upsampling/Color Conversion 1YesYesv2.0+Yesv2.0+v2.1+v2.1+v1.4+v1.5+v2.1+
Fast Integer Inverse DCT (Legacy Feature)YesYesNoYesNov1.2+ 3v1.4+ 2v1.4+v1.5+v2.1+
Accurate Integer Inverse DCTYesYesv2.0+Yesv2.0+v1.2+ 3v1.4+ 2 3v1.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 r2PPC AltiVec VMX
YCbCr-to-RGB565 Color ConversionNoNoNoNoNov1.4+v1.4+NoNo
H2V1 (4:2:2) Plain Upsampling 1YesYesv2.0+Yesv2.0+v2.1+v2.1+v1.4+v1.5+
H2V2 (4:2:0) Plain Upsampling 1YesYesv2.0+Yesv2.0+v2.1+v2.1+v1.4+v1.5+
Integer Upsampling 2NoNoNoNoNoNoNov1.4+No
2x2 (1/4 Scaling) Integer Inverse DCTYesYesNoYesNov1.2+v1.4+v1.4+No
4x4 (1/2 Scaling) Integer Inverse DCTYesYesNoYesNov1.2+v1.4+v1.4+No
6x6 (3/4 Scaling) Integer Inverse DCTNoNoNoNoNoNoNov1.4+No
12x12 (3/2 Scaling) Integer Inverse DCTNoNoNoNoNoNoNov1.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 DCTYesYesYes
Creative Commons LicenseAll content on this web site is licensed under the Creative Commons Attribution 2.5 License. Any works containing material derived from this web site must cite The libjpeg-turbo Project as the source of the material and list the current URL for the libjpeg-turbo web site.

Edit - History - Print - Recent Changes - Search
Page last modified on January 31, 2023, at 02:17 PM