[[PageNavi(NavigationList)]]
==== IPPが備える関数群 ====
IPPには、先で挙げた信号処理、動画/画像処理、行列処理/線形演算、暗号化の4分野について、非常に多岐に渡る関数が含まれている。たとえば画像処理ならばウェーブレット変換やフーリエ変換、さまざまなフィルタ処理やリサイズ/変形、ヒストグラムなどの統計処理などを行う関数が利用可能だ。
また、動画/画像/音声コーデックで使われる処理を実装した関数も用意されている。動画についてはDV25/50/10やMPEG-2、MPEG-4、H.263、H.264、画像についてはJPEGおよびJPEG2000、音声についてはMP3およびAACといった音楽向け形式のほか、G.722.1やG.729、AMRなといった音声用のコーデックについて、圧縮/展開で用いられる各種アルゴリズムが低レベル関数として実装されている。たとえば、'''図1'''はH.264形式での動画圧縮/展開処理フローを示したものだ。図中の青色のブロックがIPPで実装されている処理である([http://www.xlsoft.com/jp/products/intel/perflib/ipp/features.html?sfwiki IPPの製品紹介ページ])。これらのアルゴリズムを組み合わせることで独自にチューンしたコーデックを作成できるほか、後述するサンプルプログラムに含まれるコーデックライブラリも利用できる。
[[Thumb(b5f718e65c7d0d91ead3ef6124c94eb3.jpg, caption=図1 H.264のエンコード/デコード)]]
そのほか、色変換関数や3Dレンダリング、文字列処理、データの暗号化や圧縮/展開といった処理を行う関数も用意されおり、さまざまな分野での活用が可能だ。含まれる関数の詳細については[http://www.xlsoft.com/jp/products/intel/perflib/ipp/features.html?sfwiki 製品紹介ページ]を参照してほしい。
なお、IPPを利用したアプリケーションの配布については有償/無償を問わずロイヤリティーフリー、つまり別途追加料金なしで行える。ただし、各種エンコード/デコード処理などに関わる特許などの使用料は含まれていないため、アプリケーションを配布する場合などは注意してほしい。
==== 充実したサンプルコード ====
IPPには充実したサンプルコードが用意されているのも特徴だ。IPPサンプルコードの詳細情報やダウンロードは[http://www.xlsoft.com/jp/products/intel/perflib/ipp/samples.html?sfwiki エクセルソフトのWebサイト]から行え、現在'''表2'''のようなものが用意されている。これらのサンプルはWindows/Linux/Mac OS Xそれぞれに向けて用意されており、これらを利用することでアプリケーション開発の手間を大幅に削減することができるだろう。また、サンプルコードの多くはC++で記述されており、ほかのアプリケーションからも利用しやすいようにモジュール化されているため、これらを高レベルライブラリとして活用することもできる。これらのコードを使用して作成した製品の配布についてもロイヤリティーフリーで行える。ただし、こちらについても各種特許などの使用料は含まれていないため、アプリケーションを配布する場合などは注意が必要だ。
たとえば動画/音声エンコード/デコード(audio-video-codecs)サンプルには、JPEGエンコーダ/デコーダやAAC/AC3/MP3エンコーダおよびデコーダ、AVI/AVS/DV50/DV100/H261/H263/H264/MPEG2/MPEG4/VC1エンコーダおよびデコーダ、各種スプリッタやマルチプレクサといった機能を備えたC++クラスが用意されており、これらを用いて比較的簡単に動画エンコード/デコード処理をアプリケーションに実装可能だ。これらのクラスを使った動画エンコーダ/デコーダ/プレーヤーもサンプルコードとして用意されている。
また、データ圧縮(data-compression)サンプルには、BZ2(bzip2)/Z(compress)/GZ(gzip)/ZIP(zip)といったメジャーなファイル圧縮形式に対応する圧縮/展開ライブラリが含まれているほか、正規表現やレイトレーシング法による3Dレンダリング、画像に対する各種フィルタ処理といった処理を行うライブラリもサンプルコードに含まれている。IPPは低レイヤー関数が多く複雑な構成をしているが、これらのサンプルコードを活用すれば、比較的手軽に各種処理をアプリケーションに実装できるだろう。
また、Windows版のサンプルコードはすべてVisual Studio用のプロジェクト設定ファイルが付属するほか、コンパイル用のバッチファイルが用意されているものもある。たとえばWindows(x86)環境で動画/音声エンコード/デコードサンプル(audio-video-codecs)をコンパイルするには、まずスタートメニューの「Intel Software Development Tools」内にある「IA-32 対応アプリケーション用 C++ ビルド環境」を実行してコマンドプロンプトを開き、下記のように実行すれば良い。
{{{ cd <サンプルコードを展開したディレクトリ>\audio-video-codecs build32.bat
}}}
これでaudio-video-codesフォルダ内の「_bin\Win32_icl110\」フォルダ内に動画エンコーダ「umc_video_enc_con.exe」およびH.264デコーダ「umc_h264_dec_con.exe」、動画プレーヤー「simple_player.exe」が作成される。なお、このaudio-video-codecsサンプルのみ、コンパイルには別途DirectX SDKが必要なので注意して欲しい。
[[PageNavi(NavigationList)]]