= Using Intel Integrated Performance Primitive (IPP) with PJMEDIA = IntelĀ® Integrated Performance Primitives (IntelĀ® IPP) is an extensive library of multi-core-ready, highly optimized software functions for multimedia data processing, and communications applications. The Intel IPP can be used with PJMEDIA library to provide the following codecs: * '''AMR NB''' (4.75 to 12.2 Kbps) * '''AMB WB''' (6.6 to 23.85 Kbps * '''G.722.1''' (16/24/32/40 Kbps) * '''G.723.1''' (5.3/6.3 Kbps) * '''G.726''' (16/24/32/40 Kbps) * '''G.728''' (16 Kbps) * '''G.729A''' (8 Kbps) with Annex B, and annex D/E support for decoding only. == Requirements == The following are required: * PJSIP version 1.0-rc1 or above * Intel IPP library for your platform * Intel IPP samples We tested with Intel IPP version 5.3. You may be able to use different Intel IPP version with PJMEDIA, however this has not been tested. As usual, your mileage may vary. Note that the use of Intel IPP may require license, both from Intel and the parties who own the royalty of the codec. == Installation == === Windows Instructions === ==== Download and install IPP and IPP samples ==== 1. Download Intel IPP and Intel IPP samples from http://www.intel.com/cd/software/products/asmo-na/eng/302910.htm 1. Run the Intel IPP installer (e.g. ''w_ipp_ia32_p_5.3.3.082.exe''). The default installation will install it to {{{C:\Program Files\Intel\IPP\5.3.3.082}}} folder, and this is the folder that will be referred to by this tutorial. 1. Unzip the Intel IPP samples (e.g. ''w_ipp-samples_p_5.3.095.zip'') to a folder. This tutorial assumes that the samples are installed in {{{C:\ipp-samples}}}. ==== Build the IPP samples ==== 1. Go to the IPP samples unzipped folder (e.g. {{{C:\ipp-samples}}}). 1. Go to {{{speech-codecs}}} folder. 1. Open the {{{readme.htm}}} file, and follow the instructions there to build the samples from the source. Once the build process done, you should have '''{{{usc.lib}}}''' file somewhere inside {{{speech-codecs\bin}}} directory (in my case, it's in {{{C:\ipp-samples\speech-codecs\bin\win32_cl9\lib}}} folder). If you have any problems with installing and/or building the IPP or IPP samples, please read the documentation or contact Intel for support. ==== Configure Visual Studio ==== 1. Add Intel IPP include and library path to Visual Studio paths. For example if 32bit Intel IPP is installed in {{{C:\Program Files\Intel\IPP\5.3.3.082\ia32}}} directory: - add {{{C:\Program Files\Intel\IPP\5.3.3.082\ia32\include}}} to the include path - add {{{C:\Program Files\Intel\IPP\5.3.3.082\ia32\stublib}}} to the library path 1. Add Intel IPP samples include and library path to Visual Studio directory options. For example, if Intel IPP samples are in {{{C:\ipp-samples}}}: - add {{{C:\ipp-samples\speech-codecs\core\usc\include}}} to the include path - add {{{C:\ipp-samples\speech-codecs\bin\win32_cl9\lib}}} to the library path == PJMEDIA Configuration == === Enable IPP Support === By default, IPP support is disabled in PJMEDIA. To enable IPP support, declare the following in your {{{config.site.h}}}: {{{ #define PJMEDIA_HAS_INTEL_IPP 1 }}} === Enable/Disable Individual IPP Codec === Once IPP support is enabled, by default all IPP codecs are enabled. To disable parcular codecs, use the following constructs: {{{ #define PJMEDIA_HAS_INTEL_IPP_CODEC_AMR 0 #define PJMEDIA_HAS_INTEL_IPP_CODEC_AMRWB 0 #define PJMEDIA_HAS_INTEL_IPP_CODEC_G729 0 #define PJMEDIA_HAS_INTEL_IPP_CODEC_G723 0 #define PJMEDIA_HAS_INTEL_IPP_CODEC_G726 0 #define PJMEDIA_HAS_INTEL_IPP_CODEC_G728 0 #define PJMEDIA_HAS_INTEL_IPP_CODEC_G722_1 0 }}}