(57)【要約】  【課題】  復号処理に伴う消費電力を低減できる復号方法、復号装置およびそのプログラムを提供する。  【解決手段】  クロック制御部１１において符号化データのヘッダデータ等を基に可変調復号部１３〜デブロックフィルタ２３までの処理に要するクロック数を予測する。そして、その予測結果を基に、クロック制御回路７からＣＰＵ８に供給するクロック信号の周波数、電源６からＣＰＵ８に供給する電圧を制御する。【選択図】  図２
2006222648.tif 000002
【特許請求の範囲】
【請求項１】
ヘッダデータと符号化データとを含む復号対象データを復号する復号装置が行う復号方法であって、
前記ヘッダデータに含まれる前記符号化データの属性データに基づいて、前記符号化データの復号処理の予測負荷を示す予測負荷データを生成する第１の工程と、
前記第１の工程で生成した前記予測負荷データに基づいて、動作周波数を決定する第２の工程と、
前記第２の工程で決定した前記動作周波数で動作して前記符号化データを復号する第３の工程と
を有する復号方法。
【請求項２】
前記第２の工程は、前記予測負荷データが示す前記予測負荷が小さくなるに従って前記決定する動作周波数を低くする
請求項１に記載の復号方法。
【請求項３】
前記第１の工程は、クロック信号に基づいて動作する前記復号装置が前記復号処理に要する予測クロックサイクル数を示す前記予測負荷データを生成し、
前記第２の工程は、前記予測負荷データを基に、前記クロック信号の周波数を決定する
請求項２に記載の復号方法。
【請求項４】
前記復号処理は、前記符号化データのエントロピー復号処理、動き予測・補償処理、逆直交変換処理、逆量子化処理を順に行う
請求項１に記載の復号方法。
【請求項５】
前記ヘッダデータは、前記符号化データを単位時間当たりに復号する予測情報量を示すシーケンスヘッダデータを前記属性データとして含み、
前記第１の工程は、前記シーケンスヘッダデータを基に、前記予測負荷データを生成する
請求項１に記載の復号方法。
【請求項６】
前記符号化データは、予測方法が同じ複数のブロックデータで構成され、前記予測方向が異なる複数のスライスデータを含み、
前記ヘッダデータは、前記複数のスライスデータに対応し、当該スライスデータの前記予測方向を示すスライスヘッダデータを前記属性データとしてさらに含み、
前記第１の工程は、前記シーケンスヘッダデータと前記スライスヘッダデータとを基に、前記スライスデータ毎に前記予測負荷データを生成し、
前記第２の工程は、前記スライスデータ毎に、当該スライスデータに対応して前記第１の工程で生成した前記予測負荷データを基に前記動作周波数を決定する
請求項５に記載の復号方法。
【請求項７】
過去に同じ予測方向の前記スライスデータについて前記予測負荷データを生成している場合に、当該スライスデータについて前記第１の工程を行わずに、前記第２の工程において、前記過去に生成した前記同じ予測方向のスライスデータの前記予測負荷データを基に、前記動作周波数を決定する
請求項６に記載の復号方法。
【請求項８】
前記符号化データが、被符号化データに対して直交変換処理、量子化処理、並びにエントロピー符号化処理を順に施して生成されたものである場合に、
前記符号化データに前記エントロピー符号化処理に対応したエントロピー復号処理を行って得られたデータを基に、前記量子化処理に対応した逆量子化処理と前記直交変換処理に対応した逆直交変換処理との予測処理量を示す前記予測負荷データを生成する
請求項１に記載の復号方法。
【請求項９】
ヘッダデータと符号化データとを含む復号対象データを復号する復号装置が行う復号装置であって、
前記ヘッダデータに含まれる前記符号化データの属性データに基づいて、前記符号化データの復号処理の予測負荷を示す予測負荷データを生成する負荷予測手段と、
前記負荷予測手段が生成した前記予測負荷データに基づいて、動作周波数を決定する決定手段と、
前記決定手段で決定した前記動作周波数で動作して前記符号化データを復号する復号手段と
を有する復号装置。
【請求項１０】
ヘッダデータと符号化データとを含む復号対象データを復号する復号装置が行う復号装置であって、
前記ヘッダデータに含まれる前記符号化データの属性データに基づいて、前記符号化データの復号処理の予測負荷を示す予測負荷データを生成する負荷予測手段と、
前記負荷予測手段が生成した前記予測負荷データに基づいて、動作周波数を決定する決定手段と、
クロック信号に基づいて動作し、前記符号化データを復号する復号手段と、
前記決定手段が決定した動作周波数の前記クロック信号を前記復号手段に出力するクロック制御手段と
を有する復号装置。
【請求項１１】
前記復号手段に電圧を供給する電源
をさらに有し、
前記決定手段は、前記予測負荷データに基づいて、前記電源が前記復号手段に供給する電圧を制御する
請求項１０に記載の復号装置。
【請求項１２】
ヘッダデータと符号化データとを含む復号対象データを復号する復号装置が実行するプログラムであって、
前記ヘッダデータに含まれる前記符号化データの属性データに基づいて、前記符号化データの復号処理の予測負荷を示す予測負荷データを生成する第１の手順と、
前記第１の手順で生成した前記予測負荷データに基づいて、動作周波数を決定する第２の手順と、
前記第２の手順で決定した前記動作周波数で動作して前記符号化データを復号する第３の手順と
を前記復号装置に実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
符号化データを復号する復号方法、復号装置およびそのプログラムに関する。
【背景技術】
【０００２】
ＭＰＥＧ(Moving Picture Experts Group)やＡＶＣ(Advanced Video Coding)などで符号化された符号化データを復号する復号装置がある。
このような復号装置は、例えば、符号化データに含まれるヘッダデータを基に復号処理に用いるパラメータを決定し、そのパラメータを基に、復号処理を行う。
ところで、このような復号処理は、復号画像データを途切れなく生成するために、復号処理量の最大値を予測し、その最大値において復号処理が所望のレートで行えるように復号装置の動作周波数を決めている。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上述した従来の復号装置では、最大負荷に対応した電力供給を常時行うため、消費電力が大きいという問題がある。
特に、近年、ＣＰＵの処理能力が上がり、ソフトウェア処理により復号処理が行われることが多いが、このような場合に、専用ハードウェアで行う場合に比べて消費電力が特に大きくなるという問題がある。
【０００４】
本発明は、上述した従来技術の問題点に鑑みて、復号処理に伴う消費電力を低減できる復号方法、復号装置およびそのプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
上述した従来技術の問題点を解決し、上述した目的を達成するため、第１の観点の発明の復号方法は、ヘッダデータと符号化データとを含む復号対象データを復号する復号装置が行う復号方法であって、前記ヘッダデータに含まれる前記符号化データの属性データに基づいて、前記符号化データの復号処理の予測負荷を示す予測負荷データを生成する第１の工程と、前記第１の工程で生成した前記予測負荷データに基づいて、動作周波数を決定する第２の工程と、前記第２の工程で決定した前記動作周波数で動作して前記符号化データを復号する第３の工程とを有する。
【０００６】
第２の観点の発明の復号装置は、ヘッダデータと符号化データとを含む復号対象データを復号する復号装置であって、前記ヘッダデータに含まれる前記符号化データの属性データに基づいて、前記符号化データの復号処理の予測負荷を示す予測負荷データを生成する負荷予測手段と、前記負荷予測手段が生成した前記予測負荷データに基づいて、動作周波数を決定する決定手段と、前記決定手段で決定した前記動作周波数で動作して前記符号化データを復号する復号手段とを有する。
【０００７】
第２の観点の発明の復号装置の作用は以下のようになる。
先ず、負荷予測手段が、ヘッダデータに含まれる前記符号化データの属性データに基づいて、前記符号化データの復号処理の予測負荷を示す予測負荷データを生成する。
次に、決定手段が、前記負荷予測手段が生成した前記予測負荷データに基づいて、動作周波数を決定する。
次に、前記復号手段が、前記決定手段で決定した前記動作周波数で動作して前記符号化データを復号する。
【０００８】
第３の観点の発明の復号装置は、ヘッダデータと符号化データとを含む復号対象データを復号する復号装置であって、前記ヘッダデータに含まれる前記符号化データの属性データに基づいて、前記符号化データの復号処理の予測負荷を示す予測負荷データを生成する負荷予測手段と、前記負荷予測手段が生成した前記予測負荷データに基づいて、動作周波数を決定する決定手段と、クロック信号に基づいて動作し、前記符号化データを復号する復号手段と、前記決定手段が決定した動作周波数の前記クロック信号を前記復号手段に出力するクロック制御手段とを有する。
【０００９】
第４の観点の発明のプログラムは、ヘッダデータと符号化データとを含む復号対象データを復号する復号装置が実行するプログラムであって、前記ヘッダデータに含まれる前記符号化データの属性データに基づいて、前記符号化データの復号処理の予測負荷を示す予測負荷データを生成する第１の手順と、前記第１の手順で生成した前記予測負荷データに基づいて、動作周波数を決定する第２の手順と、前記第２の手順で決定した前記動作周波数で動作して前記符号化データを復号する第３の手順とを前記復号装置に実行させる。
【発明の効果】
【００１０】
本発明によれば、復号処理に伴う消費電力を低減できる復号方法、復号装置およびそのプログラムを提供することができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施形態に係わる復号装置について説明する。
先ず、本実施形態の構成要素と、本発明の構成要素との対応関係を説明する。
図５に示すステップＳＴ１３が第１の観点の発明の第１の工程に対応し、ステップＳＴ１４が第２の工程に対応し、図３に示すＭＣ（動き予測・補償処理）、ＩＤＣＴ（逆ＤＣＴ処理）、ＩＱ（逆量子化処理）およびＤｅｂｌｏｃｋ（デブロックフィルタ処理）が第３の工程に対応している。
また、本実施形態の復号開始前予測サイクル数データＩＳＤ１、可変調復号開始前予測サイクル数データＩＳＤ２、並びに可変調復号後予測サイクル数データＩＳＤ３の各々が本発明の予測負荷データに対応している。
また、本実施形態のシーケンスヘッダデータ、スライスヘッダデータ、並びに可変調復号部１３によって得られた情報等が本発明の属性データに対応している。
また、本実施形態のクロック信号ＣＬＫが本発明のクロック信号に対応している。
また、図２に示すクロック制御部１１が本発明の負荷予測手段および決定手段に対応し、可変調復号部１３、動き予測・補償部２１、逆ＤＣＴ・逆量子化部２２およびデブロックフィルタ２３が復号手段に対応している。
また、図１に示すプログラムＰＲＧが本発明のプログラムに対応している。
【００１２】
図１は、本発明の実施形態に係わる復号装置１のハードウェア構成図である。
図１に示すように、復号装置１は、例えば、記録メディア３、メモリ４、表示デバイス５、電源６、クロック制御回路７およびＣＰＵ(Central Processing Unit)８を有する。
【００１３】
記録メディア３は、復号対象のビットストリームＥＤを記憶する。
メモリ４は、ＣＰＵ８が実行するプログラムＰＲＧ、並びにＣＰＵ８の処理に用いられるデータを記憶する。
表示デバイス５は、ＣＰＵ８が復号した復号画像データに応じた画像を表示する。
また、電源６は、ＣＰＵ８からの電圧指定信号ＶＩに応じた電圧をＣＰＵ８に供給する。
クロック制御回路７は、ＣＰＵ８からのクロック指定信号ＣＩが示す周波数のクロック信号ＣＬＫをＣＰＵ８に出力する。
【００１４】
ＣＰＵ８は、記録メディア３から読み出したビットストリームＥＤを復号する。
また、ＣＰＵ８は、後述するように、ビットストリームＥＤの復号前に、当該復号処理に要するクロック数を予測し、その結果に基づいて、クロック指定信号ＣＩおよび電圧指定信号ＶＩを生成する。
すなわち、ＣＰＵ８は、復号処理に要するクロック数を復号処理前に予測し、その結果に基づいて、復号処理を破綻させない（例えば、所望の再生スピードを維持できる）ために必要なクロック信号ＣＬＫの周波数等を決定し、当該周波数で動作する。
これにより、ＣＰＵ８を、必要以上に高周波数で動作せることを回避でき、省電力化を図る。
【００１５】
図２は、図１に示すＣＰＵ８がプログラムＰＲＧを実行して実現する機能を説明するための機能ブロック図である。
図２に示すように、ＣＰＵ８は、プログラムＰＲＧを実行して、クロック制御部１１、可変調復号（ＶＬＤ:Variable Length Coding）部１３、可変調復号後データ蓄積部１４、サイクル数推定用パラメータ蓄積部１５、動き予測・補償部２１、逆ＤＣＴ・逆量子化部２２、デブロックフィルタ２３、並びに参照画像蓄積部２６を実現する。
また、図２に示すように、クロック制御部１１は、例えば、復号開始前クロック制御部３１、ＶＬＤ開始前クロック制御部３３およびＶＬＤ後クロック制御部３５を有する。
なお、図２に示す構成要素の全てあるいは一部を、ＣＰＵ８によるプログラムＰＲＧの実行ではなく、電子回路として実現してもよい。
【００１６】
図３はＣＰＵ８の復号処理のシーケンスを説明するための図、図４は当該シーケンスに対応したフローチャートである。
ステップＳＴ１：
図２に示す復号開始前クロック制御部３１は、記録メディア３からビットストリームＥＤ内のシーケンスヘッダを読み出し、それを解析して復号開始前のクロックサイクル数を予測する。
そして、復号開始前クロック制御部３１は、当該予測を基に、動き予測・補償部２１、逆ＤＣＴ・逆量子化部２２およびデブロックフィルタ２３に対する供給電圧、並びにクロック信号ＣＬＫの周波数を決定する。
このとき、復号開始前クロック制御部３１は、例えば、シーケンスヘッダ内に格納された符号化データのビットレート、画像サイズ、並びにエントリピー符号化方式などの情報を基に、上記復号開始前のクロックサイクル数を予測する。
ステップＳＴ２：
ＣＰＵ８が、記録メディア３に記憶されたビットストリームＥＢの符号化データを読み出してメモリ４に書き込む。
【００１７】
ステップＳＴ３：
ＶＬＤ開始前クロック制御部３３は、記録メディア３からビットストリームＥＤ内のスライスヘッダを読み出して、可変調復号部１３による可変調復号前のクロックサイクル数を予測する。
そして、復号開始前クロック制御部３１は、当該予測を基に、動き予測・補償部２１、逆ＤＣＴ・逆量子化部２２およびデブロックフィルタ２３に対する供給電圧、並びにクロック信号ＣＬＫの周波数を決定する。
ＶＬＤ開始前クロック制御部３３は、例えば、スライスヘッダデータ内に格納されたスライスデータの種類（Ｉ，Ｐ，Ｂ），スライスデータのビット数などの情報を基に、可変調復号前のクロック周波数を予測する。
ステップＳＴ４：
可変調復号部１３において、メモリ４から読み出したビットストリームＥＤの符号化データが可変調復号され、それによって得られたＭＢヘッダ内の動きベクトルＭＶ、量子化スケール、並びにＤＣＴ係数が可変調復号後データ蓄積部１４に蓄積される。
また、可変調復号部１３において１ピクチャあるいはスライスデータが復号される度に、それに対するサイクル数推定用の各種パラメータがサイクル数推定用パラメータ蓄積部１５に蓄積される。
【００１８】
ステップＳＴ５：
ＶＬＤ後クロック制御部３５は、１ピクチャあるいは１スライスデータの可変調復号が終了した時点で、サイクル数推定用パラメータ蓄積部１５に蓄積されたサイクル数推定用パラメータを用いて、可変調復号部１３による可変変調復号後のクロックサイクル数（動き予測・補償部２１、逆ＤＣＴ・逆量子化部２２およびデブロックフィルタ２３に要するクロックサイクル数）を予測する。
そして、ＶＬＤ後クロック制御部３５は、当該予測を基に、動き予測・補償部２１、逆ＤＣＴ・逆量子化部２２およびデブロックフィルタ２３に対する供給電圧、並びにクロック信号ＣＬＫの周波数を決定する。
本実施形態では、サイクル数推定用パラメータ蓄積部１５には、変換係数（ＤＣＴ系端数）、動きベクトルＭＶが示す補間画素位置、並びにデブロックフィルタ処理を要するエッジなどに関する情報がサイクル数推定用パラメータ蓄積部１５に蓄積され、ＶＬＤ後クロック制御部３５によって用いられる。
ステップＳＴ６：
動き予測・補償部２１、逆ＤＣＴ・逆量子化部２２およびデブロックフィルタ２３が、ステップＳＴ５で規定されたクロック信号ＣＬＫおよび供給電圧により動作し、デブロックフィルタ２３から復号画像データＤＤが表示デバイス５に出力される。
ステップＳＴ７：
表示デバイス５がステップＳＴ６で入力した復号画像データＤＤに応じた画像を表示する。
【００１９】
ところで、図１に示す電源６およびクロック制御回路７の電圧やクロック信号ＣＬＫの周波数の変更には時間を要する場合がある。
復号装置１では、図３および図４に示すように、図２に示す復号開始前クロック制御部３１、ＶＬＤ開始前クロック制御部３３およびＶＬＤ後クロック制御部３５によって、それぞれ復号処理の異なる段階で、電圧やクロック信号ＣＬＫの変更タイミングを規定し、制御する。これにより、復号処理の進行に応じて、可能な限り早いタイミングで且つ適切な情報を基に、その後の復号処理に要するクロックサイクルを予測でき、効果的に省電力化を図れる。
本実施形態では、復号開始前クロック制御部３１、ＶＬＤ開始前クロック制御部３３およびＶＬＤ後クロック制御部３５の全てにおいて、電源およびクロック周波数の制御を行う場合を例示するが、これらのうち一部のみを用いてもよい。
例えば、復号処理過程で電源およびクロック周波数の変更が困難な場合には復号開始前クロック制御部３１のみを用いる。
また、可変調復号部１３の処理を終了する前まで電源およびクロック周波数の変更が可能な場合には、ＶＬＤ開始前クロック制御部３３のみを用いるか、復号開始前クロック制御部３１およびＶＬＤ開始前クロック制御部３３のみを用いる。
【００２０】
［復号開始前クロック制御部３１］
以下、図２に示す復号開始前クロック制御部３１について説明する。
図５は、図２に示す復号開始前クロック制御部３１の処理のフローチャートである。
ステップＳＴ１１：
復号開始前クロック制御部３１が、記録メディア３からビットストリームＥＤ内のシーケンスヘッダデータを読み出す。
ステップＳＴ１２：
復号開始前クロック制御部３１が、ステップＳＴ１１で読み出したシーケンスヘッダデータから、復号開始前のクロックサイクルを予測するために用いるパラメータを抽出する。
当該パラメータは、例えば、ビットストリームＥＤのマクロブロックレート（ＭＢｒａｔｅ）、ビットレート（ｂｉｔｒａｔｅ）、並びに符号化方式としてＣＡＢＡＣ(Context-Adaptive Binary Arithmetic Coding: コンテキスト適応型２値算術符号化方式)の採用の有無を示すデータなどである。
【００２１】
ステップＳＴ１３：
復号開始前クロック制御部３１が、ステップＳＴ１２で抽出したパラメータを基に、下記式（１）により、復号開始前予測サイクル数データＩＳＤ１を生成する。
【００２２】
［数１］
ISD1= iVLDc + IDCTc + iIQc + iDEBc + iMCc + OTHERc
…（１）
【００２３】
上記式（１）に示すiDEBcは、デブロックフィルタ処理に関連して行う復号処理に必要なクロックサイクル数を示し、復号開始前クロック制御部３１が下記式（２）により計算する。
本実施形態において、「Mc」は、メガサイクルを示している。
【００２４】
［数２］
iDEBc = 100Mc*MBrate/(396*30)
…（２）
【００２５】
また、「iMCc」は、動き予測・補償処理に関連して行う復号処理に必要なクロックサイクル数を示し、復号開始前クロック制御部３１が下記式（３）により計算する。
【００２６】
［数３］
iMCc = 120Mc*MBrate/(396*30)
…（３）
【００２７】
また、「iIDCTc」は、逆直交変換処理に関連して行う復号処理に必要なクロックサイクル数を示し、復号開始前クロック制御部３１が下記式（４）により計算する。
【００２８】
［数４］
iIDCTc = 30Mc*bitrate/384kbps
…（４）
【００２９】
また、「iIQc」は、逆量子化処理に関連して行う復号処理に必要なクロックサイクル数を示し、復号開始前クロック制御部３１が下記式（５）により計算する。
【００３０】
［数５］
iIQc = 20Mc*bitrate/384kbps
…（５）
【００３１】
また、「iVLDc」は、当該可変調復号に関連して行う復号処理に必要なクロックサイクル数を示し、復号開始前クロック制御部３１が下記式（６）により計算する。
【００３２】
［数６］
iVLDc = 20Mc*bitrate/384kbps
…（６）
【００３３】
また、復号開始前クロック制御部３１は、符号化方式としてＣＡＢＡＣが採用されている場合には、上記式（６）で得た「iVLDc」を３倍して用いる。
【００３４】
ステップＳＴ１４：
復号開始前クロック制御部３１は、ステップＳＴ１３で計算した復号開始前予測サイクル数データＩＳＤ１を基に、電源６およびＣＰＵ８が、動き予測・補償部２１、逆ＤＣＴ・逆量子化部２２およびデブロックフィルタ２３に対する供給電圧、並びにクロック信号ＣＬＫの周波数を決定する。
具体的には、復号開始前クロック制御部３１は、復号開始前予測サイクル数データＩＳＤ１が示すサイクル数が小さくなるに従って低い周波数となるようにクロック信号ＣＬＫを制御するクロック指定信号ＣＩを生成する。
また、復号開始前クロック制御部３１は、クロック信号ＣＬＫの周波数が低くなるに従って、電源６がＣＰＵ８に供給する電圧を小さくするように電源６を制御する電圧制御信号ＶＩを生成する。
【００３５】
なお、クロック信号ＣＬＫの周波数のレンジに対応した電源６の供給電圧を例えば図６に示すように規定する。
図１に示すＣＰＵ８の消費電力Ｐは、例えば、「Ｃ＊Ｆ＊Ｖ^２」で示される。
ここで、Ｃは、例えば、ＣＰＵ８の容量、Ｆはクロック信号ＣＬＫの周波数、Ｖは電源６がメモリ４に供給する電源電圧を示している。
すなわち、ＣＰＵ８の消費電力Ｐを下げるには、ＦとＶを下げる。
その一方、周波数ＦでＣＰＵ８を動作させるには、ある値以上の電源Ｖが必要になる。これらを考慮して図６は規定されている。
【００３６】
なお、上述した例では、復号開始前クロック制御部３１は、復号処理全体に要するクロック数を予測したが、可変調復号部１３による可変調復号を行う前に要するクロック数を予測してもよい。
【００３７】
［ＶＬＤ開始前クロック制御部３３］
以下、図２に示すＶＬＤ開始前クロック制御部３３について説明する。
図７は、図２に示すＶＬＤ開始前クロック制御部３３の動作例を説明するためのフローチャートである。
ステップＳＴ２１：
ＶＬＤ開始前クロック制御部３３は、図３に示すように、記録メディア３からビットストリームＥＤのピクチャヘッダデータおよびスライスヘッダデータを読み出し、これらからＶＬＤ開始前のクロック数を予測するために用いるパラメータを抽出する。
当該パラメータとしては、例えば、スライスデータの種類（タイプ）や、スライス内のビット数を示す「sliceBitNum」がある。
【００３８】
ステップＳＴ２２：
ＶＬＤ開始前クロック制御部３３は、ステップＳＴ２１で抽出したパラメータを基に、スライスデータのビット量を基に、下記式（７），（８），（９）に基づいて、bIDCTc, bIQc,bVLDcを計算する。
ここで、bIDCTcは逆直交変換に関連して要するクロック数を示し、bIQcは逆量子化に関連して要するクロック数を示し、bVLDcは可変調復号に関連して要するクロック数を示している。
【００３９】
［数７］
bIDCTc = iIDCTc*sliceBitNum/(384kbps/30fps)
…（７）
【００４０】
［数８］
bIQc = iIQc*sliceBitNum/(384kbps/30fps)
…（８）
【００４１】
［数９］
bVLDc = iVLDc*sliceBitNum/(384kbps/30fps)
…（９）
【００４２】
ステップＳＴ２３：
ＶＬＤ開始前クロック制御部３３は、処理対象のスライスデータと同じ種類のスライスデータについて、可変調復号開始前予測サイクル数データＩＳＤ２を生成したか否かを判断し、生成していないと判断するとステップＳＴ２４に進み、生成したと判断するとステップＳＴ２５に進む。
【００４３】
ステップＳＴ２４：
ＶＬＤ開始前クロック制御部３３は、当該処理対象のスライスデータの種類Ｉ，Ｐ，Ｂに応じて、それぞれ下記式（１０），（１１），（１２）により、bMCc,bDEBcを計算する。
ここで、bMCcは動き予測・補償処理に関係して要するクロック数を示し、bDEBcはデブロックフィルタ処理に関係して要するクロック数を示している。
また、iMCcは上記式（３）により復号開始前クロック制御部３１が計算した値、iDEBcは上記式（２）により復号開始前クロック制御部３１が計算した値が用いられる。
【００４４】
［数１０］
I slice：
bMCc = iMCc * 0.5
bDEBc = iDEBc * 2
…（１０）
【００４５】
［数１１］
P slice    ：
bMCc = iMCc
bDEBc =iDEBc
…（１１）
【００４６】
［数１２］
B slice：
bMCc = iMCc * 2
bDEBc = iDEBc * 1.5
…（１２）
【００４７】
ステップＳＴ２５：
ＶＬＤ開始前クロック制御部３３は、直前の同一種類（タイプ）のスライスデータで使用したbIDCTc, bIQc,bVLDc,bMCc,bDEBcであるPvIDCTc, PvIQc,PvVLDc,PvMCc,PvDEBcを用いて、下記式（１３），（１４），（１５），（１６），（１７）に示すように、上記bIDCTc, bIQc,bVLDc,bMCc,bDEBcを計算する。
【００４８】
［数１３］
bIDCTc = PvIDCTc*sliceBitNum/PsliceBitNum
…（１３）
【００４９】
［数１４］
bIQc = PvIQc*sliceBitNum/PsliceBitNum
…（１４）
【００５０】
［数１５］
bVLDc = PvVLDc*sliceBitNum/PsliceBitNum
…（１５）
【００５１】
［数１６］
bMCc = PvMCc
…（１６）
【００５２】
［数１７］
bDEBc =PvDEBc
…（１７）
【００５３】
ステップＳＴ２６：
ＶＬＤ開始前クロック制御部３３は、下記式（１８）により、可変調復号開始前予測サイクル数データＩＳＤ２を計算する。
【００５４】
［数１８］
ISD2＝  bIDCTc + bIQc + bDEBc + bMCc + OTHERc
…（１８）
【００５５】
ステップＳＴ２７：
ＶＬＤ開始前クロック制御部３３は、ステップＳＴ２６で計算した可変調復号開始前予測サイクル数データＩＳＤ２を基に、電源６およびＣＰＵ８が、動き予測・補償部２１、逆ＤＣＴ・逆量子化部２２およびデブロックフィルタ２３に対する供給電圧、並びにクロック信号ＣＬＫの周波数を決定する。
具体的には、復号開始前クロック制御部３１は、可変調復号開始前予測サイクル数データＩＳＤ２が示すサイクル数が小さくなるに従って低い周波数となるようにクロック信号ＣＬＫを制御するクロック指定信号ＣＩを生成する。
また、復号開始前クロック制御部３１は、クロック信号ＣＬＫの周波数が低くなるに従って、電源６がＣＰＵ８に供給する電圧を小さくするように電源６を制御する電圧制御信号ＶＩを生成する。
なお、クロック信号ＣＬＫの周波数のレンジに対応した電源６の供給電圧を例えば図６に示すように規定する。
【００５６】
なお、上述した例では、ＶＬＤ開始前クロック制御部３３は、復号処理全体に要するクロック数を予測したが、可変調復号部１３による可変調復号を行う前に要するクロック数を予測してもよい。
【００５７】
［可変調復号部１３およびＶＬＤ後クロック制御部３５］
ビットストリームＥＤ内の符号化データは、各マクロブロックについて例えば図８に示す情報を有し、これらが可変調復号部１３の復号によって図２に示す可変調復号後データ蓄積部１４およびサイクル数推定用パラメータ蓄積部１５に蓄積される。
図８に示すように、１マクロブロックについて、マクロブロック種類ｍｂ＿ｔｙｐｅ、量子化スケールＱ＿ｓｃａｌｅ、サブマクロブロック種類ｓｕｂ＿ｍｂ＿ｔｙｐｅ、参照ピクチャインデックスｒｅｆｐｉｃ＿ｉｎｄｅｘ、動きベクトルＭＶ、符号化ブロックパターンｃｏｄｅｄ＿ｂｌｏｃｋ＿ｐａｔｔｅｒｎ、ＤＣＴブロックの変換係数を有している。
【００５８】
図９および図１０は、図２に示す可変調復号部１３およびＶＬＤ後クロック制御部３５における処理を説明するためのフローチャートである。
ステップＳＴ３１：
可変調復号部１３は、ビットストリームＥＤ内の図８に示すマクロブロック種類ｍｂ＿ｔｙｐｅおよびサブマクロブロック種類ｓｕｂ＿ｍｂ＿ｔｙｐｅを可変調復号処理する。
ステップＳＴ３２：
可変調復号部１３は、量子化スケールＱ＿ｓｃａｌｅを可変調復号処理する。
ステップＳＴ３３：
ＶＬＤ後クロック制御部３５は、可変調復号部１３の復号結果を基に、処理対象のスライスデータ内に含まれるマクロブロックＭＢの数を示すMbnum、スライスデータ内に含まれるイントラマクロブロックＭＢの数を示すintraMBnum、スライスデータ内に含まれるインターマクロブロックＭＢの数を示すinterMBnumを生成する。
ステップＳＴ３４；
ＶＬＤ後クロック制御部３５は、処理対象のスライスデータ内の量子化スケールＱ＿ｓｃａｌｅの平均値avgQscaleを算出する。
ステップＳＴ３５：
ＶＬＤ後クロック制御部３５は、ビットストリームＥＤ内の図８に示す参照ピクチャインデックスｒｅｆｐｉｃ＿ｉｎｄｅｘと動きベクトルＭＶとを可変調復号処理する。
【００５９】
ステップＳＴ３６：
ＶＬＤ後クロック制御部３５は、4x4,8x16等のブロックサイズblock sizeと補間画素位置による演算量タイプの組み合わせ毎のblock数を示すn[block size][calculation type] を生成する。なお、4x8と8x4等は同じblock size=4x8として扱う。
ステップＳＴ３７：
ＶＬＤ後クロック制御部３５は、処理対象のスライスデータ内の動き予測・補償（ＭＣ）の処理単位となるブロック数を示すMCblockNumを生成する。
ステップＳＴ３８：
可変調復号部１３は、ビットストリームＥＤ内の符号化ブロックパターンｃｏｄｅｄ＿ｂｌｏｃｋ＿ｐａｔｔｅｒｎの可変調復号処理を行う。
【００６０】
ステップＳＴ３９：
ＶＬＤ後クロック制御部３５は、符号化ブロックパターンｃｏｄｅｄ＿ｂｌｏｃｋ＿ｐａｔｔｅｒｎを解析し、直流（ＤＣ）係数以外の変換係数が存在するＤＣＴブロック数を示すIDCTblockNumを生成する。
ステップＳＴ４０：
可変調復号部１３は、図８に示すＤＣＴブロックの変換係数の可変調復号処理を行う。
ステップＳＴ４１：
ＶＬＤ後クロック制御部３５は、各ＤＣＴブロックの変換係数を解析し、変換係数がある行列あるいは列を示すIDCTrowNumを生成する。
【００６１】
ステップＳＴ４２，ＳＴ４３：
ＶＬＤ後クロック制御部３５は、下記式（１９）に基づいて、可変調復号後予測サイクル数データＩＳＤ３を生成し、それに基づいてクロック及び電圧を変更する。
【００６２】
［数１９］
ISD3=  vIDCTc + vIQc + vDEBc + vMCc + OTHERc
…（１９）
【００６３】
以下、ＶＬＤ後クロック制御部３５が上記式（１９）に示す右辺の各項を生成する処理を説明する。
［式（１９）のvMCc］
先ず、図２に示す動き予測・補償部２１による動き予測・補償処理について説明する。
ＡＶＣの動き予測・補償処理は、１／４画素精度で行われる。
ここで、整数画素位置に対して１／４精度画素位置は１６箇所あるが、これらは補間の為の演算量に応じて、整数画素位置に対して図１１に示す「１」から「５」の関係にある６種類に分類できる。
そして、動きベクトルＭＶが上記６種類の１／４精度画素位置の何れを指し示すかによって動き予測・補償部２１の処理に要する演算量が異なる。
動き予測・補償部２１は、図１１に示す「１」の横方向の処理を下記式（２０）で計算する。
［数２０］
AD1= Clip(a-5b+20c+20d-5e+f+16>>5)
…（２０）
【００６４】
なお、縦方向の処理は、上記式（２０）のa,b,cをそれぞれh,g,cに置き換えて計算する。
【００６５】
また、動き予測・補償部２１は、「２」の処理を下記式（２１）で計算する。
【００６６】
［数２１］
AD2 = AD1+c+1>>1
…（２１）
【００６７】
ＡＤ２は、ＡＤ１とおおよそ同じである。
【００６８】
また、動き予測・補償部２１は、「３」の処理を下記式（２２）で計算する。
［数２２］
AD3= Clip(hh-5gg+20AD1+20jj-5kk+mm+16>>5)
…（２２）
【００６９】
横方向のフィルタリング処理によって1/2精度位置の画素を求めその画素を使って縦方向のフィルタリング処理を行う必要があるのでＡＤ３はＡＤ１の約２倍である。
【００７０】
また、動き予測・補償部２１は、「４」の処理を下記式（２３）で計算する。
【００７１】
［数２３］
AD4= （AD1（縦）+AD1（横）+1）>>1
…（２３）
【００７２】
ＡＤ４は、ＡＤ１の約２倍である。
【００７３】
また、動き予測・補償部２１は、「５」の処理を下記式（２４）で計算する。
【００７４】
［数２４］
AD5=(AD1+AD3+1)>>1
…（２４）
【００７５】
ＡＤ５は、ＡＤ１の約３倍である。
【００７６】
ＶＬＤ後クロック制御部３５は、下記式（２５）により、動き予測・補償部２１の処理に要する予測クロック数を示すクロック数予測データvMCcを生成する。
【００７７】
［数２５］
vMCc = MCblockNum * MCaddressCost
+ (n[4x4][整数]+n[4x8][整数]*2+n[8x8][整数]*4+n[8x16][整数]*8+n[16x16][整数]*16)*MCnoFilterCost
+ (n[4x4][１]+n[4x8][１]*2+n[8x8][１]*4+n[8x16][１]*8+n[16x16][１]*16)*MCfilterCost1
+ (n[4x4][２]+n[4x8][２]*2+n[8x8][２]*4+n[8x16][２]*8+n[16x16][２]*16)*MCfilterCost2
+ (n[4x4][３]+n[4x8][３]*2+n[8x8][３]*4+n[8x16][３]*8+n[16x16][３]*16)*MCfilterCost3
+ (n[4x4][４]+n[4x8][４]*2+n[8x8][４]*4+n[8x16][４]*8+n[16x16][４]*16)*MCfilterCost4
+ (n[4x4][５]+n[4x8][５]*2+n[8x8][５]*4+n[8x16][５]*8+n[16x16][５]*16)*MCfilterCost5
…（２５）
【００７８】
上記式（２５）において、MCblockNumは1スライス中のMCの処理単位となるblockの数を示し、MCnoFilterCostは整数画素位置の場合の処理サイクル(フィルタ演算は無いので転送等のみ)を示し、MCaddressCostは MCフィルタ処理以外のアドレス計算等のcycle/secを示し、n[block size][calculation type] は4x4,8x16等のblock sizeと補間画素位置による演算量タイプの組み合わせ毎のblock数を示す。
また、MCfilterCost1-5 は、 MCフィルタ処理のcycle/secを演算量タイプ毎に示している。
【００７９】
vMCcは、画像サイズ及び画像レートにより異なり、処理マクロブロック数に比例し、どのピクチャタイプを使うかによって異なる。
また、vMCcは、ＩピクチャはMCなしなので０となる。Bピクチャは両方向予測なのでPピクチャの２倍となる。
また、vMCcは、動きベクトルＭＶの精度によって異なる。
また、vMCcは、ＡＶＣの場合は整数精度なら1/4画素精度に比べて1/15倍となる。
また、vMCcは、ＭＰＥＧ１，２の場合は、１／２画素精度に比べて整数画素精度なら１／３等フォーマットによって異なる。
また、vMCc は、MC block size、並びに補間画素位置（動きベクトルの小数部）によって異なる。
また、動き予測・補償処理の処理量は、図１に示すプログラムＰＲＧ、ＣＰＵ８およびバス９の特性によっても異なる。
【００８０】
［式（１９）のvIDCTc］
ＶＬＤ後クロック制御部３５は、下記式（２６）あるいは（２７）により、図２に示す逆ＤＣＴ・逆量子化部２２の逆ＤＣＴ（ＩＤＣＴ）処理の予測サイクル数であるvIDCTcを計算する。
【００８１】
［数２６］
vIDCTc = IDCTblockNum * blockIDCTcost
…（２６）
【００８２】
［数２７］
vIDCTc = IDCTrowNum * rowIDCTcost
…（２７）
【００８３】
上記式（２６）において、IDCTblockNumはスライス中でDCT係数が存在する4x4block数を示し、blockIDCTcostは1blockのIDCTに必要なcycle/secを示している。
また、上記式（２７）において、IDCTrowNumはスライス中でDCT係数が存在する4x4blockのrow/column数を示し、rowIDCTcostは1rowのIDCTに必要なcycle/secを示している。
ＩＤＣＴ処理は、通常１次元ＩＤＣＴを縦と横とで行うことで実現する。図１に示すＣＰＵ８は、これを実現するときに、変換係数がなければ行/列毎に演算は省かれる。そのため、ＩＤＣＴの演算量は、IDCTrowNumに応じて決まる。
但し、ＣＰＵ８が、ＳＩＭＤ(Sigle Instruction Multi Datastream)型などの並列プロセッサである場合は、行/列毎の分岐を行うことはせず、ブロック単位でのみ演算を省略を行う。この場合には、ＩＤＣＴの演算量は、IDCTblockNumで決まる。
【００８４】
［式（１９）のvIQc］
ＶＬＤ後クロック制御部３５は、下記式（２８）あるいは（２９）により、図２に示す逆ＤＣＴ・逆量子化部２２の逆量子化処理の予測サイクル数であるvIQc を計算する。
【００８５】
［数２８］
vIQc = IDCTblockNum * blockIQcost
…（２８）
【００８６】
［数２９］
vIQc = IDCTrowNum * rowIQcost
…（２９）
【００８７】
上記式（２８）において、IDCTblockNumはスライス中でDCT係数が存在する4x4block数を示し、blockIQcostは1blockのIQに必要なcycle/secを示している。
また、上記式（２９）において、IDCTrowNumはスライス中でDCT係数が存在する4x4blockのrow/column数を示し、rowIQcostは1rowのIQに必要なcycle/secを示している。
逆量子化処理は、ＩＤＣＴ処理と同様、処理単位をblockにするかrowにするかで使用する式が変わる。また逆量子化処理の場合は最小単位としては1係数ごとに演算することも考えられるが、その場合は可変調復号時に非０係数をカウント（IDCTcoefNum）する必要がある。また、ＡＶＣの場合逆量子化処理はＩＤＣＴと同時に処理されることもある。その場合はblockIDCTcostやrowIDCTcostを逆量子化処理を含んだものに変更する。
【００８８】
［式（１９）のvDEBc］
ＶＬＤ後クロック制御部３５は、下記式（３０）により、図２に示すデブロックフィルタ２３のデブロックフィルタ処理の予測サイクル数であるvDEBcを計算する。
【００８９】
［数３０］
vDEBc = DebFLAGcycle + DebFILTERcycle 
…（３０）
【００９０】
ＶＬＤ後クロック制御部３５は、上記式（３０）のDebFLAGcycleを下記式（３１）により計算する。
【００９１】
［数３１］
DebFLAGcycle = IntraMBnum * flagIntraCost + InterMBnum * flagInterCost * flagIDCTcoef
…（３１）
【００９２】
また、ＶＬＤ後クロック制御部３５は、上記式（３１）のflagIDCTcoefを下記式（３２）により計算する。
【００９３】
［数３２］
flagIDCTcoef = IDCTblockNum * flagIDCTeffect
…（３２）
【００９４】
また、ＶＬＤ後クロック制御部３５は、上記式（３０）のDebFILTERcycleを下記式（３３）により計算する。
【００９５】
［数３３］
DebFILTERcycle = (IntraMBnum * filterIntraCost + InterMBnum * max(filterIDCTcoef, filterMCblockCoef)) * filterQscaleCoef
…（３３）
【００９６】
ＶＬＤ後クロック制御部３５は、上記式（３３）のfilterIDCTcoef, filterMCblockCoef,filterQscaleCoefをそれぞれ下記式（３４），（３５），（３６）により計算する。
【００９７】
［数３４］
filterIDCTcoef = IDCTblockNum * filterIDCTeffect
…（３４）
【００９８】
［数３５］
filterMCblockCoef = MCblockNum /  MBnum * filterBlockNumEffect
…（３５）
【００９９】
［数３６］
filterQscaleCoef = avgQscale * filterQscaleEffect
…（３６）
【０１００】
なお、上記式（３１）〜（３６）において、IntraMBnumはスライス中に含まれるイントラＭＢ数を示し、InterMBnumはスライス中に含まれるインターＭＢ数し、flagIntraCostは 1イントラＭＢのフラグ計算に必要なcycle/secを示し、flagInterCostは1インターＭＢのフラグ計算に必要なcycle/secを示し、flagIDCTcoefはDCT係数の存在によるflag計算サイクルへの影響係数であり、IDCTblockNumはスライス中でDCT係数が存在する4x4block数を示し、flagIDCTeffectはIDCTblockNumの変換係数を示し、filterIntraCostは1イントラＭＢのフィルター演算に必要なcycle/secを示し、filterIDCTcoefはDCT係数の存在によるフィルター演算サイクルへの影響係数を示し、filterMBblockCoefは動きベクトルＭＶの異なるblockの存在によるフィルター演算サイクルへの影響係数を示し、MCblockNumはＭＣ単位となるsub blockの数を示し、MBnumはスライス中に含まれるＭＢ数を示し、filterBlockNumEffectはＭＢ数に対するsub block数の比率の変換係数を示し、filterQscaleCoefは量子化スケールの大きさによるフィルター演算サイクルへの影響係数を示し、avgQscaleはスライス中のＭＢＸの平均量子化スケールを示し、filterQscaleEffectは平均量子化スケールの変換係数を示している。
【０１０１】
ところで、デブロックフィルタ２３は、同一フレーム（画像）に属するブロック境界に一様に同じ強さのフィルタ処理を行うのでなく、フィルタ処理を行うべきブロック境界がマクロブロックＭＢ境界であるか当の条件に応じて、どの程度の強さのフィルタ処理を行うかを決定する。
デブロックフィルタ２３は、デブロックフィルタ処理に先立ち画像のブロック境界の郷土を示すＢＳ値を生成し、そのＢＳ値を基にブロックのフィルタ処理を行う。
本実施形態では、デブロックフィルタ２３は、フィルタ演算を全エッジに対して行う場合（ＳＩＭＤ使用時等）は、filterQscaleCoefを使用しない。
デブロックフィルタ処理ではIDCT境界を挟んだ画素を定義したとき、これらの差分値からフィルタをかけるかどうかやその強度を各境界毎に決める仕組みになっている。
【０１０２】
図１に示す復号装置１の全体動作は、図４を用いて前述したように行われる。
【０１０３】
以上説明したように、復号装置１によれば、図３に示すように、符号化データの動き予測・補償、ＩＤＣＴ処理、逆量子化処理およびデブロックフィルタ処理を行う前に、これらに要するクロック数を図２に示すクロック制御部１１において予測し、その予測結果を基に、電源６およびクロック制御回路７を制御する。これにより、図３に示すように、符号化データの復号処理の負荷に応じて、ＣＰＵ８の消費電力を必要最小限に抑え、省電力化を図ることができる。
また、復号装置１によれば、プログラムＰＲＧの記述に基づいてＣＰＵ８が復号処理を行うことから、処理内容を柔軟に変更できる。
【０１０４】
なお、復号装置１の全体処理において、処理内容とそれに要するサイクル数等の関係は図１２および図１３に示される。
【産業上の利用可能性】
【０１０５】
本発明は、符号化データを復号する復号システムに適用可能である。
【図面の簡単な説明】
【０１０６】
【図１】図１は、本発明の実施形態の復号装置の全体構成図である。
【図２】図２は、図１に示すＣＰＵの機能ブロック図である。
【図３】図３は、図２に示すクロック制御部によるクロック信号の周波数、電源電圧制御を説明するための図である。
【図４】図４は、図１および図２に示す復号装置の全体動作を説明するためのフローチャートである。
【図５】図５は、図４に示すステップＳＴ１（復号開始前クロック制御部の処理）を説明するためのフローチャートである。
【図６】図６は、クロック数予測に基づくクロック信号の周波数および電圧制御を説明するための図である。
【図７】図７は、図４に示すステップＳＴ３（ＶＬＤ開始前クロック制御部の処理）を説明するためのフローチャートである。
【図８】図８は、図２に示す可変調復号部による復号された情報を説明するための図である。
【図９】図９は、図４に示すステップＳＴ４，５（可変調復号部およびＶＬＤ後クロック制御部の処理）を説明するためのフローチャートである。
【図１０】図１０は、図９の続きのフローチャートである。
【図１１】図１１は、図２に示す動き予測・補償部の処理を説明するための図である。
【図１２】図１２は、図１に示す復号装置のサイクル数の概要を説明するための図である。
【図１３】図１３は、図１に示す復号装置のサイクル数の概要を説明するための図である。
【符号の説明】
【０１０７】
１…復号装置、３…記録メディア、４…メモリ、５…表示デバイス、６…電源、７…クロック制御回路、８…ＣＰＵ、９…バス、１１…クロック制御部、１３…可変調復号部、１４…可変調復号後データ蓄積部、１５…サイクル数推定用パラメータ蓄積部、２１…動き予測・補償部、２２…Ａ／Ｄ変換回路、２３…デブロックフィルタ、３１…復号開始前クロック制御部、３３…ＶＬＤ開始前クロック制御部、３５…ＶＬＤ後クロック制御部
【図１】
2006222648.tif 000003
【図２】
2006222648.tif 000004
【図３】
2006222648.tif 000005
【図４】
2006222648.tif 000006
【図５】
2006222648.tif 000007
【図６】
2006222648.tif 000008
【図７】
2006222648.tif 000009
【図８】
2006222648.tif 000010
【図９】
2006222648.tif 000011
【図１０】
2006222648.tif 000012
【図１１】
2006222648.tif 000013
【図１２】
2006222648.tif 000014
【図１３】
2006222648.tif 000015