JP2011160077A - 復号装置および方法 - Google Patents

復号装置および方法 Download PDF

Info

Publication number
JP2011160077A
JP2011160077A JP2010018371A JP2010018371A JP2011160077A JP 2011160077 A JP2011160077 A JP 2011160077A JP 2010018371 A JP2010018371 A JP 2010018371A JP 2010018371 A JP2010018371 A JP 2010018371A JP 2011160077 A JP2011160077 A JP 2011160077A
Authority
JP
Japan
Prior art keywords
decoding
parallel processing
unit
information
pattern
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2010018371A
Other languages
English (en)
Inventor
Yuichi Araki
祐一 荒木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2010018371A priority Critical patent/JP2011160077A/ja
Publication of JP2011160077A publication Critical patent/JP2011160077A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

【課題】高速な復号処理を実現することができるようにする。
【解決手段】並列処理パターン決定部24は、復号リソース管理部21からのリソースの情報、ビットストリーム情報解析部22からのビットレート、ピクチャタイプDeblockigフラグの情報、およびCPU状況解析部23から得られたCPUコアの情報に基づき、複数の並列処理パターンからどのパターンを使用して、復号処理を行うかを決定する。本発明は、例えば、H.264/AVC方式で符号化されたビットストリームを復号する画像復号装置に適用することができる。
【選択図】図1

Description

本発明は復号装置および方法に関し、特に、複数のCPUコアを使って、高速な復号処理を実現させるようにした復号装置および方法に関する。
従来より、符号化されたビットストリームを、複数のCPUコアを使って並列にデコードする方法は多数提案されている(例えば、特許文献1参照)。
特開2008−287460号公報
例えば、H.264及びMPEG-4 Part10 (Advanced Video Coding、以下H.264/AVCと記す)で符号化されているビットストリームを複数のCPUコアを使って並列にデコードする場合を考える。この場合も、依存関係を考慮して互いに影響のない処理にできるだけ多く分割して並列に実行した方が、効率よく高速にビットストリームの復号が可能である。しかしながら、現実には、使用可能なCPUコア数は限られており、処理の分割数がCPUコア数よりも大きい場合には、コンテキストスイッチが発生してしまい、そのオーバーヘッドによって逆に効率が悪くなってしまうことがある。
また、H.264/AVCを用いたアプリケーションの例として、BD-ROMやAVC-Intraがあるが、そのユースケースとして高ビットレートで符号化される場合は、1フレームをデコードする全体の負荷のうち、CABAC(Context-Adaptive Binary Arithmetic Coding)やCAVLC(Context-Adaptive Variable Length Coding)の負荷が支配的になり、並列処理の効率が悪くなってしまうことがある。
さらに、ビットストリームによってあるフレーム枚数中のReference PictureとNon Reference Pictureのフレーム数の構成が異なるので、復号する装置としては、それらを考慮した並列処理を行うことも必要である。
本発明は、このような状況に鑑みてなされたものであり、複数のCPUコアを使って、高速な復号処理を実現させるものである。
本発明の一の側面の復号装置は、符号化されたビットストリームの復号処理を行う復号装置において、使用可能な演算部の情報を受け取る演算部情報受け取り手段と、前記ビットストリームから、符号化パラメータを取得する符号化パラメータ取得手段と、前記演算部情報受け取り手段により受け取られた前記使用可能な演算部の情報および前記符号化パラメータ取得手段により取得された前記符号化パラメータに基づいて、複数の並列処理パターンの中から、シンタックスデコーディングとピクチャコンストラクションを少なくとも含む復号処理を行う際に用いる並列処理パターンを選択するパターン選択手段と、前記パターン選択手段により選択された前記並列処理パターンを用いて、前記復号処理を行う処理実行手段とを備える。
前記符号化パラメータは、ピクチャタイプ、デブロッキングを行うか否かを示すフラグ、およびビットレートの少なくとも1つの情報である。
リソースの情報を受け取るリソース情報受け取り手段をさらに備え、前記パターン選択手段は、前記リソース情報受け取り手段からの前記リソースの情報にも基づいて、前記並列処理パターンを選択することができる。
本発明の一側面の復号方法は、符号化されたビットストリームの復号処理を行い、演算部情報受け取り手段と、符号化パラメータ取得手段と、パターン選択手段と、処理実行手段とを備える復号装置の復号方法において、前記演算部情報受け取り手段が、使用可能な演算部の情報を受け取り、前記符号化パラメータ取得手段が、前記ビットストリームから、符号化パラメータを取得し、前記パターン選択手段が、受け取られた前記使用可能な演算部の情報および取得された前記符号化パラメータに基づいて、複数の並列処理パターンの中から、シンタックスデコーディングとピクチャコンストラクションを少なくとも含む復号処理を行う際に用いる並列処理パターンを選択し、前記処理実行手段が、選択された前記並列処理パターンを用いて、前記復号処理を行う。
本発明の一側面においては、使用可能な演算部の情報が受け取られ、ビットストリームから、符号化パラメータが取得される。そして、受け取られた前記使用可能な演算部の情報および取得された前記符号化パラメータに基づいて、複数の並列処理パターンの中から、シンタックスデコーディングとピクチャコンストラクションを少なくとも含む復号処理を行う際に用いる並列処理パターンが選択され、選択された前記並列処理パターンを用いて、前記復号処理が行われる。
なお、上述の復号装置は、独立した装置であっても良いし、1つの復号装置を構成している内部ブロックであってもよい。
本発明の一側面によれば、符号化されたビットストリームを複数の演算部を使って並列処理で復号することができる。また、本発明の一側面によれば、高速な復号処理を実現することができる。
本発明を適用した画像復号装置の一実施の形態の構成を示すブロック図である。 Deblockingが必要な場合の並列処理パターンの例を示す図である。 Deblockingが必要な場合の並列処理パターンの他の例を示す図である。 Deblockingが必要な場合の並列処理パターンのさらに他の例を示す図である。 Deblockingが必要な場合の並列処理パターンの他の例を示す図である。 Deblockingが不必要な場合の並列処理パターンの例を示す図である。 Deblockingが不必要な場合の並列処理パターンの他の例を示す図である。 図1の画像復号装置の復号処理を説明するフローチャートである。 図8のステップS14の並列処理パターン決定処理を説明するフローチャートである。 並列処理パターン選択テーブルの例を示す図である。 並列処理パターン選択テーブルの他の例を示す図である。 コンピュータのハードウエアの構成例を示すブロック図である。 情報処理システムのハードウエアの構成例を示すブロック図である。 サブCPUコアの構成例を示すブロック図である。
以下、図を参照して本発明の実施の形態について説明する。
[画像復号装置の構成例]
図1は、本発明を適用した画像復号装置の一実施の形態の構成を表している。
この画像復号装置11は、複数のCPUコア(演算部)のうち、少なくとも1つのCPUコアを用いて、例えば、H.264及びMPEG-4 Part10(Advanced Video Coding)(以下H.264/AVCと記す)方式で符号化されたビットストリームを復号する。
図1の例において、画像復号装置11は、復号リソース管理部21、ビットストリーム情報解析部22、CPU状況解析部23、並列処理パターン決定部24、および並列処理実行部25により構成される。
符号化されたビットストリームは、ビットストリーム情報解析部22に入力される。
復号リソース管理部21は、画像復号装置11に入力されたビットストリームを復号するために必要なメモリなどのリソースがあと何フレーム分残っているのかの数(Nr)を並列処理パターン決定部24に供給する。ここで、リソースの数(Nr)としては、例えば、復号する際の参照フレームを保存しておく参照フレームメモリの枚数、復号した後のベースバンドの信号を保存しておくためのフレームメモリの枚数などがあげられる。なお、枚数ではなく、メモリ容量やメモリサイズであってもよい。
ビットストリーム情報解析部22は、入力されたビットストリームを並列処理パターン決定部24に出力するとともに、そのビットストリームから得られた情報を、並列処理パターン決定部24に供給する。
ビットストリームから得られた情報とは、ビットストリームに付加されている符号化パラメータのことである。この情報には、入力されたビットストリームのサイズから計算したビットレート、ビットストリームのNon VCL(Video Coding Layer)部分を復号して得られたピクチャタイプ、およびDeblockingを行うか否かを示すフラグが含まれる。なお、ビットストリーム情報解析部22は、並列処理パターン決定部24からの前フレームのビットレートも用いて、入力されたビットストリームのサイズから計算したビットレートを再計算することで、より正確なビットレートを得ることができる。
ここで、ピクチャタイプとは、他のスライスから参照されるReference pictureであるか、参照されないNon Reference pictureであるかを表す。また、Deblockingを行うか否かを示すフラグは、ビットストリームからのみに限らず、例えば、画像復号装置11を使用するアプリケーションから指定されることもある。
CPU状況解析部23は、複数のCPUコアのうち、画像復号装置11に入力されたビットストリームの復号に使用可能なCPUコアの数(Nc)を並列処理パターン決定部24に供給する。
並列処理パターン決定部24は、ビットストリーム情報解析部22から入力されたビットストリームの復号の際に用いられる並列処理パターンを選択する。すなわち、並列処理パターン決定部24は、復号リソース管理部21、ビットストリーム情報解析部22、およびCPU状況解析部23から得られた情報に基づいて、複数の並列処理パターンからどのパターンを使用して、復号処理を行うかを決定する。
並列処理パターン決定部24は、ビットストリームを並列処理実行部25に出力するとともに、決めた並列処理パターンの情報を並列処理実行部25に供給する。また、並列処理パターン決定部24は、現在のフレームのビットレートの情報を、ビットストリーム情報解析部22にフィードバックする。
並列処理実行部25は、並列処理パターン決定部24により決定された並列処理パターンを用いて、並列処理パターン決定部24からのビットストリームの復号処理を行い、復号データを生成する。
なお、この画像復号装置11においては、並列処理実行部25があるビットストリームの復号を実行中に、そのビットストリームに続く複数のビットストリームの入力を受け付けて、それらの復号を並列に行うことが可能である。並列処理パターンは、ある1つのスライスを復号するための方法であるが、画像復号装置11においては、あるフレーム内の複数のスライスをそれぞれに適した並列処理パターンを選択して並列に復号することが可能である。また、画像復号装置11においては、あるフレームのスライスと別のフレームのスライスも依存関係を考慮すれば、並列で復号することも可能である。後者の並列を、フレーム並列と定義する。高速に復号するためには、このフレーム並列を効果的に使用することが重要になる。
次に、図2乃至図7を参照して、並列処理パターンの例を説明する。
図2乃至図7の例において、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が終了している必要がある。
図2乃至図7において、括弧内に示されるCPUの番号(N=0,1,2)は、それぞれのモジュールが実行されるCPUのIDを示しており、各モジュールがどのように並列に実行されるかを表している。
まず、図2乃至図5に示される並列処理パターンA乃至Dは、Deblockingが必要な場合に選択される処理パターンである。
図2に示される並列処理パターンAは、並列処理を行わないパターンである。例えば、並列処理パターンAにおいては、並列処理を行わず、1つのCPU0において、各モジュール(Syntax Decoding、Picture Construction、Deblocking)が順番に実行される。
図3に示される並列処理パターンBは、Picture Constructionと、Deblockingが並行に実行されるパターンである。例えば、並列処理パターンBにおいては、Syntax Decoding、Picture Constructionが順にCPU0で実行され、DeblockingがCPU1で実行される。
なお、Picture Constructionと、Deblockingが並行に実行されるパターンとしては、図3の例に限らず、例えば、Syntax DecodingがCPU0で実行された後、並列に、Picture ConstructionがCPU1で実行され、DeblockingがCPU0で実行されるようにしてもよい。このことは、以下の図4乃至図7でも同様に言えることである。
図4に示される並列処理パターンCは、Syntax DecodingとPicture Constructionが並行に実行されるパターンである。例えば、並列処理パターンCにおいては、並列に、Syntax DecodingがCPU0で実行され、ConstructionがCPU1で実行され、その後に、DeblockingがCPU1で実行される。
図5に示される並列処理パターンDは、Syntax Decoding、Picture Construction、およびDeblockingの3つのモジュールが並列に実行されるパターンである。例えば、並列処理パターンDにおいては、並列に、Syntax DecodingがCPU0で実行され、ConstructionがCPU1で実行され、DeblockingがCPU2で実行される。
仮に、Syntax Decoding、Picture Construction、およびDeblockingの負荷が同じであると仮定すると、並列処理パターンA乃至Dの中では、並列処理パターンDが最も高速に復号処理が可能である。しかしながら、実際には、モジュール毎の負荷の違いがあり、さらに、モジュール間の依存関係も存在する。
したがって、並列処理パターンB,C,Dを用いて並列に復号処理を行っても、あるモジュールは依存するモジュールのブロックの処理が終了するのを待っている状態があり得る。そのような場合は、上述したフレーム並列を使って、待ち状態のCPUで、他のスライスの復号を行うようにすれば、全体として、高速な復号が実現可能である。
次に、図6および図7に示される並列処理パターンEおよびFは、Deblockingが不必要な場合に選択される処理パターンである。
図6に示される並列処理パターンEは、並列処理を行わないパターンである。例えば、並列処理パターンEにおいては、並列処理を行わず、1つのCPU0において、各モジュール(Syntax Decoding、Picture Construction)が順番に実行される。
図7に示される並列処理パターンFは、Syntax DecodingとPicture Constructionが並行に実行されるパターンである。例えば、並列処理パターンFにおいては、並列に、Syntax DecodingがCPU0で実行され、ConstructionがCPU1で実行される。
ここで、いくつのモジュールが並列に実行されるかの数をモジュール並列数と定義すると、並列処理パターンAおよびEのモジュール並列数は1、並列処理パターンB,C,Fのモジュール並列数は2、並列処理パターンCのモジュール並列数は3となる。
次に、図8のフローチャートを参照して、図1の画像復号装置11の復号処理について説明する。
ビットストリーム情報解析部22に符号化されたビットストリームが入力される。ステップS11において、復号リソース管理部21は、画像復号装置11に入力されたビットストリームを復号するために必要なメモリなどのリソース数(Nr)を取得し(受け取り)、並列処理パターン決定部24に供給する。
ステップS12において、ビットストリーム情報解析部22は、入力されたビットストリームを並列処理パターン決定部24に出力し、そのビットストリームから、ビットストリームから得られる情報である符号化パラメータを取得し、並列処理パターン決定部24に供給する。
すなわち、ビットストリーム情報解析部22は、入力されたビットストリームのサイズや並列処理パターン決定部24からフィードバックされた前フレームのビットレートなどを基に計算することで、ビットレートの情報を取得する。また、ビットストリーム情報解析部22は、ビットストリームのNon VCL部分を復号して、ピクチャタイプ、およびDeblockingを行うか否かを示すフラグを取得する。
ステップS13において、CPU状況解析部23は、CPUの情報を取得する。すなわち、CPU状況解析部23は、複数のCPUコアのうち、画像復号装置11に入力されたビットストリームの復号に使用可能なCPUコアの数(Nc)を取得し(受け取り)、並列処理パターン決定部24に供給する。
ステップS14において、並列処理パターン決定部24は、上述した図2乃至図7に示された複数の並列処理パターンの中から、並列処理パターン決定部24から入力されたビットストリームの復号の際に用いられる並列処理パターンの決定処理を行う。この処理の詳細は、図9を参照して後述する。
ステップS14の処理によりビットストリーム情報解析部22から入力されたビットストリームの復号の際に用いられる並列処理パターンが決定される。これに対応して、ステップS15において、並列処理実行部25は、並列処理パターン決定部24により決定された並列処理パターンを用いて、並列処理パターン決定部24からのビットストリームの復号処理を行う。
すなわち、並列処理実行部25は、決定された並列処理パターンの並列処理ができるように、複数のCPUコアに、対応するモジュール(Syntax Decoding、Picture Construction、Deblocking)を実行させることで、復号処理を行い、復号データを生成する。
次に、図9のフローチャートを参照して、並列処理パターン決定部24による図8のステップS14の並列処理パターン決定処理を説明する。
ステップS31において、並列処理パターン決定部24は、復号リソース管理部21からの入力されたビットストリームを復号するリソース数(Nr)が0より大きいか否かを判定する。ステップS31において、リソース数(Nr)が0より大きいと判定された場合、処理は、ステップS32に進む。
ステップS32において、並列処理パターン決定部24は、CPU状況解析部23からの入力されたビットストリームを復号するためのCPUコア数(Nc)が0より大きいか否かを判定する。ステップS32において、CPUコア数(Nc)が0より大きいと判定された場合、処理は、ステップS33に進む。
ステップS33において、並列処理パターン決定部24は、ビットストリーム情報解析部22からのDeblockingを行うか否かを示すフラグに基づいて、Deblockingが必要であるか否かを判定する。ステップS33において、Deblockingが必要であると判定された場合、処理は、ステップS34に進む。
ステップS34において、並列処理パターン決定部24は、Nr,Nc,ビットストリームの情報を用いて、後述する図10の並列処理パターン選択テーブルAから、復号処理に用いる並列処理パターンを決定する。この決定処理の詳細は、図10を参照して後述する。
また、ステップS33において、Deblockingが不必要であると判定された場合、処理は、ステップS35に進む。
ステップS35において、並列処理パターン決定部24は、Nr,Nc,ビットストリームの情報を用いて、後述する図11の並列処理パターン選択テーブルBから、復号処理に用いる並列処理パターンを決定する。この決定処理の詳細は、図11を参照して後述する。
一方、ステップS31において、リソース数(Nr)が0であると判定された場合、処理は、ステップS36に進む。また、ステップS32において、CPUコア数(Nc)が0であると判定された場合も、処理は、ステップS36に進む。
ステップS36において、並列処理パターン決定部24は、入力されたビットストリームの復号が不可能であることを、例えば、画像復号装置11の図示せぬ表示部やビットストリームを入力した装置に通知する。
図10は、図9のステップS34において参照される並列処理パターン選択テーブルAの例を示している。なお、図10の例において、*は、その項目がどのような値でも並列処理パターンの選択には影響がないことを示している。
並列処理パターン選択テーブルAにおいては、ビットストリームを復号するリソース数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モジュールを並列で処理するパターンBが選択される。これに対して、ビットレートが閾値より低い場合は、Syntax DecodingとPicture Constructionモジュールを並列で処理するパターンCが選択される。
順に、図10の並列処理パターン選択テーブルAの各ケースの場合について説明する。すなわち、ここでは、図9のステップS34で行われる並列処理パターンの決定方法が説明される。
ケース1の場合、Ncが1のとき、使用可能なCPUコア数が1しかないので、Nr,ピクチャタイプ、ビットレートによらず、パターンAが選択される。
ケース2の場合、Nrが1のとき、その次のスライスが入力されてもそのスライスが新しいフレームであればリソースが足りないためにフレーム並列をすることができない。そこで、Ncが2であるので、モジュール並列数が2であるパターンBとパターンCが選択可能であるが、ビットレートが閾値より高いため、パターンBが選択される。
ケース3の場合、上述したケース2の場合とビットレート以外は同様であるが、ビットレートが閾値より低いため、パターンCが選択される。
ケース4の場合、Nrが2以上であるのでその次のスライスをフレーム並列にすることが可能である。Ncが2であるので、モジュール並列数が1であるパターンAを選択することで、次のスライスのため、使用可能なCPUコアを余らせておく。
ケース5の場合、ピクチャタイプがNon Referenceであり、Ncが2であるので、モジュール並列数が2であるパターンBとパターンCが選択可能であるが、ビットレートが閾値より高いため、パターンBが選択される。
ケース6の場合、上述したケース5の場合とビットレート以外は同様であるが、ビットレートが閾値より低いため、パターンCが選択される。
ケース7の場合、ケース2,3と同様に、Nrが1では、その次のスライスが入力されてもそのスライスが新しいフレームであれば、リソースが足りないためにフレーム並列を行うことができない。そこで、Ncが3以上であるので、モジュール並列数3であるパターンDが選択される。
ケース8の場合、Nrが2以上であるのでその次のスライスをフレーム並列することが可能である。Ncが3であるが、モジュール並列数が2で、ビットレートが閾値より高いときのパターンBを選択することにより、次のスライスのため、使用可能なCPUコアを余らせておく。
ケース9の場合、上述したケース8の場合とビットレート以外は同様であるが、ビットレートが閾値より低いため、パターンCが選択される。
ケース10の場合、Ncが3であり、ピクチャタイプがNon Referenceであるので、パターンDが選択される。
ケース11の場合、Ncが4以上であるので、Nr,ピクチャタイプ、ビットレートによらず、常にパターンDが選択される。
図11は、図9のステップS35において参照される並列処理パターン選択テーブルBの例を示している。
並列処理パターン選択テーブルBにおいては、Nc,Nr,ピクチャタイプの情報を基に並列処理パターンが選択される。なお、図11の例において、*およびピクチャタイプについては、図10の例と同様である。
順に、図11の並列処理パターン選択テーブルBの各ケースの場合について説明する。すなわち、ここでは、図9のステップS35で行われる並列処理パターンの決定方法が説明される。
ケース101の場合、Ncが1のとき、使用可能なCPUコア数が1しかないので、Nr,ピクチャタイプによらず、パターンEが選択される。
ケース102の場合、Nrが1のとき、その次のスライスが入力されてもそのスライスが新しいフレームであればリソースが足りないためにフレーム並列をすることができない。そこで、Ncが2であるので、モジュール並列数が2であるパターンFが選択される。
ケース103の場合、Nrが2以上であるのでその次のスライスをフレーム並列することが可能である。Ncも2以上であるので、モジュール並列数が1であるパターンEを選択することで、次のスライスのため、使用可能なCPUコアを余らせておく。
ケース104の場合、Ncが2以上でピクチャタイプがNon ReferenceであるのでパターンFが選択される。
以上のように、CPUとビットストリームの情報を用いて並列処理のパターン(方法)を切り替えるようにしたので、限られたCPUコア数でもビットレートやフレーム構成によらない高速なデコードを実現することができる。
なお、上記説明においては、復号処理に用いられるプロセッサコア(演算部)の一例として、CPUコアを用いて説明したが、プロセッサコアとしては、CPUに限定されることなく、例えば、GPU(Graphics Processing Unit)や、他のプロセッサのコアであってもよい。また、後述するように、画像復号装置11がソフトウェアで実装される場合には、スレッドなどであってもよい。
以上においては、符号化方式としてH.264/AVC方式を用いるようにしたが、本発明はこれに限らず、その他の符号化方式/復号方式を適用することができる。
なお、本発明は、例えば、MPEG、H.26x等の様に、離散コサイン変換等の直交変換と動き補償によって圧縮された画像情報(ビットストリーム)を、衛星放送、ケーブルテレビジョン、インターネット、または携帯電話機などのネットワークメディアを介して受信する際に用いられる画像符号化装置および画像復号装置に適用することができる。また、本発明は、光、磁気ディスク、およびフラッシュメモリのような記憶メディア上で処理する際に用いられる画像符号化装置および画像復号装置に適用することができる。さらに、本発明は、それらの画像符号化装置および画像復号装置などに含まれる動き予測補償装置にも適用することができる。
上述した一連の処理は、上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な汎用のパーソナルコンピュータなどが含まれる。
次に、上述した一連の処理を行う、ソフトウェアデコーダに割り当てられるハードウェア資源の例について説明する。例えば、次のようなパーソナルコンピュータや情報処理システムにより実現される。
[パーソナルコンピュータの構成例]
図12は、パーソナルコンピュータの構成例を示すブロック図である。
図12において、パーソナルコンピュータ100のCPU101−1、CPU101−2、CPU101−3、およびCPU101−4は、それぞれ、ソフトウェアプログラムに従って各種の処理を実行する演算処理部(CPUコア)である。以下において、CPU101−1乃至CPU101−4を互いに区別して説明する必要の無い場合、CPU101と称する。CPU101は、共有バスであるバス104を介してROM(Read Only Memory)102およびRAM(Random Access Memory)103と相互に接続されている。ROM102には予めソフトウェアプログラムやデータが格納されている。RAM103には、ROM102や記憶部123に格納されているソフトウェアプログラムやデータがロードされる。
CPU101−1にはキャッシュメモリ111−1が内蔵され、CPU101−2にはキャッシュメモリ111−2が内蔵され、CPU101−3にはキャッシュメモリ111−3が内蔵され、CPU101−4にはキャッシュメモリ111−4が内蔵される。以下において、キャッシュメモリ111−1乃至キャッシュメモリ111−4を互いに区別して説明する必要の無い場合、キャッシュメモリ111と称する。
キャッシュメモリ111は、例えばSRAM(Static Random Access Memory)のような、高速で動作する記憶媒体であり、そのキャッシュメモリ111を内蔵するCPU101により独占的に使用される。このキャッシュメモリ111は、記憶容量辺りの単価が高く、また、CPU101に内蔵されるため、キャッシュメモリ111の記憶容量を増大させるとCPU101の回路規模も増大してしまう。そこでコストの低減や回路規模の増大を抑制するために、キャッシュメモリ111の記憶容量は、一般的に、例えば数百キロバイト乃至数メガバイト程度と、数百メガバイト乃至数ギガバイト程度の記憶容量を有する、CPU101の外部に設けられたRAM103よりも小容量に抑えられている。
もちろん、キャッシュメモリ111としてどのようなメモリを用いるようにし、また、その記憶容量をどの程度にするようにしてもよいが、ここでは、キャッシュメモリ111が、そのキャッシュメモリ111を内蔵するCPU101により独占的に使用され、RAM103より高速にデータの読み出しや書き込みが可能であるものの、その記憶容量がRAM103より小容量であり、格納可能な情報量に制限がある記憶媒体であるものとする。
このキャッシュメモリ111に対して、RAM103は、CPU101−1乃至CPU101−4等により共有され、キャッシュメモリ111よりもデータの読み出しや書き込みが低速であり、かつ、キャッシュメモリ111より大容量であるものとする。なお、もちろん、実際にはRAM103の記憶容量も有限であるが、以下においては、説明の便宜上、RAM103の記憶容量は、上述した符号化処理や復号処理に必要な容量に対して十分に大きく、その容量の制限については特に考慮しないものとする。
つまり、キャッシュメモリ111は、高速でプログラムやデータの入出力が可能であるが、容量に制限があるので、ソフトウェアエンコーダやソフトウェアデコーダの全てのソフトウェアプログラムやデータを格納することが困難であることもある。これに対して、RAM103は、任意のソフトウェアプログラムやデータを格納可能であるが、それらの入出力が低速である。
CPU101は、自分自身に内蔵されるキャッシュメモリ111またはRAM103にソフトウェアプログラムやデータをロードし、それらを用いて符号化や復号の各種処理を行う。
CPUの使用方法は任意であるが、例えば、1個のCPU101−1が、図1の画像復号装置11と同様に、上述した画像復号処理の制御に関する処理を行い、3個のCPU101−2乃至CPU101−4に、Syntax Decoding、Picture Construction、およびDeblocking等の各処理を、例えば図10または図11の並列処理パターン選択テーブルA,Bを用いて決定された並行処理パターンで実行させるようにしてもよい。これにより、復号処理の効率を向上させ、処理全体の遅延時間を短縮させ、さらに、負荷、処理時間、および、処理に必要なメモリ容量を低減させることができる。
バス104にはまた、入出力インタフェース120も接続されている。入出力インタフェース120には、入力部121、出力部122、記憶部123、モデムなどより構成される通信部124が接続されている。入力部121は、キーボード、マウスなどよりなる。出力部122は、CRT(Cathode Ray Tube)、LCD(Liquid Crystal Display)などよりなるディスプレイ、並びにスピーカなどよりなる。記憶部123は、ハードディスクなどより構成される。通信部124は、インターネットを含むネットワークを介しての通信処理を行う。
入出力インタフェース120にはまた、必要に応じてドライブ125が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア131が適宜装着される。そして、それらから読み出されたソフトウェアプログラムが、必要に応じて記憶部123にインストールされる。なお、ソフトウェアプログラムは、ネットワークを介して通信部124よりインストールすることも可能である。
なお、図12においては、パーソナルコンピュータ100に、CPU101が4つ設けられているように説明したが、CPU101の数は任意である。ただし、後述するソフトウェアエンコーダやソフトウェアデコーダの実装方法によっては、CPU101の最小数に制限がある場合もあり、例えば、CPU101が2つ必要な場合や、4つ必要な場合もある。また、このCPU101−1乃至CPU101−4が、4つのコアを有する物理的には1つのCPU101であるものとしてもよい。その場合、各CPUコア(CPU101−1乃至CPU101−4)にキャッシュメモリ111−1乃至キャッシュメモリ111−4が設けられているものとしてもよい。また、各CPUコアが共有する唯一のキャッシュメモリ111の、各CPUコアに割り当てられたキャッシュメモリ111の部分領域がキャッシュメモリ111−1乃至キャッシュメモリ111−4であるとしてもよい。
[情報処理システムの構成例]
図13は、情報処理システムのハードウエアの構成例を示すブロック図である。
図13に示されるように、情報処理システム300は、情報処理装置301、その情報処理装置301とPCIバス302によって接続された、記憶装置303、複数台のビデオテープレコーダ(VTR)であるVTR304−1乃至VTR304−S、ユーザがこれらに対する操作入力を行うためのマウス305、キーボード306、並びに操作コントローラ307により構成されるシステムであり、インストールされたプログラムによって、画像符号化処理や、上述したような画像復号処理等を行うシステムである。
例えば情報処理システム300の情報処理装置301は、RAID(Redundant Arrays of Independent Disks)でなる大容量の記憶装置303に記憶されている動画コンテンツを符号化して得られた符号化データを記憶装置303に記憶させたりすることができる。また、情報処理装置301は、記憶装置303に記憶されている符号化データを復号して得られた復号画像データ(動画コンテンツ)を記憶装置303に記憶させたり、符号化データや復号画像データをVTR304−1乃至VTR304−Sを介してビデオテープに記録したりすることができる。さらに、情報処理装置301は、VTR304−1乃至VTR304−Sに装着されたビデオテープに記録された動画コンテンツを記憶装置303に取り込み得るようにもなされている。その際、情報処理装置301が、動画コンテンツを符号化するようにしてもよい。
情報処理装置301は、マイクロプロセッサ401、GPU(Graphics Processing Unit)402、XDR(Extreme Data Rate)-RAM403、サウスブリッジ404、HDD(Hard Disk Drive)405、USBインタフェース(USB I/F)406、およびサウンド入出力コーデック407を有している。
GPU402は専用のバス411を介してマイクロプロセッサ401に接続される。XDR-RAM403は専用のバス412を介してマイクロプロセッサ401に接続される。サウスブリッジ404は、専用のバスを介してマイクロプロセッサ401のI/Oコントローラ444に接続される。このサウスブリッジ404には、HDD405、USBインタフェース406、および、サウンド入出力コーデック407も接続されている。このサウンド入出力コーデック407にはスピーカ421が接続されている。また、GPU402にはディスプレイ422が接続されている。
またサウスブリッジ404には、さらに、PCIバス302を介して、マウス305、キーボード306、VTR304−1乃至VTR304−S、記憶装置303、並びに、操作コントローラ307が接続されている。
マウス305およびキーボード306は、ユーザの操作入力を受け、PCIバス302およびサウスブリッジ404を介して、ユーザの操作入力の内容を示す信号を、マイクロプロセッサ401に供給する。記憶装置303およびVTR304−1乃至VTR304−Sは、所定のデータを記録または再生できるようになされている。
PCIバス302にはさらに、必要に応じてドライブ308が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア311が適宜装着される。そして、それらから読み出されたコンピュータプログラムが、必要に応じてHDD405にインストールされる。
マイクロプロセッサ401は、メインCPUコア441と、サブCPUコア442−1乃至サブCPUコア442−8と、メモリコントローラ443と、I/O(In/Out)コントローラ444とが1チップに集積されたマルチコア構成でなり、例えば動作周波数4[GHz]を実現している。メインCPUコア441は、OS(Operating System)等の基本プログラムを実行する汎用のCPUコアである。サブCPUコア442−1乃至サブCPUコア442−8は、メインCPUコア441に共有バス445を介して接続された複数(この場合8個)のRISC(Reduced Instruction Set Computer)タイプの信号処理プロセッサである。メモリコントローラ443は、例えば256[MByte]の容量を持つXDR-RAM403に対するメモリコントロールを行う。I/Oコントローラ444は、サウスブリッジ404との間でデータの入出力を管理する
このマイクロプロセッサ401は、起動時、HDD405に格納された制御プログラムに基づき、HDD405に格納されている必要なアプリケーションプログラムを読み出してXDR-RAM403に展開する。そして、マイクロプロセッサ401は、この後このアプリケーションプログラム及びオペレータ操作に基づいて必要な制御処理を実行する。
また、マイクロプロセッサ401は、ソフトウェアを実行することにより、例えば、符号化処理や上述した復号処理を実現し、エンコードの結果得られた符号化ストリームを、サウスブリッジ404を介して、HDD405に供給して記憶させたりすることができる。さらに、マイクロプロセッサ401は、デコードした結果得られる動画像コンテンツの再生映像を、GPU402へデータ転送して、ディスプレイ422に表示させたりすることができる。
マイクロプロセッサ401内の各CPUコアの使用方法は任意であるが、例えば、メインCPUコア441が、画像符号化処理や画像復号処理の制御に関する処理を行い、8個のサブCPUコア442−1乃至サブCPUコア442−8に、Syntax Decoding、Picture Construction、およびDeblocking等の各処理を、例えば図10または図11の並列処理パターン選択テーブルA,Bを用いて決定された並行処理パターンで実行させるようにしてもよい。つまり、復号処理の効率を向上させ、処理全体の遅延時間を短縮させ、さらに、負荷、処理時間、および、処理に必要なメモリ容量を低減させることができる。もちろん、これ以外の方法で各処理を行うようにしてもよい。
GPU402は、ディスプレイ422に表示する動画コンテンツの再生映像を動かすときのテクスチャの張り込みなどに関する最終的なレンダリング処理に加えて、動画コンテンツの再生映像及び静止画コンテンツの静止画像をディスプレイ422に一度に複数表示するときの座標変換計算処理や、動画コンテンツの再生映像及び静止画コンテンツの静止画像に対する拡大・縮小処理等を行う機能を司り、マイクロプロセッサ401の処理負担を軽減させるようになされている。
GPU402は、マイクロプロセッサ401の制御のもとに、供給された動画コンテンツの映像データや静止画コンテンツの画像データに対して所定の信号処理を施す。そして、GPU402は、その結果得られた映像データや画像データをディスプレイ422へ送出して、画像信号をディスプレイ422へ表示させる。
ところで、マイクロプロセッサ401における8個のサブCPUコア442−1乃至サブCPUコア442−8において、決定された並行処理パターンでデコードされた複数の動画コンテンツにおける再生映像は、バス411を介してGPU402へデータ転送される。このときの転送速度は、例えば、最大30[Gbyte/sec]であり、特殊効果の施された複雑な再生映像であっても高速かつ滑らかに表示し得るようになされている。
また、マイクロプロセッサ401は、動画コンテンツの映像データ及び音声データのうち音声データに対して音声ミキシング処理を施す。そして、マイクロプロセッサ401は、その結果得られた編集音声データを、サウスブリッジ404およびサウンド入出力コーデック407を介して、スピーカ421へ送出することにより、音声信号に基づく音声をスピーカ421から出力させることもできる。
このような情報処理システム300のマイクロプロセッサ401における8個のサブCPUコア442−1乃至サブCPUコア442−8のそれぞれには、図14に示されるように、キャッシュメモリとしてLS(Local Store)451−1乃至LS451−8が内蔵されている。つまり、8個のサブCPUコア442−1乃至サブCPUコア442−8は、各自が内蔵するLS451−1乃至LS451−8とXDR-RAM403の記憶領域を利用することができる。
図12のパーソナルコンピュータ100のキャッシュメモリ111の場合と同様に、LS451−1乃至LS451−8は、サブCPUコア442−1乃至サブCPUコア442−8のそれぞれが独占的に使用することができる。かつ、LS451−1乃至LS451−8は、共有バス445を介さずにデータの読み出しや書き込みを行うことができ、さらに、XDR-RAM403よりも高速に動作する。従って、LS451−1乃至LS451−8は、XDR-RAM403よりも高速にデータの読み出しや書き込みが可能である。ただし、LS451−1乃至LS451−8は、XDR-RAM403と比べて容量当たりの単価が高く、かつ、その容量が小さい。
実際には、XDR-RAM403の容量も有限であるが、以下においては、XDR-RAM403の容量は十分に大きいものとし、逆に、LS451−1乃至LS451−8の容量は小さく、必要最小限のデータしか保持することができないものとする。
なお、以下において、サブCPUコア442−1乃至サブCPUコア442−8を互いに区別して説明する必要の無い場合、サブCPUコア442と称する。また、LS451−1乃至LS451−8を互いに区別して説明する必要の無い場合、LS451と称する。このサブCPUコア442(LS451)の数は、図14においては8個設けられるように示されているが、実際には任意である。
サブCPUコア442−1乃至サブCPUコア442−8は、メインCPUコア441により、予め用意された複数の並列処理パターンから最適なものが選択される。そして、サブCPUコア442−1乃至サブCPUコア442−8は、その並列処理パターンに従ってSyntax Decoding、Picture Construction、およびDeblockingモジュールの各処理が割り当てられる。これにより、復号処理の効率を向上させ、処理全体の遅延時間を短縮させ、さらに、負荷、処理時間、および、処理に必要なメモリ容量を低減させることができる。
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
11 画像復号装置, 21 復号リソース管理部, 22 ビットストリーム情報解析部, 23 CPU状況解析部, 24 並列処理パターン決定部, 25 並列処理実行部, 100 パーソナルコンピュータ, 300 情報処理システム

Claims (4)

  1. 符号化されたビットストリームの復号処理を行う復号装置において、
    使用可能な演算部の情報を受け取る演算部情報受け取り手段と、
    前記ビットストリームから、符号化パラメータを取得する符号化パラメータ取得手段と、
    前記演算部情報受け取り手段により受け取られた前記使用可能な演算部の情報および前記符号化パラメータ取得手段により取得された前記符号化パラメータに基づいて、複数の並列処理パターンの中から、シンタックスデコーディングとピクチャコンストラクションを少なくとも含む復号処理を行う際に用いる並列処理パターンを選択するパターン選択手段と、
    前記パターン選択手段により選択された前記並列処理パターンを用いて、前記復号処理を行う処理実行手段と
    を備える復号装置。
  2. 前記符号化パラメータは、ピクチャタイプ、デブロッキングを行うか否かを示すフラグ、およびビットレートの少なくとも1つの情報である
    請求項1に記載の復号装置。
  3. リソースの情報を受け取るリソース情報受け取り手段をさらに備え、
    前記パターン選択手段は、前記リソース情報受け取り手段からの前記リソースの情報にも基づいて、前記並列処理パターンを選択する
    請求項2に記載の復号装置。
  4. 符号化されたビットストリームの復号処理を行い、演算部情報受け取り手段と、符号化パラメータ取得手段と、パターン選択手段と、処理実行手段とを備える復号装置の復号方法において、
    前記演算部情報受け取り手段が、使用可能な演算部の情報を受け取り、
    前記符号化パラメータ取得手段が、前記ビットストリームから、符号化パラメータを取得し、
    前記パターン選択手段が、受け取られた前記使用可能な演算部の情報および取得された前記符号化パラメータに基づいて、複数の並列処理パターンの中から、シンタックスデコーディングとピクチャコンストラクションを少なくとも含む復号処理を行う際に用いる並列処理パターンを選択し、
    前記処理実行手段が、選択された前記並列処理パターンを用いて、前記復号処理を行う
    復号方法。
JP2010018371A 2010-01-29 2010-01-29 復号装置および方法 Withdrawn JP2011160077A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010018371A JP2011160077A (ja) 2010-01-29 2010-01-29 復号装置および方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010018371A JP2011160077A (ja) 2010-01-29 2010-01-29 復号装置および方法

Publications (1)

Publication Number Publication Date
JP2011160077A true JP2011160077A (ja) 2011-08-18

Family

ID=44591690

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010018371A Withdrawn JP2011160077A (ja) 2010-01-29 2010-01-29 復号装置および方法

Country Status (1)

Country Link
JP (1) JP2011160077A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016002495A1 (ja) * 2014-06-30 2016-01-07 ソニー株式会社 情報処理装置および方法
WO2016129031A1 (ja) * 2015-02-09 2016-08-18 株式会社日立情報通信エンジニアリング 画像圧縮伸長装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016002495A1 (ja) * 2014-06-30 2016-01-07 ソニー株式会社 情報処理装置および方法
JPWO2016002495A1 (ja) * 2014-06-30 2017-04-27 ソニー株式会社 情報処理装置および方法
WO2016129031A1 (ja) * 2015-02-09 2016-08-18 株式会社日立情報通信エンジニアリング 画像圧縮伸長装置
JP6085065B2 (ja) * 2015-02-09 2017-02-22 株式会社日立情報通信エンジニアリング 画像圧縮伸長装置
JPWO2016129031A1 (ja) * 2015-02-09 2017-04-27 株式会社日立情報通信エンジニアリング 画像圧縮伸長装置

Similar Documents

Publication Publication Date Title
US9224187B2 (en) Wavefront order to scan order synchronization
US9336558B2 (en) Wavefront encoding with parallel bit stream encoding
KR102598748B1 (ko) 범위성 비디오 코딩 공간 모드용 대역폭 절감 구조
US20140086309A1 (en) Method and device for encoding and decoding an image
JP2007221323A (ja) 情報処理方法、動画サムネイル表示方法、復号化装置、および情報処理装置
JP2005175997A (ja) 復号化装置、電子機器、コンピュータ、復号化方法、プログラム及び記録媒体
US20170220283A1 (en) Reducing memory usage by a decoder during a format change
US20110316862A1 (en) Multi-Processor
JP2009038501A (ja) 復号化装置および復号方法
US10313683B2 (en) Video encoder with context switching
TWI510099B (zh) 多執行緒紋理解碼
KR102576630B1 (ko) 디코더의 동작 방법, 및 상기 디코더를 포함하는 어플리케이션 프로세서의 동작 방법
JP4675383B2 (ja) 画像復号化装置および方法、画像符号化装置
JP2011160077A (ja) 復号装置および方法
US8406306B2 (en) Image decoding apparatus and image decoding method
JP6187826B2 (ja) 動画像符号化装置及び動画像符号化方法
JP5321895B2 (ja) 情報処理装置および方法
US10356439B2 (en) Flexible frame referencing for display transport
JP2005189975A (ja) 画像処理装置、画像処理方法およびプログラム
KR101484101B1 (ko) 동영상 변환 장치
JP2009130599A (ja) 動画像復号装置
US20060088278A1 (en) Data processing apparatus, reproduction apparatus, data processing system, reproduction method, program, and storage medium
Jo et al. Flexible multi-core platform for a multiple-format video decoder
JP2010041115A (ja) 画像処理装置および画像処理方法
JP6308409B2 (ja) 動画像符号化装置及び動画像符号化方法

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20130402