<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated on Thu, 24 May 2012 15:39:19 -0700 -->
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <atom:link href="http://software.intel.com/en-us/articles/intel-ipp-kb/type/sample-code/feed/" rel="self" type="application/rss+xml" />
    <title>Intel Software Network articles Feed</title>
    <link>http://software.intel.com/en-us/articles/intel-ipp-kb/type/sample-code/</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>Intel IPP ippsResamplePolyphase function source download</title>
      <description><![CDATA[ <p>The speech recognition functions (ippSR domain) are not part of IPP 7.0 release. Check <a href="http://software.intel.com/en-us/articles/intel-ipp-70-library-release-notes/">the release notes</a> for some details. The source code of<strong> ippsResamplePolyphase</strong> functions in the ippSR domain is available for downloading from Intel Registration Center: <br />      <br />      1)Get <a href="http://registrationcenter.intel.com/irc_nas/2223/ipp-resample-07-21-2011.zip"><strong>ippsResamplePolyphase source from here </strong></a><br />     <br />      2)Unzip the package with the password "resample"<br />     <br />      3)Check the "readme.txt" file on the software requirements and follow the instructions in the file to build the source code.<br /><br />A simple test program is also included in the package to demonstrate the usage of the functions.<br /><br />Other functions in ippSR domain are supported in the IPP 6.1 product. Please use IPP 6.1 if they are required for the application.</p> ]]></description>
      <link>http://software.intel.com/en-us/articles/ippsresamplepolyphase-source-download/</link>
      <pubDate>Fri, 09 Dec 2011 08:00:00 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/ippsresamplepolyphase-source-download/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/ippsresamplepolyphase-source-download/</guid>
      <category>Intel® Integrated Performance Primitives Knowledge Base</category>
    </item>
    <item>
      <title>Code Samples for the Intel® Integrated Performance Primitives (Intel® IPP) Library 7.0*</title>
      <description><![CDATA[ <div>
<blockquote>
<div ><b>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</b>. <br />-- Follow this link if you need the <a target="_blank" href="http://software.intel.com/en-us/articles/code-samples-for-intel-integrated-performance-primitives-intel-ipp-v61-library/">Intel IPP samples for Intel IPP 6.1 update 6</a>.<br />-- The 7.0 samples can also be used with the current Parallel Studio, Composer and XE product suites.<br />-- Intel IPP samples are also distributed via the <a target="_blank" href="https://registrationcenter.intel.com/">Intel Registration Center</a> with your product downloads.</div>
</blockquote>
</div>
<p>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.</p>
<p>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.</p>
<p><i>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.</i></p>
<div align="center">
<h2><i><b>By downloading any sample package you accept the <a href="http://software.intel.com/sites/products/documentation/EULA/Intel_SW_Dev_Products_EULA.pdf">End User License Agreement</a></b></i></h2>
<table valign="middle" border="1" cellpadding="2" cellspacing="0" width="600">
<colgroup width="180"></colgroup><colgroup align="center" span="3" valign="middle" width="140"></colgroup> 
<tbody>
<tr height="30">
<td><b>Sample File</b></td>
<td><b>Windows</b></td>
<td><b>Linux</b></td>
<td><b>Mac OS X</b></td>
</tr>
<tr>
<td>Main Samples</td>
<td><img src="http://software.intel.com/file/24026" alt="windows" title="windows" /><a href="http://registrationcenter.intel.com/irc_nas/2582/w_ipp-samples_p_7.0.7.064.zip">download</a></td>
<td><img src="http://software.intel.com/file/24027" alt="linux" title="linux" /><a href="http://registrationcenter.intel.com/irc_nas/2581/l_ipp-samples_p_7.0.7.049.tgz">download</a></td>
<td><img src="http://software.intel.com/file/24028" alt="Mac OS X" title="Mac OS X" /><a href="http://registrationcenter.intel.com/irc_nas/2588/m_ipp-samples_p_7.0.7.049.tgz">download</a></td>
</tr>
<tr>
<td>UIC Executables</td>
<td><img src="http://software.intel.com/file/24026" alt="windows" title="windows" /><a href="http://registrationcenter.intel.com/irc_nas/2582/w_ipp-uic_p_7.0.7.064.zip">download</a></td>
<td><img src="http://software.intel.com/file/24027" alt="linux" title="linux" /><a href="http://registrationcenter.intel.com/irc_nas/2581/l_ipp-uic_p_7.0.7.049.tgz">download</a></td>
<td><img src="http://software.intel.com/file/24028" alt="Mac OS X" title="Mac OS X" /><a href="http://registrationcenter.intel.com/irc_nas/2588/m_ipp-uic_p_7.0.7.049.tgz">download</a></td>
</tr>
<tr>
<td>DMIP Samples</td>
<td><img src="http://software.intel.com/file/24026" alt="windows" title="windows" /><a href="http://registrationcenter.intel.com/irc_nas/2582/w_ipp-dmip_p_7.0.7.064.zip">download</a></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Cryptography Samples</td>
<td><img src="http://software.intel.com/file/24026" alt="windows" title="windows" /><a href="http://registrationcenter.intel.com/irc_nas/2582/w_ipp-samples-cryptography_p_7.0.7.064.zip">download</a></td>
<td><img src="http://software.intel.com/file/24027" alt="linux" title="linux" /><a href="http://registrationcenter.intel.com/irc_nas/2581/l_ipp-samples-cryptography_p_7.0.7.049.tgz">download</a></td>
<td><img src="http://software.intel.com/file/24028" alt="Mac OS X" title="Mac OS X" /><a href="http://registrationcenter.intel.com/irc_nas/2588/m_ipp-samples-cryptography_p_7.0.7.049.tgz">download</a></td>
</tr>
</tbody>
</table>
<br /></div>
<p><i><b><br />Main Samples Download:</b> includes samples for Library Linking &amp; Advanced Usage, Audio &amp; Video Coding, Data Compression, Image Processing, Computer Vision, Realistic Rendering, Language Interface, Signal Processing, Speech Coding, String Processing and UIC source.</i></p>
<p><i><b>UIC Executables Download:</b> is provided as a convenience. The Unified Image Codec download contains pre-built executable binaries.</i></p>
<blockquote>
<p><i><b>Note:</b> UIC source is located in the "Main Samples" download.</i></p>
</blockquote>
<p><i><b>DMIP Samples Download:</b> includes source code, pre-built executables and the Intel IPP DMIP library.</i></p>
<p><i><b>Cryptography Samples Download:</b> for OpenSSL Crypto and Fortran 90 language support using the Intel IPP cryptography domain.</i></p>
<blockquote>
<p><i><b>Note:</b> Release 7.0 of the Intel IPP library incorporates a new <i>interfaces</i> directory that is part of the product installation. Code located in the <i>interfaces</i> directory is designated by the <span ><b>INTERFACES</b></span> tag on this page and is no longer part of the Intel IPP samples, please see your product installation directories.</i></p>
</blockquote>
<p>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.</p>
<blockquote><i><b>Note:</b> every sample file includes a <span>tools</span> directory that can be safely overwritten when you extract the contents of the samples archive file.</i></blockquote>
<p>Use of the Intel IPP samples is subject to the terms and conditions of the Intel <a href="http://software.intel.com/sites/products/documentation/EULA/Intel_SW_Dev_Products_EULA.pdf">End User License Agreement</a> (EULA).</p>
<blockquote><i><b>Note:</b> 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.</i></blockquote>
<h2>Library Linking and Advanced Usage</h2>
<p><b>MAIN - Custom DLLs and Static Libraries - advanced-usage\linkage\custom[dll|so|lib] - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <img src="http://software.intel.com/file/24027" alt="linux" title="linux" /> <img src="http://software.intel.com/file/24028" alt="Mac OS X" title="Mac OS X" /> <br /></b>Use custom DLLs, threaded and non-threaded merged static libraries, and different linking methodologies to produce smaller sized applications.</p>
<p><b>MAIN - Using Merged Static Libraries - advanced-usage\linkage\mergedlib - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <img src="http://software.intel.com/file/24027" alt="linux" title="linux" /> <br /></b>How to link with the Intel IPP merged static libraries.</p>
<p><b>MAIN - User-Defined Memory Allocation - advanced-usage\linkage\i_malloc - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <img src="http://software.intel.com/file/24027" alt="linux" title="linux" /> <br /></b>Customize Intel IPP memory management by replacing the standard malloc(), calloc(), realloc(), and free() functions with your own memory allocation routines.</p>
<p><b>MAIN - Using IPP in Kernel Mode - advanced-usage\ippsdrv - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <img src="http://software.intel.com/file/24027" alt="linux" title="linux" /> <br /></b>Illustrates using static dispatching of the Intel IPP library for kernel mode (ring zero) drivers and applications.</p>
<p><b>MAIN - Windows CE for IA-32 Architecture - advanced-usage\wincex86 - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <br /></b>How to use the Intel IPP library in applications that will run in the Windows CE environment.</p>
<p><b>MAIN - CPU Information Utility - advanced-usage\cpuinfo - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <img src="http://software.intel.com/file/24027" alt="linux" title="linux" /> <img src="http://software.intel.com/file/24028" alt="Mac OS X" title="Mac OS X" /> <br /></b>An application that provides useful information regarding the instruction set capabilities and other useful parameters associated with your processor.</p>
<h2>Audio and Video Coding</h2>
<p>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.</p>
<p><b>MAIN - Simple Media Player - audio-video-codecs\application\simple_player - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <img src="http://software.intel.com/file/24027" alt="linux" title="linux" /> <img src="http://software.intel.com/file/24028" alt="Mac OS X" title="Mac OS X" /> <br /></b>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.</p>
<p><b>MAIN - Console H.264 Video Decoding - audio-video-codecs\application\umc_h264_dec_con - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <img src="http://software.intel.com/file/24027" alt="linux" title="linux" /> <img src="http://software.intel.com/file/24028" alt="Mac OS X" title="Mac OS X" /> <br /></b>A command-line H.264 video decoding application using the Intel IPP signal processing, image processing, video coding functions and UMC framework.</p>
<p><b>MAIN - Video Encoder - audio-video-codecs\application\umc_video_enc_con - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <img src="http://software.intel.com/file/24027" alt="linux" title="linux" /> <img src="http://software.intel.com/file/24028" alt="Mac OS X" title="Mac OS X" /> <br /></b>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.</p>
<h2>Data Compression</h2>
<p><b>MAIN - General Data Compression Example - data-compression\ipp_compress - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <img src="http://software.intel.com/file/24027" alt="linux" title="linux" /> <img src="http://software.intel.com/file/24028" alt="Mac OS X" title="Mac OS X" /> <br /></b>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.</p>
<blockquote>
<p><i><b>Note:</b> 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.</i></p>
</blockquote>
<p><b><span ><b>INTERFACES</b></span> - bzip2-Compatible Library - data-compression\ipp_bzip2 - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <img src="http://software.intel.com/file/24027" alt="linux" title="linux" /> <img src="http://software.intel.com/file/24028" alt="Mac OS X" title="Mac OS X" /> <br /></b>An implementation of the bzip2/libbzip2 application and library (<a href="http://www.bzip.org">http://www.bzip.org/</a>) 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.</p>
<p><b><span ><b>INTERFACES</b></span> - gzip-Compatible Library - data-compression\ipp_gzip - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <img src="http://software.intel.com/file/24027" alt="linux" title="linux" /> <img src="http://software.intel.com/file/24028" alt="Mac OS X" title="Mac OS X" /> <br /></b>A multi-threaded lossless data compression library that is compatible with the gzip format as defined by <a href="http://www.gzip.org/zlib/rfc-gzip.html">version 4.3 of RFC 1952</a> 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.</p>
<p><b><span ><b>INTERFACES</b></span> - zlib-Compatible Library - data-compression\ipp_zlib - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <img src="http://software.intel.com/file/24027" alt="linux" title="linux" /> <img src="http://software.intel.com/file/24028" alt="Mac OS X" title="Mac OS X" /> <br /></b>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 (<a href="http://www.zlib.net/">http://www.zlib.net/</a>).</p>
<p><b><span ><b>INTERFACES</b></span> - lzop</b><b>-Compatible Library - data-compression\ipp_lzopack - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <img src="http://software.intel.com/file/24027" alt="linux" title="linux" /> <img src="http://software.intel.com/file/24028" alt="Mac OS X" title="Mac OS X" /> <br /></b>Using dictionary-based IPP functions based on the <a target="_blank" href="http://www.oberhumer.com/opensource/lzo">Lempel-Ziv-Oberhumer (LZO) algorithm</a>. The compressed data format is similar to Oberhumer's LZOP file format (<a href="http://www.lzop.org">http://www.lzop.org</a>) although it differs by file header structure.</p>
<h2>Image Coding (JPEG, JPEG2000, PNG, etc.)</h2>
<p>The "UIC Samples" download contains only pre-built executables; the UIC source code is part of the "Main Samples" download.</p>
<p><b>MAIN &amp; UIC - Unified Image Codec (UIC) Class - image-codecs\uic - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <img src="http://software.intel.com/file/24027" alt="linux" title="linux" /> <img src="http://software.intel.com/file/24028" alt="Mac OS X" title="Mac OS X" /> <br /></b>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).</p>
<blockquote><i><b>Note:</b> the UIC class documentation can be found in the image-codecs\uic\src\doc directory that is part of the sample distribution.</i></blockquote>
<p><b>MAIN &amp; UIC - Picnic and uic_transcoder_con Demo Applications - image-codecs\uic\src\application - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <img src="http://software.intel.com/file/24027" alt="linux" title="linux" /> <img src="http://software.intel.com/file/24028" alt="Mac OS X" title="Mac OS X" /> <br /></b>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.</p>
<blockquote><b>Note:</b> to build the picnic application you must download and install the Nokia* Qt* GUI library appropriate for your OS from <a href="http://www.qtsoftware.com">www.qtsoftware.com</a>.</blockquote>
<p><b>MAIN - Integration with the Independent JPEG Group (IJG) Library - image-codecs\ijg - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <img src="http://software.intel.com/file/24027" alt="linux" title="linux" /> <img src="http://software.intel.com/file/24028" alt="Mac OS X" title="Mac OS X" /> <br /></b>Demonstrates how to use the Intel IPP library to increase the performance of the Independent JPEG Group (IJG) library.</p>
<h2>Image Processing, Generation and Editing</h2>
<p><b>MAIN - Tiled Image Processing - image-processing\image-tiling - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <br /></b>Demonstrates using Intel IPP functions to process tiled images.</p>
<p><b>MAIN - 2D Wavelet Transform - image-processing\2d-wavelet-transform - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <br /></b>Illustrates the use of the two-dimensional wavelet transform functions to implement a Haar transform.</p>
<p><b>MAIN - C++ Image Processing Classes - image-processing\image-processing-templates - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <br /></b>General examples illustrating the usage of Intel IPP functions in C++ image processing.</p>
<p><b>MAIN - ippiDemo (Image Processing Demo) - image-processing\image-processing-functions - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <img src="http://software.intel.com/file/24028" alt="Mac OS X" title="Mac OS X" /></b> <br />This sample exercises nearly all of the ippIP and ippCC domain functions, and a large part of the ippCV domain functions.</p>
<p><b>MAIN - Simplified Image Processing Demo - image-processing\image-processing-mfc - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /></b> <br />This sample is a simplified version of the ippiDemo above, and illustrates the use of the IPP image processing functions.</p>
<p><b>MAIN - Intel Image Processing Library (IPL) - image-processing\ipl-ipp - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <br /></b>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.</p>
<p><b>MAIN - 3D Math Functions - image-processing\3dmath -</b> <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <br />Illustrates the 3D math functionality designed to support the Microsoft Direct3D interface.</p>
<div></div>
<h2>Deferred Mode Image Processing (DMIP)</h2>
<p>The DMIP samples are not part of the "Main Samples" download, you must download the separate "DMIP Samples" file.</p>
<p><b>DMIP - Cache-Optimized Pipelined Image Processing Library - image-processing\dmip - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <br /></b>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.</p>
<p>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.</p>
<h2>Computer Vision</h2>
<p><b>MAIN - Face Detection - image-processing\Face_Detection - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <img src="http://software.intel.com/file/24028" alt="Mac OS X" title="Mac OS X" /> <br /></b>How to use the Intel IPP library to implement a Haar classifier face detection algorithm.</p>
<h2>Realistic Rendering</h2>
<p><b>MAIN - Ray-Tracing and Realistic Rendering - realistic-rendering\ray-tracing - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <br /></b>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.</p>
<p><b>MAIN - 3D Viewer - realistic-rendering\3d-viewer - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <br /></b>This sample supports the <i>mdla</i> and <i>tbj</i> scene formats with a JPEG texture file. The sample implements the following "next tracers": TracerEyeMat, TracerShdMat, TracerSpecMat, TracerEye and TracerShd.</p>
<h2>Language Interface Support</h2>
<p><b>MAIN - Microsoft .NET (C#) - language-interface\csharp - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <br /></b>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.</p>
<p><b>MAIN - C++ Applications - language-interface\cpp - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <br /></b>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.</p>
<p><b>MAIN - Java Applications - language-interface\java - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <img src="http://software.intel.com/file/24027" alt="linux" title="linux" /> <br /></b>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.</p>
<h2>Signal Processing</h2>
<p><b>MAIN - ippsDemo (Signal Processing Demo) - signal-processing\signal-processing-functions - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <br /></b>Demonstrates the Intel IPP signal processing functions via a general purpose GUI application.</p>
<p><b>MAIN - Signal Processing with the Microsoft Foundation Classes (MFC) - signal-processing\signal-processing-mfc - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <br /></b>Demonstrates the Intel IPP usage for signal processing using an MFC-based GUI Interface.</p>
<p><b>MAIN - Viterbi Decoder - signal-processing\viterbi - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <br /></b>How to use the Intel IPP functions to create a Viterbi decoder.</p>
<h2>Speech Coding</h2>
<p>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.</p>
<p><b>MAIN - Speech Codec Application - speech-codecs\application\usc_speech_codec - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <img src="http://software.intel.com/file/24027" alt="linux" title="linux" /> <img src="http://software.intel.com/file/24028" alt="Mac OS X" title="Mac OS X" /> <br /></b>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.</p>
<p><b>MAIN - Noise Reduction (NR) and Voice Activity Detection (VAD) - speech-codecs\application\usc_nr - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <img src="http://software.intel.com/file/24027" alt="linux" title="linux" /> <img src="http://software.intel.com/file/24028" alt="Mac OS X" title="Mac OS X" /> </b><br />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).</p>
<p><b>MAIN - Echo Cancellation - speech-codecs\application\usc_ec - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <img src="http://software.intel.com/file/24027" alt="linux" title="linux" /> <img src="http://software.intel.com/file/24028" alt="Mac OS X" title="Mac OS X" /> <br /></b>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.</p>
<p><b>MAIN - Tone Detector - speech-codecs\application\usc_tones - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <img src="http://software.intel.com/file/24027" alt="linux" title="linux" /> <img src="http://software.intel.com/file/24028" alt="Mac OS X" title="Mac OS X" /> <br /></b>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.</p>
<p><b>MAIN - Microsoft RT Audio Support - speech-codecs\application\umc_speech_rtp_codec - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <br /></b>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 <i>rtpdump</i> file. The decoder performs the reverse operation.</p>
<h2>String Processing</h2>
<p><b>MAIN - ippgrep - Regular Expression Matching - string-processing\ippgrep - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /></b> <br />An application that uses the IPP string processing functions to perform Perl-compatible regular expression pattern matching.</p>
<h2>Cryptography</h2>
<p>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.</p>
<p><b>CRYPTOGRAPHY - OpenSSL Crypto Layer Support - cryptography\openssl-ipp - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <br /></b>Demonstrates use of the Intel IPP in support of the OpenSSL Crypto layer.</p>
<p><b>CRYPTOGRAPHY - Fortran 90 Language Support - language-interface\f90-crypto - <img src="http://software.intel.com/file/24026" alt="windows" title="windows" /> <br /></b>Using the Intel IPP cryptography functions with the Fortran 90 language.</p>
<blockquote>
<p><i><b>Note:</b> The Intel IPP Cryptography library is a restricted download, in order to comply with US export laws. Please</i> <a href="http://software.intel.com/en-us/articles/download-ipp-cryptography-libraries/"><i>go here</i></a> <i>for more information on how to obtain the IPP Cryptography library.</i></p>
<p> </p>
<p>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).</p>
</blockquote> ]]></description>
      <link>http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-code-samples/</link>
      <pubDate>Thu, 05 May 2011 00:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-code-samples/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-code-samples/</guid>
      <category>Software Products General</category>
      <category>Intel® Integrated Performance Primitives Knowledge Base</category>
    </item>
    <item>
      <title>How to find active speech level (audio level) using Intel® IPP function?</title>
      <description><![CDATA[ <p>Using the following piece of code, one can find audio level.</p>
<pre name="code" class="cpp">{
      Ipp32f tmpMinS,tmpMaxS;

      Ipp32f m_PeakAmpdB;

       ippsMinMax_32f(fileData, sizeSamples, &amp;tmpMinS, &amp;tmpMaxS);

      Ipp32f maxAbsSample = IPP_MAX(fabs(tmpMinS),fabs(tmpMaxS));

      if(maxAbsSample &gt; 0) {

            m_PeakAmpdB = 20.f * log10(maxAbsSample / 32768.f);

      } else {

      m_PeakAmpdB = -91.f;

      }

}

</pre>
<p><br />In this code, Amp(dB) = 20 lg(S/N), where S- random signal, N - noise. If S=1 then Amp(dB) = 20 lg(1/N) = -91 – this is silence.</p> ]]></description>
      <link>http://software.intel.com/en-us/articles/how-to-find-active-speech-level-audio-level-using-intel-ipp-function/</link>
      <pubDate>Sun, 23 Jan 2011 10:30:00 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/how-to-find-active-speech-level-audio-level-using-intel-ipp-function/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/how-to-find-active-speech-level-audio-level-using-intel-ipp-function/</guid>
      <category>Intel® C++ Compiler for Linux* Knowledge Base</category>
      <category>Intel® C++ Compiler for Mac OS X* Knowledge Base</category>
      <category>Intel® C++ Compiler for Windows* Knowledge Base</category>
      <category>Intel® Software Development Tool Suites for Intel® Atom™ Processor Knowledge Base</category>
      <category>Intel® Integrated Performance Primitives Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
    </item>
    <item>
      <title>Video Demo of Using Intel® IPP in Intel® Parallel Studio </title>
      <description><![CDATA[ <p>Intel® IPP is available as a <a href="http://software.intel.com/en-us/articles/intel-ipp/">stand-alone product</a> and as a part of the <a href="http://software.intel.com/en-us/articles/intel-parallel-studio-home/">Intel® Parallel Studio 2011</a>,  <a href="http://software.intel.com/en-us/articles/intel-parallel-studio-xe/">Intel® Parallel Studio XE 2011</a>, <a href="http://software.intel.com/en-us/articles/intel-parallel-studio-xe/">Intel® C++ Studio XE2011</a>, <a href="http://software.intel.com/en-us/articles/intel-composer-xe/">Intel® Composer XE 2011</a>, and <a href="http://software.intel.com/en-us/articles/intel-composer-xe/">Intel® C++ Composer XE 2011</a>.  <br /><br />In this Video, I would like to show you how easy to use Intel® IPP libraries in Intel Parallel Studio IDE and acheive performance gain on multi-core processors. <br /><br />You may know that Intel Integrated Performance Primitives (Intel® IPP) is an extensive library of multicore-ready, highly optimized software functions for digital media and data-processing applications. Intel IPP offers thousands of optimized functions covering frequently-used fundamental algorithms. It is designed to deliver performance beyond what optimized compilers alone can deliver. <br /><br />We use Microsoft visual studio 2005 and Intel Parallel Studio as developing environment and use the Resize Image project  as sample.<br /><br /><br />  
<object codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" height="311" width="622">
<param name="src" value="http://software.intel.com/file/33168" /><embed type="application/x-shockwave-flash" src="http://software.intel.com/file/33168" height="311" width="622"></embed>
</object>
<br /><br />The video includes several swf files. Please unzip the  <a href="http://software.intel.comjavascript:void(0)" onclick="function onclick() { function onclick() { function onclick() { function onclick() { function onclick() { function onclick() { function onclick() { function onclick() { function onclick() { function onclick() { function onclick() { function onclick() { function onclick() { function onclick() { function onclick() { function onclick() { function onclick() { function onclick() { function onclick() { function onclick() { function onclick() { function onclick() { function onclick() { function onclick() { function onclick() { function onclick() { function onclick() { function onclick() { function onclick() { ndownload('http://software.intel.com/file/33174') } } } } } } } } } } } } } } } } } } } } } } } } } } } } }">ImageResize_demo.zip</a> and double click the ImageResize_demo.htm.<br /><br />Please download the Microsoft Visual Studio project from <a href="http://software.intel.com/en-us/articles/accelerate-your-application-via-ipp-image-processing-in-parallel-studio-c-code-vs-ipp-resize/"><b>Accelerate Your Application via IPP Image Processing in Parallel Studio - C code vs. IPP Resize</b></a> <br />  <br />Refer to our <a href="http://software.intel.com/en-us/articles/optimization-notice/">Optimization Notice</a> for more information regarding performance and optimization choices in Intel software products.</p> ]]></description>
      <link>http://software.intel.com/en-us/articles/video-demo-of-using-intel-ipp-in-intel-parallel-studio/</link>
      <pubDate>Tue, 14 Dec 2010 09:00:00 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/video-demo-of-using-intel-ipp-in-intel-parallel-studio/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/video-demo-of-using-intel-ipp-in-intel-parallel-studio/</guid>
      <category>Intel® Integrated Performance Primitives Knowledge Base</category>
    </item>
    <item>
      <title>Accelerate Your Application via IPP Image Processing in Parallel Studio - C code vs. IPP Resize</title>
      <description><![CDATA[ <p align="left"><strong>Summary</strong><br />Intel®<strong> </strong>Parallel Studio 2011 release recently. IPP as one key component of Intel®<strong> </strong>Parallel Composer provide user a easy and faster way to accelarate digital application. This article shows how to employ IPP image processing function to develop parallel ready application and provide a sample to shows the performance difference between IPP and general C code on resizing image, which is wide-used functionality in image processing field. Test show that the IPP function can run 44x faster than corresponding C code. If enabling parallel, the speed up will high 50x on Core 2 Quad 2.66GHz machine. <br /><br /><a href="http://software.intel.com/file/29998"><strong>Attached</strong></a> is the sample project, one Parallel Composer 2011 project in MicroSoft Visual Studio 2005 IDE. <br />Some developers may install Intel Parallel Composer with Microsoft Visual Studio 2010. <a href="http://software.intel.com/file/32831"><strong>Here</strong></a> is the project. <br /><b><br />How to build the Sample</b></p>
<p>1. Build system requirement</p>
<p>Software:<br />•   <a href="http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-for-windows-compiling-and-linking-with-microsoft-visual-c-and-intel-c-compilers/#10#10">Intel Parallel Studio 2011 and Microsoft* Visual Studio 2005 and later</a><br />•   (optional)  install static ipp library separately from http://software.intel.com/en-us/articles/intel-ipp-static-libraries/ <b></b></p>
<p>Hardware:  The latest dual-core/Quad Core machine with Windows xp/Windows Vista/Windows 7</p>
<p>2. Download and Unzip the Resize_Image_PS_VS2005.zip to a directory, let's name &lt;WorkDIR&gt;</p>
<p>3. Go to &lt;WorkDIR&gt; and double click the Resize Image.sln.  The msvc2005 IDE will prompt automatically.</p>
<p>4. From the <b>main toolbar</b> select <b>Project&gt;&gt;</b> <b>Intel Parallel Composer 2011 »</b> <b>Select Build Component.</b></p>
<p>(or right-click the Project in Solution Explorer) , check <b>Use IPP. </b>click OK<b></b></p>
<p>5. Then build the application, from the <b>main toolbar</b> select<strong> Build &gt;&gt; Build solution<br /></strong><br />Please see the build details in<strong>  </strong><a href="http://software.intel.com/en-us/articles/use-intel-ipp-in-intel-parallel-composer/"><strong>Use Intel IPP in Intel® Parallel Composer</strong></a></p>
<p><b>How to run the application</b> </p>
<p>1. Run the application<br />From the <strong>main toolbar</strong>, select <b>Debug</b> &gt;&gt;<strong> Start Without Debugging. </strong>The application windows start, Click Open File, Select LennaC1.bmp <br /><strong><img src="http://software.intel.com/file/29994" alt="ReadLenna.JPG" title="ReadLenna.JPG" /></strong></p>
<p>2. click menu "Process =&gt; Resize image" to Resize the image. <br /> Enter the zoom factor in horizontal (x) and vertical (y) directory in Resize dialog box.  Click OK  <img src="http://software.intel.com/file/29995" alt="Process.JPG" title="Process.JPG" /></p>
<p>3: Click lennC1.bmp and repeat step 2 again, make sure click button USE_IPP. Then get the below image  <strong><img src="http://software.intel.com/file/29997" alt="result1.JPG" title="result1.JPG" /></strong></p>
<p><b>IPP Function Adoption: <br /></b>Assume the sample is the application we want to improve the performance via IPP function.  <br />1.  Find the c code resize image function in RESIZE.cpp</p>
<p>unsigned long C_Code_Resize(unsigned char * src, int srcWidth, int srcHeight,   int srcStep, unsigned char* dst, int dstWidth, int dstHeight, int dstStep, double m_zoom_x, double m_zoom_y, int interpolation)</p>
<p> It is called by function ProcessImage(CSampleDoc *pSrc) in ippiAddC.cpp<br /><br />2. Check ipp manual ippiman.pdf and find the function ippiResizeSqrPixel have same functionality.  Then replace the C function with IPP function.   <br />Declare a similiar function in RESIZE.cpp<br />unsigned long IPP_Resize( void* src, int srcWidth, int srcHeight,int srcStep,  void* dst,  int dstWidth, int dstHeight, int dstStep, double m_nzoom_x, double m_nzoom_y, int interpolation)</p>
<p align="left"> And call it in ProcessImage(CSampleDoc *pSrc) in ippiAddC.cpp instead of call C_Code_Resize().  (In order to compare the performance, we keep the c function call here.)</p>
<p> if (m_USE_IPP)<br />{<br />             ippStaticInit();<br />       //---- perform IPP Funtion Code to rotate a image  -----//<br />         run_time = IPP_Resize(pSrc-&gt;DataPtr(),pSrc-&gt;Width(),pSrc-&gt;Height(),pSrc-&gt;Step(),(Ipp8u*)pDst-&gt;DataPtr(),        pDst-&gt;Width(),pDst-&gt;Height(),pDst-&gt;Step(),m_zoom_x,m_zoom_y,m_Interpolation);<br />}<br />else{         //---- perform C Code to rotate a image  -----//<br />         run_time = C_Code_Resize((unsigned char *)pSrc-&gt;DataPtr(),pSrc-&gt;Width(),<br />         pSrc-&gt;Height(),pSrc-&gt;Step(), (unsigned char *)pDst-&gt;DataPtr(), pDst-&gt;Width(),pDst-&gt;Height(),pDst-&gt;Step(),m_zoom_x,m_zoom_y,m_Interpolation);<br />}     <br /><br />3. Write the IPP code to replace the C code.  The table show the original C code and the IPP code </p>
<p>
<table width="588" cellpadding="0" cellspacing="0" border="1">
<tbody>
<tr>
<td width="284" valign="top">
<p>Tthe C code</p>
</td>
<td width="304" valign="top">
<p>The IPP code</p>
</td>
</tr>
<tr>
<td width="284" valign="top">
<p>unsigned long C_Code_Resize(unsigned char * src, int srcWidth, int srcHeight,int srcStep, unsigned char* dst, int dstWidth, int dstHeight, int dstStep, double m_zoom_x, double m_zoom_y, int interpolation)</p>
<p align="left">{//---------- Perform 1 order linear ---<br />     //define record time variable<br />     unsigned long start_clock,stop_clock;    start_clock = RUNTIME;</p>
<p align="left">     const unsigned char *tmpSrc;<br />    unsigned char *tmpRef;<br />    int width = srcWidth;<br />    int height = srcHeight;<br />    double xInv = 1.0 /  m_zoom_x;<br />    double yInv = 1.0 /  m_zoom_y;</p>
<p align="left">    int colInd, rowInd;<br />    int i, j, xSrc0, xSrc1, ySrc0, ySrc1, wdroi, hdroi;<br />    int idxl, idyt, icol, jrow;<br />    double row, col;<br />    double y1, y2, y3, y4, v, v1, v2, tempV,tempV2;</p>
<p align="left">     idxl=0;<br />     idyt=0; <br />    wdroi = dstWidth;<br />    hdroi = dstHeight;</p>
<p align="left">     tmpSrc = src;<br />for(int kloop=0;kloop&lt;LOOP;kloop++) </p>
<p align="left">{  <br />  tmpRef = dst ;<br />    for (j = 0, jrow = idyt; j &lt; hdroi; j++, jrow++) {         row = (jrow + 0.5) * yInv - 0.5;</p>
<p align="left">        rowInd = (int)floor(row);<br />        ySrc0 = ts_iGetCoord_vs(rowInd, rowInd,  0, srcHeight, srcHeight);<br />        ySrc1 = ts_iGetCoord_vs(rowInd, rowInd + 1, 0, srcHeight, srcHeight);<br />        for (i = 0, icol = idxl; i &lt; wdroi; i++, icol++) { <br />            col = (icol + 0.5) * xInv - 0.5;<br />            colInd = (int)floor(col);<br />            xSrc0 = ts_iGetCoord_vs(colInd, colInd,   0, srcWidth, srcWidth);<br />            xSrc1 = ts_iGetCoord_vs(colInd, colInd + 1, 0, srcWidth, srcWidth);<br />            y1 = (double)tmpSrc[ySrc0 * srcStep + xSrc0];<br />            y2 = (double)tmpSrc[ySrc0 * srcStep + xSrc1];<br />            y3 = (double)tmpSrc[ySrc1 * srcStep + xSrc0];<br />            y4 = (double)tmpSrc[ySrc1 * srcStep + xSrc1];  <br /> ts_iLinearCalcSP_vs(col + 0.5, colInd + 0.5, colInd + 1.5, y1, y2, &amp;v1);            ts_iLinearCalcSP_vs(col + 0.5, colInd + 0.5, colInd + 1.5, y3, y4, &amp;v2);<br />ts_iLinearCalcSP_vs(row + 0.5, rowInd + 0.5, rowInd + 1.5, v1, v2, &amp;v);<br />              //(ts_isaturate_vs(v);<br />            tempV = (int)(v + EXP + 0.5);             tmpRef[i] =(unsigned char)((tempV &gt; 255) ? 255 : (tempV &lt; 0) ? 0 : tempV);<br />        }<br />        tmpRef += dstStep;<br />  }  <br />}</p>
<p align="left">     stop_clock = RUNTIME;</p>
<p align="left">     int mhz;</p>
<p align="left">    ippGetCpuFreqMhz(&amp;mhz);</p>
<p align="left">     return (stop_clock - start_clock)/mhz/LOOP;</p>
<p>}</p>
</td>
<td width="304" valign="top">
<p align="left">unsigned long IPP_Resize(void* src, int srcWidth, int srcHeight,int srcStep,  void* dst,  int dstWidth, int dstHeight, int dstStep,   double m_nzoom_x, double m_nzoom_y, int interpolation)</p>
<p align="left">  {</p>
<p align="left">      //   define record time variable<br />    unsigned long start_clock,stop_clock;     start_clock= RUNTIME;</p>
<p align="left"> // define IPP function parameter</p>
<p align="left">     IppiRect srcRoi = {0,0, srcWidth, srcHeight};</p>
<p align="left">     IppiRect dstRoi={0,0, dstWidth,dstHeight};</p>
<p align="left"> </p>
<p align="left">     IppiSize srcSize = {srcWidth, srcHeight};</p>
<p align="left">    IppiSize dstSize = {dstWidth, dstHeight};</p>
<p align="left"> </p>
<p align="left">     int BufferSize;</p>
<p align="left">     ippiResizeGetBufSize(srcRoi, dstRoi, 1, interpolation, &amp;BufferSize);</p>
<p align="left">     Ipp8u* pBuffer=ippsMalloc_8u(BufferSize);</p>
<p align="left"> <br /><br />     for(int i=0;i&lt;LOOP;i++)    </p>
<p align="left">     //---------- Perform IPP function:ippiResizeSqrPixel_8u_C1R  -------------------------------------------//</p>
<p align="left">     ippiResizeSqrPixel_8u_C1R((Ipp8u*)src, srcSize, srcStep, srcRoi, (Ipp8u*)dst, dstStep, dstRoi, m_nzoom_x,m_nzoom_y,0, 0, interpolation, pBuffer);</p>
<p align="left">    ippsFree(pBuffer);<br />    stop_clock = RUNTIME;<br />      int mhz;<br />    ippGetCpuFreqMhz(&amp;mhz);<br />     return (stop_clock - start_clock)/mhz/LOOP;</p>
</td>
</tr>
</tbody>
</table>
</p>
<p> </p>
<p><b>Performance Gain</b> </p>
<p>On one test machine (core 2 Quad 2.66GHz), as the result image show that the performance gain is 15654/353=<strong>44x</strong>.</p>
<p>The test is linking serial IPP static library.  As the ippiResize is threaded in dynamic library and threaded IPP static library. If enable the multithread, the performance gain will be more than <strong>50x</strong> (depends on the core numbers and image size).<br /><br /><strong>Conclusion<br /></strong>Intel® Parallel Studio 2011 provide developer a first suit of tool for easy developing parallel application on multi-core platform. IPP is part of key component of Intel® Parallel Studio. It provide over thousands highly-optimizated functions that offer the support for for developing high performance digital media application. This article describes a brief way to adopt IPP function instead of source code via Parallel Studio Project and gain over<strong> 40x</strong> performance speed up outright.  </p>
<p>
<table cellpadding="5" cellspacing="0" rules="none" border="1">
<tbody>
<tr>
<th align="left" valign="middle" >Optimization Notice</th>
</tr>
<tr bgcolor="#ccecff">
<td>
<p>Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.</p>
<p align="right">Notice revision #20110804</p>
</td>
</tr>
</tbody>
</table>
</p> ]]></description>
      <link>http://software.intel.com/en-us/articles/accelerate-your-application-via-ipp-image-processing-in-parallel-studio-c-code-vs-ipp-resize/</link>
      <pubDate>Sun, 29 Aug 2010 09:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/accelerate-your-application-via-ipp-image-processing-in-parallel-studio-c-code-vs-ipp-resize/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/accelerate-your-application-via-ipp-image-processing-in-parallel-studio-c-code-vs-ipp-resize/</guid>
      <category>Intel® Integrated Performance Primitives Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
    </item>
    <item>
      <title>Upgrade Code Examples in IPP Book for Intel® Compiler and Intel® Parallel Studio</title>
      <description><![CDATA[ <p><a href="http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-intel-ipp-source-code-examples/"><b>Source Code Examples from Intel IPP book</b></a>* offer some code examples in Intel IPP book to demonstrate some common usages with Intel IPP function. The sample codes were based on IPP 4.1 and Microsoft* Visual C++ 6.0.  Since that time, there is a lot of change happened, such as</p>
<ul>
<li>We change IPP library name and add cpu-specific optimized library for later architechure. </li>
<li>We deprecated some API as show in  <a href="http://software.intel.com/en-us/articles/deprecated-ipp-api-in-version-60/"><b>Deprecated API list since Intel IPP v6.0</b></a>. </li>
<li>Intel Parallel Studio were lauched as Intel first software development product to easier, faster develop parallelism application for developers using Microsoft* Visual C++*. It combines Intel compilers, IPP libraries.  See <a href="http://software.intel.com/en-us/articles/which-version-of-ipp--mkl--tbb-is-installed-with-intel-compiler-professional-edition/"><b>Which version of Intel IPP, Intel MKL and Intel TBB is installed by the Intel® Compiler Professional Edition?</b></a> <a target="_blank" href="http://software.intel.com/en-us/articles/which-version-of-ipp--mkl--tbb-is-installed-with-intel-compiler-professional-edition/feed/"></a> </li>
</ul>
<p>This article upgrade the code sample for latest IPP, Compiler and Parallel Studio in Microsoft Visual Studio 2005. <br /><br />The samples are using</p>
<ul>
<li>The latest IPP version: IPP 6.1 upate 4. </li>
<li>Intel® Parallel Studio=&gt;Intel® Parallel Composer  Or Intel® C/C++ Compiler Professional Edition for windows. </li>
<li>Microsoft* Visual Studio 2005 </li>
</ul>
<p><strong>Click the link</strong> <a href="http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-intel-ipp-source-code-examples/"><b>Source Code Examples from Intel IPP book</b></a>* <strong>for the original source code example</strong></p>
<p>Click <a href="http://software.intel.com/file/27209">the below link</a> for updating source code example with latest Intel® Parallel Studio.<br />The upgrade code may focus on ippiResizeSqrPixel.cpp. See some discussion in <a href="http://software.intel.com/en-us/forums/showthread.php?t=66171">Forum thread</a> <br /><br /><a name="5"></a><strong>Image Processing</strong></p>
<ul>
<li>Allocating, Initializing, and Copying an image (Fig. 8.3): Copy.cpp </li>
<li>Rectangle of interest sample wrapper (ROI class - Fig. 8.10): ROI.h ROI.cpp ROITest.cpp </li>
<li>Mask image sample wrapper (Mask class - Fig. 8.11 and 8.12): Mask.h Mask.cpp MaskTest.cpp </li>
</ul>
<p><a name="6"></a><strong>Image Filtering and Manipulation</strong></p>
<ul>
<li>Wrapper for resizing an image (Resize class - Fig. 9.24 and 9.25): Resize.h ResizeSqrPixel.cpp ResizeTest.cpp </li>
<li>Wrapper for rotating an image (Rotate class - Fig. 9.27 and 9.28): Rotate.h Rotate.cpp RotateTest.cpp </li>
<li>Wrapper for doing an affine transform on an image (Affine class - Fig. 9.30 and 9.31): Affine.h Affine.cpp AffineTest.cpp </li>
</ul>
<p>Intel® Parallel Composer is part of the larger Intel® Parallel Studio, which is the first software development products to easier, faster develop parallelism application for developers using Microsoft* Visual C++*. It combines compilers, libraries. We upgrade these sample for latest Intel Compiler and Intel Parallel Studio version. <br /><br />Note* <a target="_blank" href="http://www.intel.com/intelpress/sum_ipp2.htm">Buy Intel® Integrated Performance Primitives book</a></p> ]]></description>
      <link>http://software.intel.com/en-us/articles/upgrade-code-examples-in-ipp-book-for-intel-compiler-and-intel-parallel-studio/</link>
      <pubDate>Wed, 17 Feb 2010 06:00:00 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/upgrade-code-examples-in-ipp-book-for-intel-compiler-and-intel-parallel-studio/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/upgrade-code-examples-in-ipp-book-for-intel-compiler-and-intel-parallel-studio/</guid>
      <category>Intel® C++ Compiler for Windows* Knowledge Base</category>
      <category>Intel® Integrated Performance Primitives Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
    </item>
    <item>
      <title>C# support in Intel IPP</title>
      <description><![CDATA[ <p>Check out the Intel® Integrated Performance Primitives (Intel® IPP)  C# support sample  ( Download it from <a href="http://www.intel.com/software/products/ipp/samples.htm">Intel IPP Sample Page</a>), it is included in part of Intel IPP samples for Windows.  The sample is located in Intel IPP sample directory <strong><em>\ipp-samples\language-interface\dotnet-cpp</em></strong><br /><br />It 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, etc.<br /><br />Additionally, there is a complete <a target="_blank" href="http://software.intel.com/en-us/articles/using-intel-math-kernel-library-and-intel-integrated-performance-primitives-in-the-microsoft-net-framework/">white paper </a>to address C# support in Intel® Performance Libraires including Intel IPP and Intel® Math Kernel Library ( Intel MKL), please visit <a target="_blank" href="http://software.intel.com/en-us/articles/using-intel-math-kernel-library-and-intel-integrated-performance-primitives-in-the-microsoft-net-framework/">here</a> for more reference.</p>
  ]]></description>
      <link>http://software.intel.com/en-us/articles/c-support-in-intel-ipp/</link>
      <pubDate>Thu, 28 Jan 2010 00:00:00 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/c-support-in-intel-ipp/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/c-support-in-intel-ipp/</guid>
      <category>Intel® C++ Compiler for Windows* Knowledge Base</category>
      <category>Intel® Integrated Performance Primitives Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
    </item>
    <item>
      <title>Intel® IPP Unified Image Codecs Training Material</title>
      <description><![CDATA[ <p >The Intel® IPP Unified Image Codecs (UIC) included with the Intel IPP Samples are a set of C++ interfaces that simplify the use of various image codecs in applications. UIC includes abstract base classes to specify particular interfaces and provides implementation of some image codecs, for example JPEG and JPEG2000, built on top of these base classes.</p>
<p >The attached PDF file is a presentation which describes more information about UIC functions.</p> ]]></description>
      <link>http://software.intel.com/en-us/articles/intel-ipp-unified-image-codecs-training-material/</link>
      <pubDate>Tue, 19 Jan 2010 11:30:00 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/intel-ipp-unified-image-codecs-training-material/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/intel-ipp-unified-image-codecs-training-material/</guid>
      <category>Intel® C++ Compiler for Windows* Knowledge Base</category>
      <category>Intel® Integrated Performance Primitives Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
    </item>
    <item>
      <title>How to Use the IPP Image Filter Function</title>
      <description><![CDATA[ <div id="art_pre_template">IPP image processing domain covers many kinds of operation that are widely used in image processing, video edition, human-computer interface and so on. Chief among these functions are filter function. The article show some tips about how to use ipp image filter function. <br /><br />1.  <strong>Choose a Filter function for your application. <br /></strong>     All IPP filter funtions are listed in ipp manual ippi.pdf =&gt; chapter 9 Filtering Function. <br /><br />2.  <strong>Call the Filter function in your code. <br /></strong>    there is some example provided in manual. For example, <br />    The Example 9-1 illustrates the use of the ippiFilterMin function<br />    The Example 9-3 illustrates median filtering.<br />    The Example 9-4 Using the Function ippiFilterColumn.<br />    <br />    Please Note: there is code error in the Example 9-4 in current manual. <br />    The code should be modified as <br />    Ipp8u src[4*5] = {<br />                              1, 2, 3, 4,<br />                              1, 2, 3, 4,<br />                              1, 2, 3, 4,<br />                              1, 2, 3, 4,<br />                              1, 2, 3, 4<br />                              };<br />    and the result are 0. <br /><br />    Use the Filter function, we may need take care of two things, <br /><strong>    First,  Image Border:</strong>  all IPP filter functions assume that each pixel being processed, including the all referred  <br />    neighborhood pixels necessary for the operation are available. So either trim the input buffer or add border to input  <br />    buffer is required. <br /><br />    There is one article talking about it, <br />    <a href="http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-processing-an-image-from-edge-to-edge/">http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-processing-an-image-from-edge-to-edge/</a><br />
<p><br />    <strong>Secondly, stepBytes:</strong> it is the distance in bytes of image row. It depends on your array memory layout and data <br />    type.  In most of case, it is equal to the image Width*sizeof(datatype)*Channel.  But sometimes, it is not, especially for <br />    bmp image, which required 4 bytes aligns, may pad zero at the end of row. So it may be <br />    (Width*sizeof(datatype)*Channel+3)/4. <br />    <br />    Here is a small C++ code for call ippiFilterColumn</p>
<p > //main.cpp<br />#include &lt;stdio.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;ipp.h&gt;</p>
<p >int main()</p>
<p >{<br />     int nRow = 200;<br />     int nCol = 655;<br />     int nCount = nRow * nCol;</p>
<p >     Ipp16s *temp = (Ipp16s *)malloc(nCount * sizeof(Ipp16s));<br />     Ipp16s *temp2 = (Ipp16s *)malloc(nCount * sizeof(Ipp16s));</p>
<p >     Ipp32s fKernel[] = {1, 2, -3};<br />     int nAnchor = 1;  // please notes, if it is 1 , then it required border at the top of image. <br />     int nKernelSize = 3;<br />     int divisor = 2;</p>
<p >     IppiSize dstRoiSize2 = {nCol, nRow - 2};</p>
<p >     // please note, the step is width*sizeof(Ipp16s)     <br />     IppStatus b = ippiFilterColumn_16s_C1R((Ipp16s*)temp + nCol, nCol*sizeof(Ipp16s), (Ipp16s*)temp2 + nCol,  <br />     nCol*sizeof(Ipp16s),  <br />     dstRoiSize2, (Ipp32s*)fKernel, nKernelSize, nAnchor,divisor );</p>
<p >     printf ("%d: %s\n", b, ippGetStatusString(b));<br />     printf ("the step is %d\n", nCol*sizeof(Ipp16s));<br />     <br />     free(temp);<br />     free(temp2); <br />     return 0;<br />    }<br /><br /><strong>3.  Compile and link ipp library</strong> <br />     please refer to <a href="http://software.intel.com/en-us/articles/how-to-build-ipp-application/"><b>How to Build an Intel IPP Application </b></a><a target="_blank" href="http://software.intel.com/en-us/articles/how-to-build-ipp-application/feed/"><img border="0" src="http://software.intel.com/media/images/small_icons/rss.png" /></a></p>
</div> ]]></description>
      <link>http://software.intel.com/en-us/articles/how-to-use-the-ipp-image-filter-function/</link>
      <pubDate>Wed, 02 Dec 2009 08:00:00 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/how-to-use-the-ipp-image-filter-function/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/how-to-use-the-ipp-image-filter-function/</guid>
      <category>Intel® Integrated Performance Primitives Knowledge Base</category>
    </item>
    <item>
      <title>Unified Image Codec sample- Image Inpainting</title>
      <description><![CDATA[ <p >This feature restores unknown image pixels (portions), part of Intel® IPP Computer Vision functionality. It operates with ROI (Regions of Interest). This feature could be used to repair damaged parts of images and to remove some objects from images. Fast direct methods of inpainting that allow for run-time correcting of video frames are supported.</p>
<p ><img src="http://software.intel.com/file/23948" alt="Inpainting.bmp" title="Inpainting.bmp" /></p>
<p >Main function used to reconstructs damaged parts of the image or to remove a selected object is <b>ippiInpaint_8u. </b>To know more about this function, refer to Intel® IPP Image and Video Processing manual - <a target="_blank" href="http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-documentation/">http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-documentation/</a></p>
<p >As shown in the above picture, two algorithms of direct inpainting are supported, 1.Telea, 2.Navier-Stokes.</p>
<p >
<table border="1" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td width="127">
<p align="center">Algorithm</p>
</td>
<td width="156">
<p align="center">Flag</p>
</td>
<td width="307">
<p align="center">Description</p>
</td>
</tr>
<tr>
<td width="127">
<p align="center"><b>Telea</b></p>
</td>
<td width="156">
<p align="center">IPP_INPAINT_TELEA</p>
</td>
<td width="307" valign="top">
<p>image restoration of the unknown pixel by the weighted sum of approximations by known pixels in the neighborhood.</p>
</td>
</tr>
<tr>
<td width="127">
<p align="center"><b>Navier-Stokes</b></p>
</td>
<td width="156">
<p align="center">IPP_INPAINT_NS</p>
</td>
<td width="307" valign="top">
<p>image restoration based on the Navier-Stokes equations.</p>
</td>
</tr>
</tbody>
</table>
</p>
<span >
<p ><br />Image Inpainting Example:-<br /><img src="http://software.intel.com/file/23949" alt="Inpainting-2.bmp" title="Inpainting-2.bmp" /></p>
</span>
<p>To download IPP sample code - <a target="_blank" href="http://software.intel.com/en-us/intel-ipp">http://software.intel.com/en-us/intel-ipp</a> and click "Free Code Samples"</p>
<p>To know more about ‘Picnic' application - <a target="_blank" href="http://software.intel.com/en-us/articles/intel-ipp-uic-sample-application-picnic/">http://software.intel.com/en-us/articles/intel-ipp-uic-sample-application-picnic/</a></p> ]]></description>
      <link>http://software.intel.com/en-us/articles/unified-image-codec-sample-image-inpainting/</link>
      <pubDate>Wed, 25 Nov 2009 10:30:00 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/unified-image-codec-sample-image-inpainting/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/unified-image-codec-sample-image-inpainting/</guid>
      <category>Intel® Integrated Performance Primitives Knowledge Base</category>
    </item>
  </channel></rss>
