ソフトウェア高速化専用ページ
原点のソフトウェアを開発し社会に貢献するゼロソフト |
MPEG-4デコーダの高速化
ここでは、MPEG-4デコーダの高速化について説明します。
目標と制限
最適化対象をMPEG-4Video(ISO/IEC 14496-2)とし、ヴィジュアル・プロファイルはシンプルプロファイル・レベル 2とする。
ソフトウェアの利用範囲としては、ARMv6搭載のモバイル端末機の限定とする。
モバイル向けの低消費電力系のハードウェア構成に対して、デスクトップパーソナルコンピュータ並みの体感速度を実現させることを目標とする。
最適(高速)化方法への条件としては、対象ハードウェアに依存し過ぎないことを前提に低水準言語(アセンブリ言語など)を使用しないこととし、
高水準言語のCソースコードのコード改善のみで、どこまで高速化できるかを課題とする。
ハードウェア条件と開発環境条件
ハードウェア条件と開発環境条件を下記に示す。
| ハードウェア条件 | |
|---|---|
| ターゲットCPU | ARM11Family |
| Clock周波数 | 412MHz(想定) |
| 開発環境条件 | |
|---|---|
| C/C++ コンパイラ | gcc 4.0 |
| GCC 最適化レベル | -Os |
| アーキテクチャ | ARMv6 |
測定用ストリーム条件
測定用ストリームには以下を使用することとする。
| 画像サイズ | CIF(353 x 288 pixel) |
|---|---|
| プロファイル | Simple@L2 |
| 測定フレーム数 | 200フレーム |
デコードのアルゴリズム
最適化の手法に入る前に、まず、MPEG-4デコードのアルゴリズムについて示す。
MPEG-4デコードのアルゴリズムは、圧縮データを入力とし、可変長復号、逆量子化、逆離散コサイン変換、動き補償による予測画像作成、差分データと予測画像の加算による復号画像の作成という処理となっている。以下にMPEG-4デコード(シンプルプロファイル)の処理の流れを示す。
デコーダの処理フローとボトルネック
最適化を行うには、適切な最適化手法の取捨選択が重要となる。本件では、まずMPEG-4デコーダソフトウェアのアルゴリズム
解析と、ボトルネックの調査からはじめた。
MPEG-4デコーダのデコード動作の概略フローと、機能別の処理時間の占有率、ボトルネックと考えられる要因箇所を示す。
※1:本件では、最終画をRGB32bitフォーマットで出力する。
解析の結果として、挙がったボトルネックの要因と考えられる箇所は以下である。
| 箇所 | 原因の考察及び要点 |
|---|---|
| ★1:idct |
処理コストが非常に高い。(演算量が多い・条件分岐が多発しているなど) |
| ★2:動き補償処理部 | |
| ★3:差分加算処理部 | |
| ★4:マクロブロック処理 |
最適化項目と最適化計画
最適化項目と最適化計画を下記に示す。最適化計画のNo順に、最適化手法について検討し、Cソースコード改善を行うこととする。
最適化項目詳細については、次のページより、説明する。
| No. | 最適化の着眼点 | 対象箇所 |
|---|---|---|
| 1 | インター時の復号処理の統合 | ★2 |
| 2 | 中間バッファの削除 | その他 |
| 3 | イントラ処理部の構造変更 | ★4 |
| 4 | データ初期化処理部の変更 | その他 |
| 5 | 飽和演算処理時の条件分岐処理の変更 | ★3 |
オリジナルの性能値(高速化手法適用前)を以下に示す。
| オリジナルの性能値 |
|---|
| 41.320fps |
|
国立電気通信大学 大学院情報システム学研究科 笠井研究室に技術協力し、左記のskim@mobileに本ページのデコーダ
を使用して頂いています。skim@mobileは、モバイルビデオの新しい視聴スタイルを提供します。 |

