HPC/並列プログラミングポータルでは、HPC(High Performance Computing)プログラミングや並列プログラミングに関する情報を集積・発信しています。

新着トピックス

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で実装されている処理である(IPPの製品紹介ページ)。これらのアルゴリズムを組み合わせることで独自にチューンしたコーデックを作成できるほか、後述するサンプルプログラムに含まれるコーデックライブラリも利用できる。

 そのほか、色変換関数や3Dレンダリング、文字列処理、データの暗号化や圧縮/展開といった処理を行う関数も用意されおり、さまざまな分野での活用が可能だ。含まれる関数の詳細については製品紹介ページを参照してほしい。

 なお、IPPを利用したアプリケーションの配布については有償/無償を問わずロイヤリティーフリー、つまり別途追加料金なしで行える。ただし、各種エンコード/デコード処理などに関わる特許などの使用料は含まれていないため、アプリケーションを配布する場合などは注意してほしい。

充実したサンプルコード

 IPPには充実したサンプルコードが用意されているのも特徴だ。IPPサンプルコードの詳細情報やダウンロードはエクセルソフトのWebサイトから行え、現在表2のようなものが用意されている。これらのサンプルはWindows/Linux/Mac OS Xそれぞれに向けて用意されており、これらを利用することでアプリケーション開発の手間を大幅に削減することができるだろう。また、サンプルコードの多くはC++で記述されており、ほかのアプリケーションからも利用しやすいようにモジュール化されているため、これらを高レベルライブラリとして活用することもできる。これらのコードを使用して作成した製品の配布についてもロイヤリティーフリーで行える。ただし、こちらについても各種特許などの使用料は含まれていないため、アプリケーションを配布する場合などは注意が必要だ。

表2 用意されているIPPのサンプルコード(Windows環境向け)
分野用意されているサンプル例(抜粋)
動画/音声エンコード/デコードDV/MPEG-2/MPEG-4/H.263/H.264に対応した動画再生ソフトや各種エンコーダ/デコーダ
画像エンコード/デコードJPEGビューアやJPEG2000のエンコーダ/デコーダ
コンピュータビジョン顔認識
データ圧縮zlib/bzip2/GZIPなどの圧縮/展開ライブラリ
暗号化OpenSSL暗号化関数
信号処理一般的な信号処理サンプル
文字列処理正規表現マッチ
音声処理さまざまな音声エンコード/デコード
音声認識話し言葉処理

 たとえば動画/音声エンコード/デコード(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が必要なので注意して欲しい。