(57)【特許請求の範囲】
【請求項１】
符号化ビデオビットストリームを復号するためのビデオ復号装置であって、
前記符号化ビデオビットストリームがマクロブロック行に符号化されたビデオデータのフレームを表し、
前記ビデオ復号装置が、
前記符号化ビデオビットストリームを受信するように構成された解析装置であって、ビデオデータの前記フレームの再構成のために使用されるマクロブロック情報の項目を生成するために、前記符号化ビデオビットストリームを解釈するように構成された解釈装置を備え、マクロブロック情報の前記項目をメモリ内にビットストリーム順に格納するように構成された解析装置と、
マクロブロックの各行に関連した行制御情報を生成するように構成された行制御装置であって、前記行制御情報が、前記メモリ内に格納されているマクロブロック情報の前記項目を指す一連のポインタを含み、前記一連のポインタを順次読み取ると、マクロブロック情報の前記項目をラスタ走査順にアクセスするようになり、マクロブロック情報の前記項目に関連して、前記行制御情報を前記メモリに格納するように構成された行制御装置と、
前記行制御情報を参照して、ビデオデータの前記フレームを再構成するように構成された再構成パイプラインと
を備えるビデオ復号装置。
【請求項２】
前記ビットストリーム順および前記ラスタ走査の順序が相互に異なる、請求項１に記載のビデオ復号装置。
【請求項３】
前記解釈装置が、前記符号化ビデオビットストリームのマクロブロック間での予測符号化を解決するように構成された予測レゾルバを備える、請求項１に記載のビデオ復号装置。
【請求項４】
前記解析装置が、マクロブロック情報の項目を前記メモリ内に格納する際に、マクロブロック情報の前記項目が、前記メモリ内で先行するマクロブロック情報の項目にラスタ走査の順序で連続して続いていない場合、マクロブロック情報の前記項目に先行する前記メモリ内にマーカーを格納するようにさらに構成され、前記マーカーが、ラスタ走査の順序で、マクロブロック情報の前記先行項目とマクロブロック情報の前記項目との間に入るマクロブロック数を示す、請求項１乃至３のいずれか１項に記載のビデオ復号装置。
【請求項５】
符号化ビデオビットストリームを復号するためのビデオ復号装置であって、
前記符号化ビデオビットストリームがマクロブロック行に符号化されたビデオデータのフレームを表し、
前記ビデオ復号装置が、
前記符号化ビデオビットストリームを受信するように構成された解析装置であって、ビデオデータの前記フレームの再構成のために使用されるマクロブロック情報の項目を生成するために、前記符号化ビデオビットストリームを解釈するように構成された解釈装置を備え、マクロブロック情報の前記項目をメモリ内にビットストリーム順に格納するように構成された解析装置と、
マクロブロックの各行に関連した行制御情報を生成するように構成された行制御装置であって、前記行制御情報が、前記メモリ内に格納されているマクロブロック情報の前記項目を指す一連のポインタを含み、前記一連のポインタを順次読み取ると、マクロブロック情報の前記項目をラスタ走査順にアクセスするようになり、マクロブロック情報の前記項目に関連して、前記行制御情報を前記メモリに格納するように構成された行制御装置と、
前記行制御情報を参照して、ビデオデータの前記フレームを再構成するように構成された再構成パイプラインと
を備え、
前記解釈装置が、前記符号化ビデオビットストリームのマクロブロック間での予測符号化を解決するように構成された予測レゾルバを備え、
前記解析装置が、マクロブロック情報の項目を前記メモリ内に格納する際に、マクロブロック情報の前記項目が、前記メモリ内で先行するマクロブロック情報の項目にラスタ走査の順序で連続して続いていない場合、マクロブロック情報の前記項目に先行する前記メモリ内にマーカーを格納するようにさらに構成され、前記マーカーが、ラスタ走査の順序で、マクロブロック情報の前記先行項目とマクロブロック情報の前記項目との間に入るマクロブロック数を示し、
前記予測レゾルバが、少なくとも１つの前記マーカーを含め、前記メモリ内に格納されているマクロブロック情報の一連の項目を参照して、前記符号化ビデオビットストリームのマクロブロック間での前記予測符号化を解決するように構成される、ビデオ復号装置。
【請求項６】
前記マーカーが、マクロブロック情報データ形式の項目を持つ、請求項４に記載のビデオ復号装置。
【請求項７】
前記マーカーが、前記マーカーがマクロブロック情報の項目ではないことを示すフラグを含む、請求項６に記載のビデオ復号装置。
【請求項８】
前記フラグが、ゼロ長指示を含む、請求項７に記載のビデオ復号装置。
【請求項９】
前記行制御装置が、前記再構成パイプラインが前記行制御情報を参照してビデオデータの前記フレームを再構成する際に前記マーカーに遭遇しないよう、前記一連のポインタを生成するように構成される、請求項４に記載のビデオ復号装置。
【請求項１０】
前記マーカーがランレングス圧縮される、請求項４に記載のビデオ復号装置。
【請求項１１】
前記行制御情報がベクトルを含み、前記ベクトルが、ビデオデータの各フレーム内にあるマクロブロックの行数によって与えられた長さを持ち、前記ベクトルの各要素がそのフレームの対応する行のために前記一連のポインタを示す、請求項１に記載のビデオ復号装置。
【請求項１２】
前記ベクトルによって示される第１ポインタが前記ベクトルの第１要素に格納される、請求項１１に記載のビデオ復号装置。
【請求項１３】
前記行制御装置が、前記行制御情報に前記一連のポインタに含まれるポインタ数の指示を含むようにさらに構成される、請求項１に記載のビデオ復号装置。
【請求項１４】
前記行制御装置が、前記一連のポインタの各ポインタに、そのポインタによって指されている連続するマクロブロック数の指示を含むよう、さらに構成されている、請求項１に記載のビデオ復号装置。
【請求項１５】
前記解析装置が、前記符号化ビデオビットストリームがマクロブロック情報の少なくとも１つの項目に対応するエラーを含むことを判定する場合に、前記行制御装置が、マクロブロック情報の前記少なくとも１つの項目への対応するポインタを前記一連のポインタから除外するようにさらに構成されている、請求項１に記載のビデオ復号装置。
【請求項１６】
前記予測レゾルバが、ビデオデータの以前に復号されたフレームに関して、時間的予測符号化を解決して、前記行制御情報を参照することにより、ビデオデータの前記以前に復号されたフレームに対応するマクロブロック情報の項目を検索するように構成されている、請求項３に記載のビデオ復号装置。
【請求項１７】
前記予測レゾルバが、動きベクトル予測を実行するように構成されている、請求項３に記載のビデオ復号装置。
【請求項１８】
前記予測レゾルバが、イントラモード予測を実行するように構成されている、請求項３に記載のビデオ復号装置。
【請求項１９】
前記再構成パイプラインが、ビデオデータの前記フレームについて並列復号を実行し、マクロブロック情報の項目を前記メモリから並列で読み取るために前記行制御情報を参照するように構成されている、請求項１に記載のビデオ復号装置。
【請求項２０】
前記再構成パイプラインが、ビデオデータの前記フレームを前記メモリから並列で読み取るために前記行制御情報を参照するように構成されている、請求項１９に記載のビデオ復号装置。
【請求項２１】
前記再構成パイプラインが、マクロブロック情報の前記行を前記メモリから並列で読み取るために前記行制御情報を参照するように構成されている、請求項１９に記載のビデオ復号装置。
【請求項２２】
符号化ビデオビットストリームを復号する方法であって、
前記符号化ビデオビットストリームがマクロブロック行に符号化されたビデオデータのフレームを表し、
前記方法が、
前記符号化ビデオビットストリームを受信するステップと、
ビデオデータの前記フレームの再構成に使用されるマクロブロック情報の項目を生成するために、前記符号化ビデオビットストリームを解釈するステップと、
マクロブロック情報の前記項目をメモリ内に、それらが前記符号化ビデオビットストリームで受信されるのと同じ順番で格納するステップと、
マクロブロックの各行に関連する行制御情報を生成するステップであって、前記行制御情報が前記メモリに格納されているマクロブロック情報の前記項目を指す一連のポインタを含んで、前記一連のポインタを連続して読み取ると、マクロブロック情報の前記項目をラスタ走査順にアクセスするようになるステップと、
前記行制御情報を前記メモリ内にマクロブロック情報の前記項目に関連して格納するステップと、
ビデオデータの前記フレームを前記行制御情報を参照して再構成するステップと
を含む方法。
【請求項２３】
コンピューティング装置上にロードされると、前記コンピューティング装置に請求項２２の方法を実行させる、コンピュータプログラムを格納する持続性コンピュータ可読記憶媒体。
【請求項２４】
符号化ビデオビットストリームを復号するためのビデオ復号装置であって、
前記符号化ビデオビットストリームがマクロブロック行に符号化されているビデオデータのフレームを表し、
前記ビデオ復号装置が、
前記符号化ビデオビットストリームを受信ように構成された解析手段であって、ビデオデータの前記フレームの再構成に使用されるマクロブロック情報の項目を生成するために、前記符号化ビデオビットストリームを解釈するための解釈手段を含み、マクロブロック情報の前記項目を、それらが前記符号化ビデオビットストリームで受信されるのと同じ順序でメモリに格納するための解析手段と、
マクロブロックの各行に関連する行制御情報を生成して、前記行制御情報が前記メモリに格納されているマクロブロック情報の前記項目を指す一連のポインタを含んで、前記一連のポインタを連続して読み取ると、マクロブロック情報の前記項目をラスタ走査順にアクセスするようにし、前記行制御情報を、マクロブロック情報の前記項目に関連して前記メモリに格納するための行制御手段と
前記行制御情報を参照して、ビデオデータの前記フレームを再構成するための再構成パイプラインと
を備えるビデオ復号装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号化ビデオビットストリームの復号に関し、詳細には、符号化ビデオビットストリームがマクロブロック行に符号化されているビデオデータのフレームを表す場合に関する。
【背景技術】
【０００２】
Ｈ．２６４「アドバンスドビデオコーディング」規格によって代表されるビデオ符号化技術などの現代のビデオ符号化技術は、ビデオデータの高効率符号化を提供する。従って、符号化ビデオビットストリームを復号するための復号プロセスは、最初のビットストリームのビットパターンの解釈から、個々のマクロブロックに関連する情報の抽出を経て、それらのマクロブロックに基づくビデオデータのフレーム全体の再構成まで、通常、いくつかの段階を含む。
【０００３】
いくつかの周知のビデオ復号器では、ビデオ復号プロセスは、２つの段階、つまり、受信された符号化ビデオビットストリームが、マクロブロック情報を生成するために最初に解釈される第１の解析段階、および、マクロブロック情報が処理されて、ビデオデータの個々のフレームを再構成するために結合される第２のパイプライン段階に分けられている。
【０００４】
符号化ビデオビットストリーム内のマクロブロックは、それらのマクロブロックがビデオデータのフレーム内に現れるのと同じ順序（すなわち、ラスタ走査の順序）でそのビットストリーム内に表されるかも知れないが、Ｈ．２６４などのビデオ符号化規格では、フレキシブルマクロブロック配列（ＦＭＯ：Ｆｌｅｘｉｂｌｅ  Ｍａｃｒｏｂｌｏｃｋ  Ｏｒｄｅｒ）が許可され、その配列では、マクロブロックが符号化ビデオビットストリームに符号化される順序は、ラスタ走査の順序に一致しない。これは、例えば、ビデオデータのフレームが、２つ以上のスライスに符号化されているとき、それらのスライスが相互に重複している場合に生じ得る。例えば、スライスのチェッカーボードパターンが可能であり、そこでは、代替マクロブロックが符号化ビデオデータの２つの別個のスライスに属する。言い換えれば、かかる符号化ビデオビットストリームを受信するビデオ復号装置は、まず、そのフレームについて、（例えば）奇数のマクロブロックに関連する情報を受信し、続いて、そのフレームの偶数のマクロブロックに関連する情報を受信する。マクロブロックスライスのかかるインターリービングは、たとえビデオデータのスライスが送信中に消失しても、ビデオデータの元のフレームに対する妥当な近似が、欠損データを生成するための補間により、それでもなお再構成され得るので、誤り耐性の観点から有利である。このため、これらの技術は、伝送媒体が情報の損失を伴うとして知られているが、モバイルのテレビ会議など、再構成されたビデオデータの絶対的品質があまり重要でない環境で、用途を見出す。
【０００５】
しかし、符号化ビデオビットストリームでＦＭＯを許可すると、ビデオ復号装置の複雑さのレベルが増す。特に、符号化ビデオビットストリームの解析が、ビットストリーム順に実行される時に最も効率的に起こる場合、問題が生じる。これは、例えば、符号化ビデオの各スライスが、その符号化内のそれ自身を参照し得る（例えば、１つのスライス内の所与のマクロブロック行が、そのスライス内の以前の行を参照し得る）ためであろう。従って、パーサに関しては、解析プロセスの継続中に、パーサが、同一スライスの以前に識別されたマクロブロックを容易に参照し得るように、マクロブロック情報の識別された項目がビットストリーム順にメモリに書き込まれる場合、最も効率的である。さらに、スライスを受信時に処理することで、パーサがそのエントロピー復号器のために一貫性のあるコンテキストを維持できるようにして、スライス間でのコンテキスト切り替えに関連する余分な帯域幅および処理を回避する。
【０００６】
他方、再構成パイプラインで行われる、識別されたマクロブロックのビデオデータのフレームへの再構成は、ラスタ走査の順序で実行される場合に最も効率的に起こる。これは、ビデオデータの最終フレーム内で、マクロブロックが相互の関連でどこに位置するかを定義するのがラスタ走査の順序だからであり、これらのマクロブロックへの順次アクセスが、通常、例えば、フレームバッファおよび動作キャッシュの最も効率的な使用を可能にする。
【０００７】
図１は、パーサ１２０および再構成パイプライン１３０を含むビデオエンジン１１０が、符号化ビデオビットストリームを受信して、通常は表示のために、それを復号する、周知のビデオ復号装置１００を概略的に図示している。ビデオエンジン１１０は、パーサ１２０および再構成パイプライン１３０が、復号動作において自分の役割を果たす際に利用する、メモリ１４０に結合されている。図１に見られるように、パーサ１２０および再構成パイプライン１３０のどちらにもフィードバック経路が用意されており、その経路で、それらが出力する情報の一部が入力としてフィードバックされる（これらのフィードバック経路は概略にすぎず、以前の出力情報の入力としての利用は、通常、メモリ１４０へのアクセスによって実行されることに注意されたい）。パーサ１２０がビットストリーム順で最も効率的に動作し、再構成パイプライン１３０がラスタ走査順で最も効率的に動作することを決定するのは、特に、これらのフィードバックループである。
【０００８】
これらの状況を統一するための一方法は、符号化ビデオビットストリームをラスタ走査の順序で解析するようにパーサを構成することである。これは、ビデオ符号器の全体的な制御を簡略化するが、フレーム全体に関するビットストリームを受信するまで、解析を開始できないという不利な点があり、これによってビデオ復号器の待ち時間が増加する。また、インターリーブされたスライスを受信するときに、マクロブロックベースによるマクロブロック上の異なるスライス間での切り替えプロセスは、前述したエントロピー復号器でのコンテキスト切り替えを引き起こし、その結果として、メモリアクセス帯域幅が増加する。
【０００９】
代替として、パーサがビットストリーム順で動作できるようにすることが可能であり、また、再構成の一部をビットストリーム順で実行すること、すなわち、スライスをピクセルに復号した後、第２段階として非ブロック化を実行することも可能である。しかし、これは、フレームバッファへのアクセス（そのプロセスでの最高帯域幅のアクセス）がもはや順次ではなく、そのために非効率であるという不利な点を有する。さらに、再構成パイプラインでの動作キャッシュも利用し難い。
【００１０】
関連する技術上の問題についての基本的な情報は、「Ａｒｂｉｔｒａｒｙ  ｓｌｉｃｅ  ｏｒｄｅｒｉｎｇ（任意のスライス順序付け）」というウィキペディアの記事（ｈｔｔｐ：／／ｅｎ．ｗｉｋｉｐｅｄｉａ．ｏｒｇ／ｗｉｋｉ／Ａｒｂｉｔｒａｒｙ＿ｓｌｉｃｅ＿ｏｒｄｅｒｉｎｇから２０１０年３月２６日に検索）に記載がある。Ｗａｎｇｓ  Ｓ．ほかによる「Ｍａｃｒｏｂｌｏｃｋ−ｌｅｖｅｌ  ｄｅｃｏｄｉｎｇ  ａｎｄ  ｄｅｂｌｏｃｋｉｎｇ  ｍｅｔｈｏｄ  ａｎｄ  ｉｔｓ  ｐｉｐｅｌｉｎｅ  ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ｉｎ  Ｈ．２６４  ｄｅｃｏｄｅｒ  ＳＯＣ  ｄｅｓｉｇｎ」という研究論文（ジャーナル−Ｚｈｅｊｉａｎｇ  Ｕｎｉｖｅｒｓｉｔｙ  Ｓｃｉｅｎｃｅ  Ａ  ２００７、Ｖｏｌ．８、Ｎｕｍｂｅｒ  １、３６〜４１ページ）が、ＦＭＯによって生じる問題を取り上げ、後の段階がラスタ走査の順序で実行できるようにする多段ビデオ復号器を提示している。しかし、取られている方法は、エントロピー符号化ビットストリーム（例えば、ＣＡＢＡＣ）の場合、非常にコストがかかり得る入力ビットストリームの検索を伴い、そして、メモリアクセスの観点から高価なスライス間の切り替えを伴う。
【００１１】
従って、前述した、データをビデオ復号器の別の部分で好まれる順序で処理するという不利な点を回避しながら、ビデオ復号器の各段階が効率的な構成で動作できるようにする技術の提供が望ましい。
【発明の概要】
【課題を解決するための手段】
【００１２】
第１態様から見ると、本発明は、符号化ビデオビットストリームを復号するためのビデオ復号装置を提供するものであって、前記符号化ビデオビットストリームが、マクロブロック行に符号化されたビデオデータのフレームを表し、前記ビデオ復号装置が次のものを備える、つまり、前記符号化ビデオビットストリームを受信するように構成された解析装置であって、ビデオデータの前記フレームの再構成に使用されるマクロブロック情報の項目を生成するために、前記符号化ビデオビットストリームを解釈するように構成された解釈装置を備え、マクロブロック情報の前記項目をメモリ内にビットストリーム順で格納するように構成された解析装置と、マクロブロックの各行に関連する行制御情報を生成するように構成された行制御装置であって、前記行制御情報が、前記メモリに格納されているマクロブロック情報の前記項目を指す一連のポインタを含んで、前記一連のポインタを連続して読み取るとマクロブロック情報の前記項目をラスタ走査の順序でアクセスするようになり、前記行制御情報を前記メモリにマクロブロック情報の前記項目に関連して格納するように構成された行制御装置と、前記行制御情報を参照して、ビデオデータの前記フレームを再構成するように構成された再構成パイプラインとを備える。
【００１３】
本発明の技術に従って、ビデオ復号装置の解析装置が、ビデオデータのフレームが符号化されているマクロブロック行に関連する情報を含む符号化ビットストリームを受信する。解析装置は、その解釈装置によって、符号化ビデオビットストリームを解釈して、符号化ビデオビットストリームで受信するのと同じ順序でメモリに書き込まれるマクロブロック情報の項目を生成する。それ故、解析装置は、マクロブロックに対してビットストリーム順で動作し、マクロブロックのいかなる並べ換えも行う必要なく、各マクロブロックをその着信どおりに処理する。
【００１４】
マクロブロックの各行に関連する行制御情報を生成する行制御装置が提供されている。行制御装置は、メモリに格納されているマクロブロック情報の項目への一連のポインタを生成し、これらのポインタは、一連のポインタを連続して読み取ると、マクロブロック情報の項目をラスタ走査の順序でアクセスする順序で配列されている。この行制御情報は、マクロブロック情報の項目に関連してメモリ内に格納される、つまり、マクロブロック情報のそれらの項目がアクセスされると、行制御情報もアクセスされ得るため、特に、マクロブロック情報の項目へのアクセスがラスタ走査順に起こることを可能にすることを意味する。これは特に、ビデオ復号装置の再構成パイプラインに有効であり、それは、マクロブロック情報に基づいてビデオデータのフレームを再構成する際に、マクロブロックのラスタ走査順にそれを行う場合、最も効率的に動作する。
【００１５】
従って、解析装置は、マクロブロック情報をビットストリーム順に処理することが可能であり、マクロブロック情報の項目を、いかなる並べ替えをも実行する必要なく、それらが符号化ビデオビットストリームで受信されるのと同じ順序でメモリに効率的に格納する。同時に、メモリに格納されているマクロブロック情報の項目に関連した行制御情報の提供は、マクロブロック情報のそれらの項目への後続アクセス（例えば、ビデオデータのフレームの再構成時に再構成パイプラインによって）がラスタ走査順に起こり得ることを意味し、このように、再構成が効率的な構成で動作できるようにして、ビデオ復号装置のエネルギー消費を削減し、ビデオ復号装置内で必要なメモリ帯域幅を削減する。
【００１６】
本発明の技術は、マクロブロックが一方ではメモリから直接ビットストリーム順（メモリにビットストリーム順に書き込まれている）に読み取られ得るが、他方、メモリから（行制御情報への参照により）ラスタ走査の順序でも検索され得るため、マクロブロックが符号化ビデオビットストリームに符号化される順序が、それらのマクロブロックがビデオデータのフレーム内に現れるラスタ走査の順序に一致しない場合に、特に役立つ。本発明の技術は、ビットストリーム順がラスタ走査の順序と同一である（および、行制御情報が、その後、既にラスタ走査の順序であるマクロブロック情報の一連の項目を、メモリに格納されていた順に示す）状況にも適用可能であるが、本発明の実施形態では、ビットストリーム順およびラスタ走査の順序は、相互に異なる。
【００１７】
解析装置の解釈装置によって実行される符号化ビデオビットストリームの解釈は、特に、ビデオビットストリームの符号化に使用された特定のコーデックに基づいて、いくつかの形を取り得るが、本発明の実施形態では、解釈装置は、前記符号化ビデオストリームのマクロブロック間の予測符号化を解決するように構成された予測レゾルバを備える。符号化ビデオストリームのマクロブロック間での予測符号化は、あるマクロブロックの情報内容が、別のマクロブロックの情報内容を予測するために使用され得、それ故、後のマクロブロックの符号化に必要な情報量を削減するため、ビデオビットストリームのより効率的な符号化を可能にする１つの技術である。かかる予測符号化は、例えば、行予測を含み、そこでは、マクロブロックの現在の行のマクロブロックが、同一フレーム内のマクロブロックの以前の行に関して符号化されており、または、あるフレーム内のマクロブロックが、以前のフレーム内の同一位置のマクロブロックに関して予測される時間的（または「同一位置（ｃｏ−ｌｏｃａｔｅｄ）」）予測を含み得る。
【００１８】
いくつかの実施形態では、前記解析装置はさらに、マクロブロック情報の項目を前記メモリに格納する際に、マクロブロック情報の前記項目が、前記メモリ内のマクロブロック情報の先行項目にラスタ走査の順序で連続して続いていない場合、マクロブロック情報の前記項目に先行して前記メモリ内にマーカーを格納するように構成され、前記マーカーは、ラスタ走査の順序で、マクロブロック情報の前記先行項目とマクロブロック情報の前記項目との間に入るマクロブロック数を示す。
【００１９】
従って、解析装置が、マクロブロック情報の項目をメモリに格納する際に、マクロブロック情報のその項目が、メモリに格納されているマクロブロック情報の先行項目にラスタ走査の順序で連続して続いていない場合、例えば、現在復号中のビデオデータのスライスが、フレーム内の代替マクロブロックをチェッカーボード方式で符号化するので、解析装置は、現在復号中のマクロブロック情報の項目に先行してマーカーを格納するように構成され、その場合、マーカーは、ラスタ走査順に見たときに、スキップされているマクロブロック数を示す。それ故、解析装置は、マクロブロック情報の項目を、それらが符号化ビデオビットストリームで受信される順に（すなわち、ビットストリーム順に）メモリ内に格納し続ける一方、メモリに格納される追加のマーカーは、ラスタ走査順に（すなわち、ビデオデータの元のフレーム内で）見たとき、マクロブロック情報の項目のレイアウトを示す。マクロブロック情報の項目と共に格納されているこの追加情報は、それらがメモリ内で連続して読み取られることを可能にするが、それらがビデオデータのフレーム内にどのように現れるかについての情報を含む。
【００２０】
マーカーをメモリ内にこの方式で格納することには、いくつかの利点があり得、そして、かかる一実施形態では、前記予測レゾルバは、前記符号化ビデオストリームのマクロブロック間での予測符号化を、少なくとも１つの前記マーカーを含め、前記メモリに格納されているマクロブロック情報の一連の項目を参照して解決するように構成される。
【００２１】
予測レゾルバが参照するマクロブロック情報の一連の項目内に少なくとも１つのマーカーが存在すると、予測レゾルバは、ビデオデータのフレーム内のどこにマクロブロックが位置するかを知ることにより、予測された符号化を解決できるようになるが、まだそれらの読み取りは順次に行われる。例えば、予測レゾルバが、マクロブロックの以前の行を参照する必要がある場合、マーカーは、予測レゾルバがその以前の行から読み取ったマクロブロックの相対位置を決定できるようにする。
【００２２】
マーカーはいくつかの形をとり得るが、一実施形態では、マーカーは、マクロブロック情報項目のデータ形式を持つことが理解されるであろう。マーカーに対して、マクロブロック情報の項目と同じデータ形式を使用すると、マーカーまたはマクロブロック情報の本物の項目のいずれが書き込み／読み取り中であるかにかかわらず、同一のデータ形式が存在することになるため、マクロブロック情報項目の書き込みおよび読み取りの両方に対して利点がある。
【００２３】
マーカーがマクロブロック情報項目のデータ形式を持つ場合、いくつかの実施形態では、マーカーは、前記マーカーがマクロブロック情報の項目ではないことを示すフラグを含む。これは、マクロブロック情報の項目とマーカーが容易に区別され得る、簡易な読み取りプロセスを可能にする。
【００２４】
フラグはいくつかの形を取り得るが、一実施形態では、フラグはゼロ長の指示を含むことが理解されるであろう。マクロブロック情報の項目は、その中に符号化されているデータの複雑さに応じて異なる長さを持ち得るが、マクロブロック情報の本物の項目は有限長であり、従って、ゼロ長指示の使用は、マーカーがマクロブロック情報の本物の項目ではないことを示すフラグを実装するための便利な方法を提供する。
【００２５】
行制御情報の提供によって、後続プロセス（例えば、再構成パイプラインで実行される処理など）がマクロブロック情報の項目にラスタ走査の順序でアクセスできるようになり、従って、メモリ内に格納されているいかなるマーカー（マクロブロックのビットストリーム順とラスタ走査の順序との間の相違を効果的に示す）もそれら後続プロセスでは必要とされない。再構成パイプラインをかかるマーカーを無視するように構成することは可能であるが、それらが再構成パイプラインで単に見られなければ、好都合である。このため、いくつかの実施形態では、前記行制御装置は、前記行制御情報を参照してビデオデータの前記フレームを再構成する際に、前記再構成パイプラインが前記マーカーに遭遇しないように、前記一連のポインタを生成するよう構成される。つまり、一連のポインタに従うと、マーカーを読み取ることにならない。
【００２６】
マーカーがメモリに格納される際に取る特定の形式は、様々な形式を取り得るが、いくつかの実施形態では、マーカーはランレングス圧縮されていることが理解されるであろう。マーカーは、実行すべき比較的単純なタスクを持ち、従って、それが少量のメモリを占有するだけであれば好都合であり、そして、ランレングス圧縮は、これを実現するための効率的な方法である。
【００２７】
行制御情報はいくつかの形を取り得るが、本発明の実施形態では、行制御情報はベクトルを含み、前記ベクトルは、ビデオデータの各フレーム内にあるマクロブロックの行数によって与えられる長さを有し、前記ベクトルの各要素が、そのフレームの対応する行のための前記一連のポインタを示すことが理解されるであろう。
【００２８】
従って、１つのベクトルがビデオデータの各フレームに対して提供され得、そのベクトル長はフレーム内のマクロブロックの行数によって決定され、そして、そのベクトルの各要素はその結果、各行に対応する一連のポインタを指す。これは、行制御情報の管理、書き込みおよび読み取りを容易に行い得る形式を提示する。
【００２９】
いくつかのかかる実施形態では、前記ベクトルで示される第１ポインタが、前記ベクトルの第１要素に格納される。ベクトルは、フレームの所与の行に対するいくつかのポインタを示し得るが、その行に対して、メモリに格納されているマクロブロック情報の項目が既にラスタ走査の順序（すなわち、ラスタ走査の順序に一致するビットストリーム順）であれば、所与の行に対して１つのポインタのみが必要な状況があり得る。この状況では、行制御情報に対する読み取りプロセスは、この行に必要な単一のポインタがベクトル自体に格納されていれば、単純化される。
【００３０】
いくつかの実施形態では、前記行制御装置はさらに、前記一連のポインタに含まれるポインタ数の指示を前記行制御情報に含めるように構成される。その連続に含まれるポインタ数の指示を提供すると、その一連のポインタに対する読み取りプロセスが容易になる。
【００３１】
いくつかの実施形態では、前記行制御装置はさらに、前記一連のポインタの各ポインタに、そのポインタによって指される連続するマクロブロック数の指示を含めるように構成される。各ポインタによって指される連続するマクロブロック数の指示により、行制御情報を用いてメモリからマクロブロック情報の項目を読み取る後続プロセスは、その後続プロセスで連続するマクロブロックの各実行の終了を識別する（例えば、マーカーに遭遇するまで読み取ることにより）必要なく、マクロブロック情報の項目を単純に読み取ることが可能になる。
【００３２】
メモリ内のマクロブロック項目のラスタ走査の順序を示す一連のポインタはさらに、ビットストリーム内のエラーが効率的に処理され得るメカニズムを提供し、そして、いくつかの実施形態では、前記行制御装置はさらに、前記符号化ビデオビットストリームがマクロブロック情報の少なくとも１つの項目に対応するエラーを含むことを前記解析装置が判断した場合、マクロブロック情報の前記少なくとも１つの項目への対応するポインタを前記一連のポインタから除外するように構成される。このため、符号化ビデオビットストリーム内のエラーの結果として破損しているマクロブロック情報の項目は、対応するポインタが一連のポインタから除外されることにより、後続の読み取りプロセスから簡単かつ効率的に除外され得る。
【００３３】
解釈装置内の予測レゾルバはいくつかの形を取り得るが、いくつかの実施形態では、予測レゾルバは、ビデオデータの以前に復号されたフレームに関して時間的予測符号化を解決するように構成され、そして、前記予測レゾルバは、前記行制御情報を参照することにより、ビデオデータの前記以前に復号されたフレームに対応するマクロブロック情報の項目を検索するように構成される。それ故、行制御情報は、予測レゾルバが、既にメモリに格納されているビデオデータの以前に復号されたフレームにアクセスするための効率的なメカニズムを提供する。
【００３４】
予測レゾルバは様々な種類の予測を実行するように構成可能であり、いくつかの実施形態では、前記予測レゾルバは、動きベクトル予測を実行するように構成されることが理解されるであろう。さらに、いくつかの実施形態では、予測レゾルバは、イントラモード予測を実行するように構成される。
【００３５】
行制御情報は、メモリに格納されているマクロブロック情報の項目に対して特に効率的な読み取りメカニズムを提供し、いくつかの実施形態では、前記再構成パイプラインが、ビデオデータの前記フレームについて並列復号を実行して、前記メモリからマクロブロック情報の項目を並列で読み取るために前記行制御情報を参照するように構成される。再構成パイプラインによって実行される並列復号は、ビデオ復号装置を経由したビデオデータのより大きなスループットを可能にする。
【００３６】
メモリからのマクロブロック情報のかかる並列読み取りは、いくつかの方法で行われ得る。一実施形態では、前記再構成パイプラインが、前記メモリからビデオデータの前記フレームを並列で読み取るために、前記行制御情報を参照するように構成される。別の実施形態では、前記再構成パイプラインは、前記メモリからマクロブロック情報の前記行を読み取るために前記行制御情報を参照するように構成される。
【００３７】
第２態様から見ると、本発明は符号化ビデオビットストリームの復号方法を提供するものであって、前記符号化ビデオビットストリームが、マクロブロック行に符号化されたビデオデータのフレームを表し、前記方法が、次のステップを含む、つまり、前記符号化ビデオビットストリームを受信するステップと、ビデオデータの前記フレームの再構成に使用されるマクロブロック情報の項目を生成するために前記符号化ビデオビットストリームを解釈するステップと、マクロブロック情報の前記項目を、それらが前記符号化ビデオビットストリームで受信されるのと同じ順序でメモリに格納するステップと、マクロブロックの各行に関連する行制御情報を生成するステップであって、前記行制御情報が、前記メモリに格納されているマクロブロック情報の前記項目への一連のポインタを含んで、前記一連のポインタを連続して読み取ると、マクロブロック情報の前記項目をラスタ走査の順序でアクセスするようになるステップと、前記行制御情報をマクロブロック情報の前記項目に関連して前記メモリに格納するステップと、前記行制御情報を参照してビデオデータの前記フレームを再構成するステップとを含む。
【００３８】
第３態様から見ると、本発明は、コンピュータプログラムを格納する持続性コンピュータ可読記憶媒体を提供するもので、これは、コンピューティング装置にロードされると、前記コンピューティング装置に第２態様の方法を実行させる。
【００３９】
第４態様から見ると、本発明は、符号化ビデオビットストリームを復号するためのビデオ復号装置を提供するものであって、前記符号化ビデオビットストリームが、マクロブロック行に符号化されたビデオデータのフレームを表し、前記ビデオ復号装置が、次の手段を備える、つまり、前記符号化ビデオビットストリームを受信するための解析手段であって、ビデオデータの前記フレームの再構成に使用されるマクロブロック情報の項目を生成するために前記符号化ビデオビットストリームを解釈するための解釈手段を備え、マクロブロック情報の前記項目を、それらが前記符号化ビデオビットストリームで受信されるのと同じ順序でメモリに格納するための解析手段と、マクロブロックの各行に関連して行制御情報を生成するための行制御手段であって、前記行制御情報が、前記メモリに格納されているマクロブロック情報の前記項目への一連のポインタを含んで、前記一連のポインタを連続して読み取ると、マクロブロック情報の前記項目をラスタ走査の順序でアクセスするようにし、前記行制御情報をマクロブロック情報の前記項目に関連して前記メモリに格納するための行制御手段と、前記行制御情報を参照してビデオデータの前記フレームを再構成するための再構成パイプライン手段とを備える。
【００４０】
本発明は、さらに、ほんの一例として、添付の図に例示のとおり、その実施形態に関連して説明される。
【図面の簡単な説明】
【００４１】
【図１】従来技術に従ったビデオ復号装置を概略的に示す図である。
【図２】一実施形態におけるビデオ復号装置での解析装置のいくつかのコンポーネントおよびメモリを概略的に示す図である。
【図３】一実施形態における、ラスタ走査順、ビットストリーム順でのマクロブロック情報、およびマクロブロック情報の項目がメモリに格納される方法を概略的に示す図である。
【図４】一実施形態における符号化ビデオデータのスライスのチェックボードパターンおよび、ｍｂ情報バッファ内のその対応する記憶パターンを概略的に示す図である。
【図５】一実施形態における、フレキシブルマクロブロック配列を持たない、メモリ内のｍｂ情報バッファの内容例を示す図である。
【図６】一実施形態における、フレキシブルマクロブロック配列を持つ、メモリ内のｍｂ情報バッファの内容例を示す図である。
【図７】一実施形態において、解析装置によって実行される一連のステップを示す図である。
【発明を実施するための形態】
【００４２】
図２は、一実施形態に従ったビデオ復号装置２００の様々なコンポーネントを概略的に示す。簡単にするため、パーサ２０５およびメモリ２１０のみが示されている。ビデオ復号装置の他の主要で重要なコンポーネント、すなわち再構成パイプラインは、明瞭にするため省略されている。
【００４３】
パーサ２０５は、符号化ビデオビットストリームが、符号化ビデオビットストリームの解釈を実行するパーサ２０５の実質的な部分に渡される前に、それを一時的に格納するバッファ２１５を介して、符号化ビデオビットストリームを受信する。これら追加のコンポーネントは、ビット復号器２２０、インタープリタ２２５および予測装置２３０によって概略的に表されている。一般に、ビット復号器２２０、インタープリタ２２５および予測装置２３０はまとめて解釈装置を形成し得ると考えられている。
【００４４】
ビット復号器２２０は、ビットストリームを形成する一連のビットの最初の解釈（例えば、受信したパック形式の一連のビットを対応するアンパック形式に変換）を実行するように構成される。インタープリタ装置２２５は、ビットストリーム内のマクロブロック情報を識別して、残余情報を抽出することにより、本当の解釈プロセスを開始する。残余情報は、インタープリタ２２５によってメモリ２１０内の残余バッファ２４０に書き込まれる。パーサ２０５内の解釈の最終段階は、予測装置２３０によって実行される。予測装置２３０は、マクロブロック情報（ｍｂ情報）の項目を生成し、それは、その後、メモリ２１０内のｍｂ情報バッファ２５０に書き込まれる。予測装置２３０によって実行される予測の一部は、時間的予測を含み、そこで、以前に復号されたフレームから同一位置に配置されたマクロブロック情報がｍｂ情報バッファ２５０から検索される。予測装置２３０によって実行される別の種類の予測は、行予測であり、そこで、現在復号中のフレームの以前の行に属するマクロブロック情報の項目が検索され、復号中の現在の行の内容を予測するために使用される。
【００４５】
パーサ２０５は、行制御装置２３５も備える。行制御装置２３５は、予測装置２３０で生成されるマクロブロック情報の項目をモニターし、行制御情報を断続的に生成して、その情報をｍｂ情報バッファ２５０に、予測装置２３０でそこに書き込み中のマクロブロック情報の項目に関連して、格納する。重要なことには、行制御装置２３５は、予測装置２３０によってｍｂ情報バッファ２５０に格納されているマクロブロック情報の項目を指す一連のポインタを含む行制御情報を生成し、その一連のポインタは、これらが順番に読み取られると、マクロブロック情報の項目がラスタ走査の順序でアクセスされるようにする。従って、例えば、再構成パイプラインがメモリ２１０内のｍｂ情報バッファ２５０をアクセスする際に、それは、その後マクロブロック情報の項目をラスタ走査の順序で検索するために、行制御情報（ｍｂｉｎｆｏ＿ｌｉｎｅ）を用いてこれを行い得る。逆に言えば、解析装置２０５は、マクロブロック情報の項目を、それらをビットストリーム内で受信する順番に、メモリ２１０内に書き込むことに留意されたい。
【００４６】
再構成パイプラインによるマクロブロック情報の項目のメモリ２１０からの検索も、並列化し得る（図２に破線のアクセス回線で概略的に示す）。それ故、行制御情報の２つ以上の項目（ｍｂｉｎｆｏ＿ｌｉｎｅ）が、再構成のスループットを増大させるために、再構成パイプラインによって一度にアクセスされ得る。これは、マクロブロック情報の複数の行への並列アクセス、および／または複数のフレームへの並列アクセスを伴い得る。
【００４７】
解析装置２０５はさらに、ｍｂ情報バッファ２５０に格納されているマクロブロック情報の項目間に、マクロブロック情報のそれら２つの項目がラスタ走査の順序で相互に連続して続いていなければ、マーカーを格納するように構成される。これらのマーカーについては、図３に関連して、より詳細に説明する。
【００４８】
図３に、一連のマクロブロックに対するラスタ走査の順序とビットストリーム順との間の相違を概略的に示す。６つのマクロブロックの組３００が、２つのスライスに符号化されている（それぞれ、斜線およびドットの模様の箱で示す）。これはそれから、ビットストリーム順３０５では、先ず、斜線のマクロブロック１、３および６が受信されて、その後ドットのマクロブロック２、４および５が続くことを意味する。そして、一連のマクロブロック３１０は、マクロブロック情報のこれらの項目が、ｍｂ情報バッファ２５０にどのように書き込まれるかを示す。左から右に読み取ると、マクロブロック１が最初に書き込まれ、続いて、マクロブロック情報の次の項目がラスタ走査の順序で直後に続いていないことを示すマーカーが続く。このマーカーは、マクロブロック情報の項目と同じデータ形式を持つが、そのヘッダー内にはゼロ長（ｌｅｎ＝０）を持つとしてラベル付けされて、いくつのマクロブロックがスキップされているかを示す（ラスタ走査の順序で見た場合）。同様に、マクロブロック３の後に、２つのマクロブロックがスキップされていることを示すマーカーが続く。マクロブロックデータの項目をｍｂ情報バッファにこのように書き込むと、解析装置が、マクロブロックを、それらが受信されたビットストリーム順３０５で処理できるようになる。さらに、予測装置２３０が、予測動作を実行するために、マクロブロックデータのこれらの項目を順番に読み取る必要がある場合、マクロブロック情報の項目３１０は、簡単に順番に読み取ることが可能である。
【００４９】
行制御装置２３５は、ｍｂ情報バッファ２５０に書き込み中のマクロブロック情報の項目をモニターする。特に、マクロブロックの完全な行がｍｂ情報バッファに書き込まれている場合、行制御装置２３５は、行制御情報ｍｂｉｎｆｏ＿ｌｉｎｅを、その行に対応するマクロブロック情報の項目に関連して、ｍｂ情報バッファ２５０に書き込む。行制御情報ｍｂｉｎｆｏ＿ｌｉｎｅは、各々がｍｂ情報バッファ２５０内のマクロブロック情報の項目を指す一連のポインタ（ｍｂｉｎｆｏ＿ｓｔｒｉｐ）を示すベクトルを含む。ｍｂｉｎｆｏ＿ｓｔｒｉｐポインタは、この一連のポインタ３２０が読み取られるとき、参照されているマクロブロック情報の項目がラスタ走査順に読み取られるように、配列されている。
【００５０】
図４は、代替マクロブロックが第１スライスにチェッカーボード方式で符号化されているマクロブロック情報４００のフレームを概略的に示す。このようなスライス符号化は、伝送時のデータ損失が調整されて、復号されたビデオの妥当な品質が（例えば、補間により）なお提供され得るため、損失伝送媒体のコンテキストで使用される場合に、特に利点があり得る。前述したとおり、マクロブロック情報の項目１、３および５は、マクロブロック１とマクロブロック３との間のマクロブロックがスキップされていることを示す介在マーカーを含めて、ｍｂ情報バッファ２５０に書き込まれている。マクロブロック５に続くマーカーは、このスライスでマクロブロック６がスキップされていることを示す。図４に例示されているマクロブロック情報の一連の項目４１０は、マクロブロック情報の次の行（８、１０、１２）が解析されてｍｂ情報バッファに書き込まれている間に、マクロブロック情報の以前に解析された行（１、３、５）がどのように読み取られるかを示す。これは、行予測プロセスの一部であり、そこでは、例えば、以前の行の隣接するマクロブロック１および３を参照して、マクロブロック８が解釈される。また、マクロブロック５と８との間に２つの「スキップ１」標識（１つの「スキップ２」標識の代わりに）があり、これが各行を個別に処理できるようにすることにも留意されたい。
【００５１】
図５は、受信した符号化ビデオビットストリームがフレキシブルマクロブロック配列を含まない状況で、ｍｂ情報バッファ内に格納されているｍｂ情報の内容例を示す。その内容は、基本フレーム情報（例えば、フレームタイプ、インタレース方式など）を含むフレームヘッダーで始まり、そのフレームに関する他の情報がどこで見つけられるかを示す。ｍｂ情報構造では、フレームヘッダーに続いて、ｍｂｉｎｆｏ＿ｌｉｎｅベクトルを含む。このベクトルは、フレーム内のマクロブロック行数に対応する長さを有し、行のためのストリップを見つける方法に関する情報を含む。この情報は、マクロブロック情報の対応する項目がどこに格納されているかを示すポインタの形式である。ｍｂｉｎｆｏ＿ｌｉｎｅベクトルに続くのは、次のスライスのための情報（例えば、スライスＩＤ、マクロブロック数およびスライスタイプ）を提供するスライスヘッダーである。その後、そのスライスに属するマクロブロック情報の項目が続く。スライスに属するマクロブロック情報の項目の組が続くスライスヘッダーを使用して、フレーム全体は、このように構築される。また、行内でスライス変更が生じる場合には、ｍｂｉｎｆｏ＿ｓｔｒｉｐ項目が使用される。
【００５２】
図６は、フレキシブルマクロブロック配列を含まないマクロブロック情報のフレームに対するｍｂ情報バッファの内容を示す。一般的な構造は、最後に連続して格納されている一連のｍｂｉｎｆｏ＿ｓｔｒｉｐ項目を除いて、図５に関連して説明した内容と同様である。これらのｍｂｉｎｆｏ＿ｓｔｒｉｐ項目は、行全体が完成すると、行制御装置によって生成され、ｍｂｉｎｆｏ＿ｌｉｎｅベクトルには、これらｍｂｉｎｆｏ＿ｓｔｒｉｐ項目の各々を指すポインタが投入され得る（図３に関連して説明のとおり）。
【００５３】
図７は、パーサ２０５（図２に示す）によって実行される一連のステップを概略的に示す。フローは、パーサが符号化ビデオビットストリームを受信するステップ７００から始まり、その符号化ビデオビットストリームは一時的にバッファ２１５に格納される。ステップ７０５では、解釈の第１段階（すなわち、ビット復号および残余抽出）が実行される。次にステップ７１０で、受信した符号化ビデオビットストリームからマクロブロック情報の項目を生成するために必要な予測（予測装置２３０で）があるか否かを判定する。予測が必要な場合、フローは、メモリ２１０に格納されているｍｂ情報バッファ２５０から検索されたマクロブロック情報の以前に格納された項目に関連して、時間的予測および／または行予測が実行されるステップ７１５を経て進む。フローはその後、ステップ７２０（ここは、予測が必要ない場合、フローがステップ７１０からも直接進む）に進む。ステップ７２０で、マクロブロック情報（ｍｂ情報）の項目が生成され、ステップ７２５で、格納のために、ｍｂ情報バッファ２５０に渡される。それらは行制御装置２３５にも渡され、それは、マクロブロックの行毎の構築をモニターする。ステップ７３０では、マクロブロック情報の完全な行が、現在ｍｂ情報バッファ２５０に格納されているかどうかを、行制御装置２３５によって判定する。まだの場合、フローはその後ステップ７００に単に戻る。マクロブロック情報の完全な行がｍｂ情報バッファ２５０に格納されている場合は、ステップ７３５で、行制御装置２３５がｍｂｉｎｆｏ＿ｌｉｎｅベクトルおよび必要なｍｂｉｎｆｏ＿ｓｔｒｉｐポインタを生成して、これらをｍｂ情報バッファ２５０に格納する。ｍｂｉｎｆｏ＿ｌｉｎｅベクトルの生成は、通常、以前に作成されたベクトルの要素の投入を含むことを注意されたい。
【００５４】
それ故、本発明の技術によれば、ビデオ復号装置における解析装置は、マクロブロック情報をビットストリーム順に処理することが可能であり、他方、再構成パイプラインはマクロブロック情報をラスタ走査順に処理し得る。従って、両方のコンポーネントが、それらのより効率的な構成で動作することが可能であり、ビデオ復号装置のエネルギー消費を削減し、そのビデオ復号装置内で必要なメモリ帯域幅を削減する。
【００５５】
本明細書では特定の実施形態が説明されているが、本発明はそれに限定されず、また、それに対する修正および追加を本発明の範囲内で行い得ることを理解されるであろう。例えば、以下の従属請求項の特徴の様々な組み合わせが、本発明の範囲から逸脱することなく、独立請求項の特徴を利用して作成され得る。
【符号の説明】
【００５６】
２００  ビデオ復号装置
２０５  パーサ
２１０  メモリ
２１５  バッファ
２２０  ビット復号器
２２５  インタープリタ
２３０  予測装置
２４０  残余バッファ
２５０  ｍｂ情報バッファ
【図１】
0005680504.tif 000002
【図２】
0005680504.tif 000003
【図３】
0005680504.tif 000004
【図４】
0005680504.tif 000005
【図５】
0005680504.tif 000006
【図６】
0005680504.tif 000007
【図７】
0005680504.tif 000008