[0037]本開示は、3D−HEVCのための高度残差予測(ARP)に関係する技法を導入する。本開示の技法は、ビデオエンコーダまたはビデオデコーダなど、ビデオコーダによって実施され得る。ARPでは、ビデオコーダは、すでにコード化された画像間の差に基づいて、残差予測子を生成する。ビデオコーダは、次いで、最終予測ブロックを生成するために、元の予測ブロックにこの残差予測子を加算する。残差予測子を含む最終予測ブロックは、元の予測子よりも、潜在的により良い予測子である、すなわち、予測されているブロックにより厳密に似ている。
[0038]概して、本開示では時間ARPおよびインタービューARPと呼ばれる、2つのタイプのARPがある。時間ARPでは、第1のビュー中の現在のブロックについて、ビデオコーダは、現在のブロックに関するディスパリティベクトルを使用して、第2のビュー中の対応するブロックの位置を特定する(locates)。本開示では、第2のビュー中のこの対応するブロックはベースブロックと呼ばれる。現在のブロックの時間動きベクトルを使用して、ビデオコーダは、第1のビューの異なるピクチャ中の現在のブロックの参照ブロックの位置を特定する。本開示では、このブロックは現在の参照ブロックと呼ばれる。現在の参照ブロックを識別するために使用される同じ時間動きベクトルを使用して、ビデオコーダは、第2のビューのピクチャ中のベースブロックの参照ブロックの位置を特定する。本開示では、このブロックは、参照ベースブロックと呼ばれる。ベースブロックとベース参照ブロックとの間の差は、残差予測子として計算され得る。ビデオコーダは、次いで、最終予測子を決定するために、現在の参照ブロックに、場合によっては(possibly)重み付け係数(a weighting factor)を用いて、残差予測子を加算する。
[0039]インタービューARPでは、第1のビュー中の現在のブロックについて、ビデオコーダは、現在のブロックに関するディスパリティ動きベクトルを使用して、第2のビュー中の対応するブロックの位置を特定する。ベースブロックの時間動きベクトルを使用して、ビデオコーダは、第2のビューの異なるピクチャ中のベースブロックの参照ベースブロックの位置を特定する。ベース参照ブロックを識別するために使用される同じ時間動きベクトルを使用して、ビデオコーダは、第1のビューのピクチャ中の現在のブロックの現在の参照ブロックを識別する。ビデオコーダは、現在の参照ブロックとベース参照ブロックとの間の差を計算し、計算された差を残差予測子として使用した。ビデオコーダは、次いで、最終予測子を決定するために、ベースブロックに、場合によっては重み付け係数を用いて、この残差予測子を加算する。
[0040]ビデオコーダがARPを使用して双方向予測されたブロックをコーディングするとき、ビデオコーダは2つの予測方向に関する追加の参照ブロックを査定し(assess)なければならず、全体的な複雑さを増加させる。ビデオコーダがARPを使用してブロックをコーディングするとき、ARPは、ブロックのクロマ成分とブロックのルーマ成分の両方をコーディングするために使用され得、全体的な複雑さをさらに増加させる。本開示は、知られているARP技法にいくつかの潜在的簡略化を導入する。一例では、本開示の技法によれば、双方向予測されたブロックについてインタービューARPを実施するとき、ビデオコーダは、第1の予測方向に関するARPを実施することの一部として、第1の対応するブロックに関する動きベクトルを決定し、第2の予測方向に関するARPを実施するとき、その決定された動きベクトルを再利用し得る。別の例によれば、双方向予測されたブロックについて、ビデオコーダは、ブロックのクロマ成分については一方向のみでARPを適用するが、ブロックのルーマ成分については二方向でARPを適用し得る。別の例によれば、ビデオコーダは、ブロックサイズに基づいて、クロマ成分にARPを選択的に適用し得る。これらの簡略化、ならびに本開示に含まれる他の技法は、全体的なコーディング複雑さを低減し得る。
[0041]図1は、本開示で説明するARP技法を実施するように構成され得る例示的なビデオ符号化および復号システム10を示すブロック図である。図1に示すように、システム10は、宛先デバイス14によって後で復号されるべき符号化されたビデオデータを生成するソースデバイス12を含む。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲のデバイスのいずれかを備え得る。場合によっては、ソースデバイス12および宛先デバイス14は、ワイヤレス通信のために装備され得る。
[0042]システム10は、異なるビデオコーディング規格、プロプライエタリ規格、またはマルチビューコーディングの任意の他の方法に従って動作し得る。下記は、ビデオコーディング規格の数例を説明しており、限定と見なされるべきではない。ビデオコーディング規格は、ITU−T H.261と、ISO/IEC MPEG−1 Visualと、ITU−T H.262またはISO/IEC MPEG−2 Visualと、ITU−T H.263と、ISO/IEC MPEG−4 Visualと、それのスケーラブルビデオコーディング(SVC)およびマルチビュービデオコーディング(MVC)拡張を含む(ISO/IEC MPEG−4 AVCとしても知られる)ITU−T H.264とを含む。MVCの最新のジョイントドラフトは、その内容全体が参照により本明細書に組み込まれる「Advanced video coding for generic audiovisual services」、ITU−T勧告H.264、2010年3月に記載されている。MVCの別のジョイントドラフトは、その内容全体が参照により本明細書に組み込まれる「Advanced video coding for generic audiovisual services」、ITU−T勧告H.264、2011年6月に記載されている。いくつかの追加のビデオコーディング規格は、AVCに基づく、MVC+Dおよび3D AVCを含む。さらに、新しいビデオコーディング規格、すなわち、高効率ビデオコーディング(HEVC)が、ITU−Tビデオコーディングエキスパートグループ(VCEG:Video Coding Experts Group)とISO/IECモーションピクチャエキスパートグループ(MPEG:Motion Picture Experts Group)とのジョイントコラボレーションチームオンビデオコーディング(JCT−VC:Joint Collaboration Team on Video Coding)によって開発されている。
[0043]単に説明の目的で、本開示で説明する技法は、3D−AVCなど、H.264規格よる例を用いて説明される。ただし、本開示で説明する技法は、これらの例示的な規格に限定されると見なされるべきではなく、マルチビューコーディングもしくは3Dビデオコーディングのための他のビデオコーディング規格(たとえば、3D−HEVC)、または必ずしも特定のビデオコーディング規格に基づくとは限らないマルチビューコーディングもしくは3Dビデオコーディングに関連する技法に拡張可能であり得る。たとえば、本開示で説明する技法は、マルチビューコーディングのためのビデオエンコーダ/デコーダ(コーデック)によって実装され、ここでマルチビューコーディングは、2つまたはそれ以上のビューのコーディングを含む。
[0044]宛先デバイス14は、リンク16を介して、復号されるべき符号化されたビデオデータを受信し得る。リンク16は、ソースデバイス12から宛先デバイス14に符号化されたビデオデータを移動することが可能な任意のタイプの媒体またはデバイスを備え得る。一例では、リンク16は、ソースデバイス12が、符号化されたビデオデータをリアルタイムで宛先デバイス14に直接送信することを可能にするための通信媒体を備え得る。符号化されたビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイス14に送信され得る。通信媒体は、無線周波数(RF)スペクトルまたは1つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワークなどのパケットベースネットワーク、またはインターネットなどのグローバルネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を可能にするために有用であり得る任意の他の機器を含み得る。
[0045]代替的に、符号化されたデータは出力インターフェース22からストレージデバイス34に出力され得る。同様に、符号化されたデータは、入力インターフェースによってストレージデバイス34からアクセスされ得る。ストレージデバイス34は、ハードドライブ、Blu−ray(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、揮発性または不揮発性メモリ、あるいは符号化されたビデオデータを記憶するための任意の他の好適なデジタル記憶媒体など、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。さらなる一例では、ストレージデバイス34は、ソースデバイス12によって生成された符号化されたビデオを保持し得るファイルサーバまたは別の中間ストレージデバイスに対応し得る。宛先デバイス14は、ストリーミングまたはダウンロードを介して、ストレージデバイス34から、記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶することと、その符号化されたビデオデータを宛先デバイス14に送信することとが可能な任意のタイプのサーバであり得る。例示的なファイルサーバは、(たとえば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS:network attached storage)デバイス、またはローカルディスクドライブを含む。宛先デバイス14は、インターネット接続を含む、任意の標準のデータ接続を通して符号化されたビデオデータにアクセスし得る。これは、ファイルサーバ上に記憶された符号化されたビデオデータにアクセスするのに好適であるワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、またはその両方の組合せを含み得る。ストレージデバイス34からの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはその両方の組合せであり得る。
[0046]ARPのための本開示の技法は、必ずしもワイヤレス適用例またはワイヤレス設定に限定されるとは限らない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信、データ記憶媒体上に記憶するためのデジタルビデオの符号化、データ記憶媒体上に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオテレフォニーなどの適用例をサポートするために、単方向または双方向ビデオ送信をサポートするように構成され得る。
[0047]図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。以下でより詳細に説明するように、ビデオエンコーダ20は、本開示で説明するARP技法を実施するように構成され得る。場合によっては、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を含み得る。ソースデバイス12において、ビデオソース18は、ビデオキャプチャデバイス、たとえばビデオカメラ、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェース、および/またはソースビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステムなどのソース、あるいはそのようなソースの組合せを含み得る。一例として、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラフォンまたはビデオ電話を形成し得る。ただし、本開示で説明する技法は、概してビデオコーディングに適用可能であり得、ワイヤレスおよび/またはワイヤード適用例に適用され得る。
[0048]キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ生成されたビデオは、ビデオエンコーダ20によって符号化され得る。符号化されたビデオデータは、ソースデバイス12の出力インターフェース22を介して宛先デバイス14に直接送信され得る。符号化されたビデオデータは、さらに(または代替的に)、復号および/または再生のための宛先デバイス14または他のデバイスによる後のアクセスのためにストレージデバイス34上に記憶され得る。
[0049]宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。以下でより詳細に説明するように、ビデオデコーダ30は、本開示で説明するARP技法を実施するように構成され得る。場合によっては、入力インターフェース28は、受信機および/またはモデムを含み得る。宛先デバイス14の入力インターフェース28は、リンク16を介して符号化されたビデオデータを受信する。リンク16を介して通信され、またはストレージデバイス34上に与えられた符号化されたビデオデータは、ビデオデータを復号する際に、ビデオデコーダ30などのビデオデコーダが使用するためのビデオエンコーダ20によって生成される様々なシンタックス要素を含み得る。そのようなシンタックス要素は、通信媒体上で送信されるか、記憶媒体上に記憶されるか、またはファイルサーバに記憶される符号化されたビデオデータとともに含まれ得る。
[0050]ディスプレイデバイス32は、宛先デバイス14と一体化されるかまたはその外部にあり得る。いくつかの例では、宛先デバイス14は、一体型ディスプレイデバイスを含み、さらに外部ディスプレイデバイスとインターフェースするように構成され得る。他の例では、宛先デバイス14はディスプレイデバイスであり得る。概して、ディスプレイデバイス32は、復号されたビデオデータをユーザに表示し、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。
[0051]図1には示されていないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、オーディオエンコーダおよびデコーダと統合され得、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するために、適切なMUX−DEMUXユニット、または他のハードウェアおよびソフトウェアを含み得る。適用可能な場合、いくつかの例では、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
[0052]ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダ回路のいずれか、あるいはそれらの任意の組合せとして実装され得る。たとえば、本開示で説明する技法は、装置またはデバイスの観点から説明されることがある。一例として、装置またはデバイスは、ビデオデコーダ30(たとえば、ワイヤレス通信デバイスの一部としての宛先デバイス14)を含み得、ビデオデコーダ30は、本開示で説明する技法を実装する(たとえば、本開示で説明する技法に従ってビデオデータを復号する)ように構成された1つまたは複数のプロセッサを含み得る。別の例として、装置またはデバイスは、ビデオデコーダ30を含むマイクロプロセッサまたは集積回路(IC)を含み得、マイクロプロセッサまたはICは、宛先デバイス14または別のタイプのデバイスの一部であり得る。同じことが、ビデオエンコーダ20に当てはまり得る(すなわち、ソースデバイス12のような装置またはデバイス、および/あるいはマイクロコントローラまたはICは、ビデオエンコーダ20を含み、ここで、ビデオエンコーダ20は、本開示で説明する技法に従ってビデオデータを符号化するように構成される)。
[0053]本技法が部分的にソフトウェアで実装されるとき、デバイスは、ソフトウェアのための命令を好適な非一時的コンピュータ可読媒体内に記憶し、本開示の技法を実施するために1つまたは複数のプロセッサを使用してハードウェアでその命令を実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも、それぞれのデバイスにおいて複合エンコーダ/デコーダ(コーデック)の一部として統合され得る。
[0054]ビデオシーケンスは、一般に、ビューからの一連のビデオピクチャを含む。ピクチャグループ(GOP:group of pictures)は、概して、一連の1つまたは複数のビデオピクチャを備える。GOPは、GOP中に含まれるいくつかのピクチャを記述するシンタックスデータを、GOPのヘッダ中、GOPの1つまたは複数のピクチャのヘッダ中、または他の場所に含み得る。各ピクチャは、それぞれのピクチャのための符号化モードを記述するピクチャシンタックスデータを含み得る。ビデオエンコーダ20は、一般に、ビデオデータを符号化するために、個々のビデオピクチャ内のビデオブロックに作用する。ビデオブロックは、H.264規格において規定されているように、マクロブロック、マクロブロックのパーティション、および場合によってはパーティションのサブブロックに対応し得る。ビデオブロックは、固定サイズまたは変動サイズを有し得、指定されたコーディング規格に応じてサイズが異なり得る。各ビデオピクチャは複数のスライスを含み得る。各スライスは複数のブロックを含み得る。
[0055]一例として、ITU−T H.264規格は、ルーマ成分については16×16、8×8、または4×4、およびクロマ成分については8×8など、様々なブロックサイズのイントラ予測をサポートし、ならびにルーマ成分については16×16、16×8、8×16、8×8、8×4、4×8および4×4、およびクロマ成分については対応するスケーリングされたサイズなど、様々なブロックサイズのインター予測をサポートする。本開示では、「N×N(NxN)」と「N×N(N by N)」は、垂直寸法および水平寸法に関するブロックのピクセル寸法(pixel dimensions)(たとえば、16×16(16x16)ピクセルまたは16×16(16 by 16)ピクセル)を指すために互換的に使用され得る。概して、16×16ブロックは、垂直方向に16ピクセルを有し(y=16)、水平方向に16ピクセルを有する(x=16)。同様に、N×Nブロックは、概して、垂直方向にNピクセルを有し、水平方向にNピクセルを有し、ここで、Nは非負整数値を表す。ブロック中のピクセルは行および列に配列され得る。さらに、ブロックは、必ずしも、水平方向に垂直方向と同じ数のピクセルを有する必要はない。たとえば、ブロックはN×Mピクセルを備え得、ここで、Mは必ずしもNに等しいとは限らない。
[0056]ブロックがイントラモード符号化(たとえば、イントラ予測)されるとき、ブロックは、ブロックのためのイントラ予測モードを記述するデータを含み得る。別の例として、ブロックがインターモード符号化(たとえば、インター予測)されるとき、ブロックは、ブロックに関する動きベクトルを定義する情報を含み得る。この動きベクトルは、同じビュー中の参照ピクチャ(たとえば、時間動きベクトル)を指すか、または別のビュー中の参照ピクチャ(たとえば、ディスパリティ動きベクトル)を指す。ブロックに関する動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分と、動きベクトルの垂直成分と、動きベクトルの解像度(a resolution)(たとえば、1/4ピクセル精度または1/8ピクセル精度(one-quarter pixel precision or one-eighth pixel precision))とを記述する。さらに、インター予測されるとき、ブロックは、動きベクトルが指す参照ピクチャなどの参照インデックス情報、および/または動きベクトルのための参照ピクチャリスト(たとえば、RefPicList0もしくはRefPicList1)を含み得る。
[0057]H.264規格では、イントラ予測またはインター予測コーディングに続いて、ビデオエンコーダ20はマクロブロックに関する残差データを計算する。残差データは、符号化されていないピクチャのピクセルと、H.264におけるマクロブロックに関する予測値との間のピクセル差分に対応し得る。
[0058]いくつかの例では、変換係数を生成するための任意の変換に続いて、ビデオエンコーダ20は変換係数の量子化を実施する。量子化は、一般に、係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を行うプロセスを指す。量子化プロセスは、係数の一部または全部に関連するビット深度(bit depth)を低減する。たとえば、nビット値は、量子化中にmビット値に切り捨てられ(rounded down)、ここで、nはmよりも大きい。
[0059]いくつかの例では、ビデオエンコーダ20は、エントロピー符号化され得るシリアル化されたベクトルを生成するために、量子化された変換係数を走査するためのあらかじめ定義された走査順序を利用する。他の例では、ビデオエンコーダ20は適応型走査を実施する。1次元ベクトルを形成するために量子化された変換係数を走査した後、いくつかの例では、ビデオエンコーダ20は、いくつかの例として、コンテキスト適応型可変長コーディング(CAVLC:context adaptive variable length coding)、コンテキスト適応型バイナリ算術コーディング(CABAC:context adaptive binary arithmetic coding)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)、確率間隔区分エントロピー(PIPE:Probability Interval Partitioning Entropy)コーディングまたは別のエントロピー符号化方法に従って、1次元ベクトルをエントロピー符号化する。ビデオエンコーダ20はまた、ビデオデータを復号する際にビデオデコーダ30が使用するための符号化されたビデオデータに関連するシンタックス要素をエントロピー符号化する。
[0060]CABACを実施するために、ビデオエンコーダ20は、コンテキストモデル内のコンテキストを、送信されるべきシンボルに割り当て得る。コンテキストは、たとえば、シンボルの隣接値(neighboring values)が非0であるか否かに関係し得る。CAVLCを実施するために、ビデオエンコーダ20は、送信されるべきシンボルのための可変長コードを選択し得る。VLC中のコードワードは、比較的より短いコードが優勢シンボル(more probable symbols)に対応し、より長いコードが劣勢シンボル(less probable symbols)に対応するように構成され得る。このようにして、VLCの使用は、たとえば、送信されるべき各シンボルのための等長コードワードを使用することに勝るビット節約を達成し得る。確率決定は、シンボルに割り当てられたコンテキストに基づき得る。
[0061]ビデオデコーダ30は、ビデオエンコーダ20の技法の逆を実装する。たとえば、ビデオデコーダ30は、符号化されたビデオビットストリームを復号し、逆量子化および逆変換によって残差ブロックを決定する。ビデオデコーダ30は、ピクチャ内のブロックに関するピクセル値を決定するために、前に復号されたピクチャのブロックと残差ブロックとを合計する。
[0062]本開示で説明するいくつかの技法は、ビデオエンコーダ20とビデオデコーダ30の両方によって実施され得る。一例として、ビデオエンコーダ20は、どのようにビデオデータのブロックを符号化すべきかを決定することの一部としてARPを実施し得、および/またはビデオエンコーダにおける復号ループの一部としてARPを実施し得る。ビデオデコーダ30は、ビデオブロックを復号することの一部として、ビデオエンコーダ20によって実施されるものと同じARP技法を実施し得る。本開示は、時々、本開示で説明するいくつかのARP技法を実施するビデオデコーダ30を指し得る。ただし、別段に記載されていない限り、そのような技法は、ビデオエンコーダ20によっても実施され得ることを理解されたい。
[0063]上記で説明したように、本開示で説明する技法は3dビデオコーディングを対象とする。本技法をよりよく理解するために、下記は、いくつかのH.264/AVCコーディング技法、H.264/MVC拡張および高効率ビデオコーディング(HEVC)規格の観点からのマルチビュービデオコーディング、ならびに、3D−AVC技法を説明する。
[0064]H.264/アドバンスビデオコーディング(AVC)の場合、ビデオ符号化または復号(たとえば、コーディング)はマクロブロック上で実装され、ここで、マクロブロックは、インター予測またはイントラ予測(すなわち、インター予測符号化または復号あるいはイントラ予測符号化または復号)されるフレームの一部を表す。たとえば、H.264/AVCでは、各インターマクロブロック(MB)(たとえば、インター予測されたマクロブロック)は、4つの異なる方法、すなわち、1つの16×16MBパーティション、2つの16×8MBパーティション、2つの8×16MBパーティション、または4つの8×8MBパーティションに区分され得る。1つのMBにおける異なるMBパーティションは、各方向(すなわち、RefPicList0またはRefPicList1)について異なる基準インデックス値を有し得る。MBが複数の(1よりも多い)MBパーティションに区分されないとき、それは、各方向に、MBパーティション全体のための1つの動きベクトルのみを有する。
[0065]ビデオコーディング(符号化または復号)の一部として、ビデオコーダ20/30は、RefPicList0およびRefPicList1と呼ばれる、1つまたは2つの参照ピクチャリストを構成するように構成され得る。(1つまたは複数の)参照ピクチャリストは、フレームまたはスライスのマクロブロックをインター予測するために使用され得る参照ピクチャを識別する。たとえば、ビデオエンコーダ20は、参照インデックスおよび参照ピクチャリスト識別子をシグナリングし得る。ビデオデコーダ30は、参照インデックスと参照ピクチャリスト識別子とを受信し、参照インデックスと参照ピクチャリスト識別子とから、現在のマクロブロックをインター予測復号するために使用されるべきである参照ピクチャを決定し得る。
[0066]MBが4つの8×8MBパーティションに区分されるとき、各8×8MBパーティションはサブブロックにさらに区分され得る。8×8MBパーティションから、サブブロック、すなわち、1つの8×8サブブロック、2つの8×4サブブロック、2つの4×8サブブロック、または4つの4×4サブブロックを得るための、4つの異なる方法がある。各サブブロックは、各方向において異なる動きベクトルを有することができるが、各方向について同じ参照ピクチャインデックスを共有する。8×8MBパーティションがサブブロックに区分される様式は、サブブロックパーティションと称される。
[0067]本開示は、概して、ビデオデータの任意のブロックを指すために、ブロックという用語を使用する。たとえば、H.264コーディングおよびそれの拡張のコンテキストにおいて、ブロックは、マクロブロック、マクロブロックパーティション、サブブロック、または任意の他のタイプのブロックのいずれかを指し得る。HEVCおよびそれの拡張のコンテキストにおいて、ブロックは、PU、TU、CU、または任意の他のタイプのブロックのいずれかを指し得る。本開示で使用するサブブロックは、概して、より大きいブロックの任意の部分を指す。サブブロックはまた、それ自体が単にブロックと呼ばれ得る。
[0068]マルチビュービデオコーディングの場合、複数の異なるビデオコーディング規格がある。混乱を回避するために、本開示が一般的にマルチビュービデオコーディングを説明するとき、本開示は「マルチビュービデオコーディング」という句を使用する。概して、マルチビュービデオコーディングでは、ベースビューおよび1つまたは複数の非ベースビューまたは依存ビュー(one or more non-base or dependent views)がある。ベースビューは、依存ビューのいずれかと無関係に十分に復号可能である(すなわち、ベースビューは、時間動きベクトルを用いてインター予測されるにすぎない)。これは、マルチビュービデオコーディングのために構成されないコーデックが、完全に復号可能である少なくとも1つのビューをなお受信することを可能にする(すなわち、ベースビューが抽出され、他のビューが破棄され得、マルチビュービデオコーディングのために構成されないデコーダが、3Dエクスペリエンスがないにもかかわらず、ビデオコンテンツをなお復号することを可能にする)。1つまたは複数の依存ビューは、ベースビューに関して、または別の依存ビューに関してインター予測され(すなわち、ディスパリティ補償予測され)、あるいは同じビュー中の他のピクチャに関してインター予測され(すなわち、動き補償予測され)得る。
[0069]「マルチビュービデオコーディング」が一般的に使用されるが、頭字語MVCはH.264/AVCの拡張に関連する。したがって、本開示が頭文字MVCを使用するとき、本開示は、特にH.264/AVCビデオコーディング規格の拡張を指している。H.264/AVCのMVC拡張は、時間動きベクトルに加えて、別のタイプの動きベクトルとして、ディスパリティ動きベクトルに依拠する。MVCプラス深度(MVC+D)と呼ばれる別のビデオコーディング規格も、JCT−3VおよびMPEGによって開発されている。MVC+Dは、テクスチャと深度の両方についてMVCの低レベルコーディングツールと同じ低レベルコーディングツールを適用し、深度の復号はテクスチャの復号に依存せず、その逆も同様である。たとえば、MVCでは、フレームは、テクスチャビューコンポーネントまたは単にテクスチャと呼ばれる、1つのビューコンポーネントのみによって表される。MVC+Dでは、2つのビューコンポーネント、すなわち、テクスチャビューコンポーネントおよび深度ビューコンポーネント、または単にテクスチャおよび深度がある。たとえば、MVC+Dでは、各ビューはテクスチャビューおよび深度ビューを含み、ここで、ビューは複数のビューコンポーネントを含み、テクスチャビューは複数のテクスチャビューコンポーネントを含み、深度ビューは複数の深度ビューコンポーネントを含む。
[0070]各テクスチャビューコンポーネントは、ビューのビューコンポーネントを形成するために、深度ビューコンポーネントに関連する。深度ビューコンポーネントは、テクスチャビューコンポーネントにおける対象(object)の相対深度を表す。MVC+Dでは、深度ビューコンポーネントおよびテクスチャビューコンポーネントは、別々に復号可能である。たとえば、ビデオデコーダ30は、第1のコーデックがテクスチャビューコンポーネントを復号し、第2のコーデックが深度ビューコンポーネントを復号する、MVCコーデックの2つのインスタンスを実装し得る。これらの2つのコーデックは、テクスチャビューコンポーネントおよび深度ビューコンポーネントが別々に符号化されるので、互いから独立して実行することができる。
[0071]MVC+Dでは、深度ビューコンポーネントは、常に、関連する(たとえば、対応する)テクスチャビューコンポーネントの直後にきている。このようにして、MVC+Dはテクスチャ優先コーディング(texture-first coding)をサポートし、ここで、テクスチャビューコンポーネントは深度ビューコンポーネントより前に復号される。
[0072]テクスチャビューコンポーネントおよびそれの関連する(たとえば、対応する)深度ビューコンポーネントは、同じピクチャ順序カウント(POC)値およびview_idを含み得る(すなわち、テクスチャビューコンポーネントおよびそれの関連する深度ビューコンポーネントのPOC値およびview_idは同じである)。POC値は、テクスチャビューコンポーネントの表示順序を示し、view_idは、テクスチャビューコンポーネントおよび深度ビューコンポーネントが属するビューを示す。
[0073]図2に、一般的なMVC復号順序(すなわちビットストリーム順序)を示す。復号順序アレンジメント(decoding order arrangement)は時間優先コーディング(time-first coding)と呼ばれる。アクセスユニットの復号順序は出力または表示順序と同じでないことがあることに留意されたい。図2では、S0〜S7はそれぞれ、マルチビュービデオの異なるビューを指す。T0〜T8はそれぞれ、1つの出力時間インスタンスを表す。アクセスユニットは、1つの出力時間インスタンスについてのすべてのビューのコード化されたピクチャを含み得る。たとえば、第1のアクセスユニットは時間インスタンスT0についてのビューS0〜S7のすべてを含み得、第2のアクセスユニットは時間インスタンスT1についてのビューS0〜S7のすべてを含み得、以下同様である。
[0074]簡潔のために、本開示は以下の定義を使用し得る。
ビューコンポーネント:単一のアクセスユニット中のビューのコード化された表現。ビューがコード化されたテクスチャ表現とコード化された深度表現の両方を含むとき、ビューコンポーネントは、テクスチャビューコンポーネントと深度ビューコンポーネントとを含み得る。
テクスチャビューコンポーネント:単一のアクセスユニット中のビューのテクスチャのコード化された表現。
深度ビューコンポーネント:単一のアクセスユニット中のビューの深度のコード化された表現。
[0075]上記で説明したように、本開示のコンテキストでは、ビューコンポーネント、テクスチャビューコンポーネント、および深度バイドコンポーネントは一般にレイヤと呼ばれることがある。図2では、ビューの各々はピクチャのセットを含む。たとえば、ビューS0はピクチャ0、8、16、24、32、40、48、56、および64のセットを含み、ビューS1はピクチャ1、9、17、25、33、41、49、57、および65のセットを含み、以下同様である。各セットは2つのピクチャを含み、一方のピクチャはテクスチャビューコンポーネントと呼ばれ、他方のピクチャは深度ビューコンポーネントと呼ばれる。ビューのピクチャのセット内のテクスチャビューコンポーネントおよび深度ビューコンポーネントは、互いに対応すると見なされ得る。たとえば、ビューのピクチャのセット内のテクスチャビューコンポーネントは、そのビューのピクチャのセット内の深度ビューコンポーネントに対応すると見なされ、その逆も同様である(すなわち、深度ビューコンポーネントはセット中のそれのテクスチャビューコンポーネントに対応し、その逆も同様である)。本開示で使用する、深度ビューコンポーネントに対応するテクスチャビューコンポーネントは、テクスチャビューコンポーネントおよび深度ビューコンポーネントが単一のアクセスユニットの同じビューの一部であると見なされ得る。
[0076]テクスチャビューコンポーネントは、表示される実際の画像コンテンツを含む。たとえば、テクスチャビューコンポーネントは、ルーマ(Y)成分と、クロマ(CbおよびCr)成分とを含み得る。深度ビューコンポーネントは、それの対応するテクスチャビューコンポーネント中のピクセルの相対深度を示し得る。1つの例示的なアナロジー(analogy)として、深度ビューコンポーネントは、ルーマ値のみを含むグレースケール画像のようである。言い換えれば、深度ビューコンポーネントは、画像コンテンツを搬送しないことがあるが、テクスチャビューコンポーネント中のピクセルの相対深度の測度(measure)を与え得る。
[0077]たとえば、深度ビューコンポーネント中の純白のピクセルは、対応するテクスチャビューコンポーネント中のそれの対応する1つまたは複数のピクセルが閲覧者から見てより近いことを示し、深度ビューコンポーネント中の純黒のピクセルは、対応するテクスチャビューコンポーネント中のそれの対応する1つまたは複数のピクセルが閲覧者から見てより遠いことを示す。黒と白との間にあるグレーの様々な濃淡(various shades)は、様々な深度レベルを示す。たとえば、深度ビューコンポーネント中の濃いグレーのピクセルは、テクスチャビューコンポーネント中のそれの対応するピクセルが、深度ビューコンポーネント中のより薄いグレーのピクセルよりも遠いことを示す。ピクセルの深度を識別するためにグレースケールのみが必要とされるので、深度ビューコンポーネントは、深度ビューコンポーネント用の色値(color values)がいかなる目的をも果たさないことがあるので、クロマ成分を含む必要がない。上記の説明は、深度画像をテクスチャ画像に関係付ける目的のためのアナロジーであるものとする。深度画像中の深度値は、実際にはグレーの濃淡を表すものではなく、実際には、8ビットまたは他のビットサイズの深度値を表す。
[0078]深度を識別するためにルーマ値(たとえば、輝度値(intensity values))のみを使用する深度ビューコンポーネントは説明のために与えられ、限定するものと見なされるべきではない。他の例では、テクスチャビューコンポーネント中のピクセルの相対深度を示すために任意の技法が利用され得る。
[0079]図3は、マルチビュービデオコーディングのための(各ビュー内のインターピクチャ予測と、ビュー間のインタービュー予測の両方を含む)一般的なMVC予測構造を示す。予測方向は矢印によって示され、矢印の終点のオブジェクトは、予測参照として矢印の始点のオブジェクトを使用する。MVCでは、H.264/AVC動き補償のシンタックスを使用するが、異なるビュー中のピクチャが参照ピクチャとして使用されることを可能にするディスパリティ動き補償によって、インタービュー予測がサポートされる。
[0080]図3の例では、(ビューID「S0」〜「S7」を有する)8つのビューが示され、12個の時間ロケーション(「T0」〜「T11」)がビューごとに示されている。すなわち、図3中の各行はビューに対応し、各列は時間ロケーションを示す。
[0081]MVCがH.264/AVCデコーダによって復号可能であるいわゆるベースビューを有し、また、ステレオビューペアがMVCによってサポートされ得るが、MVCの利点は、それが、3Dビデオ入力として3つ以上のビューを使用し、複数のビューによって表されるこの3Dビデオを復号する例をサポートすることができることである。MVCデコーダを有するクライアントのレンダラ(renderer)は、複数のビューを用いて3Dビデオコンテンツを予想し得る。
[0082]図3中のピクチャは、各行と各列との交点に示されている。H.264/AVC規格は、ビデオの一部分を表すためにフレームという用語を使用し得る。本開示は、ピクチャという用語とフレームという用語とを互換的に使用し得る。
[0083]図3中のピクチャは、対応するピクチャがイントラコーディングされる(すなわち、Iピクチャである)か、あるいは一方向に(すなわち、Pピクチャとして)または複数の方向に(すなわち、Bピクチャとして)インターコーディングされるかを指定する、文字を含むブロックを使用して示されている。概して、予測は矢印によって示され、ここで矢印の終点のピクチャは、予測参照のために矢印の始点のピクチャを使用する。たとえば、時間ロケーションT0におけるビューS2のPピクチャは、時間ロケーションT0におけるビューS0のIピクチャから予測される。
[0084]シングルビュービデオ符号化の場合と同様に、マルチビュービデオコーディングのビデオシーケンスのピクチャは、異なる時間ロケーションにおけるピクチャに関して予測的に符号化され得る。たとえば、時間ロケーションT1におけるビューS0のbピクチャは、時間ロケーションT0におけるビューS0のIピクチャからそれに向けられた矢印を有し、その矢印は、bピクチャがIピクチャから予測されることを示す。しかしながら、さらに、マルチビュービデオ符号化のコンテキストでは、ピクチャはインタービュー予測され得る。すなわち、ビューコンポーネントは、参照のために他のビュー中のビューコンポーネントを使用することができる。MVCでは、たとえば、別のビュー中のビューコンポーネントがインター予測参照であるかのように、インタービュー予測が実現される。潜在的なインタービュー参照は、シーケンスパラメータセット(SPS:Sequence Parameter Set)MVC拡張においてシグナリングされ、インター予測またはインタービュー予測参照のフレキシブルな順序付け(ordering)を可能にする参照ピクチャリスト構成プロセスによって変更され得る。インタービュー予測は、3D−HEVC(マルチビュー+深度)を含むHEVCの提案されたマルチビュー拡張の特徴でもある。
[0085]図3は、インタービュー予測の様々な例を与える。図3の例では、ビューS1のピクチャは、ビューS1の異なる時間ロケーションにおけるピクチャから予測されるものとして、ならびに同じ時間ロケーションにおけるビューS0およびS2のピクチャからインタービュー予測されるものとして示されている。たとえば、時間ロケーションT1におけるビューS1のbピクチャは、時間ロケーションT0およびT2におけるビューS1のBピクチャの各々、ならびに時間ロケーションT1におけるビューS0およびS2のbピクチャから予測される。
[0086]いくつかの例では、図3は、テクスチャビューコンポーネントを示すものと見なされ得る。たとえば、図2に示されているIピクチャ、Pピクチャ、Bピクチャ、およびbピクチャは、ビューの各々のためのテクスチャビューコンポーネントと見なされ得る。本開示で説明する技法によれば、図3に示されているテクスチャビューコンポーネントの各々について、対応する深度ビューコンポーネントがある。いくつかの例では、深度ビューコンポーネントは、対応するテクスチャビューコンポーネントについて図3に示されている様式と同様の様式で予測され得る。
[0087]2つのビューのコーディングもMVCによってサポートされ得る。MVCの利点のうちの1つは、MVCエンコーダが3Dビデオ入力として3つ以上のビューをとり得、MVCデコーダがそのようなマルチビュー表現を復号し得ることである。したがって、MVCデコーダをもつどんなレンダラも、3つ以上のビューをもつ3Dビデオコンテンツを復号し得る。
[0088]上記で説明したように、MVCでは、(いくつかの事例では、同じ時間インスタンスをもつことを意味する)同じアクセスユニット中のピクチャ間でインタービュー予測が可能になる。非ベースビューのうちの1つの中のピクチャをコーディングするとき、ピクチャが異なるビュー中にあるが同じ時間インスタンス内にある場合、そのピクチャは参照ピクチャリストに追加され得る。インタービュー予測参照ピクチャは、任意のインター予測参照ピクチャとまったく同様に、参照ピクチャリストの任意の位置に入れられ得る。図3に示されているように、ビューコンポーネントは、参照のために他のビュー中のビューコンポーネントを使用することができる。MVCでは、別のビュー中のビューコンポーネントがインター予測参照であるかのように、インタービュー予測が実現される。
[0089]MVCでは、同じアクセスユニット中の(すなわち、同じ時間インスタンスをもつ)ピクチャの間でインタービュー予測が可能になる。非ベースビューのうちの1つの中のピクチャをコーディングするとき、ピクチャが異なるビュー中にあるが同じ時間インスタンスをもつ場合、そのピクチャは参照ピクチャリストに追加され得る。インタービュー予測参照ピクチャは、任意のインター予測参照ピクチャとまったく同様に、参照ピクチャリストの任意の位置に入れられ得る。
[0090]図3に示されているように、ビューコンポーネントは、参照のために他のビュー中のビューコンポーネントを使用することができる。これはインタービュー予測と呼ばれる。MVCでは、別のビュー中のビューコンポーネントがインター予測参照であるかのように、インタービュー予測が実現される。
[0091]マルチビュービデオコーディングのコンテキストでは、2種類の動きベクトルがあり、一方は、時間参照ピクチャを指す通常動きベクトルである。対応する時間インター予測は、動き補償された予測(MCP:motion-compensated prediction)である。他方のタイプの動きベクトルは、異なるビュー中のピクチャ(すなわち、インタービュー参照ピクチャ)を指すディスパリティ動きベクトルである。対応するインター予測は、ディスパリティ補償された予測(DCP:disparity-compensated prediction)である。
[0092]ビデオデコーダ30は、複数のHEVCインターコーディングモードを使用してビデオを復号し得る。HEVC規格では、予測ユニット(PU)のために、それぞれ、マージモード(スキップはマージの特殊な場合と見なされる)および高度動きベクトル予測(AMVP)モードと称される2つのインター予測モードがある。AMVPモードまたはマージモードのいずれかでは、ビデオデコーダ30は、複数の動きベクトル予測子のための動きベクトル(MV)候補リストを維持する。現在のPUの(1つまたは複数の)動きベクトルならびにマージモードにおける参照インデックスは、MV候補リストから1つの候補をとることによって生成され得る。
[0093]MV候補リストは、たとえば、マージモードのための最高5つの候補とAMVPモードのための2つのみの候補とを含んでいる。マージ候補は、動き情報のセット、たとえば、参照ピクチャリスト(リスト0およびリスト1)と参照インデックスの両方に対応する動きベクトルを含んでいることがある。マージ候補がマージインデックスによって識別された場合、参照ピクチャは現在のブロックの予測のために使用され、ならびに、関連する動きベクトルが決定される。しかしながら、リスト0またはリスト1のいずれかからの各潜在的予測方向についてのAMVPモード下で、参照インデックスは、AMVP候補が動きベクトルのみを含んでいるので、MV候補リストへMVPインデックスとともに明示的にシグナリングされる必要がある。AMVPモードでは、選択された動きベクトルと、MVPインデックスに対応する動きベクトル予測子との間の動きベクトル差分がさらにシグナリングされる。上記でわかるように、マージ候補は動き情報のフルセットに対応し、AMVP候補は、特定の予測方向および参照インデックスのためのただ1つの動きベクトルを含んでいる。
[0094]上記で導入されるように、ビデオデコーダ30は、HEVCベース3Dビデオコーディング規格に従ってコーディングされたビデオを復号し得る。現在、VCEGおよびMPEGのジョイントコラボレーションチームオン3Dビデオコーディング(JCT−3C)は、HEVCに基づく3DV規格を開発中であり、それのために、規格化作業の一部は、HEVCに基づくマルチビュービデオコーデック(MV−HEVC)と、HEVCに基づく3Dビデオコーディング(3D−HEVC)のための別の部分との規格化を含む。3D−HEVCでは、コーディングユニット/予測ユニットレベルにおけるコーディングツールを含む新たなコーディングツールが、テクスチャビューと深度ビューの両方に関して含められ、サポートされ得る。3D−HEVCのための最新のソフトウェア3D−HTMが以下のリンクからダウンロードされ得る。
[3D−HTM version9.0r1]:
https://hevc.hhi.fraunhofer.de/svn/svn_3DVCSoftware/tags/HTM-9.0r1/
[0095]最新の参照ソフトウェア記述が以下、すなわち、Li Zhang、Gerhard Tech、Krzysztof Wegner、Sehoon Yea、「Test Model 6 of 3D-HEVC and MV-HEVC」、JCT3V−F1005、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11とのジョイントコラボレーティブチームオン3Dビデオコーディング拡張開発、第6回会議、ジュネーブ、スイス、2013年11月で入手可能である。それは、以下のリンクからダウンロードされ得る。
http://phenix.it-sudparis.eu/jct2/doc_end_user/current_document.php?id=1636
[0096]3D−HEVCの最新のワーキングドラフトが以下、すなわち、Gerhard Tech、Krzysztof Wegner、Ying Chen、Sehoon Yea、「3D-HEVC Draft Text 2」、JCT3V−F1001、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11とのジョイントコラボレーティブチームオン3Dビデオコーディング拡張開発、第6回会議、ジュネーブ、スイス、2013年11月で入手可能である。それは、以下のリンクからダウンロードされ得る。
http://phenix.it-sudparis.eu/jct2/doc_end_user/documents/6_Geneva/wg11/JCT3V-F1001-v4.zip
[0097]HEVC規格に従ってビデオを復号することの一部として、ビデオデコーダ30は、隣接ブロックベースディスパリティベクトル導出(NBDV)を実施するように構成され得る。NBDVは、すべてのビューについてテクスチャ優先コーディング順序を使用する3D−HEVCにおけるディスパリティベクトル導出方法である。現在の3D−HEVCの設計では、NBDVから導出されたディスパリティベクトルは、参照ビューの深度マップから深度データを取り出すことによって、さらに改良され得る。
[0098]ビデオデコーダ30は、2つのビュー間の変位の推定量(an estimator)として、ディスパリティベクトル(DV)を使用し得る。隣接ブロックが、ビデオコーディングにおいてほとんど同じ動き/ディスパリティ情報を共有するので、現在のブロックは、良好な予測子として、隣接ブロック中の動きベクトル情報を使用することができる。この考えに従って、NBDVは、異なるビューにおけるディスパリティベクトルを推定するために、隣接ディスパリティ情報を使用する。
[0099]NBDVを実施することの一部として、いくつかの空間隣接ブロックおよび時間隣接ブロックは、最初に定義される。ビデオデコーダ30は、次いで、現在のブロックと候補ブロックとの間の相関の優先度によって決定されたあらかじめ定義された順序で、それらの各々を検査し得る。ディスパリティ動きベクトル(すなわち、動きベクトルはインタービュー参照ピクチャを指す)が候補中で発見されると、ディスパリティ動きベクトルはディスパリティベクトルに変換され、関連するビュー順序インデックスも返される。隣接ブロックの2つのセットが利用される。一方のセットは、空間隣接ブロックからのものであり、他方のセットは、時間隣接ブロックからのものである。
[00100]3D−HEVCは、JCT3V−A0097において提案されたNBDV方法を最初に採用した。暗黙的ディスパリティベクトル(implicit disparity vector)が、JCTVC−A0126中に簡略化されたNBDVとともに含まれた。さらに、JCT3V−B0047では、NBDVは、復号されたピクチャバッファに記憶された暗黙的ディスパリティベクトルを除去することによってさらに簡略化されるが、また、RAPピクチャ選択を用いてコーディング利得を改善した。以下のドキュメントは、3D−HEVCおよびNDBVの態様を説明する。
・ JCT3V−A0097:3D-CE5.h: Disparity vector generation results、L.Zhang、Y.Chen、M.Karczewicz(Qualcomm)
・ JCT3V−A0126:3D-CE5.h: Simplification of disparity vector derivation for HEVC-based 3D video coding、J.Sung、M.Koo、S.Yea(LG)
・ JCT3V−B0047:3D-CE5.h related: Improvements for disparity vector derivation、J.Kang、Y.Chen、L.Zhang、M.Karczewicz(Qualcomm)
・ JCT3V−D0181:CE2: CU-based Disparity Vector Derivation in 3D-HEVC、J.Kang、Y.Chen、L.Zhang、M.Karczewicz(Qualcomm)
[00101]図4は、1つのコーディングユニットに対する空間動きベクトルネイバー(spatial motion vector neighbors)の一例を示す。NBDVのいくつかの実装形態では、5つの空間隣接ブロックがディスパリティベクトル導出のために使用される。それらは、図4に示されているA0、A1、B0、B1またはB2、すなわち、1つのコーディングユニットに対する空間動きベクトルネイバーによって示されている、現在の予測ユニット(PU)をカバーするコーディングユニット(CU)の左下ブロック、左ブロック、右上ブロック、上ブロック、および左上ブロックである。それらは、HEVCにおけるMERGE/AMVPモードにおいて使用されるものと同じであることに留意されたい。したがって、追加のメモリアクセスが必要とされない。
[00102]時間隣接ブロックを検査するために、ビデオデコーダ30は候補ピクチャリストの構成プロセスを実施する。現在のビューからの最高2つの参照ピクチャが、候補ピクチャとして扱われ得る。コロケートされた(co-located)参照ピクチャが最初に候補ピクチャリストに挿入され、候補ピクチャの残りが参照インデックスの昇順で続く。両方の参照ピクチャリスト中で同じ参照インデックスをもつ参照ピクチャが利用可能であるとき、コロケートされたピクチャの同じ参照ピクチャリスト中の参照ピクチャが、他の参照ピクチャに先行する。候補ピクチャリスト中の候補ピクチャごとに、時間隣接ブロックを導出するために3つの候補領域が決定される。
[00103]ブロックがインタービュー動き予測でコーディングされるとき、ビデオデコーダ30は、異なるビュー中の対応するブロックを選択するために、ディスパリティベクトルを導出する。暗黙的ディスパリティベクトル(IDV、または別名導出されたディスパリティベクトル)は、インタービュー動き予測において導出されたディスパリティベクトルを指す。ブロックが動き予測でコーディングされても、導出されたディスパリティベクトルは、後続のブロックをコーディングする目的のために破棄されない。
[00104]3D−HTM7.0および3D−HTMの後のバージョンの現在の設計では、NBDVプロセスは、時間隣接ブロック中のディスパリティ動きベクトルと、空間隣接ブロック中のディスパリティ動きベクトルと、次いでIDVとを、順に検査する。ディスパリティ動きベクトルまたはIDVが発見されると、プロセスは終了する。さらに、NBDVプロセスにおいて検査される空間隣接ブロックの数は、さらに2に低減される。
[00105]ビデオデコーダ30はまた、深度情報にアクセスすることを用いて、NBDVの改良(NBDV−R)を実施し得る。1つのディスパリティベクトルがNBDVプロセスから導出されるとき、それは、参照ビューの深度マップから深度データを取り出すことによってさらに改良される。改良プロセスは、以下の2つのステップを含む。最初に、ビデオデコーダ30は、ベースビューなど、前にコーディングされた参照深度ビュー中の導出されたディスパリティベクトルによって、対応する深度ブロックの位置を特定する。対応する深度ブロックのサイズは現在のPUのサイズと同じであり得る。ビデオデコーダ30は、次いで、対応する深度ブロックの4つのコーナーピクセルから1つの深度値を選択し、それを、改良されたディスパリティベクトルの水平成分に変換する。ディスパリティベクトルの垂直成分は不変である。
[00106]いくつかの実装形態では、改良されたディスパリティベクトルは、たとえば、インタービュー動き予測のために使用され得、改良されていないディスパリティベクトルはインタービュー残差予測のために使用され得る。さらに、改良されたディスパリティベクトルは、それが後方ビュー合成予測モード(backward view synthesis prediction mode)を用いてコーディングされる場合、1つのPUの動きベクトルとして記憶され得る。いくつかの実装形態では、ベースビューの深度ビューコンポーネントは、常に、NBDVプロセスから導出されたビュー順序インデックスの値にかかわらずアクセスされることになる。
[00107]ビデオデコーダ30はまた、ビュー間の残差相関を活用するコーディングツールである、ARPを実施するように構成され得る。ARPでは、参照ビューにおける動き補償のために現在のビューにおける動き情報をアラインすること(aligning)によって残差予測子が生成される。さらに、ビュー間の品質差を補償するために、重み付け係数が導入される。1つのブロックについてARPが有効にされるとき、現在の残差と残差予測子との間の差がシグナリングされる。現在、ARPは、Part_2N×2Nに等しいパーティションモードを用いたインターコーディングされたCUのみに適用され得る。ARPは、ルーマ(Y)成分とクロマ(CbおよびCr)成分の両方について適用される。以下の説明では、1つのブロック(またはピクセル)に対する(加算、減算などの)演算は、ブロック(またはピクセル)中の各ピクセルの各成分(Y、CbおよびCr)に対する演算を意味する。ルーマ成分およびクロマ成分のためのプロセスを区別する必要があるとき、ルーマ成分のためのプロセスはルーマARP(サブPU ARP)と呼ばれ、クロマ成分のためのプロセスはクロマARP(サブPU ARP)と呼ばれる。
[00108]図5は、JCT3V−D0177において提案されている、第4回JCT3V会議において採用された、3D−HEVCにおける時間ARPのための例示的な予測構造を示す。図5は、マルチビュービデオコーディングにおける時間残差についてのARPの予測構造(すなわち、1つの参照ピクチャリスト中の現在の参照ピクチャが時間参照ピクチャである)を示す。
[00109]図5に示されているように、ビデオデコーダ30は、コーディングされている現在のブロックの予測における後続のブロックを識別する。現在のブロックはCurr150として図5に示されている。Base151は、ディスパリティベクトル(DV152A)によって導出された参照/ベースビュー中の参照ブロックを表す。CurrTRef153は、現在のブロックの時間動きベクトル(TMV154A)によって導出されたブロックCurr150と同じビュー中のブロックを表す。BaseTRef155は、現在のブロックの時間動きベクトル(TMV154B)によって導出されたブロックBase151と同じビュー中のブロックを表す。したがって、TMV154AおよびTMV154Bは同じ動きベクトルに対応し、それらがx軸およびy軸に沿った同じ量の変位を識別することを意味する。BaseTRef155とCurr150との間の相対ロケーションの差は、TMV+DVのベクトルを用いて表され得る。CurrTRef153とBaseTRef155との間の相対ロケーションの差は、ディスパリティベクトルDV152Bによって表され得る。TMV+DVおよびDV152Bは、様々なブロック間の関係を示すために図5中に与えられ、ビデオデコーダ30によって導出または使用されるベクトルに必ずしも対応するとは限らない。
[00110]時間ARPを実施するとき、ビデオデコーダ30はBaseTRef−Baseとして残差予測子を計算し得、ここで、減算演算は、示されたピクセルアレイの各ピクセルに適用される。ビデオデコーダ30は、残差予測子に重み付け係数(w)を乗算し得る。したがって、ビデオデコーダ30によって決定された現在のブロックの最終予測子はCurrTRef+w*(Base−BaseTRef)として示される。
[00111]図5の例は単方向予測の場合を示す。双方向予測の場合に拡張するとき、ビデオデコーダ30は、各参照ピクチャリストのために上記のステップを適用し得る。したがって、双方向予測の場合、ビデオデコーダ30は、2つの異なる予測ブロックのために2つの残差予測子を決定し得る。
[00112]図6は、現在のブロック160と、対応するブロック161と、動き補償されたブロック162との間の例示的な関係を示す。ビデオデコーダ30は、最初にターゲット参照ビュー(V0)を指すディスパリティベクトル(DV163)を取得することによって、ARPを実施し得る。ビデオデコーダ30は、たとえば、現在の3D−HEVCにおいて指定されている技法のいずれかを使用して、DV163を取得し得る。同じアクセスユニット内の参照ビューV0のピクチャ中で、ビデオデコーダ30は、DV163を使用して、対応するブロック161の位置を特定し得る。ビデオデコーダ30は、参照ブロック161のための動き情報を導出するために、現在のブロック160の動き情報を再利用し得る。たとえば、ビデオデコーダ30が、現在のブロック160を予測するために使用された動きベクトル164Aを使用した場合、ビデオデコーダ30は、対応するブロック161を予測するために、動きベクトル164Bを使用し得る。動きベクトル164Aおよび動きベクトル164Bは、同じ動きベクトルの2つの異なるインスタンスを表すことを意図される。
[00113]ビデオデコーダ30は、残差ブロックを導出するために、現在のブロック160をコーディングするために使用されるものと同じ動きベクトルと、参照ブロックのための参照ビュー中の導出された参照ピクチャとに基づいて、対応するブロック161のために動き補償を適用し得る。ビデオデコーダ30は、現在のビュー(Vm)の参照ピクチャと同じPOC(ピクチャ順序カウント)値を有する参照ビュー(V0)中の参照ピクチャを、対応するブロックの参照ピクチャとして選択する。ビデオデコーダ30は、重み付けされた残差ブロックを得るために残差ブロックに重み付け係数を適用し、予測されたサンプルに重み付けされた残差ブロックの値を加算する。
[00114]ビデオデコーダ30はまた、インタービューARPを実施するように構成され得る。時間ARPと同様に、現在の予測ユニットがインタービュー参照ピクチャを使用するとき、インタービュー残差の予測が有効にされる。最初に、異なるアクセスユニット内のインタービュー残差が計算され、次いで、計算された残差情報が、現在のブロックのインタービュー残差を予測するために使用され得る。この技法は、JCT3V−F0123において提案され、3D−HEVCに採用された。
[00115]図7は、インタービューARPのための例示的な予測構造を示す。図7に示されているように、インタービューARPの場合、ビデオデコーダ30は、現在のブロック170のための3つの関係するブロックを識別する。Base171は、現在のブロック170のディスパリティ動きベクトル(DMV172A)によって位置を特定される参照ビュー中の参照ブロックを表す。BaseRef173は、時間動きベクトルmvLX174Aと、利用可能な場合、Base171によって含まれている参照インデックスとによって位置を特定される参照ビュー中のBase171の参照ブロックを表す。CurrRef175は、Base171からの時間動き情報を再利用することによって識別される現在のビュー中の参照ブロックを表す。したがって、ビデオデコーダ30は、mvLX174Bを使用してCurrRef175の位置を特定し得、ここで、mvLX174AおよびmvLX174Bは、同じ動きベクトルの2つのインスタンスを表す。DMV172Bは、Curr170とBase171との間のディスパリティがCurrRef175とBaseRef173との間のディスパリティに等しいことを示すために図7に含まれているDMV172Aに等しい。DMV172Bは、実際は、ビデオデコーダ30によって使用または生成されるディスパリティ動きベクトルに対応しないことがある。
[00116]識別された3つのブロックを用いて、ビデオデコーダ30は、現在のPU(すなわちCurr170)のための残差信号の残差予測子をCurrRefとBaseRefとの間の差として計算し得る。さらに、インタービュー予測子は重み付け係数(w)を乗算され得る。したがって、ビデオデコーダ30によって決定された現在のブロック(Curr170)の最終予測子はBase+w*(CurrRef−BaseRef)として示される。
[00117]ビデオデコーダ30は、時間残差予測のためのARPのいくつかの知られている設計の場合のように、3つの相対ブロックを生成するために双線形フィルタ処理(bi-linear filtering)を使用し得る。さらに、Base171によって含まれている時間動きベクトルが、現在のPUの第1の利用可能な時間参照ピクチャの異なるアクセスユニット中にある参照ピクチャを指すとき、ビデオデコーダ30は、時間動きベクトルを第1の利用可能な時間参照ピクチャにスケーリングし得、スケーリングされた動きベクトルは、異なるアクセスユニット中の2つのブロックの位置を特定するために使用され得る。
[00118]ARPがインタービュー残差について適用されるとき、現在のPUはインタービューARPを使用しており、ARPが時間残差について適用されるとき、現在のPUは時間ARPを使用している。
[00119]以下の説明では、1つの参照ピクチャリストのための対応する参照が時間参照ピクチャであり、ARPが適用される場合、それは時間ARPとして示される。さもなければ、1つの参照ピクチャリストのための対応する参照がインタービュー参照ピクチャであり、ARPが適用される場合、それはインタービューARPとして示される。
[00120]上記で紹介したように、ビデオデコーダ30は、残差予測子に重み付け係数を乗算し得る。一般に、3つの重み付け係数(すなわち、0、0.5、および1)がARPにおいて使用されるが、より多いまたはより少ない重み付け係数ならびに異なる重み付け係数も使用され得る。ビデオエンコーダ20は、たとえば、現在のCUのための最小レートひずみコストにつながる重み付け係数を最終重み付け係数として選択し、CUレベルでビットストリーム中で、対応する重み付け係数インデックス(それぞれ重み付け係数0、1、および0.5に対応する0、1および2)をシグナリングし得る。1つのCUにおけるすべてのPU予測は同じ重み付け係数を共有し得る。重み付け係数が0に等しいとき、ARPは現在のCUのために使用されない。
[00121]ビデオデコーダ30は、動きベクトルスケーリングを介して参照ピクチャ選択を実施するように構成され得る。JCT3V−C0049では、非0重み付け係数を用いてコーディングされた予測ユニットの参照ピクチャは、ブロックごとに異なり得る。したがって、参照ビューとは異なるピクチャが、対応するブロックの動き補償されたブロック(すなわち、図5中のBaseTRef)を生成するためにアクセスされる必要があり得る。重み付け係数が0に等しくないとき、時間残差の場合、現在のPUの動きベクトルは、残差生成プロセスと残差予測子生成プロセスの両方のために動き補償を実施する前に、固定ピクチャに向かって(towards a fixed picture)スケーリングされる。ARPがインタービュー残差に適用されるとき、参照ブロック(すなわち、図7中のBase)の時間動きベクトルは、残差生成プロセスと残差予測子生成プロセスの両方のために動き補償を実施する前に、固定ピクチャに向かってスケーリングされる。
[00122]両方の場合(すなわち、時間残差またはインタービュー残差)について、固定ピクチャは、各参照ピクチャリストの第1の利用可能な時間参照ピクチャとして定義される。復号された動きベクトルが固定ピクチャを指さないとき、それは、最初にスケーリングされ、次いでCurrTRefおよびBaseTRefを識別するために使用される。
[00123]ARPのために使用されるそのような参照ピクチャはターゲットARP参照ピクチャと呼ばれる。現在のスライスがBスライスであるとき、ターゲットARP参照ピクチャは参照ピクチャリストに関連することに留意されたい。したがって、2つのターゲットARP参照ピクチャが利用され得る。
[00124]ビデオデコーダ30は、ターゲットARP参照ピクチャの利用可能性検査を実施し得る。1つの参照ピクチャリストX(Xは0または1である)に関連するターゲットARP参照ピクチャは、RpRefPicLXによって示され得、NBDVプロセスから導出されたビュー順序インデックスに等しいビュー順序インデックス、およびRpRefPicLXの同じPOC値をもつビュー中のピクチャは、RefPicInRefViewLXによって示され得る。以下の条件のうちの1つが偽であるとき、ビデオデコーダ30は、参照ピクチャリストXについて無効にされるARPを無効にし得、(1)RpRefPicLXが利用不可能である、(2)RefPicInRefViewLXが復号されたピクチャバッファ内に記憶されない、(3)RefPicInRefViewLXが、NBDVプロセスからのDVまたは現在のブロックに関連するDMVによって位置を特定された対応するブロック(すなわち、図5および図7中のBase)の参照ピクチャリストのいずれにも含まれず、ARPはこの参照ピクチャリストについて無効にされ得る。
[00125]ARPが適用されるとき、ビデオデコーダ30は、残差および残差予測子を生成するとき、双線形フィルタを使用し得る。すなわち、ARPプロセスに関与する現在のブロックを除く3つのブロックが、双線形フィルタを使用して生成され得る。
[00126]ビデオデコーダ30はまた、ブロックレベルARPを実施し得る。1つのPU内のすべてのブロックが同じ動き情報を共有する上記の説明とは対照的に、PUレベルARPと呼ばれることがある、ブロックレベルARPにおいて、ビデオデコーダ30は1つのPUをいくつかの8×8ブロックに分割し、各8×8ブロックは、ARPを実施するためのそれ自体の動き情報を有する。時間またはインタービューのいずれかのブロックレベルARPが有効にされるとき、各PUは、最初に、いくつかのブロックに分割され、各ブロックは現在のPUと同じ動き情報を共有する。しかしながら、導出された動きベクトル(すなわち、時間ARPにおけるディスパリティベクトルまたはインタービューARPにおける時間動きベクトル)は、8×8ブロックごとに更新され得る。
[00127]図8Aは、ブロックレベル時間ARPの例示的な予測構造を示す。図8Aの例では、Curr180は、図8A中でA〜Dと標示された4つの8×8ブロックに分割されたPUを表す。Base181は、Curr180のディスパリティベクトルによって導出された参照/ベースビュー中の(A’〜D’と標示された)4つの参照ブロックを表す。Based181のブロックA’は、(DV[0]として図8Aに示された)ブロックAのディスパリティベクトルを使用して識別され、ブロックB’は、(DV[1]として図8Aに示された)ディスパリティベクトルを使用して識別される。図8Aには明示的に示されていないが、ブロックC’およびD’は、ブロックCおよびDのディスパリティベクトルを使用して同様に識別され得る。
[00128]導出された動きベクトル(すなわち、時間ARPにおけるディスパリティベクトル)は8×8ブロックごとに更新され得る。時間ARPでは、(図8Aにおいて、i番目の8×8ブロックの場合、DV[i]によって示される)デフォルトderivedMvは、最初に、NBDVプロセスからのDVであるように設定される。CurrRef内のi番目の8×8ブロックの中心位置をカバーするブロックがディスパリティ動きベクトルを含んでいるとき、DV[i]は、そのディスパリティ動きベクトルになるように更新される。したがって、図8Aに示されているように、ブロックA’〜D’は、ブロックA〜Dが互いに対して配置されるのとは別様に、互いに対して配置され(be positioned)得る。CurrRef183は、Curr180の(図8A中でmvLX184Aとして示された)時間動きベクトルによって導出されたcurr180と同じビュー中の4つのブロック(AP〜DP)を表す。BaseRef185は、現在のブロックの時間動きベクトル(mvLX184B)によって導出されたBase181と同じビュー中の4つのブロック(AR〜DR)を表す。図8Aの例では、mvLX184AおよびmvLX184Bは、同じ動きベクトルの2つの異なる適用例を表すことを意図される。すなわち、mvLX184AおよびmvLX184Bは同じx成分とy成分とを有する。
[00129]残差予測子は、図8Aの例では、BaseRef−Baseとして示され、ここで、減算演算は、示されたピクセルアレイの各ピクセルに適用される。重み付け係数(w)が残差予測子にさらに乗算される。したがって、ビデオデコーダ30によって決定されたブロックA〜Dのための最終予測子は、CurrRef[NP]+w*(Base[N’]−BaseRef[NR])として示され、NはA〜Dに対応する。
[00130]図8Bは、ブロックレベルインタービューARPの例示的な予測構造を示す。図8Bの例では、ビデオデコーダ30は、現在のブロック182の3つの関係するブロックを識別する。Base186は、現在のブロック182のディスパリティ動きベクトル(DMV188A)によって位置を特定される参照ビュー中の4つの参照ブロック(A〜D)を表す。BaseRef187は、時間動きベクトルmvLX[N]と、利用可能な場合、Base186によって含まれている参照インデックスとによって位置を特定される参照ビュー中のBase186の4つの参照ブロック(A’〜D’)を表し、ここで、NはブロックA〜Dに対応する。インタービューARPでは、(図8B中で、i番目の8×8ブロックの場合、mvLX[i]によって示される)デフォルトderivedMvは、現在のARPの場合のように、Baseの中心位置をカバーするブロックに関連する時間動きベクトルに設定され得る。Base内のi番目の8×8ブロックの中心位置をカバーするブロックが時間動きベクトルを含んでいるとき、mvLX[i]は、その時間動きベクトルになるように更新される。したがって、図8Aに示されているように、ブロックA’〜D’は、ブロックA〜Dが互いに対して配置されるのとは別様に、互いに対して配置され得る。
[00131]CurrRef189は、Base186からの時間動き情報を再利用することによって識別される現在のビュー中の4つの参照ブロック(AR〜DR)を表す。したがって、たとえば、ビデオデコーダ30は、mvLX[A]を使用してARの位置を特定し、mvLX[B]を使用してBRの位置を特定し、以下同様である。3つの識別されたブロックを用いて、ビデオデコーダ30は、現在のPUの残差信号の残差予測子をCurrRef−BaseRef間の差として計算し得る。それは、異なるアクセスユニット中にあり得る。さらに、インタービュー予測子は重み付け係数(w)を乗算され得る。したがって、ビデオデコーダ30によって決定された現在のブロックの最終予測子はBase[N]+w*(CurrRef[NR]−BaseRef[N’])として示される。
[00132]上記のように、ブロックベース時間ARPとブロックベースインタービューARPの両方について、現在のPUの動きベクトルによって位置を特定された参照ブロックのブロックレベル(たとえば、8×8)動き情報のみが、最終残差予測子を生成するためにアクセスされる。
[00133]ビデオデコーダ30はまた、サブPUレベルインタービュー動き予測を実施し得る。JCT3V−F0110では、新しいマージング候補を生成するために、サブPUレベルインタービュー動き予測方法が提案されている。新しい候補がマージ候補リストに追加される。サブPUマージング候補と称される新しい候補は、以下の方法を使用してビデオデコーダ30によって導出され得る。以下の説明では、現在のPUのサイズはnPSW×nPSHによって示され、シグナリングされたサブPUサイズはN×Nによって示され、最終サブPUサイズはsubW×subHによって示される。ビデオデコーダ30は、最初に、PUサイズとシグナリングされたサブPUサイズとに応じて、現在のPUを1つまたは複数のサブPUに分割する。
[00134]ビデオデコーダ30は、次に、各参照ピクチャリストについて、デフォルト動きベクトルtmvLXを(0,0)に、および参照インデックスrefLXを−1に設定する(Xは0および1である)。ラスタ走査順序(raster scan order)における各サブPUについて、ビデオデコーダ30は以下を行う。
○ 以下によって参照サンプルロケーション(xRefSub,yRefSub)を取得するために、DoNBDVまたはNBDVプロセスからのDVを現在のサブPUの中間位置に加算する。
(xRefSub,yRefSub)をカバーする参照ビュー中のブロックは、現在のサブPUのための参照ブロックとして使用され得る。
○ 識別された参照ブロックについて、
− それが時間動きベクトルを使用してコーディングされる場合、以下が適用される。
・ 現在のサブPUのための候補動きパラメータとして、関連する動きパラメータが使用され得る。
・ tmvLXおよびrefLXが現在のサブPUの動き情報に更新される。
・ 現在のサブPUがラスタ走査順序において最初のサブPUでない場合、動き情報(tmvLXおよびrefLX)はすべての前のサブPUによって継承される。
− そうでない場合(参照ブロックがイントラコーディングされる)、現在のサブPUの動き情報はtmvLXおよびrefLXに設定され得る。
[00135]ビデオデコーダ30はまた、サブPUレベルARPを実施するように構成され得る。サブPUレベルインタービュー動き予測が適用されるとき、PUは複数のサブPUを含んでいることがあり、各サブPUはそれ自体の動き情報を有し、ARPは各サブPUについて実施され得る。異なるサブPUブロックサイズは、たとえば、4×4、8×8、および16×16が適用され得る。サブPUブロックのサイズはビューパラメータセット中に存在する。
[00136]図9は、サブPUレベルインタービュー動き予測の一例を示す。図9は、V1と呼ばれる現在のビュー、およびV0と呼ばれる参照ビューを示す。現在のPU190は4つのサブPU A〜Dを含む。ビデオデコーダ30は、4つの参照ブロックAR〜DRを含む参照ブロック191の位置を特定するために、4つのサブPU A〜Dの各々のディスパリティベクトルを使用し得る。サブPU A〜Dのディスパリティベクトルは、MV[i]として図9に示され、ここで、iはA〜Dに対応する。4つのサブPUの各々が一意のディスパリティベクトルを有するので、互いに対するサブPU A〜Dのロケーションは、互いに対する参照ブロックAR〜DRのロケーションとは異なり得る。サブPUレベルインタービュー動き予測では、ビデオデコーダ30は、サブPUを予測するために、参照ブロックの動きベクトルを使用し得る。参照ブロックAR〜DRの動きベクトルは、MV[i]として図9に示され、ここで、iはA〜Dに対応する。したがって、一例として、サブPU Aについて、ビデオデコーダ30は、参照ブロックARの位置を特定するためにDV[A]を使用し、参照ブロックARがMV[A]を使用してコーディングされたと決定し、サブPU Aのための予測ブロックの位置を特定するためにMV[A]を使用し得る。
[00137]図10Aは、サブPUレベル時間ARPのための例示的な予測構造を示す。図10Aの例では、PU(Curr200)は(図10A中でA〜Dと標示された)4つのサブPUに分割される。サブPUレベル時間ARPの場合、ビデオデコーダ30は、PUレベルARPにおけるものと概して同じである、参照ビュー中の参照ブロック(Base201)を識別するために、Curr200のすべてのサブPUのために同じディスパリティベクトル(DV202)を使用し得る。Base201は、サブPU A〜Dに対応するサブ参照ブロック(図10A中のA’〜D’)に再分割され(be sub-divided)得る。ビデオデコーダ30は、たとえば、NBDV技法を使用して、DV202を導出し得る。ビデオデコーダ30は、時間参照ブロック(図10A中のAP〜DP)を識別するために、サブPU A〜Dの各々の動き情報を使用する。サブPU A〜Dの動き情報は、i番目のサブPUのためのTMV[i]として図10Aに示され、ここで、iはA〜Dに対応する。TMV[A]は、たとえば、サブPU Aの時間動きベクトルを表し、TMV[C]はサブPU Cの動きベクトルを表す。図10Aに明示的に示されていないが、サブPU BおよびサブPU Dは、それぞれ、関連付けられた動きベクトルTMV[B]およびTMV[D]を同様に有することになる。
[00138]ビデオデコーダ30は、図10A中でBaseRef205として示されている、Base201の参照ブロックの位置を特定するために、サブPU A〜Dの動き情報(すなわち、TMV[i]、i=A〜D)を再利用し得る。BaseRef205は4つのサブブロック(図10A中のAR〜DR)を含む。残差予測子は、図10Aの例では、BaseRef−Baseとして示され得、ここで、減算演算は、示されたピクセルアレイの各ピクセルに適用される。重み付け係数(w)が残差予測子にさらに乗算される。したがって、ビデオデコーダ30によって決定されたブロックA〜Dのための最終予測子は、CurrRef[NP]+w*(Base[N’]−BaseRef[NR])として示され得、NはA〜Dに対応する。
[00139]図10Bは、サブPUレベルインタービューARPの例示的な予測構造を示す。図10Bの例では、PU(Curr200)は(図10B中でA〜Dと標示された)4つのサブPUに分割される。インタービューARPの場合、ビデオデコーダ30は、参照ビュー中の参照ブロック(Base206)を識別するために、サブPU A〜Dの各々のディスパリティ動きベクトルを使用する。Base206は、図10B中でAP〜DPと標示された、4つのサブ参照ブロックを含む。サブPU A〜Dのディスパリティ動きベクトルは、i番目のサブPUのためのDMV[i]として図10Bに示され、ここで、iはA〜Dに対応する。DMV[A]は、たとえば、サブPU Aのディスパリティ動きベクトルを表し、DMV[B]はサブPU Bのディスパリティ動きベクトルを表す。図10Bに明示的に示されていないが、サブPU CおよびサブPU Dは、それぞれ、関連付けられたディスパリティ動きベクトルDMV[C]およびDMV[D]を同様に有することになる。
[00140]参照ブロック(すなわち、Base206)が(図10B mvLX[i]によって示された、ここで、iはA〜Dに対応する)時間動きベクトルを含んでいるとき、ビデオデコーダ30は、参照ビュー中の現在のサブPUとそれの参照ブロックの両方のための時間参照ブロックを識別するために、時間動きベクトルを使用する。たとえば、ビデオデコーダ30は、図10B中のARであるAPのための参照ブロックの位置を特定するために、ならびに図10B中のA’であるAの参照ブロックの位置を特定するために、mvLX[A]を使用する。ビデオデコーダ30は、同様に、図10B中のCRであるCPのための参照ブロックの位置を特定するために、ならびに図10B中のC’であるCの参照ブロックの位置を特定するために、mvLX[C]を使用し得る。図10Bには明示的に示されていないが、ビデオデコーダ30は、同様に、C、CP、D、およびDPのための参照ブロックの位置を特定し得る。
[00141]識別されたブロックを用いて、ビデオデコーダ30は、CurrRef[N’]−BaseRef[NR]間の差として現在のPU残差予測子を計算し得、ここで、NはA〜Dに対応する。さらに、インタービュー予測子は重み付け係数(w)を乗算され得る。したがって、ビデオデコーダ30によって決定された現在のブロックの最終予測子は、Base[NP]+w*(CurrRef[N’]−BaseRef[NR])として示され得る。
[00142]ARPのいくつかの実装形態は、いくつかの潜在的問題を有する。一例として、ブロックが双予測されるいくつかのコーディングシナリオでは、ブロック(またはPU、サブPU)のために、4つの追加の参照ブロックが査定される必要があり得る。図11によって示されている第1の例では、1つのブロックが双方向予測され、両方の予測方向がインタービュー参照ピクチャに対応するとき、インタービューARPは2回呼び出され、2つの追加の参照ブロックが各ARPのためにアクセスされる。
[00143]図11は、3D−HEVCにおける双方向インタービューARPのためにビデオデコーダ30によってアクセスされる参照ブロックの一例を示す。図11の例では、予測方向Xのディスパリティ動きベクトルは、DMVXによって示され、ここで、X=0または1である。予測方向Xの場合、現在のビュー中の参照ブロック(図11中のCurrRefX)が、参照ビュー中の参照ブロック(図11中のBaseX)に関連する動き情報(図11中のmvBaseX)によって識別され、DMVX+mvBaseXによって識別される参照ビュー中のBaseXの参照ブロック(図11中のBaseXRef)が査定される。
[00144]図12は、3D−HEVCにおける時間ARPおよびインタービューARPのためにビデオデコーダ30によってアクセスされる参照ブロックの一例を示す。図12によって示されている第2の例では、一方のブロックが双方向予測され、1つの予測方向が時間参照ピクチャに対応し(時間動きベクトルがTMVであり)、他方の予測方向がインタービュー参照ピクチャに対応する(ディスパリティ動きベクトルがDMVである)とき、時間ARPとインタービューARPの両方が呼び出され、2つの追加の参照ブロックが、図12に示されているように、各ARPのためにアクセスされる。
[00145]時間ARPでは、NBDVプロセスを使用して導出されたDVによって識別される参照ビュー中の参照ブロック(図12中のBase1)、およびDV+TMVによって識別される参照ビュー中のBase1の参照ブロック(図12中のBase1TRef)が査定される。インタービューARPでは、参照ビュー中の参照ブロック(図12中のBase2)に関連する動き情報(図12中のmvBase)によって識別される現在のビュー中の参照ブロック(図12中のCurrRef)、およびDMV+mvBaseによって識別される参照ビュー中のBase2の参照ブロック(図12中のBase2Ref)が査定される。
[00146]いくつかの知られている技法に従って、図12のプロセスは、追加として査定される参照ブロックを低減するために、簡略化される。たとえば、時間ARPのための参照ビュー中の参照ブロック(すなわち、図12中のBase1)を識別するために、NBDVプロセスを使用して導出されるDVの代わりに、DMVが使用され得る。このようにして、ブロックBase1は、図12中のブロックBase2と同じであり、Base1の追加の査定は必要とされない。したがって、第1の例において追加として査定される参照ブロックは、4から3に低減される。
[00147]しかしながら、上記の問題の第1の例では、査定すべき4つの追加の参照ブロックが依然としてある。これは、ARP予測されるブロックのためにアクセスすることを必要とされるブロックの数が3から4に増加するというワーストケースをもたらす。
[00148]本開示は、追加として査定される参照ブロックを低減するために、ARPにおける上述の問題のうちのいくつかに対するソリューションを潜在的に提供する。一例として、第1のブロックが、(サブPUレベルARPを含む)ARPを用いてコーディングされ、双方向予測され、両方の予測方向が、インタービュー参照ピクチャである参照ピクチャを有するとき、ビデオデコーダ30は、両方の予測方向(のインタービューARP)のための現在のビュー中の現在のブロックの参照ブロックを識別するために、1つの単一の時間動きベクトルを使用し得ることが提案される。言い換えれば、両方の時間動きベクトル(たとえば、図11に示されているmvBase0とmvBase1)は、mvBaseであるように設定される。さらに、図12中のCurrRef0とCurrRef1の両方とは対照的に、現在のブロックの1つの参照ブロックのみが決定される。この場合、図13に示されているように、現在のビュー中の、2つの参照ブロックの代わりに、(図13中にCurrRefによって示されている)1つの参照ブロックのみが査定される。
[00149]図13は、1つの単一の時間動きベクトルが双方向インタービューARPにおいてどのように使用され得るかの一例を示す。一例では、単一の時間動きベクトル(mvBase)は、予測方向0のための参照ビュー中の参照ブロックに関連する時間動きベクトル(たとえば、mvBase0)であるように設定され得る。さらに、mvBase0が利用不可能であるとき、ARPは第1のブロックについて無効にされ得る。代替的に、mvBase0が利用不可能であるとき、単一の動きベクトル(mvBase)はゼロ動きベクトルであるように設定され得る。
[00150]図13の例では、ビデオデコーダ30は、2つの予測方向についてインタービューARPを実施し得る。予測方向0について、ビデオデコーダ30は、Currのための第1のディスパリティ動きベクトル(DMV0)、およびCurrのための第2のディスパリティ動きベクトル(DMV1)を決定する。ビデオデコーダ30は、第1の対応するブロック(Base0)の位置を特定するためにDMV0を使用し、第2の対応するブロック(Base1)の位置を特定するためにDMV1を使用する。Base0およびBase1の動きベクトルから、ビデオデコーダ30は、ARPのために使用すべき動きベクトル(mvBase)を決定する。ビデオデコーダ30がmvBaseを決定するために使用し得る様々なプロセスが、以下でさらに詳細に説明される。mvBaseを使用して、ビデオデコーダ30は、Currと同じビュー中の異なるピクチャ中の現在のブロックの参照ブロック(CurrRef)を決定する。mvBaseを使用して、ビデオデコーダ30はまた、Base0のための参照ブロック(Base0Ref)、およびBase1のための参照ブロック(Base1Ref)を決定する。識別されたブロックを使用して、ビデオデコーダ30は2つの予測子を生成する。第1の予測子はBase0+w*(CurrRef−Base0Ref)であり、第2の予測子はBase1+w*(CurrRef−Base1Ref)である。
[00151]ビデオデコーダ30は、Base0のための動きベクトルが利用可能である場合、mvBaseが、Base0に関連する時間動きベクトルであると決定し得るか、またはBase1のための動きベクトルが利用可能である場合、mvBaseが、Base1に関連する時間動きベクトルであると決定し得る。ビデオデコーダ30がmvBaseとしてBase0の動きベクトルを使用するように構成される場合、ARPは、Base0のための動きベクトルが利用不可能であるとき、第1のブロックについて無効にされ得る。代替的に、ビデオデコーダ30がmvBaseとしてBase0の動きベクトルを使用するように構成される場合、mvBaseは、Base0の動きベクトルが利用不可能であるとき、ゼロ動きベクトルであるように設定され得る。同様に、ビデオデコーダ30がmvBaseとしてBase1の動きベクトルを使用するように構成される場合、ARPは、Base1のための動きベクトルが利用不可能であるとき、第1のブロックについて無効にされ得る。代替的に、ビデオデコーダ30がmvBaseとしてBase1の動きベクトルを使用するように構成される場合、mvBaseは、Base1の動きベクトルが利用不可能であるとき、ゼロ動きベクトルであるように設定され得る。
[00152]別の例では、ビデオデコーダ30は、Base0のための動きベクトルが利用不可能である場合、mvBaseをBase1の時間動きベクトルであるように設定し得るか、またはBase1のための動きベクトルが利用不可能である場合、mvBaseをBase0の時間動きベクトルであるように設定し得る。Base1のための動きベクトルが利用不可能である場合、およびBase0のための動きベクトルが利用不可能である場合、ビデオデコーダは、mvBaseをゼロ動きベクトルであるように設定し得る。Base1のための動きベクトルが利用不可能である場合、およびBase0のための動きベクトルが利用不可能である場合、ビデオデコーダはARPを無効にし得る。別の例では、ビデオデコーダ30は、参照ビュー中の参照ブロックに関連する時間動きベクトルが予測方向Xについて利用可能でないとき、予測方向XについてインタービューARPを無効にし得る。
[00153]本開示の別の技法によれば、1つのブロックが(サブPUレベルARPを含む)ARPを用いてコーディングされ、双方向予測されるとき、ビデオデコーダ30は、一方の予測方向(予測方向X)のみについてクロマARPを適用し、他方の予測方向(予測方向1−X)についてARPを無効にすることが提案され、ここで、Xは0または1のいずれかであり得る。(サブPUレベルARPを含む)ルーマARPは不変に保たれ得る。一例では、Xは0に等しい。ビデオデコーダ30は、この技法を、あるいは上記で説明した単一動きベクトル技法と一緒に、またはそれとは無関係に使用し得る。
[00154]本開示の別の技法によれば、1つのブロックがARPを用いてコーディングされるとき、さらに、クロマ成分についてのARPは、現在のブロックの幅および高さがある範囲中にあることを意味する、ブロックサイズがある範囲中にあるときのみ、適用されることが提案される。一例では、ブロックサイズが8×8に等しい場合、クロマ成分についてのARPは無効にされ得る。別の例では、ブロックサイズが32×32よりも小さい場合、クロマ成分についてのARPは無効にされ得る。別の例では、クロマについてのサブPUレベルARPは、N×Nに等しいサイズをもつ任意のサブPUについて無効にされ得るが、クロマについてのARPは、N×Nに等しいサイズをもつPUについて有効にされる。ここで、Nは8、16、32、または64であり得る。別の例では、クロマについてのサブPUレベルARPは、N×Nに等しいサイズをもつ任意のサブPUについて無効にされ得るが、クロマについてのARPは、M×Mに等しいサイズをもつPUについて有効にされる。ここで、MはNよりも小さいことがあり、それらの両方は、MがNよりも小さい限り、8、16、32、または64であり得る。
[00155]本開示で説明する様々な技法は、独立してまたは一緒にのいずれかで実装され得ることが企図される。たとえば、上記で説明した単一動きベクトル技法は、上記で説明したクロマARP技法とともに実装され得る。同様に、上記で説明したブロックサイズベースクロマARP技法は、上記で説明した単一動きベクトル技法とともに実装され得ることも企図される。また、本開示で説明する様々な技法は、PUレベルARP、サブPUレベルARP、およびブロックレベルARPのいずれかに適用され得ることが企図される。
[00156]図15は、本開示で説明するARP技法を実装し得るビデオエンコーダの一例を示すブロック図である。たとえば、図15は、3D−AVC準拠ビデオエンコーダまたは3D−HEVC準拠ビデオエンコーダのいずれかを表し得るビデオエンコーダ20を示す。ビデオエンコーダ20は、PU、TU、およびCUなど、あるHEVC用語を使用して説明されるが、ビデオエンコーダ20に関して説明する技法はまた、H.264規格に従ってコーディングされたビデオを用いて実施され得ることを理解されたい。
[00157]ビデオエンコーダ20は、ビデオスライス内のビデオブロックのイントラコーディングおよびインターコーディングを実施し得る。たとえば、ビデオエンコーダ20は、インター予測符号化またはイントラ予測符号化を実施し得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオにおける空間冗長性を低減または除去するために空間予測に依拠する。インターコーディングは、ビデオシーケンスの隣接フレームまたはピクチャ内の時間冗長性または異なるビュー中のピクチャ間の冗長性を低減または除去するために、時間予測またはインタービュー予測に依拠する。イントラモード(Iモード)は、いくつかの空間ベースの圧縮モードのいずれかを指し得る。単方向予測(Pモード)または双方向予測(Bモード)などのインターモードは、いくつかの時間ベースの圧縮モードのいずれかを指し得る。
[00158]図15の例では、ビデオエンコーダ20は、ビデオデータメモリ40と、予測処理ユニット42と、参照ピクチャメモリ64と、加算器50と、変換処理ユニット52と、量子化処理ユニット54と、エントロピー符号化ユニット56とを含む。予測処理ユニット42は、動きおよびディスパリティ推定ユニット44と、動きおよびディスパリティ補償ユニット46と、イントラ予測ユニット48とを含む。ビデオブロック再構成のために、ビデオエンコーダ20はまた、逆量子化処理ユニット58と、逆変換処理ユニット60と、加算器62とを含む。再構成されたビデオからブロッキネスアーティファクトを除去するために、ブロック境界をフィルタ処理するための(図15に示されていない)デブロッキングフィルタも含まれ得る。所望される場合、デブロッキングフィルタは、一般に、加算器62の出力をフィルタ処理することになる。(ループ中またはループ後の)追加のループフィルタもデブロッキングフィルタに加えて使用され得る。
[00159]ビデオデータメモリ40は、ビデオエンコーダ20の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオデータメモリ40内に記憶されるビデオデータは、たとえば、ビデオソース18から取得され得る。参照ピクチャメモリ64は、(たとえば、イントラ予測コーディングモードまたはインター予測コーディングモードとも呼ばれる、イントラコーディングモードまたはインターコーディングモードで)ビデオエンコーダ20によってビデオデータを符号化する際に使用する参照ビデオデータを記憶する復号されたピクチャバッファ(DPBの一例である。ビデオデータメモリ40および参照ピクチャメモリ64は、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗性RAM(RRAM(登録商標))、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ40および参照ピクチャメモリ64は、同じメモリデバイスまたは別個のメモリデバイスによって与えられ得る。様々な例では、ビデオデータメモリ40は、ビデオエンコーダ20の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
[00160]ビデオエンコーダ20はビデオデータを受信し、区分ユニット(図示せず)はデータをビデオブロックに区分する。この区分は、スライス、タイル、または他のより大きいユニットへの区分、ならびにビデオブロック区分(たとえば、マクロブロックパーティション、およびパーティションのサブブロック)をも含み得る。ビデオエンコーダ20は、概して、符号化されるべきビデオスライス内のビデオブロックを符号化する構成要素を示す。スライスは、複数のビデオブロックに(および、場合によっては、タイルと呼ばれるビデオブロックのセットに)分割され得る。予測処理ユニット42は、誤差結果(たとえば、コーディングレートおよびひずみレベル)に基づいて、現在のビデオブロックのために、複数のイントラコーディングモード(イントラ予測コーディングモード)のうちの1つ、または複数のインターコーディングモード(インター予測コーディングモード)のうちの1つなど、複数の可能なコーディングモードのうちの1つを選択し得る。予測処理ユニット42は、得られたイントラコード化されたブロックまたはインターコード化されたブロックを、残差ブロックデータを生成するために加算器50に与え、参照ピクチャとして使用するための符号化されたブロックを再構成するために加算器62に与え得る。
[00161]予測処理ユニット42内のイントラ予測ユニット48は、空間圧縮を行うために、コーディングされるべき現在のブロックと同じフレームまたはスライス中の1つまたは複数の隣接ブロックに対して現在のビデオブロックのイントラ予測コーディングを実施し得る。予測処理ユニット42内の動きおよびディスパリティ推定ユニット44と動きおよびディスパリティ補償ユニット46とは、時間圧縮を行うために、1つまたは複数の参照ピクチャ中の1つまたは複数の予測ブロックに対して現在のビデオブロックのインター予測コーディングを実施する。
[00162]動きおよびディスパリティ推定ユニット44は、ビデオシーケンスのための所定のパターンに従ってビデオスライスのためのインター予測モードを決定するように構成され得る。所定のパターンは、シーケンス中のビデオスライスをPスライスまたはBスライスとして指定し得る。動きおよびディスパリティ推定ユニット44と動きおよびディスパリティ補償ユニット46とは、高度に統合され得るが、概念的な目的のために別々に示してある。動きおよびディスパリティ推定ユニット44によって実施される動き推定は、ビデオブロックに関する動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、参照ピクチャ内の予測ブロックに対する現在のビデオフレームまたはピクチャ内のビデオブロックの変位を示し得る。
[00163]予測ブロックは、絶対差分和(SAD:sum of absolute difference)、2乗差分和(SSD:sum of square difference)、または他の差分メトリックによって決定され得るピクセル差分に関して、コーディングされるべきビデオブロックにぴったり一致することがわかるブロックである。いくつかの例では、ビデオエンコーダ20は、参照ピクチャメモリ64内に記憶された参照ピクチャのサブ整数ピクセル位置の値を計算し得る。たとえば、ビデオエンコーダ20は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動きおよびディスパリティ推定ユニット44は、フルピクセル位置と分数ピクセル位置とに対する動き探索を実施し、分数ピクセル精度で動きベクトルを出力し得る。
[00164]動きおよびディスパリティ推定ユニット44は、ビデオブロックの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコーディングされた(インター予測コーディングされた)スライス中のビデオブロックに関する動きベクトルを計算する。参照ピクチャは、その各々が、参照ピクチャメモリ64内に記憶された1つまたは複数の参照ピクチャを識別する、第1の参照ピクチャリスト(RefPicList0)または第2の参照ピクチャリスト(RefPicList1)から選択され得る。動きおよびディスパリティ推定ユニット44は、計算された動きベクトルをエントロピー符号化ユニット56と動きおよびディスパリティ補償ユニット46とに送る。
[00165]動きおよびディスパリティ補償ユニット46によって実施される動き補償は、動き推定によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成すること、場合によってはサブピクセル精度への補間を実施することを伴い得る。現在のビデオブロックに関する動きベクトルを受信すると、動きおよびディスパリティ補償ユニット46は、動きベクトルが参照ピクチャリストのうちの1つにおいてそれを指す予測ブロックの位置を特定し得る。ビデオエンコーダ20は、コーディングされている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって残差ビデオブロックを形成する。ピクセル差分値は、ブロックに関する残差データを形成し、ルーマ差分成分とクロマ差分成分の両方を含み得る。加算器50は、この減算演算を実施する1つまたは複数の構成要素を表す。動きおよびディスパリティ補償ユニット46はまた、ビデオスライスのビデオブロックを復号する際にビデオデコーダ30が使用するための、ビデオブロックとビデオスライスとに関連するシンタックス要素を生成し得る。
[00166]イントラ予測ユニット48は、上記で説明したように、動きおよびディスパリティ推定ユニット44と動きおよびディスパリティ補償ユニット46とによって実施されるインター予測の代替として、現在のブロックをイントラ予測し得る。特に、イントラ予測ユニット48は、現在のブロックを符号化するために使用すべきイントラ予測モードを決定し得る。いくつかの例では、イントラ予測ユニット48は、たとえば、別個の符号化パス中に、様々なイントラ予測モードを使用して現在のブロックを符号化し得、イントラ予測ユニット48(または、いくつかの例では、モード選択ユニット)は、テストされたモードから使用するのに適切なイントラ予測モードを選択し得る。たとえば、イントラ予測ユニット48は、様々なテストされたイントラ予測モードのためのレートひずみ分析を使用してレートひずみ値を計算し、テストされたモードの中で最良のレートひずみ特性を有するイントラ予測モードを選択し得る。レートひずみ分析は、概して、符号化されたブロックと、符号化されたブロックを生成するために符号化された元の符号化されていないブロックとの間のひずみ(または誤差)の量、ならびに符号化されたブロックを生成するために使用されるビットレート(すなわち、ビット数)を決定する。イントラ予測ユニット48は、どのイントラ予測モードがブロックのための最も良好なレートひずみ値を呈するかを決定するために、様々な符号化されたブロックのためのひずみおよびレートから比(ratios)を計算し得る。
[00167]いずれの場合も、ブロックのためのイントラ予測モードを選択した後、イントラ予測ユニット48は、ブロックのための選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット56に与え得る。エントロピー符号化ユニット56は、本開示の技法に従って、選択されたイントラ予測モードを示す情報を符号化し得る。ビデオエンコーダ20は、複数のイントラ予測モードインデックステーブルおよび複数の変更されたイントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)と、様々なブロックに関する符号化コンテキストの定義(definitions of encoding contexts)と、コンテキストの各々について使用すべき、最確イントラ予測モード(a most probable intra-prediction mode)、イントラ予測モードインデックステーブル、および変更されたイントラ予測モードインデックステーブルの指示とを含み得る構成データを送信されたビットストリーム中に含め得る。
[00168]予測処理ユニット42がインター予測またはイントラ予測のいずれかを介して現在のビデオブロックに関する予測ブロックを生成した後、ビデオエンコーダ20は、現在のビデオブロックから予測ブロックを減算することによって残差ビデオブロックを形成する。残差ブロック中の残差ビデオデータは、変換処理ユニット52に適用され得る。変換処理ユニット52は、離散コサイン変換(DCT)または概念的に同様の変換などの変換を使用して残差ビデオデータを残差変換係数に変換する。変換処理ユニット52は、残差ビデオデータをピクセル領域から周波数領域などの変換領域に変換し得る。
[00169]変換処理ユニット52は、得られた変換係数を量子化処理ユニット54に送り得る。量子化処理ユニット54は、ビットレートをさらに低減するために変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。量子化の程度(degree)は、量子化パラメータを調整することによって変更され得る。いくつかの例では、量子化処理ユニット54は、次いで、量子化変換係数を含む行列の走査を実施し得る。代替的に、エントロピー符号化ユニット56が走査を実施し得る。
[00170]量子化に続いて、エントロピー符号化ユニット56は量子化変換係数をエントロピー符号化する。たとえば、エントロピー符号化ユニット56は、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディングあるいは別のエントロピー符号化方法または技法を実施し得る。エントロピー符号化ユニット56によるエントロピー符号化の後に、符号化されたビットストリームは、ビデオデコーダ30に送信されるか、あるいはビデオデコーダ30が後で送信するかまたは取り出すためにアーカイブされ得る。エントロピー符号化ユニット56はまた、コーディングされている現在のビデオスライスのための動きベクトルと他のシンタックス要素とをエントロピー符号化し得る。
[00171]逆量子化処理ユニット58および逆変換処理ユニット60は、参照ピクチャの参照ブロックとして後で使用するためにピクセル領域において残差ブロックを再構成するために、それぞれ逆量子化および逆変換を適用する。動きおよびディスパリティ補償ユニット46は、残差ブロックを参照ピクチャリストのうちの1つ内の参照ピクチャのうちの1つの予測ブロックに加算することによって参照ブロックを計算し得る。動きおよびディスパリティ補償ユニット46はまた、動き推定において使用するためのサブ整数ピクセル値を計算するために、再構成された残差ブロックに1つまたは複数の補間フィルタを適用し得る。加算器62は、参照ピクチャメモリ64内に記憶するための参照ブロックを生成するために、再構成された残差ブロックを動きおよびディスパリティ補償ユニット46によって生成された動き補償された予測ブロックに加算する。参照ブロックは、後続のビデオフレームまたはピクチャ中のブロックをインター予測するために、動きおよびディスパリティ推定ユニット44と動きおよびディスパリティ補償ユニット46とによって参照ブロックとして使用され得る。
[00172]このようにして、ビデオエンコーダ20は、本開示で説明する1つまたは複数の例示的な技法を実装するように構成され得るビデオエンコーダの一例である。たとえば、ビデオデータメモリ40はビデオデータを記憶する。ビデオデータは、ビデオエンコーダ20が、3D−AVC準拠ビデオコーディングプロセスまたは3D−HEVC準拠ビデオコーディングプロセスにおいてその各々を符号化すべきである、依存ビューのテクスチャビデオコンポーネントおよびテクスチャビューコンポーネントに対応する深度ビューコンポーネントを含み得る。
[00173]本開示で説明する技法では、ビデオエンコーダ20は、3D−AVC準拠ビデオコーディングプロセスまたは3D−HEVC準拠ビデオコーディングプロセスにおいて、ビデオデータの依存ビューのテクスチャビューコンポーネントを符号化するように構成された1つまたは複数のプロセッサを含み得る。上記で説明したように、3D−AVCにおける各ビューは、テクスチャビューコンポーネントと深度ビューコンポーネントとを含む。3D−AVCでは、1つのベースビューおよび1つまたは複数の拡張または依存ビューがあり、ここで、1つまたは複数の拡張または依存ビューのテクスチャビューコンポーネントはインタービュー予測され得る。
[00174]テクスチャビューコンポーネントを符号化するために、ビデオエンコーダ20は、少なくとも1つの隣接ブロックが、依存ビュー以外のビュー中のインタービュー参照ピクチャを指すディスパリティ動きベクトルを用いてインタービュー予測されるかどうかを決定するために、テクスチャビューコンポーネント中の現在のブロックの1つまたは複数の隣接ブロックの動き情報を評価するように構成され得る。ビデオエンコーダ20は、隣接ブロックのうちの1つに関するディスパリティ動きベクトルに基づいて、現在のブロックに関するディスパリティベクトルを導出し得る。テクスチャ優先コーディングの場合、ビデオエンコーダ20は、テクスチャビューコンポーネントを符号化することに続いて、テクスチャビューコンポーネントに対応する、ビデオデータの深度ビューコンポーネントを符号化し得る。
[00175]いくつかの例では、ビデオエンコーダ20の予測処理ユニット42は、本開示で説明する例を実装するように構成されたプロセッサの一例であり得る。いくつかの例では、予測処理ユニット42以外のユニット(たとえば、1つまたは複数のプロセッサ)が、上記で説明した例を実装し得る。いくつかの例では、予測処理ユニット42は、ビデオエンコーダ20の1つまたは複数の他のユニットとともに、上記で説明した例を実装し得る。いくつかの例では、(図15に示されていない)ビデオエンコーダ20のプロセッサは、単独で、またはビデオエンコーダ20の他のプロセッサとともに、上記で説明した例を実装し得る。
[00176]図16は、本開示で説明するARP技法を実装し得るビデオデコーダの一例を示すブロック図である。図16は、本開示で説明する技法を実装し得るビデオデコーダの一例を示すブロック図である。たとえば、図16は、3D−AVC準拠ビデオデコーダまたは3D−HEVC準拠ビデオデコーダのいずれかを表し得る、ビデオデコーダ30を示す。ビデオデコーダ30は、PU、TU、およびCUなど、あるHEVC用語を使用して説明するが、ビデオデコーダ30に関して説明する技法はまた、H.264規格に従ってコーディングされたビデオを用いて実施され得ることを理解されたい。
[00177]ビデオデコーダ30は、インター予測復号またはイントラ予測復号を実施し得る。図16はビデオデコーダ30を示す。図16の例では、ビデオデコーダ30は、ビデオデータメモリ69と、エントロピー復号ユニット70と、予測処理ユニット71と、逆量子化処理ユニット76と、逆変換処理ユニット78と、加算器80と、参照ピクチャメモリ82とを含む。予測処理ユニット71は、動きおよびディスパリティ補償ユニット72と、イントラ予測ユニット74とを含む。ビデオデコーダ30は、いくつかの例では、図15のビデオエンコーダ20に関して説明した符号化パスとは概して逆の復号パスを実施し得る。
[00178]ビデオデータメモリ69は、ビデオデコーダ30の構成要素によって復号されるべき、符号化されたビデオビットストリームなどのビデオデータを記憶し得る。ビデオデータメモリ69内に記憶されたビデオデータは、たとえば、ストレージデバイス34から、カメラなどのローカルビデオソースから、ビデオデータのワイヤードまたはワイヤレスネットワーク通信を介して、あるいは物理データ記憶媒体にアクセスすることによって得られ得る。ビデオデータメモリ69は、符号化されたビデオビットストリームからの符号化されたビデオデータを記憶する、コード化されたピクチャバッファ(CPB)を形成し得る。
[00179]参照ピクチャメモリ82は、(たとえば、イントラコーディングモードまたはインターコーディングモードで)ビデオデコーダ30によってビデオデータを復号する際に使用する参照ビデオデータを記憶する復号されたピクチャバッファ(DPB)の一例である。ビデオデータメモリ69および参照ピクチャメモリ82は、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗性RAM(RRAM)、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ69および参照ピクチャメモリ82は、同じメモリデバイスまたは別個のメモリデバイスによって与えられ得る。様々な例では、ビデオデータメモリ69は、ビデオデコーダ30の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
[00180]復号プロセスの間、ビデオデコーダ30は、符号化されたビデオスライスのビデオブロックおよび関連するシンタックス要素を表す符号化されたビットストリームをビデオエンコーダ20から受信する。ビデオデコーダ30のエントロピー復号ユニット70は、量子化係数、動きベクトル、および他のシンタックス要素を生成するために、ビットストリームをエントロピー復号する。エントロピー復号ユニット70は、予測処理ユニット71に動きベクトルと他のシンタックス要素とを転送する。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルでシンタックス要素を受信し得る。
[00181]ビデオスライスがイントラコード化された(I)スライスとしてコーディングされたとき、予測処理ユニット71のイントラ予測ユニット74は、シグナリングされたイントラ予測モードと、現在のフレームまたはピクチャの前に復号されたブロックからのデータとに基づいて、現在のビデオスライスのビデオブロックのための予測データを生成し得る。ビデオフレームがインターコード化された(すなわち、BまたはP)スライスとしてコーディングされたとき、予測処理ユニット71の動きおよびディスパリティ補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルおよび他のシンタックス要素に基づいて現在のビデオスライスのビデオブロックのための予測ブロックを生成する。予測ブロックは、参照ピクチャリストのうちの1つ内の参照ピクチャのうちの1つから生成され得る。ビデオデコーダ30は、参照ピクチャメモリ82内に記憶された参照ピクチャに基づいて、デフォルト構成技法を使用して、参照ピクチャリスト(RefPicList0およびRefPicList1)を構成し得る。
[00182]動きおよびディスパリティ補償ユニット72は、動きベクトルと他のシンタックス要素とをパースすること(parsing)によって現在のビデオスライスのビデオブロックのための予測情報を決定し、復号されている現在のビデオブロックのための予測ブロックを生成するためにその予測情報を使用する。たとえば、動きおよびディスパリティ補償ユニット72は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(たとえば、イントラ予測またはインター予測)と、インター予測スライスタイプ(たとえば、BスライスまたはPスライス)と、スライスに関する参照ピクチャリストのうちの1つまたは複数のための構成情報と、スライスの各インター符号化されたビデオブロックのための動きベクトルと、スライスの各インターコード化されたビデオブロックのためのインター予測ステータスと、現在のビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、受信されたシンタックス要素のうちのいくつかを使用する。
[00183]動きおよびディスパリティ補償ユニット72は、本開示で説明するARP技法を実施するように構成され得る。一例として、ARPを使用してコーディングされた双方向予測された現在のブロックについて、動きおよびディスパリティ補償ユニット72は、現在のブロックのための第1のディスパリティ動きベクトルを決定し、第1のディスパリティ動きベクトルを使用して、第2のビュー中の現在のブロックの第1の対応するブロックの位置を特定し得る。動きおよびディスパリティ補償ユニット72はまた、現在のブロックに関する第2のディスパリティ動きベクトルを決定し、第2のディスパリティ動きベクトルを使用して、第3のビュー中の現在のブロックの第2の対応するブロックの位置を特定し得る。第1の対応するブロックおよび第2の対応するブロックの動き情報から、動きおよびディスパリティ補償ユニット72は単一の動きベクトルを決定し得る。動きおよびディスパリティ補償ユニット72は、現在のブロックの参照ブロック、第1の対応するブロックの参照ブロック、および第2の対応するブロックの参照ブロックを決定するために、この単一の動きベクトルを使用し得る。動きおよびディスパリティ補償ユニット72は、第1の対応するブロック、現在のブロックの参照ブロック、および第1の対応するブロックの参照ブロックに基づいて、第1の予測ブロックを生成し、第2の対応するブロック、現在のブロックの参照ブロック、および第2の対応するブロックの参照ブロックに基づいて、第2の予測ブロックを生成し得る。
[00184]動きおよびディスパリティ補償ユニット72は、さらに構成され得、たとえば、動きおよびディスパリティ補償ユニット72は、第1のビューの現在のブロックが高度残差予測(ARP)モードを使用してコーディングされ、現在のブロックが双方向予測されると決定し得る。現在のブロックのルーマブロックについて、動きおよびディスパリティ補償ユニット72は、ルーマブロックの第1の予測ブロックを決定するために、第1の予測方向に関するARPを実施し、ルーマブロックの第2の予測ブロックを決定するために、第2の予測方向に関するARPを実施し得る。現在のブロックのクロマブロックについて、動きおよびディスパリティ補償ユニット72は、クロマブロックの第1の予測ブロックを決定するために、第1の予測方向または第2の予測方向のうちの1つのみに関するARPを実施し得る。
[00185]動きおよびディスパリティ補償ユニット72は、さらに構成され得、たとえば、動きおよびディスパリティ補償ユニット72は、第1のビューの現在のブロックがARPモードを使用してコーディングされると決定し得る。現在のブロックのルーマブロックについて、動きおよびディスパリティ補償ユニット72は、ルーマブロックの予測ブロックを決定するために、ARPを実施し得る。現在のブロックのクロマブロックについて、動きおよびディスパリティ補償ユニット72は、クロマブロックのサイズに基づいて、クロマブロックについてARPを実施すべきかどうかを決定し得る。一例として、動きおよびディスパリティ補償ユニット72は、クロマブロックのサイズが8×8であることに応答して、ARPを無効にし得る。別の例として、動きおよびディスパリティ補償ユニット72は、クロマブロックのサイズが32×32よりも小さいことに応答して、ARPを無効にし得る。別の例として、動きおよびディスパリティ補償ユニット72は、クロマブロックのサイズがN×Nに等しいこと、および現在のブロックがサブPUを備えることに応答して、ARPを無効にし得、ここにおいて、Nは8、16、32、または64のうちの1つに等しい。別の例として、動きおよびディスパリティ補償ユニット72は、クロマブロッキングのサイズがN×Nであること、および現在のブロックがPUを備えることに応答して、ARPを実施し得る。別の例として、動きおよびディスパリティ補償ユニット72は、クロマブロックのサイズがN×Nに等しいこと、および現在のブロックがサブPUを備えることに応答して、ARPを無効にし、クロマブロッキングのサイズがM×Mであること、および現在のブロックがPUを備えることに応答して、ARPを実施し得、ここにおいて、NおよびMは8、16、32、および64のうちの1つに等しく、ここにおいて、MはNよりも小さい。
[00186]動きおよびディスパリティ補償ユニット72はまた、補間フィルタに基づいて補間を実施し得る。動きおよびディスパリティ補償ユニット72は、参照ブロックのサブ整数ピクセルの補間された値を計算するために、ビデオブロックの符号化中にビデオエンコーダ20によって使用された補間フィルタを使用し得る。この場合、動きおよびディスパリティ補償ユニット72は、受信されたシンタックス要素からビデオエンコーダ20によって使用された補間フィルタを決定し、予測ブロックを生成するためにその補間フィルタを使用し得る。
[00187]逆量子化処理ユニット76は、ビットストリーム中で与えられ、エントロピー復号ユニット70によって復号された、量子化変換係数を逆量子化(inverse quantize)(すなわち、逆量子化(de-quantize))する。逆量子化プロセスは、量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定するための、ビデオスライス中の各ビデオブロックについてビデオエンコーダ20によって計算される量子化パラメータの使用を含み得る。逆変換処理ユニット78は、ピクセル領域において残差ブロックを生成するために、逆変換(たとえば、逆DCT、逆整数変換、または概念的に同様の逆変換プロセス)を変換係数に適用する。
[00188]動きおよびディスパリティ補償ユニット72が、動きベクトルと他のシンタックス要素とに基づいて現在のビデオブロックのための予測ブロックを生成した後、ビデオデコーダ30は、逆変換処理ユニット78からの残差ブロックを動きおよびディスパリティ補償ユニット72によって生成された対応する予測ブロックと加算することによって、復号されたビデオブロックを形成する。加算器80は、この加算演算を実施する1つまたは複数の構成要素を表す。所望される場合、ブロッキングアーティファクトを除去するために、復号されたブロックをフィルタ処理するためのデブロッキングフィルタも適用され得る。(コーディングループ中またはコーディングループ後のいずれかに)他のループフィルタも、ピクセル遷移を平滑化するか、または場合によってはビデオ品質を改善するために使用され得る。所与のピクチャ中の復号されたビデオブロックは、次いで、その後の動き補償のために使用される参照ピクチャを記憶する参照ピクチャメモリ82内に記憶される。参照ピクチャメモリ82はまた、図1のディスプレイデバイス32などのディスプレイデバイス上で後で提示するために復号されたビデオを記憶する。
[00189]このようにして、ビデオデコーダ30は、本開示で説明する1つまたは複数の例示的な技法を実装するように構成され得るビデオデコーダの一例である。たとえば、ビデオデータメモリ69はビデオデータを記憶する。ビデオデータは、ビデオエンコーダ20が、3D−AVC準拠ビデオコーディングプロセスまたは3D−HEVC準拠ビデオコーディングプロセスにおいてその各々を符号化された、依存ビューのテクスチャビデオコンポーネントおよびテクスチャビューコンポーネントに対応する深度ビューコンポーネントをビデオデコーダ30がそれから復号することができる情報を含み得る。
[00190]本開示で説明する技法では、ビデオデコーダ30は、3D−AVC準拠ビデオコーディングプロセスまたは3D−HEVC準拠ビデオコーディングプロセスにおいて、ビデオデータの依存ビューのテクスチャビューコンポーネントを復号するように構成された1つまたは複数のプロセッサを含み得る。テクスチャビューコンポーネントを復号するために、ビデオデコーダ30は、少なくとも1つの隣接ブロックが、依存ビュー以外のビュー中のインタービュー参照ピクチャを参照するディスパリティ動きベクトルを用いてインタービュー予測されるかどうかを決定するために、テクスチャビューコンポーネント中の現在のブロックの1つまたは複数の隣接ブロックの動き情報を評価するように構成され得る。ビデオデコーダ30は、隣接ブロックのうちの1つに関するディスパリティ動きベクトルに基づいて、現在のブロックに関するディスパリティベクトルを導出し得る。テクスチャ優先コーディングのために、ビデオエンコーダ30は、テクスチャビューコンポーネントを復号することに続いて、テクスチャビューコンポーネントに対応する、ビデオデータの深度ビューコンポーネントを復号し得る。
[00191]いくつかの例では、ビデオデコーダ30の予測処理ユニット71は、本開示で説明する例を実装するように構成されたプロセッサの一例であり得る。いくつかの例では、予測処理ユニット71以外のユニット(たとえば、1つまたは複数のプロセッサ)が、上記で説明した例を実装し得る。いくつかの例では、予測処理ユニット71は、ビデオデコーダ30の1つまたは複数の他のユニットとともに、上記で説明した例を実装し得る。さらにいくつかの他の例では、(図16に示されていない)ビデオデコーダ30のプロセッサは、単独で、またはビデオデコーダ30の他のプロセッサとともに、上記で説明した例を実装し得る。
[00192]図16は、本開示の技法による、ビデオブロックを予測する例示的な方法を示す。図16の技法は、たとえば、ビデオデコーダ30の動きおよびディスパリティ補償ユニット72によって、あるいはビデオエンコーダ20の動きおよびディスパリティ推定ユニット44または動きおよびディスパリティ補償ユニット46によって実施され得る。図16の技法によれば、ビデオコーダは、第1のビューの現在のブロックがARPモードを使用してコーディングされ、現在のブロックが双方向予測されると決定し得る(250)。ビデオコーダは、現在のブロックに関する第1のディスパリティ動きベクトルおよび第2のディスパリティ動きベクトルを決定し得る(252)。ビデオコーダは、第1のディスパリティ動きベクトルを用いて、第2のビュー中の現在のブロックの第1の対応するブロックの位置を特定し得る(254)。ビデオコーダはまた、第2のディスパリティ動きベクトルを用いて、第3のビュー中の現在のブロックの第2の対応するブロックの位置を特定し得る(256)。ビデオコーダは、現在のブロックの第1の対応するブロックおよび現在のブロックの第2の対応するブロックのうちの少なくとも1つの動き情報から動きベクトルを決定し得る(258)。動きベクトルを使用して、ビデオコーダは、第1のビュー中の現在のブロックの参照ブロック、第2のビュー中の第1の対応するブロックの参照ブロック、および第3のビュー中の第2の対応するブロックの参照ブロックを識別し得る(260)。図17の例では、第2のビューおよび第3のビューは、同じビューまたは異なるビューのいずれかであり得るが、一般に第1のビューとは異なることになる。
[00193]ビデオコーダは、第1の対応するブロックと、現在のブロックの参照ブロックと、第1の対応するブロックの参照ブロックとに基づいて、第1の予測ブロックを生成し得る(262)。ビデオコーダは、第2の対応するブロックと、現在のブロックの参照ブロックと、第2の対応するブロックの参照ブロックとに基づいて、第2の予測ブロックを生成し得る(264)。ビデオコーダは、たとえば、現在のブロックの参照ブロックと、第2の対応するブロックの参照ブロックとの間の差に対応する残差予測子を決定することによって、第2の予測ブロックを生成し得る。ビデオコーダは、予測ブロックを生成するために、第2の対応するブロックに残差予測子を加算し得、第2の対応するブロックに残差予測子を加算する前に、残差予測子に重み付け係数を適用し得る。
[00194]ビデオコーダは、たとえば、現在のブロックの第1の対応するブロックに関する動きベクトルが利用不可能であることに応答して、動きベクトルのためにゼロ動きベクトルを使用することによって、第1の対応するブロックおよび現在のブロックの第2の対応するブロックのうちの少なくとも1つの動き情報から動きベクトルを決定し得る。別の例では、ビデオコーダは、現在のブロックの第1の対応するブロックに関する動きベクトルが利用不可能であることに応答して、動きベクトルとして現在のブロックの第2の対応するブロックに関する動きベクトルを使用することによって、現在のブロックの第1の対応するブロックおよび現在のブロックの第2の対応するブロックのうちの少なくとも1つの動き情報から動きベクトルを決定し得る。別の例では、ビデオコーダは、現在のブロックの第1の対応するブロックに関する動きベクトルが利用不可能であること、および現在のブロックの第2の対応するブロックに関する動きベクトルが利用不可能であることに応答して、動きベクトルのためにゼロ動きベクトルを使用することによって、現在のブロックの第1の対応するブロックおよび現在のブロックの第2の対応するブロックのうちの少なくとも1つの動き情報から動きベクトルを決定し得る。
[00195]いくつかのコーディングシナリオの下で、ビデオコーダはARPを無効にし得る。たとえば、第2の現在のブロックの第1の対応するブロックに関する動きベクトルが利用不可能であることに応答して、ビデオコーダはARPを無効にし得る。別の例では、第2の現在のブロックの第1の対応するブロックに関する動きベクトルが利用不可能であること、および第2の現在のブロックの第2の対応するブロックに関する動きベクトルが利用不可能であることに応答して、ビデオコーダは第2の現在のブロックについてARPを無効にし得る。
[00196]図17は、本開示の技法による、ビデオブロックを予測する例示的な方法を示す。図17の技法は、たとえば、ビデオデコーダ30の動きおよびディスパリティ補償ユニット72によって、あるいはビデオエンコーダ20の動きおよびディスパリティ推定ユニット44または動きおよびディスパリティ補償ユニット46によって実施され得る。図17の技法によれば、ビデオコーダは、第1のビューの現在のブロックがARPモードを使用してコーディングされ、現在のブロックが双方向予測されると決定し得る(270)。現在のブロックのルーマブロックについて、ビデオコーダは、ルーマブロックの第1の予測ブロックを決定するために、第1の予測方向に関するARPを実施し得る(272)。現在のブロックのルーマブロックについて、ビデオコーダは、ルーマブロックの第2の予測ブロックを決定するために、第2の予測方向に関するARPを実施する(274)。現在のブロックのクロマブロックについて、ビデオコーダは、クロマブロックの第1の予測ブロックを決定するために、第1の予測方向または第2の予測方向のうちの1つのみに関するARPを実施し得る(276)。
[00197]図18は、本開示の技法による、ビデオブロックを予測する例示的な方法を示す。図18の技法は、たとえば、ビデオデコーダ30の動きおよびディスパリティ補償ユニット72によって、あるいはビデオエンコーダ20の動きおよびディスパリティ推定ユニット44または動きおよびディスパリティ補償ユニット46によって実施され得る。図18の技法によれば、ビデオコーダは、第1のビューの現在のブロックがARPモードを使用してコーディングされると決定し得る(280)。現在のブロックのルーマブロックについて、ビデオコーダは、ルーマブロックの予測ブロックを決定するために、ARPを実施し得る(282)。現在のブロックのクロマブロックについて、ビデオコーダは、クロマブロックのサイズに基づいて、クロマブロックについてARPを実施すべきかどうかを決定し得る。
[00198]一例では、ビデオコーダは、クロマブロックのサイズが8×8であることに応答して、ARPを無効にすることによって、クロマブロックのサイズに基づいて、クロマブロックについてARPを実施すべきかどうかを決定し得る。別の例では、ビデオコーダは、クロマブロックのサイズが32×32よりも小さいことに応答して、ARPを無効にすることによって、クロマブロックのサイズに基づいて、クロマブロックについてARPを実施すべきかどうかを決定し得る。別の例では、ビデオコーダは、クロマブロックのサイズがN×Nに等しいこと、および現在のブロックがサブPUを備えることに応答して、ARPを無効にすることによって、クロマブロックのサイズに基づいて、クロマブロックについてARPを実施すべきかどうか、ならびにクロマブロッキングのサイズがN×Nであること、および現在のブロックがPUを備えることに応答して、ARPを実施すべきかどうか、を決定し得る。Nは、たとえば、8、16、32、または64のうちの1つに等しいことがある。別の例では、ビデオコーダは、クロマブロックのサイズがN×Nに等しいこと、および現在のブロックがサブPUを備えることに応答して、ARPを無効にすることによって、ならびにクロマブロッキングのサイズがM×Mであること、および現在のブロックがPUを備えることに応答して、ARPを実施することによって、クロマブロックのサイズに基づいて、クロマブロックについてARPを実施すべきかどうかを決定し得る。NおよびMは、たとえば、8、16、32、および64のうちの1つに等しいことがあり、MはNよりも小さいことがある。
[00199]1つまたは複数の例では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応する、コンピュータ可読記憶媒体を含み得るか、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的である有形コンピュータ可読記憶媒体、あるいは(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明する技法の実装のための命令、コードおよび/またはデータ構造を取り出すために、1つまたは複数のコンピュータまたは1つまたは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
[00200]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは命令またはデータ構造の形態で所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびBlu−rayディスク(disc)を含み、ここで、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
[00201]命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、あるいは他の等価な集積回路またはディスクリート論理回路など、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用する「プロセッサ」という用語は、上記の構造または本明細書で説明した技法の実装に好適な任意の他の構造のいずれかを指し得る。さらに、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成された専用のハードウェアおよび/またはソフトウェアモジュール内に与えられるか、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素で十分に実装され得る。
[00202]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置で実装され得る。本開示では、開示する技法を実施するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットが説明されたが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、上記で説明したように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明した1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作ハードウェアユニットの集合によって与えられ得る。
[00203]様々な例が説明された。これらおよび他の例は以下の特許請求の範囲内に入る。