[0027]本開示は、テクスチャビューと深度ビューとを含む3次元(3D)ビデオコンテンツのコード化のための様々な技法について説明する。より具体的には、参照中のブロックを識別するためにビュー間動き予測が適用されるときに、異なる方法が提供される。技法は、幾つかの態様では、ビデオエンコーダによって実行され得る。他の態様では、技法は、ビデオデコーダによって実行され得る。更に、そのような方法は、トランスコーダ、メディアアウェアネットワーク要素(MANE)などのような、他の機器において実行され得る。本開示では、技法は、説明のために、ビデオエンコーダ及びビデオデコーダに関して記載される。例えば、ビデオエンコーダ及びビデオデコーダは、例えば先進残差コード化又はビュー間予測コード化において、現在のブロックに関連する参照ビュー中の対応するブロックへのアクセスを必要とするコード化ツールを利用することができる。
[0028]ビデオコード化(例えば、符号化又は復号)の幾つかの例では、ビデオコーダ(例えば、ビデオエンコーダ又はビデオデコーダ)は、コード化される(例えば、符号化又は復号される)べき現在のブロックについての視差ベクトルを決定する。視差ベクトルは、現在のブロックを含むビュー以外のビュー中の(対応するブロックとも呼ばれる)参照ブロックを参照する。視差ベクトルは、幾つかの例として、ビュー間動き予測、ビュー間残差予測など、現在のブロックを符号化又は復号するために使用される様々なビデオコード化ツール、及び視差ベクトルが視差動きベクトルに変換されるビデオコード化ツールによって使用される。本開示で説明する技法は、現在のブロックについての視差ベクトルに基づいて参照ブロックを識別する方法について説明する。
[0029]参照ブロックを識別するために、ビデオコーダは、視差ベクトルの値に開始位置の座標を加算することができる。例えば、視差ベクトルはx成分とy成分とを含む。ビデオコーダは、視差ベクトルのx成分に開始位置のx座標を加算し、視差ベクトルのy座標に開始位置のy座標を加算する。得られる値は、終了位置における画素のx座標及びy座標であり得る。ビデオコーダは、得られた座標値により位置(即ち、画素)を包含するブロックを決定し、そのブロックを、現在のブロックについての参照ブロックとして識別することができる。
[0030]幾つかの例では、ビデオコーダは、参照ビューの参照ピクチャ中の位置C0に位置する画素を視差ベクトルが参照するように、視差ベクトルの開始位置を設定することができる。ビデオコーダは、視差ベクトルの値に基づいて(例えば、視差ベクトルのx成分及びy成分に基づいて)参照ビューの参照ピクチャ中の位置C0を決定する。
[0031]参照ビューの参照ピクチャ中の位置C0を視差ベクトルの値に基づいて決定するための式については、以下でより詳細に説明する。一般に、視差ベクトルの開始位置は、現在のブロックの中心サブブロック中の左上画素として、視差ベクトルが位置C0を参照するように決定される。現在のブロックの中心は、2×2サブブロック(例えば、中心サブブロック)を形成すると考えられ得る4つの画素を含む。視差ベクトルの開始位置がこの2×2サブブロック中の左上画素である場合、視差ベクトルは、参照ビューの参照ピクチャ中の位置C0を参照する(例えば、視差ベクトルの終了ポイントは、参照ピクチャ中の位置C0である)。
[0032]幾つかの例では、2×2中心サブブロックの位置は、ブロックの長さ及び幅を2で割ることによって計算され得る。2×2中心サブブロックの左上隅のx座標は、現在のブロックの左上隅のx座標に、幅を2で割った値を足し、1を引いた値である。2×2中心サブブロックの左上隅のy座標は、現在のブロックの左上隅のy座標に、高さを2で割った値をパルスにし、1を引いた値である。2×2中心サブブロックの右上隅は、2×2中心サブブロックの左上隅における画素のすぐ右に位置する画素であり、2×2中心サブブロックの左下隅は、2×2中心サブブロックの左上隅における画素のすぐ下に位置する画素であり、2×2中心サブブロックの右下隅は、2×2中心サブブロックの左下隅における画素のすぐ右、右上隅における画素のすぐ下、及び左上隅の対角線上の右下に位置する画素である。
[0033]ビデオコーダは、位置C0に位置する画素をカバーする(即ち、含む)参照ピクチャ中のブロックを決定することができる。次いでビデオコーダは、決定されたブロックを、視差ベクトルに依存するビデオコード化ツールに(例えば、幾つかの非限定的な例として、ビュー間動き予測、ビュー間残差予測、及び/又はブロックベースのビュー合成予測に)使用される現在のブロックについての(対応するブロックとも呼ばれる)参照ブロックとして識別することができる。
[0034]しかしながら、位置C0に位置する画素をカバーするブロックを参照ブロックとして利用することは、十分なコード化効率をもたらさないことがある。例えば、統計的傾向は、位置C0以外の位置に位置する画素をカバーするブロックが、現在のブロックについての参照ブロックとしてより良い候補であり得ることを示し得る。従って、視差ベクトルの開始位置を、現在のブロック内の2×2中心サブブロックの左上画素の位置に等しく設定すると、最適なコード化効率をもたらさないことがあるブロックを識別することになり得る。
[0035]本開示は、参照ビューの参照ピクチャ中の位置C0に位置する画素以外の画素の位置を決定し、当該他の画素をカバーするブロックを、現在のブロックについての参照ブロック(例えば、対応するブロック)として識別する例示的な技法について説明する。一例として、本開示は、位置C0に位置する画素の右下に位置する参照ピクチャ中の画素の位置を決定するための技法について説明する。例えば、位置C0に位置する画素の右下に位置する画素は、C0に位置する画素の位置に対して、参照ピクチャ内で絶対的ではない(1,1)に位置すると考えられ得る。
[0036]C0に位置する画素の右下に位置する参照ピクチャ中の画素の位置は、本開示では位置C3と呼ばれる。ビデオコーダは、視差ベクトルの値(例えば、視差ベクトルのx成分及びy成分)及び以下でより詳細に説明する位置C3を決定するための式に基づいて、位置C3を決定する。ビデオコーダが位置C3に位置する画素を決定する例では、ビデオコーダは、位置C3に位置する画素をカバーする(即ち、含む)ブロックを決定し、決定されたブロックを、現在のブロックについての参照ブロックとして識別することができる。
[0037]上述のように、位置C3は、位置C0の右に1画素、下に1画素進んだ所に位置する。従って、現在のブロック内の視差ベクトルの開始位置も右に1画素、下に1画素だけ変更された場合、視差ベクトルは、今度は位置C3を参照することになる。例えば、上述のように、視差ベクトルが現在のブロック内の中心2×2サブブロックの左上画素から開始する場合、視差ベクトルは、参照ビューの参照ピクチャ中の位置C0を参照する。従って、視差ベクトルの開始位置が右に1画素、下に1画素だけシフトした場合(即ち、現在のブロック内の中心2×2サブブロックの右下画素)、視差ベクトルは位置C3を参照する。
[0038]本開示で説明する1つ又は複数の例示的な技法では、ビデオコーダは、中心2×2サブブロックの左上画素から開始する視差ベクトルによって参照される位置をカバーするブロックを決定するのではなく、中心2×2サブブロックの右下画素から開始する視差ベクトルによって参照される位置をカバーする参照ビューの参照ピクチャ内のブロックを決定し、そのブロックを参照ブロックとして識別することができる。言い換えれば、ビデオコーダは、中心2×2サブブロックの左上画素から開始する視差ベクトルによって参照される位置C0をカバーするブロックではなく、中心2×2サブブロックの右下画素から開始する視差ベクトルによって参照される位置C3をカバーする参照ビュー中の参照ピクチャ中のブロックを、参照ブロックとして識別することができる。
[0039]幾つかの例では、位置C3を決定するのではなく、ビデオコーダは、中心2×2サブブロックの右上画素から視差ベクトルを開始することによって、(位置C1に位置する画素と呼ばれる)位置C0に位置する画素の右に位置する画素の位置を決定すること、又は中心2×2サブブロックの左下画素から視差ベクトルを開始することによって、(位置C2に位置する画素と呼ばれる)位置C0に位置する画素の下に位置する画素の位置を決定することができる。これらの例では、ビデオコーダは、位置C1に位置する画素又は位置C2に位置する画素をカバーする参照ビュー中の参照ピクチャ中のブロックを決定し、決定されたブロックを、現在のブロックについての参照ブロックとして識別することができる。
[0040]上記の例では、位置C0、C1、C2、又はC3のうちの1つに位置する画素を決定するために、ビデオコーダは、視差ベクトルが位置C0、C1、C2、又はC3のうちの1つに位置する画素を指すように、視差ベクトルの開始位置を設定することができる。例えば、ビデオコーダは、視差ベクトルの値に開始位置の座標値を加算し、得られる座標値が位置C0、C1、C2、又はC3のうちの1つについての座標値になるようにする。このようにして、視差ベクトルの開始位置を適切に設定することによって、ビデオコーダは視差ベクトルに、位置C0、C1、C2、又はC3のうちの1つに位置する画素のうちの1つを参照させることができる。
[0041]参照ビューの参照ピクチャ中の位置C3に位置する画素をカバーするブロックが動き情報を含まない(例えば、イントラ予測される)か、又は視差ベクトルに依存し、現在のブロックをコード化するために使用されるビデオコード化ツールに動き情報が利用不可能である場合、ビデオコーダは、このコード化ツールが現在のブロックに利用可能ではないと決定し得る。しかしながら、技法は、そのように限定されない。
[0042]幾つかの例では、ビデオコーダは、位置C3に位置する画素をカバーする参照ビューの参照ピクチャ中のブロックを決定することがあり、位置C3に関連するブロックについての動き情報が、(例えば、ブロックがイントラ予測されるか、又は動き情報が使用可能ではないので)視差ベクトルに依存するビデオコード化ツールのうちの1つ又は複数に利用不可能である場合、ビデオコーダは続いて、位置C0に位置する画素をカバーする参照ビューの参照ピクチャ中のブロックを決定し得る。次いでビデオコーダは、位置C0に位置する画素をカバーするブロックを参照ブロックとして識別することができる。幾つかの例では、ビデオコーダは、反対のステップを実行することができる(例えば、位置C0に位置する画素をカバーするブロックが、視差ベクトルに依存するビデオコード化ツールに使用可能な動き情報を含まない場合、ビデオコーダは、位置C3に位置する画素をカバーするブロックを参照ブロックとして識別する)。
[0043]位置C3に位置する画素をカバーするブロック及び位置C0に位置する画素をカバーするブロックが、視差ベクトルに依存するビデオコード化ツールに利用可能である動き情報を含まない場合、ビデオコーダは、視差ベクトルに依存するビデオコード化ツールのうちの1つ又は複数が現在のブロックに利用可能ではないと決定することができる。幾つかの例では、ビデオコード化ツールのうちの1つ又は複数が利用可能ではないと決定するのではなく、ビデオコーダは、位置C1又は位置C2に位置する画素をカバーするそれぞれのブロックが、ビデオコード化ツールのうちの1つ又は複数に利用可能な動き情報を含むかどうかを決定し、そのようなブロックを、現在のブロックについての参照ブロックとして識別することができる。
[0044]以下でより詳細に説明する位置BR0、BR1、又はBR2に位置するブロックなどの追加のオプションもあり得る。例えば、ビデオコーダは、参照ビューの参照ピクチャ中の位置BR0、BR1、又はBR2に位置するブロックについての動き情報が、視差ベクトルに依存する1つ又は複数のビデオコード化ツールに使用可能な、又は望ましい動き情報を含むかどうかを決定し、ブロックBR0、BR1、又はBR2のうちの決定された1つを、現在のブロックについての参照ブロックとして識別することができる。
[0045]視差ベクトルが現在のブロックの左上隅から開始する場合、参照ビューの参照ピクチャ中のブロックBR0の位置は、視差ベクトルによって参照されるブロックの右下にあるブロックの位置に等しい。ブロックBR1の位置は、ブロックBR0の右下にあり、ブロックBR2の位置は、ブロックBR1の右下にある。例えば、参照ピクチャ内の絶対位置ではなく、相対的に見ると、ブロックBR1はブロックBR0に対して(1,1)に位置し、ブロックBR2はブロックBR0に対して(2,2)に位置する。
[0046]幾つかの例では、ビデオコーダは、現在のブロックの左上隅から開始する視差ベクトルに基づいて、参照ビューの参照ピクチャ中の位置を決定することができる。ビデオコーダは、参照ビューの参照ピクチャ中の4×4ブロックの左上隅として、決定された位置が位置合わせされるように、決定された位置をシフトさせ、量子化することができる。次いでビデオコーダは更に、参照ピクチャ内の別のブロックの位置を決定するために、決定された位置を(例えば、右に、下に、又は両方の組合せの方向に)シフトさせることができる。ビデオコーダはこのブロックを、現在のピクチャについての参照ブロックとして識別することができる。
[0047]参照ブロックを識別するための上記の例示的な技法は、ビデオコーダが、位置C3、次いでC0、次いでC1、次いでC2における画素をカバーするブロック、次いで位置BR0、次いでBR1、次いでBR2、次いでシフトした位置におけるブロックを決定することに関して説明されている。しかしながら、本開示で説明する技法は、そのように限定されない。参照ビューの参照ピクチャ中のブロックがチェックされる他の順列も可能であり、本開示で説明する技法によって企図される。
[0048]その上、ビデオコーダが参照ブロックを識別するためにこれらのブロックを1つずつチェックする必要はない。ビデオコーダは、視差ベクトルに依存するビデオコード化ツールのうちの1つ又は複数にこれらのブロックのうちの1つが適していると決定すると(即ち、ビデオコード化の決定に基づいて)すぐに、参照ブロックの探索を打ち切ることができる。
[0049]幾つかの例では、ビデオコーダは、参照ブロックがまったく識別されない場合でも、1つのブロックをチェックすることのみを含め、これらの例示的な位置のサブセットをチェックした後、参照ブロックの探索を打ち切ることができる。例えば、ビデオコーダは、位置C3に位置する画素をカバーするブロックが、1つ又は複数のビデオコード化ツールに利用可能な動き情報を含むかどうかを決定することができる。(例えば、ブロックがイントラコード化されるか、又はブロックの動きベクトルが視差動きベクトルであるか、又はブロックの動きベクトルが、現在のブロックの参照ピクチャリスト中にないピクチャを参照するので)動き情報が利用可能ではない場合、ビデオコーダは、チェックするべき他の考えられるブロックがあり得るとしても、参照ブロックの探索を打ち切り、参照ブロックが利用可能ではないと決定することができる。
[0050]視差ベクトルによって参照される参照ブロックを識別するための上記の技法は、単に理解を助けるために別個に説明されている。しかしながら、本開示で説明する技法は、そのように限定されず、組み合わされてよいことを理解されたい。更に、上記の例示的な技法は、ブロックに関連するシンタックス要素又は変数を識別することが必要とされる場合に任意のシナリオに一般化され得る。
[0051]また、上記の技法は、参照ブロックを識別するための暗示的技法(例えば、参照ブロックは常に、位置C3に位置する画素をカバーするブロックである、又は位置C3をカバーする参照ブロックを最初にチェックし、次いで位置C0に移動する、など)に関して説明されている。これらの技法は、参照ブロックを識別する方法についての情報をビデオエンコーダがビデオデコーダに信号伝達する必要がない(例えば、参照ブロックを識別する方法についての情報の明示的な信号伝達が必要とされない)という意味で暗示的である。幾つかの例では、ビデオエンコーダは、視差ベクトルに依存するビデオコード化ツールのための動き情報をそれぞれ含む複数のブロックをチェックし、チェックされる複数のブロックの中でどのブロックが最大のコード化効率をもたらすかを決定することができる。ビデオエンコーダは、次いで、参照ブロックとして使用されるブロックを示す情報をビデオデコーダに明示的に信号伝達することができ、ビデオデコーダはその情報から、どのブロックが参照ブロックであるべきかを決定することができる。
[0052]更に、上記の技法は、視差ベクトルに依存するビデオコード化ツールに関して説明されている。しかしながら、本開示で説明する技法は、そのように限定されない。例えば、上記の技法は、ブロックに関連するシンタックス要素又は変数を識別することが必要とされる場合に任意のシナリオに一般化され得る。
[0053]一般に、本開示で説明する技法では、ビデオコーダは、現在のビュー中の現在のピクチャ中の現在のブロックについての視差ベクトルを決定することができる。ビデオコーダは、参照ビュー中の参照ピクチャ中のブロックを、視差ベクトルが参照する参照ピクチャ中の位置に基づいて決定する(例えば、参照ピクチャ中の位置C3をカバーするブロックを決定する)ことができる。
[0054]ビデオコーダは、決定されたブロックに基づいて、現在のブロックをインター予測コード化する(例えば、符号化又は復号する)ことができる。例えば、以下でより詳細に説明するように、ビュー間動き予測では、ビデオコーダは、動きベクトル予測子のリストを形成する。参照ピクチャ中の決定されたブロックの動き情報は、動きベクトル予測子のうちの1つであり得る。決定されたブロックの動きベクトル情報が、現在のブロックをインター予測コード化する(例えば、インター予測符号化又はインター予測復号する)ために選択された場合、ビデオコーダは、参照ピクチャ中の決定されたブロックの動き情報に基づいて、現在のブロックをインター予測コード化する。
[0055]幾つかの例では、ビデオコーダは視差ベクトルを、現在のブロックについての視差動きベクトルに変換することができる。これらの例では、現在のブロックについての視差動きベクトルは、予測ブロックと考えられ得る参照ブロックを参照する。例えば、ビデオエンコーダは、インター予測符号化目的で参照ブロックの再構築を記憶するフィードバック経路を含み、ビデオコーダは、インター予測復号目的で参照ブロックの再構築を記憶した。参照ブロックの再構築は、予測ブロックと考えられ得る。ビデオコーダは、現在のブロックをコード化するために、参照ブロックの再構築(例えば、予測ブロック)と現在のブロックとの間の残差を決定する。
[0056]図1は、ブロック識別のための技法を実装又はさもなければ利用するように構成され得る例示的なビデオ符号化及び復号システム10を示すブロック図である。例えば、そのようなブロック識別技法は、ビュー間動き予測、ビュー間残差予測、視差ベクトルが視差動きベクトルに変換される例、又は視差ベクトルに依存する他のビデオコード化ツールの際に有用であり得る。ビュー間動き予測、ビュー間残差予測、及び視差ベクトルが視差動きベクトルに変換される例については、以下でより詳細に説明する。
[0057]図1に示すように、システム10は、宛先機器14によって後で復号されるべき符号化されたビデオデータを提供する発信源機器12を含む。特に、発信源機器12は、コンピュータ可読媒体16を介して宛先機器14にビデオデータを提供する。発信源機器12及び宛先機器14は、デスクトップコンピュータ、ノートブック(即ち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、所謂「スマート」フォンなどの電話ハンドセット、所謂「スマート」パッド、テレビジョン、カメラ、表示装置、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミング機器などを含む、広範囲にわたる機器のいずれかを備え得る。場合によっては、発信源機器12及び宛先機器14はワイヤレス通信のために装備され得る。
[0058]宛先機器14はリンク16を介して、復号されるべき符号化されたビデオデータを受信し得る。リンク16は、発信源機器12から宛先機器14に符号化されたビデオデータを移すことが可能な任意のタイプの媒体又は機器を備えることができる。一例では、リンク16は、発信源機器12が、符号化されたビデオデータをリアルタイムで宛先機器14に直接送信することを可能にするための通信媒体(ワイヤード媒体又はワイヤレス媒体)を備え得る。符号化されたビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調されてよく、宛先機器14に送信されてよい。通信媒体は、無線周波(RF)スペクトル又は1つ以上の物理伝送線路など、任意のワイヤレス通信媒体又はワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、又はインターネットなどのグローバルネットワークなど、パケットベースのネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、又は発信源機器12から宛先機器14への通信を促進するために有用であり得る任意の他の機器を含み得る。
[0059]幾つかの例では、符号化されたデータは、発信源機器12の出力インターフェース22から記憶装置31などの記憶装置に出力され得る。同様に、符号化されたデータは、宛先機器14の入力インターフェース28によって記憶装置31からアクセスされ得る。記憶装置31は、ハードドライブ、Blu−ray(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、揮発性又は不揮発性メモリ、若しくは符号化されたビデオデータを記憶するための任意の他の適切なデジタル記憶媒体など、様々な分散した又はローカルでアクセスされるデータ記憶媒体のいずれかを含み得る。更なる一例では、記憶装置31は、発信源機器12によって生成された符号化されたビデオを記憶することができるファイルサーバ又は別の中間記憶装置に対応し得る。宛先機器14は、ストリーミング又はダウンロードを介して記憶装置から記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶し、その符号化されたビデオデータを宛先機器14に送信することが可能な任意のタイプのサーバであり得る。例示的なファイルサーバは、(例えば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワーク接続記憶(NAS)装置、又はローカルディスクドライブを含む。宛先機器14は、インターネット接続を含む任意の標準的なデータ接続を通じて、符号化されたビデオデータにアクセスし得る。これは、ワイヤレスチャネル(例えば、Wi−Fi(登録商標)接続)、有線接続(例えば、DSL、ケーブルモデムなど)、又は、ファイルサーバに記憶されている符号化されたビデオデータにアクセスするのに適した、それらの両方の組合せを含み得る。記憶装置からの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、又はそれらの組合せであり得る。
[0060]本開示の技法は、ワイヤレスの適用例又は設定に必ずしも限定されるとは限らない。技法は、無線テレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応型HTTPストリーミング(DASH:dynamic adaptive streaming over HTTP)などのインターネットストリーミングビデオ送信、データ記憶媒体へと符号化されるデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、又は他の適用例などの、様々なマルチメディアの適用例のうちの任意のものをサポートするビデオコード化に適用され得る。幾つかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング及び/又はビデオテレフォニーなどの適用例をサポートするために一方向又は双方向のビデオ送信をサポートするように構成され得る。
[0061]図1の例では、発信源機器12は、ビデオ発信源18と、ビデオエンコーダ20と、出力インターフェース22とを含む。宛先機器14は、入力インターフェース28と、ビデオデコーダ30と、表示装置32とを含む。本開示によれば、発信源機器12のビデオエンコーダ20及び宛先機器14のビデオデコーダ30は、本開示で説明する例示的な技法を実施するように構成され得る。幾つかの例では、発信源機器及び宛先機器は、他の構成要素又は構成を含んでもよい。例えば、発信源機器12は、外部カメラなどの外部のビデオ発信源18からビデオデータを受信し得る。同様に、宛先機器14は、統合された表示装置を含むのではなく、外部の表示装置とインターフェースしてもよい。
[0062]図1の図示のシステム10は、一例にすぎず、本開示で説明する技法は、任意のデジタルビデオ符号化及び/又は復号機器によって実行され得る。一般に、本開示の技法は、ビデオ符号化/復号機器によって実行されるが、技法は、通常「コーデック」と呼ばれるビデオエンコーダ/デコーダによって実行されてもよい。その上、本開示の技法は、ビデオプリプロセッサによって実行されてもよい。発信源機器12及び宛先機器14は、発信源機器12が、コード化されたビデオデータを宛先機器14への送信のために生成するようなコード化機器の例にすぎない。幾つかの例では、機器12、14は、機器12、14の各々がビデオ符号化構成要素と復号構成要素とを含むように実質的に対称的に動作し得る。従って、システム10は、(例えば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、又はビデオテレフォニーのための)ビデオ機器12とビデオ機器14との間での一方向又は双方向のビデオ送信をサポートし得る。
[0063]発信源機器12のビデオ発信源18は、ビデオカメラ、以前に撮影されたビデオを含むビデオアーカイブ、及び/又はビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースなどの、撮像装置を含み得る。更なる代替として、ビデオ発信源18は、発信源ビデオとしてのコンピュータグラフィックスベースのデータ、又は、ライブビデオ、アーカイブされたビデオ、及びコンピュータ生成のビデオの組合せを生成し得る。場合によっては、ビデオ発信源18がビデオカメラである場合、発信源機器12及び宛先機器14は、所謂カメラ付き携帯電話又はビデオ付き携帯電話を形成し得る。しかしながら、上述のように、本開示で説明する技法は、一般にビデオコード化に適用可能であり得、ワイヤレス及び/又はワイヤードの適用例に適用され得る。各場合において、撮影されたビデオ、事前撮影された(pre-captured)ビデオ、又はコンピュータ生成のビデオは、ビデオエンコーダ20によって符号化され得る。符号化されたビデオ情報は、次いで、出力インターフェース22によってリンク16へ出力され得る。
[0064]宛先機器14の入力インターフェース28は、情報をリンク16及び/又は記憶装置31から受信する。受信された情報は、ビデオエンコーダ20によって定義され、またビデオデコーダ30によって使用される、ブロック及び他のコード化された単位の特性及び/又は処理を記述するシンタックス要素を含む、シンタックス情報を含み得る。表示装置32は、復号されたビデオデータをユーザに表示し、陰極線管(CRT)、液晶表示器(LCD)、プラズマ表示器、有機発光ダイオード(OLED)表示器、又は別のタイプの表示装置などの様々な表示装置のうちの任意のものを備え得る。
[0065]ビデオエンコーダ20及びビデオデコーダ30は、高効率ビデオコード化(HEVC)規格などのビデオコード化規格に従って動作し得、一般にHEVCテストモデル(HM)に準拠し得る。HEVC規格は、ITU−T Video Coding Experts Group(VCEG)とISO/IEC Motion Picture Experts Group(MPEG)とのJoint Collaboration Team on Video Coding(JCT−VC)によって開発されている。HEVCの最新のテキスト仕様、草案10(WD10)は、http://phenix.int−evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC−L1003−v34.zipから入手可能であり、その内容の全体が参照により本明細書に組み込まれる。
[0066]幾つかの例では、ビデオエンコーダ20及びビデオデコーダ30は、MV−HEVC、3D−HEVC、3D−AVC、又はマルチビューコード化のための他の規格など、現在開発中の様々な拡張に従って動作し得る。代替的に、ビデオエンコーダ20及びビデオデコーダ30は、代替的にMPEG−4、Part 10、アドバンストビデオコード化(AVC)と呼ばれるITU−T H.264規格など、他のプロプライエタリ規格又は業界規格、若しくはそのような規格の拡張に従って動作し得る。但し、本開示の技法は、いかなる特定のコード化規格にも限定されない。
[0067]ビデオコード化規格の他の例としては、MPEG−2、ITU−T H.263、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がある。ビデオエンコーダ20及びビデオデコーダ30は、上記の例示的な規格のうちの1つもしくは複数に従って構成されてよく、又は任意の特定の規格に従って構成されなくてもよい。
[0068]図1には示されないが、幾つかの態様では、ビデオエンコーダ20及びビデオデコーダ30はそれぞれ、オーディオエンコーダ及びオーディオデコーダと統合されてよく、共通のデータストリーム又は別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するための、適切なMUX−DEMUXユニット、又は他のハードウェアとソフトウェアとを含み得る。適用可能な場合、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、又はユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
[0069]ITU−T H.264/MPEG−4(AVC)規格は、Joint Video Team(JVT)として知られる共同パートナーシップの成果としてISO/IEC Moving Picture Experts Group(MPEG)とともにITU−T Video Coding Experts Group(VCEG)によって策定された。幾つかの態様では、本開示で説明する技法は、H.264規格に概して準拠する機器に適用され得る。H.264規格は、ITU−T Study Groupによる2005年3月付のITU−T勧告H.264「Advanced Video Coding for generic audiovisual services」に記載されており、本明細書ではH.264規格又はH.264仕様、あるいはH.264/AVC規格又は仕様と呼ばれることがある。Joint Video Team(JVT)はH.264/MPEG−4 AVCへの拡張に取り組み続けている。
[0070]ビデオエンコーダ20及びビデオデコーダ30はそれぞれ、1つ又は複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、集積回路(IC)、ソフトウェア、ハードウェア、ファームウェア又はそれらの任意の組合せなどの、様々な適切なエンコーダ回路のいずれかとして実装され得る。ビデオエンコーダ20及びビデオデコーダ30の各々は、1つ又は複数のエンコーダ又はデコーダ中に含まれ得、そのいずれも複合ビデオエンコーダ/デコーダ(コーデック)の一部として統合され得る。ビデオエンコーダ20及び/又はビデオデコーダ30を含む機器は、集積回路、マイクロプロセッサ、及び/又は携帯電話のようなワイヤレス通信機器を備え得る。
[0071]本技法が部分的にソフトウェアで実装されるとき、機器は、好適なコンピュータ可読記憶媒体にソフトウェアの命令を記憶し、本開示の技法を実行するために1つ又は複数のプロセッサを使用してその命令をハードウェアで実行し得る。ビデオエンコーダ20及びビデオデコーダ30の各々は、1つ又は複数のエンコーダ又はデコーダに含まれる場合があり、両者のいずれかがそれぞれの機器中の複合エンコーダ/デコーダ(CODEC)の一部として組み込まれる場合がある。
[0072]HEVCの規格化の取組みは、HEVCテストモデル(HM)と呼ばれるビデオコード化機器の発展型モデルに基づく。HMは、例えば、ITU−T H.264/AVCに従う既存の機器に対してビデオコード化機器の幾つかの追加の機能を仮定する。例えば、H.264は、9つのイントラ予測符号化モードを提供するが、HMは、33ものイントラ予測符号化モードを提供し得る。
[0073]概して、HMは、ビデオフレーム又はビデオピクチャが、ルーマサンプルとクロマサンプルの両方を含む一連のツリーブロック又は最大コード化単位(LCU)に分割され得ることを記載している。HEVC規格はまた、LCUを「コード化ツリー単位」又はCTUと称する。ビットストリーム内のシンタックスデータは、LCUのサイズを定義し得、LCUは、画素の数の点で最大のコード化単位である。スライスは、幾つかの連続したツリーブロックを、コード化の順序で含む。ビデオフレーム又はビデオピクチャは、1つ又は複数のスライスに区分され得る。各ツリーブロックは、4分木に従ってコード化単位(CU)に分割され得る。概して、4分木データ構造はCUごとに1つのノードを含み、ルートノードがツリーブロックに対応する。CUが4つのサブCUに分割された場合、CUに対応するノードは4つのリーフノードを含み、リーフノードの各々はサブCUのうちの1つに対応する。
[0074]4分木データ構造の各ノードは、対応するCUのシンタックスデータを提供し得る。例えば、4分木中のノードは、そのノードに対応するCUがサブCUに分割されるかどうかを示す分割フラグを含み得る。CUのシンタックス要素は、再帰的に定義され得、CUがサブCUにスプリットされるかどうかに依存し得る。CUが更に分割されない場合、そのCUはリーフCUと呼ばれる。本開示では、元のリーフCUの明示的な分割が存在しない場合でも、リーフCUの4つのサブCUもリーフCUと呼ばれる。例えば、16×16サイズのCUが更に分割されない場合、4つの8×8サブCUも、16×16CUが分割されなくても、リーフCUと呼ばれる。
[0075]CUは、CUがサイズの特異性を有しないことを別にすれば、H.264規格のマクロブロックと同様の目的を有する。例えば、ツリーブロックは、4つの子ノード(サブCUとも呼ばれる)に分割され、各子ノードは、次に親ノードとなり、別の4つの子ノードに分割され得る。4分木のリーフノードと呼ばれる、最後の分割されていない子ノードは、リーフCUとも呼ばれるコード化ノードを備える。コード化されたビットストリームに関連するシンタックスデータは、最大CU深度と呼ばれる、ツリーブロックが分割され得る最大回数を定義することができ、コード化ノードの最小サイズを定義することもできる。それに応じて、ビットストリームは最小コード化単位(SCU)を定義することもできる。本開示は、「ブロック」という用語を、HEVCのコンテキストにおいてCU、PU、又はTUのうちのいずれか、若しくは他の規格のコンテキストにおいて類似のデータ構造(例えば、H.264/AVCのマクロブロック及びそのサブブロック)を指すために使用する。
[0076]CUは、コード化ノードと、コード化ノードに関連する予測単位(PU)及び変換単位(TU)とを含む。CUのサイズは、コード化ノードのサイズに対応し、形状において正方形でなければならない。CUのサイズは、8×8画素から、最大で64×64画素又はそれよりも大きいツリーブロックのサイズまでに及び得る。各CUは、1つ又は複数のPUと、1つ又は複数のTUとを含んでいることがある。CUに関連するシンタックスデータは、例えば、CUの1つ又は複数のPUへの区分を記述し得る。区分モードは、CUがスキップもしくはダイレクトモード符号化されるか、イントラ予測モード符号化されるか、又はインター予測モード符号化されるかの間で、異なり得る。PUは、形状が非正方形に区分され得る。CUに関連するシンタックスデータは、例えば、4分木に従って、CUを1つ又は複数のTUに区分することも記述し得る。TUは、形状において正方形又は非正方形(例えば、長方形)であってもよい。
[0077]HEVC規格は、CUごとに異なり得る、TUに従う変換を可能にする。TUは、通常、区分されたLCUのために定義された、所与のCU内のPUのサイズに基づいてサイズ決定されるが、これは常にそうであるとは限らない。TUは、一般に、PUと同じサイズであるか、又はPUよりも小さい。幾つかの例では、CUに対応する残差サンプルは、「残差4分木」(RQT)と呼ばれる4分木構造を使用して、より小さい単位に再分割され得る。RQTのリーフノードは変換単位(TU)と呼ばれることがある。TUに関連する画素差分値は、変換係数を生成するために変換され、その変換係数は量子化され得る。
[0078]リーフCUは、1つ又は複数の予測単位(PU)を含むことができる。概して、PUは、対応するCUの全て又は一部分に対応する空間的エリアを表し、そのPUの参照サンプルを取り出すためのデータを含み得る。その上、PUは、予測に関係するデータを含む。例えば、PUがイントラモード符号化又は復号される(即ち、イントラ予測されるか、又はインター予測符号化若しくは復号される)とき、PUに関するデータは、残差4分木(RQT)に含まれ、RQTは、PUに対応するTUに関するイントラ予測モードを記述するデータを含み得る。別の例として、PUがインターモード符号化又は復号される(即ち、インター予測されるか、又はインター予測符号化もしくは復号される)とき、PUは、PUについての1つ又は複数の動きベクトルを定義するデータを含み得る。PUについての動きベクトルを定義するデータは、例えば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルの解像度(例えば、1/4画素精度又は1/8画素精度)、動きベクトルが指す参照ピクチャ、及び/又は動きベクトルの参照ピクチャリスト(例えば、リスト0又はリスト1)を記述し得る。
[0079]1つ又は複数のPUを有するリーフCUはまた、1つ又は複数の変換単位(TU)を含むことができる。変換単位は、上述したように、(TU4分木構造とも呼ばれる)RQTを使用して指定され得る。例えば、分割フラグは、リーフCUが4つの変換単位に分割されるかどうかを示し得る。次いで、各変換単位は、更なるサブTUに更に分割され得る。TUが更に分割されないとき、そのTUはリーフTUと呼ばれることがある。一般に、イントラコード化の場合、リーフCUに属する全てのリーフTUは同じイントラ予測モードを共有する。即ち、同じイントラ予測モードが、一般に、リーフCUの全てのTUに対して予測される値を計算するために適用される。イントラコード化の場合、ビデオエンコーダは、イントラ予測モードを使用して各リーフTUの残差値を、TUに対応するCUの一部分と元のブロックとの間の差分として計算し得る。TUは、必ずしも、PUのサイズに限定されるとは限らない。従って、TUはPUよりも大きくても、又は小さくてもよい。イントラコード化の場合、PUは、同じCUの対応するリーフTUと同一位置配置(collocate)され得る。幾つかの例では、リーフTUの最大サイズは、対応するリーフCUのサイズに対応し得る。
[0080]その上、リーフCUのTUはまた、残差4分木(RQT)と呼ばれる、それぞれの4分木データ構造に関連付けられ得る。即ち、リーフCUは、リーフCUがどのようにTUに区分されるかを示す4分木を含み得る。TU4分木のルートノードは一般にリーフCUに対応し、CU4分木のルートノードは一般にツリーブロック(又はLCU)に対応する。分割されないRQTのTUはリーフTUと呼ばれる。一般に、本開示は、別段に記載されていない限り、CU及びTUという用語を、それぞれ、リーフCU及びリーフTUを指すために使用する。
[0081]ビデオシーケンスは、通常、一連のビデオフレーム又はビデオピクチャを含む。グループオブピクチャ(GOP)は、一般に、ビデオピクチャのうちの一連の1つ又は複数を備える。GOPは、GOPに含まれる幾つかのピクチャを記述するシンタックスデータを、GOPのヘッダ中、ピクチャの1つもしくは複数のヘッダ中、又は他の場所に含み得る。ピクチャの各スライスは、それぞれのスライスのための符号化モードを記述するスライスシンタックスデータを含む場合がある。ビデオエンコーダ20は、通常、ビデオデータを符号化するために、個々のビデオスライス内のビデオブロックに対して動作する。ビデオブロックは、CU内のコード化ノードに対応する場合がある。ビデオブロックは、固定サイズ又は可変サイズを有し、指定のコード化規格に応じてサイズが異なり得る。
[0082]一例として、HMは、様々なPUサイズでの予測をサポートする。特定のCUのサイズが2N×2Nとすれば、HMは、2N×2N又はN×NのPUサイズでのイントラ予測、及び2N×2N、2N×N、N×2N、又はN×Nの対称なPUサイズでのインター予測をサポートする。HMはまた、2N×nU、2N×nD、nL×2N、及びnR×2NのPUサイズでのインター予測のための、非対称な区分をサポートする。非対称な区分では、CUの一方向は区分されず、他の方向は25%及び75%に区分される。25%の区分に対応するCUの部分は、「n」とそれに続く「Up」、「Down」、「Left」、又は「Right」という指示によって示される。従って、例えば、「2N×nU」は、上部の2N×0.5NのPU、及び下部の2N×1.5NのPUにより水平に区分される2N×2NのCUを指す。
[0083]本開示では、「N×N」及び「N by N」は、垂直及び水平の寸法の観点からビデオブロックの画素寸法を指すために、例えば、16×16画素又は16by16画素のように、互換的に使用され得る。概して、16×16ブロックは、垂直方向に16画素(y=16)、及び水平方向に16画素(x=16)を有する。同様に、N×Nブロックは、概して、垂直方向にN画素、及び水平方向にN画素を有し、ここでNは、非負の整数値を表す。ブロック中の画素は、行及び列に配列され得る。更に、ブロックは、必ずしも、水平方向において垂直方向と同じ数の画素を有する必要はない。例えば、ブロックはN×M画素を備えてよく、ここで、Mは必ずしもNに等しいとは限らない。
[0084]CUのPUを使用したイントラ予測コード化又はインター予測コード化(即ち、イントラ予測符号化若しくは復号又はインター予測符号化若しくは復号)の後、ビデオエンコーダ20は、CUのTUのための残差データを計算し得る。PUは、空間領域(画素領域とも呼ばれる)において予測画素データを生成する方法又はモードを記述するシンタックスデータを備え、TUは、変換、例えば、残差ビデオデータへの離散コサイン変換(DCT)、整数変換、ウェーブレット変換、又は概念的に同様の変換の適用後に、変換領域において係数を備え得る。残差データは、符号化されていないピクチャの画素と、PUに対応する予測値との間の画素差分に対応し得る。ビデオエンコーダ20は、CUのための残差データを含むTUを形成し、次いで、CUのための変換係数を生成するためにTUを変換し得る。
[0085]変換係数を生成するための任意の変換の後で、ビデオエンコーダ20は、変換係数の量子化を実行し得る。量子化は、概して、係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、更なる圧縮を行うプロセスを指す。量子化プロセスは、係数の一部又は全てに関連するビット深度を低減し得る。例えば、nビットの値は、量子化中にmビットの値に端数を丸められてよく、ここで、nはmよりも大きい。
[0086]量子化の後に、ビデオエンコーダ20は、変換係数を走査して、量子化変換係数を含む2次元行列から1次元ベクトルを生成し得る。走査は、アレイの前部により高いエネルギー(従って、より低い周波数)係数を配置し、アレイの後部により低いエネルギー(従って、より高い周波数)係数を配置するように設計され得る。幾つかの例では、ビデオエンコーダ20は、エントロピー符号化され得るシリアル化ベクトルを生成するために、量子化変換係数を走査するために所定の走査順序を利用し得る。幾つかの例では、ビデオエンコーダ20は適応走査を実行し得る。量子化変換係数を走査して1次元のベクトルを形成した後、ビデオエンコーダ20は、例えば、コンテキスト適応型可変長コード化(CAVLC)、コンテキスト適応型バイナリ算術コード化(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コード化(SBAC:syntax-based context-adaptive binary arithmetic coding)、確率間隔区分エントロピー(PIPE)コード化又は別のエントロピー符号化の方法に従って、1次元のベクトルをエントロピー符号化し得る。ビデオエンコーダ20は、ビデオデータを復号する際にビデオデコーダ30が使用するための、符号化されたビデオデータに関連するシンタックス要素をエントロピー符号化することもできる。
[0087]CABACを実行するために、ビデオエンコーダ20は、コンテキストモデル内のコンテキストを、送信されるべきシンボルに割り当て得る。コンテキストは、例えば、シンボルの隣接値が非ゼロであるか否かに関係し得る。CAVLCを実行するために、ビデオエンコーダ20は、送信されるべきシンボルに対する可変長符号を選択し得る。VLCの中の符号語は、比較的短い符号が優勢シンボルに対応し、より長い符号が劣勢シンボルに対応するように、構築され得る。このようにして、VLCの使用は、例えば、送信されるべき各シンボルのために等長符号語を使用するよりも、ビット節約を達成し得る。確率決定は、シンボルに割り当てられたコンテキストに基づき得る。
[0088]ビデオエンコーダ20は、更に、ブロックベースのシンタックスデータ、フレームベースのシンタックスデータ、及びGOPベースのシンタックスデータなどのシンタックスデータを、例えば、フレームヘッダ、ブロックヘッダ、スライスヘッダ、又はGOPヘッダの中で、ビデオデコーダ30へ送り得る。GOPシンタックスデータは、それぞれのGOPの中の幾つかのフレームを記述し得、フレームシンタックスデータは、対応するフレームを符号化するために使用される符号化/予測モードを示し得る。
[0089]上記は、HEVC規格における例示的な方法、ビデオコード化技法について説明している。これらの例示的なビデオコード化技法はまた、MV−HEVC、3D−HEVC、H.264/MVC、及び3D−AVCのマルチビュービデオコード化技法など、マルチビュービデオコード化技法に拡張可能であり得る。説明しやすいように、また説明のためにのみ、本開示で説明する技法は、3D−HEVCに関して説明される。但し、例示的な技法は、他の規格又は規格外ベースのマルチビュービデオコード化技法にも拡張可能であり得る。
[0090]一般に、マルチビュービデオコード化では複数のビューが存在し、各ビュー中の対応する各ピクチャが同様のビデオコンテンツを含む。しかしながら、異なるビュー中の対応するピクチャ中のビデオブロック間に水平視差及び/又は垂直視差があり得る。3D視聴経験を生じさせるのは、ピクチャ間のこの視差である。一例として、表示器32は、2つ以上のビューからのピクチャを表示し得る。特殊なゴーグル(又は他の技法)により、視聴者の左眼はピクチャを、複数のビューのうちの1つから受け取り、他のビューから受け取らず、視聴者の右眼はピクチャを、他のビューのうちの1つから受け取り、それ以外のビューから受け取らない。視聴者の脳は、視聴者に3D閲覧を経験させることによって、これらの異なるビューのピクチャ間の視差を解決する。
[0091]マルチビュービデオコード化では、ビューごとに、テクスチャコンポーネント及び対応する深度コンポーネント(深度マップと呼ばれる)があり得る。テクスチャコンポーネントは、実際のビデオデータを含み、ピクチャと考えられ得る。深度コンポーネントは、対応する深度コンポーネントにおける画素の相対深度を示す。あらゆる例において深度コンポーネントが必要であるとは限らない。幾つかの例では、ビューのうちの1つは深度コンポーネントを含み、他のビューは深度コンポーネントを含まないことがある。
[0092]ビデオコード化に関して、HEVC規格及び他の非マルチビュービデオコード化技法は、様々な時間に出力又は表示されるピクチャ間のインター予測を可能にする(例えば、現在のピクチャは、異なる時間に表示されるべきピクチャによりインター予測される)。そのようなインター予測を可能にすることに加えて、マルチビュービデオコード化のための技法は、ビュー間予測を可能にし、ビュー間予測では1つのピクチャが、異なるビュー中の別のピクチャによりインター予測される。
[0093]マルチビュービデオコード化の理解を助けるために、以下では、幾つかの追加の情報を提供する。現在、VCEG及びMPEGのJoint Collaboration Team on 3D Video Coding(JCT−3C)は、HEVCに基づいて3DV規格を開発中であり、そのための規格化の取組みの一部は、HEVCに基づくマルチビュービデオコーデック(MV−HEVC)と、HEVCに基づく3Dビデオコード化(3D−HEVC)のための別の部分との規格化を含む。MV−HEVCでは、一般に、HEVC中のCU/PUレベルにおけるモジュールが再設計される必要がなく、MV−HEVCに完全に再使用され得ないように、MV−HEVCにおいてハイレベルシンタックス(HLS)の変更しかないことが保証されるべきである。3D−HEVCでは、コード化ユニット/予測単位レベルのコード化ツールを含む新たなコード化ツールが、テクスチャビューと深度ビューの両方に関して含められ、サポートされ得る。3D−HEVCのための最新のソフトウェア3D−HTMは、以下のリンク、即ち、[3D−HTMバージョン7.0]:https://hevc.hhi.fraunhofer.de/svn/svn_3DVCSoftware/tags/HTM−7.0/からダウンロード可能である。次のような、最新の参照ソフトウェア記述、ならびに3D−HEVCの作業草案が入手可能である。Gerhard Tech、Krzysztof Wegner、Ying Chen、Sehoon Yea、「3D−HEVC Test Model 4」、JCT3V−D1005_spec_v1、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11とのJoint Collaborative Team on 3D Video Coding Extension Development、第4回会合:韓国、仁川、2013年4月20〜26日。この文書は以下のリンク、即ち、http://phenix.it−sudparis.eu/jct2/doc_end_user/documents/4_Incheon/wg11/JCT3V−D1005−v1.zipからダウンロード可能である。
[0094]MVCは、H.264/AVCの拡張である。MVC仕様については、以下の本開示のセクション及びサブセクションで簡単に述べる。本開示では、マルチビュービデオコード化と略さずに書かれたとき、本開示は一般に、複数のビューが存在するビデオコード化を指している。頭文字MVCが使用されるとき、本開示は、(H.264/MVCと呼ばれることがある)H.264/AVCの拡張であるビデオコード化規格を指している。
[0095]図2は、マルチビュービデオコード化シーケンスを示す概念図である。例えば、典型的なマルチビュービデオ復号順序(即ち、ビットストリーム順序)が図2に示されている。復号順序の構成は時間優先コード化と呼ばれる。各アクセス単位(AU)は、1つの出力時間インスタンスのための全てのビューのコード化されたピクチャを含むように定義される。アクセス単位の復号順序は出力又は表示の順序と同じでない場合があることに留意されたい。
[0096]例えば、図2では、S0〜S7は異なるビューを参照しており、S0はベースビューと考えられ、他は依存ビューと考えられ得る。図2では、0、8、16、24...として識別されたピクチャはビューS0に属し、1、9、17、25...として識別されたピクチャはビューS1に属し、以下同様である。1つのAUは、同じ又は実質的に同様の出力時間インスタンスの全てのピクチャについてのピクチャ情報を含む。例えば、ピクチャ0〜7はそれぞれビューS0〜S7に属し、ほぼ時間T0に出力される。
[0097]図3は、例示的なマルチビュービデオコード化の予測パターンを示す概念図である。例えば、図3に、マルチビュービデオコード化用の典型的なマルチビュービデオコード化予測(各ビュー内のピクチャ間予測とビュー間予測の両方を含む)構造が示され、ここでは矢印によって予測が示され、矢印の終点のオブジェクトは、予測参照のために矢印の始点のオブジェクトを使用する。
[0098]MVCでは、H.264/AVC動き補償のシンタックスを使用するが、異なるビュー中のピクチャが参照ピクチャとして使用されることを可能にする視差動き補償によって、ビュー間予測がサポートされる。他のマルチビュービデオコード化規格も同様にビュー間予測を可能にする。例えば、MV−HEVC及び3D−HEVCは、HEVC用のシンタックスを使用して視差動き補償をサポートする。
[0099]2つのビューのコード化は、マルチビュービデオコード化によってもサポートされる可能性があり、マルチビュービデオコード化の利点の1つは、ビデオエンコーダ20が3Dビデオ入力として3つ以上のビューをとらえることができ、ビデオデコーダ30がそのようなマルチビュー表現を復号することができることである。これは、マルチビュービデオコード化デコーダをもつレンダラが、3つ以上のビューをもつ3Dビデオコンテンツを処理し得る方法である。
[0100]マルチビュービデオコード化では、同じアクセス単位中の(即ち、同じ時間インスタンスをもつ)ピクチャ間でビュー間予測が可能になる。非ベースビューのうちの1つ中のピクチャをコード化するとき、ピクチャが異なるビュー中にあるが同じ時間インスタンスをもつ場合、そのピクチャは参照ピクチャリストに追加され得る。ビュー間参照ピクチャは、任意のインター予測参照ピクチャと同様に、参照ピクチャリストの任意の位置に置かれ得る。ビュー間参照ピクチャが動き補償のために使用されるとき、対応する動きベクトルは「視差動きベクトル」と呼ばれる。
[0101]3D−HEVC及びMV−HEVCでは、コード化効率を更に改善するために、2つの新規の技術、即ち、「ビュー間動き予測」及び「ビュー間残差予測」が、最新の参照ソフトウェアにおいて採用されてきている。これらの2つのコード化ツールを有効にするために、第1のステップは、視差ベクトルを導出することである。ビュー間動き/残差予測のために他のビュー中の対応するブロックを位置特定するか、又はビュー間動き予測のために視差動きベクトルに変換されるかのいずれかのために、視差ベクトルが使用される。
[0102]ビュー間動き予測及びビュー間残差予測は、現在のブロックについての視差ベクトルを利用するビデオコード化ツールの幾つかの例であるが、視差ベクトルを使用する更なるビデオコード化ツールがあり得、本開示で説明する技法は、視差ベクトルを利用するビデオコード化ツールのこれらの例に限定されない。現在のブロックについての視差ベクトルを決定するための技法、ならびにビュー間動き予測及びビュー間残差予測などの視差ベクトルの例示的な使用については、以下でより詳細に説明する。
[0103]一般に、視差ベクトルは、現在のブロックと別のビュー中の対応するブロックとの間の視差を示す。例えば、現在のブロックのビデオコンテンツ及び他のビュー中の対応するブロックのビデオコンテンツは同様であり得るが、ブロックの位置は、それぞれのピクチャ中で互いに対して変位し得る。視差ベクトルは、この変位の測定値を提供する。
[0104]視差ベクトル及び視差動きベクトルは異なるので、これらのベクトルは混同されるべきではない。視差ベクトルと視差動きベクトルの両方が他のビュー中のブロックを参照するが、視差ベクトル及び視差動きベクトルの目的及び使用は異なる。現在のブロックについての視差動きベクトルは、予測ブロックを参照し、ここでは予測ブロックと現在のブロックとの間の残差が変換され、量子化され、ビットストリームの一部として信号伝達される。一方、視差ベクトルは様々なコード化ツールに使用される。例えば、現在のブロックについての実際の動きベクトルを示す視差動きベクトルとは異なり、視差ベクトルは、現在のブロックについての動きベクトルを決定するために動き情報が場合によっては使用され得る参照ブロックを参照する。言い換えれば、視差動きベクトルによって参照されるブロックは、現在のブロックの画素値から画素値が除算されるブロックである。対照的に、そこで現在のブロックについての動きベクトルを決定するために使用されるのは、視差ベクトルによって参照されるブロックの動き情報である。
[0105]視差ベクトルによって参照されるブロックは、現在のブロックを符号化又は復号するための参照ブロックとして使用され得、その理由は、現在のブロックを符号化又は復号するために参照ブロックの動き情報が使用され得ることにある。また、視差ベクトルによって参照されるブロックのビデオコンテンツは、現在のブロックのビデオコンテンツと同様であり得、この意味で、現在のブロックに対応するブロックと考えられ得る。従って、本開示では、視差ベクトルによって参照されるブロックは、参照ブロック又は対応するブロックと呼ばれ得る。
[0106]場合によっては、視差ベクトルが現在のブロックについての視差動きベクトルに変換されることに留意されたい。但し、これは、視差ベクトルが視差動きベクトルになるように選択された場合にのみ起こり得る。このように、視差ベクトルが現在のブロックについての視差動きベクトルになるように特別に選択された場合を除いて、視差ベクトルは視差動きベクトルとは異なる。その上、幾つかの例では、視差ベクトルが視差動きベクトルとして使用される場合に、視差ベクトルにクリッピング関数が適用されることがあり、クリッピング関数では、視差ベクトルのy成分がゼロに設定され、得られるベクトルが視差動きベクトルとして使用される。
[0107]本開示で説明する技法は、決定された視差ベクトルに基づいて参照ビュー中の参照ピクチャ中の参照ブロック(例えば、対応するブロック)を識別することに関する。例えば、どのブロックを視差ベクトルが識別するかは、現在のブロックの視差ベクトルがどこから開始するかに基づく。例えば、視差ベクトルは、画素から始まる開始位置と、ブロック内の画素を指す終了位置とを含む。ビデオエンコーダ20及びビデオデコーダ30は、現在のブロックについての参照ブロックを、視差ベクトルが指す画素を含む(例えば、カバーする)ブロックとして識別することができる。現在のブロックについての視差ベクトルは、視差ベクトルの開始位置ごとに異なる画素を指す。従って、視差ベクトルの開始位置に基づいて、視差ベクトルが指し得る参照ビュー中の参照ピクチャ中の様々な考えられる参照ブロックがあり得る。
[0108]視差ベクトルに基づいて参照ブロックを識別するために、本開示は、視差ベクトルが参照する終了位置を決定するための例示的な技法について説明する。視差ベクトルが参照する終了位置は、視差ベクトルの開始位置に基づくので、技法は、決定された終了位置を視差ベクトルが参照するように視差ベクトルの開始位置を設定することと考えられ得る。幾つかの例では、現在のブロックについての視差ベクトルの開始位置は、現在のブロック内にあり得る。幾つかの例では、現在のブロックについての視差ベクトルの開始位置は、現在のブロックの外にあり得る。
[0109]視差ベクトルの目的は、幾つかの例としてビュー間動き予測及びビュー間残差予測など、現在のブロックをインター予測(ビュー間予測を含む)するための様々なビデオコード化ツールに使用される参照ブロックを識別することであることを理解されたい。現在のブロックを符号化又は復号する際の良好なコード化効率をもたらす統計的傾向がある参照ブロックは、期せずして、現在のブロックについての視差ベクトルが現在のブロックの中から開始するか、又は現在のブロックの外から開始することを必要とし得る。
[0110]図4は、参照ブロックを識別するための視差ベクトルの例示的な開始位置を示す概念図である。図4に示すように、ビュー0はピクチャ34を含み、異なるビューであるビュー1はピクチャ36を含む。ピクチャ34及びピクチャ36は、ほぼ同じ時間に表示され得、従って同じアクセス単位の一部であり得る。
[0111]この例では、ピクチャ36は現在のビュー(例えば、ビュー1)中の現在のピクチャであり、ピクチャ34は参照ビュー(例えば、ビュー0)中の参照ピクチャである。ピクチャ36は、ビデオブロック38を含む。ビデオブロック38は、符号化又は復号されているビデオブロックである。例えば、ビデオ符号化の観点からは、ビデオブロック38は、ビデオエンコーダ20によってインター予測符号化されている現在のブロックである。ビデオ復号の観点からは、ビデオブロック38は、ビデオデコーダ30によってインター予測復号されている現在のブロックである。言い換えれば、図4に示す例は、ビデオエンコーダ20が現在のブロック(例えば、ビデオブロック38)を符号化している状況に当てはまり、ビデオデコーダ30が現在のブロック(例えば、ビデオブロック38)を復号している状況に当てはまる。
[0112]図4は、ビデオエンコーダ20とビデオデコーダ30の両方に当てはまる例を示しているので、説明を容易にするために、図4の例は、ビデオコーダに関して説明される。本開示で使用するビデオコーダは、ビデオデータを符号化又は復号するように構成された処理ユニットの総称である。例えば、ビデオコーダの一例はビデオエンコーダ20であり、ビデオコーダの別の例はビデオデコーダ30である。また、本開示では、コード化する又はコード化(している)という用語は、それぞれ符号化する又は符号化(している)、あるいは、それぞれ復号する又は復号(している)を一般的に指すために使用される。例えば、コード化しているか、又はコード化するように構成されたビデオコーダは一般に、符号化しているか、又は符号化するように構成されたビデオエンコーダ20、あるいは復号しているか、又は復号するように構成されたビデオデコーダ30を指す。
[0113]図4に示す例では、ビデオコーダ(例えば、ビデオエンコーダ20又はビデオデコーダ30)は、ビデオブロック38についての視差ベクトル(DV)を決定していることがある。例えば、ビデオコーダは、ビデオブロック38についての視差ベクトルを導出するために、隣接ブロックベース視差ベクトル(NBDV)導出技法を(場合によっては改良技法と組み合わせて)利用していることがある。ビデオブロック38についての視差ベクトルを決定するためのNBDV導出技法及び改良については、以下でより詳細に説明する。但し、本開示で説明する技法は、ビデオブロック38についての視差ベクトルを決定又は導出する他の方法に適用可能である。
[0114]ビデオコーダはまた、ビデオブロック38についての視差ベクトルがピクチャ34中の参照ブロックを参照すると決定していることがある。例えば、シンタックス要素refViewIdxは、参照ピクチャのインデックス値を定義することができ、ビデオコーダは、refViewIdxに基づいてViewIdxの値を決定することができる。この例では、ViewIdxの値は、ビュー0を示す0に等しい。ビデオコーダは、ビデオブロック38についての視差ベクトルが参照する位置(例えば、ピクチャ34中の画素)に基づいて、参照ブロックを識別することができる。但し、ビデオブロック38についての視差ベクトルが参照するピクチャ34中の位置は、視差ベクトルの開始位置に基づく。
[0115]例えば、視差ベクトルが参照する位置(例えば、ピクチャ34中の画素の座標)は、視差ベクトルのx成分及びy成分ならびに視差ベクトルの開始位置の座標に基づいて計算され得る。一例として、ビデオコーダは、視差ベクトルが参照するピクチャ34中の位置のx座標を決定するために視差ベクトルのx成分に開始位置のx座標を加算し、ピクチャ34中の位置のy座標を決定するために視差ベクトルのy成分に開始位置のy座標を加算することができる。
[0116]幾つかの例では、ビデオコーダは、整数精度を参照するように視差ベクトルを位置合わせするために視差ベクトルの座標をシフトさせるか、又は四捨五入することができる。例えば、シフト又は四捨五入がなければ、視差ベクトルは画素を参照せず、画素の間の位置(即ち、1/4画素精度などのサブ画素精度)を指すことがある。視差ベクトルのシフト(shifting)及び/又は丸め(rounding)により、ビデオコーダは、視差ベクトルが画素(即ち、整数精度)を参照することを保証することができる。
[0117]幾つかの例では、ビデオコーダは、視差ベクトルが参照する位置をカバーするブロック(例えば、予測単位)を決定することができる。ビデオコーダは決定されたブロックを、視差ベクトルに依存するビデオコード化ツールの幾つかの非限定的な例として、ビュー間動き予測、ビュー間残差予測、又は視差ベクトルが視差動きベクトルに変換される例など、視差ベクトルに依存する様々なビデオコード化ツールに使用される参照ブロックとして識別することができる。
[0118]図4は、視差ベクトルDV1及びDV2を示している。視差ベクトルDV1及びDV2の値は同じである(即ち、DV1及びDV2のx成分及びy成分は同じである)が、DV1の開始位置がDV2の開始位置とは異なるので別個に示されており、従って、DV1及びDV2がそれぞれ参照する位置は異なる。例えば、ビデオコーダは、ビデオブロック38についての視差ベクトルの値を決定していることがあり、視差ベクトルの値は、DV1もDV2も同じ値である。
[0119]図4では、視差ベクトルDV1の開始位置はビデオブロック38内の位置44であり、視差ベクトルDV2の開始位置はビデオブロック38内の位置46である。視差ベクトルDV1が参照する位置は、参照ビュー0の参照ピクチャ34中の位置C0であり、視差ベクトルDV2が参照する位置は、参照ビュー0の参照ピクチャ34中の位置C3である。
[0120]例えば、ビデオブロック38は、4×4ブロックとして示されているが、幾つかの例として8×8、8×4、4×8、16×16、16×8、又は8×16など、他のサイズを有してもよい。そのようなサイズのブロックの場合に、ブロックの中央に単一の中心画素がないことがある。実際には、2×2サブブロックを形成する4つの候補「中心」画素がブロック内にある。
[0121]図4に示すように、ビデオブロック38の中心は、中心2×2サブブロック48によって表されている。ビデオブロック38が4×4とは異なるサイズを有する場合、同様に中心2×2サブブロックがあることになる。図4では、位置44は中心2×2サブブロック48の左上画素の位置であり、位置46は中心2×2サブブロック48の右下画素の位置である。中心2×2サブブロック48の左上画素のx座標は、ビデオブロック38の幅を2で割り、得られた値をビデオブロック38の左上画素のx座標に加算し、得られた値から1を減算することによって計算され得る。中心2×2サブブロック48の左上画素のy座標は、ビデオブロック38の長さを2で割り、得られた値をビデオブロック38の左上画素のy座標に加算し、得られた値から1を減算することによって計算され得る。
[0122]2×2サブブロック48の右上画素の座標は、2×2サブブロック48の左上画素のx座標に1を加算し、y座標を同じままにすることによって計算され得る。2×2サブブロック48の左下画素の座標は、2×2サブブロック48の左上画素のy座標に1を加算し、x座標を同じままにすることによって計算され得る。2×2サブブロック48の右下画素の座標は、2×2サブブロック48の左上画素のx座標に1を加算し、2×2サブブロック48の左上画素のy座標に1を加算することによって計算され得る。
[0123]一例として、ビデオブロック38の左上画素が(5,6)に位置し、図示のようにビデオブロック38が4×4ブロックであると仮定する。この例では、中心2×2サブブロック48の左上画素のx座標は、5+4/2−1であって、6に等しい。中心2×2サブブロック48の左上画素のy座標は6+4/2−1であって、7に等しい。言い換えれば、位置44の座標は(6,7)である。中心2×2サブブロック48の右下画素のx座標は6+1であって、7であり、中心2×2サブブロック48の右下画素のy座標は7+1であって、8。言い換えれば、位置46の座標は(7,8)である。
[0124]図示のように、ビデオブロック38についての視差ベクトルが位置44から(例えば、中心2×2サブブロック48の左上画素から)開始する場合、視差ベクトルは、視差ベクトルDV1によって示されるように、位置C0における画素を参照する。ビデオブロック38についての視差ベクトルが位置46から(例えば、中心2×2サブブロック48の右下画素から)開始する場合、視差ベクトルは、視差ベクトルDV2によって示されるように、位置C3における画素を参照する。
[0125]幾つかの例では、ビデオコーダは、参照ビュー0の参照ピクチャ34中の位置C0を決定し、位置C0をカバーするブロックを決定することができる。図示のように、図4における位置C0をカバーするブロックはブロック40である。ビデオコーダは、ビデオブロック38についての参照ブロック(例えば、対応するブロック)としてブロック40を識別し、ビデオブロック38についての視差に依存する1つ又は複数のビデオコード化ツールにブロック40を利用することができる。一例として、ビュー間動き予測では、ビデオコーダは、ビデオブロック38をコード化するために、ブロック40に関連する動き情報を利用することができる。
[0126]ビデオブロック38をコード化するためにブロック40を利用する別の例として、ブロック40は、ビデオブロック38についての予測ブロックとして機能することができる。言い換えれば、ビデオコーダは、ブロック40及びビデオブロック38の画素値間の残差を決定することができる。これらの例では、視差ベクトルは、ビデオブロック38についての視差動きベクトルと考えられ得る。また、これらの例では、ビデオコーダは、インター予測目的でビデオコーダが記憶するブロック40の再構築バージョンを記憶することができる。言い換えれば、ブロック40が予測ブロックであるとき、ブロック40の再構築バージョンが予測ブロックとして機能する。
[0127]この意味で、幾つかの例では、ビデオコーダは、ビデオブロック38をコード化するために、ブロック40の動き情報を利用することができる。幾つかの例では、ビデオコーダは、ビデオブロック38をコード化するために、再構築されたブロック40を利用することができる。これらの例のいずれにおいても、ビデオコーダは、ビデオブロック38をインター予測コード化するために、ブロック40を利用する。
[0128]ビデオブロック38についての視差ベクトルに基づいて位置C0を決定するための技法は、次のとおりである。現在のピクチャ(例えば、ピクチャ36)の左上ルーマサンプルに対する現在の予測単位(例えば、ビデオブロック38)の左上ルーマサンプルのルーマ位置(xP,yP)を示す。値nPSW及びnPSHは、それぞれ現在の予測単位(例えば、ビデオブロック38)の幅及び高さを示す。参照ビュー順序インデックスrefViewIdx及び視差ベクトルmvDispを仮定して、参照層ルーマ位置(xRef,yRef)が以下のように導出される。
xRef = Clip3( 0, PicWidthInSamplesL - 1, xP + ( ( nPSW - 1 ) >> 1 ) + ( ( mvDisp[ 0 ] + 2 ) >> 2 ) ) (H-124)
yRef = Clip3( 0, PicHeightInSamplesL - 1, yP + ( ( nPSH - 1 ) >> 1 ) + ( ( mvDisp[ 1 ] + 2 ) >> 2 ) ) (H-125)
[0129]上記の式では、mvDisp[0]は視差ベクトルのx成分に等しく、mvDisp[1]は視差ベクトルのy成分に等しく、PicWidthInSamplesL及びPicHeightInSamplesLは、(現在のビューと同じ)参照ビュー中のピクチャの解像度を定義する。上記の式では、xP+((nPSW−1)>>1)及びyP+((nPSH−1)>>1)がともに視差ベクトルの開始位置に等しい(即ち、xP+((nPSW−1)>>1)は位置44のx座標であり、yP+((nPSH−1)>>1は位置44のy座標である)。上記の式では、xRefは、視差ベクトルが指すピクチャ34内の位置のx座標(例えば、位置C0のx座標)であり、yRefは、視差ベクトルが指すピクチャ34内の位置のy座標(例えば、位置C0のy成分)である。上記の式では、Clip3は、以下でより詳細に説明するクリッピング関数である。
[0130]このようにして、上記の式は、視差ベクトルDV1の終了ポイントを決定するための方法を定義する。言い換えれば、ビデオコーダは、視差ベクトルの開始位置を位置44の座標に等しく設定し、開始位置のそれぞれの座標を視差ベクトルの値に加算する(例えば、位置44のx座標を視差ベクトルのx成分に、位置44のy座標を視差ベクトルのy成分に加算する)ことによって、位置C0の座標を決定することができる。
[0131]ビデオコーダは参照ブロック(例えば、対応するブロック)を、ピクチャ34内のxRef、yRef座標をカバーする(例えば、ピクチャ34内の位置C0をカバーする)ビデオブロックとして識別することができる。図4に示す例では、参照ピクチャ34のブロック40が位置C0をカバーする。言い換えれば、対応するブロックは、refViewIdxに等しいViewIdxを伴うビューコンポーネント中のルーマ位置(xRef,yRef)をカバーする予測単位に設定される。この例では、refViewIdxは、参照ピクチャを含む参照ビューを識別するために使用されるインデックス値であり、ViewIdxはビュー0に等しい。
[0132]しかしながら、視差ベクトルに依存するビデオコード化ツールのためのより良好なビデオコード化効率をもたらす統計的傾向があるブロック40以外のブロックがあり得る。従って、本開示で説明する技法では、ビデオコーダは、ビデオブロック38についての参照ブロックを、参照ピクチャ34中の位置C0をカバーするブロック以外のブロックとして識別し得る。
[0133]一例として、位置C0に位置する画素の右下に位置する画素をカバーするブロックは、統計的に位置C0に位置する画素をカバーするブロックよりも良好なビデオコード化効率をもたらす傾向があり得る。図4では、位置C0の右下に(例えば、位置C0に対して位置(1,1)に)位置する画素の位置は、位置C3と呼ばれ、ブロック42が位置C3をカバーする。
[0134]参照ピクチャ34中の位置C3の位置を決定するために、ビデオコーダは、視差ベクトルの開始位置を、位置C0を決定するために使用される位置とは異なる(例えば、位置44とは異なる)位置に設定することができる。例えば、ビデオコーダは、視差ベクトルの開始位置を位置46の座標に等しく設定し得る。視差ベクトルの開始位置を変更するための推論は、視差ベクトルの値が同じままであるが、視差ベクトルの異なる終了位置が必要とされる(例えば、位置C0ではなく位置C3)ためである。視差ベクトルの終了位置を変更するために、視差ベクトルの値が同じであるので開始位置のみが変わり得る。
[0135]視差ベクトルの終了位置が位置C0の代わりに位置C3になるように、視差ベクトルの開始位置ではなく値を変更することも考えられ得ることに留意されたい。但し、説明の目的上、本開示は、視差ベクトルが位置C0ではなく位置C3を参照するように、視差ベクトルの値ではなく視差ベクトルの開始位置を変更することに関して説明されている。
[0136]視差ベクトルが位置C3を参照するように視差ベクトルの開始位置が変わる例では、開始位置(例えば、図4における位置46)のx座標はxP+((nPSW)>>1)であり、開始位置(例えば、図4における位置46)のy座標はyP+((nPSH)>>1)である。位置C3の位置を決定するための式は次のとおりである。
xRef = Clip3( 0, PicWidthInSamplesL - 1, xP + ( nPSW >> 1 ) + ( ( mvDisp[ 0 ] + 2 ) >> 2 ) ) (H-124)
yRef = Clip3( 0, PicHeightInSamplesL - 1, yP + ( nPSH >> 1 ) + ( ( mvDisp[ 1 ] + 2 ) >> 2 ) ) (H-125)
[0137]すぐ上にある式では、xRefは、視差ベクトルが指すピクチャ34内の位置のx座標(例えば、位置C3のx座標)であり、yRefは、視差ベクトルが指すピクチャ34内の位置のy座標(例えば、位置C3のy成分)である。上記の式では、xP+(nPSW>>1)及びyP+(nPSH>>1)がともに視差ベクトルの開始位置に等しい(即ち、xP+(nPSW>>1)は位置46のx座標であり、yP+(nPSH>>1は位置46のy座標である)。言い換えれば、上記の式では、現在のブロック38内の中心2×2サブブロック48中の右下画素の座標は((xP+(nPSW>>1)),(yP+(nPSH>>1)))に等しく、ここでyPは、現在のブロック38の左上隅のy座標に等しく、xPは、現在のブロック38の左上隅のx座標に等しく、nPSWは、現在のブロック38の幅に等しく、nPSHは、現在のブロック38の高さに等しい。
[0138]このようにして、上記の式は、視差ベクトルDV2の終了ポイントを決定するための方法を定義する。例えば、ビデオコーダは、視差ベクトルの開始位置を位置46の座標に等しく設定し、開始位置のそれぞれの座標を視差ベクトルの値に加算する(例えば、位置46のx座標を視差ベクトルのx成分に、位置46のy座標を視差ベクトルのy成分に加算する)ことによって、位置C3の座標を決定することができる。例えば、ビデオコーダは、視差ベクトルDV2が参照する参照ピクチャ34中の位置のx座標及びy座標を、現在のビデオブロック38内の中心2×2サブブロック48中の右下画素から開始する視差ベクトルに基づいて決定することができる。
[0139]上記の式では、ビデオコーダは、xRefとyRefとを決定するためにクリッピング演算を適用することができる。そのようなクリッピングは、あらゆる例において必要であるとは限らない。クリッピング関数を伴わないxRef及びyRefの式は、次のとおりであり得る。
xRef = xP + (( nPSW) >> 1 ) + (( mvDisp[ 0 ] + 2) >> 2 )),
yRef = yP + (( nPSH) >> 1 ) + (( mvDisp[ 1 ] + 2 ) >> 2 )).
[0140]本開示で説明する技法では、ビデオコーダは、参照ビュー中の参照ピクチャ中のブロックを、(例えば、現在のブロック内の中心2×2サブブロック中の右下画素から開始する視差ベクトルに基づいて)現在のブロック内の中心2×2サブブロック中の右下画素から視差ベクトルが開始するときに視差ベクトルが参照する参照ピクチャ中の位置に基づいて決定することができる。例えば、図4に示すように、ビデオコーダは、視差ベクトルDV2が参照する参照ピクチャ34中の位置C3をカバーする4×4ブロック(例えば、ブロック42)を、(例えば、視差ベクトルが位置46から開始するときに)位置46から開始する視差ベクトルに基づいて決定することができる。ビデオコーダは、上で提供するxRef及びyRefの式を使用して視差ベクトルが参照する位置C3のx座標及びy座標を決定し、決定されたx座標とy座標とをカバーするブロックを決定することができる。
[0141]そこでビデオコーダが視差ベクトルに依存するビデオコード化ツールを使用して現在のブロック38をインター予測コード化する(例えば、符号化又は復号する)ために使用し得るのは、ブロック42の動き情報又はブロック42の画素値である。一例として、ビデオコーダは、ブロック42の動き情報が候補動きベクトル予測子のリストである挿入することができる。ブロック42の動き情報が候補動きベクトル予測子の同一リストから、ビデオコーダが現在のブロック38についての動きベクトルを予測するために使用する動き情報として選択された場合、ビデオコーダは、決定されたブロックの動き情報に基づいて現在のブロックをインター予測コード化することができる。
[0142]別の例として、ビデオコーダは、ブロック42を予測ブロックとして利用することができる。例えば、ビデオコーダは、ブロック42の再構築バージョンを記憶する。例えば、ビデオ符号化中に、ビデオエンコーダ20は、ビデオエンコーダ20が符号化されたブロックを再構築するフィードバックする経路を含み、再構築されたブロックを、後続ブロックを符号化するためにブロック42が使用され得るようにメモリに記憶する。ビデオ復号中に、ビデオデコーダ30はブロック42を再構築し、再構築されたブロック42を、後続ブロックを復号するためにブロック42が使用され得るようにメモリに記憶する。場合によっては、ビデオコーダは、ブロック42がビデオブロック38についての予測ブロックとして機能する例の場合のように、ビデオブロック38及びブロック42の画素値間の差分を決定する。ブロック42の再構築が予測ブロックとして機能する例では、視差ベクトルは、ビデオブロック38についての視差動きベクトルと考えられ得る。
[0143]言い換えれば、ビデオコーダは、決定されたブロックに基づいて現在のブロックをインター予測コード化することができる。一例として、決定されたブロックが現在のブロックをインター予測コード化するために使用される場合に、ビデオコーダは、決定されたブロックの動き情報に基づいて現在のブロックをインター予測コード化することができる。別の例として、ビデオコーダは、決定されたブロックの再構築の画素値に基づいて現在のブロックをインタープレディクトコード化する。
[0144]場合によっては、視差ベクトルによって参照されるブロックが依然として参照ピクチャ34内にあるようにするために、xRef及びyRefがクロッピングされ得る。また、視差ベクトルが1/4画素精度を有するとき、シフト演算(mvDisp[i]+2>>2)がmvDisp[i]に置き換えられることがあり、ここでiは0又は1に等しい。
[0145]この例では、ビデオコーダは、参照ブロック(例えば、対応するブロック)を、ピクチャ34内のxRef、yRef座標をカバーする(例えば、ピクチャ34内の位置C3をカバーする)ビデオブロックとして識別することができる。図4に示す例では、参照ピクチャ34のブロック42が位置C3をカバーする。言い換えれば、対応するブロックは、refViewIdxに等しいViewIdxを伴うビューコンポーネント中のルーマ位置(xRef,yRef)をカバーする予測単位に設定される。この例では、refViewIdxは、参照ピクチャを含む参照ビューを識別するために使用されるインデックス値であり、ViewIdxはビュー0に等しい。
[0146]図4からわかるように、視差ベクトルが参照する位置は、ビデオコーダがどのブロックを参照ブロックとして識別するかに影響を与え、視差ベクトルが参照する位置は、視差ベクトルの開始位置に基づく。従って、視差ベクトルの開始位置は、参照ピクチャ34中のどのブロックが参照ブロックとして識別されるか(例えば、ブロック40又はブロック42)に影響を与える。
[0147]ブロック42の動き情報又はブロック42の再構築の画素値は、ブロック40の動き情報又はブロック40の再構築の画素値よりも、視差ベクトルに依存するビデオコード化ツールのための良好なビデオコード化効率をもたらす統計的傾向があり得る。従って、幾つかの例では、ビデオコーダは、位置C3をカバーするブロック(例えば、ブロック42)を、現在のブロック(例えば、ビデオブロック38)についての参照ブロックとして識別することができる。
[0148]幾つかの例では、参照ビュー0の参照ピクチャ34中の位置C3をカバーするブロックをビデオブロック38についての参照ブロックとして識別するのではなく、ビデオコーダは、参照ビュー0の参照ピクチャ34中の位置C1又は位置C2をカバーするブロックをビデオブロック38についての参照ブロックとして識別することがある。例えば、図4は、C0に位置する画素の右にある位置C1に(例えば、位置C0に対して位置(1,0)に)位置する画素と、C0に位置する画素の下にある位置C2に(例えば、位置C0に対して位置(0,1)に)位置する画素とを示している。この場合、位置C3に位置する画素は、位置C0に対して(1,1)に位置する。
[0149]ビデオコーダは、参照ピクチャ34中の位置C1又は位置C2の位置を決定するために、上述の技法と同様の技法を実施することができる。例えば、ビデオコーダは視差ベクトルの開始位置を、視差ベクトルが位置C1を参照する(即ち、開始位置が2×2中心サブブロック48中の右上画素になる)ように、又は位置C2を参照する(即ち、開始位置が2×2中心サブブロック48中の左下画素になる)ように変更することができる。次いでビデオコーダは、位置C1又はC2をカバーするブロックを、現在のブロックについての(例えば、ビデオブロック38についての)参照ブロックとして識別することができる。
[0150]幾つかの例では、ビデオコーダは、ビデオブロック38についての参照ブロックを識別するために、参照ピクチャ34中の異なる位置をカバーする複数のブロックをチェックすることができる。例えば、ビデオコーダは最初に、位置C3をカバーするブロック(例えば、ブロック42)を決定することができる。次いでビデオコーダは、ブロック42の動き情報が、視差ベクトルに依存する1つ又は複数のビデオコード化ツールに利用可能であるかどうかを決定することができる。
[0151]例えば、ブロック42がイントラ予測コード化される場合、ブロック42についての動き情報はない。別の例では、ブロック42がビュー間予測コード化される場合に、ブロック42の動き情報は、視差ベクトルに依存する1つ又は複数のビデオコード化ツールを使用して現在のビデオブロック38をコード化するために使用可能ではないことがある。また、別の例では、ブロック42がインター予測されるが、ブロック42の動きベクトルが参照する参照ピクチャと同じアクセス単位に位置する現在のビュー中のピクチャがビデオブロック38の参照ピクチャリストにおいて識別されない場合に、ブロック42の動き情報は、視差ベクトルに依存する1つ又は複数のビデオコード化ツールを使用して現在のビデオブロック38をコード化するために使用可能ではないことがある。
[0152]ブロック42についての動き情報が、視差ベクトルに依存する1つ又は複数のビデオコード化ツールに利用可能であるとビデオコーダが決定した場合、ビデオコーダはブロック42を、ビデオブロック38についての参照ブロックとして識別することができる。ブロック42についての動き情報が、視差ベクトルに依存する1つ又は複数のビデオコード化ツールに利用可能ではないとビデオコーダが決定した場合、ビデオコーダは、ビデオブロック38に利用可能な参照ブロックはないと決定することができる。幾つかの例では、ビデオブロック38についての参照ブロックがないと決定するのではなく、ビデオコーダは、位置C0をカバーするブロック(例えば、ブロック40)を決定し、ブロック40についての動き情報が、視差ベクトルに依存する1つ又は複数のビデオコード化ツールに利用可能であるかどうかを決定することができる。ブロック40についての動き情報が、視差ベクトルに依存する1つ又は複数のビデオコード化ツールに利用可能であるとビデオコーダが決定した場合、ビデオコーダは、ブロック40が現在のビデオブロック38についての参照ブロックであると決定することができる。そうではない場合、ビデオコーダは、ビデオブロック38に利用可能な参照ブロックはないと決定することができる。
[0153]幾つかの例では、ビデオコーダは、反対のステップを実行することができる。例えば、ビデオコーダは、最初に、ブロック40の動き情報が、視差ベクトルに依存する1つ又は複数のビデオコード化ツールに利用可能であるかどうかを決定し、動き情報が利用可能である場合に、ブロック40がビデオブロック38についての参照ブロックであると決定することができる。動き情報が利用可能ではない場合、ビデオコーダは、ブロック42についての動き情報が利用可能であるかどうかを決定し、利用可能である場合に、ブロック42が現在のビデオブロック38についての参照ブロックであると決定することができる。ブロック42についての動き情報が利用可能ではない場合、ビデオコーダは、ビデオブロック38についての参照ブロックが存在しないと決定することができる。
[0154]ビデオコーダは必ずしも、2つのブロックの後に(例えば、順序を問わずブロック40及び42の後に)参照ブロックについてのチェックを打ち切る必要はない。幾つかの例では、ビデオコーダは、(順序を問わず)ブロック40及び42をチェックすることができ、いずれのブロックも、視差ベクトルに依存するビデオコード化ツールに利用可能ではない場合、ビデオコーダは、(順序を問わず)位置C1をカバーするブロック又は位置C2をカバーするブロックを決定し、これらのブロックのいずれかが利用可能であるかどうかを決定することができる。一般に、位置C0、C1、C2、及びC3をカバーするブロックをチェックする様々な順列が考えられ、本開示によって企図される。
[0155]上記の例は、視差ベクトルが参照する位置(例えば、ポイント)をカバーするブロックに基づいて参照ブロックを識別することについて説明した。しかしながら、本開示で説明する技法は、そのように限定されない。幾つかの例では、ビデオコーダは、視差ベクトルに基づいてブロックの位置を決定し、そのブロックがビデオブロック38についての参照ブロックであるかどうかを決定することができる。
[0156]一例として、ビデオコーダは、BR0と呼ばれる、参照ピクチャ34中の「右下」ブロックを識別し得る。例えば、現在のビデオブロック38の視差ベクトルが、現在のビデオブロック38の右下にあるブロックから開始した場合、参照ピクチャ34中の視差ベクトルが指す位置は、BR0ブロックの左上隅である。この例では、ビデオブロック38についての視差ベクトルの開始位置は、ビデオブロック38の外にある。BR0ブロックのx座標はxP+(nPSW−1)+((mvDisp[0]+2)>>2)であり、BR0ブロックのy座標はyP+(nPSH−1)+((mvDisp[1]+2)>>2)である。また、この例では、視差ベクトルの開始位置のx座標はxP+(nPSW−1)であり、視差ベクトルの開始位置のy座標はyP+(nPSH−1)である。ブロックBR0を参照する視差ベクトルの開始位置は、ブロック40又はブロック42を参照する視差ベクトルの開始位置とは異なっており、ビデオブロック38の外にあり得る。
[0157]幾つかの例では、ブロック42、40、又は位置C1及びC2をカバーするブロックをチェックするのではなく、ビデオコーダは、ブロックBR0についての動き情報が、視差ベクトルに依存するビデオコード化ツールに利用可能であるかどうかを決定することができる。利用可能な場合、ビデオコーダは、ブロックBR0を参照ブロックとして識別し、利用可能ではない場合、参照ブロックは存在しないと決定することができる。但し、幾つかの例では、チェックすべき他のブロックもあり得る。参照ピクチャ34のこれらの他のブロックは、ブロックBR1及びブロックBR2と標示される。ブロックBR1はブロックBR0に対して(1,1)に位置し、ブロックBR2はブロックBR0に対して(2,2)に位置する。ビデオコーダは、ブロックBR1及びBR2の位置を、ブロックBR0について決定されたのと同様に(例えば、視差ベクトルがブロックBR1又はブロックBR2を参照するように視差ベクトルの開始位置を変更することによって)決定することができる。
[0158]参照ブロックを識別するための追加の例示的な方法として、ビデオコーダは最初に、視差ベクトルがビデオブロック38の左上隅から開始する場合に、視差ベクトルによって参照されるブロックの左上隅位置をシフトさせ、量子化することができる。例えば、ビデオコーダは、以下の式を実施することができる。
((xP+( mvDisp[ 0 ] + 2 ) >> 2 )+2)>>2, (yP+( mvDisp[ 1 ] + 2 ) >> 2 )+2)>>2).
その後、ビデオコーダは、4×4ブロックを識別するために、(nPSW/2,nPSH/2)、(nPSW,nPSH)のシフトを直接適用することができる。他の潜在的ブロックは、(nPSW/2−4,nPSH/2−4)、(nPSW/2+4,nPSH/2+4)、(nPSW−4,nPSH−4)、及び(nPSW+4,nPSH+4)のシフトに基づき得る。シフトが適用された後、ビデオコーダは、シフトしたサンプル位置を左上位置として使用する4×4ブロックを参照ブロックとして識別することができる。
[0159]上述の技法において様々な順列が考えられることを理解されたい。例えば、1つのチェック順序は、位置C3をカバーするブロック、次いで位置C0をカバーするブロック、次いで位置C1をカバーするブロック、次いでC2をカバーするブロック、次いでBR0ブロック、次いでBR1ブロック、次いでBR2ブロック、次いで参照ブロックを識別するためにシフト技法を適用し、1つ又は複数のビデオコード化ツールに利用可能な動き情報を含むブロックがまったくない場合に参照ブロックの探索を打ち切ることを含み得る。しかしながら、技法は、そのように限定されない。他のチェック順序も考えられ、本開示によって企図され得る。
[0160]その上、ビデオコーダは、必ずしも考えられるブロックを全てチェックする必要はなく、ブロックのサブセットのみ(例えば、1つのブロックのみ、2つのブロックのみなど)をチェックしてもよい。例えば、ビデオコーダは、ブロック42で開始し、ブロック42が利用可能ではない場合に、利用可能であるビデオブロック38についての参照ブロックはないと決定することができる。幾つかの例では、ブロック42のみをチェックし、ブロック42が利用可能ではない場合に打ち切ることによって、より大きいコード化利得が実現され得る。その理由として、更なるブロックをチェックすることは、更なるメモリ帯域幅を必要とし、ブロック42についての動き情報が利用不可能である場合に、参照ブロックとして動き情報が使用され得るブロックを識別する際にビデオコード化利得がある場合でも、更なるメモリ要求のコストは利益を上回り得ることがあり得る。
[0161]ビデオエンコーダ20及びビデオデコーダ30は、ビデオエンコーダ20及びビデオデコーダ30がビデオブロック38についての参照ブロックと同じブロックを識別するように、上述の例示的な技法のうちの1つ又は2つ以上からなる組合せを暗示的に実行するように構成され得る。例えば、ビデオエンコーダ20は、どのブロックが参照ピクチャ34中の参照ブロックであるかを示す情報を信号伝達する必要はないことがあり、ビデオデコーダ30は、どのブロックが参照ピクチャ34中の参照ブロックであるかを示す情報を受信する必要はないことがある。
[0162]しかしながら、幾つかの例では、ビデオエンコーダ20は、様々なブロックをチェックし、どのブロックが参照ブロックとして識別された場合に最大のコード化利得をもたらすかを決定することができる。例えば、ビデオエンコーダ20は、参照ピクチャ34のブロックのうちの1つが、視差ベクトルに依存する1つ又は複数のビデオコード化ツールに利用可能な動き情報を含むと決定した後、ブロックのチェックを停止しないことがあり、視差ベクトルに依存する1つ又は複数のビデオコード化ツールに利用可能な動き情報を含む複数のブロックを決定することがある。ビデオエンコーダ20は次いで、これらのブロックのうちどれが最大のコード化効率をもたらすかを決定し、どのブロックが参照ブロックであるかを示す情報を信号伝達することができる。ビデオデコーダ30は、どのブロックが参照ブロックであるかを示す情報を受信し、受信された情報に基づいて参照ブロックを識別することができる。
[0163]更に、技法は視差ベクトルに関して説明してきたが、技法はそのように限定されない。例えば、技法は、ブロックに関連するシンタックス要素又は変数を識別することが必要とされる場合に任意のシナリオに一般化され得る。
[0164]本開示によれば、ビュー間動き予測など、視差ベクトルに依存するビデオコード化ツールでは、(以下でより詳細に説明する)テクスチャ、深度を問わず、ビデオコーダは、最初に画素を識別することによって参照ビュー中のブロックを識別する必要があり得る。既存の技法には、十分に正確ではないものもある。
[0165]これらの問題に対処するために、本開示で説明する技法は次のように要約され得る。例えば、本開示は、参照ビュー中の参照ブロックの識別中に異なる画素を識別するための技法について説明している。技法は、テクスチャビュー又は深度ビューについてのビュー間動き予測に、又は一般に、視差ベクトルに依存する様々なビデオコード化ツールに適用可能であり得る。
[0166]本開示で説明する技法では、(xP,yP)が現在のPUの左上隅位置であることを示し、現在のPUについての(1/4画素精度を有する)視差ベクトルmvDispを示す。この視差ベクトルによってC0として識別された、(xP+((nPSW−1)>>1)+((mvDisp[0]+2)>>2),yP+((nPSH−1)>>1)+((mvDisp[1]+2)>>2))の相対座標を有する中心サンプルを示す。C0に対する相対位置を(1,0)、(0,1)及び(1,1)とする、C0に隣接する他の3つの画素をC1、C2、C3として示す。BR0として(xP+(nPSW−1)+((mvDisp[0]+2)>>2),yP+(nPSH−1)+((mvDisp[1]+2)>>2))の相対座標を有する右下サンプルを示す。BR1及びBR2は、BR0に対する相対位置を(1,1)及び(2,2)とする2つのサンプルである。
[0167]上記のサンプルのいずれも、サンプルが依然としてピクチャ内にあるようにするために、水平成分及び垂直成分がクロッピングされ得ることに留意されたい。また、視差ベクトルが整数精度を有するとき、シフト演算((mvDisp[i]+2)>>2)が単にmvDisp[i]に置き換えられ得ることに留意されたい。
[0168]一例では、C0画素を識別することによってブロックを識別する代わりに、C3画素が利用され、ブロックが、C3画素をカバーする4×4ブロック/予測単位として識別される。C3位置は次のように計算される。
xRef = Clip3( 0, PicWidthInSamplesL - 1, xP + ( ( nPSW) >> 1 ) + ( ( mvDisp[0] + 2 ) >> 2 ) ) (H-124)
yRef = Clip3( 0, PicHeightInSamplesL - 1, yP + ( ( nPSH) >> 1 ) + ( ( mvDisp[1] + 2 ) >> 2 ) ) (H-125)
ここで、参照ピクチャ中の位置のx座標をxRefが表し、y座標をyRefが表し、この位置をカバーするブロックが参照ブロックである。
[0169]幾つかの例では、C1又はC2が使用され得る。幾つかの例では、BR0、BR1又はBR2が使用され得る。幾つかの例では、C0が最初に使用され、更に、C0をカバーするブロック0が利用可能なマージ候補を生成しないとき、C3をカバーするブロック3が、ブロック0とは異なる場合に、利用可能なマージ候補を生成するために使用される(以下でより詳細に説明する)。幾つかの例では、C3が最初に使用される。更に、C3をカバーするブロック3が利用可能なマージ候補を生成しないとき、C0をカバーするブロック0が、ブロック0とは異なる場合に、利用可能なマージ候補を生成するために使用される。
[0170]幾つかの例では、マージ候補の導出元となり得る、BR0をカバーする4×4ブロック、即ちブロックB0と、BR1をカバーする4×4ブロック、即ちブロックB1と、BR2をカバーする4×4ブロック、即ちブロックB2とを識別するために、BR0、BR1又はBR2が使用される。幾つかの例では、ブロック0又はブロック3からの、若しくはブロック0もしくはブロック3のいずれかからのマージ候補が利用不可能であるとき、ブロックB0、ブロックB1及びブロックB2の1つ又は複数のブロックからの更なるマージ候補が使用される。
[0171]幾つかの例では、例えば次のように4×4で位置合わせされるように、左上隅位置が最初にシフトし、量子化される。((xP+(mvDisp[0]+2)>>2)+2)>>2,(yP+(mvDisp[1]+2)>>2)+2)>>2)を計算し、その後、4×4ブロックを識別するために(nPSW/2,nPSH/2)、(nPSW,nPSH)のシフトが直接適用され得る。他の潜在的ブロックは、(nPSW/2−4,nPSH/2−4)、(nPSW/2+4,nPSH/2+4)、(nPSW−4,nPSH−4)、及び(nPSW+4,nPSH+4)のシフトに基づき得る。シフトが適用された後、シフトしたサンプル位置を左上位置として使用する4×4ブロックが識別される。
[0172]上述のように、本開示で説明する技法は、3D−HEVCなどのビデオコード化規格に関する。以下では、HEVCに関する何らかのコンテキストを提供する。
[0173]どのピクチャが現在のピクチャについての参照ピクチャであり得るかを識別するために、参照ピクチャリストが利用される。例えば、参照ピクチャリストはそれぞれ、インデックスによってアドレス指定可能な、参照ピクチャを識別する複数のエントリーを含む。ビデオコーダは、Pピクチャについての1つの参照ピクチャリストとBピクチャについての2つの参照ピクチャリストとを構築することができる。参照ピクチャリストは、RefPicList0及びRefPicList1として識別される。参照ピクチャリスト構築は、参照ピクチャリスト初期化ステップと参照ピクチャリスト並べ替え(修正)ステップとを含む。
[0174]参照ピクチャリスト初期化は、ビデオコーダが参照ピクチャメモリ(復号ピクチャバッファとしても知られる)に記憶された参照ピクチャを、POC(ピクチャの表示順で整列されるピクチャ順序カウント)値の順序に基づいて参照ピクチャリストに入れる明示的機構である。参照ピクチャリスト並べ替えでは、ビデオコーダは、参照ピクチャリスト初期化中のリストにおけるピクチャの位置を任意の新しい位置に修正すること、又は参照ピクチャメモリに記憶された任意の参照ピクチャを任意の位置に入れることができる。これは、初期化されたリストに属していないピクチャを含む。幾つかの例では、参照ピクチャリスト並べ替え(修正)の後、ビデオコーダは幾つかのピクチャを、リスト中のより遠い位置に置く。但し、ピクチャの位置がリストのアクティブ参照ピクチャの数を超える場合、ピクチャは、最終参照ピクチャリストのエントリーとは見なされない。アクティブ参照ピクチャの数は、リストごとにスライスヘッダにおいて信号伝達され得る。参照ピクチャリストが構築された(即ち、利用可能な場合にRefPicList0及びRefPicList1)後、ビデオコーダは、参照ピクチャリストへの参照インデックスに基づいて、参照ピクチャリストに含まれる参照ピクチャを識別する。
[0175]上述のように、動きベクトルは参照ピクチャ中のブロックを識別する。幾つかの例では、動きベクトル自体をコード化するのではなく、ビデオコーダは動きベクトルを導出するために動きベクトル予測子を利用することができる。動きベクトル予測子の一例は、時間的動きベクトル予測子である。時間的動きベクトル予測子(TMVP)を決定するために、ビデオコーダは、同一位置配置されたピクチャを識別する。現在のピクチャがBスライスである場合、同一位置配置されたピクチャがRefPicList0からのものかRefPicList1からのものかを示すために、ビデオエンコーダ20によってスライスヘッダ中でcollocated_from_l0_flagが、ビデオデコーダ30によって受信されるように信号伝達される。例えば、collocated_from_l0_flagの0の値は、同一位置配置されたピクチャがRefPicList1において識別されることを示し、collocated_from_l0_flagの1の値は、同一位置配置されたピクチャがRefPicList0において識別されることを示す。
[0176]ビデオコーダが参照ピクチャリストを識別した後、ビデオコーダは、識別された参照ピクチャリスト中でピクチャを識別するために、スライスヘッダ中で信号伝達されたcollocated_ref_idxを使用する。ビデオコーダは、同一位置配置されたピクチャ中で、同一位置配置された予測単位(PU)を識別する。同一位置配置された予測単位の例としては、現在のピクチャ中の現在のブロックが位置する場所に対する同一位置配置されたピクチャ中のCUの右下に位置するPU、又は現在のブロックが位置する場所に対する同一位置配置されたピクチャ中のCU中の中心ブロックがある。TMVPは、右下PU又は中心PUの動き情報のうちの1つであり得る。
[0177]幾つかの例では、TMVPは、先進動きベクトル予測(AMVP:advanced motion vector prediction)モード又はマージ/スキップモードに使用される候補動きベクトル予測子のリスト中でビデオコーダが識別する動きベクトル予測子のうちの1つであり、これらのモードの両方について、より詳細に説明する。動きベクトル予測子の更なる例としては、空間的動きベクトル予測子(SMVP)と呼ばれる、空間的に隣接するブロックの動きベクトルがある。本開示で説明する技法によれば、視差ベクトルによって識別される参照ブロックの動きベクトルは、動きベクトル予測子のうちの1つを形成することもでき、幾つかの例では、視差ベクトル自体が、動きベクトル予測子のうちの1つを形成することができる。
[0178]ビデオコーダがAMVPモード又はマージモードのための動き候補を生成するために上記のプロセスによって識別される動きベクトルを使用するとき、ビデオコーダは、時間位置(POCに反映される)に基づいて動きベクトルをスケーリングすることができる。幾つかの例では、ビデオコーダは、マージモードの場合にTMPVの参照インデックスをゼロに等しく設定するように事前構成されてよく、またAMVPモードの場合に、ビデオコーダは参照インデックスを、信号伝達された参照インデックスに等しく設定してよい。
[0179]HEVCでは、SPSは、フラグsps_temporal_mvp_enable_flagを含み、スライスヘッダは、sps_temporal_mvp_enable_flagが1に等しいとき、フラグpic_temporal_mvp_enable_flagを含む。ある特定のピクチャに対してpic_temporal_mvp_enable_flagとtemporal_idの両方が0に等しいとき、復号順序がその特定のピクチャの前のピクチャからの動きベクトルは、特定のピクチャ、又は復号順序が特定のピクチャの後のピクチャの復号において、時間的動きベクトル予測子として使用されない。
[0180]以下では、マージモード及びAMVPモードについて説明する。マージモード及びAMVPモードの一部として視差ベクトルを使用するための技法について、以下で更により詳細に説明する。
[0181]マージモード及びAMVPモードでは、ビデオコーダ(例えば、ビデオエンコーダ20又はビデオデコーダ30)は、候補動きベクトル予測子のリストを構築する。候補動きベクトル予測子のリストは、空間的又は時間的に隣接するブロックなど、隣接ブロックについての動きベクトルを含む。ビデオエンコーダ20は、候補動きベクトル予測子のリストへのインデックスを信号伝達し、ビデオデコーダ30は、インデックスに基づいて動きベクトル予測子を決定する。
[0182]マージモードでは、ビデオコーダは、動きベクトル予測子についての動き情報(例えば、参照ピクチャ及び動きベクトル値)の全てを、現在のブロックについての動き情報として継承する。AMVPモードでは、ビデオエンコーダ20は、現在のブロックについての実際の動きベクトルと動きベクトル予測子との間の動きベクトル差分値(MVD)を信号伝達する。ビデオデコーダ30は、動きベクトル予測子にMVDを加算することによって、現在ブロックについての実際の動きベクトルを決定する。更に、ビデオエンコーダ20は、参照ピクチャを識別するために使用される情報(例えば、RefPicList0及びRefPicList1の一方又は両方へのインデックス値)を信号伝達し、ビデオデコーダ30は、参照ピクチャを識別するために使用される受信された情報に基づいて参照ピクチャを決定する。
[0183]幾つかの例では、隣接ブロックの動きベクトルに加えて、現在のブロックの視差ベクトルから決定された動きベクトル、ならびに視差ベクトルが、マージモード及びAMVPモードのために候補動きベクトル予測子のリストに追加され得る。視差ベクトルから動きベクトルを決定するための技法及び視差ベクトルを決定するための技法については、以下で更に説明する。
[0184]以下では、視差ベクトル導出のための技法(例えば、視差ベクトル導出プロセス)について説明する。視差ベクトルを導出するために、隣接ブロックベース視差ベクトル(NBDV)導出技法と呼ばれる方法が、ビデオエンコーダ20及びビデオデコーダ30によって現在の3D−HTMにおいて使用される。例えば、ビデオコーダは、NBDV導出技法に従って視差ベクトルを導出するために、空間的隣接ブロック及び時間的隣接ブロックからの視差動きベクトルを利用する。NBDV導出技法では、ビデオコーダは、固定されたチェック順に空間的隣接ブロック又は時間的隣接ブロックの動きベクトルをチェックする。ビデオコーダが視差動きベクトル又は暗示的視差ベクトル(IDV)(暗示的視差ベクトルについては、以下でより詳細に説明する)を識別した後、ビデオコーダは、チェックプロセスを終了させ、識別された視差動きベクトルが返され、ビデオコーダは、識別された視差動きベクトルを視差ベクトルに変換する。ビデオコーダは、ビュー間動き予測及びビュー間残差予測として視差ベクトルを使用する。
[0185]幾つかの例では、ビデオコーダが、所定の隣接ブロックを全てチェックした後、隣接ブロックからの視差動きベクトル又はIDVを識別しないこともあり得る。そのような例では、ビデオコーダが視差動きベクトル又はIDVを識別しなかった場合、ビデオコーダは、現在のブロックについてのゼロ視差ベクトルを決定する。ビデオコーダは、ビュー間動き予測など、様々なビデオコード化ツールにゼロ視差ベクトルを使用する。但し、ビデオコーダが視差動きベクトル又はIDVを識別しなかった場合、ビュー間残差予測は現在のブロックに利用可能ではない。
[0186]上述のように、ビデオコーダは、NBDV導出技法の一部として視差動きベクトルを識別するために、空間的隣接ブロック及び時間的隣接ブロックをチェックする。空間的隣接ブロックでは、ビデオコーダは、5つの空間的隣接ブロックをチェックし、これらの例としては、HEVC仕様のFigure 8−3において定義されるように、A0、A1、B0、B1又はB2によって示される、現在のブロック(例えば、現在の予測単位(PU))の左下、左、右上、上及び左上のブロックがある。ビデオコーダがチェックする時間的隣接ブロックについては、図5に関してより詳細に説明する。
[0187]図5は、隣接ブロックベース視差ベクトル(NBDV)導出のための時間的隣接ブロックを示す概念図である。時間的隣接ブロックでは、ビデオコーダは現在のビューから最大2つの参照ピクチャをチェックする。2つの参照ピクチャは、同一位置配置されたピクチャ(例えば、上述のTMVPプロセスの一部としてスライスヘッダ中で信号伝達されるもの)及びランダムアクセスピクチャ又は最小のPOC差異と最小の時間的IDとを有する参照ピクチャのうちの1つである。幾つかの例では、ビデオコーダは、最初にランダムアクセスピクチャをチェックし、続いて、同一位置配置されたピクチャをチェックする。例えば、ビデオコーダがランダムアクセスピクチャ中に視差動きベクトルを識別した場合、ビデオコーダは時間的隣接ブロックのチェックを終了させる。ビデオコーダがランダムアクセスピクチャ中に視差動きベクトルを識別しなかった場合、ビデオコーダは同一位置配置されたピクチャ(例えば、TMVPプロセスの一部としてスライスヘッダ中で識別されたピクチャ)をチェックする。これらのピクチャの各々は、NBDV導出の目的で候補ピクチャと呼ばれる。
[0188]候補ピクチャごとに、ビデオコーダは2つの候補ブロックをチェックする。第1のブロックは中心ブロック(CR)である。例えば、CRブロックは図5の位置Aに位置し、現在のPUの同一位置配置された領域の中心4×4ブロックである。第2のブロックは右下ブロック(BR)である。例えば、BRブロックは図5の位置Bに位置し、現在のPUの同一位置配置された領域の右下4×4ブロックである。
[0189]上述のように、視差動きベクトルについて空間的隣接ブロック及び時間的隣接ブロックをチェックすることに加えて、ビデオコーダは暗示的視差ベクトル(IDV)を識別することができる。暗示的視差ベクトル(IDV)は、PUがビュー間動きベクトル予測を採用するとき、即ち、AMVPモード又はマージモードのための候補が、視差ベクトルの助けにより他のビュー中の対応するブロックから導出されるとき、生成される。そのような視差ベクトルは、IDVと呼ばれる。IDVは、視差ベクトル導出の目的でPUに記憶される。言い換えれば、ビデオコーダは、隣接ブロックについての視差ベクトルを導出するためのNBDV技法を実装していることがある。隣接ブロックについての視差ベクトルは、現在のブロックについての視差ベクトルとして機能し得る。現在のブロックについての視差ベクトルとして機能する隣接ブロックについての視差ベクトルは、IDVと呼ばれる。
[0190]ビデオコーダは、特定のチェック順序で空間的隣接ブロックと、時間的隣接ブロックと、IDVとをチェックすることができる。例えば、ビデオコーダは、最初に視差動きベクトルについて空間的隣接ブロックと時間的隣接ブロックとをチェックすることができ、視差動きベクトルが識別されなかった場合、IDVをチェックすることができる。
[0191]幾つかの例では、ビデオコーダは、最初に空間的隣接ブロックをチェックし、次いで時間的隣接ブロックをチェックする。例えば、ビデオコーダは次の順序で5つの空間的隣接ブロックをチェックする。A1、B1、B0、A0そしてB2。それらのうちの1つが視差動きベクトル(DMV)を使用する場合、ビデオコーダはチェックプロセスを終了させ、最終的な視差ベクトルとして対応するDMVを使用する。時間的隣接ブロックでは、候補ピクチャごとに、ビデオコーダは次の順序で2つのブロックをチェックする。第1の非ベースビュー(例えば、ランダムアクセスピクチャ)についてCR(図5の位置A)そしてBR(図5の位置B)又は第2の非ベースビューについて(例えば、同一位置配置されたピクチャについて)BR、CR。それらのうちの1つがDMVを使用する場合、ビデオコーダはチェックプロセスを終了させ、最終的な視差ベクトルとして対応するDMVを使用する。IDVでは、ビデオコーダは次の順序で5つの空間的隣接ブロックをチェックする。A0、A1、B0、B1そしてB2。それらのうちの1つがIDVを使用する場合(即ち、それらのうちの1つについて視差ベクトルが存在する場合)、スキップ/マージモードとしてブロックがコード化され、ビデオコーダは、チェックプロセスが終了することを終了させ、最終的な視差ベクトルとして対応するIDVを使用する。
[0192]幾つかの例では、ビデオコーダは更に、視差ベクトルを改良し得る。例えば、ビデオコーダは、NBDV方式から生成された視差ベクトルを改良するために、コード化された深度マップにおける情報を使用する。例えば、単にNBDV導出技法から導出された視差ベクトルの精度は、十分に正確ではないことがあり、コード化されたベースビュー深度マップにおける情報を使用することによって、精度が高まり得る。例えば、図3では、ビューS0はベースビューであり、ビューS0のテクスチャビューコンポーネントの各々について、対応する深度マップがあり得る。ビデオコーダは、ベースビューS0中の対応するテクスチャビューコンポーネントの深度マップを使用して、視差ベクトル改良を実行することができる。
[0193]例えば、ビデオコーダは、ベースビューなど、以前にコード化された参照深度ビュー中のNBDV導出された視差ベクトルによって対応する深度ブロックを位置特定することができる。対応する深度ブロックのサイズは、現在のPUのサイズと同じである。ビデオコーダは、4つのコーナー深度値の最大値に基づいて、同一位置配置された深度ブロックから視差ベクトルを計算することができる。ビデオコーダは、最大深度値を視差ベクトルの水平成分に等しく設定し、視差ベクトルの垂直成分を0に設定する。
[0194]この得られた改良済み視差ベクトルは、「深度指向隣接ブロックベース視差ベクトル(DoNBDV:depth oriented neighboring block based disparity vector)」と呼ばれる。ビデオコーダは、AMVPモード及びマージモードに関するビュー間候補導出のために、DoNBDV方式からの新規に導出された視差ベクトルに、NBDV方式からの視差ベクトルを置き換える。但し、ビュー間残差予測では、ビデオコーダは改良されていない視差ベクトルを使用する。加えて、改良された視差ベクトルは、後方ビュー合成予測(VSP)モードでコード化される場合、1つのPUの動きベクトルとして記憶される。本開示では、視差ベクトルという用語は、改良されていない視差ベクトル又は改良された視差ベクトルを指し得る。
[0195]図6は、後方ビュー合成予測(BVSP)に関連する参照ビューからの深度ブロック導出を示す概念図である。例えば、図6は、隣接ブロックを使用するBVSPに関する技法を示す概念図である。BVSPは、3D−HEVCのための技法として提案され、採用されている。JCT3V−C0152において提案されたような後方ワーピングVSP手法が、第3回JCT−3V会合において採用された。JCT3V−C0152は、http://phenix.int−evry.fr/jct3v/doc_end_user/current_document.php?id=594から入手可能である。
[0196]この後方ワーピングVSPの基本的な考えは、3D−AVCにおけるブロックベースVSPと同じである。これらの2つの技法の両方は、動きベクトル差分を送信することを避け、より正確な動きベクトルを使用するために、後方ワーピングVSPとブロックベースVSPとを使用する。実装の詳細は、プラットフォームの違いに起因して異なる。以下の段落では、「BVSP」という用語は、3D−HEVCにおける後方ワーピングVSP手法を示すために使用される。
[0197]3D−HTMでは、テクスチャ優先コード化が共通試験条件において適用される。従って、対応する非ベース深度ビューは、1つの非ベーステクスチャビューを復号するとき、利用不可能である。従って、深度情報は、BVSPを実行するために推定及び使用される。ブロックに関する深度情報を推定するために、幾つかの技法は、最初に隣接ブロックから視差ベクトルを導出し、次いで参照ビューから深度ブロックを取得するために、導出された視差ベクトルを使用する。
[0198]HTM5.1試験モデルでは、NBDVとして知られる視差ベクトル予測子を導出するためのプロセスが存在する。(dvx,dvy)がNBDV関数から識別された視差ベクトルを示し、現在のブロック位置が(blockx,blocky)であるとする。参照ビューの深度画像中の(blockx+dvx,blocky+dvy)における深度ブロックをフェッチすることが提案された。フェッチされた深度ブロックは、現在の予測単位(PU)の同じサイズを有することになり、それが次いで、現在のPUのための後方ワーピングを行うために使用されることになる。図6は、参照ビューから深度ブロックを位置特定し、次いで、BVSP予測のためにその深度ブロックを使用するためのステップを示す。
[0199]図6の例では、深度ピクチャ150及びテクスチャピクチャ154は同じビューに対応し、一方、テクスチャピクチャ152は異なるビューに対応する。特に、テクスチャピクチャ152は、参照ピクチャとして働く、テクスチャピクチャ154に対してコード化されている現在のブロック160を含む。ビデオコーダは、現在のブロック160に隣接する、隣接ブロック162を参照し得る。隣接ブロック162は、以前に決定された視差ベクトル166を含む。視差ベクトル166は、現在のブロック160についての視差ベクトル164として導出され得る。従って、視差ベクトル164は、参照ビューの深度ピクチャ150中の深度ブロック156を参照する。
[0200]ビデオコーダは、次いで、後方ワーピングを実行するために、現在のブロック160の画素のための視差値168(即ち、テクスチャ値)を決定するために、深度ブロック156の画素(即ち、深度値)を使用し得る。ビデオコーダは、次いで、視差値168によって識別された画素から、現在のブロック160のための予測されたブロック(即ち、BVSP参照ブロック)のための値を合成し得る。ビデオコーダは、次いで、この予測されたブロックを使用して、現在のブロック160を予測し得る。例えば、ビデオエンコーダ20によるビデオ符号化中に、ビデオエンコーダ20は、残差値を生成するために、予測されたブロックと現在のブロック160との間の画素ごとの差分を計算し得、ビデオエンコーダ20は、次いで、それを変換、量子化、及びエントロピー符号化し得る。一方、ビデオデコーダ30によるビデオ復号中に、ビデオデコーダ30は、残差データをエントロピー復号、逆量子化、及び逆変換し、次いで、現在のブロック160を再生するために、残差データを(画素ごとに)予測されたブロックと結合し得る。
[0201]幾つかの例では、BVSPがシーケンス中で有効にされる場合、ビュー間動き予測用のNBDVプロセスは変更される。時間的隣接ブロックの各々について、時間的隣接ブロックが視差動きベクトルを使用する場合、ビデオコーダは視差ベクトルとして視差動きベクトルを返し、視差ベクトルを更に改良するための技法に関して上述した方法により視差ベクトルを更に改良する。空間的隣接ブロックの各々について、次のことが当てはまる。参照ピクチャリスト0又は参照ピクチャリスト1の各々について、空間的隣接ブロックが視差動きベクトルを使用する場合に次のことが当てはまり、ビデオコーダは視差ベクトルとして視差動きベクトルを返し、視差ベクトルを更に改良するための技法に関して上述した方法により更に改良される。別段に、空間的隣接ブロックがBVSPモードを使用する場合、ビデオコーダは、視差ベクトルとして関連の動きベクトルを返す。視差ベクトルを更に改良するための技法に関して上述した方法と同様の方法で視差ベクトルが更に改良される。但し、最大深度値は、4つのコーナー画素ではなく、対応する深度ブロックの全ての画素から選択される。空間的隣接ブロックの各々について、空間的隣接ブロックがIDVを使用する場合、そのIDVが視差ベクトルとして返され、視差ベクトルを更に改良するための技法に関して上述した方法により視差ベクトルが更に改良される。上述のように、本開示では、「視差ベクトル」という用語は一般に、改良されていない視差ベクトル又は改良された視差ベクトルを指すために使用される。
[0202]BVSPコード化されたPUの指示について、ビデオコーダは、導入されたBVSPモードを、特殊なインターコード化されたモードとして扱い、BVSPモードの使用を示すためにフラグを使用し、ビデオコーダは、PUごとにそれを維持することができる。幾つかの例では、ビデオコーダは、ビットストリーム中でフラグを信号伝達するのではなく、新規のマージ候補(BVSPマージ候補)をマージ候補リスト(例えば、候補動きベクトル予測子のリスト)に追加し、フラグは、復号されたマージ候補インデックスがBVSPマージ候補に対応するかどうかに依存する。
[0203]以下では、BVSPマージ候補について説明する。例えば、ビデオコーダは、各参照ピクチャリストの参照ピクチャインデックスを−1に設定し、次いで、各参照ピクチャリストの動きベクトルを、改良された視差ベクトルとして設定することができる。
[0204]BVSPマージ候補の挿入位置は、空間的隣接ブロックに依存する。例えば、5つの空間的隣接ブロック(即ち、A0、A1、B0、B1、又はB2)のいずれかがBVSPモードによりコード化される(即ち、隣接ブロックの維持されたフラグが1に等しい)場合、ビデオコーダは、BVSPマージ候補を対応する空間的マージ候補として扱うことができ、それをマージ候補リストに挿入する。幾つかの例では、ビデオコーダは、BVSPマージ候補を1回だけマージ候補リストに挿入する。そうでない場合(例えば、5つの空間的隣接ブロックのいずれもBVSPモードによりコード化されない場合)、ビデオコーダは、時間的マージ候補の直前にBVSPマージ候補をマージ候補リストに挿入する。幾つかの例では、結合双予測マージ候補導出プロセス中、ビデオコーダは、BVSPマージ候補を含めるのを避けるために、追加条件をチェックすればよい。
[0205]以下では、予測導出プロセスについて説明する。サイズがN×Mによって示される各BVSPコード化されたPUの場合、ビデオコーダはPUを、K×K(ここでKは4又は2であり得る)に等しいサイズを有する幾つかのサブ領域に更に区分する。各サブ領域について、ビデオコーダは、別個の視差動きベクトルを導出し、ビュー間参照ピクチャ中の導出された視差動きベクトルによって位置特定された1つのブロックから各サブ領域を予測する。言い換えれば、BVSPコード化されたPUのための動き補償単位のサイズは、K×Kに設定される。幾つかの共通試験条件では、Kは4に設定される。
[0206]以下では、視差動きベクトル導出プロセスについて説明する。BVSPモードによりコード化された1つのPU内の各サブ領域(例えば、4×4ブロック)について、ビデオコーダは最初に、対応する4×4深度ブロックを、上述の改良された視差ベクトルにより参照深度ビュー中において位置特定する。次いでビデオコーダは、対応する深度ブロック中の16個の深度画素の最大値を選択する。次に、ビデオコーダは、その最大値を視差動きベクトルの水平成分に変換する。視差動きベクトルの垂直成分は、0に設定される。
[0207]上述のように、視差ベクトルを使用するビデオコード化ツールのうちの1つは、ビュー間動き予測である。以下では、視差ベクトルが使用される方法を含む、ビュー間動き予測について説明する。
[0208]図7は、ビュー間予測動きベクトル候補の導出を示すブロック図である。DoNBDV方式から導出された視差ベクトルに基づいて、新規の動きベクトル候補であるビュー間予測動きベクトル候補(IPMVC)が、利用可能な場合に、ビデオコーダによってAMVPモード及びスキップ/マージモードに追加され得る。ビュー間予測動きベクトルは、利用可能な場合、時間的動きベクトルである。
[0209]スキップモードはマージモードと同じ動きベクトル導出プロセスを有するので、以下で説明する技法は、マージモードとスキップモードの両方に適用され得る。マージ/スキップモードに関して、ビデオコーダは、以下のステップに従ってビュー間予測動きベクトルを導出する。ビデオコーダは、視差ベクトルを使用して同じアクセス単位の参照ビュー中の現在のブロック(例えば、現在のPU/CU)の対応するブロックを位置特定する。対応するブロックがイントラコード化されず、ビュー間予測されず、それの参照ピクチャが、現在のPU/CUの同じ参照ピクチャリスト中の1つのエントリーのPOC値に等しいPOC値を有する場合、ビデオコーダは、ビュー間予測動きベクトルとなるようにPOC値に基づいて参照インデックスを変換し、対応するブロックの動き情報(予測方向、参照ピクチャ、及び動きベクトル)を導出する。
[0210]例えば、図7では、現在のブロックは、時間T1においてビューV1中にある。ビデオコーダは、ビューV0中の時間T1における参照ピクチャから、現在のブロックについての対応するブロックを識別し得る。ビデオコーダは、垂直の破線矢印によって示されているように、ビューV0中の参照ピクチャ中の対応するブロックについての動きベクトルとして、ビュー間予測ベクトルを導出することができる。
[0211]幾つかの例では、参照ビュー中の参照ピクチャ中の位置を決定するための以下の式を使用して、対応するブロックが識別され、その場合、決定された位置をカバーするブロックが参照ブロック(例えば、対応するブロック)として識別される。
xRef = Clip3( 0, PicWidthInSamplesL - 1, xP + (( nPSW - 1 ) >> 1 ) + (( mvDisp[0] + 2 ) >> 2 ) ) (H-124)
yRef = Clip3( 0, PicHeightInSamplesL - 1, yP + (( nPSH - 1 ) >> 1 ) + (( mvDisp[1] + 2 ) >> 2 ) ) (H-125)
[0212]言い換えれば、3D−HEVCでは、参照4×4ブロックは、2つのステップによって識別され、第1のステップは、視差ベクトルにより画素を識別することであり、第2のステップは、(それぞれRefPicList0又はRefPicList1に対応する動き情報の固有のセットとともに)4×4ブロックを取得し、マージ候補を作成するために動き情報を利用することである。幾つかの例では、上記の式は、参照ビューの参照ピクチャ中の位置を決定するために(例えば、図4の位置C0の位置を決定するために)使用される。
[0213]但し、本開示で説明する技法によれば、参照ピクチャ中の位置を決定するために上記の式を使用することは、最適なビデオコード化利得をもたらす統計的傾向がないことがある。従って、幾つかの例では、参照ピクチャ内の位置を決定するために(例えば、図4の位置C3の位置を決定するために)以下の式が使用され得る。
xRef = Clip3( 0, PicWidthInSamplesL - 1, xP + (( nPSW) >> 1 ) + (( mvDisp[0] + 2 ) >> 2 ) ) (H-124)
yRef = Clip3( 0, PicHeightInSamplesL - 1, yP + (( nPSH) >> 1 ) + (( mvDisp[1] + 2 ) >> 2 ) ) (H-125)
[0214]加えて、幾つかの例では、ビデオコーダは、視差ベクトルをビュー間視差動きベクトルに変換し、ビュー間視差動きベクトルが利用可能であるとき、ビュー間視差動きベクトルを、IPMVCとは異なる位置においてマージ候補リストに追加するか、又はビュー間視差動きベクトルを、IPMVCと同じ位置においてAMVP候補リストに追加する。IPMVC又はビュー間視差動きベクトル候補(IDMVC)のいずれかは、このコンテキストにおいて、「ビュー間候補」と呼ばれる。
[0215]マージ/スキップモードでは、IPMVCが利用可能である場合、ビデオコーダはマージ候補リストに、全ての空間的及び時間的マージ候補より前に、IPMVCを挿入する。ビデオコーダは、A0から導出された空間的マージ候補の前にIDMVCを挿入する。
[0216]以下では、3D−HEVCにおけるテクスチャコード化のためのマージ候補リスト構築について説明する。ビデオコーダは、DoNBDV方法視差ベクトルを導出する。視差ベクトルの場合、3D−HEVCにおけるマージ候補リスト構築プロセスは、次のように定義される。
[0217]ビデオコーダは、上記で説明した手順によってIPMVCを導出する。IPMVCが利用可能である場合、ビデオコーダは、IPMVCをマージリストに挿入する。次いで、3D−HEVCにおいて、ビデオコーダは、空間的マージ候補及びIDMVC挿入に関する導出プロセスを実行する。例えば、ビデオコーダは次の順序で空間的隣接PUの動き情報をチェックすることができる。A1、B1、B0、A0、又はB2。
[0218]ビデオコーダは、以下の手順によって、制約付きプルーニングを実行することができる。A1及びIPMVCが同じ動きベクトル及び同じ参照インデックスを有する場合、ビデオコーダは、A1を候補リストに挿入しない。そうでない場合、ビデオコーダは、A1をリストに挿入する。B1及びA1/IPMVCが同じ動きベクトル及び同じ参照インデックスを有する場合、ビデオコーダは、B1を候補リストに挿入しない。そうでない場合、ビデオコーダは、B1をリストに挿入する。B0が利用可能である場合、ビデオコーダは、B0を候補リストに追加する。IDMVCが、上記で説明した手順によって導出される。IDMVCが利用可能であり、A1及びB1から導出された候補とは異なる場合、ビデオコーダは、IDMVCを候補リストに挿入する。BVSPがピクチャ全体又は現在のスライスに関して有効にされる場合、ビデオコーダは、BVSPマージ候補をマージ候補リストに挿入する。A0が利用可能である場合、ビデオコーダは、A0を候補リストに追加する。B2が利用可能である場合、ビデオコーダは、それを候補リストに追加する。
[0219]次に、ビデオコーダは、時間的マージ候補に関する導出プロセスを実行する。同一位置配置されたPUの動き情報が利用されるHEVCにおける時間的マージ候補導出プロセスと同様に、時間的マージ候補のターゲット参照ピクチャインデックスが、0となるように固定するのではなく変更され得る。0に等しいターゲット参照インデックスが(同じビュー中の)時間的参照ピクチャに対応する一方で、同一位置配置された予測単位(PU)の動きベクトルがビュー間参照ピクチャを指すとき、ビデオコーダは参照インデックスを、参照ピクチャリスト内のビュー間参照ピクチャの第1のエントリー(例えば、別のビュー中の参照ピクチャを伴う第1のエントリー)に対応する別のインデックスに変更する。0に等しいターゲット参照インデックスがビュー間参照ピクチャに対応する一方で、同一位置配置された予測単位(PU)の動きベクトルが時間的参照ピクチャを指すとき、ビデオコーダは、参照インデックスを、参照ピクチャリスト内の時間的参照ピクチャの第1のエントリー(例えば、同じビュー中の参照ピクチャを伴う第1のエントリー)に対応する別のインデックスに変更する。
[0220]次いで、3D−HEVCにおける結合双予測マージ候補に関する導出プロセスに従う。上記の2つのステップから導出された候補の総数が、候補の最大数未満である場合、ビデオコーダは、l0CandIdx及びl1CandIdxの仕様を除いて、HEVCにおいて定義されたものと同じプロセスを実行する。combIdx、l0CandIdx及びl1CandIdxの間の関係は、次の表において定義されている。
[0221]次いで、ゼロ動きベクトルマージ候補に関する導出プロセスに従う。ビデオコーダは、ゼロ動きベクトルマージ候補に関してHEVCにおいて定義されたものと同じ手順を適用し得る。
[0222]最新のソフトウェアでは、マージ(MRG)リスト中の候補の総数は最大6であり、five_minus_max_num_merge_candが、スライスヘッダ中で6から減算されるMRG候補の最大数を指定するために信号伝達される。シンタックス要素five_minus_max_num_merge_candは、両端値を含む0〜5の範囲内にある。
[0223]図8は、深度コード化のための動きベクトル継承(MVI)候補の導出を示す概念図である。以下では、深度コード化のための動きベクトル継承について説明する。動きベクトル継承(MVI)の背後にある考えは、テクスチャ画像と関連深度画像との間の動き特性の類似性を活用することである。
[0224]深度画像中の所与のPUのために、MVI候補は、すでにコード化された対応するテクスチャブロックの動きベクトルと参照インデックスとを、当該テクスチャブロックが利用可能な場合に再使用する。即ち、テクスチャブロックについての動き情報が、対応する深度ブロックについての動き情報として、同じピクチャ及びビューに使用される。図8は、現在のPUの中心の右下に位置する4×4ブロックとして対応するテクスチャブロックが選択されるMVI候補の導出プロセスの一例を示している。
[0225]幾つかの例では、ビデオコーダは深度コード化において整数精度を有する動きベクトルを使用し、テクスチャコード化に1/4精度の動きベクトル使用する。従って、ビデオコーダは、対応するテクスチャブロックの動きベクトルを、MVI候補として使用する前にスケーリングし得る(例えば、スケーリングするものとする)。
[0226]MVI候補生成により、深度ビューのマージ候補リストが次のように構築される。ビデオコーダは、上記で説明した手順に基づいてMVIを導出する。MVIが利用可能である場合、ビデオコーダは、MVIをマージリストに挿入する。次に、ビデオコーダは、3D−HEVCにおいて空間的マージ候補及びIDMVC挿入に関する導出プロセスを実行し得る。例えば、ビデオは次の順序で空間的隣接PUの動き情報をチェックすることができる。A1、B1、B0、A0、又はB2。
[0227]ビデオコーダは、以下の手順を使用して、制約付きプルーニングを実行し得る。A1及びMVIが同じ動きベクトル及び同じ参照インデックスを有する場合、ビデオコーダは、A1を候補リストに挿入しない。B1及びA1/MVIが同じ動きベクトル及び同じ参照インデックスを有する場合、ビデオコーダは、B1を候補リストに挿入しない。B0が利用可能である場合、ビデオコーダは、B0を候補リストに追加する。A0が利用可能である場合、ビデオコーダは、A0を候補リストに追加する。B2が利用可能である場合、ビデオコーダは、B2を候補リストに追加する。
[0228]次いで、ビデオコーダは、時間的マージ候補に関する導出プロセスを実行し得る。例えば、ビデオコーダは、同一位置配置されたPUの動き情報が利用される、HEVCにおける時間的マージ候補導出プロセスのステップと同様のステップを実行し得る。しかしながら、時間的マージ候補のターゲット参照ピクチャインデックスは、マージ候補リスト構築の記述に関して上記で説明したように、0となるように固定するのではなく変更され得る。
[0229]次いでビデオコーダは、3D−HEVCにおける結合双予測マージ候補に関する導出プロセスを実施することができる。例えば、上記の2つのステップから導出された候補の総数が、候補の最大数未満である場合、ビデオコーダは、l0CandIdx及びl1CandIdxの仕様を除いて、HEVCにおいて定義されたものと同じプロセスを実行することができる。combIdx、l0CandIdx、及びl1CandIdxの間の関係は、本開示の表1(上記)において定義されている。
[0230]次いでビデオコーダは、ゼロ動きベクトルマージ候補に関する導出プロセスを実施することができる。例えば、ビデオコーダは、HEVCにおいて定義されたものと同じ手順を実行することができる。
[0231]上述したように、ビュー間動き予測に加えて、視差ベクトルに依存する別のビデオコード化ツールは、ビュー間残差予測である。以下では、ビュー間残差予測について更に説明する。
[0232]図9は、先進残差予測の例示的な予測構造を示す概念図である。現在の3D−HEVCでは、2つのビューの残差信号間の相関をより効率的に利用するために、所謂先進残差予測(ARP)によってビュー間残差予測が実現されており、ARPでは、参照ビューについての残差ピクチャを維持し、残差ピクチャ中の参照ブロック内の残差を直接予測する代わりに、図9に示すように、視差ベクトルにより識別された参照ブロックの残差がオンザフライで生成されている。
[0233]図9に示すように、Dcとして示される、非ベースビュー中の現在のブロックの残差をより十分に予測するために、ビデオコーダは、最初に視差ベクトルによって参照ブロックBcを識別し、参照ブロックの動き補償が、予測信号Brと参照ブロックBcの再構築信号との間の残差を導出するために呼び出される。ARPモードが呼び出されるとき、ビデオコーダは、非ベースビューの参照ピクチャ中のブロックDrからの動き補償によって生成された非ベースビューの予測信号の上部に予測残差を加算する。ARPモードの潜在的な利点は、(ARPのために残差を生成するとき)参照ブロックによって使用される動きベクトルが、現在のブロックの動きベクトルと一直線に並び、その結果、現在のブロックの残差信号がより正確に予測され得ることである。従って、残差のエネルギーは、かなり低減され得る。
[0234]図10は、先進残差予測の例示的な予測構造を示す別の概念図である。例えば、図10は、図9の様々な成分を示しているが、異なる画像のテクスチャの詳細がない。単に説明を簡単にするために、図10は図9に対して一定の縮尺で描かれてはいないことが諒解されよう。
[0235]ベース(参照)ビューと非ベースビューとの間の量子化差分がより低い予測精度につながり得るので、ビデオコーダは、参照ビューから生成された残差に2つの重み係数、即ち0.5及び1を適応的に適用する。ベース(参照)ビューにおける追加の動き補償がメモリアクセス及び計算の大幅な増大を必要とする場合があるので、コード化効率の犠牲を小さくして設計をより実用的にするための幾つかの方法が採用されてきた。
[0236]一例として、特にビデオエンコーダ20によって、計算を低減するために2N×2Nにより予測単位(PU)がコード化されるときのみ、ARPモードが有効にされる。また、ARPモードによりコード化されるブロックに関するメモリアクセスを大幅に低減するために、参照ブロックと現在のブロックの両方の動き補償のために双線形フィルタが採用される。更に、キャッシュ効率を改善するために、動きベクトルは非ベースビュー中の様々なピクチャを指す場合があるが、ベースビュー中の参照ピクチャは固定される。この場合、現在のブロックの動きベクトルは、ピクチャ距離に基づいてスケーリングされる必要があり得る。
[0237]以下では、深度インターコード化のための幾つかの他の技法について説明する。例えば、それぞれ2013年6月27日、2013年7月18日、及び2013年10月11日に出願された米国仮出願第61/840,400号、61/847,942号、及び61/890,107号、ならびにいずれも2014年6月26日に出願された米国特許出願第14/316,088号及び14/316,145号では、深度ピクチャをコード化するときに、現在のブロックの隣接サンプルからの推定深度値によって視差ベクトルが変換される技法が説明されている。更に、(例えば、視差ベクトルによって識別されたベースビューの参照ブロックにアクセスすることによって)更なるマージ候補が導出され得る。
[0238]図11は、本開示で説明する1つ又は複数の例示的な技法による、ブロック識別のための技法を実装又はさもなければ利用し得るビデオエンコーダ20の一例を示すブロック図である。ビデオエンコーダ20は、ビデオスライス内のビデオブロックのイントラコード化及びインターコード化(即ち、イントラ予測符号化又はインター予測符号化)を実行し得る。イントラコード化は、所与のビデオフレーム又はビデオピクチャ内のビデオの空間的冗長性を低減又は除去するために空間的予測に依拠する。インターコード化は、ビデオシーケンスの隣接するフレーム内又はピクチャ内のビデオの時間的冗長性を低減又は除去するために時間的予測に依拠する。イントラモード(Iモード)は、幾つかの空間ベースのコード化モードのいずれかを指し得る。一方向予測(Pモード)又は双予測(Bモード)などのインターモードは、幾つかの時間ベースのコード化モードのいずれかを指し得る。
[0239]更に、ビデオエンコーダ20は、現在のピクチャを含むビュー以外のビューに参照ピクチャが存在するビュー間予測を実行するように構成され得る。この意味で、ビュー間予測は、インターコード化(例えば、インター予測符号化)の一形態と考えられ得る。その上、ビデオエンコーダ20は、ビュー間予測の一部として視差ベクトルに依存するビデオコード化ツールを実施するように構成され得る。例えば、ビデオエンコーダ20は、2つの例として、ビュー間動き予測及びビュー間残差予測を実施するように構成され得る。
[0240]ビュー間動き予測とビュー間残差予測とを実行するために、ビデオエンコーダ20は、現在のブロックについての視差ベクトルを導出することができる。本開示で説明する技法では、ビデオエンコーダ20は、現在のブロック内の、中心2×2サブブロック中の左上画素ではなく中心2×2サブブロック中の右下画素から開始するように、視差ベクトルの開始位置を設定することができる。ビデオエンコーダ20は、設定された開始位置に基づいて視差ベクトルが参照するブロックを決定し、視差ベクトルに依存するビデオコード化ツールにブロックの動き情報を利用することができる。
[0241]図11に示すように、ビデオエンコーダ20は、符号化されるべきビデオフレーム内の現在のビデオブロックを受信する。図10の例では、ビデオエンコーダ20は、ビデオメモリデータ1100と、モード選択ユニット1140と、参照ピクチャメモリ1164と、加算器1150と、変換処理ユニット1152と、量子化ユニット1154と、エントロピー符号化ユニット1156とを含む。そして、モード選択ユニット1140は、動き補償ユニット1144と、動き推定ユニット1142と、イントラ予測ユニット1146と、区分化ユニット1148とを含む。ビデオブロックの再構築のために、ビデオエンコーダ20はまた、逆量子化ユニット1158と、逆変換処理ユニット1160と、加算器1162とを含む。再構築されたビデオからブロック歪みを除去するためにブロック境界をフィルタリングするためのデブロッキングフィルタ(図11に図示せず)も含まれ得る。必要な場合、デブロッキングフィルタは、通常、加算器1162の出力をフィルタリングする。更なるフィルタ(インループ又はポストループ)も、デブロッキングフィルタに加えて使用され得る。そのようなフィルタは、簡約のために図示されないが、必要な場合、加算器1150の出力を(インループフィルタとして)フィルタリングし得る。
[0242]図11に示すように、ビデオデータメモリ1100は、ビデオピクチャ内の現在のビデオブロックを符号化するために使用されるビデオデータを受信する。ビデオデータメモリ1100は、(例えば、ビデオデータを記憶するように構成された)ビデオエンコーダ20の構成要素によって符号化されるべきビデオデータを記憶するか、又はビデオピクチャを符号化するために使用されるべきビデオデータを記憶することができる。ビデオデータメモリ1100に記憶されたビデオデータは、例えば、ビデオ発信源18から取得され得る。参照ピクチャメモリ1164(復号ピクチャバッファ(DPB)とも呼ばれる)は、(例えば、イントラコード化モード又はインターコード化モードで)ビデオエンコーダ20によってビデオデータを符号化する際に使用するための参照ビデオデータを記憶する。ビデオデータメモリ1100及び参照ピクチャメモリ1164は、同期DRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、又は他のタイプのメモリ機器を含む、ダイナミックランダムアクセスメモリ(DRAM)など、様々なメモリ機器のいずれかによって形成され得る。ビデオデータメモリ1100及びDPB1164は、同じメモリ機器又は別個のメモリ機器によって提供され得る。様々な例では、ビデオデータメモリ1100は、ビデオエンコーダ20の他の構成要素とともにオンチップであるか、又はそれらの構成要素に対してオフチップであり得る。
[0243]符号化プロセス中に、ビデオエンコーダ20はコード化されるべきビデオピクチャ(例えば、フレーム)又はビデオスライスを受信する。ピクチャ又はスライスは複数のビデオブロックに分割され得る。動き推定ユニット1142及び動き補償ユニット1144は、時間的予測を行うために、1つ又は複数の参照フレーム中の1つ又は複数のブロックに対して受信されたビデオブロックのインター予測コード化を実行する。更に、動き推定ユニット1142及び動き補償ユニット1144は、現在のブロックを含むビュー以外のビュー中の1つ又は複数の参照ピクチャ中の1つ又は複数のブロックに対して受信するビデオブロックのインター予測コード化を実行するであり得る。イントラ予測ユニット1146は、代替的に、空間的予測を行うために、コード化されるべきブロックと同じピクチャ又はスライス中の1つ又は複数の隣接ブロックに対して受信されたビデオブロックのイントラ予測コード化を実行し得る。ビデオエンコーダ20は、(例えば、ビデオデータの各ブロックに関して適切なコード化モードを選択するために)複数のコード化パスを実行し得る。
[0244]その上、区分化ユニット1148は、以前のコード化パスにおける以前の区分方式の評価に基づいて、ビデオデータのブロックをサブブロックに区分することができる。例えば、区分化ユニット1148は、最初にピクチャ又はスライスをLCUに区分し、レート歪み分析(例えば、レート歪み最適化)に基づいてLCUの各々をサブCUに区分することができる。モード選択ユニット1140は更に、LCUをサブCUに区分することを示す4分木データ構造を生成することができる。4分木のリーフノードCUは、1つ又は複数のPUと1つ又は複数のTUとを含み得る。
[0245]モード選択ユニット1140は、例えば、誤差結果に基づいて、コード化モード、即ちイントラ又はインター(ビュー間を含む)のうちの1つを選択し、得られたイントラコード化されたブロック又はインターコード化されたブロックを、残差ブロックデータを生成するために加算器1150に提供し、参照ピクチャとして使用するための符号化されたブロックを再構築するために加算器1162に提供することができる。モード選択ユニット1140はまた、動きベクトル、イントラモードインジケータ、区分情報、及び他のそのようなシンタックス情報など、シンタックス要素をエントロピー符号化ユニット1156に与える。
[0246]動き推定ユニット1142と動き補償ユニット1144とは、高度に統合され得るが、概念的な目的のために別々に示してある。動き推定ユニット1142によって実行される動き推定は、ビデオブロックの動きを推定する動きベクトル(視差動きベクトルを含む)を生成するプロセスである。動きベクトルは、例えば、現在のピクチャ(又は他のコード化された単位)内でコード化されている現在のブロックに対する参照ピクチャ(又は他のコード化された単位)内の予測ブロックに対する現在のビデオフレーム又はビデオピクチャ内のビデオブロックのPUの変位を示し得る。予測ブロックは、画素差分の観点で、コード化されるべきブロックと密に整合することが見出されたブロックであり、画素差分は、絶対差分和(SAD)、2乗差分和(SSD)、又は他の差分メトリックによって決定され得る。幾つかの例では、ビデオエンコーダ20は、参照ピクチャメモリ1164に記憶された参照ピクチャのサブ整数画素位置の値を計算し得る。例えば、ビデオエンコーダ20は、参照ピクチャの、4分の1画素位置、8分の1画素位置、又は他の分数の画素位置の値を補間し得る。従って、動き推定ユニット1142は、完全な画素位置及び分数の画素位置に対して動き探索を実行し、分数の画素精度で動きベクトルを出力し得る。
[0247]動き推定ユニット1142は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコード化されたスライス中のビデオブロックのPUについての動きベクトルを計算する。参照ピクチャは、第1の参照ピクチャリスト(リスト0)又は第2の参照ピクチャリスト(リスト1)から選択されてよく、それらの参照ピクチャリストの各々は、参照ピクチャメモリ1164に記憶された1つ又は複数の参照ピクチャを識別する。動き推定ユニット1142は、計算された動きベクトルをエントロピー符号化ユニット1156と動き補償ユニット1144とに送る。
[0248]動き補償ユニット1144によって実行される動き補償は、動き推定ユニット1142によって決定された動きベクトルに基づいて予測ブロックをフェッチ又は生成することに関与し得る。同様に、動き推定ユニット1142及び動き補償ユニット1144は、幾つかの例では、機能的に統合され得る。現在のビデオブロックのPUについての動きベクトルを受信すると、動き補償ユニット1144は、参照ピクチャリストのうちの1つにおいて動きベクトルが指す予測ブロックの位置を特定し得る。加算器1150は、コード化されている現在のビデオブロックの画素値から予測ブロックの画素値を減算することによって残差ビデオブロックを形成し、以下で説明するように画素差分の値を形成する。一般に、動き推定ユニット1142は、ルーマ成分に対して動き推定を実行し、動き補償ユニット1144は、クロマ成分とルーマ成分の両方のために、ルーマ成分に基づいて計算された動きベクトルを使用する。モード選択ユニット1140はまた、ビデオデコーダ30によってビデオスライスのビデオブロックを復号する際に使用するためのビデオブロックとビデオスライスとに関連するシンタックス要素を生成し得る。
[0249]イントラ予測ユニット1146は、上述のように、動き推定ユニット1142と動き補償ユニット1144とによって実行されるインター予測の代替として、現在のブロックをイントラ予測し得る。特に、イントラ予測ユニット1146は、現在のブロックを符号化するために使用すべきイントラ予測モードを決定し得る。幾つかの例では、イントラ予測ユニット1146は、例えば、別個の符号化パス中に様々なイントラ予測モードを使用して現在のブロックを符号化し、イントラ予測ユニット1146(又は、幾つかの例では、モード選択ユニット1140)は、使用するのに適切なイントラ予測モードを、テストされたモードから選択し得る。
[0250]例えば、イントラ予測ユニット1146は、様々なテストされたイントラ予測モードに対してレート歪み分析を使用してレート歪み値を計算し、テストされたモードの中で最良のレート歪み特性を有するイントラ予測モードを選択し得る。レート歪み分析は、概して、符号化されたブロックと、符号化されたブロックを生成するために符号化された元の符号化されていないブロックとの間の歪み(又は誤差)の量、ならびに符号化されたブロックを生成するために使用されるビットレート(即ち、ビット数)を決定する。イントラ予測ユニット1146は、どのイントラ予測モードがブロックについて最良のレート歪み値を呈するかを決定するために、様々な符号化されたブロックの歪み及びレートから比を計算し得る。
[0251]イントラ予測ユニット1146は、ブロックに関するイントラ予測モードを選択した後、ブロックに関して選択されたイントラ予測モードを示す情報を、エントロピー符号化ユニット1156に提供し得る。エントロピー符号化ユニット1156は、選択されたイントラ予測モードを示す情報を符号化し得る。ビデオエンコーダ20は、複数のイントラ予測モードインデックステーブル及び複数の修正されたイントラ予測モードインデックステーブル(符号語マッピングテーブルとも呼ばれる)と、様々なブロックの符号化コンテキストの定義と、コンテキストの各々について使用すべき、最確イントラ予測モード、イントラ予測モードインデックステーブル、及び修正されたイントラ予測モードインデックステーブルの指示とを含み得る構成データを、送信されるビットストリーム中に含め得る。
[0252]ビデオエンコーダ20は、モード選択ユニット1140からの予測データを、コード化されている元のビデオブロックから減算することによって、残差ビデオブロックを形成する。加算器1150は、この減算演算を実行する1つの構成要素又は複数の構成要素を表す。変換処理ユニット1152は、離散コサイン変換(DCT)又は概念的に同様の変換などの変換を残差ブロックに適用して、残差変換係数値を備えるビデオブロックを生成する。変換処理ユニット1152は、DCTと概念的に同様である他の変換を実行し得る。ウェーブレット変換、整数変換、サブバンド変換又は他のタイプ変換も使用され得る。いかなる場合でも、変換処理ユニット1152は、変換を残差ブロックに適用し、残差変換係数のブロックを生成する。変換は、画素値領域からの残差情報を、周波数領域などの変換領域に転換し得る。変換処理ユニット1152は、得られた変換係数を量子化ユニット1154に送り得る。量子化ユニット1154は、ビットレートを更に低減するために変換係数を量子化する。量子化プロセスは、係数の一部又は全てに関連するビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって、修正され得る。幾つかの例では、量子化ユニット1154は、次いで、量子化変換係数を含む行列の走査を実行することができる。代替的に、エントロピー符号化ユニット1156が、走査を実行し得る。
[0253]量子化の後で、エントロピー符号化ユニット1156は、量子化変換係数をエントロピーコード化する。例えば、エントロピー符号化ユニット1156は、コンテキスト適応型可変長コード化(CAVLC)、コンテキスト適応型バイナリ算術コード化(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コード化(SBAC)、確率間隔区分エントロピー(PIPE)コード化、又は別のエントロピー符号化技法を実行し得る。コンテキストベースエントロピー符号化の場合、コンテキストは隣接ブロックに基づき得る。エントロピー符号化ユニット56によるエントロピー符号化の後、符号化されたビットストリームは、別の機器(例えば、ビデオデコーダ30)に送信されるか、又は後で送信するかもしくは取り出すためにアーカイブされ得る。
[0254]逆量子化ユニット1158及び逆変換処理ユニット1160は、それぞれ逆量子化及び逆変換を適用して、例えば、参照ブロックとして後で使用するために、画素領域中で残差ブロックを再構築する。動き補償ユニット1144は、残差ブロックを参照ピクチャメモリ1164のフレームのうちの1つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット1144はまた、再構築された残差ブロックに1つ又は複数の補間フィルタを適用して、動き推定において使用するためのサブ整数画素値を計算し得る。加算器1162は、再構築された残差ブロックを、動き補償ユニット1144によって生成された動き補償予測ブロックに加算して、参照ピクチャメモリ1164に記憶するための再構築されたビデオブロックを生成する。再構築されたビデオブロックは、動き推定ユニット1142及び動き補償ユニット1144によって、後続のビデオフレーム中のブロックをインターコード化するために参照ブロックとして使用され得る。
[0255]図11のビデオエンコーダ20は、本開示で説明する様々な方法を実行するように構成されたビデオエンコーダの一例を表す。例えば、モード選択ユニット1140は、本開示で説明する技法を実装するように構成され得る。幾つかの例では、モード選択ユニット1140は、ビデオエンコーダ20中の1つもしくは複数の他のユニット又はモード選択ユニット1140以外の1つ以上のユニットとともに、本開示で説明する例示的な技法を実装するように構成され得る。幾つかの例では、ビデオエンコーダ20又は発信源機器12のプロセッサ(図示せず)は、本開示で説明する例示的な技法を実装するように構成され得る。
[0256]図12は、本開示で説明する1つ又は複数の例示的な技法による、ブロック識別のための技法を実装又はさもなければ利用し得るビデオデコーダの一例を示すブロック図である。図12の例では、ビデオデコーダ30は、ビデオデータメモリ1200と、エントロピー復号ユニット1280と、動き補償ユニット1282、動きベクトル予測ユニット1283、及びイントラ予測ユニット1284を含む予測処理ユニット1281とを含む。ビデオデコーダ30はまた、逆量子化ユニット1286と、逆変換処理ユニット1288と、参照ピクチャメモリ1292と、加算器1290とを含む。ビデオデコーダ30は、幾つかの例では、ビデオエンコーダ20(図11)に関して説明した符号化パスとは概して逆の復号パスを実行し得る。例えば、ビデオデコーダ30は、イントラ予測復号又はインター予測復号を実行することができる。
[0257]図12の例では、ビデオデータメモリ1200は、符号化されたビデオを受信する。ビデオデータメモリ1200は、ビデオデコーダ30の構成要素によって復号されるために、符号化されたビデオビットストリームなど、(例えば、ビデオデータを記憶するように構成された)ビデオデータを記憶し得る。ビデオデータメモリ1200に記憶されたビデオデータは、カメラなどのローカルビデオ発信源から、ビデオデータのワイヤードもしくはワイヤレスのネットワーク通信を介して、又は物理データ記憶媒体にアクセスすることによって取得され得る。ビデオデータメモリ1200は、符号化されたビデオビットストリームからの符号化されたビデオデータを記憶するコード化済みピクチャバッファ(CPB)を形成し得る。
[0258]参照ピクチャメモリ1292は、(例えば、イントラコード化モード又はインターコード化モードで)ビデオデコーダ30によってビデオデータを復号する際に使用するための参照ビデオデータを記憶する復号済みピクチャバッファ(DPB)の一例である。ビデオデータメモリ1200及び参照ピクチャメモリ1292は、同期DRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM)、又は他のタイプのメモリ機器を含む、ダイナミックランダムアクセスメモリ(DRAM)など、様々なメモリ機器のいずれかによって形成され得る。ビデオデータメモリ1200及び参照ピクチャメモリ1292は、同じメモリ機器又は別個のメモリ機器によって提供され得る。様々な例では、ビデオデータメモリ1200は、ビデオデコーダ30の他の構成要素とともにオンチップであるか、又はそれらの構成要素に対してオフチップであり得る。
[0259]図12のビデオエンコーダ30は、本開示で説明する様々な方法を実行するように構成されたビデオデコーダの一例を表す。例えば、予測処理ユニット1281は、本開示で説明する技法を実装するように構成され得る。幾つかの例では、予測処理ユニット1281は、ビデオデコーダ30中の1つもしくは複数の他のユニット又は予測処理ユニット1281以外の1つ以上のユニットとともに、本開示で説明する例示的な技法を実装するように構成され得る。幾つかの例では、ビデオデコーダ30又は宛先機器14のプロセッサ(図示せず)は、本開示で説明する例示的な技法を実装するように構成され得る。
[0260]動き補償ユニット1282は、エントロピー復号ユニット1280から受信された動きベクトルに基づいて、予測データを生成し得、イントラ予測ユニット1284は、エントロピー復号ユニット1280から受信されたイントラ予測モードインジケータに基づいて、予測データを生成し得る。動きベクトル予測ユニット1283は、視差動きベクトルを含む、インター予測(例えば、インター予測復号)のための動きベクトルを予測し得る。
[0261]復号プロセス中に、ビデオデコーダ30は、符号化されたビデオスライスのビデオブロックと関連するシンタックス要素とを表す符号化されたビデオビットストリームを、ビデオエンコーダ20から(又は記憶装置31などの中間機器を通じて)受信する。ビデオデコーダ30のエントロピー復号ユニット1280は、量子化係数、動きベクトル又はイントラ予測モードインジケータ、及び他のシンタックス要素を生成するために、ビットストリームをエントロピー復号する。エントロピー復号ユニット1280は、予測処理ユニット1281の動き補償ユニット1282に動きベクトルと他のシンタックス要素とを転送する。ビデオデコーダ30は、ビデオスライスレベル及び/又はビデオブロックレベルにおいてシンタックス要素を受信し得る。
[0262]ビデオスライスがイントラコード化された(I)スライスとしてコード化されるとき、予測処理ユニット1281のイントラ予測ユニット1284は、信号伝達されたイントラ予測モードと、現在のフレーム又はピクチャの、前に復号されたブロックからのデータとに基づいて、現在のビデオスライスのビデオブロックのための予測データを生成し得る。ビデオピクチャがインターコード化された(即ち、時間的動きベクトル又は視差動きベクトルに基づくB、P)スライスとしてコード化されるとき、動き補償ユニット1282は、エントロピー復号ユニット1280から受信された動きベクトルと他のシンタックス要素とに基づいて、現在のビデオスライスのビデオブロックのための予測ブロックを生成する。予測ブロックは、参照ピクチャリストのうちの1つの中の、参照ピクチャのうちの1つから生成され得る。ビデオデコーダ30は、参照ピクチャメモリ1292に記憶された参照ピクチャに基づいて、デフォルトの構築技法を使用して、参照ピクチャリストと、リスト0と、リスト1とを構築することができる。動き補償ユニット1282は、動きベクトルと他のシンタックス要素とを構文解析(parsing)することによって現在のビデオスライスのビデオブロックについての予測情報を決定し、復号されている現在のビデオブロックのための予測ブロックを生成するために予測情報を使用する。例えば、動き補償ユニット1282は、ビデオスライスのビデオブロックをコード化するために使用される予測モード(例えば、イントラ予測又はインター予測)と、インター予測スライスタイプ(例えば、時間的動きベクトル又は視差動きベクトルに基づくBスライス、Pスライス)と、スライスのための参照ピクチャリストのうちの1つ又は複数についての構築情報と、スライスのインター符号化されたビデオブロックごとの動きベクトルと、スライスのインターコード化されたビデオブロックごとのインター予測ステータスと、現在のビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、受信されたシンタックス要素の幾つかを使用する。
[0263]動き補償ユニット1282は、補間フィルタに基づいて補間を実行することもできる。動き補償ユニット1282は、参照ブロックの整数未満の画素用の補間された値を計算するために、ビデオブロックの符号化中にビデオエンコーダ20によって使用された補間フィルタを使用することができる。この場合、動き補償ユニット1282は、受信されたシンタックス要素からビデオエンコーダ20によって使用された補間フィルタを決定し、予測ブロックを生成するために補間フィルタを使用し得る。
[0264]逆量子化ユニット1286は、ビットストリーム中で与えられ、エントロピー復号ユニット1280によって復号された、量子化変換係数を逆の量子化(inverse quantize)、即ち、逆量子化(de-quantize)する。逆量子化プロセスは、量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定するための、ビデオスライス中のビデオブロックごとにビデオデコーダ30によって計算される量子化パラメータQPYの使用を含み得る。逆変換処理ユニット1288は、画素領域において残差ブロックを生成するために、逆変換、例えば、逆DCT、逆整数変換、又は概念的に同様の逆変換プロセスを変換係数に適用する。
[0265]動き補償ユニット1282が、動きベクトル及び他のシンタックス要素に基づいて現在のビデオブロックのための予測ブロックを生成した後、ビデオデコーダ30は、逆変換ユニット1288からの残差ブロックを動き補償ユニット1282によって生成された対応する予測ブロックと加算することによって、復号されたビデオブロックを形成する。加算器1290は、この加算演算を実行する1つ又は複数の構成要素を表す。必要な場合、ブロック歪み(blockiness artifacts)を除去するために復号されたブロックをフィルタリングするためのデブロッキングフィルタも適用され得る。他のループフィルタ(コード化ループの中、又はコード化ループの後のいずれかにおける)も、画素の遷移を平滑化し、又は場合によってはビデオ品質を改善するために使用され得る。所与のフレーム又はピクチャ中の復号されたビデオブロックは、次いで、参照ピクチャメモリ1292に記憶され、この参照ピクチャメモリ1292は後続の動き補償のために使用される参照ピクチャを記憶する。参照ピクチャメモリ1292はまた、復号されたビデオを図1の表示装置32などの表示装置上に後で表示できるように記憶する。
[0266]本開示では、ビデオエンコーダ20及びビデオデコーダ30は、一般にビデオコーダと呼ばれることがある。例えば、ビデオコード化のための機器(例えば、発信源機器12、宛先機器14、マイクロプロセッサ、集積回路(IC)は、ビデオデータを記憶するように構成されたビデオデータメモリ(例えば、ビデオデータメモリ1100又はビデオデータメモリ1200)を含む。ビデオコーダ(例えば、ビデオエンコーダ20又はビデオデコーダ30)は、1つ又は複数のプロセッサを含んでおり、記憶されたビデオデータに基づいて現在のビュー中の現在のピクチャ中の現在のブロックについての視差ベクトルを決定するように構成される。例えば、記憶されたビデオデータは、隣接ブロックの動き情報を含むことができ、ビデオコーダは、隣接ブロックのいずれかが視差動きベクトルによりインター予測されたかどうか、又は隣接ブロックについてIDVが存在するかどうかを、記憶されたビデオデータに基づいて決定することができる。ビデオコーダは、隣接ブロックの視差動きベクトル又はIDVに基づいて、現在のブロックについての視差ベクトルを決定することができる。
[0267]ビデオコーダは、参照ビュー中の参照ピクチャ中のブロックを、現在のブロック内の中心2×2サブブロック中の右下画素から開始する視差ベクトルに基づいて、視差ベクトルが参照する参照ピクチャ中の位置に基づいて決定することができる。ビデオコーダは、決定されたブロックに基づいて、現在のブロックをインター予測コード化する(例えば、符号化又は復号する)ことができる。例えば、決定されたブロックが現在のブロックをインター予測コード化するために使用される場合に、ビデオコーダは、決定されたブロックの動き情報を利用することができる。別の例として、ビデオコーダは、現在のブロックについての残差ブロックを決定するために、決定されたブロックの再構築の画素値を利用することができる。これらの例では、視差ベクトルは、視差動きベクトルと考えられ得る。
[0268]図13は、ビデオ復号の例示的な方法を示すフローチャートである。図示のように、ビデオデコーダ30は、現在のビュー中の現在のピクチャ中の現在のブロックについての視差ベクトルを決定することができる(1300)。NBDV導出技法と導出された視差ベクトルの更なる改良とを含む、ビデオデコーダ30が視差ベクトルを決定し得る様々な方法があり得る。例えば、ビデオデコーダ30は、隣接ブロックのいずれかが視差動きベクトルによりインター予測されるかどうか、又は隣接ブロックについてIDVが存在するかどうかを決定するために、ビデオデータメモリ1200に記憶された隣接ブロック(空間的隣接ブロック又は時間的隣接ブロック)の動き情報をチェックすることができる。ビデオデコーダ30は、隣接ブロックの視差動きベクトル又は隣接ブロックのIDVを現在のブロックの視差ベクトルとして変換することができ、新規の視差ベクトルを決定するために視差ベクトルを更に改良することができる。この例では、視差ベクトルは、改良されていない視差ベクトル又は改良された視差ベクトルを指す。
[0269]ビデオデコーダ30は、参照ビュー中の参照ピクチャ中のブロックを、現在のブロック内の中心2×2サブブロック中の右下画素から開始する視差ベクトルに基づいて、視差ベクトルが参照する参照ピクチャ中の位置に基づいて決定することができる(1302)。例えば、図4は、現在のブロック38の中心内にサブブロック48を含む現在のブロック38を示している。現在のブロック38の高さ及び幅のうちの少なくとも1つが偶数であるので、現在のブロック38に単一の中心画素がない。実際には、サブブロック48を形成する4つの画素が、現在のブロック38の中心内にある。参照ピクチャ34中のブロックを決定するために、ビデオデコーダ30は、サブブロック44中の右下画素(例えば、位置46)から視差ベクトルを開始することができる。
[0270]図示のように、視差ベクトルDV2は、位置46から開始し、参照ピクチャ34中の位置C3を参照する。ビデオデコーダ30は、視差ベクトルが参照する参照ピクチャ中の位置をカバーする4×4ブロックを決定することができる。例えば、ビデオデコーダ30は、視差ベクトルDV2が参照する参照ピクチャ34中の位置C3をブロック42がカバーすると決定することができる。
[0271]幾つかの例では、参照ピクチャ中のブロック決定するために、ビデオデコーダ30は、参照ピクチャ中の位置のx座標及びy座標を決定することができる。参照ピクチャ中の位置のx座標は、Clip3(0,PicWidthInSamplesL−1,xP+((nPSW)>>1)+((mvDisp[0]+2)>>2))に等しく、参照ピクチャ中の位置のy座標は、Clip3(0,PicHeightInSamplesL−1,yP+((nPSH)>>1)+((mvDisp[1]+2)>>2))に等しい。PicWidthInSamplesLは参照ピクチャの幅に等しく、PicHeightInSamplesLは参照ピクチャの高さに等しく、xPは現在のブロックの左上隅のx座標に等しく、yPは現在のブロックの左上隅のy座標に等しい。nPSWは現在のブロックの幅に等しく、nPSHは現在のブロックの高さに等しい。mvDisp[0]は視差ベクトルのx成分に等しく、mvDisp[1]は視差ベクトルのy成分に等しい。例えば、現在のブロック内の中心2×2サブブロック中の右下画素のx座標はxP+((nPSW)>>1)に等しく、現在のブロック内の中心2×2サブブロック中の右下画素のy座標はyP+((nPSH)>>1)に等しい。
[0272]ビデオデコーダ30は、決定されたブロックに基づいて現在のブロックをインター予測復号することができる(1304)。例えば、決定されたブロックがインター予測復号に使用されると決定された場合に、ビデオデコーダ30は、ビュー間動き予測又はビュー間残差予測のうちの1つを使用して現在のブロックをインター予測復号することができる。一例として、ビデオデコーダ30は、候補動きベクトル予測子のリストを形成することができ、決定されたブロックからの動き情報を候補動きベクトル予測子のリストに挿入することができる。この例では、ビデオデコーダ30は、決定されたブロックの動き情報が候補動きベクトル予測子のリストから選択された(例えば、候補動きベクトル予測子のリストへのインデックスが、現在のブロック内の中心2×2サブブロックの右下画素から開始する視差ベクトルに基づいて、視差ベクトルによって参照されるブロックの動き情報を参照する)場合に、決定されたブロックの動き情報を使用して現在のブロックをインター予測復号することができる。
[0273]別の例として、ビデオデコーダ30は、決定されたブロックの再構築を予測ブロックとして利用することができる。この例では、ビデオデコーダ30は、現在のブロックをインター予測復号するためにビデオデコーダ30が決定されたブロックに加算する残差値を受信する。視差ベクトルは予測ブロックを指す(例えば、参照ブロックは予測ブロックとして機能する)ので、視差ベクトルは視差動きベクトルと考えられ得る。
[0274]図14は、ビデオ符号化の例示的な方法を示すフローチャートである。図示のように、ビデオエンコーダ20は、現在のビュー中の現在のピクチャ中の現在のブロックについての視差ベクトルを決定することができる(1400)。NBDV導出技法と導出された視差ベクトルの更なる改良とを含む、ビデオエンコーダ20が視差ベクトルを決定し得る様々な方法があり得る。例えば、ビデオエンコーダ20は、隣接ブロックのいずれかが視差動きベクトルによりインター予測されるかどうか、又は隣接ブロックについてIDVが存在するかどうかを決定するために、ビデオデータメモリ1300に記憶された隣接ブロック(空間的隣接ブロック又は時間的隣接ブロック)の動き情報をチェックすることができる。ビデオエンコーダ20は、隣接ブロックの視差動きベクトル又は隣接ブロックのIDVを現在のブロックの視差ベクトルに変換することができ、新規の視差ベクトルを決定するために視差ベクトルを更に改良することができる。この例では、視差ベクトルは、改良されていない視差ベクトル又は改良された視差ベクトルを指す。一般に、本開示では、図13に示す上記の例を含め、視差ベクトルは、改良されていない視差ベクトル又は改良された視差ベクトルを指すために使用される。
[0275]ビデオエンコーダ20は、参照ビュー中の参照ピクチャ中のブロックを、現在のブロック内の中心2×2サブブロック中の右下画素から開始する視差ベクトルに基づいて、視差ベクトルが参照する参照ピクチャ中の位置に基づいて決定することができる(1402)。例えば、図4は、現在のブロック38の中心内にサブブロック48を含む現在のブロック38を示している。現在のブロック38の高さ及び幅のうちの少なくとも1つが偶数であるので、現在のブロック38に単一の中心画素がない。実際には、サブブロック48を形成する4つの画素が、現在のブロック38の中心内にある。参照ピクチャ34中のブロックを決定するために、ビデオエンコーダ20は、サブブロック44中の右下画素(例えば、位置46)から視差ベクトルを開始することができる。
[0276]図示のように、視差ベクトルDV2は、位置46から開始し、参照ピクチャ34中の位置C3を参照する。ビデオエンコーダ20は、視差ベクトルが参照する参照ピクチャ中の位置をカバーする4×4ブロックを決定することができる。例えば、ビデオエンコーダ20は、視差ベクトルDV2が参照する参照ピクチャ34中の位置C3をブロック42がカバーすると決定することができる。
[0277]幾つかの例では、参照ピクチャ中のブロック決定するために、ビデオエンコーダ20は、参照ピクチャ中の位置のx座標及びy座標を決定することができる。参照ピクチャ中の位置のx座標は、Clip3(0,PicWidthInSamplesL−1,xP+((nPSW)>>1)+((mvDisp[0]+2)>>2))に等しく、参照ピクチャ中の位置のy座標は、Clip3(0,PicHeightInSamplesL−1,yP+((nPSH)>>1)+((mvDisp[1]+2)>>2))に等しい。PicWidthInSamplesLは参照ピクチャの幅に等しく、PicHeightInSamplesLは参照ピクチャの高さに等しく、xPは現在のブロックの左上隅のx座標に等しく、yPは現在のブロックの左上隅のy座標に等しい。nPSWは現在のブロックの幅に等しく、nPSHは現在のブロックの高さに等しい。mvDisp[0]は視差ベクトルのx成分に等しく、mvDisp[1]は視差ベクトルのy成分に等しい。例えば、現在のブロック内の中心2×2サブブロック中の右下画素のx座標はxP+((nPSW)>>1)に等しく、現在のブロック内の中心2×2サブブロック中の右下画素のy座標はyP+((nPSH)>>1)に等しい。
[0278]ビデオエンコーダ20は、決定されたブロックに基づいて現在のブロックをインター予測符号化することができる(1404)。例えば、決定されたブロックがインター予測符号化に使用されると決定された場合に、ビデオエンコーダ20は、ビュー間動き予測又はビュー間残差予測のうちの1つを使用して現在のブロックをインター予測符号化することができる。一例として、ビデオエンコーダ20は、候補動きベクトル予測子のリストを形成することができ、決定されたブロックからの動き情報を候補動きベクトル予測子のリストに挿入することができる。この例では、ビデオエンコーダ20は、決定されたブロックの動き情報が候補動きベクトル予測子のリストから選択された(例えば、候補動きベクトル予測子のリストへのインデックスが、現在のブロック内の中心2×2サブブロックの右下画素から開始する視差ベクトルに基づいて、視差ベクトルによって参照されるブロックの動き情報を参照する)場合に、決定されたブロックの動き情報を使用して現在のブロックをインター予測符号化することができる。
[0279]別の例として、ビデオエンコーダ20は、決定されたブロックの再構築を予測ブロックとして利用することができる。この例では、ビデオエンコーダ20は、決定されたブロックと現在のブロックとの間の残差値を決定し、残差値を出力する。視差ベクトルは予測ブロックを指す(例えば、参照ブロックは予測ブロックとして機能する)ので、視差ベクトルは視差動きベクトルと考えられ得る。
[0280]例に応じて、本明細書で説明する技法のうちのいずれかの、幾つかの動作又はイベントは、異なるシーケンスで実行され得、全体的に追加、併合、又は除外され得る(例えば、説明する動作又はイベントの全てが、本技法の実施のために必要であるとは限らない)ことを認識されたい。更に、幾つかの例では、動作又はイベントは、連続的にではなく、同時に、例えば、マルチスレッド処理、割込み処理、又は複数のプロセッサを通じて実行され得る。
[0281]1つ又は複数の例では、述べられた機能は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組合せで実装されてもよい。ソフトウェアで実装される場合、機能は、1つ又は複数の命令又はコードとして、コンピュータ可読媒体上で記憶されるか、又はコンピュータ可読媒体を介して送信され得、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ可読記憶媒体、又はコンピュータプログラムの、ある場所から別の場所への、例えば、通信プロトコルによる転送を容易にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的である有形のコンピュータ可読記憶媒体又は(2)信号もしくは搬送波などの通信媒体に相当し得る。データ記憶媒体は、本開示で説明する技法の実装のための命令、コード及び/又はデータ構造を取り出すために1つもしくは複数のコンピュータ又は1つもしくは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含むことできる。
[0282]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶装置、フラッシュメモリ、又は、命令もしくはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る任意の他の媒体を備えることができる。また、任意の接続は、コンピュータ可読媒体と適切に呼ばれる。例えば、命令が、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線(DSL)、又は赤外線、無線、及びマイクロ波などのワイヤレス技術を使用してウェブサイト、サーバ、又は他のリモート発信源から送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、又は赤外線、無線、及びマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体及びデータ記憶媒体は、接続、搬送波、信号又は他の一時的媒体を含まないが、その代わりに非一時的、有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)及びディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)、及びBlu−rayディスク(disc)を含み、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上の組合せも、コンピュータ可読媒体の範囲の中に含まれるべきである。
[0283]命令は、1つ又は複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、又は他の同等の統合された、若しくは個別の論理回路など、1つ又は複数のプロセッサによって実行され得る。従って、本明細書で使用する「プロセッサ」という用語は、前述の構造又は本明細書で説明する技法の実装形態に適した任意の他の構造のいずれかを指し得る。加えて、幾つかの態様では、本明細書で説明する機能は、符号化及び復号のために構成された専用のハードウェアモジュール及び/又はソフトウェアモジュール内に与えられるか、あるいは複合コーデックに組み込まれ得る。また、技法は、1つ又は複数の回路又は論理素子内で完全に実施される可能性がある。
[0284]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、又はICのセット(例えば、チップセット)を含む、多種多様な機器又は装置において実施され得る。本開示では、開示する技法を実行するように構成された機器の機能的態様を強調するために様々な構成要素、モジュール、又はユニットが説明されているが、それらの構成要素、モジュール、又はユニットは、異なるハードウェアユニットによる実現を必ずしも必要としない。むしろ、上記で説明したように、様々なユニットは、適切なソフトウェア及び/又はファームウェアとともに、上記で説明した1つ又は複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わされるか、又は相互動作ハードウェアユニットの集合によって提供され得る。
[0285]様々な例が説明された。これら及び他の例は、以下の特許請求の範囲の範囲内にある。