(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5680504
(24)【登録日】2015年1月16日
(45)【発行日】2015年3月4日
(54)【発明の名称】ビデオ復号装置および方法
(51)【国際特許分類】
H04N 19/423 20140101AFI20150212BHJP
H04N 19/44 20140101ALI20150212BHJP
H04N 19/436 20140101ALI20150212BHJP
【FI】
H04N19/423
H04N19/44
H04N19/436
【請求項の数】24
【外国語出願】
【全頁数】17
(21)【出願番号】特願2011-176893(P2011-176893)
(22)【出願日】2011年8月12日
(65)【公開番号】特開2012-44661(P2012-44661A)
(43)【公開日】2012年3月1日
【審査請求日】2013年9月17日
(31)【優先権主張番号】1013625.7
(32)【優先日】2010年8月13日
(33)【優先権主張国】GB
(73)【特許権者】
【識別番号】504394342
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100064908
【弁理士】
【氏名又は名称】志賀 正武
(74)【代理人】
【識別番号】100089037
【弁理士】
【氏名又は名称】渡邊 隆
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(72)【発明者】
【氏名】ポントゥス・ボリ
(72)【発明者】
【氏名】ドミニク・ヒューゴ・サイムス
【審査官】
坂東 大五郎
(56)【参考文献】
【文献】
特開2006−345123(JP,A)
【文献】
特開2006−279574(JP,A)
【文献】
特表2010−515302(JP,A)
【文献】
特開2008−067026(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00−19/98
(57)【特許請求の範囲】
【請求項1】
符号化ビデオビットストリームを復号するためのビデオ復号装置であって、
前記符号化ビデオビットストリームがマクロブロック行に符号化されたビデオデータのフレームを表し、
前記ビデオ復号装置が、
前記符号化ビデオビットストリームを受信するように構成された解析装置であって、ビデオデータの前記フレームの再構成のために使用されるマクロブロック情報の項目を生成するために、前記符号化ビデオビットストリームを解釈するように構成された解釈装置を備え、マクロブロック情報の前記項目をメモリ内にビットストリーム順に格納するように構成された解析装置と、
マクロブロックの各行に関連した行制御情報を生成するように構成された行制御装置であって、前記行制御情報が、前記メモリ内に格納されているマクロブロック情報の前記項目を指す一連のポインタを含み、前記一連のポインタを順次読み取ると、マクロブロック情報の前記項目をラスタ走査順にアクセスするようになり、マクロブロック情報の前記項目に関連して、前記行制御情報を前記メモリに格納するように構成された行制御装置と、
前記行制御情報を参照して、ビデオデータの前記フレームを再構成するように構成された再構成パイプラインと
を備えるビデオ復号装置。
【請求項2】
前記ビットストリーム順および前記ラスタ走査の順序が相互に異なる、請求項1に記載のビデオ復号装置。
【請求項3】
前記解釈装置が、前記符号化ビデオビットストリームのマクロブロック間での予測符号化を解決するように構成された予測レゾルバを備える、請求項1に記載のビデオ復号装置。
【請求項4】
前記解析装置が、マクロブロック情報の項目を前記メモリ内に格納する際に、マクロブロック情報の前記項目が、前記メモリ内で先行するマクロブロック情報の項目にラスタ走査の順序で連続して続いていない場合、マクロブロック情報の前記項目に先行する前記メモリ内にマーカーを格納するようにさらに構成され、前記マーカーが、ラスタ走査の順序で、マクロブロック情報の前記先行項目とマクロブロック情報の前記項目との間に入るマクロブロック数を示す、請求項1乃至3のいずれか1項に記載のビデオ復号装置。
【請求項5】
符号化ビデオビットストリームを復号するためのビデオ復号装置であって、
前記符号化ビデオビットストリームがマクロブロック行に符号化されたビデオデータのフレームを表し、
前記ビデオ復号装置が、
前記符号化ビデオビットストリームを受信するように構成された解析装置であって、ビデオデータの前記フレームの再構成のために使用されるマクロブロック情報の項目を生成するために、前記符号化ビデオビットストリームを解釈するように構成された解釈装置を備え、マクロブロック情報の前記項目をメモリ内にビットストリーム順に格納するように構成された解析装置と、
マクロブロックの各行に関連した行制御情報を生成するように構成された行制御装置であって、前記行制御情報が、前記メモリ内に格納されているマクロブロック情報の前記項目を指す一連のポインタを含み、前記一連のポインタを順次読み取ると、マクロブロック情報の前記項目をラスタ走査順にアクセスするようになり、マクロブロック情報の前記項目に関連して、前記行制御情報を前記メモリに格納するように構成された行制御装置と、
前記行制御情報を参照して、ビデオデータの前記フレームを再構成するように構成された再構成パイプラインと
を備え、
前記解釈装置が、前記符号化ビデオビットストリームのマクロブロック間での予測符号化を解決するように構成された予測レゾルバを備え、
前記解析装置が、マクロブロック情報の項目を前記メモリ内に格納する際に、マクロブロック情報の前記項目が、前記メモリ内で先行するマクロブロック情報の項目にラスタ走査の順序で連続して続いていない場合、マクロブロック情報の前記項目に先行する前記メモリ内にマーカーを格納するようにさらに構成され、前記マーカーが、ラスタ走査の順序で、マクロブロック情報の前記先行項目とマクロブロック情報の前記項目との間に入るマクロブロック数を示し、
前記予測レゾルバが、少なくとも1つの前記マーカーを含め、前記メモリ内に格納されているマクロブロック情報の一連の項目を参照して、前記符号化ビデオビットストリームのマクロブロック間での前記予測符号化を解決するように構成される、ビデオ復号装置。
【請求項6】
前記マーカーが、マクロブロック情報データ形式の項目を持つ、請求項4に記載のビデオ復号装置。
【請求項7】
前記マーカーが、前記マーカーがマクロブロック情報の項目ではないことを示すフラグを含む、請求項6に記載のビデオ復号装置。
【請求項8】
前記フラグが、ゼロ長指示を含む、請求項7に記載のビデオ復号装置。
【請求項9】
前記行制御装置が、前記再構成パイプラインが前記行制御情報を参照してビデオデータの前記フレームを再構成する際に前記マーカーに遭遇しないよう、前記一連のポインタを生成するように構成される、請求項4に記載のビデオ復号装置。
【請求項10】
前記マーカーがランレングス圧縮される、請求項4に記載のビデオ復号装置。
【請求項11】
前記行制御情報がベクトルを含み、前記ベクトルが、ビデオデータの各フレーム内にあるマクロブロックの行数によって与えられた長さを持ち、前記ベクトルの各要素がそのフレームの対応する行のために前記一連のポインタを示す、請求項1に記載のビデオ復号装置。
【請求項12】
前記ベクトルによって示される第1ポインタが前記ベクトルの第1要素に格納される、請求項11に記載のビデオ復号装置。
【請求項13】
前記行制御装置が、前記行制御情報に前記一連のポインタに含まれるポインタ数の指示を含むようにさらに構成される、請求項1に記載のビデオ復号装置。
【請求項14】
前記行制御装置が、前記一連のポインタの各ポインタに、そのポインタによって指されている連続するマクロブロック数の指示を含むよう、さらに構成されている、請求項1に記載のビデオ復号装置。
【請求項15】
前記解析装置が、前記符号化ビデオビットストリームがマクロブロック情報の少なくとも1つの項目に対応するエラーを含むことを判定する場合に、前記行制御装置が、マクロブロック情報の前記少なくとも1つの項目への対応するポインタを前記一連のポインタから除外するようにさらに構成されている、請求項1に記載のビデオ復号装置。
【請求項16】
前記予測レゾルバが、ビデオデータの以前に復号されたフレームに関して、時間的予測符号化を解決して、前記行制御情報を参照することにより、ビデオデータの前記以前に復号されたフレームに対応するマクロブロック情報の項目を検索するように構成されている、請求項3に記載のビデオ復号装置。
【請求項17】
前記予測レゾルバが、動きベクトル予測を実行するように構成されている、請求項3に記載のビデオ復号装置。
【請求項18】
前記予測レゾルバが、イントラモード予測を実行するように構成されている、請求項3に記載のビデオ復号装置。
【請求項19】
前記再構成パイプラインが、ビデオデータの前記フレームについて並列復号を実行し、マクロブロック情報の項目を前記メモリから並列で読み取るために前記行制御情報を参照するように構成されている、請求項1に記載のビデオ復号装置。
【請求項20】
前記再構成パイプラインが、ビデオデータの前記フレームを前記メモリから並列で読み取るために前記行制御情報を参照するように構成されている、請求項19に記載のビデオ復号装置。
【請求項21】
前記再構成パイプラインが、マクロブロック情報の前記行を前記メモリから並列で読み取るために前記行制御情報を参照するように構成されている、請求項19に記載のビデオ復号装置。
【請求項22】
符号化ビデオビットストリームを復号する方法であって、
前記符号化ビデオビットストリームがマクロブロック行に符号化されたビデオデータのフレームを表し、
前記方法が、
前記符号化ビデオビットストリームを受信するステップと、
ビデオデータの前記フレームの再構成に使用されるマクロブロック情報の項目を生成するために、前記符号化ビデオビットストリームを解釈するステップと、
マクロブロック情報の前記項目をメモリ内に、それらが前記符号化ビデオビットストリームで受信されるのと同じ順番で格納するステップと、
マクロブロックの各行に関連する行制御情報を生成するステップであって、前記行制御情報が前記メモリに格納されているマクロブロック情報の前記項目を指す一連のポインタを含んで、前記一連のポインタを連続して読み取ると、マクロブロック情報の前記項目をラスタ走査順にアクセスするようになるステップと、
前記行制御情報を前記メモリ内にマクロブロック情報の前記項目に関連して格納するステップと、
ビデオデータの前記フレームを前記行制御情報を参照して再構成するステップと
を含む方法。
【請求項23】
コンピューティング装置上にロードされると、前記コンピューティング装置に請求項22の方法を実行させる、コンピュータプログラムを格納する持続性コンピュータ可読記憶媒体。
【請求項24】
符号化ビデオビットストリームを復号するためのビデオ復号装置であって、
前記符号化ビデオビットストリームがマクロブロック行に符号化されているビデオデータのフレームを表し、
前記ビデオ復号装置が、
前記符号化ビデオビットストリームを受信ように構成された解析手段であって、ビデオデータの前記フレームの再構成に使用されるマクロブロック情報の項目を生成するために、前記符号化ビデオビットストリームを解釈するための解釈手段を含み、マクロブロック情報の前記項目を、それらが前記符号化ビデオビットストリームで受信されるのと同じ順序でメモリに格納するための解析手段と、
マクロブロックの各行に関連する行制御情報を生成して、前記行制御情報が前記メモリに格納されているマクロブロック情報の前記項目を指す一連のポインタを含んで、前記一連のポインタを連続して読み取ると、マクロブロック情報の前記項目をラスタ走査順にアクセスするようにし、前記行制御情報を、マクロブロック情報の前記項目に関連して前記メモリに格納するための行制御手段と
前記行制御情報を参照して、ビデオデータの前記フレームを再構成するための再構成パイプラインと
を備えるビデオ復号装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、符号化ビデオビットストリームの復号に関し、詳細には、符号化ビデオビットストリームがマクロブロック行に符号化されているビデオデータのフレームを表す場合に関する。
【背景技術】
【0002】
H.264「アドバンスドビデオコーディング」規格によって代表されるビデオ符号化技術などの現代のビデオ符号化技術は、ビデオデータの高効率符号化を提供する。従って、符号化ビデオビットストリームを復号するための復号プロセスは、最初のビットストリームのビットパターンの解釈から、個々のマクロブロックに関連する情報の抽出を経て、それらのマクロブロックに基づくビデオデータのフレーム全体の再構成まで、通常、いくつかの段階を含む。
【0003】
いくつかの周知のビデオ復号器では、ビデオ復号プロセスは、2つの段階、つまり、受信された符号化ビデオビットストリームが、マクロブロック情報を生成するために最初に解釈される第1の解析段階、および、マクロブロック情報が処理されて、ビデオデータの個々のフレームを再構成するために結合される第2のパイプライン段階に分けられている。
【0004】
符号化ビデオビットストリーム内のマクロブロックは、それらのマクロブロックがビデオデータのフレーム内に現れるのと同じ順序(すなわち、ラスタ走査の順序)でそのビットストリーム内に表されるかも知れないが、H.264などのビデオ符号化規格では、フレキシブルマクロブロック配列(FMO:Flexible Macroblock Order)が許可され、その配列では、マクロブロックが符号化ビデオビットストリームに符号化される順序は、ラスタ走査の順序に一致しない。これは、例えば、ビデオデータのフレームが、2つ以上のスライスに符号化されているとき、それらのスライスが相互に重複している場合に生じ得る。例えば、スライスのチェッカーボードパターンが可能であり、そこでは、代替マクロブロックが符号化ビデオデータの2つの別個のスライスに属する。言い換えれば、かかる符号化ビデオビットストリームを受信するビデオ復号装置は、まず、そのフレームについて、(例えば)奇数のマクロブロックに関連する情報を受信し、続いて、そのフレームの偶数のマクロブロックに関連する情報を受信する。マクロブロックスライスのかかるインターリービングは、たとえビデオデータのスライスが送信中に消失しても、ビデオデータの元のフレームに対する妥当な近似が、欠損データを生成するための補間により、それでもなお再構成され得るので、誤り耐性の観点から有利である。このため、これらの技術は、伝送媒体が情報の損失を伴うとして知られているが、モバイルのテレビ会議など、再構成されたビデオデータの絶対的品質があまり重要でない環境で、用途を見出す。
【0005】
しかし、符号化ビデオビットストリームでFMOを許可すると、ビデオ復号装置の複雑さのレベルが増す。特に、符号化ビデオビットストリームの解析が、ビットストリーム順に実行される時に最も効率的に起こる場合、問題が生じる。これは、例えば、符号化ビデオの各スライスが、その符号化内のそれ自身を参照し得る(例えば、1つのスライス内の所与のマクロブロック行が、そのスライス内の以前の行を参照し得る)ためであろう。従って、パーサに関しては、解析プロセスの継続中に、パーサが、同一スライスの以前に識別されたマクロブロックを容易に参照し得るように、マクロブロック情報の識別された項目がビットストリーム順にメモリに書き込まれる場合、最も効率的である。さらに、スライスを受信時に処理することで、パーサがそのエントロピー復号器のために一貫性のあるコンテキストを維持できるようにして、スライス間でのコンテキスト切り替えに関連する余分な帯域幅および処理を回避する。
【0006】
他方、再構成パイプラインで行われる、識別されたマクロブロックのビデオデータのフレームへの再構成は、ラスタ走査の順序で実行される場合に最も効率的に起こる。これは、ビデオデータの最終フレーム内で、マクロブロックが相互の関連でどこに位置するかを定義するのがラスタ走査の順序だからであり、これらのマクロブロックへの順次アクセスが、通常、例えば、フレームバッファおよび動作キャッシュの最も効率的な使用を可能にする。
【0007】
図1は、パーサ120および再構成パイプライン130を含むビデオエンジン110が、符号化ビデオビットストリームを受信して、通常は表示のために、それを復号する、周知のビデオ復号装置100を概略的に図示している。ビデオエンジン110は、パーサ120および再構成パイプライン130が、復号動作において自分の役割を果たす際に利用する、メモリ140に結合されている。
図1に見られるように、パーサ120および再構成パイプライン130のどちらにもフィードバック経路が用意されており、その経路で、それらが出力する情報の一部が入力としてフィードバックされる(これらのフィードバック経路は概略にすぎず、以前の出力情報の入力としての利用は、通常、メモリ140へのアクセスによって実行されることに注意されたい)。パーサ120がビットストリーム順で最も効率的に動作し、再構成パイプライン130がラスタ走査順で最も効率的に動作することを決定するのは、特に、これらのフィードバックループである。
【0008】
これらの状況を統一するための一方法は、符号化ビデオビットストリームをラスタ走査の順序で解析するようにパーサを構成することである。これは、ビデオ符号器の全体的な制御を簡略化するが、フレーム全体に関するビットストリームを受信するまで、解析を開始できないという不利な点があり、これによってビデオ復号器の待ち時間が増加する。また、インターリーブされたスライスを受信するときに、マクロブロックベースによるマクロブロック上の異なるスライス間での切り替えプロセスは、前述したエントロピー復号器でのコンテキスト切り替えを引き起こし、その結果として、メモリアクセス帯域幅が増加する。
【0009】
代替として、パーサがビットストリーム順で動作できるようにすることが可能であり、また、再構成の一部をビットストリーム順で実行すること、すなわち、スライスをピクセルに復号した後、第2段階として非ブロック化を実行することも可能である。しかし、これは、フレームバッファへのアクセス(そのプロセスでの最高帯域幅のアクセス)がもはや順次ではなく、そのために非効率であるという不利な点を有する。さらに、再構成パイプラインでの動作キャッシュも利用し難い。
【0010】
関連する技術上の問題についての基本的な情報は、「Arbitrary slice ordering(任意のスライス順序付け)」というウィキペディアの記事(http://en.wikipedia.org/wiki/Arbitrary_slice_orderingから2010年3月26日に検索)に記載がある。Wangs S.ほかによる「Macroblock−level decoding and deblocking method and its pipeline implementation in H.264 decoder SOC design」という研究論文(ジャーナル−Zhejiang University Science A 2007、Vol.8、Number 1、36〜41ページ)が、FMOによって生じる問題を取り上げ、後の段階がラスタ走査の順序で実行できるようにする多段ビデオ復号器を提示している。しかし、取られている方法は、エントロピー符号化ビットストリーム(例えば、CABAC)の場合、非常にコストがかかり得る入力ビットストリームの検索を伴い、そして、メモリアクセスの観点から高価なスライス間の切り替えを伴う。
【0011】
従って、前述した、データをビデオ復号器の別の部分で好まれる順序で処理するという不利な点を回避しながら、ビデオ復号器の各段階が効率的な構成で動作できるようにする技術の提供が望ましい。
【発明の概要】
【課題を解決するための手段】
【0012】
第1態様から見ると、本発明は、符号化ビデオビットストリームを復号するためのビデオ復号装置を提供するものであって、前記符号化ビデオビットストリームが、マクロブロック行に符号化されたビデオデータのフレームを表し、前記ビデオ復号装置が次のものを備える、つまり、前記符号化ビデオビットストリームを受信するように構成された解析装置であって、ビデオデータの前記フレームの再構成に使用されるマクロブロック情報の項目を生成するために、前記符号化ビデオビットストリームを解釈するように構成された解釈装置を備え、マクロブロック情報の前記項目をメモリ内にビットストリーム順で格納するように構成された解析装置と、マクロブロックの各行に関連する行制御情報を生成するように構成された行制御装置であって、前記行制御情報が、前記メモリに格納されているマクロブロック情報の前記項目を指す一連のポインタを含んで、前記一連のポインタを連続して読み取るとマクロブロック情報の前記項目をラスタ走査の順序でアクセスするようになり、前記行制御情報を前記メモリにマクロブロック情報の前記項目に関連して格納するように構成された行制御装置と、前記行制御情報を参照して、ビデオデータの前記フレームを再構成するように構成された再構成パイプラインとを備える。
【0013】
本発明の技術に従って、ビデオ復号装置の解析装置が、ビデオデータのフレームが符号化されているマクロブロック行に関連する情報を含む符号化ビットストリームを受信する。解析装置は、その解釈装置によって、符号化ビデオビットストリームを解釈して、符号化ビデオビットストリームで受信するのと同じ順序でメモリに書き込まれるマクロブロック情報の項目を生成する。それ故、解析装置は、マクロブロックに対してビットストリーム順で動作し、マクロブロックのいかなる並べ換えも行う必要なく、各マクロブロックをその着信どおりに処理する。
【0014】
マクロブロックの各行に関連する行制御情報を生成する行制御装置が提供されている。行制御装置は、メモリに格納されているマクロブロック情報の項目への一連のポインタを生成し、これらのポインタは、一連のポインタを連続して読み取ると、マクロブロック情報の項目をラスタ走査の順序でアクセスする順序で配列されている。この行制御情報は、マクロブロック情報の項目に関連してメモリ内に格納される、つまり、マクロブロック情報のそれらの項目がアクセスされると、行制御情報もアクセスされ得るため、特に、マクロブロック情報の項目へのアクセスがラスタ走査順に起こることを可能にすることを意味する。これは特に、ビデオ復号装置の再構成パイプラインに有効であり、それは、マクロブロック情報に基づいてビデオデータのフレームを再構成する際に、マクロブロックのラスタ走査順にそれを行う場合、最も効率的に動作する。
【0015】
従って、解析装置は、マクロブロック情報をビットストリーム順に処理することが可能であり、マクロブロック情報の項目を、いかなる並べ替えをも実行する必要なく、それらが符号化ビデオビットストリームで受信されるのと同じ順序でメモリに効率的に格納する。同時に、メモリに格納されているマクロブロック情報の項目に関連した行制御情報の提供は、マクロブロック情報のそれらの項目への後続アクセス(例えば、ビデオデータのフレームの再構成時に再構成パイプラインによって)がラスタ走査順に起こり得ることを意味し、このように、再構成が効率的な構成で動作できるようにして、ビデオ復号装置のエネルギー消費を削減し、ビデオ復号装置内で必要なメモリ帯域幅を削減する。
【0016】
本発明の技術は、マクロブロックが一方ではメモリから直接ビットストリーム順(メモリにビットストリーム順に書き込まれている)に読み取られ得るが、他方、メモリから(行制御情報への参照により)ラスタ走査の順序でも検索され得るため、マクロブロックが符号化ビデオビットストリームに符号化される順序が、それらのマクロブロックがビデオデータのフレーム内に現れるラスタ走査の順序に一致しない場合に、特に役立つ。本発明の技術は、ビットストリーム順がラスタ走査の順序と同一である(および、行制御情報が、その後、既にラスタ走査の順序であるマクロブロック情報の一連の項目を、メモリに格納されていた順に示す)状況にも適用可能であるが、本発明の実施形態では、ビットストリーム順およびラスタ走査の順序は、相互に異なる。
【0017】
解析装置の解釈装置によって実行される符号化ビデオビットストリームの解釈は、特に、ビデオビットストリームの符号化に使用された特定のコーデックに基づいて、いくつかの形を取り得るが、本発明の実施形態では、解釈装置は、前記符号化ビデオストリームのマクロブロック間の予測符号化を解決するように構成された予測レゾルバを備える。符号化ビデオストリームのマクロブロック間での予測符号化は、あるマクロブロックの情報内容が、別のマクロブロックの情報内容を予測するために使用され得、それ故、後のマクロブロックの符号化に必要な情報量を削減するため、ビデオビットストリームのより効率的な符号化を可能にする1つの技術である。かかる予測符号化は、例えば、行予測を含み、そこでは、マクロブロックの現在の行のマクロブロックが、同一フレーム内のマクロブロックの以前の行に関して符号化されており、または、あるフレーム内のマクロブロックが、以前のフレーム内の同一位置のマクロブロックに関して予測される
時間的(または「同一位置(co−located)」)予測を含み得る。
【0018】
いくつかの実施形態では、前記解析装置はさらに、マクロブロック情報の項目を前記メモリに格納する際に、マクロブロック情報の前記項目が、前記メモリ内のマクロブロック情報の先行項目にラスタ走査の順序で連続して続いていない場合、マクロブロック情報の前記項目に先行して前記メモリ内にマーカーを格納するように構成され、前記マーカーは、ラスタ走査の順序で、マクロブロック情報の前記先行項目とマクロブロック情報の前記項目との間に入るマクロブロック数を示す。
【0019】
従って、解析装置が、マクロブロック情報の項目をメモリに格納する際に、マクロブロック情報のその項目が、メモリに格納されているマクロブロック情報の先行項目にラスタ走査の順序で連続して続いていない場合、例えば、現在復号中のビデオデータのスライスが、フレーム内の代替マクロブロックをチェッカーボード方式で符号化するので、解析装置は、現在復号中のマクロブロック情報の項目に先行してマーカーを格納するように構成され、その場合、マーカーは、ラスタ走査順に見たときに、スキップされているマクロブロック数を示す。それ故、解析装置は、マクロブロック情報の項目を、それらが符号化ビデオビットストリームで受信される順に(すなわち、ビットストリーム順に)メモリ内に格納し続ける一方、メモリに格納される追加のマーカーは、ラスタ走査順に(すなわち、ビデオデータの元のフレーム内で)見たとき、マクロブロック情報の項目のレイアウトを示す。マクロブロック情報の項目と共に格納されているこの追加情報は、それらがメモリ内で連続して読み取られることを可能にするが、それらがビデオデータのフレーム内にどのように現れるかについての情報を含む。
【0020】
マーカーをメモリ内にこの方式で格納することには、いくつかの利点があり得、そして、かかる一実施形態では、前記予測レゾルバは、前記符号化ビデオストリームのマクロブロック間での予測符号化を、少なくとも1つの前記マーカーを含め、前記メモリに格納されているマクロブロック情報の一連の項目を参照して解決するように構成される。
【0021】
予測レゾルバが参照するマクロブロック情報の一連の項目内に少なくとも1つのマーカーが存在すると、予測レゾルバは、ビデオデータのフレーム内のどこにマクロブロックが位置するかを知ることにより、予測された符号化を解決できるようになるが、まだそれらの読み取りは順次に行われる。例えば、予測レゾルバが、マクロブロックの以前の行を参照する必要がある場合、マーカーは、予測レゾルバがその以前の行から読み取ったマクロブロックの相対位置を決定できるようにする。
【0022】
マーカーはいくつかの形をとり得るが、一実施形態では、マーカーは、マクロブロック情報項目のデータ形式を持つことが理解されるであろう。マーカーに対して、マクロブロック情報の項目と同じデータ形式を使用すると、マーカーまたはマクロブロック情報の本物の項目のいずれが書き込み/読み取り中であるかにかかわらず、同一のデータ形式が存在することになるため、マクロブロック情報項目の書き込みおよび読み取りの両方に対して利点がある。
【0023】
マーカーがマクロブロック情報項目のデータ形式を持つ場合、いくつかの実施形態では、マーカーは、前記マーカーがマクロブロック情報の項目ではないことを示すフラグを含む。これは、マクロブロック情報の項目とマーカーが容易に区別され得る、簡易な読み取りプロセスを可能にする。
【0024】
フラグはいくつかの形を取り得るが、一実施形態では、フラグはゼロ長の指示を含むことが理解されるであろう。マクロブロック情報の項目は、その中に符号化されているデータの複雑さに応じて異なる長さを持ち得るが、マクロブロック情報の本物の項目は有限長であり、従って、ゼロ長指示の使用は、マーカーがマクロブロック情報の本物の項目ではないことを示すフラグを実装するための便利な方法を提供する。
【0025】
行制御情報の提供によって、後続プロセス(例えば、再構成パイプラインで実行される処理など)がマクロブロック情報の項目にラスタ走査の順序でアクセスできるようになり、従って、メモリ内に格納されているいかなるマーカー(マクロブロックのビットストリーム順とラスタ走査の順序との間の相違を効果的に示す)もそれら後続プロセスでは必要とされない。再構成パイプラインをかかるマーカーを無視するように構成することは可能であるが、それらが再構成パイプラインで単に見られなければ、好都合である。このため、いくつかの実施形態では、前記行制御装置は、前記行制御情報を参照してビデオデータの前記フレームを再構成する際に、前記再構成パイプラインが前記マーカーに遭遇しないように、前記一連のポインタを生成するよう構成される。つまり、一連のポインタに従うと、マーカーを読み取ることにならない。
【0026】
マーカーがメモリに格納される際に取る特定の形式は、様々な形式を取り得るが、いくつかの実施形態では、マーカーはランレングス圧縮されていることが理解されるであろう。マーカーは、実行すべき比較的単純なタスクを持ち、従って、それが少量のメモリを占有するだけであれば好都合であり、そして、ランレングス圧縮は、これを実現するための効率的な方法である。
【0027】
行制御情報はいくつかの形を取り得るが、本発明の実施形態では、行制御情報はベクトルを含み、前記ベクトルは、ビデオデータの各フレーム内にあるマクロブロックの行数によって与えられる長さを有し、前記ベクトルの各要素が、そのフレームの対応する行のための前記一連のポインタを示すことが理解されるであろう。
【0028】
従って、1つのベクトルがビデオデータの各フレームに対して提供され得、そのベクトル長はフレーム内のマクロブロックの行数によって決定され、そして、そのベクトルの各要素はその結果、各行に対応する一連のポインタを指す。これは、行制御情報の管理、書き込みおよび読み取りを容易に行い得る形式を提示する。
【0029】
いくつかのかかる実施形態では、前記ベクトルで示される第1ポインタが、前記ベクトルの第1要素に格納される。ベクトルは、フレームの所与の行に対するいくつかのポインタを示し得るが、その行に対して、メモリに格納されているマクロブロック情報の項目が既にラスタ走査の順序(すなわち、ラスタ走査の順序に一致するビットストリーム順)であれば、所与の行に対して1つのポインタのみが必要な状況があり得る。この状況では、行制御情報に対する読み取りプロセスは、この行に必要な単一のポインタがベクトル自体に格納されていれば、単純化される。
【0030】
いくつかの実施形態では、前記行制御装置はさらに、前記一連のポインタに含まれるポインタ数の指示を前記行制御情報に含めるように構成される。その連続に含まれるポインタ数の指示を提供すると、その一連のポインタに対する読み取りプロセスが容易になる。
【0031】
いくつかの実施形態では、前記行制御装置はさらに、前記一連のポインタの各ポインタに、そのポインタによって指される連続するマクロブロック数の指示を含めるように構成される。各ポインタによって指される連続するマクロブロック数の指示により、行制御情報を用いてメモリからマクロブロック情報の項目を読み取る後続プロセスは、その後続プロセスで連続するマクロブロックの各実行の終了を識別する(例えば、マーカーに遭遇するまで読み取ることにより)必要なく、マクロブロック情報の項目を単純に読み取ることが可能になる。
【0032】
メモリ内のマクロブロック項目のラスタ走査の順序を示す一連のポインタはさらに、ビットストリーム内のエラーが効率的に処理され得るメカニズムを提供し、そして、いくつかの実施形態では、前記行制御装置はさらに、前記符号化ビデオビットストリームがマクロブロック情報の少なくとも1つの項目に対応するエラーを含むことを前記解析装置が判断した場合、マクロブロック情報の前記少なくとも1つの項目への対応するポインタを前記一連のポインタから除外するように構成される。このため、符号化ビデオビットストリーム内のエラーの結果として破損しているマクロブロック情報の項目は、対応するポインタが一連のポインタから除外されることにより、後続の読み取りプロセスから簡単かつ効率的に除外され得る。
【0033】
解釈装置内の予測レゾルバはいくつかの形を取り得るが、いくつかの実施形態では、予測レゾルバは、ビデオデータの以前に復号されたフレームに関して
時間的予測符号化を解決するように構成され、そして、前記予測レゾルバは、前記行制御情報を参照することにより、ビデオデータの前記以前に復号されたフレームに対応するマクロブロック情報の項目を検索するように構成される。それ故、行制御情報は、予測レゾルバが、既にメモリに格納されているビデオデータの以前に復号されたフレームにアクセスするための効率的なメカニズムを提供する。
【0034】
予測レゾルバは様々な種類の予測を実行するように構成可能であり、いくつかの実施形態では、前記予測レゾルバは、動きベクトル予測を実行するように構成されることが理解されるであろう。さらに、いくつかの実施形態では、予測レゾルバは、
イントラモード予測を実行するように構成される。
【0035】
行制御情報は、メモリに格納されているマクロブロック情報の項目に対して特に効率的な読み取りメカニズムを提供し、いくつかの実施形態では、前記再構成パイプラインが、ビデオデータの前記フレームについて並列復号を実行して、前記メモリからマクロブロック情報の項目を並列で読み取るために前記行制御情報を参照するように構成される。再構成パイプラインによって実行される並列復号は、ビデオ復号装置を経由したビデオデータのより大きなスループットを可能にする。
【0036】
メモリからのマクロブロック情報のかかる並列読み取りは、いくつかの方法で行われ得る。一実施形態では、前記再構成パイプラインが、前記メモリからビデオデータの前記フレームを並列で読み取るために、前記行制御情報を参照するように構成される。別の実施形態では、前記再構成パイプラインは、前記メモリからマクロブロック情報の前記行を読み取るために前記行制御情報を参照するように構成される。
【0037】
第2態様から見ると、本発明は符号化ビデオビットストリームの復号方法を提供するものであって、前記符号化ビデオビットストリームが、マクロブロック行に符号化されたビデオデータのフレームを表し、前記方法が、次のステップを含む、つまり、前記符号化ビデオビットストリームを受信するステップと、ビデオデータの前記フレームの再構成に使用されるマクロブロック情報の項目を生成するために前記符号化ビデオビットストリームを解釈するステップと、マクロブロック情報の前記項目を、それらが前記符号化ビデオビットストリームで受信されるのと同じ順序でメモリに格納するステップと、マクロブロックの各行に関連する行制御情報を生成するステップであって、前記行制御情報が、前記メモリに格納されているマクロブロック情報の前記項目への一連のポインタを含んで、前記一連のポインタを連続して読み取ると、マクロブロック情報の前記項目をラスタ走査の順序でアクセスするようになるステップと、前記行制御情報をマクロブロック情報の前記項目に関連して前記メモリに格納するステップと、前記行制御情報を参照してビデオデータの前記フレームを再構成するステップとを含む。
【0038】
第3態様から見ると、本発明は、コンピュータプログラムを格納する持続性コンピュータ可読記憶媒体を提供するもので、これは、コンピューティング装置にロードされると、前記コンピューティング装置に第2態様の方法を実行させる。
【0039】
第4態様から見ると、本発明は、符号化ビデオビットストリームを復号するためのビデオ復号装置を提供するものであって、前記符号化ビデオビットストリームが、マクロブロック行に符号化されたビデオデータのフレームを表し、前記ビデオ復号装置が、次の手段を備える、つまり、前記符号化ビデオビットストリームを受信するための解析手段であって、ビデオデータの前記フレームの再構成に使用されるマクロブロック情報の項目を生成するために前記符号化ビデオビットストリームを解釈するための解釈手段を備え、マクロブロック情報の前記項目を、それらが前記符号化ビデオビットストリームで受信されるのと同じ順序でメモリに格納するための解析手段と、マクロブロックの各行に関連して行制御情報を生成するための行制御手段であって、前記行制御情報が、前記メモリに格納されているマクロブロック情報の前記項目への一連のポインタを含んで、前記一連のポインタを連続して読み取ると、マクロブロック情報の前記項目をラスタ走査の順序でアクセスするようにし、前記行制御情報をマクロブロック情報の前記項目に関連して前記メモリに格納するための行制御手段と、前記行制御情報を参照してビデオデータの前記フレームを再構成するための再構成パイプライン手段とを備える。
【0040】
本発明は、さらに、ほんの一例として、添付の図に例示のとおり、その実施形態に関連して説明される。
【図面の簡単な説明】
【0041】
【
図1】従来技術に従ったビデオ復号装置を概略的に示す図である。
【
図2】一実施形態におけるビデオ復号装置での解析装置のいくつかのコンポーネントおよびメモリを概略的に示す図である。
【
図3】一実施形態における、ラスタ走査順、ビットストリーム順でのマクロブロック情報、およびマクロブロック情報の項目がメモリに格納される方法を概略的に示す図である。
【
図4】一実施形態における符号化ビデオデータのスライスのチェックボードパターンおよび、mb情報バッファ内のその対応する記憶パターンを概略的に示す図である。
【
図5】一実施形態における、フレキシブルマクロブロック配列を持たない、メモリ内のmb情報バッファの内容例を示す図である。
【
図6】一実施形態における、フレキシブルマクロブロック配列を持つ、メモリ内のmb情報バッファの内容例を示す図である。
【
図7】一実施形態において、解析装置によって実行される一連のステップを示す図である。
【発明を実施するための形態】
【0042】
図2は、一実施形態に従ったビデオ復号装置200の様々なコンポーネントを概略的に示す。簡単にするため、パーサ205およびメモリ210のみが示されている。ビデオ復号装置の他の主要で重要なコンポーネント、すなわち再構成パイプラインは、明瞭にするため省略されている。
【0043】
パーサ205は、符号化ビデオビットストリームが、符号化ビデオビットストリームの解釈を実行するパーサ205の実質的な部分に渡される前に、それを一時的に格納するバッファ215を介して、符号化ビデオビットストリームを受信する。これら追加のコンポーネントは、ビット復号器220、インタープリタ225および予測装置230によって概略的に表されている。一般に、ビット復号器220、インタープリタ225および予測装置230はまとめて解釈装置を形成し得ると考えられている。
【0044】
ビット復号器220は、ビットストリームを形成する一連のビットの最初の解釈(例えば、受信したパック形式の一連のビットを対応するアンパック形式に変換)を実行するように構成される。インタープリタ装置225は、ビットストリーム内のマクロブロック情報を識別して、残余情報を抽出することにより、本当の解釈プロセスを開始する。残余情報は、インタープリタ225によってメモリ210内の残余バッファ240に書き込まれる。パーサ205内の解釈の最終段階は、予測装置230によって実行される。予測装置230は、マクロブロック情報(mb情報)の項目を生成し、それは、その後、メモリ210内のmb情報バッファ250に書き込まれる。予測装置230によって実行される予測の一部は、
時間的予測を含み、そこで、以前に復号されたフレームから同一位置に配置されたマクロブロック情報がmb情報バッファ250から検索される。予測装置230によって実行される別の種類の予測は、行予測であり、そこで、現在復号中のフレームの以前の行に属するマクロブロック情報の項目が検索され、復号中の現在の行の内容を予測するために使用される。
【0045】
パーサ205は、行制御装置235も備える。行制御装置235は、予測装置230で生成されるマクロブロック情報の項目をモニターし、行制御情報を断続的に生成して、その情報をmb情報バッファ250に、予測装置230でそこに書き込み中のマクロブロック情報の項目に関連して、格納する。重要なことには、行制御装置235は、予測装置230によってmb情報バッファ250に格納されているマクロブロック情報の項目を指す一連のポインタを含む行制御情報を生成し、その一連のポインタは、これらが順番に読み取られると、マクロブロック情報の項目がラスタ走査の順序でアクセスされるようにする。従って、例えば、再構成パイプラインがメモリ210内のmb情報バッファ250をアクセスする際に、それは、その後マクロブロック情報の項目をラスタ走査の順序で検索するために、行制御情報(mbinfo_line)を用いてこれを行い得る。逆に言えば、解析装置205は、マクロブロック情報の項目を、それらをビットストリーム内で受信する順番に、メモリ210内に書き込むことに留意されたい。
【0046】
再構成パイプラインによるマクロブロック情報の項目のメモリ210からの検索も、並列化し得る(
図2に破線のアクセス回線で概略的に示す)。それ故、行制御情報の2つ以上の項目(mbinfo_line)が、再構成のスループットを増大させるために、再構成パイプラインによって一度にアクセスされ得る。これは、マクロブロック情報の複数の行への並列アクセス、および/または複数のフレームへの並列アクセスを伴い得る。
【0047】
解析装置205はさらに、mb情報バッファ250に格納されているマクロブロック情報の項目間に、マクロブロック情報のそれら2つの項目がラスタ走査の順序で相互に連続して続いていなければ、マーカーを格納するように構成される。これらのマーカーについては、
図3に関連して、より詳細に説明する。
【0048】
図3に、一連のマクロブロックに対するラスタ走査の順序とビットストリーム順との間の相違を概略的に示す。6つのマクロブロックの組300が、2つのスライスに符号化されている(それぞれ、斜線およびドットの模様の箱で示す)。これはそれから、ビットストリーム順305では、先ず、斜線のマクロブロック1、3および6が受信されて、その後ドットのマクロブロック2、4および5が続くことを意味する。そして、一連のマクロブロック310は、マクロブロック情報のこれらの項目が、mb情報バッファ250にどのように書き込まれるかを示す。左から右に読み取ると、マクロブロック1が最初に書き込まれ、続いて、マクロブロック情報の次の項目がラスタ走査の順序で直後に続いていないことを示すマーカーが続く。このマーカーは、マクロブロック情報の項目と同じデータ形式を持つが、そのヘッダー内にはゼロ長(len=0)を持つとしてラベル付けされて、いくつのマクロブロックがスキップされているかを示す(ラスタ走査の順序で見た場合)。同様に、マクロブロック3の後に、2つのマクロブロックがスキップされていることを示すマーカーが続く。マクロブロックデータの項目をmb情報バッファにこのように書き込むと、解析装置が、マクロブロックを、それらが受信されたビットストリーム順305で処理できるようになる。さらに、予測装置230が、予測動作を実行するために、マクロブロックデータのこれらの項目を順番に読み取る必要がある場合、マクロブロック情報の項目310は、簡単に順番に読み取ることが可能である。
【0049】
行制御装置235は、mb情報バッファ250に書き込み中のマクロブロック情報の項目をモニターする。特に、マクロブロックの完全な行がmb情報バッファに書き込まれている場合、行制御装置235は、行制御情報mbinfo_lineを、その行に対応するマクロブロック情報の項目に関連して、mb情報バッファ250に書き込む。行制御情報mbinfo_lineは、各々がmb情報バッファ250内のマクロブロック情報の項目を指す一連のポインタ(mbinfo_strip)を示すベクトルを含む。mbinfo_stripポインタは、この一連のポインタ320が読み取られるとき、参照されているマクロブロック情報の項目がラスタ走査順に読み取られるように、配列されている。
【0050】
図4は、代替マクロブロックが第1スライスにチェッカーボード方式で符号化されているマクロブロック情報400のフレームを概略的に示す。このようなスライス符号化は、伝送時のデータ損失が調整されて、復号されたビデオの妥当な品質が(例えば、補間により)なお提供され得るため、損失伝送媒体のコンテキストで使用される場合に、特に利点があり得る。前述したとおり、マクロブロック情報の項目1、3および5は、マクロブロック1とマクロブロック3との間のマクロブロックがスキップされていることを示す介在マーカーを含めて、mb情報バッファ250に書き込まれている。マクロブロック5に続くマーカーは、このスライスでマクロブロック6がスキップされていることを示す。
図4に例示されているマクロブロック情報の一連の項目410は、マクロブロック情報の次の行(8、10、12)が解析されてmb情報バッファに書き込まれている間に、マクロブロック情報の以前に解析された行(1、3、5)がどのように読み取られるかを示す。これは、行予測プロセスの一部であり、そこでは、例えば、以前の行の隣接するマクロブロック1および3を参照して、マクロブロック8が解釈される。また、マクロブロック5と8との間に2つの「スキップ1」標識(1つの「スキップ2」標識の代わりに)があり、これが各行を個別に処理できるようにすることにも留意されたい。
【0051】
図5は、受信した符号化ビデオビットストリームがフレキシブルマクロブロック配列を含まない状況で、mb情報バッファ内に格納されているmb情報の内容例を示す。その内容は、基本フレーム情報(例えば、フレームタイプ、インタレース方式など)を含むフレームヘッダーで始まり、そのフレームに関する他の情報がどこで見つけられるかを示す。mb情報構造では、フレームヘッダーに続いて、mbinfo_lineベクトルを含む。このベクトルは、フレーム内のマクロブロック行数に対応する長さを有し、行のためのストリップを見つける方法に関する情報を含む。この情報は、マクロブロック情報の対応する項目がどこに格納されているかを示すポインタの形式である。mbinfo_lineベクトルに続くのは、次のスライスのための情報(例えば、スライスID、マクロブロック数およびスライスタイプ)を提供するスライスヘッダーである。その後、そのスライスに属するマクロブロック情報の項目が続く。スライスに属するマクロブロック情報の項目の組が続くスライスヘッダーを使用して、フレーム全体は、このように構築される。また、行内でスライス変更が生じる場合には、mbinfo_strip項目が使用される。
【0052】
図6は、フレキシブルマクロブロック配列を含まないマクロブロック情報のフレームに対するmb情報バッファの内容を示す。一般的な構造は、最後に連続して格納されている一連のmbinfo_strip項目を除いて、
図5に関連して説明した内容と同様である。これらのmbinfo_strip項目は、行全体が完成すると、行制御装置によって生成され、mbinfo_lineベクトルには、これらmbinfo_strip項目の各々を指すポインタが投入され得る(
図3に関連して説明のとおり)。
【0053】
図7は、パーサ205(
図2に示す)によって実行される一連のステップを概略的に示す。フローは、パーサが符号化ビデオビットストリームを受信するステップ700から始まり、その符号化ビデオビットストリームは一時的にバッファ215に格納される。ステップ705では、解釈の第1段階(すなわち、ビット復号および残余抽出)が実行される。次にステップ710で、受信した符号化ビデオビットストリームからマクロブロック情報の項目を生成するために必要な予測(予測装置230で)があるか否かを判定する。予測が必要な場合、フローは、メモリ210に格納されているmb情報バッファ250から検索されたマクロブロック情報の以前に格納された項目に関連して、
時間的予測および/または行予測が実行されるステップ715を経て進む。フローはその後、ステップ720(ここは、予測が必要ない場合、フローがステップ710からも直接進む)に進む。ステップ720で、マクロブロック情報(mb情報)の項目が生成され、ステップ725で、格納のために、mb情報バッファ250に渡される。それらは行制御装置235にも渡され、それは、マクロブロックの行毎の構築をモニターする。ステップ730では、マクロブロック情報の完全な行が、現在mb情報バッファ250に格納されているかどうかを、行制御装置235によって判定する。まだの場合、フローはその後ステップ700に単に戻る。マクロブロック情報の完全な行がmb情報バッファ250に格納されている場合は、ステップ735で、行制御装置235がmbinfo_lineベクトルおよび必要なmbinfo_stripポインタを生成して、これらをmb情報バッファ250に格納する。mbinfo_lineベクトルの生成は、通常、以前に作成されたベクトルの要素の投入を含むことを注意されたい。
【0054】
それ故、本発明の技術によれば、ビデオ復号装置における解析装置は、マクロブロック情報をビットストリーム順に処理することが可能であり、他方、再構成パイプラインはマクロブロック情報をラスタ走査順に処理し得る。従って、両方のコンポーネントが、それらのより効率的な構成で動作することが可能であり、ビデオ復号装置のエネルギー消費を削減し、そのビデオ復号装置内で必要なメモリ帯域幅を削減する。
【0055】
本明細書では特定の実施形態が説明されているが、本発明はそれに限定されず、また、それに対する修正および追加を本発明の範囲内で行い得ることを理解されるであろう。例えば、以下の従属請求項の特徴の様々な組み合わせが、本発明の範囲から逸脱することなく、独立請求項の特徴を利用して作成され得る。
【符号の説明】
【0056】
200 ビデオ復号装置
205 パーサ
210 メモリ
215 バッファ
220 ビット復号器
225 インタープリタ
230 予測装置
240 残余バッファ
250 mb情報バッファ