Code Samples for Intel® Integrated Performance Primitives (Intel® IPP) Library 7.0

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 windowsdownload linuxdownload Mac OS Xdownload
UIC Executables windowsdownload linuxdownload Mac OS Xdownload
DMIP Samples windowsdownload
Cryptography Samples windowsdownload linuxdownload Mac OS Xdownload


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] - windowslinuxMac OS X
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 - windowslinux
How to link with the Intel IPP merged static libraries.

MAIN - User-Defined Memory Allocation - advanced-usage\linkage\i_malloc - windowslinux
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 - windowslinux
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 - windows
How to use the Intel IPP library in applications that will run in the Windows CE environment.

MAIN - CPU Information Utility - advanced-usage\cpuinfo - windowslinuxMac OS X
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 - windowslinuxMac OS X
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 - windowslinuxMac OS X
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 - windowslinuxMac OS X
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 - windowslinuxMac OS X
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 - windowslinuxMac OS X
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 - windowslinuxMac OS X
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 - windowslinuxMac OS X
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 - windowslinuxMac OS X
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 - windowslinuxMac OS X
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 - windowslinuxMac OS X
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 - windowslinuxMac OS X
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 - windows
Demonstrates using Intel IPP functions to process tiled images.

MAIN - 2D Wavelet Transform - image-processing\2d-wavelet-transform - windows
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 - windows
General examples illustrating the usage of Intel IPP functions in C++ image processing.

MAIN - ippiDemo (Image Processing Demo) - image-processing\image-processing-functions - windowsMac OS X
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 - windows
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 - windows
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 - windows
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 - windows
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 - windowsMac OS X
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 - windows
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 - windows
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 - windows
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 - windows
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 - windowslinux
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 - windows
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 - windows
Demonstrates the Intel IPP usage for signal processing using an MFC-based GUI Interface.

MAIN - Viterbi Decoder - signal-processing\viterbi - windows
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 - windowslinuxMac OS X
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 - windowslinuxMac OS X
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 - windowslinuxMac OS X
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 - windowslinuxMac OS X
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 - windows
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 - windows
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 - windows
Demonstrates use of the Intel IPP in support of the OpenSSL Crypto layer.

CRYPTOGRAPHY - Fortran 90 Language Support - language-interface\f90-crypto - windows
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.