(57)【要約】【課題】複数のプロセッサを並列動作させて復号処理を行う画像復号装置において、プロセッサのアイドル時間を低減し、より高速に圧縮画像を復号可能な画像復号装置を提供する。【解決手段】画像復号装置は、入力信号を所定データ単位毎に復号する複数の復号手段と、入力信号の復号処理を、処理順序の依存関係を有する複数の処理ステップに分割し、復号手段で処理するデータ単位を処理ステップ毎に割り当てる、タスク制御手段とを備える。タスク制御手段は、復号手段の処理状況を検出し、その処理状況と、処理ステップ間の依存関係とに応じて、処理されるデータ単位及び処理ステップを復号手段に割り当て、ひとつの復号手段によって復号されたデータ単位の依存関係と表示順序とを考慮して、処理すべきデータ単位が復号されたデータ単位に依存した処理ステップにある場合には、処理中の復号手段を中断させて、処理すべきデータ単位を復号手段に割り当てる。【選択図】図１
2010252069.tif 000002
【特許請求の範囲】
【請求項１】
圧縮された画像ストリームを入力信号とし、前記入力信号を復号する画像復号装置であって、
前記入力信号を所定のデータ単位毎に復号する、複数の復号手段と、
前記入力信号の復号処理を、処理順序の依存関係を有する複数の処理ステップに分割し、前記復号手段で処理すべきデータ単位を処理ステップ毎に割り当てる、タスク制御手段とを備え、
前記タスク制御手段は、前記復号手段の処理状況を検出し、その処理状況と、処理ステップ間の依存関係とに応じて、処理されるデータ単位及び処理ステップを前記復号手段に割り当て、
前記タスク制御手段は、ひとつの前記復号手段によって復号されたデータ単位の依存関係と表示順序とを考慮して、処理すべきデータ単位が前記復号されたデータ単位に依存した処理ステップにある場合には、処理中の前記復号手段を中断させて、前記処理すべきデータ単位を前記復号手段に割り当てる、
ことを特徴とする画像復号装置。
【請求項２】
前記タスク制御手段は、さらに前記画像ストリームに含まれるフレーム間の依存関係を考慮して、処理されるデータ単位及び処理ステップを前記復号手段に割り当てる、
ことを特徴とする請求項１記載の画像復号装置。
【請求項３】
前記フレーム間の依存関係とは、他のフレームを参照するか否か、また、他のフレームから参照され得るか否かの関係である、請求項１記載の画像復号装置。
【請求項４】
フレーム間の依存関係及び処理ステップ間の依存関係を考慮し、優先的に処理すべきデータ単位の順序を規定した優先度情報をさらに備え、
前記タスク制御手段は前記優先度情報を参照して、処理されるデータ単位及び処理ステップを前記復号手段に割り当てる、ことを特徴とする請求項２記載の画像復号装置。
【請求項５】
前記複数の処理ステップは、入力されたバイトストリームから差分画像を作成するのに必要な係数データと、予測画像を作成するのに必要な予測モードや動きベクトルなどの予測データを復号するエントロピー復号ステップと、
係数データに対して逆量子化および逆直交変換を施すことによって差分画像を作成する差分画像作成ステップと、
予測データと参照に必要な復号画像とから予測画像を作成し、予測画像と差分画像とを合わせて復号画像を作成する復号画像作成ステップとを含む、請求項１記載の画像復号装置。
【請求項６】
前記所定のデータ単位はフレームまたはスライスであることを特徴とする請求項１記載の画像復号装置。
【請求項７】
圧縮された画像ストリームを入力信号として入力するステップと、
前記入力した入力信号の復号処理を、処理順序の依存関係を有する複数の処理ステップに分割するステップと、
複数の復号手段において、前記入力信号を所定のデータ単位毎に前記処理ステップ単位で復号処理を実行させるステップと、
前記復号手段の処理状況を検出し、検出した処理状況と処理ステップ間の依存関係とに応じて、前記復号手段において処理される、データ単位及び処理ステップを決定するステップと
ひとつの前記復号手段によって復号されたデータ単位の依存関係と表示順序とを考慮して、処理すべきデータ単位が前記復号されたデータ単位に依存した処理ステップにある場合には、処理中の前記復号手段を中断させて、前記処理すべきデータ単位を前記復号手段に割り当てるステップと、
を含む、ことを特徴とする画像復号方法。
【請求項８】
圧縮された画像ストリームを入力信号とし、前記入力信号を復号する画像復号装置の制御プログラムであって、
圧縮された画像ストリームを入力信号として入力する手順と、
前記入力した入力信号の復号処理を、処理順序の依存関係を有する複数の処理ステップに分割する手順と、
複数の復号手段において、前記入力信号を所定のデータ単位毎に前記処理ステップ単位で復号処理を実行させる手順と、
前記復号手段の処理状況を検出し、検出した処理状況と処理ステップ間の依存関係とに応じて、前記復号手段において処理される、データ単位及び処理ステップを決定する手順とを画像復号装置の制御手段に実行させる手順と、
ひとつの前記復号手段によって復号されたデータ単位の依存関係と表示順序とを考慮して、処理すべきデータ単位が前記復号されたデータ単位に依存した処理ステップにある場合には、処理中の前記復号手段を中断させて、前記処理すべきデータ単位を前記復号手段に割り当てる手順とを画像復号装置の制御手段に実行させる
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像圧縮ストリームを高速に復号する画像復号装置及び方法に関する。
【背景技術】
【０００２】
従来、ＭＰＥＧ２やＨ．２６４／ＡＶＣなどを用いて圧縮された画像ストリームを高速に復号化する手法として、複数のプロセッサを用いて復号する際に、復号処理をスライス毎に分割して各プロセッサに割り当て、並列に処理する手法が一般的に知られている。しかし、この手法は１フレームが複数のスライスに分割されていなければ適用できず、１フレームが複数のスライスに分割されていない場合は、フレーム毎に復号処理を分割し、各プロセッサで並列に処理する手法が用いられる。
【０００３】
一方、圧縮されたフレーム間には依存関係が存在する場合がある。例えば、ＭＰＥＧ２規格において、Ｉフレームは他のフレームに依存せず単独で復号可能であるが、ＰフレームはＩフレームを参照して復号され、ＢフレームはＩフレームやＰフレームを参照して復号される。すなわち、圧縮されたフレームは、復号処理時での他のフレームとの依存関係にしたがいグループ分けすることができる。
【０００４】
例えば、グループＡ、グループＢ、グループＣの３グループに分類できる。グループＡには、例えば、Ｉフレームのような、他のフレームを参照しないフレームが属する。グループＢには、例えば、Ｐフレームのような、他のフレームを参照し、また、他のフレームから参照され得るフレームが属する。グループＣには、例えば、Ｂフレームのような、他のフレームを参照するが、他のフレームからは参照されることがないフレームが属する。
【０００５】
つまり、グループＡに属するフレームは、どのグループのフレームの復号結果にも依存しないが、グループＢに属するフレームは、グループＡに属するフレームの復号結果に依存し、参照するフレームが復号されていない限り復号することが出来ない。また、グループＣに属するフレームも、グループＡやグループＢに属するフレームの復号結果に依存し、参照するフレームが復号されていない限り復号することが出来ない。
【０００６】
よって、グループＣに属するフレーム同士では依存関係が無いため、それぞれのフレームの復号処理は並列して行える。しかし、グループＡに属するフレームの復号処理と、そのフレームに依存するフレームの復号処理とは並列して行うことができない。このため、１つのプロセッサが、そのような並列化できない処理を行っている間は、他のプロセッサは、処理待ちの状態であるアイドル状態になってしまう。
【０００７】
依存関係のあるフレームを復号するために、各フレームの依存関係に応じて各プロセッサが行う並列処理の分担を決定する画像復号方法（特許文献１参照）が提案されている。また、双方向予測符号化されたフレームを復号する際には、１フレームを複数のスライスに分けて並列処理し、それ以外の方式で符号化されたフレームはフレーム毎に並列処理を行うという画像復号方法（特許文献２参照）なども提案されている。このような方法で、プロセッサのアイドル時間を低減している。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０００−２９５６１６号公報
【特許文献２】特開２００５−１７５９９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上記のような従来の画像復号方法を用いた場合でも、プロセッサが長い時間アイドル状態になる場合がある。以下、図８を参照しこのような例を説明する。
【００１０】
図８の例では４つのプロセッサを並列に用いて復号処理を行う場合を考える。復号するフレームはフレーム０からフレーム５までの計６フレームとし、１フレームは１スライスで構成されている。フレーム０は、他のフレームの復号結果に依存しないフレームが属するグループＡに属する。フレーム３は、他のフレームを参照し、また、他のフレームから参照され得るフレームが属するグループＢに属し、フレーム０を参照する。フレーム１、２、４、５は、他のフレームを参照するが、他のフレームからは参照されることがないフレームが属するグループＣに属し、フレーム０とフレーム３を参照する。各フレームの復号処理に掛かる時間は等しいとする。
【００１１】
フレーム１からフレーム５はフレーム０を参照するため、フレーム０の復号処理が完了するまではそれらのフレームの復号処理を開始することが出来ない。その結果、フレーム０を復号している間は、４つのプロセッサの内の３つがアイドル状態になる。フレーム０の復号処理が終了後、フレーム３の復号が可能となる。ここで、フレーム１、２、４、５は、フレーム３を参照するため、フレーム３の復号処理が完了するまでは、それらのフレームに対する復号処理を開始することが出来ない。そのため、フレーム３を復号している間、４つのプロセッサの内の３つがアイドル状態になる。フレーム３の復号処理が完了した後は、フレーム１、２、４、５の並列処理が可能となる。このように、処理全体に要する時間の５０％はアイドル時間となる。つまり、プロセッサの能力を５０％しか活用できていないという問題がある。
【００１２】
本発明は、上記問題を解決すべくなされたものであり、その目的とするところは、複数のプロセッサを並列動作させる復号処理において、プロセッサがアイドル状態になっている時間を低減し、より低遅延で高速に圧縮画像を復号できる画像復号装置を提供することにある。
【課題を解決するための手段】
【００１３】
本発明の第１の態様において、圧縮された画像ストリームを入力信号とし、前記入力信号を復号する画像復号装置が提供される。
【００１４】
画像復号装置は、入力信号を所定のデータ単位で復号する、複数の復号手段と、入力信号の復号処理を、処理順序の依存関係を有する複数の処理ステップに分割し、復号手段で処理すべきデータ単位を処理ステップ毎に割り当てる、タスク制御手段とを備える。タスク制御手段は、復号手段の処理状況を検出し、その処理状況と、処理ステップ間の依存関係とに応じて、処理されるデータ単位及び処理ステップを復号手段に割り当て、また、ひとつの復号手段によって復号されたデータ単位の依存関係と表示順序とを考慮して、処理すべきデータ単位が復号されたデータ単位に依存した処理ステップにある場合には、処理中の復号手段を中断させて、処理すべきデータ単位を復号手段に割り当てる。
【００１５】
本発明の第２の態様において、圧縮された画像ストリームを入力信号として入力するステップと、入力した入力信号の復号処理を、処理順序の依存関係を有する複数の処理ステップに分割するステップと、複数の復号手段において、入力信号を所定のデータ単位毎に前記処理ステップ単位で復号処理を実行させるステップと、復号手段の処理状況を検出し、検出した処理状況と処理ステップ間の依存関係とに応じて、復号手段において処理される、データ単位及び処理ステップを決定するステップと、ひとつの復号手段によって復号されたデータ単位の依存関係と表示順序とを考慮して、処理すべきデータ単位が復号されたデータ単位に依存した処理ステップにある場合には、処理中の復号手段を中断させて、処理すべきデータ単位を復号手段に割り当てるステップと、を含む、画像復号方法が提供される。
【００１６】
本発明の第３の態様において、圧縮された画像ストリームを入力信号とし、入力信号を復号する画像復号装置の制御プログラムが提供される。制御プログラムは、圧縮された画像ストリームを入力信号として入力する手順と、入力した入力信号の復号処理を、処理順序の依存関係を有する複数の処理ステップに分割する手順と、複数の復号手段において、入力信号を所定のデータ単位毎に処理ステップ単位で復号処理を実行させる手順と、復号手段の処理状況を検出し、検出した処理状況と処理ステップ間の依存関係とに応じて、復号手段において処理される、データ単位及び処理ステップを決定する手順と、ひとつの復号手段によって復号されたデータ単位の依存関係と表示順序とを考慮して、処理すべきデータ単位が復号されたデータ単位に依存した処理ステップにある場合には、処理中の復号手段を中断させて、処理すべきデータ単位を復号手段に割り当てる手順と、を画像復号装置の制御手段に実行させる。
【発明の効果】
【００１７】
本発明によれば、複数のプロセッサを使って画像復号処理を並列して行う際のアイドル時間を低減でき、圧縮画像の復号処理の高速化が図れる。
【図面の簡単な説明】
【００１８】
【図１】実施の形態１における画像復号装置のブロック図
【図２】（ａ）タスクリストの構成を示す図、（ｂ）スライスタイプ毎のタスクの優先度を管理する優先度テーブルを示す図
【図３】タスク制御部の状態遷移図
【図４】画像復号装置に入力されるバイトストリームの一例を示した図
【図５】各処理に必要な時間の一例を示した図
【図６Ａ】タスクリストの変化を説明するための図
【図６Ｂ】タスクリストの変化を説明するための図
【図６Ｃ】タスクリストの変化を説明するための図
【図６Ｄ】タスクリストの変化を説明するための図
【図６Ｅ】タスクリストの変化を説明するための図
【図６Ｆ】タスクリストの変化を説明するための図
【図６Ｇ】タスクリストの変化を説明するための図
【図６Ｈ】タスクリストの変化を説明するための図
【図６Ｉ】タスクリストの変化を説明するための図
【図７】各復号部が処理する復号パラメータセットの処理順を示す図
【図８】従来の４プロセッサを使った並列処理例を示す図
【図９】タスク割当状態でのフローチャート
【図１０】タスク追加状態でのフローチャート
【発明を実施するための形態】
【００１９】
以下、添付の図面を参照し、実施形態を説明する。
【００２０】
本実施の形態における画像復号装置は、例えばＨ．２６４のような符号化方式で圧縮された映像のバイトストリームを入力し、デジタル画像を復号して出力する。
【００２１】
１  画像復号装置の構成
図１に本実施の形態における画像復号装置の構成を示す。画像復号装置１０１は、入力端子１０２を介してバイトストリームを入力し、復号して得られたデジタル画像を出力端子１０３を介して出力する。
【００２２】
画像復号装置１０１において、ストリームバッファ１０４は、入力されたバイトストリームをバッファリングする。第１及び第２の復号部（以下単に「復号部」と称す。）１０８、１０９は、スライス単位で画像復号処理を行う。復号部１０８と復号部１０９とにより並列処理が可能となっている。タスク制御部１０５は復号部１０８、１０９で実行される復号処理を、復号処理のステップ（後述）とスライスの種類に基づき制御する。中間バッファ１０６は、復号処理中において生成される係数データと予測データと差分画像とを保持する。フレームバッファ１０７は、最終的に得られる復号画像を保持する。なお、タスク制御部１０５と復号部１０８、１０９の詳細については後述する。
【００２３】
１．１  画像復号処理のステップとスライスタイプ
本実施形態における画像復号装置では、１フレームに対する復号処理を、算術復号処理、差分画像作成処理及び復号画像作成処理の３つのステップ（段階）に分割する。
【００２４】
算術復号処理は、入力されたバイトストリームから差分画像を作成するのに必要な係数データと、予測画像を作成するのに必要な予測モードや動きベクトルなどの予測データを復号する処理とする。この処理は、フレーム間やステップ間での依存関係が無い。
【００２５】
差分画像作成処理は、係数データに対して逆量子化や逆離散コサイン変換などを施すことによって差分画像を作成する処理である。この処理にはフレーム間の依存関係は無いが、算術復号処理によって必要な係数データが復号されている必要があるため、ステップ間の依存関係がある。
【００２６】
復号画像作成処理は、予測データと参照に必要な復号画像から予測画像を作成し、予測画像と差分画像を合わせて復号画像を作成する。この処理は、算術復号処理によって必要な予測データが復号されていること、差分画像作成処理によって必要な差分画像が作成されていること、参照が必要な場合には必要となる復号画像が作成されていることが必要となる。従って、フレーム間にもステップ間にも依存関係がある。
【００２７】
さらに、スライスをフレーム間の依存関係に基づき３種類に分類する。前述したように、他のフレームを参照しないフレームが属するグループＡに属しているフレームを構成するスライスの種類を「スライスＡ」と称す。他のフレームを参照し、また、他のフレームから参照され得るフレームが属するグループＢに属しているフレームを構成するスライスの種類を「スライスＢ」と称す。他のフレームを参照するが、他のフレームからは参照されることがないグループＣに属しているフレームを構成するスライスの種類を「スライスＣ」と称す。
【００２８】
１．２  タスク制御部
タスク制御部１０５には復号部１０８、１０９が接続されている。復号部１０８、１０９はそれぞれ待機状態と処理状態の２つの状態をとり得る。また、タスク制御部１０５は、復号部１０８、１０９で実行される復号処理のタスクを管理するためのタスクリスト１５を内部に保持する。タスクリスト１５は、復号パラメータセットを１つの要素として管理する。復号パラメータセットはスライスの復号処理に必要なパラメータの組であって、具体的には以下の情報を含む。
【００２９】
・スライスタイプ（復号対象のスライスの種類を示す情報）
・タスク（復号部で実行する復号処理のステップの種類を示す情報）
・スライスデータポインタ
（ストリームバッファ１０４上のスライスデータの格納位置を示す情報）
・係数データポインタ
（中間バッファ１０６上の係数データの格納位置を示す情報）
・予測データポインタ
（中間バッファ１０６上の予測データの格納位置を示す情報）
・差分画像ポインタ
（中間バッファ１０６上の差分画像の格納位置を示す情報）
図２（ａ）にタスクリスト１５の例を示す。タスクリスト１５は、復号パラメータセットに加えて、その復号パラメータセットを特定する要素番号と、その復号パラメータセットの処理に対する優先度とを関連づけて管理する。
【００３０】
また、タスク制御部１０５は優先度テーブル１６を有する。図２（ｂ）に優先度テーブル１６の例を示す。優先度テーブル１６は、復号処理における各ステップの優先度をスライスタイプに応じて規定するものである。前述のように、ステップ間の依存関係により、復号画像作成処理、算術復号処理、差分画像作成処理の順で優先的に処理される必要がある。また、フレーム間の依存関係から、スライスタイプＡ、スライスタイプＢ、スライスタイプＣの順に優先的に処理される必要がある。優先度テーブル１６は、このようなステップ間及びフレーム間の依存関係を考慮して、各ステップの優先度をスライスタイプに応じて規定している。優先度の大きいタスクほど、優先的に処理される。
【００３１】
さらに、タスク制御部１０５は処理が中断しているタスクを管理するため、復号パラメータセットを１つの要素として管理する中断タスクリスト１７を内部に有する。またタスク制御部１０５は、復号部１０８、１０９が処理しているタスクの優先度を常に記憶している。
【００３２】
タスク制御部１０５は複数の状態をとり得る。図３にタスク制御部１０５の状態遷移を示す。同図に示すように、タスク制御部１０５は、初期状態、ストリーム解析状態、タスク割当状態、タスク完了待ち状態、及びタスク追加状態の５状態を有する。以下、タスク制御部１０５の各状態について説明する。
初期状態：復号部１０８，１０９はいずれも待機状態
ストリーム解析状態：復号部１０８，１０９はいずれも待機状態(初期状態からしか遷移しないため)
タスク割当状態：少なくともひとつが待機状態のときに他から遷移し、２になって初期状態へ遷移するか、０になって完了待ち状態へ遷移する
タスク完了待ち状態：復号部１０８，１０９はいずれも処理状態
タスク追加状態：
画像復号装置１０１が外部からの指示等によってバイトストリームの復号処理を開始すると、タスク制御部１０５は初期状態から動作を開始する。初期状態では、タスクリスト１５と中断タスクリスト１７の要素数は０に設定されている。ストリームバッファ１０４から必要なバイトストリームが読み出せるようになると、初期状態からストリーム解析状態に遷移する。
【００３３】
ストリーム解析状態では、タスク制御部１０５はストリームバッファ１０４から読み出したバイトストリームを先頭から探索し、バイトストリームに含まれる全てのスライスを検出する。スライスを検出する毎に、そのスライスに対応する新しい復号パラメータセットをタスクリスト１５に追加する。このとき、要素番号が新たに生成されて復号パラメータセットに付与される。要素番号は、その時点でタスクリスト１５に存在しない番号であればよい。新しい復号パラメータセットにおいては、“スライスタイプ”は検出したスライスの種類（スライスタイプＡ、スライスタイプＢおよびスライスタイプＣのうちのいずれか）に、“タスク”は“算術復号処理”に、“スライスデータポインタ”は検出したスライスのデータの中間バッファ１０６における開始位置に、それぞれ設定される。また、この時点では“係数データポインタ”、“予測データポインタ”、“差分画像ポインタ”は未設定である。読み出したバイトストリームを全て探索し、全ての復号パラメータセットをタスクリスト１５に追加すると、タスク割当状態に遷移する。
【００３４】
タスク割当状態におけるフローチャートを図９に示す。タスク制御部１０５は、タスクリスト１５及び中断タスクリスト１７の要素数が０であり（Ｓ９０１において“=０”）かつ復号部１０８、１０９が両方とも待機状態（Ｓ９０２において“Ｙｅｓ”）である場合は、初期状態に遷移する。タスクリスト１５及び中断タスクリスト１７のいずれかの要素数が０以外の場合（Ｓ９０１において“≠０”）、図２に示す優先度テーブル１６を参照して、タスクリスト１５及び中断タスクリスト１７に含まれる各復号パラメータセットの優先度を決定する（Ｓ９０３）。そして、復号部１０８、１０９が双方とも待機状態である場合（Ｓ９０４において“信号部１０８および信号部１０９”）、タスク制御部１０５は、タスクリスト１５及び中断タスクリスト１７内で優先度の最も高い復号パラメータセットを復号部１０８に出力し（Ｓ９０５）、優先度が２番目に高い復号パラメータセットを復号部１０９に出力する（Ｓ９０６）。その後、出力した復号パラメータセットをタスクリスト１５から削除し（Ｓ９０７）、タスク完了待ち状態に遷移する。また、復号部１０８のみが待機状態である場合（Ｓ９０４において“信号部１０８のみ”）、タスク制御部１０５は、優先度の最も高い復号パラメータセットを、待機状態にある復号部１０８に出力する（Ｓ９０８）。その後、出力した復号パラメータセットをタスクリスト１５またはタスクリスト１７から削除し（Ｓ９０７）、タスク完了待ち状態に遷移する。復号部１０９のみが待機状態である場合（Ｓ９０４において“信号部１０９のみ”）も同様に、タスク制御部１０５は、優先度の最も高い復号パラメータセットを、待機状態にある復号部１０９に出力する（Ｓ９０９）。その後、出力した復号パラメータセットをタスクリスト１５またはタスクリスト１７から削除し（Ｓ９０７）、タスク完了待ち状態に遷移する。
【００３５】
但し、優先度が同じ復号パラメータセットがタスクリスト１５と中断タスクリスト１７双方に複数存在する場合、中断タスクリスト１７内に含まれる復号パラメータセットが優先される。また、各タスクリスト内で優先度が同じ復号パラメータセットが複数存在する場合は、各タスクリストに追加された順番がより早いものを優先する。また、“スライスタイプ”がスライスＢ或いはスライスＣの場合で、かつ“タスク”が“復号画像作成処理”である復号パラメータセットは、参照する画像の復号画像作成処理が完了していない場合には、復号部１０８、１０９に出力されない。これらの場合には、次に優先度が高い復号パラメータセットが復号部１０８、１０９に出力される。
【００３６】
タスク完了待ち状態では、復号部１０８または復号部１０９から復号パラメータセットが入力されるまで待機する。復号部１０８または復号部１０９から復号パラメータセットが入力されると、タスク追加状態に遷移する。なお、複数の復号部から同時に復号パラメータセットが入力された場合には、いずれかひとつの復号パラメータセットについて処理を行うべくタスク追加状態に遷移し、他の復号パラメータセットは待ち行列に入る。また、タスク完了待ち状態以外の状態や、すでに他の復号パラメータセットが待ち行列に入っている状態において入力されたタスクリストの復号パラメータセットも、待ち行列に入る。待ち行列に入った復号パラメータセットは、次にタスク制御部１０５がタスク完了待ち状態に遷移した際に順番に処理される。
【００３７】
タスク追加状態におけるフローチャートを図１０に示す。タスク制御部１０５は、入力された復号パラメータセットに含まれる“タスク”の種類に応じて処理が変わる。入力された復号パラメータセットに含まれる“タスク”が“算術復号処理”の場合（Ｓ１００１において“算術復号処理”）には、入力された復号パラメータセットにおいて、“タスク”を“差分画像作成処理”に置き換えた復号パラメータセットを作成し（Ｓ１００２）、タスクリスト１５にこの新しい復号パラメータセットを要素として追加して（Ｓ１００３）タスク割当状態に遷移する。また、入力された復号パラメータセットに含まれる“タスク”が差分画像作成処理の場合（Ｓ１００１において“差分画像作成処理”）には、入力された復号パラメータセットにおいて“タスク”を“復号画像作成処理”に置き換えた復号パラメータセットを作成し（Ｓ１００４）、タスクリスト１５にこの新しい復号パラメータセットを要素として追加して（Ｓ１００３）タスク割当状態に遷移する。但し、新しい復号パラメータセットに含まれる“タスク”以外の情報は、入力された復号パラメータセットのものと同じにする。
【００３８】
タスク制御部１０５に入力された復号パラメータセットに含まれる“タスク”が“復号画像作成処理”の場合（Ｓ１００１において“復号画像作成処理”）には、“タスク”が“復号画像処理”であり、かつ入力された復号パラメータセットが処理対象とした復号画像を参照する復号パラメータセットをタスクリスト１５から探す。さらに、対象となる復号パラメータセットの内、対象外の復号パラメータセットで優先度が最も高い復号パラメータセットの優先度よりも優先度が高い復号パラメータセットを、該当する復号パラメータセットとする。この時、２つの復号部のうち、一方は待機状態にあり、他方は復号処理中である。従って、該当する復号パラメータセットが１つのみの場合、その復号パラメータセットは待機状態にある復号部に出力されることになる。一方、該当する復号パラメータセットが２つ以上見つかった場合（Ｓ１００５において“≧２”）には、該当する復号パラメータセットの内、最も優先度が高い復号パラメータセットが待機状態にある復号部に出力されることになる。また２番目に優先度が高い復号パラメータセットを、待機状態にない復号部の処理を一時中断して優先して処理するべきかどうかを判断しなければならない。そこで、待機状態にない復号部が処理しているタスクの優先度と、見つかった復号パラメータセットのうち優先度が２番目に高い復号パラメータセットの優先度とを比較し、復号部が処理しているタスクの優先度のほうが低ければ（Ｓ１００６において“＞”）、復号部に処理中断信号を出力し、復号部から復号パラメータセットが入力されるまで待機する（Ｓ１００７）。復号部から復号パラメータセットが入力された後には、入力された復号パラメータセットを中断タスクリスト１７に追加し（Ｓ１００８）、タスク割当状態に遷移する。但し、新しい復号パラメータセットに含まれる”タスク”以外の情報は、入力された復号パラメータセットのものと同じにする。復号部が処理しているタスクの優先度のほうが高いか等しい場合（Ｓ１００６において“≧”）、或いは該当する復号パラメータセットが２つ未満の場合（Ｓ１００５において“＜２”）には、何もせずにタスク割当状態に遷移する。
【００３９】
１．３  復号部
復号部１０８、１０９は、待機状態と処理状態の２つの状態を有する。初期状態は待機状態である。待機状態は、復号パラメータセットが入力されるのを待っている状態である。復号パラメータセットが入力されると、復号部１０８、１０９は待機状態から処理状態に遷移する。処理状態では、入力された復号パラメータセットに含まれる“タスク”によって、復号部１０、１０９の動作が変わる。以下、“タスク”により異なる、処理状態での動作を説明する。
【００４０】
“タスク”が“算術復号処理”の場合、復号部１０８、１０９は、入力された復号パラメータセットに含まれる“スライスデータポインタ”が示すストリームバッファ１０４上のアドレスからバイトストリームを読み出して、係数データと予測データを復号し、中間バッファ１０６に書き込む。続いて、復号部１０８、１０９は、新しい復号パラメータセットを出力し、待機状態に遷移する。新しい復号パラメータセットにおいて、“係数データポインタ”と“予測データポインタ”は、それぞれ中間バッファ１０６に書き込んだ係数データと予測データへのポインタに設定し、“係数データポインタ”と“予測データポインタ”以外の情報は、入力された復号パラメータセット内のものと同じに設定する。
【００４１】
“タスク”が“差分画像作成処理”の場合、復号部１０８、１０９は、入力された復号パラメータセットに含まれる“係数データポインタ”が示す中間バッファ１０６上のアドレスから係数データを読み出して、差分画像を作成し、中間バッファ１０６に書き込む。続いて、復号部１０８、１０９は、新しい復号パラメータセットを出力し、待機状態に遷移する。新しい復号パラメータセットにおいて、“差分画像ポインタ”は中間バッファ１０６に書き込んだ差分画像へのポインタに設定し、“差分画像ポインタ”以外の情報は、入力された復号パラメータセット内のものと同じに設定する。
【００４２】
“タスク”が“復号画像作成処理”の場合、復号部１０８、１０９は、入力された復号パラメータセットに含まれる“予測データポインタ”が示す中間バッファ１０６上のアドレスから予測データを読み出す。次に、復号部１０８、１０９は、読み出した予測データを基にフレームバッファ１０７から予測画像作成に必要で既に復号されている復号画像を読み出し、この復号画像に、中間バッファ１０６から読み出した差分画像を合わせて復号画像を作成する。作成された復号画像は、フレームバッファ１０７に書き込まれる。続いて、復号部１０８、１０９は、入力された復号パラメータセットをそのまま出力し、待機状態に遷移する。
【００４３】
また復号部１０８、１０９は、処理状態のときに処理中断信号が入力されると、現在行っている処理を中断し、復号パラメータセットにおける各種ポインタを後で処理を再開できるように設定して、復号パラメータセットを出力する。
【００４４】
２  並列復号動作
以上のように構成された本実施形態の画像復号装置１０１の復号動作を説明する。なお、以下の説明では、次の点を前提としている。画像復号装置１０１は、図４に示すような、Ｉフレーム、Ｂフレーム、Ｐフレーム、Ｂフレームの順に４個のフレームを含む１つのＧＯＰ（Ｇｒｏｕｐ  ｏｆ  Ｐｉｃｔｕｒｅｓ）からなるバイトストリームを入力し、全てのフレームを復号する。また、各フレームは１スライスで構成されている。図４のＧＯＰには、スライスＡが１個、スライスＢが１個、スライスＣが２個含まれている。また、全ての被参照画像は同じＧＯＰに含まれており、ＰフレームはＩフレームを参照画像とし、ＢフレームはＩフレームとＰフレームを参照画像とする。従って、スライスＢはスライスＡを参照するため、スライスＡの“復号画像作成処理”が完了するよりも前にスライスＢの“復号画像作成処理”を開始することは出来ない。また、スライスＣはスライスＡ及びスライスＢを参照するため、スライスＡ及びスライスＢの“復号画像作成処理”が完了するよりも前に、スライスＣの“復号画像作成処理”を開始することが出来ない。
【００４５】
また説明を簡易化するために、タスクの追加、削除、割当、状態遷移、及び復号パラメータセットの入出力に必要な時間を０とし、Ｉフレーム、Ｐフレーム、Ｂフレームの各処理に必要な時間は図５に示す通りとする。
【００４６】
画像復号装置１０１において、入力端子１０２を介して入力されたバイトストリームは、ストリームバッファ１０４に書き込まれる。これにより復号するバイトストリームがストリームバッファ１０４から読み出せるようになり、タスク制御部１０５は初期状態からストリーム解析状態に遷移する。
【００４７】
ストリーム解析状態では、タスク制御部１０５は、ストリームバッファ１０４からバイトストリームを読み出して解析し、タスクリスト１５に新しい復号パラメータセットを追加し、タスク割当状態に遷移する。この状態での、タスクリスト１５の状態を図６Ａに示す。なお、図６Ａでは、説明の便宜上、復号パラメータセットの順番を示す要素番号と、各復号パラメータセットに含まれる“スライスタイプ”と“タスク”、及び各復号パラメータセットの優先度のみが示されている（以下の図６Ｂ〜図６Ｉにおいても同様）。各復号パラメータセットの“スライスデータポインタ”を、各スライスのデータ開始位置とする。
【００４８】
タスク割当状態では、タスク制御部１０５は、タスクリスト１５内で優先度が最も高い復号パラメータセット（本例では、Ｅ１）を復号部１０８に出力し、優先度が２番目に高い復号パラメータセット（本例では、Ｅ３）を復号部１０９に出力する。次に、タスク制御部１０５は、出力した２つの復号パラメータセットをタスクリスト１５から削除し、タスク完了待ち状態に遷移する。このときを時間ｔ＝０とする。図７は、各復号部が処理する復号パラメータセットを時間軸に沿って示した図である。
【００４９】
復号部１０８及び復号部１０９には、要素番号Ｅ１および要素番号Ｅ３の復号パラメータセット（以下、単にＥ１、Ｅ３等と記載する）が各々入力され、待機状態から処理状態に遷移する。処理状態においては、復号部１０８、１０９は、入力された復号パラメータセットを参照して算術復号処理を行う。
【００５０】
時間ｔ＝３において、復号部１０９がＥ３の処理を完了する。復号部１０９は、Ｅ３において係数データポインタと予測データポインタを算術復号処理で得られた係数データと予測データへのポインタとしたものをタスク制御部１０５に出力して待機状態に遷移する。
【００５１】
タスク制御部１０５は、復号部１０９から復号パラメータセットが入力されると、タスク追加状態に遷移する。入力された復号パラメータセットの“タスク”は、算術復号処理である。よって、“タスク”以外の情報は、入力された復号パラメータセット内のものと同じで、“タスク”に差分画像作成処理を設定した新しい復号パラメータセットＥ５をタスクリスト１５に追加し、タスク割当状態に遷移する。この時点でのタスクリスト１５を図６Ｂに示す。図６Ｂに示すように、タスク割当状態において、最も優先度が高い復号パラメータセットはＥ５であるため、復号部１０９にＥ５を出力し、タスクリストからＥ５を削除する。その後、タスク制御部１０５はタスク完了待ち状態に遷移する。
【００５２】
復号部１０９は、タスク制御部１０５から復号パラメータセットＥ５が入力されると、再び処理状態になる。入力された復号パラメータセットを参照し、差分画像作成処理を行う。
【００５３】
復号部１０９は、時間ｔ＝５でＥ５の処理を完了する。復号部１０９は、Ｅ５において差分画像へのポインタを差分画像処理で得られた差分画像へのポインタとしたものを出力して待機状態に遷移する。
【００５４】
タスク制御部１０５は、復号部１０９から復号パラメータセットが入力されると、タスク追加状態に遷移する。入力された復号パラメータセットの“タスク”は、差分画像作成処理を示す。よって、タスク以外の情報は、入力された復号パラメータセット内のものと同じで、“タスク”に復号画像作成処理を設定した新しい復号パラメータセットＥ６をタスクリスト１５に追加し、タスク割当状態に遷移する。この時でのタスクリスト１５を図６Ｃに示す。図６Ｃに示すように、最も優先度が高い復号パラメータセットはＥ６である。一方、Ｅ６における復号対象であるスライスＢの復号画像作成処理は、スライスＡの復号画像作成処理が完了していないと実行できない。このため、次に優先度が高いＥ２およびＥ４のうち、タスクリストに追加された順番が早いＥ２を復号部１０９に出力し、タスクリストからＥ２を削除する。その後、タスク制御部１０５はタスク完了待ち状態に遷移する。
【００５５】
復号部１０９は、タスク制御部１０５から復号パラメータセットＥ２が入力されると、再び処理状態になる。入力された復号パラメータセットを参照し、算術復号処理を行う。
復号部１０９は、時間ｔ＝７でＥ２の処理を完了する。復号部１０９は、Ｅ２において係数データポインタと予測データポインタを算術復号処理で得られた係数データと予測データへのポインタとしたものを出力して待機状態に遷移する。
【００５６】
タスク制御部１０５は、復号部１０９から復号パラメータセットが入力されると、タスク追加状態に遷移する。入力された復号パラメータセットの“タスク”は、算術復号処理を示す。よって、タスク以外の情報は、入力された復号パラメータセット内のものと同じで、“タスク”に差分画像作成処理を設定した新しい復号パラメータセットＥ７をタスクリスト１５に追加し、タスク割当状態に遷移する。この時点でのタスクリスト１５を図６Ｄに示す。図６Ｄに示すように、最も優先度が高い復号パラメータセットはＥ６である。一方、スライスＢの復号画像作成処理は、スライスＡの復号画像作成処理が完了していないと実行できない。このため、次に優先度が高いＥ４を復号部１０９に出力し、タスクリストからＥ４を削除する。その後、タスク制御部１０５はタスク完了待ち状態に遷移する。
【００５７】
復号部１０９は、タスク制御部１０５から復号パラメータセットＥ４が入力されると、再び処理状態になる。入力された復号パラメータセットを参照し、算術復号処理を行う。
【００５８】
復号部１０８及び復号部１０９は、各々時間ｔ＝９でＥ１およびＥ４の処理を完了する。復号部１０８は、Ｅ１において係数データポインタと予測データポインタを算術復号処理で得られた係数データと予測データへのポインタとしたものを出力して待機状態に遷移する。復号部１０９は、Ｅ４において係数データポインタと予測データポインタを算術復号処理で得られた係数データと予測データへのポインタとしたものを出力して待機状態に遷移する。なおタスク制御部１０５は、２つの復号部が同時に処理を完了して待機状態に遷移した場合には、復号部１０８から制御を行うものとする。
【００５９】
タスク制御部１０５は、復号部１０８および復号部１０９から復号パラメータセットＥ１およびＥ４が各々入力されると、タスク追加状態に遷移する。
【００６０】
タスク制御部１０５は、まずＥ１について処理を行う。入力された復号パラメータセットＥ１の“タスク”は、算術復号処理を示す。よって、タスク以外の情報は、入力された復号パラメータセット内のものと同じで、“タスク”に差分画像作成処理を設定した新しい復号パラメータセットＥ８をタスクリスト１５に追加し、タスク割当状態に遷移する。この時点でのタスクリスト１５を図６Ｅに示す。図６Ｅに示すように、最も優先度が高い復号パラメータセットはＥ６である。一方、スライスＢの復号画像作成処理は、スライスＡの復号画像作成処理が完了していないと実行できない。このため、次に優先度が高いＥ８を復号部１０８に出力し、タスクリストからＥ８を削除する。その後、タスク制御部１０５はタスク完了待ち状態に遷移する。
【００６１】
次にタスク制御部１０５は、復号部１０９から入力された復号パラメータセットＥ４が入力されると、タスク追加状態に遷移する。同様にして新しい復号パラメータセットＥ９をタスクリスト１５に追加し、タスク割当状態に遷移する。この時点でのタスクリスト１５を図６Ｆに示す。図６Ｆに示すように、復号パラメータセットＥ６の優先度が高いが、これはスライスＡの復号画像作成処理が完了していないと実行できないため、次に優先度が高いＥ７およびＥ９のうち、タスクリストに追加された順番が早いＥ７を復号部１０９に出力し、タスクリストからＥ７を削除する。その後、タスク制御部１０５はタスク完了待ち状態に遷移する。
【００６２】
復号部１０８は、タスク制御部１０５から復号パラメータセットＥ８が入力されると、再び処理状態になる。入力された復号パラメータセットを参照し、差分画像作成処理を行う。また、復号部１０９も同様に、復号パラメータセットＥ７が入力されると、再び処理状態になる。入力された復号パラメータセットを参照し、差分画像作成処理を行う。
【００６３】
復号部１０８及び復号部１０９は、各々時間ｔ＝１１でＥ８およびＥ７の処理を完了する。復号部１０８は、Ｅ８において差分画像へのポインタを差分画像処理で得られた差分画像へのポインタとしたものを出力して待機状態に遷移する。復号部１０９は、Ｅ７において差分画像へのポインタを差分画像処理で得られた差分画像へのポインタとしたものを出力して待機状態に遷移する。
【００６４】
タスク制御部１０５は、復号部１０８から復号パラメータセットが入力されると、タスク追加状態に遷移する。入力された復号パラメータセットの“タスク”は、差分画像処理を示す。よって、タスク以外の情報は、入力された復号パラメータセット内のものと同じで、“タスク”に復号画像作成処理を設定した新しい復号パラメータセットＥ１０をタスクリスト１５に追加し、タスク割当状態に遷移する。この時点でのタスクリスト１５を図６Ｇに示す。図６Ｇに示すように、最も優先度が高い復号パラメータセットはＥ１０であるため、復号部１０８にＥ１０を出力し、タスクリストからＥ１０を削除する。その後、タスク制御部１０５はタスク完了待ち状態に遷移する。
【００６５】
次にタスク制御部１０５は、復号部１０９から復号パラメータセットが入力されると、タスク追加状態に遷移する。同様にして新しい復号パラメータセットＥ１１をタスクリスト１５に追加し、タスク割当状態に遷移する。この時点でのタスクリスト１５を図６Ｈに示す。図６Ｈに示すように、復号パラメータセットＥ６およびＥ１１の優先度が高いが、いずれもスライスＡの復号画像作成処理が完了していないと実行できないため、次に優先度が高いＥ９を復号部１０９に出力し、タスクリストからＥ９を削除する。その後、タスク制御部１０５はタスク完了待ち状態に遷移する。
【００６６】
復号部１０８は、タスク制御部１０５から復号パラメータセットＥ１０が入力されると、再び処理状態になる。入力された復号パラメータセットを参照し、復号画像作成処理を行う。また、復号部１０９も同様に、復号パラメータセットＥ９が入力されると、再び処理状態になる。入力された復号パラメータセットを参照し、差分画像作成処理を行う。
【００６７】
復号部１０８は、時間ｔ＝１２でＥ１０の処理を完了する。復号部１０８は、タスク制御部１０５に対して、入力された復号パラメータセットＥ１０をそのまま出力し、待機状態に遷移する。
【００６８】
タスク制御部１０５は、復号部１０８から復号パラメータセットが入力されると、タスク追加状態に遷移する。この時のタスクリストは、図６Ｉに示すようになっている。入力された復号パラメータセットの“タスク”は“復号画像作成処理”を示す。よってタスク制御部１０５は、作成された復号画像であるスライスＡを参照する復号パラメータセットをタスクリスト１５から探す。作成されたスライスＡを参照する“復号画像作成処理”は、Ｅ６およびＥ１１の２つである。そこで、待機状態でない復号部１０９が処理しているＥ９のタスクの優先度２と、見つかった２つの復号パラメータセットのうち２番目に優先度が高いＥ１１の優先度１０とを比較する。比較の結果、復号部１０９が処理しているタスクの優先度の方が低いことがわかるため、タスク制御部１０５は、復号部１０９にＥ６のタスクを割り込み処理させるべく、まず復号部１０９に処理中断信号を出力し、その後、復号部１０９から復号パラメータセットが入力されるまで待機する。
【００６９】
復号部１０９は、処理中断信号が入力されると、現在処理しているＥ９の算術復号処理を中断し、タスク制御部１０５に復号パラメータセットＥ９を出力して待機状態に遷移する。この時、中断した処理を後で再開できるように、復号パラメータセットＥ９における各種ポインタを、中断時点での値に設定しておく。
【００７０】
タスク制御部１０５は、復号部１０９から入力された復号パラメータセットＥ９を中断タスクリスト１７に追加した後、タスク割当状態に遷移する。
【００７１】
この時のタスクリスト１５も図６Ｉに示すようになり、また２つの復号部１０８、１０９は待機状態にある。このときのタスク割当状態において、タスクリスト１５及び中断タスクリスト１７内で最も優先度が高い復号パラメータセットはＥ６であり、スライスＡの復号画像作成処理は既に完了しているため、タスク制御部１０５は、復号部１０８にＥ６を出力し、タスクリスト１５からＥ６を削除する。また、２番目に優先度の高い復号パラメータセットはＥ１１であり、スライスＡの復号画像作成処理は既に完了しているため、タスク制御部１０５は、復号部１０９にＥ１１を出力し、タスクリスト１５からＥ１１を削除する。その後、タスク制御部１０５はタスク完了待ち状態に遷移する。
【００７２】
復号部１０８及び復号部１０９は、タスク制御部１０５から復号パラメータセットが入力されると、再び処理状態になる。入力された復号パラメータセットを参照し、復号画像作成処理を行う。
【００７３】
復号部１０８及び復号部１０９は、共に時間ｔ＝１３で復号画像作成処理を完了し、タスク制御部１０５に対して入力された復号パラメータセットＥ６およびＥ１１をそのまま出力し、待機状態に遷移する。
【００７４】
タスク制御部１０５は、復号部１０８から復号パラメータセットＥ６が入力されると、タスク追加状態に遷移する。入力された復号パラメータセットＥ６の“タスク”は“復号画像作成処理”であるが、作成された復号画像であるスライスＢを参照し、かつ“タスク”が“復号画像作成処理”である復号パラメータセットはタスクリスト１５内には存在しないため、何もせずにタスク割当状態に遷移する。この時のタスクリスト１５の要素数は０である。中断タスクリスト１７には復号パラメータセットＥ９があるため、復号部１０８にＥ９を出力し、中断タスクリスト１７からＥ９を削除する。その後、タスク完了待ち状態に遷移する。
【００７５】
次にタスク制御部１０５は、復号部１０９から復号パラメータセットＥ１１が入力されると、タスク追加状態に遷移する。入力された復号パラメータセットＥ１１の“タスク”は“復号画像作成処理”であるが、作成された復号画像であるスライスＣを参照し、かつ“タスク”が“復号画像作成処理”である復号パラメータセットはタスクリスト１５内には存在しないため、何もせずにタスク割当状態に遷移する。この時のタスクリストの要素数は０である。また中断タスクリスト１７の要素数も０であるが、復号部１０８が処理中であるため、何もせずにタスク完了待ち状態に遷移する。
【００７６】
ここまでの、復号部１０８及び復号部１０９がそれぞれ処理した復号パラメータセットを時間順に並べると、図７のようになる。復号パラメータセットＥ９は、一度処理が中断され、その後に処理を再開している。
【００７７】
以降同様にしてスライスＣの復号処理を繰り返し、１ＧＯＰの復号を完了する。
【００７８】
以上の方法により、グループＡに属するフレームの復号処理が完了する前にでも、グループＢに属するフレームやグループＣに属するフレームの復号処理を開始することができ、復号部（プロセッサ）のアイドル時間を低減することが出来る。
【００７９】
なお、本実施の形態では復号部の数を２として説明したが、３以上でも構わない。また、本実施の形態では、１フレームに含まれるスライスの数を１として説明したが、２以上でも構わない。
【００８０】
また、本実施の形態では１ＧＯＰ全部を復号する例を挙げているが、ストリームバッファ１０４が必要バイトストリームしかバッファリングしない、またはタスク制御部１０５が必要の無い復号パラメータセットを出力しないようにしてもよい。これにより、任意の１フレームを復号することも出来る。また、複数のＧＯＰをまとめて復号することも可能となる。
【００８１】
なお、本実施の形態で説明した画像復号装置の機能は、電子回路等のハードウェアで実現してもよいし、ＣＰＵのようなコンピュータと制御プログラム（ソフトウェア）の組み合わせで実現してもよい。
【産業上の利用可能性】
【００８２】
本発明の画像復号装置によれば、フレーム間に依存関係がある場合でも、プロセッサのアイドル時間を短くすることができ、復号処理を高速に行うことができるため、マルチプロセッサ上で動作するソフトデコーダ等においても有効である。
【符号の説明】
【００８３】
１５  タスクリスト
１６  優先度テーブル
１７  中断タスクリスト
１０１  画像復号装置
１０２  入力端子
１０３  出力端子
１０４  ストリームバッファ
１０５  タスク制御部
１０６  中間バッファ
１０７  フレームバッファ
１０８、１０９  復号部
【図１】
2010252069.tif 000003
【図２】
2010252069.tif 000004
【図３】
2010252069.tif 000005
【図４】
2010252069.tif 000006
【図５】
2010252069.tif 000007
【図６Ａ】
2010252069.tif 000008
【図６Ｂ】
2010252069.tif 000009
【図６Ｃ】
2010252069.tif 000010
【図６Ｄ】
2010252069.tif 000011
【図６Ｅ】
2010252069.tif 000012
【図６Ｆ】
2010252069.tif 000013
【図６Ｇ】
2010252069.tif 000014
【図６Ｈ】
2010252069.tif 000015
【図６Ｉ】
2010252069.tif 000016
【図７】
2010252069.tif 000017
【図８】
2010252069.tif 000018
【図９】
2010252069.tif 000019
【図１０】
2010252069.tif 000020