(57)【要約】【課題】高速な復号処理を実現することができるようにする。【解決手段】並列処理パターン決定部２４は、復号リソース管理部２１からのリソースの情報、ビットストリーム情報解析部２２からのビットレート、ピクチャタイプDeblockigフラグの情報、およびCPU状況解析部２３から得られたCPUコアの情報に基づき、複数の並列処理パターンからどのパターンを使用して、復号処理を行うかを決定する。本発明は、例えば、H．264/AVC方式で符号化されたビットストリームを復号する画像復号装置に適用することができる。【選択図】図１
2011160077.tif 000002
【特許請求の範囲】
【請求項１】
符号化されたビットストリームの復号処理を行う復号装置において、
使用可能な演算部の情報を受け取る演算部情報受け取り手段と、
前記ビットストリームから、符号化パラメータを取得する符号化パラメータ取得手段と、
前記演算部情報受け取り手段により受け取られた前記使用可能な演算部の情報および前記符号化パラメータ取得手段により取得された前記符号化パラメータに基づいて、複数の並列処理パターンの中から、シンタックスデコーディングとピクチャコンストラクションを少なくとも含む復号処理を行う際に用いる並列処理パターンを選択するパターン選択手段と、
前記パターン選択手段により選択された前記並列処理パターンを用いて、前記復号処理を行う処理実行手段と
を備える復号装置。
【請求項２】
前記符号化パラメータは、ピクチャタイプ、デブロッキングを行うか否かを示すフラグ、およびビットレートの少なくとも１つの情報である
請求項１に記載の復号装置。
【請求項３】
リソースの情報を受け取るリソース情報受け取り手段をさらに備え、
前記パターン選択手段は、前記リソース情報受け取り手段からの前記リソースの情報にも基づいて、前記並列処理パターンを選択する
請求項２に記載の復号装置。
【請求項４】
符号化されたビットストリームの復号処理を行い、演算部情報受け取り手段と、符号化パラメータ取得手段と、パターン選択手段と、処理実行手段とを備える復号装置の復号方法において、
前記演算部情報受け取り手段が、使用可能な演算部の情報を受け取り、
前記符号化パラメータ取得手段が、前記ビットストリームから、符号化パラメータを取得し、
前記パターン選択手段が、受け取られた前記使用可能な演算部の情報および取得された前記符号化パラメータに基づいて、複数の並列処理パターンの中から、シンタックスデコーディングとピクチャコンストラクションを少なくとも含む復号処理を行う際に用いる並列処理パターンを選択し、
前記処理実行手段が、選択された前記並列処理パターンを用いて、前記復号処理を行う
復号方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は復号装置および方法に関し、特に、複数のCPUコアを使って、高速な復号処理を実現させるようにした復号装置および方法に関する。
【背景技術】
【０００２】
従来より、符号化されたビットストリームを、複数のCPUコアを使って並列にデコードする方法は多数提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２８７４６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
例えば、H．264及びMPEG-4 Part10 （Advanced Video Coding、以下H．264/AVCと記す）で符号化されているビットストリームを複数のCPUコアを使って並列にデコードする場合を考える。この場合も、依存関係を考慮して互いに影響のない処理にできるだけ多く分割して並列に実行した方が、効率よく高速にビットストリームの復号が可能である。しかしながら、現実には、使用可能なCPUコア数は限られており、処理の分割数がCPUコア数よりも大きい場合には、コンテキストスイッチが発生してしまい、そのオーバーヘッドによって逆に効率が悪くなってしまうことがある。
【０００５】
また、H．264/AVCを用いたアプリケーションの例として、BD-ROMやAVC-Intraがあるが、そのユースケースとして高ビットレートで符号化される場合は、１フレームをデコードする全体の負荷のうち、CABAC（Context-Adaptive Binary Arithmetic Coding）やCAVLC（Context-Adaptive Variable Length Coding）の負荷が支配的になり、並列処理の効率が悪くなってしまうことがある。
【０００６】
さらに、ビットストリームによってあるフレーム枚数中のReference PictureとNon Reference Pictureのフレーム数の構成が異なるので、復号する装置としては、それらを考慮した並列処理を行うことも必要である。
【０００７】
本発明は、このような状況に鑑みてなされたものであり、複数のCPUコアを使って、高速な復号処理を実現させるものである。
【課題を解決するための手段】
【０００８】
本発明の一の側面の復号装置は、符号化されたビットストリームの復号処理を行う復号装置において、使用可能な演算部の情報を受け取る演算部情報受け取り手段と、前記ビットストリームから、符号化パラメータを取得する符号化パラメータ取得手段と、前記演算部情報受け取り手段により受け取られた前記使用可能な演算部の情報および前記符号化パラメータ取得手段により取得された前記符号化パラメータに基づいて、複数の並列処理パターンの中から、シンタックスデコーディングとピクチャコンストラクションを少なくとも含む復号処理を行う際に用いる並列処理パターンを選択するパターン選択手段と、前記パターン選択手段により選択された前記並列処理パターンを用いて、前記復号処理を行う処理実行手段とを備える。
【０００９】
前記符号化パラメータは、ピクチャタイプ、デブロッキングを行うか否かを示すフラグ、およびビットレートの少なくとも１つの情報である。
【００１０】
リソースの情報を受け取るリソース情報受け取り手段をさらに備え、前記パターン選択手段は、前記リソース情報受け取り手段からの前記リソースの情報にも基づいて、前記並列処理パターンを選択することができる。
【００１１】
本発明の一側面の復号方法は、符号化されたビットストリームの復号処理を行い、演算部情報受け取り手段と、符号化パラメータ取得手段と、パターン選択手段と、処理実行手段とを備える復号装置の復号方法において、前記演算部情報受け取り手段が、使用可能な演算部の情報を受け取り、前記符号化パラメータ取得手段が、前記ビットストリームから、符号化パラメータを取得し、前記パターン選択手段が、受け取られた前記使用可能な演算部の情報および取得された前記符号化パラメータに基づいて、複数の並列処理パターンの中から、シンタックスデコーディングとピクチャコンストラクションを少なくとも含む復号処理を行う際に用いる並列処理パターンを選択し、前記処理実行手段が、選択された前記並列処理パターンを用いて、前記復号処理を行う。
【００１２】
本発明の一側面においては、使用可能な演算部の情報が受け取られ、ビットストリームから、符号化パラメータが取得される。そして、受け取られた前記使用可能な演算部の情報および取得された前記符号化パラメータに基づいて、複数の並列処理パターンの中から、シンタックスデコーディングとピクチャコンストラクションを少なくとも含む復号処理を行う際に用いる並列処理パターンが選択され、選択された前記並列処理パターンを用いて、前記復号処理が行われる。
【００１３】
なお、上述の復号装置は、独立した装置であっても良いし、１つの復号装置を構成している内部ブロックであってもよい。
【発明の効果】
【００１４】
本発明の一側面によれば、符号化されたビットストリームを複数の演算部を使って並列処理で復号することができる。また、本発明の一側面によれば、高速な復号処理を実現することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明を適用した画像復号装置の一実施の形態の構成を示すブロック図である。
【図２】Deblockingが必要な場合の並列処理パターンの例を示す図である。
【図３】Deblockingが必要な場合の並列処理パターンの他の例を示す図である。
【図４】Deblockingが必要な場合の並列処理パターンのさらに他の例を示す図である。
【図５】Deblockingが必要な場合の並列処理パターンの他の例を示す図である。
【図６】Deblockingが不必要な場合の並列処理パターンの例を示す図である。
【図７】Deblockingが不必要な場合の並列処理パターンの他の例を示す図である。
【図８】図１の画像復号装置の復号処理を説明するフローチャートである。
【図９】図８のステップＳ１４の並列処理パターン決定処理を説明するフローチャートである。
【図１０】並列処理パターン選択テーブルの例を示す図である。
【図１１】並列処理パターン選択テーブルの他の例を示す図である。
【図１２】コンピュータのハードウエアの構成例を示すブロック図である。
【図１３】情報処理システムのハードウエアの構成例を示すブロック図である。
【図１４】サブCPUコアの構成例を示すブロック図である。
【発明を実施するための形態】
【００１６】
以下、図を参照して本発明の実施の形態について説明する。
【００１７】
［画像復号装置の構成例］
図１は、本発明を適用した画像復号装置の一実施の形態の構成を表している。
【００１８】
この画像復号装置１１は、複数のCPUコア（演算部）のうち、少なくとも１つのCPUコアを用いて、例えば、H．264及びMPEG-4 Part10（Advanced Video Coding）（以下H．264/AVCと記す）方式で符号化されたビットストリームを復号する。
【００１９】
図１の例において、画像復号装置１１は、復号リソース管理部２１、ビットストリーム情報解析部２２、CPU状況解析部２３、並列処理パターン決定部２４、および並列処理実行部２５により構成される。
【００２０】
符号化されたビットストリームは、ビットストリーム情報解析部２２に入力される。
【００２１】
復号リソース管理部２１は、画像復号装置１１に入力されたビットストリームを復号するために必要なメモリなどのリソースがあと何フレーム分残っているのかの数(Nr)を並列処理パターン決定部２４に供給する。ここで、リソースの数（Nr）としては、例えば、復号する際の参照フレームを保存しておく参照フレームメモリの枚数、復号した後のベースバンドの信号を保存しておくためのフレームメモリの枚数などがあげられる。なお、枚数ではなく、メモリ容量やメモリサイズであってもよい。
【００２２】
ビットストリーム情報解析部２２は、入力されたビットストリームを並列処理パターン決定部２４に出力するとともに、そのビットストリームから得られた情報を、並列処理パターン決定部２４に供給する。
【００２３】
ビットストリームから得られた情報とは、ビットストリームに付加されている符号化パラメータのことである。この情報には、入力されたビットストリームのサイズから計算したビットレート、ビットストリームのNon VCL(Video Coding Layer)部分を復号して得られたピクチャタイプ、およびDeblockingを行うか否かを示すフラグが含まれる。なお、ビットストリーム情報解析部２２は、並列処理パターン決定部２４からの前フレームのビットレートも用いて、入力されたビットストリームのサイズから計算したビットレートを再計算することで、より正確なビットレートを得ることができる。
【００２４】
ここで、ピクチャタイプとは、他のスライスから参照されるReference pictureであるか、参照されないNon Reference pictureであるかを表す。また、Deblockingを行うか否かを示すフラグは、ビットストリームからのみに限らず、例えば、画像復号装置１１を使用するアプリケーションから指定されることもある。
【００２５】
CPU状況解析部２３は、複数のCPUコアのうち、画像復号装置１１に入力されたビットストリームの復号に使用可能なCPUコアの数(Nc)を並列処理パターン決定部２４に供給する。
【００２６】
並列処理パターン決定部２４は、ビットストリーム情報解析部２２から入力されたビットストリームの復号の際に用いられる並列処理パターンを選択する。すなわち、並列処理パターン決定部２４は、復号リソース管理部２１、ビットストリーム情報解析部２２、およびCPU状況解析部２３から得られた情報に基づいて、複数の並列処理パターンからどのパターンを使用して、復号処理を行うかを決定する。
【００２７】
並列処理パターン決定部２４は、ビットストリームを並列処理実行部２５に出力するとともに、決めた並列処理パターンの情報を並列処理実行部２５に供給する。また、並列処理パターン決定部２４は、現在のフレームのビットレートの情報を、ビットストリーム情報解析部２２にフィードバックする。
【００２８】
並列処理実行部２５は、並列処理パターン決定部２４により決定された並列処理パターンを用いて、並列処理パターン決定部２４からのビットストリームの復号処理を行い、復号データを生成する。
【００２９】
なお、この画像復号装置１１においては、並列処理実行部２５があるビットストリームの復号を実行中に、そのビットストリームに続く複数のビットストリームの入力を受け付けて、それらの復号を並列に行うことが可能である。並列処理パターンは、ある１つのスライスを復号するための方法であるが、画像復号装置１１においては、あるフレーム内の複数のスライスをそれぞれに適した並列処理パターンを選択して並列に復号することが可能である。また、画像復号装置１１においては、あるフレームのスライスと別のフレームのスライスも依存関係を考慮すれば、並列で復号することも可能である。後者の並列を、フレーム並列と定義する。高速に復号するためには、このフレーム並列を効果的に使用することが重要になる。
【００３０】
次に、図２乃至図７を参照して、並列処理パターンの例を説明する。
【００３１】
図２乃至図７の例において、Syntax Decodingとは、ビットストリームのVCL部分において、CABAC（Context-Adaptive Binary Arithmetic Coding）やCAVLC（Context-Adaptive Variable Length Coding）などで符号化されたシンタックス部分の復号を行うモジュールである。Picture Constructionとは、復号されたシンタックスをもとに、Scaling、Transformation、Intra/Interの予測補償を行い、画素の復号を行うモジュールである。Deblockingとは、復号されたシンタックスと画像情報をもとに、ブロック歪みの除去を行うモジュールである。
【００３２】
それぞれの復号は、複数の画素から構成されるブロック単位で行われる。各モジュール間には依存関係がある。例えば、Picture Constructionをあるブロックに対して行う場合には、そのブロックと隣接するブロックのSyntax Decodingが終了している必要がある。また、Deblockingをあるブロックに対して行う場合には、そのブロックと隣接しているブロックのPicture Constructionが終了している必要がある。
【００３３】
図２乃至図７において、括弧内に示されるCPUの番号(N=0,1,2)は、それぞれのモジュールが実行されるCPUのIDを示しており、各モジュールがどのように並列に実行されるかを表している。
【００３４】
まず、図２乃至図５に示される並列処理パターンＡ乃至Ｄは、Deblockingが必要な場合に選択される処理パターンである。
【００３５】
図２に示される並列処理パターンＡは、並列処理を行わないパターンである。例えば、並列処理パターンＡにおいては、並列処理を行わず、１つのCPU0において、各モジュール(Syntax Decoding、Picture Construction、Deblocking)が順番に実行される。
【００３６】
図３に示される並列処理パターンＢは、Picture Constructionと、Deblockingが並行に実行されるパターンである。例えば、並列処理パターンＢにおいては、Syntax Decoding、Picture Constructionが順にCPU0で実行され、DeblockingがCPU1で実行される。
【００３７】
なお、Picture Constructionと、Deblockingが並行に実行されるパターンとしては、図３の例に限らず、例えば、Syntax DecodingがCPU0で実行された後、並列に、Picture ConstructionがCPU1で実行され、DeblockingがCPU0で実行されるようにしてもよい。このことは、以下の図４乃至図７でも同様に言えることである。
【００３８】
図４に示される並列処理パターンＣは、Syntax DecodingとPicture Constructionが並行に実行されるパターンである。例えば、並列処理パターンＣにおいては、並列に、Syntax DecodingがCPU0で実行され、ConstructionがCPU1で実行され、その後に、DeblockingがCPU1で実行される。
【００３９】
図５に示される並列処理パターンＤは、Syntax Decoding、Picture Construction、およびDeblockingの３つのモジュールが並列に実行されるパターンである。例えば、並列処理パターンＤにおいては、並列に、Syntax DecodingがCPU0で実行され、ConstructionがCPU1で実行され、DeblockingがCPU2で実行される。
【００４０】
仮に、Syntax Decoding、Picture Construction、およびDeblockingの負荷が同じであると仮定すると、並列処理パターンＡ乃至Ｄの中では、並列処理パターンＤが最も高速に復号処理が可能である。しかしながら、実際には、モジュール毎の負荷の違いがあり、さらに、モジュール間の依存関係も存在する。
【００４１】
したがって、並列処理パターンＢ，Ｃ，Ｄを用いて並列に復号処理を行っても、あるモジュールは依存するモジュールのブロックの処理が終了するのを待っている状態があり得る。そのような場合は、上述したフレーム並列を使って、待ち状態のCPUで、他のスライスの復号を行うようにすれば、全体として、高速な復号が実現可能である。
【００４２】
次に、図６および図７に示される並列処理パターンＥおよびＦは、Deblockingが不必要な場合に選択される処理パターンである。
【００４３】
図６に示される並列処理パターンＥは、並列処理を行わないパターンである。例えば、並列処理パターンＥにおいては、並列処理を行わず、１つのCPU0において、各モジュール(Syntax Decoding、Picture Construction)が順番に実行される。
【００４４】
図７に示される並列処理パターンＦは、Syntax DecodingとPicture Constructionが並行に実行されるパターンである。例えば、並列処理パターンＦにおいては、並列に、Syntax DecodingがCPU0で実行され、ConstructionがCPU1で実行される。
【００４５】
ここで、いくつのモジュールが並列に実行されるかの数をモジュール並列数と定義すると、並列処理パターンＡおよびＥのモジュール並列数は１、並列処理パターンＢ，Ｃ，Ｆのモジュール並列数は２、並列処理パターンＣのモジュール並列数は３となる。
【００４６】
次に、図８のフローチャートを参照して、図１の画像復号装置１１の復号処理について説明する。
【００４７】
ビットストリーム情報解析部２２に符号化されたビットストリームが入力される。ステップＳ１１において、復号リソース管理部２１は、画像復号装置１１に入力されたビットストリームを復号するために必要なメモリなどのリソース数(Nr)を取得し（受け取り）、並列処理パターン決定部２４に供給する。
【００４８】
ステップＳ１２において、ビットストリーム情報解析部２２は、入力されたビットストリームを並列処理パターン決定部２４に出力し、そのビットストリームから、ビットストリームから得られる情報である符号化パラメータを取得し、並列処理パターン決定部２４に供給する。
【００４９】
すなわち、ビットストリーム情報解析部２２は、入力されたビットストリームのサイズや並列処理パターン決定部２４からフィードバックされた前フレームのビットレートなどを基に計算することで、ビットレートの情報を取得する。また、ビットストリーム情報解析部２２は、ビットストリームのNon VCL部分を復号して、ピクチャタイプ、およびDeblockingを行うか否かを示すフラグを取得する。
【００５０】
ステップＳ１３において、CPU状況解析部２３は、CPUの情報を取得する。すなわち、CPU状況解析部２３は、複数のCPUコアのうち、画像復号装置１１に入力されたビットストリームの復号に使用可能なCPUコアの数(Nc)を取得し（受け取り）、並列処理パターン決定部２４に供給する。
【００５１】
ステップＳ１４において、並列処理パターン決定部２４は、上述した図２乃至図７に示された複数の並列処理パターンの中から、並列処理パターン決定部２４から入力されたビットストリームの復号の際に用いられる並列処理パターンの決定処理を行う。この処理の詳細は、図９を参照して後述する。
【００５２】
ステップＳ１４の処理によりビットストリーム情報解析部２２から入力されたビットストリームの復号の際に用いられる並列処理パターンが決定される。これに対応して、ステップＳ１５において、並列処理実行部２５は、並列処理パターン決定部２４により決定された並列処理パターンを用いて、並列処理パターン決定部２４からのビットストリームの復号処理を行う。
【００５３】
すなわち、並列処理実行部２５は、決定された並列処理パターンの並列処理ができるように、複数のCPUコアに、対応するモジュール(Syntax Decoding、Picture Construction、Deblocking)を実行させることで、復号処理を行い、復号データを生成する。
【００５４】
次に、図９のフローチャートを参照して、並列処理パターン決定部２４による図８のステップＳ１４の並列処理パターン決定処理を説明する。
【００５５】
ステップＳ３１において、並列処理パターン決定部２４は、復号リソース管理部２１からの入力されたビットストリームを復号するリソース数（Nr）が０より大きいか否かを判定する。ステップＳ３１において、リソース数（Nr）が０より大きいと判定された場合、処理は、ステップＳ３２に進む。
【００５６】
ステップＳ３２において、並列処理パターン決定部２４は、CPU状況解析部２３からの入力されたビットストリームを復号するためのCPUコア数(Nc)が０より大きいか否かを判定する。ステップＳ３２において、CPUコア数(Nc)が０より大きいと判定された場合、処理は、ステップＳ３３に進む。
【００５７】
ステップＳ３３において、並列処理パターン決定部２４は、ビットストリーム情報解析部２２からのDeblockingを行うか否かを示すフラグに基づいて、Deblockingが必要であるか否かを判定する。ステップＳ３３において、Deblockingが必要であると判定された場合、処理は、ステップＳ３４に進む。
【００５８】
ステップＳ３４において、並列処理パターン決定部２４は、Nr,Nc,ビットストリームの情報を用いて、後述する図１０の並列処理パターン選択テーブルＡから、復号処理に用いる並列処理パターンを決定する。この決定処理の詳細は、図１０を参照して後述する。
【００５９】
また、ステップＳ３３において、Deblockingが不必要であると判定された場合、処理は、ステップＳ３５に進む。
【００６０】
ステップＳ３５において、並列処理パターン決定部２４は、Nr,Nc,ビットストリームの情報を用いて、後述する図１１の並列処理パターン選択テーブルＢから、復号処理に用いる並列処理パターンを決定する。この決定処理の詳細は、図１１を参照して後述する。
【００６１】
一方、ステップＳ３１において、リソース数（Nr）が０であると判定された場合、処理は、ステップＳ３６に進む。また、ステップＳ３２において、CPUコア数(Nc)が０であると判定された場合も、処理は、ステップＳ３６に進む。
【００６２】
ステップＳ３６において、並列処理パターン決定部２４は、入力されたビットストリームの復号が不可能であることを、例えば、画像復号装置１１の図示せぬ表示部やビットストリームを入力した装置に通知する。
【００６３】
図１０は、図９のステップＳ３４において参照される並列処理パターン選択テーブルＡの例を示している。なお、図１０の例において、*は、その項目がどのような値でも並列処理パターンの選択には影響がないことを示している。
【００６４】
並列処理パターン選択テーブルＡにおいては、ビットストリームを復号するリソース数Nr, ビットストリームを復号するためのCPUコア数Nc,ピクチャタイプ、ビットレートが閾値より高いか否かの情報を基に並列処理パターンが選択される。
【００６５】
ここで、ピクチャタイプは、ReferenceもしくはNon Referenceのどちらかを指すが、I(Intra)スライスと、P(Predictive)スライスのピクチャタイプは、Referenceで、B(Bi-Predictive)スライスのピクチャタイプは、Non Referenceである。
【００６６】
ピクチャタイプがReferenceのものについては、他のスライスから参照されるので可能な限り高速に復号しておくことが必要である。ただし、使用可能なCPUコア数が十分にある場合でもモジュール並列数を少なくし、使用するCPUコア数を少なくすることで、なるべく続くビットストリームは、フレーム並列で復号される。
【００６７】
他方、ピクチャタイプがNon Referenceのものについては、ビットストリームが入力されてから復号データを出力するまでの時間を短くするため、ビットストリームは、使用可能なCPUコア数に応じて可能な限り高速に復号される。
【００６８】
ビットレートについては、ある閾値より高いか否かで並列処理パターンが選択される。ビットレートが閾値より高い場合は、Syntax Decodingの負荷がPicture ConstructionやDeblockingの負荷よりも大きいと予想されるので、Picture ConstructionとDeblockingモジュールを並列で処理するパターンＢが選択される。これに対して、ビットレートが閾値より低い場合は、Syntax DecodingとPicture Constructionモジュールを並列で処理するパターンＣが選択される。
【００６９】
順に、図１０の並列処理パターン選択テーブルＡの各ケースの場合について説明する。すなわち、ここでは、図９のステップＳ３４で行われる並列処理パターンの決定方法が説明される。
【００７０】
ケース１の場合、Ncが１のとき、使用可能なCPUコア数が１しかないので、Nr,ピクチャタイプ、ビットレートによらず、パターンＡが選択される。
【００７１】
ケース２の場合、Nrが１のとき、その次のスライスが入力されてもそのスライスが新しいフレームであればリソースが足りないためにフレーム並列をすることができない。そこで、Ncが２であるので、モジュール並列数が２であるパターンＢとパターンＣが選択可能であるが、ビットレートが閾値より高いため、パターンＢが選択される。
【００７２】
ケース３の場合、上述したケース２の場合とビットレート以外は同様であるが、ビットレートが閾値より低いため、パターンＣが選択される。
【００７３】
ケース４の場合、Nrが２以上であるのでその次のスライスをフレーム並列にすることが可能である。Ncが２であるので、モジュール並列数が１であるパターンＡを選択することで、次のスライスのため、使用可能なCPUコアを余らせておく。
【００７４】
ケース５の場合、ピクチャタイプがNon Referenceであり、Ncが２であるので、モジュール並列数が２であるパターンＢとパターンＣが選択可能であるが、ビットレートが閾値より高いため、パターンＢが選択される。
【００７５】
ケース６の場合、上述したケース５の場合とビットレート以外は同様であるが、ビットレートが閾値より低いため、パターンＣが選択される。
【００７６】
ケース７の場合、ケース２，３と同様に、Nrが１では、その次のスライスが入力されてもそのスライスが新しいフレームであれば、リソースが足りないためにフレーム並列を行うことができない。そこで、Ncが３以上であるので、モジュール並列数３であるパターンＤが選択される。
【００７７】
ケース８の場合、Nrが２以上であるのでその次のスライスをフレーム並列することが可能である。Ncが３であるが、モジュール並列数が２で、ビットレートが閾値より高いときのパターンＢを選択することにより、次のスライスのため、使用可能なCPUコアを余らせておく。
【００７８】
ケース９の場合、上述したケース８の場合とビットレート以外は同様であるが、ビットレートが閾値より低いため、パターンＣが選択される。
【００７９】
ケース１０の場合、Ncが３であり、ピクチャタイプがNon Referenceであるので、パターンＤが選択される。
【００８０】
ケース１１の場合、Ncが４以上であるので、Nr,ピクチャタイプ、ビットレートによらず、常にパターンＤが選択される。
【００８１】
図１１は、図９のステップＳ３５において参照される並列処理パターン選択テーブルＢの例を示している。
【００８２】
並列処理パターン選択テーブルＢにおいては、Nc,Nr,ピクチャタイプの情報を基に並列処理パターンが選択される。なお、図１１の例において、*およびピクチャタイプについては、図１０の例と同様である。
【００８３】
順に、図１１の並列処理パターン選択テーブルＢの各ケースの場合について説明する。すなわち、ここでは、図９のステップＳ３５で行われる並列処理パターンの決定方法が説明される。
【００８４】
ケース１０１の場合、Ncが１のとき、使用可能なCPUコア数が１しかないので、Nr,ピクチャタイプによらず、パターンＥが選択される。
【００８５】
ケース１０２の場合、Nrが１のとき、その次のスライスが入力されてもそのスライスが新しいフレームであればリソースが足りないためにフレーム並列をすることができない。そこで、Ncが２であるので、モジュール並列数が２であるパターンＦが選択される。
【００８６】
ケース１０３の場合、Nrが２以上であるのでその次のスライスをフレーム並列することが可能である。Ncも２以上であるので、モジュール並列数が１であるパターンＥを選択することで、次のスライスのため、使用可能なCPUコアを余らせておく。
【００８７】
ケース１０４の場合、Ncが２以上でピクチャタイプがNon ReferenceであるのでパターンＦが選択される。
【００８８】
以上のように、CPUとビットストリームの情報を用いて並列処理のパターン（方法）を切り替えるようにしたので、限られたCPUコア数でもビットレートやフレーム構成によらない高速なデコードを実現することができる。
【００８９】
なお、上記説明においては、復号処理に用いられるプロセッサコア（演算部）の一例として、CPUコアを用いて説明したが、プロセッサコアとしては、CPUに限定されることなく、例えば、GPU(Graphics Processing Unit)や、他のプロセッサのコアであってもよい。また、後述するように、画像復号装置１１がソフトウェアで実装される場合には、スレッドなどであってもよい。
【００９０】
以上においては、符号化方式としてH．264/AVC方式を用いるようにしたが、本発明はこれに限らず、その他の符号化方式／復号方式を適用することができる。
【００９１】
なお、本発明は、例えば、MPEG、H．26x等の様に、離散コサイン変換等の直交変換と動き補償によって圧縮された画像情報（ビットストリーム）を、衛星放送、ケーブルテレビジョン、インターネット、または携帯電話機などのネットワークメディアを介して受信する際に用いられる画像符号化装置および画像復号装置に適用することができる。また、本発明は、光、磁気ディスク、およびフラッシュメモリのような記憶メディア上で処理する際に用いられる画像符号化装置および画像復号装置に適用することができる。さらに、本発明は、それらの画像符号化装置および画像復号装置などに含まれる動き予測補償装置にも適用することができる。
【００９２】
上述した一連の処理は、上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な汎用のパーソナルコンピュータなどが含まれる。
【００９３】
次に、上述した一連の処理を行う、ソフトウェアデコーダに割り当てられるハードウェア資源の例について説明する。例えば、次のようなパーソナルコンピュータや情報処理システムにより実現される。
【００９４】
［パーソナルコンピュータの構成例］
図１２は、パーソナルコンピュータの構成例を示すブロック図である。
【００９５】
図１２において、パーソナルコンピュータ１００のCPU１０１−１、CPU１０１−２、CPU１０１−３、およびCPU１０１−４は、それぞれ、ソフトウェアプログラムに従って各種の処理を実行する演算処理部(CPUコア)である。以下において、CPU１０１−１乃至CPU１０１−４を互いに区別して説明する必要の無い場合、CPU１０１と称する。CPU１０１は、共有バスであるバス１０４を介してROM（Read Only Memory）１０２およびRAM（Random Access Memory）１０３と相互に接続されている。ROM１０２には予めソフトウェアプログラムやデータが格納されている。RAM１０３には、ROM１０２や記憶部１２３に格納されているソフトウェアプログラムやデータがロードされる。
【００９６】
CPU１０１−１にはキャッシュメモリ１１１−１が内蔵され、CPU１０１−２にはキャッシュメモリ１１１−２が内蔵され、CPU１０１−３にはキャッシュメモリ１１１−３が内蔵され、CPU１０１−４にはキャッシュメモリ１１１−４が内蔵される。以下において、キャッシュメモリ１１１−１乃至キャッシュメモリ１１１−４を互いに区別して説明する必要の無い場合、キャッシュメモリ１１１と称する。
【００９７】
キャッシュメモリ１１１は、例えばSRAM（Static Random Access Memory）のような、高速で動作する記憶媒体であり、そのキャッシュメモリ１１１を内蔵するCPU１０１により独占的に使用される。このキャッシュメモリ１１１は、記憶容量辺りの単価が高く、また、CPU１０１に内蔵されるため、キャッシュメモリ１１１の記憶容量を増大させるとCPU１０１の回路規模も増大してしまう。そこでコストの低減や回路規模の増大を抑制するために、キャッシュメモリ１１１の記憶容量は、一般的に、例えば数百キロバイト乃至数メガバイト程度と、数百メガバイト乃至数ギガバイト程度の記憶容量を有する、CPU１０１の外部に設けられたRAM１０３よりも小容量に抑えられている。
【００９８】
もちろん、キャッシュメモリ１１１としてどのようなメモリを用いるようにし、また、その記憶容量をどの程度にするようにしてもよいが、ここでは、キャッシュメモリ１１１が、そのキャッシュメモリ１１１を内蔵するCPU１０１により独占的に使用され、RAM１０３より高速にデータの読み出しや書き込みが可能であるものの、その記憶容量がRAM１０３より小容量であり、格納可能な情報量に制限がある記憶媒体であるものとする。
【００９９】
このキャッシュメモリ１１１に対して、RAM１０３は、CPU１０１−１乃至CPU１０１−４等により共有され、キャッシュメモリ１１１よりもデータの読み出しや書き込みが低速であり、かつ、キャッシュメモリ１１１より大容量であるものとする。なお、もちろん、実際にはRAM１０３の記憶容量も有限であるが、以下においては、説明の便宜上、RAM１０３の記憶容量は、上述した符号化処理や復号処理に必要な容量に対して十分に大きく、その容量の制限については特に考慮しないものとする。
【０１００】
つまり、キャッシュメモリ１１１は、高速でプログラムやデータの入出力が可能であるが、容量に制限があるので、ソフトウェアエンコーダやソフトウェアデコーダの全てのソフトウェアプログラムやデータを格納することが困難であることもある。これに対して、RAM１０３は、任意のソフトウェアプログラムやデータを格納可能であるが、それらの入出力が低速である。
【０１０１】
CPU１０１は、自分自身に内蔵されるキャッシュメモリ１１１またはRAM１０３にソフトウェアプログラムやデータをロードし、それらを用いて符号化や復号の各種処理を行う。
【０１０２】
CPUの使用方法は任意であるが、例えば、１個のCPU１０１−１が、図１の画像復号装置１１と同様に、上述した画像復号処理の制御に関する処理を行い、３個のCPU１０１−２乃至CPU１０１−４に、Syntax Decoding、Picture Construction、およびDeblocking等の各処理を、例えば図１０または図１１の並列処理パターン選択テーブルＡ，Ｂを用いて決定された並行処理パターンで実行させるようにしてもよい。これにより、復号処理の効率を向上させ、処理全体の遅延時間を短縮させ、さらに、負荷、処理時間、および、処理に必要なメモリ容量を低減させることができる。
【０１０３】
バス１０４にはまた、入出力インタフェース１２０も接続されている。入出力インタフェース１２０には、入力部１２１、出力部１２２、記憶部１２３、モデムなどより構成される通信部１２４が接続されている。入力部１２１は、キーボード、マウスなどよりなる。出力部１２２は、CRT（Cathode Ray Tube）、LCD（Liquid Crystal Display）などよりなるディスプレイ、並びにスピーカなどよりなる。記憶部１２３は、ハードディスクなどより構成される。通信部１２４は、インターネットを含むネットワークを介しての通信処理を行う。
【０１０４】
入出力インタフェース１２０にはまた、必要に応じてドライブ１２５が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア１３１が適宜装着される。そして、それらから読み出されたソフトウェアプログラムが、必要に応じて記憶部１２３にインストールされる。なお、ソフトウェアプログラムは、ネットワークを介して通信部１２４よりインストールすることも可能である。
【０１０５】
なお、図１２においては、パーソナルコンピュータ１００に、CPU１０１が４つ設けられているように説明したが、CPU１０１の数は任意である。ただし、後述するソフトウェアエンコーダやソフトウェアデコーダの実装方法によっては、CPU１０１の最小数に制限がある場合もあり、例えば、CPU１０１が２つ必要な場合や、４つ必要な場合もある。また、このCPU１０１−１乃至CPU１０１−４が、４つのコアを有する物理的には１つのCPU１０１であるものとしてもよい。その場合、各CPUコア（CPU１０１−１乃至CPU１０１−４）にキャッシュメモリ１１１−１乃至キャッシュメモリ１１１−４が設けられているものとしてもよい。また、各CPUコアが共有する唯一のキャッシュメモリ１１１の、各CPUコアに割り当てられたキャッシュメモリ１１１の部分領域がキャッシュメモリ１１１−１乃至キャッシュメモリ１１１−４であるとしてもよい。
【０１０６】
［情報処理システムの構成例］
図１３は、情報処理システムのハードウエアの構成例を示すブロック図である。
【０１０７】
図１３に示されるように、情報処理システム３００は、情報処理装置３０１、その情報処理装置３０１とPCIバス３０２によって接続された、記憶装置３０３、複数台のビデオテープレコーダ（VTR）であるVTR３０４−１乃至VTR３０４−Ｓ、ユーザがこれらに対する操作入力を行うためのマウス３０５、キーボード３０６、並びに操作コントローラ３０７により構成されるシステムであり、インストールされたプログラムによって、画像符号化処理や、上述したような画像復号処理等を行うシステムである。
【０１０８】
例えば情報処理システム３００の情報処理装置３０１は、RAID（Redundant Arrays of Independent Disks）でなる大容量の記憶装置３０３に記憶されている動画コンテンツを符号化して得られた符号化データを記憶装置３０３に記憶させたりすることができる。また、情報処理装置３０１は、記憶装置３０３に記憶されている符号化データを復号して得られた復号画像データ（動画コンテンツ）を記憶装置３０３に記憶させたり、符号化データや復号画像データをVTR３０４−１乃至VTR３０４−Ｓを介してビデオテープに記録したりすることができる。さらに、情報処理装置３０１は、VTR３０４−１乃至VTR３０４−Ｓに装着されたビデオテープに記録された動画コンテンツを記憶装置３０３に取り込み得るようにもなされている。その際、情報処理装置３０１が、動画コンテンツを符号化するようにしてもよい。
【０１０９】
情報処理装置３０１は、マイクロプロセッサ４０１、GPU（Graphics Processing Unit）４０２、XDR（Extreme Data Rate）-RAM４０３、サウスブリッジ４０４、HDD（Hard Disk Drive）４０５、USBインタフェース（USB I/F）４０６、およびサウンド入出力コーデック４０７を有している。
【０１１０】
GPU４０２は専用のバス４１１を介してマイクロプロセッサ４０１に接続される。XDR-RAM４０３は専用のバス４１２を介してマイクロプロセッサ４０１に接続される。サウスブリッジ４０４は、専用のバスを介してマイクロプロセッサ４０１のI/Oコントローラ４４４に接続される。このサウスブリッジ４０４には、HDD４０５、USBインタフェース４０６、および、サウンド入出力コーデック４０７も接続されている。このサウンド入出力コーデック４０７にはスピーカ４２１が接続されている。また、GPU４０２にはディスプレイ４２２が接続されている。
【０１１１】
またサウスブリッジ４０４には、さらに、PCIバス３０２を介して、マウス３０５、キーボード３０６、VTR３０４−１乃至VTR３０４−Ｓ、記憶装置３０３、並びに、操作コントローラ３０７が接続されている。
【０１１２】
マウス３０５およびキーボード３０６は、ユーザの操作入力を受け、PCIバス３０２およびサウスブリッジ４０４を介して、ユーザの操作入力の内容を示す信号を、マイクロプロセッサ４０１に供給する。記憶装置３０３およびVTR３０４−１乃至VTR３０４−Ｓは、所定のデータを記録または再生できるようになされている。
【０１１３】
PCIバス３０２にはさらに、必要に応じてドライブ３０８が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア３１１が適宜装着される。そして、それらから読み出されたコンピュータプログラムが、必要に応じてHDD４０５にインストールされる。
【０１１４】
マイクロプロセッサ４０１は、メインCPUコア４４１と、サブCPUコア４４２−１乃至サブCPUコア４４２−８と、メモリコントローラ４４３と、I/O（In/Out）コントローラ４４４とが１チップに集積されたマルチコア構成でなり、例えば動作周波数４[GHz]を実現している。メインCPUコア４４１は、OS（Operating System）等の基本プログラムを実行する汎用のCPUコアである。サブCPUコア４４２−１乃至サブCPUコア４４２−８は、メインCPUコア４４１に共有バス４４５を介して接続された複数（この場合８個）のRISC（Reduced Instruction Set Computer）タイプの信号処理プロセッサである。メモリコントローラ４４３は、例えば２５６[MByte]の容量を持つXDR-RAM４０３に対するメモリコントロールを行う。I/Oコントローラ４４４は、サウスブリッジ４０４との間でデータの入出力を管理する
【０１１５】
このマイクロプロセッサ４０１は、起動時、HDD４０５に格納された制御プログラムに基づき、HDD４０５に格納されている必要なアプリケーションプログラムを読み出してXDR-RAM４０３に展開する。そして、マイクロプロセッサ４０１は、この後このアプリケーションプログラム及びオペレータ操作に基づいて必要な制御処理を実行する。
【０１１６】
また、マイクロプロセッサ４０１は、ソフトウェアを実行することにより、例えば、符号化処理や上述した復号処理を実現し、エンコードの結果得られた符号化ストリームを、サウスブリッジ４０４を介して、HDD４０５に供給して記憶させたりすることができる。さらに、マイクロプロセッサ４０１は、デコードした結果得られる動画像コンテンツの再生映像を、GPU４０２へデータ転送して、ディスプレイ４２２に表示させたりすることができる。
【０１１７】
マイクロプロセッサ４０１内の各CPUコアの使用方法は任意であるが、例えば、メインCPUコア４４１が、画像符号化処理や画像復号処理の制御に関する処理を行い、８個のサブCPUコア４４２−１乃至サブCPUコア４４２−８に、Syntax Decoding、Picture Construction、およびDeblocking等の各処理を、例えば図１０または図１１の並列処理パターン選択テーブルＡ，Ｂを用いて決定された並行処理パターンで実行させるようにしてもよい。つまり、復号処理の効率を向上させ、処理全体の遅延時間を短縮させ、さらに、負荷、処理時間、および、処理に必要なメモリ容量を低減させることができる。もちろん、これ以外の方法で各処理を行うようにしてもよい。
【０１１８】
GPU４０２は、ディスプレイ４２２に表示する動画コンテンツの再生映像を動かすときのテクスチャの張り込みなどに関する最終的なレンダリング処理に加えて、動画コンテンツの再生映像及び静止画コンテンツの静止画像をディスプレイ４２２に一度に複数表示するときの座標変換計算処理や、動画コンテンツの再生映像及び静止画コンテンツの静止画像に対する拡大・縮小処理等を行う機能を司り、マイクロプロセッサ４０１の処理負担を軽減させるようになされている。
【０１１９】
GPU４０２は、マイクロプロセッサ４０１の制御のもとに、供給された動画コンテンツの映像データや静止画コンテンツの画像データに対して所定の信号処理を施す。そして、GPU４０２は、その結果得られた映像データや画像データをディスプレイ４２２へ送出して、画像信号をディスプレイ４２２へ表示させる。
【０１２０】
ところで、マイクロプロセッサ４０１における８個のサブCPUコア４４２−１乃至サブCPUコア４４２−８において、決定された並行処理パターンでデコードされた複数の動画コンテンツにおける再生映像は、バス４１１を介してGPU４０２へデータ転送される。このときの転送速度は、例えば、最大３０[Gbyte/sec]であり、特殊効果の施された複雑な再生映像であっても高速かつ滑らかに表示し得るようになされている。
【０１２１】
また、マイクロプロセッサ４０１は、動画コンテンツの映像データ及び音声データのうち音声データに対して音声ミキシング処理を施す。そして、マイクロプロセッサ４０１は、その結果得られた編集音声データを、サウスブリッジ４０４およびサウンド入出力コーデック４０７を介して、スピーカ４２１へ送出することにより、音声信号に基づく音声をスピーカ４２１から出力させることもできる。
【０１２２】
このような情報処理システム３００のマイクロプロセッサ４０１における８個のサブCPUコア４４２−１乃至サブCPUコア４４２−８のそれぞれには、図１４に示されるように、キャッシュメモリとしてLS（Local Store）４５１−１乃至LS４５１−８が内蔵されている。つまり、８個のサブCPUコア４４２−１乃至サブCPUコア４４２−８は、各自が内蔵するLS４５１−１乃至LS４５１−８とXDR-RAM４０３の記憶領域を利用することができる。
【０１２３】
図１２のパーソナルコンピュータ１００のキャッシュメモリ１１１の場合と同様に、LS４５１−１乃至LS４５１−８は、サブCPUコア４４２−１乃至サブCPUコア４４２−８のそれぞれが独占的に使用することができる。かつ、LS４５１−１乃至LS４５１−８は、共有バス４４５を介さずにデータの読み出しや書き込みを行うことができ、さらに、XDR-RAM４０３よりも高速に動作する。従って、LS４５１−１乃至LS４５１−８は、XDR-RAM４０３よりも高速にデータの読み出しや書き込みが可能である。ただし、LS４５１−１乃至LS４５１−８は、XDR-RAM４０３と比べて容量当たりの単価が高く、かつ、その容量が小さい。
【０１２４】
実際には、XDR-RAM４０３の容量も有限であるが、以下においては、XDR-RAM４０３の容量は十分に大きいものとし、逆に、LS４５１−１乃至LS４５１−８の容量は小さく、必要最小限のデータしか保持することができないものとする。
【０１２５】
なお、以下において、サブCPUコア４４２−１乃至サブCPUコア４４２−８を互いに区別して説明する必要の無い場合、サブCPUコア４４２と称する。また、LS４５１−１乃至LS４５１−８を互いに区別して説明する必要の無い場合、LS４５１と称する。このサブCPUコア４４２（LS４５１）の数は、図１４においては８個設けられるように示されているが、実際には任意である。
【０１２６】
サブCPUコア４４２−１乃至サブCPUコア４４２−８は、メインCPUコア４４１により、予め用意された複数の並列処理パターンから最適なものが選択される。そして、サブCPUコア４４２−１乃至サブCPUコア４４２−８は、その並列処理パターンに従ってSyntax Decoding、Picture Construction、およびDeblockingモジュールの各処理が割り当てられる。これにより、復号処理の効率を向上させ、処理全体の遅延時間を短縮させ、さらに、負荷、処理時間、および、処理に必要なメモリ容量を低減させることができる。
【０１２７】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【０１２８】
本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【符号の説明】
【０１２９】
１１  画像復号装置，  ２１  復号リソース管理部，  ２２  ビットストリーム情報解析部，  ２３  CPU状況解析部，  ２４  並列処理パターン決定部，  ２５  並列処理実行部，  １００  パーソナルコンピュータ，  ３００  情報処理システム
【図１】
2011160077.tif 000003
【図２】
2011160077.tif 000004
【図３】
2011160077.tif 000005
【図４】
2011160077.tif 000006
【図５】
2011160077.tif 000007
【図６】
2011160077.tif 000008
【図７】
2011160077.tif 000009
【図８】
2011160077.tif 000010
【図９】
2011160077.tif 000011
【図１０】
2011160077.tif 000012
【図１１】
2011160077.tif 000013
【図１２】
2011160077.tif 000014
【図１３】
2011160077.tif 000015
【図１４】
2011160077.tif 000016