Intel® Integrated Performance Primitives (Intel® IPP) - JPEG sample and performance FAQs


Where can I download the Intel® IPP JPEG sample package?

Please notes, a new sample named UIC (unified Image Codecs) was introduced since IPP 6.0, which  is a collection of C++ classes designed for use with image processing applications. The UIC framework provides encode and decode support for the following image formats: BMP (Windows Bitmap), DDS (DirectDraw Surface), JPEG, JPEG2000, PNG, and PNM (Netpbm).  See more information in Intel® IPP - Unified Image Codecs(UIC). You can download the Intel IPP JPEG sample package from the following URL:

If you previously used Intel® IPP samples "\image-codecs\jpeg2000" or "image-codecs\jpegview" for JPEG and JPEG2000 decoding and encoding, you may check the whole new implementation introduced in Intel® IPP v6.0 or later. These old samples are now moved to as part of legacy sample code in Intel® IPP v6.1.

What JPEG samples does Intel IPP image-codec sample package contain?

The Intel IPP image-codec sample package contains two samples, IJG and UIC. in details, the following samples are available:





The Unified Image Codec samples demonstrate how to use UIC interface in image processing application. It integrates all kind of image codec: BMP, DDS, JPEG, JPEG2000, PNG, PNM in UIC framework.

Mac OS*


There is two demo executable application , the first one is simple command line image transcoder and the second one is GUI application which demonstrates implementation of computer vision algorithms with functions provided by Intel® Integrated Performance Primitives (Intel ® IPP) and basic content based image retrieval (CBIR) functionality based on MPEG7 image feature descriptors.

Mac OS*


This sample shows how to speed up a well known JPEG implementation, Independent JPEG Group (IJG) library.

Mac OS*



This sample simplifies migration to Intel IPP for Intel® JPEG Library (IJL) users. In some cases, this implementation may be slower than IJL v1.51 because IJL v1.51 uses 8-bit fixed-point coefficients in color conversion formulae. In this Intel IPP-based version, 14-bit and sometimes 16-bit accurate calculations are implemented. IJL-based projects must be recompiled.

Not supported
moved to legacy sample



This sample demonstrates how to use Intel IPP for JPEG 2000 encoder/decoder development.

Not Supported
moved to legacy sample



This simple C++ implementation of the JPEG encoder and decoder is optimized for maximum performance and uses OpenMP* threading in the decoder. Note: Compile the sample with Intel® C/C++ compiler to automatically enable OpenMP threading.

Not Supported
moved to legacy sample

What features are supported in the Intel IPP UIC sample package?

The Intel IPP UIC samples implement different JPEG features as described below:

  • JPEG : These samples support all JPEG standard features. But note, that for JPEG Extended mode (12-bits sample) the 4 most significant bits of  16-bit values should be set to zero.
  • JPEG2000: The decoder supports most features including several progression orders, multi-tile image decoding, lossy and lossless coding. The restriction of decoder is of streams with arbitrary-access markers, like SOP, EPH, PPM (and others) and ROI coding. The encoder supports basic options including lossy and lossless coding, 97 and 53 filter banks, quantization and rate-distortion optimization. The encoder is restricted to supporting one layer-resolution level-component-position, one layer compressed data organization and single tile/single precinct (per resolution level).
  • PNG: This sample supports 444, 422, 244 and 411 sampling factors (multi-threading used only for 444 and 422), image output in YUY2 format (if compressed with 422 sampling) and retrieval of Exif metadata. Lossless mode supports one-channel images only. Baseline JPEG encoding with several scans is not supported.

Where can I find the performance data for Intel IPP JPEG samples?

  • UIC sample: IPP UIC sample provide the functionality that can measure JPEG, JPEG2000 coding performance.  UIC-Demo provide prebuilt binary modules for UIC codecs which are statically linked to IPP libraries. Please refer to the Readme_demo.htm file in the UIC demo sample to learn how to run the demo and get the performance data.


Alternatively, you can build the UIC binary application from source. The details are explained in Readme.htm. Then get performance data as above.

  • Low-level API:  The performance data for general IPP low-level JPEG functions like ippiICTInv_JPEG2K_16s_P3IR,  you can check Intel IPP binaries package in the \tools\perfsys\data directory; run the files named ps_ippj*.csv.
    • IJG-IPP:Performance data is provided in the ijg_ipp.pdf document located in the JPEG sample package folder \jpeg\IJG\doc.
      IJG-IPP sample code also provides the ijg_timing utility that can measure JPEG coding performance. After building the sample code, you can find the ijg_timing application at folder \JPEG\IJG\bin\xxxx\. Please refer to Readme.htm file in the sample to learn how to run the application.

And some performance datas in other KB articles, 
-Application Notes - Intel® IPP JPEG2000 and JasPer in Ksquirrel
- Optimizing JPEG coding in the Ksquirrel application with Intel® IPP


This link will take you off of the Intel Web site. Intel does not control the content of the destination Web Site.


Operating System:

Windows Server* 2003 Standard x64 Edition, Mac OS*, Red Hat* Enterprise Linux 2.1, SUSE* Linux Enterprise Server 8.0, SUSE* Linux Enterprise Server 9.0, Windows* XP Professional, Red Hat* Linux 7.3, Red Hat* Linux 8.0, Windows Server* 2003, Red Hat* Linux 9.0, Red Hat* Enterprise Linux 3.0, Windows* XP 64-Bit Edition Version 2003