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デコーダソフトウェアのアルゴリズム 解析と、ボトルネックの調査からはじめた。 MPEG-4デコーダのデコード動作の概略フローと、機能別の処理時間の占有率、ボトルネックと考えられる要因箇所を示す。 MPEG-4デコーダフローチャート図 ※1:本件では、最終画をRGB32bitフォーマットで出力する。



解析の結果として、挙がったボトルネックの要因と考えられる箇所は以下である。

箇所原因の考察及び要点
★1:idct

処理コストが非常に高い。(演算量が多い・条件分岐が多発しているなど)
中間データのリード/ライト処理が発生している。
バッファサイズが大きく、キャッシュ効率が悪い箇所へのアクセスが多い。

★2:動き補償処理部
★3:差分加算処理部
★4:マクロブロック処理

最適化項目と最適化計画

最適化項目と最適化計画を下記に示す。最適化計画のNo順に、最適化手法について検討し、Cソースコード改善を行うこととする。 最適化項目詳細については、次のページより、説明する。

オリジナルの性能値(高速化手法適用前)を以下に示す。

オリジナルの性能値
41.320fps

国立電気通信大学 大学院情報システム学研究科 笠井研究室に技術協力し、左記のskim@mobileに本ページのデコーダ を使用して頂いています。skim@mobileは、モバイルビデオの新しい視聴スタイルを提供します。