Note: the links to the IPP samples provided on this page are licensed under the Intel End User License Agreement, and are for Intel IPP 6.1.6.
-- Follow this link if you are looking for the Intel IPP samples for Intel IPP 7.0.
-- The 7.0 samples can also be used with the current Parallel Studio, Composer and XE product suites.
-- Intel IPP samples are also distributed via the Intel Registration Center with your product downloads.
To help jumpstart your application development we provide free code samples that illustrate the use of the Intel® Integrated Performance Primitives (Intel® IPP) in real applications.
The Intel IPP code samples are available for the Windows*, Linux*, and OS X* operating systems. Instructions on how to build each sample can be found in a sample-specific readme.htm file located each sample's main directory. Some samples may also include more detailed documentation, usually in the form of a PDF file.
In order to reduce the size of the downloads, the Intel IPP samples are distributed in multiple parts. Not every sample is available for every operating system. Sample files are only tested against the latest version of the Intel IPP library and may not work or build with older versions of the library.
By downloading any sample package you accept the End User License Agreement
|Sample File||Windows||Linux||OS X*|
Main Samples Download: includes samples for Library Linking & Advanced Usage, Audio & Video Coding, Data Compression, Image Processing, Computer Vision, Realistic Rendering, Language Interface, Signal Processing, Speech Coding, String Processing and UIC source. UIC Executables Download:
- is provided as a convenience. The Unified Image Codec download contains pre-built executable binaries.
- UIC source is located in the "Main Samples" download.
DMIP Samples Download:
- includes source code, pre-built executables and the Intel IPP DMIP library.
Cryptography Samples Download:
- for OpenSSL Crypto and Fortran 90 language support using the Intel IPP cryptography domain.
Legacy Samples Download: are infrequently updated or have been replaced with new implementations, for example UIC replaces several image codecs (including the IJL or Intel JPEG Library), and are listed separately at the end of this page. Important: those samples marked as legacy samples will not be included with the Intel IPP 7.0 product!!
Additional information regarding the contents and organization of the Intel IPP samples is available in the following knowledge base article: Samples Changes in Intel IPP 6.1.
Each sample description (below) includes a short title followed by a directory reference (such as advanced-usage\linkage\mergedlib) and one to three OS icons indicating which operating systems are supported by the sample. The directory refers to where you will find that sample within the ipp-samples directory, after you have downloaded and extracted the sample file(s) onto your system.
Note: every sample file includes a "tools" directory that can be safely overwritten when you extract the contents of the file.
Use of the Intel IPP samples is subject to the terms and conditions of the Intel End User License Agreement (EULA).
Note: many of the code samples illustrate the use of Intel IPP functions in support of international standards, which are promoted by various standards bodies, such as ISO, ITU-T and other organizations. Commercial implementations of these standards may require licenses from various entities, including Intel Corporation. Such industry standard licensing is not included as part of the Intel IPP library, nor is it provided with these example illustrations.
Library Linking and Advanced Usage
MAIN – Custom DLLs and Static Libraries – advanced-usage\linkage\custom[dll|so|lib] –
- Use custom DLLs, threaded and non-threaded merged static libraries, and different linking methodologies to produce smaller sized applications.
MAIN – Using Merged Static Libraries – advanced-usage\linkage\mergedlib –
- How to link with the Intel IPP merged static libraries.
MAIN – User-Defined Memory Allocation – advanced-usage\linkage\i_malloc –
- Customize Intel IPP memory management by replacing the standard malloc(), calloc(), realloc(), and free() functions with your own memory allocation routines.
MAIN – Using IPP in Kernel Mode – advanced-usage\ippsdrv –
- Illustrates using static dispatching of the Intel IPP library for kernel mode (ring zero) drivers and applications.
MAIN – Windows CE for IA-32 Architecture – advanced-usage\wincex86 –
- How to use the Intel IPP library in applications that will run in the Windows CE environment.
MAIN – CPU Information Utility – advanced-usage\cpuinfo –
- An application that provides useful information regarding the instruction set capabilities and other useful parameters associated with your processor.
Audio and Video Coding
The following samples utilize the Unified Media C++ Classes (UMC), a C++ framework designed to simplify the development of advanced codecs, to implement some applications that demonstrate Intel IPP audio and video acceleration features.
MAIN – Simple Media Player – audio-video-codecs\application\simple_player –
- A multi-format video player for multiple platforms using the Intel IPP audio and video coding functions and image and signal processing functions. The player supports the H.264, H.263, H.261, AVS, VC1, Motion JPEG, MPEG-4, MPEG-2, and DV video formats and the MP3 and AAC audio formats.
MAIN – Console H.264 Video Decoding – audio-video-codecs\application\umc_h264_dec_con –
- A command-line H.264 video decoding application using the Intel IPP signal processing, image processing, video coding functions and UMC framework.
MAIN – Video Encoder – audio-video-codecs\application\umc_video_enc_con –
- A command-line video encoding application using the Intel IPP audio and video coding functions, and image and signal processing functions. It supports the H.264, H.263, H.261, MPEG-4, MPEG-2 and DV video formats.
MAIN – bzip2-Compatible Library – data-compression\ipp_bzip2 –
- This sample implements the bzip2/libbzip2 application and library (
- ) using the Intel IPP data compression functions library. The Intel IPP version of the bzip2 library implements a lossless, block-sorting data compression algorithm that includes threading optimization improvements.
MAIN – gzip-Compatible Library – data-compression\ipp_gzip –
- A multi-threaded lossless data compression library that is compatible with the gzip format as defined by
- by use of the Intel IPP data compression domain functions. This sample illustrates significant performance improvements by means of the OpenMP library and other methods of parallel processing on a multi-core processor.
MAIN – zlib-Compatible Library – data-compression\ipp_zlib –
- A sample that illustrates how to build a zlib-compatible data compression library using the optimized LZ77 and Huffman coding functions in the Intel IPP library. Based on version 1.2.3 of the zlib library (
MAIN – General Data Compression Examples – data-compression\ipp_compress –
- An example of a general-purpose compress and decompress function based on the Intel IPP data compression primitives. The resulting compress and decompress applications include support for Huffman, Run Length Encoding (RLE), Move-To-Front transform (MTF), Burrows-Wheeler Transform (BWT), General Interval Transform (GIT), and Ziv-Lempel-Storer-Szymanski (LZSS) dictionary-based compression algorithms.
Image Coding (JPEG, JPEG2000, PNG, etc.)
The "UIC Samples" download contains only pre-built executables; the UIC source code is part of the "Main Samples" download.
MAIN & UIC – Unified Image Codec (UIC) Class – image-codecs\uic –
- UIC 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). Source code for two applications, picnic and uic_transcoder_con, are provided to illustrate the use of the UIC classes. Ready to run executables of these two applications are provided in a separate download (see the download table above).
Note: the UIC class documentation can be found in the image-codecs\uic\src\doc directory that is part of the sample distribution.
MAIN & UIC – Picnic and uic_transcoder_con Demo Applications – image-codecs\uic\src\application –
- Ready to run executable versions of the Picnic and uic_transcoder_con applications are available in a separate download, to demonstrate use of the UIC classes. The source code for both applications is in the general sample download package. Picnic demonstrates JPEG/JPEG2000 encoding/decoding; RLE encoding/decoding; and image filtering and computer vision algorithms such as face detection, inpainting, and image segmentation. The uic_transcoder_con application is a simple command-line utility that demonstrates how to use the UIC classes to implement encoding and decoding of image files.
- to build the picnic application you must download and install the Nokia* Qt* GUI library appropriate for your OS from
MAIN – Integration with the Independent JPEG Group (IJG) Library – image-codecs\ijg –
- Demonstrates how to use the Intel IPP library to increase the performance of the Independent JPEG Group (IJG) library.
Image Processing, Generation and Editing
MAIN – Tiled Image Processing – image-processing\image-tiling –
- Demonstrates using Intel IPP functions to process tiled images.
MAIN – 2D Wavelet Transform – image-processing\2d-wavelet-transform –
- Illustrates the use of the two-dimensional wavelet transform functions to implement a Haar transform.
MAIN – C++ Image Processing Classes – image-processing\image-processing-templates –
- General examples illustrating the usage of Intel IPP functions in C++ image processing.
MAIN – ippiDemo (Image Processing Demo) – image-processing\image-processing-functions –
- This sample exercises nearly all of the ippIP and ippCC domain functions, and a large part of the ippCV domain functions.
MAIN – Simplified Image Processing Demo – image-processing\image-processing-mfc –
- This sample is a simplified version of the ippiDemo above, and illustrates the use of the IPP image processing functions.
MAIN – Intel Image Processing Library (IPL) – image-processing\ipl-ipp –
Deferred Mode Image Processing (DMIP)
The DMIP samples are not part of the "Main Samples" download, you must download the separate "DMIP Samples" file.
DMIP – Cache-Optimized Pipelined Image Processing Library – image-processing\dmip –
- The DMIP library provides an adaptable multi-threading platform on which to build very high-performance parallel processing applications. It utilizes Intel IPP functions to operate on data partitioned for optimum cache utilization in parallel pipelines of execution threads.
- This DMIP sample for Intel IPP is only available for Windows* and includes source code for applications that utilize the pre-built DMIP library to demonstrate the DMIP algorithms. Limitations include: (1) the DMIP harmonization filter was developed for gray scale images and may give incorrect results when used with color images. (2) The size of the automatically chosen DMIP slice may not be optimal for multi-threaded performance and must be set manually. (3) In some cases DMIP threading performance may not scale properly when the number of CPU cores is greater than two.
MAIN – Face Detection - image-processing\Face_Detection –
- How to use the Intel IPP library to implement a Haar classifier face detection algorithm.
MAIN – Ray-Tracing and Realistic Rendering – realistic-rendering\ray-tracing –
- This example illustrates how to use the ipprr domain primitives to implement a Whitted-stile ray tracer. This sample cannot be used to create images larger that 2048x2048 pixels and using no more then 32 threads for models up to 2 million triangles.
MAIN – 3D Viewer – realistic-rendering\3d-viewer –
This sample supports the mdla and tbj scene formats with a JPEG texture file. The sample implements the following "next tracers": TracerEyeMat, TracerShdMat, TracerSpecMat, TracerEye and TracerShd.
Language Interface Support
MAIN – Microsoft .NET (C#) – language-interface\csharp –
- Demonstrates how to use Intel IPP when developing applications in the Microsoft C# environment. Includes wrapper classes to support Intel IPP string manipulations, image, signal processing, color conversion, cryptography, data compression, JPEG, matrix and vector math.
MAIN – C++ Applications – language-interface\cpp –
- Illustrates how to create a C++ application that performs simple testing of the functionality of the infinite impulse response (IIR) filters created with the Intel IPP signal processing domain of functions.
MAIN – Java Applications – language-interface\java –
- Using the IPP library from the Java language. This example uses the Intel IPP image processing functions to perform filtrating as well as morphological and geometric operations.
MAIN – ippsDemo (Signal Processing Demo) – signal-processing\signal-processing-functions –
- Demonstrates the Intel IPP signal processing functions via a general purpose GUI application.
MAIN – Signal Processing with the Microsoft Foundation Classes (MFC) – signal-processing\signal-processing-mfc –
- Demonstrates the Intel IPP usage for signal processing using an MFC-based GUI Interface.
MAIN – Viterbi Decoder – signal-processing\viterbi –
- How to use the Intel IPP functions to create a Viterbi decoder.
The Unified Speech Component (USC) interface is a C language framework designed for implementation of speech codecs, echo cancellers and other voice processing modules using the Intel IPP library. Most of the following speech coding samples utilize this extendible USC interface.
MAIN – Speech Codec Application – speech-codecs\application\usc_speech_codec –
- The speech codec sample supports encoding and decoding compliant with 3GPP TS 26 071, 073, 171, 173, 174, 190-194, 273, 274, 290, ITU-T G.711/I/II, G.722, G.722.1, G.723.1/A, G.726/A, G.728G//I/J/H, G.729/A/B/D/E/I/C/C+, and G.729.1 recommendations, the ETSI GSM 06.90-06.94, 06.10-06.12, 06.31-06.32 recommendations, and Microsoft Real-Time Audio.
MAIN – Noise Reduction (NR) and Voice Activity Detection (VAD) – speech-codecs\application\usc_nr –
The NR sample processes PCM narrow band data (16-bit 8000Hz). The VAD sample processes PCM narrow band (16-bit 8000Hz) or wide band (16-bit 16000Hz) data. A variety of VAD algorithms are supported including G.723, G.729, AMRWB and the IPP VAD algorithm (originally released as an IPP speech-recognition audio-processing sample).
MAIN – Echo Cancellation – speech-codecs\application\usc_ec –
- A console application using Intel IPP speech coding functions to perform echo cancellation. This sample illustrates building a "digital terminals" device compliant with ITU-T G.167, G.168-2004, P.330, P.340 specifications.
MAIN – Tone Detector – speech-codecs\application\usc_tones –
- How to use the Intel IPP speech coding functions to perform echo cancellation. This sample complies with ITU G.168-200 2 and Q.23 specifications.
MAIN – Microsoft RT Audio Support – speech-codecs\application\umc_speech_rtp_codec –
- The UMC RTP speech codec sample supports audio compression and decompression using Intel IPP to and from a variety of RTP formats in compliance with 3GPP TS 26 171, 173, 174, 190-194, 273, 274, 290 specifications, ITU-T G.722, G.722.1, G.722.2, G.723.1/A, G.726/A, G.728/I/G/H/J, G.729/A/B/D/E/I/C/C+, G.711/I/II recommendations, ETSI GSM 06.10-06.12, 06.31-06.32, 06.90-06.94 specifications, and RFC 4867. The encoder compresses audio data from a WAV file, storing the result as a compressed
- file. The decoder performs the reverse operation.
MAIN – ippgrep – Regular Expression Matching – string-processing\ippgrep –
- An application that uses the IPP string processing functions to perform Perl-compatible regular expression pattern matching.
These cryptography samples are only available in the "Cryptography Samples" download and are not part of the "Main Samples" download. In addition, the Intel IPP cryptography domain binaries (the linkable library components) must be downloaded separately from the main IPP library. See the note below for a link with more information on how to obtain a copy of the Intel IPP cryptography library.
CRYPTOGRAPHY – OpenSSL Crypto Layer Support – cryptography\openssl-ipp –
- Demonstrates use of the Intel IPP in support of the OpenSSL Crypto layer.
CRYPTOGRAPHY – Fortran 90 Language Support – language-interface\f90-crypto –
- Using the Intel IPP cryptography functions with the Fortran 90 language.
Note: The Intel IPP Cryptography library is a restricted download, in order to comply with US export laws. Please go here for more information on how to obtain the IPP Cryptography library.
LEGACY Samples – Image Coding (JPEG, JPEG2000, etc.)
These legacy samples are part of the "Legacy Samples" download and are not included in the "Main Samples" download.
Important: these legacy samples are not included with the Intel IPP 7.0 product!!
LEGACY – Integration with the Intel JPEG Library (IJL) – image-codecs\jpeg-ijl –
- Provides high-performance JPEG encoding and decoding of full color and grayscale still images. This sample provides an easy-to-use programming interface without sacrificing low-level JPEG control for advanced developers.
See the UIC samples for an up-to-date replacement for the IJL library.LEGACY – JPEG2000 encoder/decoder – image-codecs\jpeg2000 –
- Shows how to use the Intel IPP library with JPEG 2000. Includes rate control with rate-distortion optimization, lossless support, full color, grayscale, single component, palette, and multi-level 2D wavelet transform support.
LEGACY – JPEG viewer – image-codecs\jpegview –
- A JPEG image encoder and decoder built using the Intel IPP library.
LEGACY Samples – Language Interface Support
These legacy samples are part of the "Legacy Samples" download and are not included in the "Main Samples" download. Important: these legacy samples are not included with the Intel IPP 7.0 product!!
LEGACY – Microsoft .NET (Visual Basic) – language-interface\dotnet-vb –
- How to call the IPP library from a Visual Basic application. This example uses the Intel IPP image processing functions to perform filtrating as well as morphological and geometric operations.
LEGACY – Borland Delphi – language-interface\delphi –
- Demonstrates how to use IPP functions in the Borland* Delphi* environment.
LEGACY – Borland Kylix – language-interface\kylix –
- Using the IPP functions in the Borland* Kylix* environment.
LEGACY Samples – Speech Recognition
These legacy samples are part of the "Legacy Samples" download and are not included in the "Main Samples" download. Important: these legacy samples are not included with the Intel IPP 7.0 product!!
LEGACY – Aurora* – speech-recognition\aurora –
- Demonstrates the extraction and compression algorithms of the ETSI ES 201 108 v1.1.3 standard using Intel IPP.
LEGACY – Advanced Aurora – speech-recognition\advanced-aurora –
- Tests the extraction and compression algorithms of the ETSI ES 202 050 v1.1.1 standard using Intel IPP.
LEGACY – Audio Processing – speech-recognition\audio-processing –
- Shows how to use the Intel IPP functions to implement audio processing algorithms including acoustic echo cancellation, noise reduction, voice activity detection and feature extraction with Intel IPP.
LEGACY – Gaussian Mixture – speech-recognition\gaussian-mixture –
- Illustrates how to calculate Gaussian mixture values using the Intel IPP functions including Gaussian Mixture Model (GMM) training, pitch detection and speech re-sampling.
LEGACY – Speech Processing – speech-recognition\speech-processing –
- Demonstrates use of Intel IPP to implement Gaussian Mixture Model (GMM) training, pitch detection and speech re-sampling.
This software is subject to the U.S. Export Administration Regulations and other U.S. law, and may not be exported or re-exported to certain countries (Burma, Cuba, Iran, Libya, North Korea, Sudan, and Syria) or to persons or entities prohibited from receiving U.S. exports (including Denied Parties, Specially Designated Nationals, and entities on the Bureau of Export Administration Entity List or involved with missile technology or nuclear, chemical or biological weapons).