[0053] 高効率ビデオコーディング(HEVC)は、新たに開発されたビデオコーディング規格である。HEVCならびにそのマルチビューおよび3次元ビデオコーディング拡張(すなわち、それぞれ、MV−HEVCおよび3D−HEVC)では、ビデオエンコーダがビットストリームを生成する。このビットストリームは、ビデオデータの符号化表現を備える。ビデオデコーダは、ビットストリームからシンタックス要素(syntax element)を取得するためのパーシング動作(parsing operation)を実行し得る。一般に、シンタックス要素は、ビットストリーム中に表されたデータの要素である。さらに、ビデオデコーダは、ビットストリームから取得されたシンタックス要素を使う復号動作(decoding operation)を実行して、ビデオデータのサンプルブロックを再構成する。
[0054] 本開示において詳述するように、パーシング動作が、ビットストリームから特定のシンタックス要素を取得するために、復号動作において生成された情報を有する必要があり得るいくつかの事例がある。たとえば、ビットストリームが特定のシンタックス要素を含むかどうかの決定は、復号動作によって生成される情報に依存し得る。したがって、パーシングプロセス(parsing process)は、ビットストリームからシンタックス要素を取得するかどうか決定するために、復号プロセスによって生成される情報に依存し得る。そのような依存は、パーシングプロセスを遅くする場合があり、このことが、復号プロセスを遅くする場合がある。
[0055] 1つの特定の例では、現在コーディングユニット(CU)に関連付けられたシンタックス構造は、残差予測において使用するための重み付け因子へのインデックスを示す重み付け因子インデックスシンタックス要素を含んでも含まなくてもよい。現在CUについての重み付け因子インデックスシンタックス要素が特定の値(たとえば、0)に等しい場合、残差予測は、現在CUには使われない。残差予測では、ビデオコーダは、視差参照ピクチャおよび時間視差参照ピクチャ中のサンプルに基づいて残差予測子(residual predictor)を決定することができる。視差参照ピクチャおよび時間視差参照ピクチャは、現在CUに関連付けられたビューとは異なる参照ビュー中にある。視差参照ピクチャは、現在CUと同じアクセスユニット中にある。ビデオコーダは、視差参照ピクチャおよび時間視差参照ピクチャ中のサンプルを決定するのに、現在CUの視差ベクトルと時間的動きベクトルとを使うことができる。したがって、現在CUに関する残差予測は、現在CUの1つまたは複数の区分(たとえば、現在CUの予測ユニット(PU))が、時間的動きベクトル(すなわち、現在CUとは異なる時間インスタンスにおける参照ピクチャを示す動きベクトル)を有する場合、および現在CUについての視差ベクトルが利用可能である場合にのみ可能であり得る。いくつかの例では、「現在CUについての視差ベクトル(disparity vector for the current CU)」という句は、全体としてのCUについての視差ベクトル、またはCUの一部を形成するPUについての視差ベクトルを示し得る。
[0056] 前の段落の例では、現在CUのどの区分も時間視差ベクトルをもたないか、または現在CUについての視差ベクトルが利用不可能であっても、重み付け因子インデックスシンタックス要素は、0以外の値を有する可能性がある。重み付け因子インデックスシンタックス要素が0以外の値に等しく、現在CUのどの区分も時間的動きベクトルをもたないか、または現在CUについての視差ベクトルが利用不可能である場合、復号エラーが起こり得る。したがって、いくつかの提案は、ビデオデコーダが、ビットストリームから重み付け因子インデックスシンタックス要素を取得するのに先立って、現在CUのいずれかのPUが時間的動きベクトルを有するかどうか決定することと、CUの視差ベクトルが利用可能かどうか決定することとを求めてきた。そのような提案では、ビデオデコーダは、現在CUの区分が時間的動きベクトルを有し、現在CUについての視差ベクトルが利用可能である場合にのみ、ビットストリームから重み付け因子インデックスシンタックス要素を取得する。ただし、現在CUのいずれかの区分が時間的動きベクトルを有するかどうか決定すること、および現在CUの視差ベクトルが利用可能かどうか決定することは、復号プロセスによって生成される情報を必要とし得る。したがって、現在CUのいずれかの区分が時間的動きベクトルを有するかどうか決定すること、および現在CUの視差ベクトルが利用可能かどうか決定することは、パーシングプロセスにおいて、復号プロセスによって生成される情報への依存をもたらす。
[0057] 本開示の例は、復号プロセスによって生成される情報への、パーシングプロセスの依存を低減することができる。たとえば、前の段落の例では、現在CU中の区分のうちのどれも時間的動きベクトルをもたず(たとえば、参照ピクチャが同じビューからのものである)、および/または現在CUの視差ベクトルが利用不可能な場合、重み付け因子インデックスが0になるような制約が導入され得る。言い換えると、現在CUのどの区分も時間的動きベクトルをもたず、および/または現在CUの視差ベクトルが利用不可能なとき、ビデオエンコーダは、重み付け因子インデックスシンタックス要素を0にセットするだけでよい(残差予測が使われないことを意味する)。制約は、重み付け因子インデックスシンタックス要素がこれらの状況の下で0にセットされることを保証するので、ビデオデコーダは、上で言及したタイプの復号エラーが起こらないことを保証するために、現在CUのいずれかの区分が時間的動きベクトルを有するかどうかチェックし、かつ/または現在CUについての視差ベクトルが利用可能かどうかチェックする必要はない。したがって、上で言及した制約は、この復号エラーの出現をなくすことができるとともに、復号プロセスにおいて生成される情報への、パーシングプロセスの依存もなくす。
[0058] 図1は、本開示の技法を利用できる例示的なビデオコーディングシステム10を示すブロック図である。本明細書で使用する「ビデオコーダ(video coder)」という用語は、ビデオエンコーダとビデオデコーダの両方を総称的に指す。本開示では、「ビデオコーディング(video coding)」または「コーディング(coding)」という用語は、ビデオ符号化またはビデオ復号を総称的に指すことがある。
[0059] 図1に示すように、ビデオコーディングシステム10は、ソースデバイス12と宛先デバイス14とを含む。ソースデバイス12は符号化ビデオデータを生成する。したがって、ソースデバイス12はビデオ符号化デバイスまたはビデオ符号化装置と呼ばれることがある。宛先デバイス14はソースデバイス12によって生成された符号化ビデオデータを復号することができる。したがって、宛先デバイス14はビデオ復号デバイスまたはビデオ復号装置と呼ばれることがある。ソースデバイス12および宛先デバイス14は、ビデオコーディングデバイスまたはビデオコーディング装置の例であり得る。
[0060] ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、モバイルコンピューティングデバイス、ノートブック(たとえば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、車内コンピュータなどを含む、広範囲のデバイスを備え得る。
[0061] 宛先デバイス14は、チャネル16を介してソースデバイス12から符号化ビデオデータを受信し得る。チャネル16は、ソースデバイス12から宛先デバイス14に符号化ビデオデータを移動することが可能な1つまたは複数の媒体またはデバイスを備え得る。一例では、チャネル16は、ソースデバイス12が符号化ビデオデータを宛先デバイス14にリアルタイムで直接送信することを可能にする1つまたは複数の通信媒体を備えることができる。この例では、ソースデバイス12は、ワイヤレス通信プロトコルなどの通信規格に従って符号化ビデオデータを変調し得、変調されたビデオデータを宛先デバイス14に送信し得る。1つまたは複数の通信媒体は、無線周波数(RF)スペクトルまたは1つもしくは複数の物理伝送線路などのワイヤレスおよび/または有線の通信媒体を含む場合がある。1つまたは複数の通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはグローバルネットワーク(たとえば、インターネット)などのパケットベースネットワークの一部を形成する場合がある。1つまたは複数の通信媒体は、ソースデバイス12から宛先デバイス14への通信を容易にする、ルータ、スイッチ、基地局、または他の機器を含む場合がある。
[0062] 別の例では、チャネル16は、ソースデバイス12によって生成された符号化ビデオデータを記憶する記憶媒体を含み得る。この例では、宛先デバイス14は、たとえば、ディスクアクセスまたはカードアクセスを介して、記憶媒体にアクセスし得る。記憶媒体は、Blu−ray(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、または符号化ビデオデータを記憶するための他の適切なデジタル記憶媒体など、種々のローカルにアクセスされるデータ記憶媒体を含み得る。
[0063] さらなる例では、チャネル16は、ソースデバイス12によって生成された符号化ビデオデータを記憶するファイルサーバまたは別の中間ストレージデバイスを含み得る。この例では、宛先デバイス14は、ストリーミングまたはダウンロードを介して、ファイルサーバまたは他の中間ストレージデバイスに記憶された符号化ビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶することと、符号化ビデオデータを宛先デバイス14に送信することとが可能なタイプのサーバであり得る。例示的なファイルサーバとしては、(たとえば、ウェブサイト用の)ウェブサーバ、ファイル転送プロトコル(FTP:file transfer protocol)サーバ、ネットワーク接続ストレージ(NAS:network attached storage)デバイス、およびローカルディスクドライブが挙げられる。
[0064] 宛先デバイス14は、インターネット接続などの標準的なデータ接続を通して符号化ビデオデータにアクセスし得る。データ接続の例示的なタイプとしては、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適な、ワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、ワイヤード接続(たとえば、デジタル加入者線(DSL:digital subscriber line)、ケーブルモデムなど)、または両方の組合せがあり得る。ファイルサーバからの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。
[0065] 本開示の技法は、ワイヤレス適用例または設定に限定されない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのビデオデータの符号化、データ記憶媒体に記憶されたビデオデータの復号、または他の用途などの様々なマルチメディア用途をサポートするビデオコーディングに適用され得る。いくつかの例では、ビデオコーディングシステム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオ電話などの用途をサポートするために、単方向または双方向のビデオ送信をサポートするように構成され得る。
[0066] 図1は一例にすぎず、本開示の技法は、符号化デバイスと復号デバイスとの間のデータ通信を必ずしも含むとは限らないビデオコーディング設定(たとえば、ビデオ符号化またはビデオ復号)に適用され得る。他の例では、データがローカルメモリから取り出されること、ネットワークを介してストリーミングされることなどが行われる。ビデオ符号化デバイスはデータを符号化し、メモリに記憶し得、および/またはビデオ復号デバイスはメモリからデータを取り出し、復号し得る。多くの例では、符号化および復号は、互いに通信しないが、メモリにデータを符号化し、かつ/またはメモリからデータを取り出して復号するだけであるデバイスによって実行される。
[0067] 図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。いくつかの例では、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を含む場合がある。ビデオソース18は、たとえばビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオデータを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオデータを受信するためのビデオフィードインターフェース、および/またはビデオデータを生成するためのコンピュータグラフィックスシステム、あるいはビデオデータのそのようなソースの組合せを含み得る。
[0068] ビデオエンコーダ20は、ビデオソース18からのビデオデータを符号化することができる。いくつかの例では、ソースデバイス12は、出力インターフェース22を介して宛先デバイス14に符号化ビデオデータを直接送信する。他の例では、符号化ビデオデータはまた、復号および/または再生のための宛先デバイス14による後のアクセスのために記憶媒体またはファイルサーバ上に記憶され得る。
[0069] 図1の例では、宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。いくつかの例では、入力インターフェース28は、受信機および/またはモデムを含む。入力インターフェース28は、チャネル16を介して符号化ビデオデータを受信し得る。ビデオデコーダ30は、符号化ビデオデータを復号し得る。ディスプレイデバイス32は、復号されたビデオデータを表示し得る。ディスプレイデバイス32は、宛先デバイス14と一体化され得るかまたはその外部にあり得る。ディスプレイデバイス32は、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの様々なディスプレイデバイスを備える場合がある。
[0070] ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ハードウェアなど、様々な好適な回路のいずれか、あるいはそれらの任意の組合せとして実装され得る。本技法が部分的にソフトウェアで実装される場合、デバイスは、適切な非一時的コンピュータ可読記憶媒体にソフトウェアの命令を記憶し得、1つまたは複数のプロセッサを使用してその命令をハードウェアで実行して、本開示の技法を実行し得る。(ハードウェア、ソフトウェア、ハードウェアとソフトウェアの組合せなどを含む)上記のいずれも、1つまたは複数のプロセッサであると見なされ得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含まれる場合があり、両者のいずれかがそれぞれのデバイス内の複合エンコーダ/デコーダ(CODEC)の一部として組み込まれる場合がある。
[0071] 本開示は、概して、ビデオエンコーダ20が、ある情報をビデオデコーダ30などの別のデバイスに「シグナリング(signaling)」することに言及する場合がある。「シグナリング」という用語は、概して、圧縮ビデオデータを復号するために使用されるシンタックス要素および/または他のデータの通信を指し得る。そのような通信は、リアルタイムまたはほぼリアルタイムに起こり得る。代替的に、そのような通信は、符号化時に符号化されたビットストリーム内でシンタックス要素をコンピュータ可読記憶媒体に記憶するときに行われる場合があるなど、ある時間期間にわたって行われ得、次いで、これらの要素は、この媒体に記憶された後の任意の時間に復号デバイスによって取り出され得る。
[0072] いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、そのスケーラブルビデオコーディング(SVC:Scalable Video Coding)拡張、マルチビュービデオコーディング(MVC)拡張、およびMVCベースの3DV拡張を含む、ISO/IEC MPEG−4 Visualおよび(ISO/IEC MPEG−4 AVCとしても知られる)ITU−T H.264などのビデオ圧縮規格に従って動作する。さらに、H.264/AVCに対する3次元ビデオ(3DV:three-dimensional video)コーディング拡張、すなわちAVCベースの3DVを生成する作業が進行中である。H.264のMVC拡張のジョイントドラフトは、「Advanced video coding for generic audiovisual services」、ITU−T勧告H.264、2010年3月に記載されている。他の例では、ビデオエンコーダ20およびビデオデコーダ30は、ITU−T H.261、ISO/IEC MPEG−1 Visual、ITU−T H.262またはISO/IEC MPEG−2 Visual、およびITU−T H.263、ISO/IEC Visualに従って動作し得る。したがって、ビデオエンコーダ20およびビデオデコーダ30は、そのSVCおよびMVCの拡張版を含む、ITU−T H. 261、ISO/IEC MPEG−1ビジュアル、ITU−T H.262またはISO/IEC MPEG−2ビジュアル、ITU−T H.263、(ISO/IEC MPEG−4 AVCとしても知られる)ISO/IEC MPEG−4ビジュアルおよびITU−T H.264を含む、ビデオコーディング規格に従って動作することができる。
[0073] 他の例では、ビデオエンコーダ20およびビデオデコーダ30は、ITU−Tビデオコーディングエキスパートグループ(VCEG:Video Coding Experts Group)とISO/IECモーションピクチャエキスパーツグループ(MPEG:Motion Picture Experts Group)とのビデオコーディング共同研究部会(JCT−VC:Joint Collaboration Team on Video Coding)によって開発された高効率ビデオコーディング(HEVC)規格に従って動作し得る。「HEVC Working Draft 9」と呼ばれるHEVC規格のドラフトは、Brossらの「High Efficiency Video Coding(HEVC) text specification draft 9」、ITU−T SG16 WP3およびISO/IEC JTC1/SC29/WG11のJoint Collaborative Team on Video Coding(JCT−VC)、第11回会議、上海、中国、2012年10月、に記載されている。さらに、HEVC向けのスケーラブルビデオコーディング拡張、マルチビューコーディング拡張、および3DV拡張を製作する作業が進行中である。HEVCのスケーラブルビデオコーディング拡張はSHEVCと呼ばれることがある。ビデオエンコーダ20およびビデオデコーダ30は、HEVC規格に対するそのような拡張に従って動作し得る。
[0074] 現時点で、VCEGおよびMPEGの3Dビデオコーディング共同研究部会(JCT−3C)は、HEVCに基づく3DV規格を開発中であり、規格化作業の一部は、HEVC(MV−HEVC)に基づくマルチビュービデオコーデック、およびHEVC(3D−HEVC)に基づく3Dビデオコーディングについての別の一部の規格化を含む。3D−HEVC用に、コーディングユニット/予測ユニットレベルでのものを含む新たなコーディングツールが、テクスチャおよび深度ビューの両方のために、含められ、サポートされ得る。2013年12月19日の時点で、3D−HEVC用ソフトウェア(すなわち、3D−HTMバージョン6.0)が、以下のリンクからダウンロード可能である。
[3D−HTM]:https://hevc.hhi.fraunhofer.de/svn/svn_3DVCSoftware/tags/HTM−6.0/
[0075] 概して、HEVCの動き補償ループは、H.264/AVCにおけるものと同じである。たとえば、現在フレーム
は、量子化解除された係数(dequantized coefficient)γプラス時間予測Pに等しい。
上の公式で、PはPフレームについての単方向予測、またはBフレームについての双方向予測を示す。
[0076] ただし、HEVCにおける動き補償の単位は、以前のビデオコーディング規格における単位とは異なる。たとえば、以前のビデオコーディング規格におけるマクロブロックの概念は、HEVCでは存在しない。そうではなく、マクロブロックは、一般的な4分木方式に基づく極めて柔軟な階層構造によって置き換えられる。この方式の中で、3タイプのブロック、すなわちコーディングユニット(CU:coding unit)、予測ユニット(PU:prediction unit)、および変換ユニット(TU:transform unit)が定義される。CUとは、領域分割の基本単位である。CUの概念はマクロブロックの概念に類似するが、CUは最大サイズに制限されず、CUは、コンテンツの適応性を向上させるように、4つの等しいサイズのCUへの再帰分割(recursive splitting)を可能にする。PUはインター/イントラ予測の基本単位であり、PUは単一のPU内に複数の任意形状の区分を含んで、不規則な画像パターンを効果的にコーディングすることができる。TUとは、変換の基本単位である。CUのTUは、CUのPUとは無関係に定義され得る。ただし、TUのサイズは、TUが属するCUに制限される。3つの異なる概念へのブロック構造のこの分離は、各々がそれの役割に従って最適化されることを可能にし得、それによりコーディング効率が改善され得る。
[0077] HEVCおよび他のビデオコーディング仕様では、ビデオシーケンスは一般に一連のピクチャを含む。ピクチャは「フレーム(frame)」と呼ばれることもある。ピクチャは、SL、SCb、およびSCrと示される3つのサンプルアレイを含み得る。SLは、ルーマサンプルの2次元アレイ(すなわち、ブロック)である。SCbは、Cbクロミナンスサンプルの2次元アレイである。SCrは、Crクロミナンスサンプルの2次元アレイである。クロミナンスサンプルは、本明細書では「クロマ(chroma)」サンプルと呼ばれることもある。他の例では、ピクチャは、モノクロームであり得、ルーマサンプルのアレイのみを含み得る。
[0078] ビデオエンコーダ20は、ピクチャの符号化表現を生成するために、コーディングツリーユニット(CTU:coding tree unit)のセットを生成してもよい。CTUの各々は、ルーマサンプルのコーディングツリーブロックと、クロマサンプルの2つの対応するコーディングツリーブロックと、それらのコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。3つの別個のカラープレーン(color plane)を有する1つまたは複数のモノクロームピクチャでは、CTUは、単一のコーディングツリーブロックと、そのコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。コーディングツリーブロックは、サンプルのN×Nブロックであり得る。CTUは「ツリーブロック(tree block)」または「最大コーディングユニット」(LCU:largest coding unit)と呼ばれることもある。HEVCのCTUは、H.264/AVCなど、他の規格のマクロブロックに広い意味で類似し得る。しかしながら、CTUは、必ずしも特定のサイズに限定されるとは限らず、1つまたは複数のCUを含み得る。スライスは、ラスタ走査順序で連続的に順序付けられた整数個のCTUを含み得る。
[0079] コード化スライスは、スライスヘッダとスライスデータとを含み得る。スライスのスライスヘッダは、スライスについての情報を提供するシンタックス要素を含むシンタックス構造であり得る。スライスデータは、スライスのCTUを含み得る。
[0080] 本開示は、1つまたは複数のサンプルブロックのサンプルをコーディングするのに使われる1つまたは複数のサンプルブロックおよびシンタックス構造を指すのに、「ビデオユニット(video unit)」または「ビデオブロック(video block)」または「ブロック(block)」という用語を使う場合がある。例示的なタイプのビデオユニットは、CTU、CU、PU、変換ユニット(TU)、マクロブロック、マクロブロック区分などを含み得る。いくつかのコンテキストでは、PUの説明は、マクロブロックまたはマクロブロック区分の説明と交換され得る。
[0081] コード化CTUを生成するために、ビデオエンコーダ20は、CTUのコーディングツリーブロックに対して4分木区分(quad-tree partitioning)を再帰的に実行して、コーディングツリーブロックをコーディングブロックに分割し得、したがって「コーディングツリーユニット(coding tree unit)」という名称がある。コーディングブロックは、サンプルのN×Nブロックである。CUは、ルーマサンプルアレイとCbサンプルアレイとCrサンプルアレイとを有するピクチャのルーマサンプルのコーディングブロックと、そのピクチャのクロマサンプルの2つの対応するコーディングブロックと、それらのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。3つの別個のカラープレーンを有する1つまたは複数のモノクロームピクチャでは、CUは、単一のコーディングブロックと、そのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。
[0082] ビデオエンコーダ20は、CUのコーディングブロックを1つまたは複数の予測ブロックに区分してもよい。予測ブロックは、同じ予測がそれに適用されるサンプルの矩形(すなわち、正方形または非正方形)ブロックである。CUのPUは、ルーマサンプルの予測ブロックと、クロマサンプルの2つの対応する予測ブロックと、それらの予測ブロックを予測するために使用されるシンタックス構造とを備え得る。3つの別個のカラープレーンを有する1つまたは複数のモノクロームピクチャでは、PUは、単一の予測ブロックと、その予測ブロックを予測するために使用されるシンタックス構造とを備え得る。ビデオエンコーダ20は、CUの各PUのルーマ予測ブロック、Cb予測ブロック、およびCr予測ブロックの予測ルーマブロック、予測Cbブロック、および予測Crブロックを生成してもよい。したがって、本開示では、CUは、1つまたは複数のPUに区分されると言うことができる。説明を簡単にするために、本開示では、PUの予測ブロックのサイズを単にPUのサイズと呼ぶことがある。
[0083] ビデオエンコーダ20は、イントラ予測またはインター予測を使用して、PUのための予測ブロックを生成し得る。ビデオエンコーダ20がイントラ予測を使用してPUの予測ブロックを生成する場合、ビデオエンコーダ20は、PUを含むピクチャのサンプルに基づいてPUの予測ブロックを生成し得る。本開示では、「に基づいて」という句は、「に少なくとも部分的に基づいて」を示し得る。CUのPUの予測ブロックが、イントラ予測を使って生成されるとき、現在CUの予測モード(すなわち、PredMode)は、MODE_INTRAとして指定される。CUのPUの予測ブロックが、インター予測を使って生成されるとき、現在CUの予測モード(すなわち、PredMode)は、MODE_INTERとして指定される。
[0084] ビデオエンコーダ20がインター予測を使用してPUの予測ブロックを生成する場合、ビデオエンコーダ20は、PUに関連付けられたピクチャ以外の1つまたは複数のピクチャの復号サンプルに基づいて、PUの予測ブロックを生成し得る。ブロック(たとえば、PU)の予測ブロックを生成するのに、インター予測が使われるとき、本開示は、そのブロックを「インターコーディングされる(inter-coded)」または「インター予測される(inter predicted)」と呼ぶ場合がある。インター予測は、単方向(すなわち、単予測)でも双方向(すなわち、双予測)でもよい。インター予測を実行するために、ビデオエンコーダ20は、現在ピクチャについての第1の参照ピクチャリスト(RefPicList0)を生成すればよく、現在ピクチャについての第2の参照ピクチャリスト(RefPicList1)を生成してもよい。参照ピクチャリストの各々は、1つまたは複数の参照ピクチャを含み得る。参照ピクチャリストが構築された後(すなわち、利用可能であれば、RefPicList0およびRefPicList1)、参照ピクチャリストに対する参照インデックスは、参照ピクチャリストに含まれる任意の参照ピクチャを識別するために使用され得る。
[0085] 単予測を使うとき、ビデオエンコーダ20は、RefPicList0およびRefPicList1のいずれかにおいて参照ピクチャを探索して、参照ピクチャ内の参照ロケーションを決定すればよい。さらに、単予測を使うとき、ビデオエンコーダ20は、参照ロケーションに対応するサンプルに少なくとも部分的に基づいて、PUのための予測ブロックを生成すればよい。さらに、単予測を使うとき、ビデオエンコーダ20は、PUの予測ブロックと参照ロケーションとの間の空間変位を示す単一の動きベクトルを生成すればよい。動きベクトルは水平成分と垂直成分とを含み得る。水平成分は、PUの予測ブロックと参照ロケーションとの間の水平変位を指定し、垂直成分は、PUの予測ブロックと参照ロケーションとの間の垂直変位を指定する。
[0086] PUを符号化するのに双予測(bi-prediction)を使うとき、ビデオエンコーダ20は、RefPicList0中の参照ピクチャ中の第1の参照ロケーションと、RefPicList1中の参照ピクチャ中の第2の参照ロケーションとを決定すればよい。ビデオエンコーダ20は、現在ビデオユニットの予測ブロックを、第1および第2の参照ロケーションに対応するサンプルに少なくとも部分的に基づいて生成し得る。さらに、PUを符号化するのに双予測を使うとき、ビデオエンコーダ20は、PUの予測ブロックと第1の参照ロケーションとの間の空間変位を示す第1の動きベクトルと、PUの予測ブロックと第2の参照ロケーションとの間の空間変位を示す第2の動きベクトルとを生成すればよい。
[0087] ビデオエンコーダ20がインター予測を使用してPUの予測ブロックを生成する場合、ビデオエンコーダ20は、PUに関連付けられたピクチャ以外の1つまたは複数のピクチャのサンプルに基づいて、PUの予測ブロックを生成し得る。たとえば、ビデオエンコーダ20は、単方向インター予測(すなわち、単予測(uni-prediction))または双方向インター予測(すなわち、双予測)をPUに対して実行することができる。
[0088] ビデオエンコーダ20がPUに対して単予測を実行する事例では、ビデオエンコーダ20は、PUの動きベクトルに基づいて、参照ピクチャ中の参照ロケーションを決定することができる。ビデオエンコーダ20は次いで、PUのための予測ブロックを決定し得る。PUのための予測ブロック中の各サンプルは、参照ロケーションに関連付けられ得る。いくつかの例では、PUのための予測ブロック中のサンプルは、サンプルが、PUと同じサイズを有するサンプルブロック中にあるとともにその左上隅が参照ロケーションであるとき、その参照ロケーションに関連付けられ得る。予測ブロック中の各サンプルは、参照ピクチャの、実際の、または補間されたサンプルであり得る。
[0089] ビデオエンコーダ20がPUに対して双予測を実行する事例では、PUは2つの動きベクトルを有する。ビデオエンコーダ20は、PUの動きベクトルに基づいて、2つの参照ピクチャ中の2つの参照ロケーションを決定することができる。ビデオエンコーダ20は次いで、上述したように、2つの参照ロケーションに関連付けられた参照ブロックを決定することができる。ビデオエンコーダ20は次いで、PUのための予測ブロックを決定し得る。予測ブロック中の各サンプルは、参照ブロック中の対応するサンプルの重み付き平均であり得る。サンプルの重み付けは、PUを含むピクチャからの、参照ピクチャの時間的距離に基づき得る。
[0090] ビデオエンコーダ20は、CUを、様々な区分モードに一致する1つまたは複数のPUに区分することができる。たとえば、CUのPUの予測ブロックを生成するのにイントラ予測が使われる場合、CUは、PART_2N×2NモードまたはPART_N×Nモードに従って区分されてよい。PART_2N×2Nモードでは、CUは、1つのPUを有するだけである。PART_N×Nモードでは、CUは、矩形予測ブロックを有する4つの等しいサイズのPUを有する。CUのPUのための予測ブロックを生成するのにインター予測が使われる場合、CUは、PART_2N×2Nモード、PART_N×Nモード、PART_2N×Nモード、PART_N×2Nモード、PART_2N×nUモード、PART_2N×uDモード、PART_nL×2Nモード、またはPART_nR×2Nモードに従って区分されてよい。PART_2N×NモードおよびPART_N×2Nモードでは、CUは、矩形予測ブロックを有する2つの等しいサイズのPUに区分される。PART_2N×nUモード、PART_2N×uDモード、PART_nL×2Nモード、およびPART_nR×2Nモードの各々において、CUは、矩形予測ブロックを有する2つの等しくないサイズのPUに区分される。
[0091] ビデオエンコーダ20は、CUの1つまたは複数のPUの予測ルーマブロック、予測Cbブロック、および予測Crブロックを生成した後、CUのルーマ残差ブロックを生成してもよい。CUのルーマ残差ブロック内の各サンプルは、CUの予測ルーマブロックのうちの1つの予測ルーマブロック内のルーマサンプルとCUの元のルーマコーディングブロック内の対応するサンプルとの間の差を示す。さらに、ビデオエンコーダ20はCUのCb残差ブロックを生成してもよい。CUのCb残差ブロック中の各サンプルは、CUの予測Cbブロックのうちの1つ中のCbサンプルと、CUの元のCbコーディングブロック中の対応するサンプルとの間の差分を示し得る。ビデオエンコーダ20はCUのCr残差ブロックを生成してもよい。CUのCr残差ブロック中の各サンプルは、CUの予測Crブロックのうちの1つ中のCrサンプルと、CUの元のCrコーディングブロック中の対応するサンプルとの間の差分を示し得る。
[0092] さらに、ビデオエンコーダ20は4分木区分を使用してCUのルーマ残差ブロック、Cb残差ブロック、およびCr残差ブロックを1つまたは複数のルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックに分解し得る。変換ブロックは、同じ変換が適用されるサンプルの矩形(たとえば、正方形または非正方形)ブロックである。CUのTUは、ルーマサンプルの変換ブロックと、クロマサンプルの2つの対応する変換ブロックと、それらの変換ブロックサンプルを変換するために使用されるシンタックス構造とを備え得る。したがって、CUの各TUは、ルーマ変換ブロック、Cb変換ブロックおよびCr変換ブロックに関連付けられ得る。TUに関連付けられたルーマ変換ブロックはCUのルーマ残差ブロックのサブブロックであり得る。Cb変換ブロックはCUのCb残差ブロックのサブブロックであり得る。Cr変換ブロックはCUのCr残差ブロックのサブブロックであってもよい。3つの別個のカラープレーンを有する1つまたは複数のモノクロームピクチャでは、TUは、単一の変換ブロックと、その変換ブロックのサンプルを変換するために使用されるシンタックス構造とを備え得る。
[0093] ビデオエンコーダ20はTUのルーマ変換ブロックに1回または複数の変換を適用してTUのルーマ係数ブロックを生成してよい。係数ブロックは変換係数の2次元ブロックであってよい。変換係数はスカラー量であり得る。ビデオエンコーダ20はTUのCb変換ブロックに1回または複数の変換を適用してTUのCb係数ブロックを生成してよい。ビデオエンコーダ20はTUのCr変換ブロックに1回または複数の変換を適用してTUのCr係数ブロックを生成してよい。
[0094] ビデオエンコーダ20は、係数ブロック(たとえば、ルーマ係数ブロック、Cb係数ブロック、またはCr係数ブロック)を生成した後、係数ブロックを量子化してもよい。量子化は、一般に、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を実現する処理を指す。ビデオエンコーダ20は、CUに関連付けられた量子化パラメータ(QP:quantization parameter)値に基づいてCUのTUに関連付けられた係数ブロックを量子化し得る。ビデオエンコーダ20は、CUに関連付けられたQPの値を調整することによって、CUに関連付けられた係数ブロックに適用される量子化の程度を調整することができる。いくつかの例では、CUに関連付けられたQP値は、全体として、現在ピクチャまたはスライスに関連付けられ得る。ビデオエンコーダ20が係数ブロックを量子化した後に、ビデオエンコーダ20は、量子化変換係数を示すシンタックス要素をエントロピー符号化し得る。たとえば、ビデオエンコーダ20は、量子化変換係数を示すシンタックス要素に対してコンテキスト適応型バイナリ算術コーディング(CABAC:Context-Adaptive Binary Arithmetic Coding)を実行し得る。
[0095] ビデオエンコーダ20は、コード化ピクチャと関連付けられたデータとの表現を形成するビットのシーケンスを含むビットストリームを出力し得る。ビットストリームは、一連のネットワークアブストラクションレイヤ(NAL:network abstraction layer)ユニットを備え得る。NALユニットは、NALユニット中のデータのタイプの指示と、必要に応じてエミュレーション防止ビットが点在するローバイトシーケンスペイロード(RBSP:raw byte sequence payload)の形態でそのデータを含んでいるバイトとを含んでいるシンタックス構造である。NALユニットの各々は、NALユニットヘッダを含み、RBSPをカプセル化する。NALユニットヘッダは、NALユニットタイプコードを含むシンタックス要素を含み得る。NALユニットのNALユニットヘッダによって指定されるNALユニットタイプコードは、NALユニットのタイプを示す。RBSPは、NALユニット内にカプセル化された整数個のバイトを含んでいるシンタックス構造であり得る。いくつかの例では、RBSPはゼロビットを含む。
[0096] 異なるタイプのNALユニットは、異なるタイプのRBSPをカプセル化し得る。たとえば、異なるタイプのNALユニットが、ビデオパラメータセット(VPS)、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、コード化スライス、SEIなどについての異なるRBSPをカプセル化することができる。ビデオコーディングデータに対するRBSP(パラメータセットおよびSEIメッセージに対するRBSPに対立するものとして)をカプセル化するNALユニットは、ビデオコーディングレイヤ(VCL)NALユニットと呼ばれることがある。
[0097] SPSは、コード化ビデオシーケンス(CVS:coded video sequence)のすべてのスライスに該当する情報を含み得る。HEVCでは、CVSは、瞬時復号リフレッシュ(IDR:instantaneous decoding refresh)ピクチャ、または切断リンクアクセス(BLA:broken link access)ピクチャ、または、ビットストリーム中の第1のピクチャであるクリーンランダムアクセス(CRA:clean random access)ピクチャから開始し、IDRまたはBLAピクチャでないすべての後続のピクチャを含み得る。すなわち、HEVCでは、CVSは、復号順序で、ビットストリーム中の第1のアクセスユニットであるCRAアクセスユニットと、IDRアクセスユニットまたはBLAアクセスユニットと、それに続いて、後続のIDRまたはBLAアクセスユニットを含まないがそれまでのすべての後続のアクセスユニットを含む、0個以上の非IDRおよび非BLAアクセスユニットとからなり得る、アクセスユニットのシーケンスを備え得る。
[0098] VPSは、0個以上のCVS全体に適用されるシンタックス要素を備えるシンタックス構造である。SPSは、SPSがアクティブであるとき、アクティブであるVPSを識別するシンタックス要素を含み得る。したがって、VPSのシンタックス要素は、SPSのシンタックス要素よりも一般的に適用可能であり得る。PPSは、0個以上のコード化ピクチャに適用されるシンタックス要素を備えるシンタックス構造である。PPSは、PPSがアクティブであるとき、アクティブであるSPSを識別するシンタックス要素を含み得る。スライスのスライスヘッダは、スライスがコーディングされるときにアクティブであるPPSを示すシンタックス要素を含み得る。
[0099] ビデオデコーダ30は、ビデオエンコーダ20によって生成されたビットストリームを受信することができる。さらに、ビデオデコーダ30は、ビットストリームをパーシングして、ビットストリームからシンタックス要素を取得し得る。ビデオデコーダ30は、ビットストリームから取得されたシンタックス要素に少なくとも部分的に基づいてビデオデータのピクチャを再構成し得る。ビデオデータを再構成するためのプロセスは、概して、ビデオエンコーダ20によって実行されるプロセスの逆であり得る。たとえば、ビデオデコーダ30は、PUの動きベクトルを使用して現在CUのPUのための予測ブロックを決定し得る。さらに、ビデオデコーダ30は、現在CUのTUに関連付けられた係数ブロックを逆量子化(inverse quantize)し得る。ビデオデコーダ30は、現在CUのTUに関連付けられた変換ブロックを再構成するために係数ブロックに対して逆変換を実行し得る。ビデオデコーダ30は、現在CUのPUのための予測ブロックのサンプルを現在CUのTUの変換ブロックの対応するサンプルに加算することによって、現在CUのコーディングブロックを再構成し得る。ピクチャの各CUのためのコーディングブロックを再構成することによって、ビデオデコーダ30はピクチャを再構成し得る。
[0100] いくつかの例では、ビデオエンコーダ20は、マージ/スキップモードまたは高度動きベクトル予測(AMVP:advanced motion vector prediction)モードを使用してPUの動き情報をシグナリングし得る。たとえば、HEVCでは、動きパラメータの予測のための2つのモードがあり、一方はマージ/スキップモードであり、他方はAMVPである。動き予測は、1つまたは複数の他のビデオユニットの動き情報に基づく、ビデオユニット(たとえば、PU)の動き情報の決定を備え得る。PUの動き情報は、PUの動きベクトル(1つまたは複数)と、PUの参照インデックス(1つまたは複数)と、1つまたは複数の予測方向インジケータとを含み得る。
[0101] ビデオエンコーダ20がマージモードを使用して現在PUの動き情報をシグナリングするとき、ビデオエンコーダ20は、マージ候補リストを生成し得る。言い換えると、ビデオエンコーダ20は、動きベクトル予測子リスト構築プロセスを実行することができる。マージ候補リストは、現在PUに空間的または時間的に隣接するPUの動き情報を示すマージ候補のセットを含む。すなわち、マージモードでは、動きパラメータ(たとえば、参照インデックス、動きベクトルなど)の候補リストが構築され、候補は、空間的隣接ブロックおよび時間的隣接ブロックからであり得る。
[0102] さらに、マージモードでは、ビデオエンコーダ20は、マージ候補リストからマージ候補を選択することができ、選択されたマージ候補によって示される動き情報を、現在PUの動き情報として使うことができる。ビデオエンコーダ20は、選択されたマージ候補のマージ候補リスト中の位置をシグナリングし得る。たとえば、ビデオエンコーダ20は、選択されたマージ候補の候補リスト内の位置を示すインデックス(すなわち、マージ用候補インデックス)を送信することによって、選択された動きベクトルパラメータをシグナリングすることができる。ビデオデコーダ30は、ビットストリームから、候補リストの中へのインデックス(すなわち、マージ用候補インデックス)を取得することができる。さらに、ビデオデコーダ30は、同じマージ候補リストを生成することができ、マージ用候補インデックスに基づいて、選択されたマージ候補を決定することができる。ビデオデコーダ30は、次いで、選択されたマージ候補の動き情報を、現在PUのための予測ブロックを生成するのに使い得る。つまり、ビデオデコーダ30は、候補リストインデックスに少なくとも部分的に基づいて、候補リスト中の選択された候補を決定することができ、ここで、選択された候補は、現在PUについての動きベクトルを指定する。このように、デコーダ側では、インデックスが復号されると、インデックスが指す対応するブロックのすべての動きパラメータは、現在PUによって継承され得る。
[0103] スキップモードはマージモードと同様である。スキップモードでは、ビデオエンコーダ20およびビデオデコーダ30は、マージモードにおいてビデオエンコーダ20およびビデオデコーダ30がマージ候補リストを使うのと同じようにマージ候補リストを生成し、使うことができる。ただし、ビデオエンコーダ20がスキップモードを使って現在PUの動き情報をシグナリングするとき、ビデオエンコーダ20は、現在PUについてのどの残差データもシグナリングしない。したがって、ビデオデコーダ30は、残差データを使用せずに、マージ候補リスト中の選択された候補の動き情報によって示される参照ブロックに基づいて、PUのための予測ブロックを決定することができる。
[0104] AMVPモードは、ビデオエンコーダ20が候補リストを生成することができ、候補リストから候補を選択することができるという点で、マージモードと同様である。ただし、ビデオエンコーダ20がAMVPモードを使って現在PUのRefPicListX(Xは0または1である)動き情報をシグナリングするとき、ビデオエンコーダ20は、現在PUについてのRefPicListX動きベクトル予測子(MVP)フラグをシグナリングするのに加え、現在PUについてのRefPicListX動きベクトル差分(MVD)と、現在PUについてのRefPicListX参照インデックスとをシグナリングすることができる。現在PUについてのRefPicListX MVPフラグは、AMVP候補リスト中の選択されたAMVP候補の位置を示し得る。現在PUについてのRefPicListX MVDは、PUのRefPicListX動きベクトルと選択されたAMVP候補の動きベクトルとの間の差分を示し得る。このようにして、ビデオエンコーダ20は、RefPicListX MVPフラグと、RefPicListX参照インデックス値と、RefPicListX MVDとをシグナリングすることによって、現在PUのRefPicListX動き情報をシグナリングすることができる。言い換えると、現在PUについての動きベクトルを表す、ビットストリーム中のデータは、参照インデックスと、候補リストへのインデックスと、MVDとを表すデータを含み得る。したがって、選択された動きベクトルは、候補リストへのインデックスを送信することによってシグナリングされ得る。加えて、参照インデックス値および動きベクトル差分もシグナリングされ得る。
[0105] さらに、AMVPモードを使って現在PUの動き情報がシグナリングされると、ビデオデコーダ30は、ビットストリームから、現在PUについてのMVDと、MVPフラグとを取得することができる。ビデオデコーダ30は、同じAMVP候補リストを生成することができ、MVPフラグに基づいて、選択されたAMVP候補を決定することができる。言い換えれば、AMVPでは、各動き仮定のための動きベクトル予測子の候補リストは、コーディングされた参照インデックスに基づいて導出される。前述のように、このリストは、同じ参照インデックスと、時間的参照ピクチャにおいてコロケートブロックの隣接ブロックの動きパラメータに基づいて導出される時間的動きベクトル予測子とに関連する隣接ブロックの動きベクトルを含み得る。ビデオデコーダ30は、選択されたAMVP候補によって示される動きベクトルにMVDを加算することによって、現在PUの動きベクトルを回復することができる。つまり、ビデオデコーダ30は、選択されたAMVP候補によって示される動きベクトルおよびMVDに基づいて、現在PUの動きベクトルを決定することができる。ビデオデコーダ30は、次いで、回復された1つの動きベクトルまたは複数の動きベクトルを、現在PU用の予測ブロックを生成するのに使い得る。
[0106] ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)が現在PUについてのAMVP候補リストを生成するとき、ビデオコーダは、現在PUに空間的に隣接するロケーションをカバーするPU(すなわち、空間的隣接PU)の動き情報に基づいて、1つまたは複数のAMVP候補を、および現在PUに時間的に隣接するPUの動き情報に基づいて、1つまたは複数のAMVP候補を導出することができる。本開示では、PU(または他のタイプのビデオユニット)は、PUの予測ブロック(またはビデオユニットの他のタイプのサンプルブロック)がロケーションを含む場合、そのロケーションを「カバーする(cover)」と言われ得る。候補リストは、同じ参照インデックスと、時間的参照ピクチャにおいてコロケートブロック(co-located block)の隣接ブロックの動きパラメータ(すなわち、動き情報)に基づいて導出される時間的動きベクトル予測子とに関連する隣接ブロックの動きベクトルを含み得る。図2は、現在PU40に対して、例示的な空間的隣接PUを示す概念図である。図2の例では、空間的隣接PUは、A0、A1、B0、B1、およびB2として示されるロケーションをカバーするPUであり得る。現在PUに時間的に隣接するPU(すなわち、現在PUとは異なる時間インスタンス中にあるPU)の動き情報に基づくマージ候補リストまたはAMVP候補リスト中の候補は、TMVPと呼ばれ得る。TMVPは、HEVCのコーディング効率を向上させるのに使うことができ、他のコーディングツールとは異なり、TMVPは、復号ピクチャバッファ中、より具体的には参照ピクチャリスト中のフレームの動きベクトルにアクセスする必要があり得る。
[0107] 上述したように、HEVCのマルチビュー拡張(すなわち、MV−HEVC)およびHEVCの3DV拡張(すなわち、3D−HEVC)は開発中である。すなわち、VCEGおよびMPEGの3Dビデオコーディング共同研究部会(JCT−3V)は、HEVCに基づく3DV規格を開発中であり、規格化作業の一部は、HEVC(MV−HEVC)に基づくマルチビュービデオコーデック、およびHEVC(3D−HEVC)に基づく3Dビデオコーディングについての別の一部の規格化を含む。MV−HEVCは、HEVCに対するハイレベルシンタックス(HLS:high-level syntax)変更だけがあることと、HEVCのCU/PUレベルのどのモジュールも、設計し直される必要がなく、HEVCのCU/PUレベルのすべてのモジュールが、MV−HEVC用に十分に再利用されることとを保証し得る。3D−HEVCは、テクスチャおよび深度ビューの両方に対して、CU/PUレベルのものを含む新たなコーディングツールを含み、サポートする。
[0108] Gerhard Techら、「3D−HEVC Test Model Description draft1」、JCT3V−A1005、ITU−T SG16 WP3およびISO/IEC JTC1/SC29/WG11の3Dビデオコーディング拡張開発共同研究部会、第1回会合、ストックホルム、スウェーデン、2012年7月16〜20日は、3D−HEVCの参照ソフトウェア記述、ならびに作業草案を提供している。Gerhard Techら、「3D−HEVC Test Model 2」、JCT3V−A1005、ITU−T SG16 WP3およびISO/IEC JTC1/SC29/WG11の3Dビデオコーディング拡張開発共同研究部会、第2回会合、上海、中国、2012年10月13〜19日(以下では、3D−HEVC Test Model 2」)は、3D−HEVCの別の作業草案である。Gerhard Techら、「MV−HEVC Working Draft 1」、JCT3V−A1004、ITU−T SG16 WP3およびISO/IEC JTC1/SC29/WG11の3Dビデオコーディング拡張開発共同研究部会、第1回会合、ストックホルム、スウェーデン、2012年7月16〜20日(以下では、「JCT3V−A1004」)は、MV−HEVCについての作業草案を提供している。
[0109] 2013年12月20日の時点で、3D−HEVC用の3D−HTM用のソフトウェアは、[3D−HTMバージョン5.0]、https://hevc.hhi.fraunhofer.de/svn/svn_3DVCSoftware/tags/HTM−5.0/のリンクから入手可能である。さらに、2013年12月20日の時点で、3D−HTMに基づくMV−HEVC用の参照ソフトウェアは、[3D−HTMバージョン5.1]、https://hevc.hhi.fraunhofer.de/svn/svn_3DVCSoftware/tags/HTM−5.1/から入手可能である。
[0110] MV−HEVCおよび3D−HEVCでは、異なる視点からの同じシーンの複数のビューがあり得る。「アクセスユニット(access unit)」という用語は、同じ時間インスタンスに対応するピクチャのセットを指すために使用され得る。したがって、ビデオデータは、時間とともに生じる一連のアクセスユニットとして概念化され得る。「ビュー成分(view component)」は、単一のアクセスユニット内のビューのコード化表現であり得る。ビュー成分は、テクスチャビュー成分と深度ビュー成分とを備え得る。本開示では、「ビュー(view)」は、同じビュー識別子に関連する一連のビュー成分を指すことがある。
[0111] MV−HEVCおよび3D−HEVCは、ビュー間予測をサポートする。ビュー間予測は、HEVCにおいて使用されるインター予測と同様であり、同じシンタックス要素を使用し得る。ただし、ビデオコーダが現在ビデオユニット(PUなど)に対してビュー間予測を実行するとき、ビデオエンコーダ20は、参照ピクチャとして、その現在ビデオユニットと同じアクセスユニット中にあるが異なるビュー中にあるピクチャを使用し得る。言い換えると、マルチビューコーディングにおいて、ビュー間予測は、ビューの間の相関を取り除くために、同じアクセスユニット内(すなわち、同じ時間インスタンス内)の異なるビュー中でキャプチャされたピクチャの間で実行される。対照的に、従来のインター予測は、参照ピクチャとして異なるアクセスユニット中のピクチャのみを使用する。
[0112] 現在ピクチャ中のブロックが、ビュー間予測を使ってコーディングされると、そのブロックは、ビュー間参照ピクチャ中のロケーションを示す動きベクトルを有する。ビュー間参照ピクチャは、現在ピクチャと同じ時間インスタンス中にあるが、現在ピクチャとは異なるビュー中にある参照ピクチャであり得る。したがって、ビデオコーダが(マクロブロックやPUなどの)現在ビデオユニットに対してビュー間予測を実行するとき、ビデオコーダは、参照ピクチャとして、現在ビデオユニットと同じアクセスユニット中にあるが異なるビュー中にあるピクチャを使用し得る。
[0113] したがって、マルチビュービデオコーディングのコンテキストでは、2種類の動きベクトルが存在する。動きベクトルの1つの種類は、時間参照ピクチャを指す通常動きベクトルである。このタイプの動きベクトルは、本明細書では、時間的動きベクトルと呼ばれ得る。通常時間的動きベクトルに対応するインター予測のタイプは、動き補償予測(MCP)と呼ばれ得る。ビュー間予測参照ピクチャが動き補償に使われるとき、対応する動きベクトルは、「視差動きベクトル(disparity motion vector)」と呼ばれ得る。言い換えると、視差動きベクトルは、異なるビュー中のピクチャ(すなわち、視差参照ピクチャ(disparity reference picture)またはビュー間参照ピクチャ(inter-view reference picture))を指す。視差動きベクトルに対応するインター予測のタイプは、「視差補償予測(disparity-compensated prediction)」あるいは「DCP」と呼ばれ得る。
[0114] ビデオコーダは、現在ブロックについての予測ブロックを決定するのに、現在ブロックの視差動きベクトルを使うことができる。ビデオコーダがビデオエンコーダである場合、ビデオコーダは、現在ブロックについての残差データを生成するのに、現在ブロックについての予測ブロックを使うことができる。ビデオコーダがビデオデコーダである場合、ビデオコーダは、現在ブロックについてのサンプルブロックを再構成するのに、現在ブロックについての予測ブロックと、現在ブロックについての残差データと使うことができる。
[0115] 3D−HEVCの場合のように、H.264/AVCのマルチビューコーディング(MVC:multi-view coding)拡張は、同じアクセスユニット中の(すなわち、同じ時間インスタンスをもつ)ピクチャの間でビュー間予測を可能にする。H.264/AVCのMVC拡張では、ビュー間予測は視差動き補償によってサポートされ、視差動き補償は、H.264/AVC動き補償のシンタックスを使用するが、異なるビュー中のピクチャが参照ピクチャとして使用されることが可能になる。2つのビューのコーディングも、H.264/AVCのMVC拡張によってサポートされ得る。H.264/AVCのMVC拡張の利点の1つは、MVCエンコーダが3Dビデオ入力として3つ以上のビューを取り込むことができ、かつMVCデコーダがそのようなマルチビュー表現を復号することができることである。したがって、MVCデコーダをもつ任意のレンダラは、3つ以上のビューをもつ3Dビデオコンテンツを予想し得る。MVCでは、非ベースビューのうちの1つの中のピクチャをコーディングするとき、ピクチャが異なるビュー内にあるが同じ時間インスタンス中にある場合、そのピクチャは参照ピクチャリストに追加され得る。ビュー間参照ピクチャは、任意のインター予測参照ピクチャとまったく同様に、参照ピクチャリストの任意の位置に入れられ得る。
[0116] 図3は、例示的なマルチビュー復号順序を示す概念図である。マルチビュー復号順序はビットストリーム順序であり得る。図3の例では、各正方形がビュー成分に対応する。正方形の列は、アクセスユニットに対応する。各アクセスユニットは、時間インスタンスのすべてのビューのコード化ピクチャを含むように定義され得る。正方形の行は、ビューに対応する。図3の例では、アクセスユニットがT0〜T8と標示され、ビューがS0〜S7と標示される。アクセスユニットの各ビュー成分は次のアクセスユニットのビュー成分の前に復号されるので、図3の復号順序はタイムファーストコーディングと呼ばれることがある。アクセスユニットの復号順序は、出力または表示順序と同一ではないこともある。
[0117] 図4は、マルチビューコーディングのための例示的な予測構造を示す概念図である。図4のマルチビュー予測構造は、時間的予測とビュー間予測とを含む。図4の例では、各正方形がビュー成分に対応する。図4の例では、アクセスユニットがT0〜T11と標示され、ビューがS0〜S7と標示される。「I」と標示される正方形は、イントラ予測されたビュー成分である。「P」と標示される正方形は、単方向にインター予測されたビュー成分である。「B」および「b」と標示される正方形は、双方向にインター予測されたビュー成分である。「b」と標示される正方形は、「B」と標示される正方形を参照ピクチャとして使用し得る。第1の正方形から第2の正方形を指す矢印は、第1の正方形が、インター予測において、第2の正方形のための参照ピクチャとして利用可能であることを示す。図4の垂直の矢印で示すように、同じアクセスユニットの異なるビュー内のビュー成分は、参照ピクチャとして利用可能であり得る。このように、図4は、マルチビュービデオコーディング用の典型的なMVC予測(各ビュー内のインターピクチャ予測とインタービュー予測の両方を含む)構造を示し、予測参照のために矢印の始点のオブジェクトを使用して矢印の終点のオブジェクトへの矢印によって予測が示される。アクセスユニットの1つのビュー成分を同じアクセスユニットの別のビュー成分に対する参照ピクチャとして使用することは、ビュー間予測と呼ばれることがある。
[0118] マルチビューコーディングでは、ビットストリームは複数のレイヤを有し得る。これらのレイヤは、異なるビューに対応し得る。ビデオデコーダ(たとえば、ビデオデコーダ30)が、あるビュー中のピクチャを他のビュー中のピクチャと無関係に復号することができる場合、そのビューは「ベースビュー(base view)」と呼ばれることがある。ビューは、ビューの復号が1つまたは複数の他のビュー中のピクチャの復号に依存する場合、非ベースビューと呼ばれ得る。
[0119] いくつかの例では、NALユニットは、ヘッダ(すなわち、NALユニットヘッダ)とペイロード(たとえば、RBSP)とを含み得る。NALユニットヘッダはnuh_reserved_zero_6bitsシンタックス要素を含み得る。異なる値を指定するnuh_reserved_zero_6bitシンタックス要素を有するNALユニットは、ビットストリームの異なる「レイヤ(layer)」に属する。したがって、マルチビューコーディング、3DV、またはSVCでは、NALユニットのnuh_reserved_zero_6bitsシンタックス要素はNALユニットのレイヤ識別子(すなわち、レイヤID)を指定する。いくつかの例では、NALユニットがマルチビューコーディング、3DVコーディング、またはSVCにおけるベースレイヤに関係する場合、NALユニットのnuh_reserved_zero_6bitsシンタックス要素は0に等しい。ビットストリームのベースレイヤ中のデータは、ビットストリームの他のレイヤ中のデータと無関係に復号され得る。NALユニットがマルチビューコーディング、3DV、またはSVCにおけるベースレイヤに関係しない場合、nuh_reserved_zero_6bitsシンタックス要素は非0値を有し得る。上記のように、マルチビューコーディングおよび3DVコーディングでは、ビットストリームの異なるレイヤは異なるビューに対応し得る。SVCでは、ベースレイヤ以外のレイヤは、「エンハンスメントレイヤ(enhancement layer)」と呼ばれることがあり、ビットストリームから復号されるビデオデータの視覚的品質を向上させる情報を提供し得る。
[0120] さらに、レイヤ内のいくつかのピクチャは、同じレイヤ内の他のピクチャを参照せずに復号され得る。したがって、レイヤのいくつかのピクチャのデータをカプセル化しているNALユニットは、そのレイヤ中の他のピクチャの復号可能性に影響を及ぼすことなしにビットストリームから削除され得る。そのようなピクチャのデータをカプセル化しているNALユニットを削除すると、ビットストリームのフレームレートが低減し得る。レイヤ内の他のピクチャを参照せずに復号され得るレイヤ内のピクチャのサブセットを、本明細書では「サブレイヤ(sub-layer)」または「時間サブレイヤ(temporal sub-layer)」と呼ぶことがある。
[0121] NALユニットはtemporal_idシンタックス要素も含み得る。NALユニットのtemporal_idシンタックス要素はNALユニットの時間識別子を指定することができる。NALユニットの時間識別子は、そのNALユニットがそれに関連付けられるサブレイヤを識別することができる。したがって、ビットストリームの各サブレイヤは異なる時間識別子に関連付けられ得る。第1のNALユニットの時間識別子が、第2のNALユニットの時間識別子未満である場合、第1のNALユニットによってカプセル化されたデータは、第2のNALユニットによってカプセル化されたデータを参照せずに復号することができる。
[0122] 非ベースビューのうちの1つの中のピクチャをコーディングするとき、ピクチャが、ビデオコーダが現在コーディングしているピクチャとは異なるビュー中にあるがビデオコーダが現在コーディングしているピクチャと同じ時間インスタンス(すなわち、アクセスユニット)中にある場合、ビデオコーダ(ビデオエンコーダ20またはビデオデコーダ30など)は、参照ピクチャリストにピクチャを追加し得る。他のインター予測参照ピクチャと同様に、ビデオコーダは、参照ピクチャリストの任意の位置にビュー間予測参照ピクチャを挿入し得る。言い換えると、ビュー間予測を用いてコーディングされたピクチャが、他の非ベースビューのビュー間予測用の参照ピクチャリスト中に追加され得る。
[0123] さらに、特定のピクチャ中のブロックは、ビュー間参照ピクチャ中の対応するブロックの動き情報または残差データと同様である動き情報または残差データを有し得る。したがって、現在ピクチャ中の現在ブロックの動き情報または残差データは、ビュー間参照ピクチャ中の対応するブロックの動き情報または残差データに基づいて予測され得る。ビュー間残差予測では、ビデオコーダが、現在CUとは異なるビュー中の残差データに基づいて、現在CUの残差ブロックを決定することができる。コーディング効率をさらに向上させるために、高度残差予測(ARP:advanced residual prediction)が、2012年10月の第2回JCT−3V会合における、Zhangら、「3D−CE5.h related:Advanced Residual Prediction for Multiview Coding」、ITU−T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11の3Dビデオコーディング拡張開発共同研究部会、第2回会合、上海、中国、2012年10月13〜19日、文書JCT3V−B0051(以下では、JCT3V−B0051)において提案されている。
[0124] コーディング効率をさらに向上させるために、3D−HEVCは、照度補償を採用した。照度補償(IC)の基本的な考え方は、異なるビューの間の照度不一致が、ビュー間予測において訂正されるべきであるというものである。異なるビューの間のそのような不一致は、異なるカメラが完全に較正されるわけではなく、可能性として、異なるカメラが異なる露出時間を有する結果となるので、起こり得る。本開示の他の箇所で説明するように、ICを適用するかどうかはCUレベルで決定されてよく、ビュー間予測が使われるCU用に、ICフラグがコーディングされる。ICを適用するためのプロセスは、PUの視差ベクトルを使う。
[0125] ビュー間動き予測と、ARPと、照度補償とを可能にするために、ビデオコーダは、ブロック(たとえば、PU、CUなど)についての視差ベクトルを決定すればよい。概して、視差ベクトルは、2つのビューの間の変位を推定するものとして使われる。ビデオコーダは、ビュー間動きまたは残差予測のために別のビュー中の参照ブロックを位置特定するのに、ブロックについての視差ベクトルを使ってもよく、ビデオコーダは、視差ベクトルを、ビュー間動き予測のために視差動きベクトルにコンバート(convert)してもよい。
[0126] いくつかの例では、ブロックについての視差ベクトルを導出するのに、ビデオコーダは、隣接ブロックベースの視差ベクトル(NBDV:Neighboring Blocks Based Disparity Vector)の方法を使うことができる。NBDV導出プロセスは、現在ブロックについての視差ベクトルを導出するのに、視差動きベクトルと、空間的および時間的に隣接するブロックからの暗黙視差動きベクトルとを使う。隣接ブロック(たとえば、現在ブロックに空間的または時間的に隣接するブロック)は、ビデオコーディングにおいて、ほぼ同じ動きと視差情報とを共有する見込みがあるので、現在ブロックは、隣接ブロック中の動きベクトル情報を、現在ブロックの視差ベクトルの予測子として使ってよい。
[0127] 概して、照度補償は、異なるビューの間の照度における差分を効率的にコーディングするための技法である。照度補償は、2012年10月の第2回JCT−3V会合において3D−HEVCに採用された。2013年12月20日の時点で、照度補償に関連した提案は、http://phenix.it−sudparis.eu/jct3v/doc_end_user/documents/2_Shanghai/wg11/JCT3V−B0045−v7.zipからアクセス可能である。
[0128] 3D−HEVCでは、照度補償(IC)フラグがCUレベルでシグナリングされる。言い換えると、CU用のシンタックス構造は、照度補償フラグを含み得る。したがって、ICの適用はCUレベルで決定される。復号されたICフラグが1に等しい場合、ICは、現在CU内のビュー間予測されたPUに対して有効化される。現在CUにICが適用されるかどうかをシグナリングするために使われるシンタックス要素は、「ic_flag」によって示される。現在CUに照度補償が適用されるかどうかをシグナリングするために使われるシンタックス要素は、CUレベルにおいて条件付きでシグナリングされる。
[0129] 現在CUの各PUについて、RefPicListX(Xは0または1に等しい)中の参照ピクチャからPUが予測され、参照ピクチャがビュー間参照ピクチャである場合、ビデオコーダは、予測信号をさらにフィルタリングしてよい。言い換えると、ビデオコーダは、現在CUのPUの予測ブロックに、1つまたは複数のフィルタを適用することができる。1つまたは複数のフィルタの各々は、1つまたは複数のフィルタ係数を有し得る。いくつかの例では、ビデオコーダは、CUの上の行および左の列ならびに参照インデックスによって識別されるRefPicListX中の参照ピクチャ中の参照ブロックの対応する行および列によってRefPicListXに対応する予測方向についてのフィルタ係数を導出することができる。
[0130] 以下の表1は、3D−HEVCテストモデル2のセクションG.7.3.9.1に提示されているcoding_unitシンタックス構造の一部分を示す。coding_unitシンタックス構造とは、CUに関連付けられたシンタックス要素を含むシンタックス構造である。
[0131] 本開示に示すシンタックステーブルでは、形式u(n)のタイプ記述子を有するシンタックス要素は、長さnの符号なし値であり、ただし、nは非負整数である。たとえば、タイプ記述子u(3)およびu(8)をもつシンタックス要素は、それぞれ、3および8ビットをもつ符号なし整数である。
[0132] テーブル1において、1に等しいic_flagシンタックス要素は、照度補償が現在CUに対して使われることを指定する。0に等しいic_flagシンタックス要素は、照度補償が現在CUに対しては使われないことを指定する。ic_flagシンタックス要素が存在しないとき、ic_flagシンタックス要素は、0に等しいと推論され得る。
[0133] さらに、テーブル1に示すように、ic_flagシンタックス要素は、変数icEnableFlagが1に等しいときに存在する。言い換えると、変数icEnableFlagは、ic_flagシンタックス要素がビットストリーム中に存在するかどうかを指定する。3D−HEVCテストモデル2では、変数icEnableFlagは、
として導出される。
上記式において、slice_ic_enable_flagは、スライスヘッダ中でシグナリングされるシンタックス要素である。1に等しいslice_ic_enable_flagシンタックス要素は、現在スライスに対して照度補償が有効化されることを指定する。現在スライスは、現在CUを含むスライスである。0に等しいslice_ic_enable_flagシンタックス要素は、現在スライスに対して照度補償が無効化されることを指定する。slice_ic_enable_flagシンタックス要素が存在しないとき、slice_ic_enable_flagシンタックス要素は、0に等しいと推論される。
[0134] icEnableFlagの値を決定するための上記式において、変数anyIvRefPicFlagは、現在CUの1つまたは複数のPUがビュー間参照ピクチャを使用するかどうかを指定する。変数anyIvRefPicFlagは、最初に0に等しくセットされ、現在CUの少なくとも1つのPUがビュー間参照ピクチャを使用する場合、1になるように導出される。現在CUの予測モード(すなわち、PredMode[x0][y0])がMODE_INTRAに等しくないとき、以下は、0および1で置き換えられるX、および1−Xに等しいYに該当する。
anyIvRefPicFlagを決定するための上記式において、変数refViewIdxLX[x][y](Xは0および1で置き換えられる)は、RefPicListLX[RefIdxLX[x][y]]のビュー順序インデックスに等しくセットされる。ビュー順序インデックスは、アクセスユニット中のビュー成分の復号順序を示すインデックスである。さらに、anyIvRefPicFlagを決定するための上記式において、変数x1およびy1は、現在ピクチャの左上サンプルに対してルーマロケーションを指定する。3D−HEVCテストモデル2では、変数x1およびy1は、以下の式において指定されるように導出される。
x1とy1とを決定するための上記式において、nCbsは、現在CUのサイズを示す。
[0135] いくつかの事例では、ビデオコーダは、各CUについての導出された視差ベクトルに基づいて、CUレベルのビュー間残差予測(IVRP)を実行することができる。ビデオコーダが現在ピクチャの現在CUに対してIVRPを実行するとき、ビデオコーダは、現在CUについての動き補償ブロックを決定するのに、現在CUのPUの動きベクトルを使うことができる。言い換えると、現在CUについての動き補償ブロックは、現在CUのPUの予測ブロックを備え得る。現在CUの動き補償ブロックは、Peとして示され得る。現在CUについての残差ブロック(re)中の各サンプルは、現在CUの元のコーディングブロック中のサンプルと、Pe中の対応するサンプルとの間の差分を示し得る。さらに、ビデオコーダは、参照ピクチャ中の視差参照CUを決定するのに、現在CUの視差ベクトルを使うことができる。参照ピクチャは、現在ピクチャとは異なるビュー中にあり得る。視差参照CUの残差ブロックは、rbとして示され得る。視差参照CUの残差ブロック(rb)の各サンプルは、視差参照CUについてのコーディングブロックの元のサンプルと、視差参照CUのPUのための予測ブロック中の対応する予測サンプルとの間の差分を示し得る。
[0136] ビデオエンコーダ20は、ビットストリーム中に、最終残差ブロックを示すデータを含み得る。最終残差ブロック中の各サンプルは、r
b中のサンプルと、r
e中の対応するサンプルとの間の差分を示し得る。したがって、ビュー間残差予測が使われるとき、動き補償は、以下の式によって表現することができる。
の再構成は、量子化解除された係数(de-quantized coefficient)reプラス予測Peおよび量子化された正規化残差係数(normalized residual coefficient)rbに等しい。ビデオコーダは、rbを、残差予測子として扱うことができる。したがって、動き補償と同様に、rbが現在残差から減算されればよく、得られた差分信号のみが変換コーディングされる。
[0137] いくつかの例では、ビデオエンコーダ20は、残差予測が適用されるかどうかを示すために、各CUについてのIVRPフラグをシグナリングする。ビデオエンコーダ20は、CUレベルでIVRPが使われるかどうかを示すためのフラグをシグナリングすればよい。IVRPフラグが1に等しいとき、IVRPは、このブロックについての動き補償された予測子およびシグナリングされた残差に加え、残差残差予測信号(residual residual prediction signal)(すなわち、最終残差データ(final residual data))が加えられるように、時間参照ピクチャをもつPUに対して有効化される。ビデオコーダは、導出された視差ベクトルに基づいて、参照ビュー中の参照ブロックの残差信号(残差予測信号(residual prediction signal))を位置特定する。
[0138] ビデオコーダは、導出された視差ベクトルに基づいて残差参照領域を位置特定することができる。3D−HEVCテストモデル2では、ビデオコーダは、視差ベクトルを決定するのに、上述したNBDV導出プロセスを使うことができる。ビデオコーダが、NBDV導出プロセスを使って、現在CUについての視差ベクトルを決定することが不可能な場合、ビデオコーダは、現在CUについての視差ベクトルが利用不可能であることを示す。現在CUについての視差ベクトルが利用不可能な場合、ビットストリームは、IVRPフラグを示すデータを含まず、ビデオエンコーダ20もビデオデコーダ30も、現在CUにビュー間残差予測を適用しない。
[0139] 現在CUについての視差ベクトルは、ビュー間参照ピクチャ内の参照ロケーションを示し得る。ビュー間参照ピクチャ内の参照ロケーションは、視差参照ブロックの左上隅であり得る。視差参照ブロックは、現在CUと同じサイズを有し得る。現在CUについての視差ベクトルは、フルピクセルまたはサブピクセル精度を有し得る。現在CUについての視差ベクトルがフルピクセル精度を有する事例では、視差参照ブロックは、ビュー間参照ピクチャのサンプルを含み得る。視差ベクトルがサブピクセル精度を有する事例では、ビデオコーダは、ビュー間参照ピクチャ中の実際のサンプルから、視差参照ブロック中のサンプルを補間することができる。
[0140] したがって、現在CUの左上位置が(x,y)であると想定すると、および端数まで正確であり得るmvDispによって示される視差ベクトルを考慮に入れた後、剰余がそこから予測される、参照ピクチャのコロケートエリアは、左上および右下ピクセルロケーションによって、
と表され、上式で、mvDisp[0]は視差ベクトルの水平成分を示し、(CUWidth、CUHeight)は現在CUのサイズであり、picWidthおよびpicHeightは現在ピクチャの幅および高さである。対応するビュー間参照ブロック中のPUのうちのどれもインターコーディングされず、cbf_luma、cbf_cbおよびcbf_crの値が0に等しくない場合、ビュー間残差予測フラグは、CUレベルではシグナリングされない。概して、cbf_luma、cbf_cb、およびcbf_crは、それぞれ、ルーマ、Cb、およびCrサンプルに基づいて、対応する変換ブロックが非0係数を含むかどうかを示す。
[0141] 一例では、ビデオコーダは、残差参照ブロックを導出するのに、以下の手順を使うことができる。この例では、視差ベクトルは、mvDispによって示され、その水平および垂直成分は、それぞれ、mvDisp[0]およびmvDisp[1]によって示される。さらに、この例では、ビデオコーダは、mvDisp[1](すなわち、視差ベクトルの垂直成分)を0にセットする。さらに、ビデオコーダは、対応するブロックを(たとえば、前の段落の例で定義されるように)位置特定する。mvDispが整数位置を指す(すなわち、mvDisp[0]モジュロ4が0に等しい)場合、ビデオコーダは、残差予測信号を、対応するブロックの残差に等しくセットする。そうではなく、mvDispが小数位置(fractional position)を指す場合、ビデオコーダは、双線形フィルタ(bi-linear filter)を使って、対応するブロックの残差サンプルを補間することによって、残差予測信号を取得することができる。
[0142] 現在CUにIVRPが適用されるかどうかをシグナリングするために使われるシンタックス要素は、「res_pred_flag」によって示される。res_pred_flagシンタックス要素は、CUレベルにおいて条件付きでシグナリングされる。言い換えると、CU用のシンタックス構造(たとえば、coding_unitシンタックス構造)は、res_pred_flagシンタックス要素を含み得る。
[0143] 以下のテーブル2は、3D−HEVCテストモデル2のセクションG.7.3.9.1に提示されているcoding_unitシンタックス構造の一部分を示す(一般コーディングユニットシンタックス)。
[0144] 本開示に示すシンタックステーブルにおいて、ae(v)という形のタイプ記述子を有するシンタックス要素は、CABACコード化シンタックス要素である。テーブル2の例では、0に等しいres_pred_flagシンタックス要素は、残差予測が使われないことを指定する。1に等しいres_pred_flagシンタックス要素は、残差予測が使われることを指定する。3D−HEVCテストモデル2では、res_pred_flagシンタックス要素が存在しないとき、res_pred_flagシンタックス要素の値は、0に等しいと推論されるものとする。
[0145] テーブル2において、res_pred_flagシンタックス要素は、変数resPredEnableFlagが1に等しいときに存在する。言い換えると、変数resPredEnableFlagは、res_pred_flagシンタックス要素がビットストリーム中に存在するかどうかを指定する。3D−HEVCテストモデル2では、変数resPredEnableFlagは、以下のように導出される。
上記式において、変数residualCbfNonZeroは、対応する参照ビュー変換ブロックのcbf_luma、cbf_cb、cbf_crおよびPredModeの値によって、次のように導出される。対応する変換ブロック内の少なくとも1つのPU(すなわち、少なくとも部分的に、対応する参照ビュー変換ブロックのうちの1つ内にある予測ブロックを有する少なくとも1つのPU)が、MODE_INTRAに等しくない両方のPredModeを有する場合、ならびに対応する参照ビュー変換ブロックについてのcbf_luma、cbf_cbおよびcbf_crのうちのいずれかの値が0に等しくない場合、ビデオコーダは、変数residualCbfNonZeroを1にセットする。そうでない場合、ビデオコーダは、residualCbfNonZeroを0に等しくセットする。ビデオコーダは、対応する参照ビュー変換ブロックを、現在PUロケーションおよび視差ベクトルに基づいて識別することができる。対応する参照ビュー変換ブロックはすべて、視差ベクトルをもつPUロケーションをシフトした後、ビュー間参照ビュー成分中の(現在PUの)対応する矩形エリアによってカバーされるか、または部分的にカバーされるTUに属する。導出された視差ベクトルが利用不可能なとき、ビデオコーダは、residualCbfNonZeroを0にセットすればよい。
[0146] 上述したように、ビデオコーダは、cbf_luma、cbf_cb、およびcbf_crに基づいて、変数residualCbfNonZeroを決定する。3D−HEVCテストモデル2は、cbf_luma、cbf_cb、cbf_crのセマンティクスを、次のように定義する。
[0147] 1に等しいcbf_luma[x0][y0][trafoDepth]は、ルーマ変換ブロックが0に等しくない1つまたは複数の変換係数レベルを含むことを指定する。アレイインデックスx0、y0は、ピクチャの左上ルーマサンプルに対する当該変換ブロックの左上ルーマサンプルのロケーション(x0,y0)を指定する。アレイインデックスtrafoDepthは、変換コーディングのために、ブロックへのコーディングブロックの現在細分レベルを指定する。trafoDepthは、コーディングブロックに対応するブロックについて0に等しい。cbf_luma[x0][y0][trafoDepth]が存在しないとき、cbf_luma[x0][y0][trafoDepth]は1に等しくなると推論され得る。
[0148] 1に等しいcbf_cb[x0][y0][trafoDepth]は、Cb変換ブロックが0に等しくない1つまたは複数の変換係数レベルを含むことを指定する。アレイインデックスx0、y0は、検討されるTUの左上ロケーション(x0,y0)を指定する。アレイインデックスtrafoDepthは、変換コーディングのために、ブロックへのコーディングブロックの現在細分レベルを指定する。trafoDepthは、コーディングブロックに対応するブロックについて0に等しい。cbf_cb[x0][y0][trafoDepth]が存在しないとき、cbf_cb[x0][y0][trafoDepth]の値は、次のように推論される。trafoDepthが0よりも大きく、log2TrafoSizeが2に等しい場合、cbf_cb[x0][y0][trafoDepth]は、cbf_cb[xBase][yBase][trafoDepth−1]に等しいと推論される。そうではなく、cbf_cb[x0][y0][trafoDepth]が存在しないとき、0に等しいと推論される。
[0149] 1に等しいcbf_cr[x0][y0][trafoDepth]は、Cr変換ブロックが0に等しくない1つまたは複数の変換係数レベルを含むことを指定する。アレイインデックスx0、y0は、検討されるTUの左上ロケーション(x0,y0)を指定する。アレイインデックスtrafoDepthは、変換コーディングのために、ブロックへのコーディングブロックの現在細分レベルを指定する。trafoDepthは、コーディングブロックに対応するブロックについて0に等しい。cbf_cr[x0][y0][trafoDepth]が存在しないとき、cbf_cr[x0][y0][trafoDepth]の値は、次のように推論される。trafoDepthが0よりも大きく、log2TrafoSizeが2に等しい場合、cbf_cr[x0][y0][trafoDepth]は、cbf_cr[xBase][yBase][trafoDepth−1]に等しいと推論される。そうではなく、cbf_cr[x0][y0][trafoDepth]が存在しないとき、0に等しいと推論される。
[0150] さらに、上述したように、resPredEnabledFlagを決定するための式は、変数anyTempRefPicFlagに依存する。変数anyTempRefPicFlagは、現在CUの1つまたは複数のPUが時間参照ピクチャを使用するかどうかを指定する。3D−HEVCテストモデル2は、変数anyTempRefPicFlagを次のように定義する。変数anyTempRefPicFlagは、最初に0に等しくセットされ、現在CUの少なくとも1つのPUが時間参照ピクチャを使用する場合、1になるように導出される。PredMode[x0][y0]がMODE_INTRAに等しくないとき、以下のことが、0および1で置き換えられるX、ならびに1−Xに等しいYに該当する。
anyTempRefPicFlagを決定するための上記式において、変数refViewIdxLX[x][y](Xは0および1で置き換えられる)は、RefPicListLX[RefIdxLX[x][y]]のビュー順序インデックスに等しくセットされる。さらに、anyTempRefPicFlagを決定するための上記式において、変数x1およびy1は、現在ピクチャの左上サンプルに対してルーマロケーションを指定する。3D−HEVCテストモデル2では、x1およびy1は、以下において指定されるように導出される。
x1とy1とを決定するための上記式において、nCbsは、現在CUのサイズを示す。
[0151] L.Zhangら、「3D−CE5.h related:Advanced residual prediction for multiview coding」、ITU−T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11の3Dビデオコーディング拡張開発共同研究部会、第2回会合、上海、中国、2012年10月13〜19日、文書JCT3V−B0051(以下では、「JCT3V−B0051」)は、ビュー間残差予測のコーディング効率をさらに向上させるための高度残差予測(ARP)方法を提案した。上述した残差予測方式とは対照的に、ARPは、CUレベルではなくPUレベルで実行することができる。上述した残差予測方式をARPと区別するために、上述した残差予測方式は、「CUベースのビュー間残差予測(CU-based inter-view residual prediction)」と呼ばれ得る。
[0152] 図5は、マルチビュービデオコーディングにおけるARPの例示的な予測構造を示す概念図である。図5は、4つのピクチャ、すなわち現在ピクチャ70と、時間参照ピクチャ72と、視差参照ピクチャ74と、時間視差参照ピクチャ76とを含む。現在ピクチャ70はビューV1中にあり、時間インスタンスTj中にある。時間参照ピクチャ72はビューV1中にあり、時間インスタンスTi中にある。視差参照ピクチャ74はビューV0中にあり、時間インスタンスTj中にある。時間視差参照ピクチャ76はビューV0中にあり、時間インスタンスTi中にある。
[0153] 現在ピクチャ70は、「Dc」として示される現在PUを含む。言い換えると、Dcは、現在ビュー(ビュー1)中の現在ブロックを表す。Dcは、時間参照ピクチャ72中のロケーションを示す時間的動きベクトルVDを有する。ビデオエンコーダ20は、時間的動きベクトルVDによって示されるロケーションに関連付けられた、ピクチャ72中のサンプルに基づいて、時間参照ブロックDrを決定することができる。したがって、Drは、時間Tiにおける同じビュー(ビュー1)からのDcの時間予測ブロックを示し、VDは、DcからDrへの動きを示す。
[0154] さらに、ビデオエンコーダ20は、Dcの視差ベクトルによって示されるロケーションに関連付けられた、視差参照ピクチャ74中のサンプルに基づいて、視差参照ブロックBcを決定することができる。したがって、Bcは、参照ブロック(すなわち、時間Tjにおける参照ビュー(ビュー0)中でのDcの表現)を示す。Bcの左上位置は、Dcの左上位置に、導出された視差ベクトルを加算することによって、導出された視差ベクトルを用いて算出され得る。DcおよびBcは、2つの異なるビューにおける同じオブジェクトの投影であり得るので、DcおよびBcは、同じ動き情報を共有するはずである。したがって、時間Tiにおけるビュー0中のBcの時間予測ブロックBrは、VDの動き情報を適用することによって、Bcから位置特定され得る。
[0155] ビデオエンコーダ20は、時間視差ピクチャ76中の時間視差参照ブロックBr(Bcの予測ブロック)を決定することができる。上述したように、時間視差ピクチャ76は、Brと同じビュー(すなわち、ビューV0)中にあり、Drと同じ時間インスタンス(すなわち、時間インスタンスTi)中にある。ビデオエンコーダ20は、Dcの動きベクトルVDによって示されるロケーションにおけるサンプルに基づいて、Brを決定することができる。したがって、Brの左上位置は、Bcの左上位置に動きベクトルVDを加算することによって、再利用される動きベクトルVDを用いて算出され得る。Bcの左上位置は、Dcの左上位置と視差ベクトルの合計に等しくなり得る。したがって、Brの左上位置は、Dcの左上位置の座標、視差ベクトル、および動きベクトルVDの合計に等しくなり得る。このように、図5に矢印78で示すように、ビデオエンコーダ20は、Brを決定するために、動きベクトルVDを再利用することができる。
[0156] さらに、ARPにおいて、第1の残差ブロック中の各サンプルは、Dc中のサンプルと、Drの対応するサンプルとの間の差分を示し得る。第1の残差ブロックは、Dcについての元の残差ブロックと呼ばれ得る。第2の残差ブロック中の各サンプルは、Bc中のサンプルと、Br中の対応するサンプルとの間の差分を示し得る。第2の残差ブロックは、「残差予測子(residual predictor)」と呼ばれ得る。ビデオエンコーダ20は、Brを決定するのに動きベクトルVDを使うので、残差予測子は、Bcの実際の残差データとは異なり得る。
[0157] ビデオエンコーダ20が残差予測子を決定した後、ビデオエンコーダ20は、残差予測子を重み付け因子で乗算すればよい。言い換えると、VDの動き情報をもつBcの残差は、重み付け因子で乗算され、現在残差についての残差予測子として使われる。重み付け因子は0、5または1に等しくなり得る。したがって、3つの重み付け因子が、ARPにおいて使われ得る(すなわち、0、0.5、および1)。ビデオエンコーダ20が残差予測子を重み付け因子で乗算した後、残差予測子は、重み付けされた残差予測子と呼ばれ得る。ビデオエンコーダ20は、最終重み付け因子として、現在CU(すなわち、現在PUを含むCU)についての最小限のレート歪みコストにつながる重み付け因子を選択することができる。ビデオエンコーダ20は、ビットストリーム中に、CUレベルで、重み付けインデックスを示すデータを含み得る。重み付けインデックスは、現在CUについての最終重み付け因子(すなわち、重み付けされた残差予測子を生成するのに使われた重み付け因子)を示し得る。いくつかの例では、0、1、および2の重み付けインデックスは、それぞれ、0、1、および0.5の重み付け因子に対応する。現在CUについての0の重み付け因子の選択は、現在CUのPUのうちのどれに対してもARPを使わないことと等価である。
[0158] ビデオエンコーダ20は次いで、現在PUについての最終残差ブロックを決定し得る。現在PUについての最終残差ブロック中の各サンプルは、元の残差ブロック中のサンプルと、重み付けされた残差予測子中の対応するサンプルとの間の差分を示し得る。現在CU(すなわち、現在PUを含むCU)の残差ブロックは、存在する場合は、現在CUの他のPUについての残差ブロックとともに、現在PUについての最終残差ブロックを含み得る。本開示の他の箇所で説明するように、ビデオエンコーダ20は、現在CUの残差ブロックを、1つまたは複数の変換ブロックの間に区分することができる。変換ブロックの各々は、現在CUのTUに関連付けられ得る。各変換ブロックについて、ビデオエンコーダ20は、変換ブロックに対して1つまたは複数の変換を適用して、変換係数ブロックを生成することができる。ビデオエンコーダ20は、ビットストリーム中に、変換係数ブロックの量子化された変換係数を表すデータを含め得る。
[0159] したがって、ARPにおいて、2つのビューの残余の間の高い相関を保証するために、ビデオエンコーダ20は、現在PUの動きを、参照ビューピクチャ中の対応するブロックに適用して、ビュー間残差予測に使われるべき、ベースビュー中の残差を生成すればよい。このようにして、動きは、現在PUおよび参照ビュー中の対応する参照ブロックについて整合される。さらに、適応型重み付け因子が、予測エラーがさらに削減されるように、剰余信号に適用される。
[0160] 現在PUが双予測される場合、現在PUは、RefPicList0動きベクトルと、RefPicList1動きベクトルと、RefPicList0参照インデックスと、RefPicList1参照インデックスとを有する。本開示では、現在PUのRefPicList0参照インデックスによって示される参照ピクチャを、現在PUのRefPicList0目標参照ピクチャと呼ぶ場合がある。現在PUのRefPicList1動きベクトルは、現在PUのRefPicList1目標参照ピクチャ中の参照ロケーションを示し得る。本開示では、現在PUのRefPicList1参照インデックスによって示される参照ピクチャを、現在PUのRefPicList1目標参照ピクチャと呼ぶ場合がある。現在PUのRefPicList1動きベクトルは、現在PUのRefPicList1目標参照ピクチャ中の参照ロケーションを示し得る。
[0161] したがって、ビデオエンコーダ20が、双予測されたPUに対してARPを実行するとき、ビデオエンコーダ20は、現在PUのRefPicList0動きベクトルに基づいて、現在PUのRefPicList0目標参照ピクチャ中の参照ロケーションを決定すればよい。本開示では、この参照ロケーションを、現在PUのRefPicList0参照ロケーションと呼ぶ場合がある。ビデオエンコーダ20は次いで、現在PUのRefPicList0参照ロケーションに関連付けられた、現在PUのRefPicList0目標参照ピクチャの実際の、または補間されたサンプルを含む参照ブロックを決定すればよい。本開示では、この参照ブロックを、現在PUのRefPicList0参照ブロックと呼ぶ場合がある。
[0162] さらに、ビデオエンコーダ20は、現在PUのRefPicList1動きベクトルに基づいて、現在PUのRefPicList1目標参照ピクチャ中の参照ロケーションを決定すればよい。本開示では、この参照ロケーションを、現在PUのRefPicList1参照ロケーションと呼ぶ場合がある。ビデオエンコーダ20は次いで、現在PUのRefPicList0参照ロケーションに関連付けられた、現在PUのRefPicList1目標参照ピクチャの実際の、または補間されたサンプルを含む参照ブロックを決定すればよい。本開示では、この参照ブロックを、現在PUのRefPicList1参照ブロックと呼ぶ場合がある。
[0163] ビデオエンコーダ20は、現在PUのRefPicList0参照ブロックおよび現在PUのRefPicList1参照ブロックに基づいて、現在PUについての時間予測ブロックを決定することができる。たとえば、現在PUの時間予測ブロック中の各サンプルは、現在PUのRefPicList0参照ブロックおよび現在PUのRefPicList1参照ブロック中の対応するサンプルの重み付き平均を示し得る。
[0164] さらに、ビデオエンコーダ20が、双予測されたPUに対してARPを実行するとき、ビデオエンコーダ20は、現在PUのRefPicList0動きベクトルと、視差参照ブロックの視差参照フレーム内のロケーションとに基づいて、時間視差参照ピクチャ中の時間視差参照ロケーションを決定すればよい。本開示では、この時間視差参照ロケーションおよびこの時間視差参照ピクチャを、それぞれ、RefPicList0時間視差参照ロケーションおよびRefPicList0時間視差参照ピクチャと呼ぶ場合がある。RefPicList0時間視差参照ピクチャは、現在PUのRefPicList0目標参照ピクチャと同じPOC値を有し得る。ビデオエンコーダ20は次いで、RefPicList0時間視差参照ロケーションに関連付けられた、RefPicList0時間視差参照ピクチャの実際の、または補間されたサンプルを含むサンプルブロックを決定することができる。本開示では、このサンプルブロックを、RefPicList0時間視差参照ブロックと呼ぶ場合がある。
[0165] さらに、ビデオエンコーダ20は、現在PUのRefPicList1動きベクトルと、視差参照ブロックの視差参照フレーム内のロケーションとに基づいて、時間視差参照ピクチャ中の時間視差参照ロケーションを決定すればよい。本開示では、この時間視差参照ロケーションおよびこの時間視差参照ピクチャを、それぞれ、RefPicList1時間視差参照ロケーションおよびRefPicList1時間視差参照ピクチャと呼ぶ場合がある。RefPicList1時間視差参照ピクチャは、現在PUのRefPicList1目標参照ピクチャと同じPOC値を有し得る。現在PUのRefPicList0目標参照ピクチャと現在PUのRefPicList1目標参照ピクチャは異なり得るので、RefPicList1時間視差参照ピクチャは、RefPicList0時間視差参照ピクチャとは異なり得る。ビデオエンコーダ20は次いで、RefPicList1時間視差参照ロケーションに関連付けられた、RefPicList1時間視差参照ピクチャの実際の、または補間されたサンプルを含むサンプルブロックを決定することができる。本開示では、このサンプルブロックを、RefPicList1時間視差参照ブロックと呼ぶ場合がある。
[0166] 次に、ビデオエンコーダ20は、RefPicList0時間視差参照ブロックおよびRefPicList1時間視差参照ブロックに基づいて、視差予測ブロックを決定すればよい。いくつかの例では、視差予測ブロック中の各サンプルは、RefPicList0時間視差参照ブロックおよびRefPicList1時間視差参照ブロック中の対応するサンプルの重み付き平均である。次いで、ビデオエンコーダ20は、残差予測子を決定することができる。残差予測子はサンプルのブロックであり得る。残差予測子中の各サンプルは、視差参照ブロック中のサンプルと、視差予測ブロック中の対応するサンプルとの間の差分を示し得る。ビデオエンコーダ20は次いで、残差予測子に重み付け因子を適用することによって、重み付けされた残差予測子を生成することができる。ビデオエンコーダ20は次いで、現在PUについての最終残差ブロックを決定し得る。現在PUの最終残差ブロック中の各サンプルは、現在PUについての元の予測ブロック中のサンプルと、現在PUの時間予測ブロック中の対応するサンプルとの間の差分と、重み付けされた残差予測子とを示し得る。ビデオエンコーダ20は、ビットストリーム中で現在PUの最終残差ブロックをシグナリングし得る。
[0167] ビデオデコーダ30は、双予測されたPUに対してARPを実行するとき、同様のプロセスを実行することができる。たとえば、ビデオデコーダ30は、上述した例示的なやり方で、現在PUの時間予測ブロックと重み付けされた残差予測子とを決定することができる。ビデオデコーダ30は、ビットストリーム中でシグナリングされた要素に基づいて、現在PUの最終残差ブロックを決定し得る。ビデオデコーダ30は次いで、現在PUの最終残差ブロックと、現在PUの時間予測ブロックと、重み付けされた残差予測子とを加算することによって、現在PUの予測ブロックを再構成すればよい。
[0168] 図6は、現在ブロック、参照ブロック、および動き補償ブロックの間の例示的な関係を示す概念図である。図6の例では、ビデオコーダは現時点で、現在ピクチャ81中の現在PU80をコーディング中である。現在ピクチャ81は、ビューV1および時間インスタンスT1に関連付けられる。
[0169] さらに、図6の例では、ビデオコーダは、現在PU80の視差ベクトルによって示されるロケーションに関連付けられた、参照ピクチャ83の実際の、または補間されたサンプルを備える参照ブロック82(すなわち、対応するブロック)を決定することができる。たとえば、参照ブロック82の左上隅は、現在PU80の視差ベクトルによって示されるロケーションであり得る。時間視差参照ブロック95は、現在PU80の予測ブロックと同じサイズを有し得る。
[0170] 図6の例では、現在PU80は、第1の動きベクトル84と第2の動きベクトル86とを有する。動きベクトル84は、時間参照ピクチャ88中のロケーションを示す。時間参照ピクチャ88は、ビューV1(すなわち、現在ピクチャ81と同じビュー)および時間インスタンスT0中にある。動きベクトル86は、時間参照ピクチャ90中のロケーションを示す。時間参照ピクチャ90は、ビューV1および時間インスタンスT3中にある。
[0171] 上述したARP方式に従って、ビデオコーダは、参照ピクチャ83と同じビュー中にあるとともに時間参照ピクチャ88と同じ時間インスタンス中にある参照ピクチャ(すなわち、参照ピクチャ92)を決定することができる。さらに、ビデオコーダは、参照ブロック82の左上隅の座標に動きベクトル84を加えて、時間視差参照ロケーションを導出することができる。ビデオコーダは、時間視差参照ブロック93(すなわち、動き補償ブロック)を決定することができる。時間視差参照ブロック93中のサンプルは、動きベクトル84から導出された時間視差参照ロケーションに関連付けられた、参照ピクチャ92の実際の、または補間されたサンプルであり得る。時間視差参照ブロック93は、現在PU80の予測ブロックと同じサイズを有し得る。
[0172] 同様に、ビデオコーダは、参照ピクチャ84と同じビュー中にあるとともに時間参照ピクチャ90と同じ時間インスタンス中にある参照ピクチャ(すなわち、参照ピクチャ94)を決定することができる。さらに、ビデオコーダは、参照ブロック82の左上隅の座標に動きベクトル86を加えて、時間視差参照ロケーションを導出することができる。ビデオコーダは次いで、時間視差参照ブロック95(すなわち、動き補償ブロック)を決定することができる。時間視差参照ブロック95中のサンプルは、動きベクトル86から導出された時間視差参照ロケーションに関連付けられた、参照ピクチャ94の実際の、または補間されたサンプルであり得る。時間視差参照ブロック95は、現在PU80の予測ブロックと同じサイズを有し得る。
[0173] さらに、図6の例では、ビデオコーダは、時間視差参照ブロック93および時間視差参照ブロック95に基づいて、視差予測ブロックを決定することができる。ビデオコーダは次いで、残差予測子を決定することができる。残差予測子中の各サンプルは、参照ブロック82中のサンプルと、視差予測ブロック中の対応するサンプルとの間の差分を示し得る。
[0174] 上述したように、残差予測は、重み付け因子および重み付け因子インデックスの使用を伴い得る。以下の説明では、重み付け因子インデックスをシグナリングするために使われるシンタックス要素は、「weighting_factor_index」によって示される。weighting_factor_indexシンタックス要素は、CUレベルにおいて条件付きでシグナリングされる。シンタックス要素の詳細な情報および関連セマンティクスについては、以下で説明する。
[0175] 以下のテーブル3は、例示的なcoding_unitレイヤシンタックス構造の一部分を示す。テーブル3および本開示の他のシンタックステーブルでは、下線付きテキストは、3D−HEVCテストモデル2に追加されるテキストを示す。
[0176] weighting_factor_indexシンタックス要素がビットストリーム中に存在しないとき、重み付け因子は、0に等しいと推論される。テーブル3に示すように、weighting_factor_indexシンタックス要素は、現在ビューが従属テクスチャビューである、現在CUがイントラコーディングされない、および現在CUの区分モードがPART_2N×2Nに等しいという条件がすべて満足されるときのみ、シグナリングされ得る。
[0177] 以下のテーブル4は、例示的なcoding_unitレイヤシンタックス構造の一部分を示す。
[0178] テーブル4の例では、weighting_factor_indexシンタックス要素は、高度残差予測に使われる重み付け因子へのインデックスを示す。weighting_factor_indexシンタックス要素が存在しないとき、現在CUに対して高度残差予測は無効にされる。重み付け因子が0に等しい場合、現在ブロックの残差は、HEVC作業草案9に記載されている変換コーディングを使ってコーディングされ、HEVC作業草案9のサブクローズ8.5.2.2における仕様が、予測サンプルを得るために呼び出される。そうでない場合、現在残差信号は、補間された可能性がある参照残差信号に重み付け因子を乗算したものを使って予測され、差分のみが送信される。時間参照ピクチャが使用される各予測リストに対して、残差予測子がオンザフライで生成され得る。
[0179] weighting_factor_indexシンタックス要素がビットストリーム中に存在しないとき、重み付け因子は、0に等しいと推論される。さらに、テーブル4の例では、weighting_factor_indexシンタックス要素は、現在ビューが従属テクスチャビュー中にある、現在CUがイントラコーディングされず、現在CUの区分モードがPART_2N×2Nに等しい、導出された視差ベクトルが利用可能である、および少なくとも1つの区分が時間的動きベクトルを有する(すなわち、参照ピクチャが同じビューからのものである)という条件すべてが満足されるときのみ、シグナリングされる。テーブル4において、1に等しくセットされたTempMVAvaiは、現在CUが、同じビューからの少なくとも1つの参照ピクチャから予測されることを示す。そうでない場合、TempMVAvaiは0に等しく設定される。さらに、テーブル4において、視差ベクトルが見つからない場合、DispVectAvaiは1に等しい。そうでない場合、DispVectAvaiは0に等しい。
[0180] 他の例では、weighting_factor_indexシンタックス要素は、現在ビューが従属テクスチャビューである、導出された視差ベクトルが利用可能である、現在CUのすべてのPU中の少なくとも1つの区分が時間的動きベクトルを有する(すなわち、参照ピクチャが同じビューからのものである)という条件がすべて満足されるときのみ、シグナリングされ得る。前述のように、weighting_factor_indexシンタックス要素がビットストリーム中に存在しないとき、重み付け因子は、0に等しいと推論される。
[0181] HEVCベースのマルチビュー/3DVコーディング(すなわち、3D−HEVCおよびMV−HEVC)におけるビュー間残差予測および照度補償の上述した設計には、いくつかのパーシング問題が存在し得る。たとえば、上述した3D−HEVC設計では、CU中のシンタックス要素(たとえば、ic_flagシンタックス要素またはres_pred_flagシンタックス要素)をパーシングするとき、ビデオコーダは、CUが1つまたは複数のビュー間参照ピクチャを使用するかどうか決定する必要があり得る。ただし、CUがビュー間参照ピクチャを使うかどうかの決定は、マージまたはAMVP候補リストの構築を要求し得る。したがって、パーシングプロセス(すなわち、ビットストリームからシンタックス要素を取得するプロセス)は、復号プロセス(すなわち、シンタックス要素に基づいてサンプルブロックを再構成するプロセス)に依存するので、低スループットとなる。したがって、パーシングプロセスの一部分は、復号プロセスの特定の部分が完了するまでは進行することができない。
[0182] 上述した3D−HEVC設計における別の例示的問題では、CU中のシンタックス要素(たとえば、res_pred_flag)のパーシングは、視差導出プロセスの結果に依存する。たとえば、上述したように、res_pred_flagシンタックス要素は、変数resPredEnableFlagが1に等しいときに存在する。さらに、上述したように、変数resPredEnableFlagが1に等しいかどうかの決定は、視差ベクトルの決定を要求する。視差ベクトルの決定は、パーシングプロセスではなく、復号プロセスの一部である。したがって、パーシングプロセスは、復号プロセスに依存し、やはり低スループットとなる。
[0183] さらに、上述した3D−HEVC設計における別の例示的問題では、ビットストリームがic_flagシンタックス要素を含むかどうか決定するために、ビデオコーダは、現在CUのいずれかのPUがビュー間参照ピクチャを使うかどうか決定する必要があり得る。現在CUが1つまたは複数のビュー間参照を使うかどうかの決定は、ビデオコーダが、現在CUの各PUについて、PUが1つまたは複数のビュー間参照ピクチャを使うかどうか決定することを要求する。ビデオコーダは、PUが1つまたは複数のビュー間参照ピクチャを使うかどうか決定するために、PUをパーシングし、復号する必要があり得る。したがって、現在CU内部のすべてのPUをパーシングすることが、現在CUのパーシングに要求される。したがって、CUレベルのシンタックス要素のパーシングプロセスは、望ましくはない場合があるが、復号されたPUレベルのシンタックスに依存する。
[0184] 上述した3D−HEVC設計におけるさらに別の例示的な問題では、シンタックス要素(たとえば、res_pred_flagシンタックス要素)をパーシングするとき、パーシングプロセスは、他のビューの復号された情報に依存する(たとえば、cbf_lumaの値をチェックする、コーディングモードをアクセスする、参照ビュー中の参照ブロックの動きベクトルをチェックする、など)。したがって、他のビュー中での必要な情報の損失は、現在ビュー中のすべての後続スライスのエントロピー復号の失敗につながる。
[0185] 本開示の技法は、上で言及した3D−HEVCにおけるパーシング問題を解決することができる。たとえば、ic_flagおよびres_pred_flagなど、あるシンタックス要素のシグナリング、現在CUがビュー間参照ピクチャを(参照ピクチャリスト中の1つのエントリとして)使うかどうかなど、動き情報に関連した条件のチェックは、シンタックス要素のパーシングを復号プロセスから独立させるために回避される。さらに、いくつかの例では、ビデオコーダは、特定のシンタックス要素(たとえば、res_pred_flag)がシグナリングされるかどうか決定するとき、視差ベクトルの可用性をチェックする必要を回避することができる。
[0186] さらに、本開示のいくつかの例示的技法では、特定のシンタックス要素(たとえば、res_pred_flag)がビットストリーム中に存在するかどうか決定するとき、ビデオコーダは、(たとえば、参照ブロック中に少なくとも1つのPUがあるかどうかが、インターモードとしてコーディングされ、またはcbf_luma、cbf_cbもしくはcbf_crのいずれかの値が0に等しくない、など)他のビューの復号された情報に関連した条件のチェックを回避することができる。これにより、特定のシンタックス要素のパーシングが、他のビューに依存しなくなり得る。
[0187] 本開示のいくつかの例示的技法では、上記関連シンタックス要素(すなわち、ic_flag、res_pred_flag、およびweighting_factor_index)に関して、デコーダ側において制約が導入され得る。たとえば、対応するブロック中のPUのうちのどれもインターコーディングされず、cbf_luma、cbf_cbおよびcbf_crの値が0に等しくない場合、制約は、res_pred_flagシンタックス要素が0であることを要求し得る。別の例では、現在CUの視差ベクトルが利用不可能な場合、制約は、res_pred_flagシンタックス要素および/またはweighting_factor_indexシンタックス要素が0であることを要求し得る。別の例では、視差ベクトルが利用不可能なとき、制約は、参照ブロックを位置特定するのにゼロ視差ベクトルが使われることを要求し得る。さらに、一例では、現在CUのPUのうちのどれも、時間参照ピクチャを使用しない場合、制約は、res_pred_flagシンタックス要素およびweighting_factor_indexシンタックス要素が0であることを要求し得る。別の例では、現在CUのPUのうちのどれも、ビュー間参照ピクチャを使用しない場合、制約は、ic_flagシンタックス要素が0であることを要求し得る。
[0188] したがって、本開示の1つまたは複数の例によると、ビデオエンコーダ20は、ビデオコーディング規格に準拠するビットストリームを生成することができる。ビットストリームは、ビデオデータのコード化表現を備え得る。ビットストリームは、現在CUについての重み付け因子インデックスを示すデータを含み得る。さらに、ビデオコーディング規格は、現在CUのどの区分も時間的動きベクトルをもたないか、または現在CUの視差ベクトルが利用不可能であるとき、現在CUについての重み付け因子インデックスが、特定の値(たとえば、0)を有することを要求し得る。そのような例では、特定の値に等しい、現在CUについての重み付け因子インデックスは、現在CUに関して残差予測が適用されないことを示す。いくつかの例では、ビデオエンコーダ20は、参照残差信号を決定し、参照残差信号と重み付け因子とを使って、現在CUについての最終残差データを決定することができる。ビデオエンコーダ20は、ビットストリームを出力することができる。
[0189] 同様の例において、ビデオエンコーダ20は、現在ビューが従属テクスチャビューであるかどうかと、現在CUがイントラコーディングされないかどうかと、現在CUの区分モードがPART_2N×2Nに等しいかどうかとを決定することができる。現在ビューが従属テクスチャビューであり、現在CUがイントラコーディングされず、現在CUの区分モードがPART_2N×2Nに等しいと決定したことに応答して、ビデオエンコーダ20は、ビデオデータの符号化表現を備えるビットストリーム中に、現在CUの重み付け因子インデックスを示すデータを含めることができる。現在CUは、現在ビューに属するピクチャ中にある。ただし、現在ビューが従属テクスチャビューではなく、または現在CUがイントラコーディングされず、または現在CUの区分モードがPART_2N×2Nに等しくないと決定したことに応答して、ビデオエンコーダ20は、ビットストリームから、現在CUについての重み付け因子インデックスを示すデータを省いてよい。いずれの場合も、ビデオエンコーダ20はビットストリームを出力し得る。さらに、この例では、ビットストリームは、現在CUのどの区分も時間的動きベクトルをもたないか、または現在CUの視差ベクトルが利用不可能なとき、現在CUについての重み付け因子インデックスが特定の値を有することを要求する制約に重み付け因子インデックスを従わせるビデオコーディング規格に準拠し得る。特定の値に等しい、現在CUについての重み付け因子インデックスは、現在CUに関して残差予測が適用されないことを示す。
[0190] 同様に、本開示のいくつかの例では、ビデオデコーダ30は、ビデオコーディング規格(たとえば、HEVCやその拡張)に準拠するビットストリームから、現在CUについての重み付け因子インデックスを取得することができる。そのような例では、ビットストリームはビデオデータの符号化表現を備え、ビデオコーディング規格は、現在CUのどの区分も時間的動きベクトルをもたないか、または現在CUの視差ベクトルが利用不可能なとき、現在CUについての重み付け因子インデックスが特定の値を有することを要求する制約に、現在CUについての重み付け因子インデックスを従わせる。特定の値を有する、現在CUについての重み付け因子インデックスは、現在CUに関して残差予測(たとえば、ARP)が適用されないことを示す。いくつかの例では、0に等しい重み付け因子インデックスシンタックス要素は、現在CUに関して残差予測が適用されないことを示す。さらに、そのような例では、ビデオデコーダ30は、現在CUについての重み付け因子インデックスに基づいて、重み付け因子を決定することができる。たとえば、重み付け因子インデックスが0、1、または2である場合、ビデオデコーダ30は、それぞれ、重み付け因子が0、0.5または1であると決定してよい。そのような例では、ビデオデコーダ30は、重み付け因子に基づいて、現在CUについての残差信号を予測するかどうか決定することができる。
[0191] 同様の例において、ビデオデコーダ30は、現在ビューが従属テクスチャビューであるかどうかと、現在CUがイントラコーディングされないかどうかと、現在CUの区分モードがPART_2N×2Nに等しいかどうかとを決定することができる。現在ビューが従属テクスチャビューであり、現在CUがイントラコーディングされず、現在CUの区分モードがPART_2N×2Nに等しいとき、ビデオデコーダ30は、ビデオデータの符号化表現を備えるビットストリームから、現在CUの重み付け因子インデックスを取得ことができる。現在CUは、現在ビューに属するピクチャ中にある。現在ビューが従属テクスチャビューではなく、または現在CUがイントラコーディングされず、または現在CUの区分モードがPART_2N×2Nに等しくないとき、ビデオデコーダ30は、重み付け因子インデックスが、現在CUに関して残差予測が適用されないことを示す特定の値に等しいと想定してよい。さらに、ビデオデコーダ30は、現在CUについての重み付け因子インデックスに基づいて、重み付け因子を決定することができる。ビデオデコーダ30は、重み付け因子に基づいて、現在CUについての残差信号を予測するかどうか決定することもできる。この例では、ビットストリームは、現在CUのどの区分も時間的動きベクトルをもたないか、または現在CUの視差ベクトルが利用不可能なとき、現在CUについての重み付け因子インデックスが特定の値に等しいことを要求する制約に、現在CUについての重み付け因子インデックスを従わせるビデオコーディング規格にコンフォームズし得る。
[0192] 上述したように、現在CUについての残差信号を予測することは、残差予測(たとえば、ARP)を実行する際のステップである。現在CUについての残差信号を予測するために、ビデオデコーダ30は、現在CUのPUについての時間的動きベクトルを決定すればよく、現在CUについての視差ベクトルを決定すればよい。ビデオデコーダ30は、視差参照ピクチャ中の視差参照ブロックを決定するのに、視差ベクトルを使うことができる。さらに、ビデオデコーダ30は、時間視差参照ピクチャ中の時間視差参照ブロックを決定するのに、時間的動きベクトルと視差ベクトルとを使うことができる。ビデオデコーダ30は次いで、視差参照ブロックと時間視差参照ブロックとの間の差分に基づいて、残差信号(すなわち、残差予測子)を決定することができる。ビデオデコーダ30は、現在CUのコーディングブロックを再構成する際に使用するための修正残差予測子を決定するために、残差予測子を重み付け因子で乗算すればよい。
[0193] 図7は、本開示の技法を実装し得る例示的なビデオエンコーダ20を示すブロック図である。図7は、説明のために提供されるものであり、本開示で広く例示し説明する技法を限定するものと見なされるべきではない。説明の目的で、本開示は、HEVCコーディングのコンテキストにおいてビデオエンコーダ20を記載する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
[0194] 図7の例において、ビデオエンコーダ20は、予測処理ユニット100と、残差生成ユニット102と、変換処理ユニット104と、量子化ユニット106と、逆量子化ユニット108と、逆変換処理ユニット110と、再構成ユニット112と、フィルタユニット114と、復号ピクチャバッファ116と、エントロピー符号化ユニット118とを含む。予測処理ユニット100は、インター予測処理ユニット120と、イントラ予測処理ユニット126とを含む。インター予測処理ユニット120は、動き推定ユニット122と、動き補償ユニット124とを含む。他の例では、ビデオエンコーダ20は、より多いか、より少ないか、または異なる機能構成要素を含み得る。
[0195] ビデオエンコーダ20はビデオデータを受信し得る。ビデオエンコーダ20はビデオデータのピクチャのスライス中の各CTUを符号化してもよい。CTUの各々は、等しいサイズのルーマコーディングツリーブロック(CTB:coding tree block)と、ピクチャの対応するCTBとに関連付けられ得る。CTUを符号化することの一部として、予測処理ユニット100は4分木区分を実行して、CTUのCTBを徐々により小さいブロックに分割し得る。より小さいブロックはCUのコーディングブロックであり得る。たとえば、予測処理ユニット100は、CTUのCTBを4つの等しいサイズのサブブロックに区分し、サブブロックのうちの1つまたは複数を、4つの等しいサイズのサブサブブロックに区分し得、以下同様である。
[0196] ビデオエンコーダ20は、CTUのCUを符号化して、CUの符号化表現(すなわち、コード化CU)を生成することができる。CUを符号化することの一部として、予測処理ユニット100は、CUの1つまたは複数のPUのうちのCUのコーディングブロックを区分することができる。したがって、各PUは、ルーマ予測ブロックと、対応するクロマ予測ブロックとに関連付けられ得る。ビデオエンコーダ20およびビデオデコーダ30は、様々なサイズを有するPUをサポートし得る。上記のように、CUのサイズはCUのルーマコーディングブロックのサイズを指すことがあり、PUのサイズはPUのルーマ予測ブロックのサイズを指すことがある。特定のCUのサイズを2N×2Nと仮定すると、ビデオエンコーダ20およびビデオデコーダ30は、イントラ予測の場合は2N×2NまたはN×NのPUサイズをサポートすることができ、インター予測の場合は2N×2N、2N×N、N×2N、N×N、または同様の対称のPUサイズをサポートすることができる。ビデオエンコーダ20およびビデオデコーダ30はまた、インター予測用の2N×nU、2N×nD、nL×2N、およびnR×2NのPUサイズ用の非対称区分化をサポートすることができる。
[0197] インター予測処理ユニット120は、CUの各PUに対してインター予測を実行することによってPUの予測データを生成し得る。PUの予測データは、PUの予測ブロックと、PUの動き情報とを含み得る。インター予測処理ユニット120は、PUがIスライス中にあるのか、Pスライス中にあるのか、Bスライス中にあるのかに応じて、CUのPUに対して異なる動作を実行し得る。Iスライス中では、すべてのPUがイントラ予測される。したがって、PUがIスライス中にある場合、インター予測処理ユニット120はPUに対してインター予測を実行しない。
[0198] PUがPスライス中にある場合、動き推定ユニット122は、PUの参照領域について参照ピクチャリスト(たとえば、「RefPicList0」)中の参照ピクチャを探索し得る。PUの参照領域は、PUの予測ブロックに最も近接して対応するサンプルを含んでいる参照ピクチャ内の領域であり得る。動き推定ユニット122は、PUの参照領域を含んでいる参照ピクチャのRefPicList0中の位置を示す参照インデックスを生成し得る。さらに、動き推定ユニット122は、PUの予測ブロックと参照領域に関連付けられた参照ロケーションとの間の空間変位を示す動きベクトルを生成し得る。たとえば、動きベクトルは、現在ピクチャにおける座標から参照ピクチャにおける座標までのオフセットを与える2次元ベクトルであり得る。動き推定ユニット122は、PUの動き情報として、参照インデックスと動きベクトルとを出力し得る。動き補償ユニット124は、PUの動きベクトルによって示された参照ロケーションにおける実際のまたは補間されたサンプルに基づいて、PUの予測ブロックを生成し得る。
[0199] PUがBスライス中にある場合、動き推定ユニット122は、PUについての単予測または双予測を実行し得る。PUについての単予測を実行するために、動き推定ユニット122は、PUの参照領域についてRefPicList0の参照ピクチャまたは第2の参照ピクチャリスト(「RefPicList1」)を探索し得る。動き推定ユニット122は、PUの動き情報として、参照領域を含んでいる参照ピクチャのRefPicList0またはRefPicList1中の位置を示す参照インデックスと、PUの予測ブロックと参照領域に関連する参照ロケーションとの間の空間変位を示す動きベクトルと、参照ピクチャがRefPicList0中にあるのかRefPicList1中にあるのかを示す1つまたは複数の予測方向インジケータとを出力し得る。動き補償ユニット124は、PUの動きベクトルによって示された参照ロケーションにおける実際のまたは補間されたサンプルに少なくとも部分的に基づいて、PUの予測ブロックを生成し得る。
[0200] PUについての双方向インター予測を実行するために、動き推定ユニット122は、PUの参照領域についてRefPicList0中の参照ピクチャを探索し得、またPUの別の参照領域についてRefPicList1中の参照ピクチャを探索し得る。動き推定ユニット122は、参照領域を含んでいる参照ピクチャのRefPicList0およびRefPicList1中の位置を示す参照インデックスを生成し得る。さらに、動き推定ユニット122は、参照領域に関連する参照ロケーションとPUの予測ブロックとの間の空間変位を示す動きベクトルを生成し得る。PUの動き情報は、PUの参照インデックスと動きベクトルとを含み得る。動き補償ユニット124は、PUの動きベクトルによって示された参照ロケーションにおける実際のまたは補間されたサンプルに少なくとも部分的に基づいて、PUの予測ブロックを生成し得る。
[0201] イントラ予測処理ユニット126は、PUに対してイントラ予測を実行することによって、PU用の予測データを生成することができる。PUの予測データは、PUの予測ブロックと、様々なシンタックス要素とを含み得る。イントラ予測処理ユニット126は、Iスライス内、Pスライス内、およびBスライス内のPUに対してイントラ予測を実行することができる。
[0202] PUに対してイントラ予測を実行するために、イントラ予測処理ユニット126は、複数のイントラ予測モードを使用して、PUについて複数セットの予測データを生成し得る。特定のイントラ予測モードを使用してイントラ予測を実行するとき、イントラ予測処理ユニット126は、隣接ブロックからのサンプルの特定のセットを使用してPUの予測ブロックを生成し得る。隣接ブロックは、PU、CU、およびCTUについて左から右、上から下の符号化順序を仮定すると、PUの予測ブロックの上、右上、左上、または左にあり得る。イントラ予測処理ユニット126は、様々な数のイントラ予測モード、たとえば33個の方向のイントラ予測モードを使用することができる。いくつかの例では、イントラ予測モードの数はPUの予測ブロックのサイズに依存し得る。
[0203] 予測処理ユニット100は、PUについてインター予測処理ユニット120によって生成された予測データ、またはPUについてイントラ予測処理ユニット126によって生成された予測データの中から、CUのPUの予測データを選択することができる。いくつかの例では、予測処理ユニット100は、これらの組の予測データのレート/歪み測定基準に基づいて、CUのPUについての予測データを選択する。選択された予測データの予測ブロックは、本明細書では、選択された予測ブロックと呼ばれることがある。
[0204] 残差生成ユニット102は、CUのルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロック、ならびにCUのPUの選択された予測ルーマブロック、予測Cbブロック、および予測Crブロックに基づいて、CUのルーマ残差ブロック、Cb残差ブロック、およびCr残差ブロックを生成し得る。たとえば、残差生成ユニット102は、残差ブロック中の各サンプルが、CUのコーディングブロック中のサンプルとCUのPUの対応する選択された予測ブロック中の対応するサンプルとの間の差分に等しい値を有するように、CUの残差ブロックを生成し得る。
[0205] さらに、いくつかの例では、インター予測処理ユニット120は、現在ブロックに関して、ビュー間残差予測を実行することができる。たとえば、インター予測処理ユニット120は、本開示の他の箇所で説明するように、現在ブロックについての残差予測子を決定することができる。残差生成ユニット102は、視差参照ピクチャのサンプルに基づいて、現在CUについての残差信号を決定するのに、視差ベクトルを使うことができる。残差生成ユニット102は、現在CUについての重み付け因子に基づいて、残差信号を修正することができる。残差生成ユニット102は次いで、現在CUについての最終残差ブロックを決定し得る。現在CUについての最終残差ブロック中の各サンプルは、現在CUについてのコーディングブロック中の対応するサンプルの値、マイナス修正残差信号中の対応するサンプルの値、マイナス現在CUのPUについての予測ブロック中の対応するサンプルの値に等しくなり得る。ビデオエンコーダ20は、現在CUについての重み付け因子の値を示す重み付け因子インデックスシンタックス要素を生成することができる。本開示のいくつかの例によると、制約は、現在CUのどのPUも、時間的動きベクトルをもたないか、または現在CUの視差ベクトルが利用不可能であるとき、現在CUについての重み付け因子インデックスシンタックス要素が、特定の値(たとえば、0)に等しいことを要求する。
[0206] 変換処理ユニット104は、4分木区分を実行して、CUの残差ブロック(すなわち、修正された最終残差ブロック)をCUのTUに関連付けられた変換ブロックに区分し得る。したがって、TUは、ルーマ変換ブロックと、2つの対応するクロマ変換ブロックとに関連付けられ得る。CUのTUのルーマ変換ブロックおよびクロマ変換ブロックのサイズおよび位置は、CUのPUの予測ブロックのサイズおよび位置に基づくことも基づかないこともある。
[0207] 変換処理ユニット104は、TUの変換ブロックに1つまたは複数の変換を適用することによって、CUのTUごとに変換係数ブロックを生成し得る。変換処理ユニット104は、TUに関連付けられた変換ブロックに様々な変換を適用し得る。たとえば、変換処理ユニット104は、離散コサイン変換(DCT)、方向性変換、または概念的に同様の変換を変換ブロックに適用し得る。いくつかの例において、変換処理ユニット104は変換ブロックに変換を適用しない。そのような例では、変換ブロックは変換係数ブロックとして扱われてもよい。
[0208] 量子化ユニット106は、係数ブロック内の変換係数を量子化し得る。量子化プロセスは、変換係数の一部または全部に関連付けられたビット深度を低減し得る。たとえば、量子化中にnビット変換係数はmビット変換係数に切り捨てられ得、ただし、nはmよりも大きい。量子化は情報の損失をもたらす恐れがあり、したがって、量子化変換係数は、元の係数よりも低い精度を有することがある。
[0209] 逆量子化ユニット108および逆変換処理ユニット110は、それぞれ、係数ブロックに逆量子化および逆変換を適用して、係数ブロックから残差ブロックを再構成し得る。再構成ユニット112は、再構成された残差ブロックを、予測処理ユニット100によって生成された1つまたは複数の予測ブロックからの対応するサンプルに加算して、TUに関連付けられた再構成された変換ブロックを生成し得る。ビデオエンコーダ20は、このようにCUの各TUのための変換ブロックを再構成することによってCUのコーディングブロックを再構成し得る。
[0210] フィルタユニット114は、1つまたは複数のデブロッキング動作を実行して、CUに関連付けられたコーディングブロック中のブロッキングアーティファクトを低減し得る。復号ピクチャバッファ116は、フィルタユニット114が、再構成されたコーディングブロックに対して1つまたは複数のデブロッキング動作を実行した後、再構成されたコーディングブロックを記憶し得る。インター予測処理ユニット120は、再構成されたコーディングブロックを含んでいる参照ピクチャを使用して、他のピクチャのPUに対してインター予測を実行し得る。加えて、イントラ予測処理ユニット126は、復号ピクチャバッファ116内の再構成されたコーディングブロックを使用して、CUと同じピクチャ内の他のPUに対してイントラ予測を実行することができる。
[0211] エントロピー符号化ユニット118は、ビデオエンコーダ20の他の機能構成要素からデータを受信し得る。たとえば、エントロピー符号化ユニット118は、量子化ユニット106から係数ブロックを受信し得、予測処理ユニット100からシンタックス要素を受信し得る。エントロピー符号化ユニット118は、このデータに対して1つまたは複数のエントロピー符号化動作を実行して、エントロピー符号化データを生成することができる。たとえば、エントロピー符号化ユニット118は、コンテキスト適応型可変長コーディング(CAVLC:context-adaptive variable length coding)動作、CABAC動作、変数−変数(V2V:variable-to-variable)レングスコーディング動作、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)動作、確率間隔区分エントロピー(PIPE:Probability Interval Partitioning Entropy)コーディング動作、指数ゴロム符号化動作(Exponential-Golomb encoding operation)、または別のタイプのエントロピー符号化動作をデータに対して実行し得る。ビデオエンコーダ20は、エントロピー符号化ユニット118によって生成されたエントロピー符号化データを含むビットストリームを出力し得る。
[0212] 図8は、本開示の技法を実装するように構成された例示的なビデオデコーダ30を示すブロック図である。図8は、説明のために提供されるものであり、本開示において広く例示し説明する技法を限定するものではない。説明の目的で、本開示は、HEVCコーディングのコンテキストにおいてビデオデコーダ30を記載する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
[0213] 図8の例では、ビデオデコーダ30は、エントロピー復号ユニット150と、予測処理ユニット152と、逆量子化ユニット154と、逆変換処理ユニット156と、再構成ユニット158と、フィルタユニット160と、復号ピクチャバッファ162とを含む。予測処理ユニット152は、動き補償ユニット164とイントラ予測処理ユニット166とを含む。他の例では、ビデオデコーダ30は、より多いか、より少ないか、または異なる機能構成要素を含み得る。
[0214] コード化ピクチャバッファ(CPB:coded picture buffer)151は、ビットストリームの符号化ビデオデータ(たとえば、NALユニット)を受信し、記憶し得る。エントロピー復号ユニット150は、CPB151からNALユニットを受信し、NALユニットをパーシングして、ビットストリームからシンタックス要素を取得し得る。エントロピー復号ユニット150は、NALユニット中のエントロピー符号化されたシンタックス要素をエントロピー復号し得る。予測処理ユニット152、逆量子化ユニット154、逆変換処理ユニット156、再構成ユニット158、およびフィルタユニット160は、ビットストリームから抽出されたシンタックス要素に基づいて復号ビデオデータを生成することができる。
[0215] ビットストリームのNALユニットは、コード化スライスNALユニットを含み得る。ビットストリームを復号することの一部として、エントロピー復号ユニット150は、コード化スライスNALユニットからシンタックス要素を抽出し、エントロピー復号し得る。コード化スライスの各々は、スライスヘッダと、スライスデータとを含み得る。スライスヘッダは、スライスに関するシンタックス要素を含み得る。
[0216] 本開示のいくつかの例によると、ビットストリームは、ビデオコーディング規格(たとえば、HEVCまたはその拡張)に準拠(conform)してよく、エントロピー復号ユニット150は、ビットストリームから、現在CUについての重み付け因子インデックスを取得するかどうか決定することができる。そのような例では、ビデオコーディング規格は、現在CUのどの区分も時間的動きベクトルをもたないか、または現在CUの視差ベクトルが利用不可能なとき、現在CUについての重み付け因子インデックスが特定の値(たとえば、0)を有することを要求する制約に、現在CUについての重み付け因子インデックスを従わせる。そのような例では、特定の値は、残差予測が、現在CUに関して適用されるべきでないことを示す。そのような例によると、エントロピー復号ユニット150は、現在CUのいずれかの区分が時間的動きベクトルを有するかどうか決定することなく、および現在CUについての視差ベクトルを決定することなく、現在CUについての重み付け因子インデックスをビットストリームから取得するかどうかの決定を行うことができる。現在CUについての重み付け因子インデックスの値に対する制約は、そのような決定を行わないにもかかわらず、現在CUに関する残差予測を適用するとき、ビデオデコーダ30が、現在CUの区分についての時間的動きベクトルの欠如または現在CUについての視差ベクトルの欠如から生じるエラーを受けないことを保証し得る。
[0217] ビットストリームからシンタックス要素を取得することに加えて、ビデオデコーダ30は、CUに対して復号動作を実行し得る。CUに対して復号動作を実行することによって、ビデオデコーダ30はCUのコーディングブロックを再構成し得る。
[0218] CUに対して復号動作を実行することの一部として、逆量子化ユニット154は、CUのTUに関連付けられた係数ブロックを逆量子化(inverse quantize)、すなわち、量子化解除(de-quantize)し得る。逆量子化ユニット154は、TUのCUに関連付けられたQPの値を使用して、量子化の程度を決定することができ、同様に、逆量子化ユニット154が適用するための逆量子化の程度を決定することができる。つまり、圧縮比、すなわち、元のシーケンスと圧縮されたシーケンスとを表すために使用されるビット数の比は、変換係数を量子化するときに使用されるQPの値を調整することによって制御され得る。圧縮比はまた、採用されたエントロピーコーディングの方法に依存し得る。
[0219] 逆量子化ユニット154が係数ブロックを逆量子化した後、逆変換処理ユニット156は、係数ブロックに1つまたは複数の逆変換を適用して、TUに関連付けられた残差ブロックを生成することができる。たとえば、逆変換処理ユニット156は、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT:Karhunen-Loeve transform)、逆回転変換、逆方向性変換、または別の逆変換を、係数ブロックに適用することができる。
[0220] イントラ予測を使用してPUが符号化される場合、イントラ予測処理ユニット166は、イントラ予測を実行して、PUについての予測ブロックを生成し得る。イントラ予測処理ユニット166は、イントラ予測モードを使用して、空間的に隣接するPUの予測ブロックに基づいてPUの予測ルーマブロック、予測Cbブロック、および予測Crブロックを生成してもよい。イントラ予測処理ユニット166は、ビットストリームから復号された1つまたは複数のシンタックス要素に基づいてPUのイントラ予測モードを決定し得る。
[0221] 予測処理ユニット152は、ビットストリームから抽出されたシンタックス要素に基づいて、第1の参照ピクチャリスト(RefPicList0)および第2の参照ピクチャリスト(RefPicList1)を構成し得る。さらに、インター予測を使用してPUが符号化される場合、エントロピー復号ユニット150は、PUの動き情報を取得し得る。動き補償ユニット164は、PUの動き情報に基づいて、PUの1つまたは複数の参照領域を決定し得る。動き補償ユニット164は、PUのための1つまたは複数の参照ブロックにおけるサンプルに基づいて、PUの予測ルーマブロック、予測Cbブロック、および予測Crブロックを生成し得る。
[0222] 再構成ユニット158は、CUのTUに関連付けられたルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックからの残差値、ならびにCUのPUの予測ルーマブロック、予測Cbブロック、および予測Crブロックが適用可能な場合にそれらを使用して、すなわち、イントラ予測データまたはインター予測データのいずれかを使用して、CUのルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロックを再構成し得る。たとえば、再構成ユニット158は、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックのサンプルを予測ルーマブロック、予測Cbブロック、および予測Crブロックの対応するサンプルに加算して、CUのルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロックを再構成し得る。
[0223] いくつかの例では、予測処理ユニット152は、現在CUに関して残差予測を適用することができる。そのような例では、予測処理ユニット152は、現在CUの重み付け因子インデックスに基づいて、現在CUについての重み付け因子を決定することができる。さらに、予測処理ユニット152は、重み付け因子インデックスに基づいて、現在CUについての残差信号を予測するかどうか決定することができる。予測処理ユニット152は、現在ピクチャと同じアクセスユニット中にあるが、現在ピクチャとは異なるビュー中にある参照ピクチャ中のサンプルに基づいて、現在CUについての残差信号を予測する(すなわち、現在CUについての残差予測子を決定する)ことができる。予測プロセスユニット152は、残差信号を1つまたは複数の予測ブロックと組み合わせればよい。再構成ユニット158は、得られたサンプルを、逆変換処理ユニット156によって生成された、シグナリングされた残差データの対応するサンプルに追加して、現在CUのコーディングブロックを再構成することができる。
[0224] フィルタユニット160は、CUのルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロックに関連付けられたブロッキングアーティファクトを低減するためにデブロッキング動作を実行し得る。ビデオデコーダ30は、CUのルーマコーディングブロックと、Cbコーディングブロックと、Crコーディングブロックとを復号ピクチャバッファ162に記憶してもよい。復号ピクチャバッファ162は、後続の動き補償、イントラ予測、および図1のディスプレイデバイス32などのディスプレイデバイス上での提示のために参照ピクチャを与え得る。たとえば、ビデオデコーダ30は、復号ピクチャバッファ162中のルーマブロック、Cbブロック、およびCrブロックに基づいて、他のCUのPUに対してイントラ予測動作またはインター予測動作を実行し得る。このようにして、ビデオデコーダ30は、有意ルーマ係数ブロックの変換係数レベルをビットストリームから抽出し、変換係数レベルを逆量子化し、変換係数レベルに変換を適用して変換ブロックを生成し、変換ブロックに少なくとも部分的に基づいてコーディングブロックを生成し、コーディングブロックを表示のために出力し得る。
[0225] 本開示の他の箇所で説明するように、本開示のいくつかの例は、復号プロセスによって生成される情報への、パーシングプロセスの依存を低減することができる。照度補償、ビュー間残差予測および高度残差予測におけるパーシング問題を解決するための例を挙げる。いくつかのそのような例では、シンタックス要素テーブルは同じに保たれる。ただし、いくつかのそのような例では、特定のシンタックス要素および変数のセマンティクスが変更される。
[0226] 以下のテーブル5は、本開示のいくつかの例において使われ得るcoding_unitシンタックス構造の一部分を示す。テーブル5は、上記のテーブル1と同じである。テーブル1は、3D−HEVCテストモデル2のセクションG.7.3.9.1に提示されているcoding_unitシンタックス構造の一部分を示す。
[0227] ただし、本開示の1つまたは複数の例によると、テーブル5に示す変数およびシンタックス要素のセマンティクスは、テーブル1に示す変数およびシンタックス要素のセマンティクスとは異なり得る。たとえば、テーブル5において、1に等しいic_flagシンタックス要素は、照度補償が現在CUに対して使われることを指定する。0に等しいic_flagシンタックス要素は、照度補償が現在CUに対しては使われないことを指定する。存在しないとき、ic_flagは0に等しいと推論される。
[0228] テーブル5の例では、変数icEnableFlagは、ic_flagシンタックス要素がビットストリーム中に存在するかどうかを指定する。さらに、テーブル5の例では、変数icEnableFlagは、以下のように導出される。
上記式、および本開示の他の部分において、角括弧中の斜体テキスト(たとえば、[[テキスト]])は、3D−HEVCテストモデル2または他の適用可能文書から削除されたテキストである。したがって、上記式に示すように、icEnableFlag変数は、この例では、変数anyIvRefPicFlagに依存するのではなく、slice_ic_enable_flagシンタックス要素に依存するだけである。このように、照度補償が現在スライスについて有効化されると決定したことに応答して、および現在CUの少なくとも1つのPUがビュー間参照ピクチャを使うかどうか決定することなく、ビデオデコーダ30は、ビットストリームから、照度補償が現在CUに対して使われるかどうかを示す照度補償フラグを取得することができる。同様に、現在スライスについて照度補償が有効化されているとき、ビデオエンコーダ20は、照度補償フラグを示すデータをビットストリーム中に含めることができ、照度補償フラグは、現在CUの少なくとも1つのPUがビュー間参照ピクチャを使うかどうかにかかわらず、照度補償が現在CUに対して使われるかどうかを示す。
[0229] いくつかの例では、現在CU内のPUのうちのどれもビュー間参照ピクチャを使用しない場合、icEnableFlag変数が0に等しくなるような制約が導入され得る。言い換えると、ビデオコーディング規格(たとえば、HEVC、3D−HEVCなど)は、現在CUのどのPUもビュー間参照ピクチャを使わない場合、照度補償が現在CUには使われないことを示す値(たとえば、0)を照度補償フラグが指定することを要求する制約に、ビットストリーム中の照度補償フラグを従わせる。
[0230] 上述したように、CU用のcoding_unitシンタックス構造は、ビュー間残差予測を使ってCUがコーディングされるかどうかを示すres_pred_flagシンタックス要素を含み得る。本開示の1つまたは複数の例によると、coding_unitシンタックス要素テーブル(すなわち、coding_unitシンタックス構造)は変更されない。ただし、本開示のそのような例では、resPredEnableFlagのセマンティクスは、res_pred_flagシンタックス要素のパーシングプロセスを復号プロセスから独立させるために修正され得る。
[0231] 以下のテーブル6は、本開示のいくつかの例において使われ得るcoding_unitシンタックス構造の一部分を示す。テーブル6は、上記のテーブル2と同じである。テーブル2は、3D−HEVCテストモデル2のセクションG.7.3.9.1に提示されているcoding_unitシンタックス構造の一部分を示す。
[0232] ただし、本開示の1つまたは複数の例によると、テーブル6に示す変数およびシンタックス要素のセマンティクスは、テーブル2に示す変数およびシンタックス要素のセマンティクスとは異なり得る。テーブル6の例では、0に等しいres_pred_flagシンタックス要素は、残差予測が使われないことを指定する。1に等しいres_pred_flagシンタックス要素は、残差予測が使われることを指定する。res_pred_flagシンタックス要素が存在しないとき、res_pred_flagシンタックス要素の値は、0に等しいと推論されるものとする。
[0233] さらに、テーブル6の例では、変数resPredEnableFlagは、res_pred_flagシンタックス要素がビットストリーム中に存在するかどうかを指定する。本開示の一例によると、resPredEnableFlagは、以下のように導出される。
したがって、この例では、ビデオコーダはもはや、resPredEnableFlag変数の値を決定するとき、residualCbfNonZeroとanyTempRefPicFlagを決定しない。上述したように、residualCbfNonZero変数を決定することは、参照ビュー中の対応するブロックを決定することを要求し得る。したがって、residualCbfNonZero変数を決定することは、視差ベクトルを決定することを要求し、これは、CUについてのパーシングプロセスではなく、CUについての復号プロセスの一部である。同様に、anyTempRefPicFlag変数を決定することは、現在CUの1つまたは複数のPUが時間参照ピクチャを使うかどうか決定することを要求する。PUが時間参照ピクチャを使うかどうか決定することは、マージまたはAMVP候補リストを決定することを要求し得る。マージまたはAMVP候補リストを決定することは、CUについてのパーシングプロセスではなく、PUについての復号プロセスの一部である。
[0234] 本開示の別の例では、ビデオコーダは、変数resPredEnableFlagを以下のように導出することができる。
上式で、視差ベクトルが見つからない場合、変数DispVectAvaiは1に等しい。そうでない場合、0に等しい。
したがって、この例では、ビデオコーダは、residualCbfNonZero変数に基づいてresPredEnableFlab変数を決定するのではない。ただし、この例では、resPredEnableFlagは、DispVectAvai変数に依存する。視差ベクトルが見つからない場合、DispVectAvaiは1に等しい。そうでない場合、DispVectAvaiは0に等しい。この例では、視差ベクトルは、現在CUのシンタックス要素をパーシングするときに既知であった可能性がある隣接ブロックから導出され得る。視差ベクトルを決定することは、現在PU/CUの復号情報を要求しなくてよいが、この決定は、隣接ブロックからの何らかの復号情報に依拠し得る。
[0235] 本開示の別の例では、変数resPredEnableFlagは、以下のように導出される。
したがって、この例では、ビデオコーダは、residualCbfNonZero変数に基づいてresPredEnableFlab変数を決定するのではない。ただし、この例では、resPredEnableFlagは、anyTempRefPicFlag変数には依存する。
[0236] 本開示のいくつかの例は、対応するブロック中のPUのうちのどれもインターコーディングされず、cbf_luma、cbf_cbおよびcbf_crの値が0に等しくない場合、res_pred_flagが0になるような制約を導入する。言い換えると、この例では、ビデオコーディング規格(たとえば、HEVC、3D−HEVCなど)が、現在CUの対応するブロック内のどの予測ユニット(PU)もインターコーディングされない場合、または現在CUの対応するブロック内のどのPUも、1に等しくないルーマおよびクロマコード化ブロックフラグ(CBF)の値をもたない場合、残差予測フラグが0に等しいことを要求する制約に、ビットストリーム中の残差予測フラグを従わせる。0に等しい現在CUについての残差予測フラグは、現在CUについて残差予測が使われないことを示す。この例では、対応するブロックは参照ビューピクチャ中にある。
[0237] さらに、いくつかの例では、現在CUについての視差ベクトルが利用不可能な場合、res_pred_flagが0になるような制約が導入され得る。いくつかの例では、現在CU中のPUのうちのどれも、時間参照ピクチャを用いてコーディングされない場合、res_pred_flagが0になるような制約が導入される。
[0238] 上述したように、本開示のいくつかの例は、復号プロセスに依存するパーシングプロセスに関連して上述した問題のうちの1つまたは複数を回避するために、制約を使う。たとえば、上述したように、coding_unitシンタックス構造は、ARPのために使われる重み付け因子に対するインデックスを示すweighting_factor_indexシンタックス要素を含み得る。以下のテーブル7は、本開示の一例によるcoding_unitシンタックス構造の例示的な部分を示す。
[0239] テーブル7の例では、現在CU中の区分のうちのどれも時間的動きベクトルをもたず(すなわち、参照ピクチャが同じビューからのものである)、または現在CUの視差ベクトルが利用不可能な場合、重み付け因子インデックスシンタックス要素が0になるような制約が導入される。上述したように、重み付け因子インデックスシンタックス要素が0に等しくなく、現在CUのどのPUも時間的動きベクトルをもたず、または現在CUについての視差ベクトルが利用不可能である場合、コーディングエラーが起こり得る。したがって、いくつかの提案は、重み付け因子インデックスシンタックス要素をパーシングするのに先立って、現在CUのいずれかのPUが時間的動きベクトルを有するかどうかチェックすることと、現在CUについての視差ベクトルが利用可能かどうかチェックすることとを求めている。したがって、そのような提案では、重み付け因子シンタックス要素が存在しない場合、ビットストリーム中の重み付け因子インデックスシンタックス要素は0であると想定されるので、現在CUのどのPUも時間的動きベクトルをもたないか、または現在CUについての視差ベクトルが利用不可能であるとビデオデコーダが決定した場合、ビデオコーダは、残差予測を実行しない。ただし、現在CUのいずれかのPUが時間的動きベクトルを有するかどうか、および現在CUの視差ベクトルが利用可能かどうかの決定は、復号プロセスにおいて生成される情報を要求する場合があり、これはパーシングプロセスを遅くし得る。したがって、テーブル7の例では、制約は、ビデオデコーダが、ビットストリームから重み付け因子インデックスシンタックス要素を取得するのに先立って、現在CUのいずれかのPUが時間的動きベクトルを有するかどうか、または現在CUの視差ベクトルが利用可能かどうかチェックすることを要求することなく、このタイプの復号エラーが起こらないことを保証し得る。
[0240] 以下のテーブル8は、本開示の別の例によるcoding_unitシンタックス構造の一部分である。
[0241] テーブル8の例では、現在CUの視差ベクトルが利用不可能な場合、weighting_factor_indexシンタックス要素が0になるような制約が導入され得る。1に等しくセットされたTempMVAvaiは、現在CUが、同じビューからの少なくとも1つの参照ピクチャから予測されることを示す。そうでない場合、TempMVAvaiは0に等しく設定される。
[0242] 以下のテーブル9は、本開示の別の例によるcoding_unitシンタックス構造の一部分である。
[0243] テーブル9の例では、現在CU中の区分のうちのどれも時間的動きベクトルをもたず(すなわち、参照ピクチャすべてが同じビューからのものである)場合、重み付け因子インデックスシンタックス要素が0になるような制約が導入される。
[0244] 図9は、本開示の1つまたは複数の技法によるビデオエンコーダ20の例示的な動作200を示すフローチャートである。図9の例では、ビデオエンコーダ20は、ビデオコーディング規格に準拠するビットストリームを生成する(202)。ビットストリームは、ビデオデータのコード化表現を備える。ビットストリームは、現在CUについての重み付け因子インデックスを示すデータを含む。ビデオコーディング規格は、現在CUのどの区分も時間的動きベクトルをもたないか、または現在CUの視差ベクトルが利用不可能なとき、現在CUについての重み付け因子インデックスが特定の値(たとえば、0)を有することを要求する制約に、現在CUについての重み付け因子インデックスを従わせる。特定の値を有する、現在CUについての重み付け因子インデックスは、現在CUに関して残差予測が適用されないことを示す。さらに、図9の例では、ビデオエンコーダ20は、ビットストリームを出力する(204)。
[0245] 図10は、本開示の1つまたは複数の技法による、現在のCUを符号化するための例示的な動作250を示すフローチャートである。図10の例では、ビデオエンコーダ20は、現在CUのいずれかのPU(すなわち、いずれかの区分)が時間的動きベクトルを有するかどうか決定することができる(252)。現在CUのPUのうちの少なくとも1つが時間的動きベクトルを有する(252の「YES」)と決定したことに応答して、ビデオエンコーダ20は、現在CUについての視差ベクトルが利用可能かどうか決定することができる(254)。現在CUについての視差ベクトルが利用可能でない(254の「NO」)と決定したことに応答して、または現在CUのPUのうちのどれも時間的動きベクトルをもたない(252の「NO」)と決定したことに応答して、ビデオエンコーダ20は、現在CUについての重み付け因子を0にセットしてよく、現在CUの重み付け因子インデックスを0にセットしてよい(256)。
[0246] ビデオエンコーダ20が重み付け因子と重み付け因子インデックスとをアクション256においてセットするかどうかにかかわらず、ビデオエンコーダ20は、現在CUについての1つまたは複数の予測サンプルアレイを決定することができる(258)。たとえば、ビデオエンコーダ20は、現在CUについてのルーマ予測サンプルアレイ(たとえば、predSamplesL)と2つのクロマ予測サンプルアレイ(たとえば、predSamplesCbおよびpredSamplesCr)とを決定することができる。ビデオエンコーダ20は、現在CUの各PUのための予測ブロックを決定することによって、現在CUについての予測サンプルアレイを決定することができる。
[0247] さらに、図10の例では、ビデオエンコーダ20は、現在CUのための残差サンプルアレイを決定し得る(260)。たとえば、ビデオエンコーダ20は、現在CUについてのルーマ残差サンプルアレイ(たとえば、resSamplesL)と2つのクロマ残差サンプルアレイ(たとえば、resSamplesCbおよびresSamplesCr)とを決定することができる。ビデオエンコーダ20は、現在CUについての残差サンプルアレイを決定するのに、図11の例示的な動作を実行することができる。
[0248] さらに、ビデオエンコーダ20は、現在CUについての重み付け因子インデックスを示すデータをビットストリーム中に含めるかどうか決定することができる(262)。ビットストリームは、ビデオデータのコード化表現を備える。いくつかの例では、ビデオエンコーダ20は、現在CUが深度ビュー成分ではなく、現在CUはベースレイヤ中になく、現在CUのコーディングモードがイントラ予測でなく、現在CUの区分モードがPART_2N×2Nであるとき、重み付け因子インデックスを示すデータをビットストリーム中に含め得る。この例では、現在CUは、現在ビューに属するピクチャ中にあり得る。したがって、この例では、現在ビューが従属テクスチャビューであり、現在CUがイントラコーディングされず、現在CUの区分モードがPART_2N×2Nに等しいと決定したことに応答して、ビデオエンコーダ20は、ビットストリーム中に、現在CUについての重み付け因子インデックスを示すデータを含め得る。
[0249] 他の例では、ビデオエンコーダ20は、現在CUが深度ビュー成分ではなく、現在CUがベースレイヤ中になく、現在CUのコーディングモードがイントラ予測でなく、現在CUの区分モードがPART_2N×2Nであり、現在CUが同じビューからの少なくとも1つの参照ピクチャから予測されるとき、ビットストリーム中に重み付け因子インデックスを示すデータを含め得る。他の例では、ビデオエンコーダ20は、現在CUが深度ビュー成分ではなく、現在CUがベースレイヤ中になく、現在CUのコーディングモードがイントラ予測でなく、現在CUの区分モードがPART_2N×2Nであり、現在CUについての視差ベクトルが見つからなかったとき、重み付け因子インデックスを示すデータをビットストリーム中に含め得る。ビットストリームが、現在CUについての重み付け因子インデックスを示すデータを含むべきであると決定したことに応答して(262の「YES」)、ビデオエンコーダ20は、ビットストリーム中に、現在CUについての重み付け因子インデックスを示すデータを含め得る(264)。そうではなく、ビットストリームが現在CUについての重み付け因子インデックスを示すデータを含むべきではないと決定したことに応答して(262の「NO」)、ビデオエンコーダ20は、ビットストリームから、現在CUについての重み付け因子インデックスを示すデータを省いてよい(266)。
[0250] ビデオエンコーダ20が現在CUについての重み付け因子インデックスをビットストリーム中に含めるかどうかにかかわらず、ビデオエンコーダ20は、ビットストリーム中に、現在CUについての残差サンプルアレイを示すデータを含め得る(268)。たとえば、ビデオエンコーダ20は、現在CUについての残差サンプルアレイを、現在CUの1つまたは複数のTUに関連付けられた変換ブロックに区分してよい。この例では、ビデオエンコーダ20は、各変換ブロックに変換を適用し、得られた係数ブロックを量子化することができる。さらに、この例では、ビデオエンコーダ20は、量子化係数ブロックを示すシンタックス要素を生成することができる。この例では、ビデオエンコーダ20は、量子化係数ブロックを示すシンタックス要素をエントロピー符号化することができる。ビデオエンコーダ20は、エントロピー符号化されたシンタックス要素をビットストリーム中に含め得る。したがって、この例では、ビデオエンコーダ20は、ビットストリーム中に、現在CUについての残差サンプルアレイを示すデータを含め得る。このようにして、ビデオエンコーダ20は、ビットストリーム中で残差サンプルアレイをシグナリングすることができる。
[0251] 図11は、現在CUのための残差サンプルアレイを決定するための、ビデオエンコーダ20の例示的な動作300を示すフローチャートである。図11の例では、ビデオエンコーダ20は、現在CUについての重み付け因子が0にセットされているかどうか決定することができる(302)。図10のアクション256において示されるように、現在CUについての重み付け因子は、現在CUのどのPUも時間的動きベクトルをもたないか、または現在CUについての視差ベクトルが利用可能でないとき、0にセットされ得る。
[0252] 現在CUについての重み付け因子が0にセットされていないこと決定したことに応答して(302の「NO」)、ビデオエンコーダ20は、現在CUに関してARPを実行することができる。したがって、現在CUについての重み付け因子が0にセットされていないと決定したことに応答して(302の「NO」)、ビデオエンコーダ20は、現在CUの現在PUについての視差参照ブロックを決定することができる(304)。ビデオエンコーダ20は、ビュー間参照ピクチャ(すなわち、現在ピクチャと同じアクセスユニットに関連付けられているが、現在ピクチャとは異なるビュー中にある参照ピクチャ)の実際の、または補間されたサンプルから、視差参照ブロックを決定することができる。さらに、ビデオエンコーダ20は、現在CUに対する時間視差参照ブロックを決定することができる(306)。ビデオエンコーダ20は、視差参照ブロックと同じビュー中にあるが、現在PUまたは視差参照ブロックとは異なるアクセスユニット中にある参照ピクチャの実際の、または補間されたサンプルに基づいて、時間視差参照ブロックを決定することができる。
[0253] 続いて、ビデオエンコーダ20は、現在PUに対する残差予測子を決定することができる(308)。現在PUについての残差予測子中の各サンプルは、視差参照ブロック中の対応するサンプルと、時間視差参照ブロック中との間の差分を示し得る。さらに、ビデオエンコーダ20は、現在PUについての重み付けされた残差予測子を決定するために、現在CUについての重み付け因子に基づいて残差予測子を修正することができる(310)。たとえば、重み付けされた残差予測子中の各サンプルは、残差予測子中の対応するサンプルを、重み付け因子で除算したものに等しくてよい。
[0254] 現在PUについての重み付けされた残差予測子を決定した後、ビデオエンコーダ20は、現在CUの残っているPUがあるかどうか決定すればよい(312)。現在CUの残っているPUがある場合(312の「YES」)、ビデオエンコーダ20は、現在PUとしての、現在CUの別のPUで、アクション304〜312を再度実行すればよい。このようにして、ビデオエンコーダ20は、現在CUの各PUに対して、アクション304〜312を実行することができる。
[0255] 現在CUの残っているPUがないと決定したことに応答して(312の「NO」)、ビデオエンコーダ20は、現在CUのコーディングブロック、現在CUのPUについての重み付けされた残差予測子、および現在CUについての予測サンプルアレイに基づいて、現在CUについての残差サンプルアレイを決定することができる(314)。たとえば、現在CUについての残差サンプルアレイ中の各サンプルは、現在CUについてのコーディングブロック中の対応するサンプルと、現在CUのPUについての重み付けされた残差予測子と、現在CUのPUのための予測ブロックとの間の差分に等しくてよい。
[0256] 図11の例に示すように、現在CUについての重み付け因子が0にセットされているとき(302の「YES」)、ビデオエンコーダ20は、現在CUに関してARPを実行しない。場合によっては、現在CUについての重み付け因子が0にセットされているとき(302の「YES」)、ビデオエンコーダ20は、現在CUについてのコーディングブロックおよび現在CUについての予測サンプルアレイに基づいて、現在CUについての残差サンプルアレイを決定することができる(316)。たとえば、現在CUについての残差サンプルアレイ中の各サンプルは、現在CUについてのコーディングブロック中の対応するサンプルと現在CUのPUのための予測ブロックとの間の差分に等しくてよい。
[0257] 図11の例では、重み付け因子があらかじめ0にセットされていないとき、ビデオエンコーダ20は、各利用可能重み付け因子(たとえば、0、0.5、および1)について、動作300を複数回実行し、次いで、レート/歪み分析に基づいて、現在CUについての重み付け因子(および現在CUについての関連残差サンプルアレイ)を選択すればよい。
[0258] 図12は、本開示の1つまたは複数の技法による、ビデオデコーダ30の例示的な動作350を示すフローチャートである。図12の例に示すように、ビデオデコーダ30は、ビデオコーディング規格に準拠するビットストリームから、現在CUについての重み付け因子インデックスを取得する(352)。ビットストリームはビデオデータの符号化表現を備え、ビデオコーディング規格は、現在CUのどの区分も時間的動きベクトルをもたないか、または現在CUの視差ベクトルが利用不可能なとき、現在CUについての重み付け因子インデックスが特定の値を有することを要求する制約に、現在CUについての重み付け因子インデックスを従わせればよい。特定の値は、残差予測が、現在CUに関して適用されないことを示す。さらに、ビデオデコーダ30は、現在CUについての重み付け因子インデックスに基づいて、重み付け因子を決定することができる(354)。
[0259] さらに、ビデオデコーダ30は、重み付け因子に基づいて、現在CUについての残差信号を予測するかどうか決定することができる(356)。いくつかの例では、ビデオデコーダ30は、現在CUについての重み付け因子が実際に特定の値に等しくないと決定したことに応答して、重み付け因子で乗算された参照残差信号を使って、現在CUについての残差信号を予測することができる。いくつかの例では、ビデオデコーダ30は、視差参照ブロックと時間視差参照ブロックとの間の差分に基づいて、参照残差信号を決定することができる。
[0260] 図13は、本開示の1つまたは複数の技法による、現在CUを復号するためのビデオデコーダ30の例示的な動作400を示すフローチャートである。図13の例では、ビデオデコーダ30は、ビットストリームから、現在CUに関連付けられたシンタックス要素を取得するための動作(たとえば、パーシング動作)を実行することができる(402)。ビットストリームは、ビデオデータのコード化表現を備え得る。
[0261] 現在CUに関連付けられたシンタックス要素を取得するための動作を実行することの一部として、ビデオデコーダ30は、現在CUの重み付け因子インデックスを示すデータがビットストリーム中に含まれるかどうか決定すればよい(404)。いくつかの例では、ビデオデコーダ30は、現在CUが深度ビュー成分ではなく、現在CUがベースレイヤ中になく、現在CUのコーディングモードがイントラ予測でなく、現在CUの区分モードがPART_2N×2Nであるとき、ビットストリームが、重み付け因子インデックスを示すデータを含むと決定することができる。したがって、この例では、現在ビューが従属テクスチャビューであり、現在CUがイントラコーディングされず、現在CUの区分モードがPART_2N×2Nに等しいとき、ビデオデコーダ30は、ビットストリームから、現在CUについての重み付け因子インデックスを取得することができる。さらに、この例では、現在ビューが従属テクスチャビューではなく、現在CUがイントラコーディングされ、または現在CUの区分モードがPART_2N×2Nに等しくないとき、ビデオデコーダ30は、重み付け因子インデックスが特定の値に等しいと想定することができる。
[0262] 他の例では、ビデオデコーダ30は、現在CUが深度ビュー成分ではなく、現在CUがベースレイヤ中になく、現在CUのコーディングモードがイントラ予測でなく、現在CUの区分モードがPART_2N×2Nであり、現在CUが同じビューからの少なくとも1つの参照ピクチャから予測されるとき、ビットストリームが、重み付け因子インデックスを示すデータを含むと決定することができる。他の例では、ビデオデコーダ30は、現在CUが深度ビュー成分ではなく、現在CUがベースレイヤ中になく、現在CUのコーディングモードがイントラ予測でなく、現在CUの区分モードがPART_2N×2Nであり、現在CUについての視差ベクトルが見つからなかったとき、ビットストリームが、重み付け因子インデックスを示すデータを含むと決定することができる。
[0263] ビットストリームが、現在CUについての重み付け因子インデックスを示すデータを含むと決定したことに応答して(404の「YES」)、ビデオデコーダ30は、ビットストリームから、現在CUについての重み付け因子インデックスを示すデータを取得することができる(406)。たとえば、ビデオデコーダ30は、ビットストリーム中のデータに基づいて、現在CUについての重み付け因子インデックスを示すシンタックス要素(たとえば、weighting_factor_index)を取得することができる。
[0264] 本開示のいくつかの例示的技法によると、現在CUのどの区分(たとえば、PU)も時間的動きベクトルをもたないか、または現在CUについての視差ベクトルが利用不可能であるとき、重み付け因子インデックスが特定の値(たとえば、0)に等しくなるような制約が適用される。他の例では、現在CUについての視差ベクトルが利用不可能であるとき、重み付け因子インデックスが特定の値(たとえば、0)に等しくなるような制約が適用される。別の例では、現在CUの区分(たとえば、PU)のうちのどれも時間的動きベクトルをもたないとき、重み付け因子が特定の値(たとえば、0)に等しくなるような制約が適用される。
[0265] ビデオデコーダ30が、重み付け因子インデックスを示すデータをビットストリームから取得するかどうかにかかわらず、ビデオデコーダ30は、ビットストリームから、現在CUについての1つまたは複数のシグナリングされた残差ブロックを示すデータを取得することができる(408)。たとえば、ビデオデコーダ30は、ビットストリーム中のデータに基づいて、現在CUのTUに関連付けられた量子化係数ブロックを示すシンタックス要素を取得することができる。この例では、ビデオデコーダ30は、現在CUについてのシグナリングされた残差サンプルブロックを取得するために、量子化係数ブロックを逆量子化し、逆変換を適用することができる。
[0266] さらに、図13の例では、ビデオデコーダ30は、現在CUのための予測サンプルアレイを決定し得る(410)。ビデオデコーダ30は、現在CUについての予測サンプルアレイを決定するのに、現在CUのPUについて指定された1つまたは複数の参照ピクチャとシンタックス要素とを使えばよい。さらに、ビデオデコーダ30は、現在CUについてのシグナリングされた残差ブロックに少なくとも部分的に基づいて、現在CUについての残差サンプルアレイを決定し得る(412)。ビデオデコーダ30は、現在CUについての残差サンプルアレイを決定するのに、図14の例示的な動作を実行することができる。ビデオデコーダ30は次いで、現在CUについての予測サンプルアレイおよび現在CUについての残差サンプルアレイに基づいて、現在CUについてのコーディングブロックを再構成することができる(414)。いくつかの例では、現在CUについてのコーディングブロック中の各サンプルは、現在CUについての予測サンプルアレイおよび現在CUについての残差サンプルアレイ中の対応するサンプルの合計に等しくなり得る。いくつかの例では、ビデオデコーダ30が現在CUについてのコーディングブロックを再構成するとき、ビデオデコーダ30は、1つまたは複数のデブロッキングフィルタ(deblocking filter)を適用する。
[0267] 図14は、本開示の1つまたは複数の技法による、現在CUについての残差サンプルアレイを決定するためのビデオデコーダ30の例示的な動作450を示すフローチャートである。図14の例では、ビデオデコーダ20は、現在CUについての重み付け因子インデックスに基づいて、現在CUについての重み付け因子を決定することができる(452)。たとえば、現在CUについての重み付け因子インデックスが0、1、または2に等しい場合、ビデオデコーダ30は、現在CUについての重み付け因子が、それぞれ、0、0.5、または1に等しいと決定することができる。
[0268] ビデオデコーダ30は次いで、現在CUについての重み付け因子が0に等しいかどうか決定することができる(454)。現在CUについての重み付け因子が0に等しくないとき、ビデオデコーダ30は、現在CUに関してARPを実行してよい。したがって、現在CUについての重み付け因子が0に等しくないと決定したことに応答して(454の「NO」)、ビデオデコーダ30は、現在CUの現在PUについての視差参照ブロックを決定することができる(456)。ビデオデコーダ30は、ビュー間参照ピクチャ(すなわち、現在ピクチャと同じアクセスユニット中にあるが、現在ピクチャとは異なるビュー中にある参照ピクチャ)の実際の、または補間されたサンプルから、視差参照ブロックを決定することができる。さらに、ビデオデコーダ30は、現在CUに対する時間視差参照ブロックを決定することができる(458)。ビデオデコーダ30は、視差参照ブロックと同じビュー中にあるが、現在PUまたは視差参照ブロックとは異なるアクセスユニット中にある参照ピクチャの実際の、または補間されたサンプルに基づいて、時間視差参照ブロックを決定することができる。
[0269] 続いて、ビデオデコーダ30は、現在PUに対する残差予測子を決定することができる(460)。現在PUについての残差予測子中の各サンプルは、視差参照ブロック中の対応するサンプルと、時間視差参照ブロック中との間の差分を示し得る。さらに、ビデオデコーダ30は、現在PUについての重み付けされた残差予測子を決定するために、現在CUについての重み付け因子に基づいて残差予測子を修正することができる(462)。たとえば、重み付けされた残差予測子中の各サンプルは、残差予測子中の対応するサンプルを、現在CUについての重み付け因子で乗算したものに等しくてよい。
[0270] 現在PUについての重み付けされた残差予測子を決定した後、ビデオデコーダ30は、現在CUの残っているPUがあるかどうか決定すればよい(464)。現在CUの残っているPUがある場合(464の「YES」)、ビデオデコーダ30は、現在PUとしての、現在CUの別のPUで、アクション456〜464を再度実行すればよい。このようにして、ビデオデコーダ30は、現在CUの各PUに対して、アクション456〜464を実行することができる。
[0271] 現在CUの残っているPUがないと決定したことに応答して(464の「NO」)、ビデオデコーダ30は、現在CUのPUについての重み付けされた残差予測子および現在CUについてのシグナリングされた残差ブロックに基づいて、現在CUについての残差サンプルアレイを決定することができる(466)。たとえば、現在CUについての残差サンプルアレイ中の各サンプルは、現在CUのPUについての重み付けされた残差予測子中の対応するサンプルと、現在CUについてのシグナリングされた残差ブロックとの合計に等しくなり得る。
[0272] 図14の例に示すように、現在CUについての重み付け因子が0にセットされているとき(454の「YES」)、ビデオデコーダ30は、現在CUに関してARPを実行しない。場合によっては、現在CUについての重み付け因子が0にセットされているとき(454の「YES」)、現在CUについての残差サンプルアレイは、現在CUについてのシグナリングされた残差ブロックを備える(468)。
[0273] 図15Aは、本開示の一例の技法による、ビデオデコーダ30の例示的な動作を示すフローチャートである。図15Aの例において、ビデオデコーダ30は、現在ビューが従属テクスチャビューであるかどうかと、現在CUがイントラコーディングされないかどうかと、現在CUの区分モードがPART_2N×2Nに等しいかどうかとを決定することができる(500)。現在ビューが従属テクスチャビューであり、現在CUがイントラコーディングされず、現在CUの区分モードがPART_2N×2Nに等しいとき(500の「YES」)、ビデオデコーダ30は、ビデオデータの符号化表現を備えるビットストリームから、現在CUの重み付け因子インデックスを取得ことができる(502)。現在CUは、現在ビューに属するピクチャ中にある。現在CUは、現在ビューに属するピクチャ中にある。現在ビューが従属テクスチャビューではなく、または現在CUがイントラコーディングされず、または現在CUの区分モードがPART_2N×2Nに等しくないとき(500の「NO」)、ビデオデコーダ30は、重み付け因子インデックスが、現在CUに関して残差予測が適用されないことを示す特定の値に等しいと想定してよい(504)。さらに、ビデオデコーダ30は、現在CUについての重み付け因子インデックスに基づいて、重み付け因子を決定することができる(506)。ビデオデコーダ30は、重み付け因子に基づいて、現在CUについての残差信号を予測するかどうか決定することもできる(508)。
[0274] 図15Bは、本開示の一例の技法による、ビデオエンコーダ20の例示的な動作を示すフローチャートである。図15Bの例において、ビデオエンコーダ20は、現在ビューが従属テクスチャビューであるかどうかと、現在CUがイントラコーディングされないかどうかと、現在CUの区分モードがPART_2N×2Nに等しいかどうかとを決定することができる(520)。現在ビューが従属テクスチャビューであり、現在CUがイントラコーディングされず、現在CUの区分モードがPART_2N×2Nに等しいと決定したことに応答して(520の「YES」)、ビデオエンコーダ20は、ビデオデータの符号化表現を備えるビットストリーム中に、現在CUの重み付け因子インデックスを示すデータを含めることができる(522)。現在CUは、現在ビューに属するピクチャ中にある。ただし、現在ビューが従属テクスチャビューではなく、または現在CUがイントラコーディングされず、または現在CUの区分モードがPART_2N×2Nに等しくないと決定したことに応答して(520の「NO」)、ビデオエンコーダ20は、ビットストリームから、現在CUについての重み付け因子インデックスを示すデータを省いてよい(524)。いずれの場合も、ビデオエンコーダ20はビットストリームを出力し得る(526)。
[0275] 図16Aは、本開示の一例の技法による、ビデオデコーダ30の例示的な動作を示すフローチャートである。図16Aの例では、ビデオデコーダ30は、ビデオコーディング規格に準拠するとともにビデオデータの符号化表現を含むビットストリームから、現在CUに対して照度補償が使われるかどうかを示す照度補償フラグを取得することができる(550)。ビデオコーディング規格は、現在CUのどのPUもビュー間参照ピクチャを使わない場合、照度補償が現在CUには使われないことを示す値を照度補償フラグが指定することを要求する制約に、照度補償フラグを従わせ得る。さらに、ビデオデコーダ30は、現在CUについて照度補償が実行されるべきであると照度補償フラグが示すかどうか決定することができる(552)。照度補償フラグに基づいて、現在CUについて照度補償が実行されるべきであると決定したことに応答して(552の「YES」)、ビデオデコーダ30は、現在CUについて照度補償を実行することができる(554)。そうでない場合、照度補償フラグに基づいて、現在CUについて照度補償が実行されるべきであると決定したことに応答して(552の「NO」)、ビデオデコーダ30は、現在CUについて照度補償を実行しない(556)
[0276] 図16Bは、本開示の一例の技法による、ビデオエンコーダ20の例示的な動作を示すフローチャートである。図16Bの例では、ビデオエンコーダ20は、ビデオコーディング規格に準拠するとともにビデオデータの符号化表現を含むビットストリーム中に、現在CUに対して照度補償が使われるかどうかを示す照度補償フラグを含めることができる(570)。ビデオコーディング規格は、現在CUのどのPUもビュー間参照ピクチャを使わない場合、照度補償が現在CUには使われないことを示す値を照度補償フラグが指定することを要求する制約に、照度補償フラグを従わせ得る。ビデオエンコーダ20は、ビットストリームを出力することができる(572)。
[0277] 図17Aは、本開示の一例の技法による、ビデオデコーダ30の例示的な動作を示すフローチャートである。図17Aの例では、ビデオデコーダ30は、ビデオコーディング規格に準拠するとともにビデオデータの符号化表現を含むビットストリームから、現在CUについての残差予測フラグを取得することができる(600)。0に等しい現在CUについての残差予測フラグは、現在CUについて残差予測が使われず、ビデオコーディング規格が、現在CUの対応するブロック内のどのPUもインターコーディングされない場合、または現在CUの対応するブロック内のどのPUも、0に等しくないルーマおよびクロマCBFの値をもたない場合、残差予測フラグが0に等しいことを要求する制約に残差予測フラグを従わせることを示し得る。対応するブロックは参照ビューピクチャ中にある。いくつかの例では、ビデオデコーダ30は、残差予測が現在CUに対して有効化されると決定したことに応答して、および現在CUの対応するブロック内の少なくとも1つのPUがイントラコーディングされないかどうか決定することなく、および現在CUの対応するブロックのルーマCBFおよびクロマCBFの値が0に等しくないと決定することなく、ビットストリームから残差予測フラグを取得することができる。
[0278] さらに、図17Aの例では、ビデオデコーダ30は、残差予測フラグに基づいて、残差予測が現在CUに対して使われるかどうか決定することができる(602)。残差予測フラグに基づいて、残差予測が現在CUに対して使われると決定したことに応答して(602の「YES」)、ビデオデコーダ30は、現在CUについての残差予測を実行することができる(604)。そうでない場合、現在CUについて残差予測が使われないと決定したことに応答して(602の「NO」)、ビデオデコーダ30は、現在CUについて残差予測を実行しない(606)。
[0279] 図17Bは、本開示の一例の技法による、ビデオエンコーダ20の例示的な動作を示すフローチャートである。図17Bの例では、ビデオエンコーダ20は、ビデオコーディング規格に準拠するとともにビデオデータの符号化表現を含むビットストリーム中に、現在CUについての残差予測フラグを含めることができる(620)。0に等しい現在CUについての残差予測フラグは、現在CUについて残差予測が使われず、ビデオコーディング規格が、現在CUの対応するブロック内のどのPUもインターコーディングされない場合、または現在CUの対応するブロック内のどのPUも、0に等しくないルーマおよびクロマCBFの値をもたない場合、残差予測フラグが0に等しいことを要求する制約に残差予測フラグを従わせることを示し得る。対応するブロックは参照ビューピクチャ中にある。いくつかの例では、ビデオエンコーダ20は、残差予測が現在CUに対して有効化されるとき、ただし現在CUの対応するブロック内の少なくとも1つのPUがイントラコーディングされないかどうか決定することなく、および現在CUの対応するブロックのルーマCBFおよびクロマCBFの値が0に等しくないと決定することなく、ビットストリームに残差予測フラグを含めることができる。さらに、ビデオエンコーダ20は、ビットストリームを出力してもよい(622)。
[0280] 本開示は、ビデオ符号化およびビデオ復号のための様々な例示的技法を開示するが、それらのうちのいくつかが、以下に提示される。
[0281] 例1:ビデオデータを復号する方法であって、照度補償が現在スライス用に利用可能かどうかを示すシンタックス要素の値に基づいて、および現在CUの1つまたは複数のPUがビュー間参照ピクチャを使用することを指定する変数に基づかずに、変数の値を決定することと、変数の値が特定の値であると決定したことに応答して、ビットストリームから、照度補償が現在CUに対して有効化されるかどうかを示す照度補償フラグをパーシングすることとを備える方法。
[0282] 例2:例1の方法であって、現在CUのどのPUもビュー間参照ピクチャを使用しない場合、変数は特定の値をもたない。
[0283] 例3:ビデオデータを符号化する方法であって、照度補償が現在スライス用に利用可能であるかどうかに基づいて、および現在CUの1つまたは複数のPUがビュー間参照ピクチャを使用するかどうかに基づかずに、変数の値を決定することと、変数の値が特定の値であると決定したことに応答して、ビットストリーム中に、照度補償が現在CUに対して有効化されるかどうかを示す照度補償フラグを含めることとを備える方法。
[0284] 例4:例3の方法であって、現在CUのどのPUもビュー間参照ピクチャを使用しない場合、変数は特定の値をもたない。
[0285] 例5:ビデオデータを復号する方法であって、現在コーディングユニット(CU)の対応するブロックの予測ユニット(PU)のコード化ブロックフラグ(CBF:coded block flag)を参照せずに、変数の値を決定することと、変数が特定の値を有すると決定したことに応答して、ビットストリームから、残差予測が現在CUに対して使われるかどうかを示す残差予測フラグをパーシングすることとを備える方法。
[0286] 例6:例5の方法であって、変数の値を決定することは、現在CUの予測モードがイントラモードであるかどうかに少なくとも部分的に基づいて、変数の値を決定することを備える。
[0287] 例7:例5の方法であって、変数の値を決定することは、現在CUの1つまたは複数のPUが時間参照ピクチャを使用するかどうか決定することなく、変数の値を決定することを備える。
[0288] 例8:例5の方法であって、変数の値を決定することは、現在CUについて視差ベクトルが見つかったかどうかに少なくとも部分的に基づいて、変数の値を決定することを備える。
[0289] 例9:例5の方法であって、現在CUのPUがインターコーディングされず、現在CUのコード化ブロックフラグの値が0に等しくない場合、変数の値は特定の値に等しくない。
[0290] 例10:例5の方法であって、現在CUの視差ベクトルが利用不可能な場合、変数の値は特定の値に等しくない。
[0291] 例11:例5の方法であって、現在CUのPUのうちのどれも、時間参照ピクチャを用いてコーディングされるのではない場合、変数の値は特定の値に等しくない。
[0292] 例12:ビデオデータを符号化する方法であって、ビデオデコーダが、現在コーディングユニット(CU)の対応するブロックの予測ユニット(PU)のコード化ブロックフラグ(CBF)を参照せずに、ビットストリームが、残差予測が現在CUに対して使われるかどうかを示す残差予測フラグを含むかどうか決定することが可能であるようにビットストリームを生成することを備える方法。
[0293] 例13:例12の方法であって、ビットストリームを生成することは、ビデオデコーダが、現在CUの予測モードがイントラモードであるかどうかに少なくとも部分的に基づいて、ビットストリームが残差予測フラグを含むかどうか決定することが可能であるようにビットストリームを生成することを備える。
[0294] 例14:例12の方法であって、ビットストリームを生成することは、ビデオデコーダが、現在CUの1つまたは複数のPUが時間参照ピクチャを使用するかどうか決定することなく、ビットストリームが残差予測フラグを含むかどうか決定することが可能であるようにビットストリームを生成することを備える。
[0295] 例15:例12の方法であって、ビットストリームを生成することは、ビデオデコーダが、現在CUについて視差ベクトルが見つかったかどうかに少なくとも部分的に基づいて、ビットストリームが残差予測フラグを含むかどうか決定することが可能であるようにビットストリームを生成することを備える。
[0296] 例16:例12の方法であって、現在CUのPUがインターコーディングされず、現在CUのコード化ブロックフラグの値が0に等しくない場合、ビットストリームは、残差予測フラグを含まない。
[0297] 例17:例12の方法であって、現在CUの視差ベクトルが利用不可能な場合、ビットストリームは残差予測フラグを含まない。
[0298] 例18:例12の方法であって、現在CUのPUのうちのどれも、時間参照ピクチャを用いてコーディングされるのではない場合、ビットストリームは残差予測フラグを含まない。
[0299] 例19:ビデオデータを復号する方法であって、現在コーディングユニット(CU)のどの区分も時間的動きベクトルをもたないか、または現在CUの視差ベクトルが利用不可能なとき、重み付け因子インデックスが特定の値を有すると決定することと、重み付け因子インデックスに基づいて重み付け因子を決定することと、重み付け因子に基づいて、現在CUについての残差信号を予測するかどうか決定することとを備える方法。
[0300] 例20:ビデオデータを符号化するための方法であって、ビデオデコーダが例19の方法を実行することが可能であるようにビットストリームを生成することを備える方法。
[0301] 例21:ビデオデータを復号する方法であって、現在コーディングユニット(CU)が、現在CUと同じビューからの少なくとも1つの参照ピクチャから予測されるかどうかに少なくとも部分的に基づいて、ビットストリームから、重み付け因子インデックスを示すシンタックス要素をパーシングするかどうか決定することと、現在CUの視差ベクトルが利用不可能な場合、重み付け因子インデックスが特定の値に等しいと決定することと、重み付け因子インデックスに基づいて重み付け因子を決定することと、重み付け因子に基づいて、現在CUについての残差信号を予測するかどうか決定することとを備える方法。
[0302] 例22:ビデオデータを符号化する方法であって、ビデオデコーダが例21の方法を実行することが可能であるようにビットストリームを生成することを備える方法。
[0303] 例23:ビデオデータを復号する方法であって、視差ベクトルが現在コーディングユニット(CU)について見つかったかどうかに少なくとも部分的に基づいて、ビットストリームから、重み付け因子インデックスを示すシンタックス要素をパーシングするかどうか決定することと、現在CUのどの区分も時間的動きベクトルをもたない場合、重み付け因子インデックスが特定の値に等しいと決定することと、重み付け因子インデックスに基づいて重み付け因子を決定することと、重み付け因子に基づいて、現在CUについての残差信号を予測するかどうか決定することとを備える方法。
[0304] 例24:実行されると、ビデオ復号デバイスに、ビデオコーディング規格に準拠するビットストリームから、現在コーディングユニット(CU)についての重み付け因子インデックスを取得させ、ここにおいて、ビットストリームはビデオデータの符号化表現を備え、ビデオコーディング規格は、現在CUのどの区分も時間的動きベクトルをもたないか、または現在CUの視差ベクトルが利用不可能なとき、現在CUについての重み付け因子インデックスが特定の値を有することを要求する制約に、現在CUについての重み付け因子インデックスを従わせ、ここにおいて、特定の値は、現在CUに関して残差予測が適用されないことを示す、現在CUについての重み付け因子インデックスに基づいて、重み付け因子を決定させ、重み付け因子に基づいて、現在CUについての残差信号を予測するかどうか決定させる命令を記憶した非一時的コンピュータ可読データ記憶媒体。
[0305] 例25:ビデオコーディング規格に準拠するビットストリームを生成し、ビットストリームはビデオデータのコード化表現を備え、ここにおいて、ビットストリームは、現在コーディングユニット(CU)についての重み付け因子インデックスを示すデータを含み、ビデオコーディング規格は、現在CUのどの区分も時間的動きベクトルをもたないか、または現在CUの視差ベクトルが利用不可能なとき、現在CUについての重み付け因子インデックスが特定の値を有することを要求し、特定の値を有する現在CUについての重み付け因子インデックスは、現在CUに関して残差予測が適用されないことを示す、ビットストリームを出力するように構成された1つまたは複数のプロセッサを備えるビデオ符号化デバイス。
[0306] 例26:ビデオコーディング規格に準拠するビットストリームを生成するための手段と、ビットストリームはビデオデータのコード化表現を備え、ここにおいて、ビットストリームは、現在コーディングユニット(CU)についての重み付け因子インデックスを示すデータを含み、ビデオコーディング規格は、現在CUのどの区分も時間的動きベクトルをもたないか、または現在CUの視差ベクトルが利用不可能なとき、現在CUについての重み付け因子インデックスが特定の値を有することを要求し、特定の値を有する現在CUについての重み付け因子インデックスは、現在CUに関して残差予測が適用されないことを示す、ビットストリームを出力するための手段とを備えるビデオ符号化デバイス。
[0307] 例27:実行されると、ビデオ復号デバイスに、ビデオコーディング規格に準拠するビットストリームを生成させ、ビットストリームはビデオデータのコード化表現を備え、ここにおいて、ビットストリームは、現在コーディングユニット(CU)についての重み付け因子インデックスを示すデータを含み、ビデオコーディング規格は、現在CUのどの区分も時間的動きベクトルをもたないか、または現在CUの視差ベクトルが利用不可能なとき、現在CUについての重み付け因子インデックスが特定の値を有することを要求し、特定の値を有する現在CUについての重み付け因子インデックスは、現在CUに関して残差予測が適用されないことを示す、ビットストリームを出力させる命令を記憶した非一時的コンピュータ可読データ記憶媒体。
[0308] 上記例のうちのどれのいかなる詳細も、本開示と矛盾せずに、他の例と組み合わせることができる。1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアに実装される場合、機能は、1つもしくは複数の命令もしくはコードとしてコンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行することができる。コンピュータ可読媒体は、たとえば、データ記憶媒体などの有形媒体、または、たとえば通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体に対応する、コンピュータ可読記憶媒体を含むことができる。このようにして、コンピュータ可読媒体は、一般に、(1)非一時的である有形コンピュータ可読記憶媒体、または、(2)信号もしくは搬送波などの通信媒体に対応することができる。データ記憶媒体は、本開示に記載された技法を実装するための命令、コードおよび/またはデータ構造を取り出すために、1つもしくは複数のコンピュータ、または1つもしくは複数のプロセッサによってアクセスできる任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含むことができる。
[0309] 限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMまたは他の光ディスクストレージ、磁気ディスクストレージ、もしくは他の磁気ストレージデバイス、フラッシュメモリ、または、命令もしくはデータ構造の形態の所望のプログラムコードを記憶するために使用されコンピュータによってアクセスされ得る、任意の他の媒体を備え得る。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびブルーレイ(登録商標)ディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲内に含まれるべきである。
[0310] 命令は、1つもしくは複数のデジタル信号プロセッサ(DSP)などの1つもしくは複数のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の等価な集積回路もしくはディスクリート論理回路によって実行され得る。したがって、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書に記載された技法の実施に適した任意の他の構造のいずれかを指す場合がある。さらに、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成された専用のハードウェアおよび/もしくはソフトウェアモジュール内に提供され得、または複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素中で十分に実装され得る。
[0311] 本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示する技法を実行するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットについて説明したが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、上で説明されたように、様々なユニットが、適切なソフトウェアおよび/またはファームウェアとともに、上で説明された1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わされてもよく、または相互動作可能なハードウェアユニットの集合によって与えられてもよい。
[0312] 様々な例について説明してきた。これらおよび他の例は、以下の特許請求の範囲内である。