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 7.0.7.
-- Follow this link if you need the Intel IPP samples for Intel IPP 6.1 update 6.
-- 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 to illustrate the use of the Intel® Integrated Performance Primitives (Intel® IPP) library in real applications.
The Intel IPP code samples are available for the Windows*, Linux* and Mac OS* operating systems. Instructions on how to build each sample can be found in sample-specific readme files located each sample's main directory. Some samples include more detailed documentation in a doc directory, usually in the form of a PDF file.
The Intel IPP samples are distributed in multiple parts. Not every sample is available for every operating system. Sample files here 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 | Mac OS X |
| Main Samples | |||
| UIC Executables | |||
| DMIP Samples | |||
| Cryptography Samples |
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.
Note: 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.
Note: Release 7.0 of the Intel IPP library incorporates a new interfaces directory that is part of the product installation. Code located in the interfaces directory is designated by the INTERFACES tag on this page and is no longer part of the Intel IPP samples, please see your product installation directories.
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 samples archive 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.
Data Compression
MAIN - General Data Compression Example - 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.
Note: the following IPP implementations of popular compression libraries are now distributed as part of the main IPP library product. They are located in the new interfaces directory within the IPP library directories. These high-level IPP components are officially supported elements of the IPP library and are, therefore, no longer part of the samples distribution.
INTERFACES - bzip2-Compatible Library - data-compression\ipp_bzip2 -
An implementation of the bzip2/libbzip2 application and library (http://www.bzip.org/) 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.
INTERFACES - gzip-Compatible Library - data-compression\ipp_gzip -
A multi-threaded lossless data compression library that is compatible with the gzip format as defined by version 4.3 of RFC 1952 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.
INTERFACES - zlib-Compatible Library - data-compression\ipp_zlib -
A version of the 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 (http://www.zlib.net/).
INTERFACES - lzop-Compatible Library - data-compression\ipp_lzopack -
Using dictionary-based IPP functions based on the Lempel-Ziv-Oberhumer (LZO) algorithm. The compressed data format is similar to Oberhumer's LZOP file format (http://www.lzop.org) although it differs by file header structure.
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.
Note: to build the picnic application you must download and install the Nokia* Qt* GUI library appropriate for your OS from www.qtsoftware.com.
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 -
Based upon the Intel® Image Processing Library (IPL), this sample contains a set of low-level image manipulation functions that perform filtering, threshold detection, and transformation (FFT, DCT, geometric), as well as arithmetic and morphological operations on images. The library uses a flexible image format, supporting channels of 1, 8, 16 and 32-bit integer pixels, as well as 32-bit floating point pixels, with an arbitrary number of channels per image. Conversion to and from the Windows* DIB (device independent bitmap) image format is supported, as are conversions between color and gray-scale.
MAIN - 3D Math Functions - image-processing\3dmath -
Illustrates the 3D math functionality designed to support the Microsoft Direct3D interface.
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.
Computer Vision
MAIN - Face Detection - image-processing\Face_Detection -
How to use the Intel IPP library to implement a Haar classifier face detection algorithm.
Realistic Rendering
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.
Signal Processing
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.
Speech Coding
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 rtpdump file. The decoder performs the reverse operation.
String Processing
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.
Cryptography
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.
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).
For more complete information about compiler optimizations, see our Optimization Notice.
