[0001]本出願は、その内容全体が参照により本明細書に組み込まれる、2013年7月16日に出願された米国仮出願第61/846,985号の利益を主張する。
[0002]本開示は、ビデオコーディングに関する。
[0003]デジタルビデオ機能は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダー、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラーまたは衛星無線電話、いわゆる「スマートフォン」、ビデオ遠隔会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスに組み込まれ得る。デジタルビデオデバイスは、MPEG−2、MPEG−4、ITU−T H.263、ITU−T H.264/MPEG−4,Part10,アドバンストビデオコーディング(AVC:Advanced Video Coding)、現在開発中の高効率ビデオコーディング(HEVC:High Efficiency Video Coding)規格によって定義された規格、およびそのような規格の拡張に記載されているビデオコーディング技法など、ビデオコーディング技法を実装する。ビデオデバイスは、そのようなビデオコーディング技法を実装することによって、デジタルビデオ情報をより効率的に送信、受信、符号化、復号、および/または記憶し得る。
[0004]ビデオコーディング技法は、ビデオシーケンスに固有の冗長性を低減または除去する(remove)ための空間(イントラピクチャ(intra-picture))予測および/または時間(インターピクチャ(inter-picture))予測を含む。ブロックベースビデオコーディングの場合、ビデオスライス(たとえば、ビデオフレームまたはビデオフレームの一部分)が、ツリーブロック、コーディングユニット(CU:coding unit)および/またはコーディングノードと呼ばれることもあるビデオブロックに区分され得る。ピクチャのイントラコード化(I)スライス(an intra-coded (I) slice)中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプル(reference samples)に対する空間予測を使用して符号化される。ピクチャのインターコード化(PまたはB)スライス(an inter-coded (P or B) slice)中のビデオブロックは、同じピクチャの中の隣接ブロック中の参照サンプルに対する空間予測、または他の参照ピクチャ中の参照サンプルに対する時間予測を使用し得る。ピクチャはフレームと呼ばれることがあり、参照ピクチャ(reference pictures)は参照フレームと呼ばれることがある。
[0005]空間予測または時間予測によって、コーディングされるべきブロックの予測ブロックが生じる。残差データは、コーディングされるべき元のブロックと予測ブロックとの間のピクセル差分(pixel differences)を表す。インターコード化ブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトル、およびコード化ブロックと予測ブロックとの間の差分を示す残差データに従って符号化される。イントラコード化ブロックは、イントラコーディングモードと残差データとに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換され、残差変換係数が生じ得、その残差変換係数は、次いで量子化され得る。量子化変換係数は、最初は2次元アレイで構成され、変換係数の1次元ベクトルを生成するために走査され得、なお一層の圧縮を達成するために、エントロピーコーディングが適用され得る。
[0006]概して、本開示では、ビデオデータの現在ブロックのための予測モードをコーディングすること(たとえば、そのモードを示す信号をシグナリングおよび受信すること)に関係する技法について説明する。インター予測ブロック(an inter-predicted block)は、時間インター予測(temporal inter-prediction)、ビュー間予測(inter-view prediction)、高度残差予測(advanced residual prediction)、または照明補償(illumination compensation)を使用して予測され得る。しかしながら、照明補償および高度残差予測は一緒に使用されない。したがって、本開示では、現在ブロックのために高度残差予測が使用されることを効果的に示す、高度残差予測重み付け係数(an advanced residual prediction weighting factor)が0でない値を有するとき、現在ブロックのために照明補償が使用されるかどうかを示すシンタックス要素(たとえば、フラグ)がシグナリングされないことを提案する。
[0007]一例では、ビデオデータを復号する方法は、現在ブロックの高度残差予測(ARP:advanced residual prediction)重み付け係数のための値を決定することと、ARP重み付け係数の値が0に等しくないとき、現在ブロックのための照明補償シンタックス要素の復号をスキップすることと、現在ブロックを復号することとを含む。本方法は、ARP重み付け係数の値が0に等しいとき、現在ブロックのための照明補償シンタックス要素を復号することと、照明補償シンタックス要素の値に少なくとも部分的に基づいて現在ブロックを復号することとをさらに含み得る。
[0008]別の例では、ビデオデータを符号化する方法は、現在ブロックの高度残差予測(ARP)重み付け係数のための値を決定することと、ARP重み付け係数の値が0に等しくないとき、現在ブロックのための照明補償シンタックス要素の符号化をスキップすることと、現在ブロックを符号化することとを含む。本方法は、ARP重み付け係数の値が0に等しいとき、現在ブロックのための照明補償シンタックス要素を符号化することと、照明補償シンタックス要素の値に少なくとも部分的に基づいて現在ブロックを符号化することとをさらに含み得る。
[0009]別の例では、ビデオデータをコーディング(たとえば、符号化または復号)するためのデバイスは、ビデオデータを記憶するように構成されたメモリと、ビデオデータの現在ブロックの高度残差予測(ARP)重み付け係数のための値を決定することと、ARP重み付け係数の値が0に等しくないとき、現在ブロックのための照明補償シンタックス要素のコーディングをスキップすることと、現在ブロックをコーディングすることとを行うように構成されたビデオコーダとを含む。本ビデオコーダは、ARP重み付け係数の値が0に等しいとき、現在ブロックのための照明補償シンタックス要素をコーディングすることと、照明補償シンタックス要素の値に少なくとも部分的に基づいて現在ブロックをコーディングすることとを行うようにさらに構成され得る。
[0010]別の例では、ビデオデータをコーディングするためのデバイスは、現在ブロックの高度残差予測(ARP)重み付け係数のための値を決定するための手段と、ARP重み付け係数の値が0に等しくないとき、現在ブロックのための照明補償シンタックス要素のコーディングをスキップするための手段と、ARP重み付け係数の値が0に等しくないとき、現在ブロックをコーディングするための手段とを含む。本デバイスは、ARP重み付け係数の値が0に等しいとき、現在ブロックのための照明補償シンタックス要素をコーディングするための手段と、ARP重み付け係数の値が0に等しいとき、照明補償シンタックス要素の値に少なくとも部分的に基づいて現在ブロックをコーディングするための手段とをさらに含み得る。
[0011]別の例では、コンピュータ可読記憶媒体(たとえば、非一時的コンピュータ可読記憶媒体)は、命令を記憶しており、その命令は、実行されたとき、現在ブロックの高度残差予測(ARP)重み付け係数のための値を決定することと、ARP重み付け係数の値が0に等しくないとき、現在ブロックのための照明補償シンタックス要素のコーディングをスキップすることと、現在ブロックをコーディングすることとを、ビデオデータをコーディングするためのデバイスのプロセッサに行わせる。本コンピュータ可読記憶媒体は、ARP重み付け係数の値が0に等しいとき、現在ブロックのための照明補償シンタックス要素をコーディングすることと、照明補償シンタックス要素の値に少なくとも部分的に基づいて現在ブロックをコーディングすることとをプロセッサに行わせる命令をさらに含み得る。
[0012]1つまたは複数の例の詳細が以下の添付の図面および説明において記載されている。他の特徴、目的、および利点は、説明および図面、ならびに特許請求の範囲から明らかになろう。
[0013]照明補償をシグナリングするための技法を利用し得る例示的なビデオ符号化および復号システムを示すブロック図。
[0014]照明補償をシグナリングするための技法を実装し得るビデオエンコーダの一例を示すブロック図。
[0015]照明補償をシグナリングするための技法を実装し得るビデオデコーダの一例を示すブロック図。
[0016]例示的なMVC予測パターンを示す概念図。
[0017]現在予測ユニット(PU:prediction unit)とそれの空間隣接PUとの間の関係を示す概念図。
[0018]出力順序でのビデオフレームの予測構造を示す概念図。
[0019]高効率ビデオコーディング(HEVC)によるネットワークアブストラクションレイヤ(NAL:network abstraction layer)ユニットヘッダの概念図。
[0020]照明補償パラメータの導出のために使用され得る隣接サンプルを示す概念図。
[0021]高度残差予測(ARP)のための技法を示す概念図。
[0022]双方向予測の場合の、現在ブロックと参照ブロックと動き補償ブロックとの間の関係を示す概念図。
[0023]ARPのさらなる改善を示す概念図。
[0024]本開示の技法による、ブロックを符号化するための例示的な方法を示すフローチャート。
[0025]本開示の技法による、ブロックを復号するための例示的な方法を示すフローチャート。
詳細な説明
[0026]本開示の技法は、概して、たとえば、3D−HEVC(高効率ビデオコーディング)コーデックを用いた2つまたはそれ以上のビューのコーディングを含む、アドバンストコーデックに基づくマルチレイヤ(たとえば、マルチビュー)ビデオコーディングに関する。たとえば、本開示では、高度残差予測モードのシグナリングとともに照明補償モードのシグナリングに関する技法について説明する。
[0027]概して、ビデオコーディング(符号化または復号)は、ビットストリームを圧縮するために、ビデオデータの個々のピクチャ内の、およびそのデータの別個のピクチャ間の冗長性を利用することを伴う。たとえば、空間予測とも呼ばれるイントラ予測は、隣接する、前にコーディングされたブロックのピクセルを使用してピクチャのブロックを予測することを伴う。時間インター予測は、前にコーディングされたピクチャの参照ブロックを使用してピクチャのブロックを予測することを伴う。レイヤ間予測(inter-layer prediction)は、ビットストリームがビデオデータの複数のレイヤを含むと仮定して、異なるレイヤ中の前にコーディングされたピクチャのデータを使用してピクチャのブロックを予測することを伴う。マルチビュービデオデータの場合、別個のレイヤは、異なるビューに、たとえば、ビューアのための3次元効果を生成するために使用され得るシーンのカメラ・パースペクティブ(camera perspectives)のための異なる水平ロケーションに、対応し得る。
[0028]ビデオデータのブロックを予測するために様々なレイヤ間予測技法が使用され得る。たとえば、ビデオデータのブロックは、レイヤ間参照ピクチャ(an inter-layer reference picture)中の参照ブロックを識別する視差(disparity)動きベクトルを使用して予測され得る。照明補償は、ビュー間予測を伴う別の技法である。概して、照明補償は、現在ブロックに隣接するサンプル(ピクセル)と、参照ブロックに隣接するサンプルとに基づいて線形方程式のパラメータが決定されるその線形方程式を使用して視差動きベクトルによって識別される参照ブロックのピクセル値を操作することを伴う。
[0029]また別の例として、高度残差予測は、現在ブロックを予測するとき、視差ベクトル(または視差動きベクトル)と時間動きベクトルの両方を利用する技法である。概して、視差ベクトルは、参照ビュー中のブロックを識別し、時間動きベクトルは、現在ビュー中の参照ブロックを識別するために現在ブロックに適用されるとともに、参照ビュー中の第2の参照ブロックを識別するために参照ビュー中のブロックに適用される。代替的に、第2の参照ブロックは、第1の参照ブロックに視差ベクトルを適用することによって識別され得る。ビデオコーダは、第2の参照ブロックと参照ビュー中のブロックとの間の差に重み付け係数を適用し、ここで、重み付け係数は0.5または1の値であり得、次いで、現在ブロックのための予測されたブロックを生成するために、第1の参照ブロックに(ピクセルごとに)この重み付けされた値を加算し得る。重み付け係数が0に等しいとき、すべての重み付けされた値は0の値を割り当てられるので、高度残差予測は現在ブロックを予測するために使用されない。第1の参照ブロックと第2の参照ブロックの両方は、重み付け係数が0に等しくないと仮定すると、現在ブロックのための予測されたブロックを計算するために使用される。
[0030]以下でより詳細に説明するように、本開示では、概して、現在ブロックの予測に関係するデータをシグナリングするための技法について説明する。たとえば、現在ブロックが、たとえば、従来のビュー間予測、高度残差予測、または照明補償を使用して予測されるかどうかを示すフラグまたは他のシンタックス要素が、現在ブロックのためにコーディングされ得る。より詳細には、本開示は、高度残差予測が、現在ブロックを予測するために使用されない場合、照明補償のみが現在ブロックのために実行されることを認識している。いくつかの例では、現在ブロックのために照明補償が実行されるべきであるかどうかを示すフラグは、高度残差予測のための重み付け係数が0に等しい場合、現在ブロックのためにコーディング(たとえば、シグナリング)されるのみである。言い換えれば、いくつかの例では、現在ブロックのために照明補償が実行されるべきであるかどうかを示すフラグは、高度残差予測のための重み付け係数が0に等しくない場合、現在ブロックのためにコーディング(たとえば、シグナリング)されない。
[0031]上記で説明したように、0に等しい重み付け係数値は、高度残差予測が使用されないことを示し、したがって、高度残差予測のための重み付け係数値が0に等しい場合、現在ブロックを予測するために照明補償が使用され得る。重み付け係数値のための0でない値(たとえば、0.5または1.0の値)は、照明補償フラグがシグナリングされない(したがって、コーディングされるべきでない)ことを示し得る。したがって、高度残差予測の重み付け係数のための0でない値は、照明補償フラグがビットストリーム中に存在しないことを示し得る。
[0032]したがって、本開示の技法によれば、ビデオコーダ(たとえば、ビデオエンコーダまたはビデオデコーダ)は、現在ブロックのための高度残差予測の重み付け係数の値を決定するように構成され得る。重み付け係数が0の値を有する場合、ビデオエンコーダは、照明補償シンタックス要素の値が、ビデオエンコーダが照明補償を使用して現在ブロックを符号化することを決定したかどうかを示すように、現在ブロックのための照明補償シンタックス要素のための値を符号化することを決定し得る。すなわち、ビデオエンコーダが、(ARP重み付け係数が0の値を有するように)符号化されているブロックを予測するためにARPを使用しないことを決定したとき、ビデオエンコーダは照明補償シンタックス要素を符号化し得る。同様に、ビデオデコーダは、現在ブロックのための重み付け係数が0の値を有するとき、照明補償シンタックス要素がシグナリングされると決定し得、したがって、照明補償シンタックス要素に基づいて現在ブロックを予測するために照明補償を使用すべきかどうかを決定し得る。一方、重み付け係数が0でない値を有する場合、ビデオエンコーダは、照明補償シンタックス要素がビットストリームの一部を形成しないように、照明補償シンタックス要素の符号化をスキップし得る。すなわち、ビデオエンコーダが、(ARP重み付け係数が0でない値を有するように)ARPを使用して符号化されているブロックを予測することを選択したとき、ビデオエンコーダは照明補償シンタックス要素の符号化をスキップし得る。同様に、ビデオデコーダは、重み付け係数が0でない値を有するとき、照明補償シンタックス要素が現在ブロックのためのビットストリーム中に存在しないと決定し、したがって、現在ブロックを予測するために照明補償が使用されないと推論(すなわち、明示的シグナリングを受信することなしに決定)し得る。
[0033]ビデオコーディング規格は、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とを含む。H.264のMVC拡張は、「Advanced video coding for generic audiovisual services」、ITU−T勧告H.264、2010年3月に記載されている。
[0034]概して、2Dビデオコーディング(ビデオ符号化またはビデオ復号など)技法はブロックベースコーディング技法を含む。ブロックベースコーディングは、(時間予測とも呼ばれる)インター予測によるのか、(空間予測とも呼ばれる)イントラ予測によるのかにかかわらず、ブロックを予測することを含む。イントラ予測では、ビデオコーダ(たとえば、ビデオエンコーダまたはビデオデコーダ)は、(「サンプル」とも呼ばれる)隣接する、前にコーディングされたピクセルから現在ブロックを予測する。インター予測では、ビデオコーダは、(1つまたは複数のそれぞれの動きベクトルを含み得る)動きパラメータの1つまたは複数のセットを使用して、前にコーディングされたピクチャから現在ブロックを予測する。
[0035]HEVCでは、動きパラメータの予測のための2つのモードがあり、一方はマージモードであり、他方は高度動きベクトル予測(AMVP:advanced motion vector prediction)である。マージモードでは、動きパラメータ(予測方向、参照ピクチャ、および動きベクトル)の候補リストが構成され、ここで、候補は空間隣接ブロックおよび時間隣接ブロックから選択され得る。ビデオエンコーダは、候補リストへのインデックスを送信することによって、選択された動きパラメータをシグナリングし得る。デコーダ側において、インデックスが復号されると、インデックスが指す対応するブロックのすべての動きパラメータは、現在ブロックのために継承される。
[0036]AMVPでは、各動き仮定(motion hypothesis)のための動きベクトル予測子(motion vector predictors)の候補リストは、コード化参照インデックス(coded reference index)に基づいて導出される。このリストは、同じ参照インデックスに、ならびに時間参照ピクチャ中のコロケートされたブロックの隣接ブロックの動きパラメータに基づいて導出される時間動きベクトル予測子に、関連付けられた隣接ブロックの動きベクトルを含む。選択された動きベクトルは、候補リストへのインデックスを送信することによってシグナリングされる。さらに、参照インデックス値および動きベクトル差分もシグナリングされる。動きデータ圧縮方法について、以下でより詳細に説明する。
[0037]動きベクトルはまた、時間動きベクトル予測(TMVP:temporal motion vector prediction)を使用して予測され得る。現在ブロックの動きベクトルのための時間動きベクトル予測子を取得するために、ビデオコーダは、最初に、現在ブロックを含む現在ピクチャにコロケートされたピクチャを識別し得る。現在ピクチャがBスライスである(すなわち、スライスが双方向予測ブロック(bi-directionally predicted blocks)を含む)場合、コロケートされたピクチャがRefPicList0からのものであるのか、またはRefPicList1からのものであるのかを示すために、collocated_from_l0_flagが、現在ブロックを含むスライスのスライスヘッダ中でシグナリングされ得る。さらに、Bスライスの場合、最終参照ピクチャリスト(RefPicList0およびRefPicList1)が構成された後、合成リスト(RefPicListC)が構成され得る。合成リスト(combined list)は、参照ピクチャリスト変更シンタックス(reference picture list modification syntax)が合成リストのために存在する場合、さらに変更され得る。
[0038]ビデオコーダが参照ピクチャリストを識別した後、ビデオコーダは、リスト中のピクチャ中のピクチャを識別するために、スライスヘッダ中でシグナリングされる、collocated_ref_idxを使用し得る。ビデオコーダは、次いで、コロケートされたピクチャを検査することによって、コロケートされたPUを識別し得る。コロケートされたPUの右下PUの動き、またはコロケートされたPUの中心PUの動きのいずれかが、TMVPのために予測子として使用される。
[0039]ビデオコーダが、AMVPまたはマージモードのための動き候補を生成するために上記プロセスによって識別された動きベクトルを使用するとき、ビデオコーダは、(ピクチャ順序カウント(POC:a picture order count)値によって反映される)時間ロケーションに基づいて動き候補の動きベクトル予測子をスケーリングし得る。
[0040]HEVCでは、ピクチャパラメータセット(PPS:a picture parameter set)は、フラグenable_temporal_mvp_flagを含む。0に等しいtemporal_idをもつ特定のピクチャが、0に等しいenable_temporal_mvp_flagを有するPPSを参照するとき、復号ピクチャバッファ(DPB:decoded picture buffer)中のすべての参照ピクチャは、「時間動きベクトル予測のために使用されない」とマークされ、復号順序でその特定のピクチャの前のピクチャからの動きベクトルは、特定のピクチャまたは復号順序で特定のピクチャの後のピクチャの復号中に時間動きベクトル予測子として使用されないことになる。
[0041]本開示の技法は、概して、3D−HEVCにおける照明補償モードをシグナリングすることに関するが、これらの技法は、他のビデオコーディング規格および/または他のビデオコーディング規格の拡張において実装され得る。3D−HEVCにおける照明補償モードについて、図7〜10に関して以下でより詳細に説明する。本開示より前の3D−HEVCにおける照明補償モードは、以下の問題を有し得る。
− ARPの設計では、コーディングユニット(CU)がARPを用いてコーディングされる(すなわち、0に等しくない値をもつARP重み付け係数をシグナリングする)とき、照明補償の存在(ic_flag)は、たとえば、現在CUがビュー間参照ピクチャ(an inter-view reference picture)によって予測されないことがあるので、冗長であり得る。
− ARPはまた、2013年6月21日に出願された米国仮出願第61/838,208、および2013年7月14日に出願された米国仮出願第61/846,036の場合のように、ビュー間予測に適用され得る。この場合、ARP重み付け係数とic_flagとの間の関係は考慮されず、したがって、ic_flagは、存在するとき、冗長であり得る。
− 照明補償の使用の制御はスライスレベルにおいて行われる。したがって、全シーケンスが照明補償を使用しないとき、複数のビットが浪費され得る。
[0042]さらに、本開示は、概して、ARPと照明補償が一緒に(すなわち、同じブロック上で一緒に)実行されないことを認識している。したがって、ARPが実行されるとき(たとえば、ARP重み付け係数が0でない値を有するとき)、照明補償シンタックス要素はシグナリングされる必要がない。同様に、ARPが実行されないとき(たとえば、ARP重み付け係数が0の値を有するとき)、照明補償シンタックス要素はシグナリングされ得る。
[0043]本開示の例による技法は、実装されると、照明補償(IC)が視差動き補償において適用されるとき、およびARPが現在ブロック(たとえば、現在CU)に適用可能であるかどうかを考えるとき、これらの問題のいずれかまたはすべてを克服し得る。本開示の技法の各態様は、別個に使用されるか、または何らかの他の態様と組み合わせて使用され得る。
[0044]図1は、照明補償をシグナリングするための技法を利用し得る例示的なビデオ符号化および復号システム10を示すブロック図である。図1に示すように、システム10は、宛先デバイス14によって後で復号されるべき符号化ビデオデータを与えるソースデバイス12を含む。特に、ソースデバイス12は、コンピュータ可読媒体16を介して宛先デバイス14にビデオデータを与える。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、タブレット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスのいずれかを備え得る。場合によっては、ソースデバイス12および宛先デバイス14は、ワイヤレス通信のために装備され得る。ソースデバイス12および宛先デバイス14は、ビデオデータを記憶するためのメモリ、たとえば、ビデオエンコーダ20およびビデオデコーダ30内のそれぞれのメモリ、ならびに/あるいは(ソースデバイス12のための)生の、コーディングされていないデータまたは(宛先デバイス14のための)復号データを記憶するためのバッファおよびコード化ピクチャバッファ(CPB:a coded picture buffer)など、ビデオエンコーダ20およびビデオデコーダ30の外部のメモリ、を含み得る。
[0045]宛先デバイス14は、コンピュータ可読媒体16を介して復号されるべき符号化ビデオデータを受信し得る。コンピュータ可読媒体16は、ソースデバイス12から宛先デバイス14に符号化ビデオデータを移動させることが可能な任意のタイプの媒体またはデバイスを備え得る。一例では、コンピュータ可読媒体16は、ソースデバイス12が、リアルタイムで宛先デバイス14に直接に符号化ビデオデータを送信することを可能にするための通信媒体を備え得る。符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイス14に送信され得る。通信媒体は、無線周波数(RF)スペクトルあるいは1つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワークなどのパケットベースネットワーク、またはインターネットなどのグローバルネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を容易にするために有用であり得る任意の他の機器を含み得る。
[0046]いくつかの例では、符号化データは、出力インターフェース22からストレージデバイスに出力され得る。同様に、符号化データは、入力インターフェースによってストレージデバイスからアクセスされ得る。ストレージデバイスは、ハードドライブ、Blu−ray(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、揮発性または不揮発性メモリ、あるいは符号化ビデオデータを記憶するための任意の他の好適なデジタル記憶媒体など、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。さらなる一例では、ストレージデバイスは、ソースデバイス12によって生成された符号化ビデオを記憶し得るファイルサーバまたは別の中間ストレージデバイスに対応し得る。宛先デバイス14は、ストリーミングまたはダウンロードを介してストレージデバイスから記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶し、その符号化ビデオデータを宛先デバイス14に送信することが可能な任意のタイプのサーバであり得る。例示的なファイルサーバとしては、(たとえば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブがある。宛先デバイス14は、インターネット接続を含む、任意の標準のデータ接続を通して符号化ビデオデータにアクセスし得る。これは、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適であるワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、またはその両方の組合せを含み得る。ストレージデバイスからの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組合せであり得る。
[0047]本開示の技法は、必ずしもワイヤレスの適用例または設定に限定されるとは限らない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH:dynamic adaptive streaming over HTTP)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオテレフォニーなどの適用例をサポートするために一方向または二方向ビデオ送信をサポートするように構成され得る。
[0048]図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。本開示によれば、ソースデバイス12のビデオエンコーダ20は、照明補償をシグナリングするための技法を適用するように構成され得る。他の例では、ソースデバイスおよび宛先デバイスは他の構成要素または構成を含み得る。たとえば、ソースデバイス12は、外部カメラなど、外部ビデオソース18からビデオデータを受信し得る。同様に、宛先デバイス14は、内蔵ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
[0049]図1の図示されたシステム10は一例にすぎない。照明補償をシグナリングするための技法は、任意のデジタルビデオ符号化および/または復号デバイスによって実行され得る。概して、本開示の技法はビデオ符号化デバイスまたはビデオ復号デバイスによって実行されるが、本技法は、一般に「コーデック」と呼ばれるビデオエンコーダ/デコーダによっても実行され得る。さらに、本開示の技法は、ビデオプリプロセッサによっても実行され得る。ソースデバイス12および宛先デバイス14は、ソースデバイス12が宛先デバイス14に送信するためのコード化ビデオデータを生成するような、コーディングデバイスの例にすぎない。いくつかの例では、デバイス12、14は、デバイス12、14の各々がビデオ符号化構成要素とビデオ復号構成要素とを含むように、実質的に対称的に動作し得る。したがって、システム10は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、またはビデオテレフォニーのための、ビデオデバイス12とビデオデバイス14との間の一方向または二方向ビデオ送信をサポートし得る。
[0050]ソースデバイス12のビデオソース18は、ビデオカメラなどのビデオキャプチャデバイス、前にキャプチャされたビデオを含んでいるビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースを含み得る。さらなる代替として、ビデオソース18は、ソースビデオとしてのコンピュータグラフィックスベースデータ、またはライブビデオとアーカイブビデオとコンピュータ生成ビデオとの組合せ、を生成し得る。場合によっては、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14はいわゆるカメラフォンまたはビデオフォンを形成し得る。ただし、上述のように、本開示で説明する技法は、概してビデオコーディングに適用可能であり得、ワイヤレスおよび/またはワイヤード適用例に適用され得る。各場合において、キャプチャされたビデオ、前にキャプチャされたビデオ、またはコンピュータ生成ビデオは、ビデオエンコーダ20によって符号化され得る。符号化ビデオ情報は、次いで、出力インターフェース22によってコンピュータ可読媒体16上に出力され得る。
[0051]コンピュータ可読媒体16は、ワイヤレスブロードキャストまたはワイヤードネットワーク送信などの一時媒体、あるいはハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、Blu−rayディスク、または他のコンピュータ可読媒体などの記憶媒体(すなわち、非一時的記憶媒体)を含み得る。いくつかの例では、ネットワークサーバ(図示せず)は、ソースデバイス12から符号化ビデオデータを受信し、たとえば、ネットワーク送信を介して、その符号化ビデオデータを宛先デバイス14に与え得る。同様に、ディスクスタンピング設備(a disc stamping facility)など、媒体製造設備のコンピューティングデバイスは、ソースデバイス12から符号化ビデオデータを受信し、その符号化ビデオデータを含んでいるディスクを生成し得る。したがって、コンピュータ可読媒体16は、様々な例において、様々な形態の1つまたは複数のコンピュータ可読媒体を含むことが理解されよう。
[0052]宛先デバイス14の入力インターフェース28はコンピュータ可読媒体16から情報を受信する。コンピュータ可読媒体16の情報は、ビデオエンコーダ20によって定義され、またビデオデコーダ30によって使用される、ブロックおよび他のコード化ユニット、たとえば、GOP、の特性および/または処理を記述するシンタックス要素を含む、シンタックス情報を含み得る。ディスプレイデバイス32は、ユーザに復号ビデオデータを表示し、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。
[0053]ビデオエンコーダ20およびビデオデコーダ30は、高効率ビデオコーディング(HEVC)規格などのビデオコーディング規格に従って動作し得、HEVCテストモデル(HM)に準拠し得る。ビデオエンコーダ20およびビデオデコーダ30はまた、スケーラブルビデオコーディングおよび/またはマルチビュービデオコーディング拡張、たとえば、スケーラブルHEVC(SHVC:scalable HEVC)、3次元HEVC(3D−HEVC:three-dimensional HEVC)、またはマルチビューHEVC(MV−HEVC:multiview HEVC)など、ビデオコーディング規格への1つまたは複数の拡張に従って動作し得る。代替的に、ビデオエンコーダ20およびビデオデコーダ30は、代替的にMPEG−4,Part10,アドバンストビデオコーディング(AVC)と呼ばれるITU−T H.264規格など、他のプロプライエタリ規格または業界規格、またはそのような規格の拡張に従って動作し得る。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。ビデオコーディング規格の他の例としては、MPEG−2およびITU−T H.263がある。図1には示されていないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は、それぞれ、オーディオエンコーダおよびデコーダと統合され得、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するために、適切なMUX−DEMUXユニット、または他のハードウェアおよびソフトウェアを含み得る。適用可能な場合、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
[0054]ITU−T H.264/MPEG−4(AVC)規格は、ジョイントビデオチーム(JVT)として知られる共同パートナーシップの成果として、ISO/IECムービングピクチャエキスパートグループ(MPEG:Moving Picture Experts Group)とともにITU−Tビデオコーディングエキスパートグループ(VCEG:Video Coding Experts Group)によって策定された。いくつかの態様では、本開示で説明する技法は、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規格または仕様と呼ばれることがある。ジョイントビデオチーム(JVT)は、H.264/MPEG−4 AVCへの拡張に取り組み続けている。
[0055]ビデオエンコーダ20およびビデオデコーダ30は、それぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアまたはそれらの任意の組合せなど、様々な好適なエンコーダ回路のいずれかとして実装され得る。本技法がソフトウェアで部分的に実装されるとき、デバイスは、好適な非一時的コンピュータ可読媒体にソフトウェアのための命令を記憶し、本開示の技法を実行するために1つまたは複数のプロセッサを使用してハードウェアで命令を実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含まれ得、そのいずれも、それぞれのデバイスにおいて、複合ビデオエンコーダ/デコーダ(コーデック)の一部として統合され得る。
[0056]JCT−VCは、HEVC規格を開発し、改良および拡張し続けている。HEVC規格化の取り組みは、HEVCテストモデル(HM)と呼ばれるビデオコーディングデバイスの発展的モデル(an evolving model)に基づく。HMは、たとえば、ITU−T H.264/AVCに従う既存のデバイスに対してビデオコーディングデバイスのいくつかの追加の能力を仮定する。たとえば、H.264は9つのイントラ予測符号化モードを提供するが、HMは33個ものイントラ予測符号化モードを提供し得る。
[0057]概して、HMの作業モデルは、ビデオフレームまたはピクチャが、ルーマサンプルとクロマサンプルの両方を含む一連のツリーブロックまたは最大コーディングユニット(LCU:largest coding units)(「コーディングツリーユニット」とも呼ばれる)に分割され得ることを記述する。ビットストリーム内のシンタックスデータが、ピクセルの数に関して最大コーディングユニットであるLCUのサイズを定義し得る。スライスは、コーディング順序でいくつかの連続するツリーブロックを含む。ビデオフレームまたはピクチャは、1つまたは複数のスライスに区分され得る。各ツリーブロックは、4分木に従ってコーディングユニット(CU)に分割され得る。概して、4分木データ構造はCUごとに1つのノードを含み、ルートノードはツリーブロックに対応する。CUが4つのサブCUに分割される場合、CUに対応するノードは4つのリーフノードを含み、その各々はサブCUのうちの1つに対応する。
[0058]4分木データ構造の各ノードは、対応するCUのためのシンタックスデータを与え得る。たとえば、4分木中のノードは、そのノードに対応するCUがサブCUに分割されるかどうかを示すスプリットフラグを含み得る。CUのためのシンタックス要素は、再帰的に定義され得、CUがサブCUに分割されるかどうかに依存し得る。CUがさらに分割されない場合、それはリーフCUと呼ばれる。本開示では、元のリーフCUの明示的分割が存在しない場合でも、リーフCUの4つのサブCUはリーフCUとも呼ばれる。たとえば、16×16サイズのCUがさらに分割されない場合、その16×16CUが決して分割されなくても、4つの8×8サブCUはリーフCUとも呼ばれる。
[0059]CUは、CUがサイズ差異(a size distinction)を有しないことを除いて、H.264規格のマクロブロックと同様の目的を有する。たとえば、ツリーブロックは、(サブCUとも呼ばれる)4つの子ノードに分割され得、各子ノードは、今度は親ノードとなり、別の4つの子ノードに分割され得る。4分木のリーフノードと呼ばれる、最後の分割されていない子ノードは、リーフCUとも呼ばれるコーディングノードを備える。コード化ビットストリームに関連するシンタックスデータは、最大CU深度と呼ばれる、ツリーブロックが分割され得る最大回数(a maximum number of times)を定義し得、また、コーディングノードの最小サイズを定義し得る。したがって、ビットストリームはまた、最小コーディングユニット(SCU:smallest coding unit)を定義し得る。本開示では、HEVCのコンテキストにおけるCU、PU、またはTU、あるいは他の規格のコンテキストにおける同様のデータ構造(たとえば、H.264/AVCにおけるマクロブロックおよびそれのサブブロック)のいずれかを指すために「ブロック」という用語を使用する。
[0060]CUは、コーディングノードと、コーディングノードに関連する予測ユニット(PU:prediction unit)および変換ユニット(TU:transform unit)とを含む。CUのサイズは、コーディングノードのサイズに対応し、形状が正方形でなければならない。CUのサイズは、8×8ピクセルから最大64×64ピクセル以上をもつツリーブロックのサイズにまでわたり得る。各CUは、1つまたは複数のPUと、1つまたは複数のTUとを含み得る。CUに関連するシンタックスデータは、たとえば、CUの1つまたは複数のPUへの区分を記述し得る。区分モードは、CUがスキップである(the CU is skip)のか、または直接モード符号化されるのか、イントラ予測モード符号化されるのか、またはインター予測モード符号化されるのかの間で異なり得る。PUは、形状が非正方形になるように区分され得る。CUに関連するシンタックスデータはまた、たとえば、4分木に従うCUの1つまたは複数のTUへの区分を記述し得る。TUは、形状が正方形または非正方形(たとえば、矩形)であり得る。
[0061]HEVC規格は、CUによって異なり得る、TUに従う変換を可能にする。TUは、一般に、区分されたLCUのために定義された所与のCU内のPUのサイズに基づいてサイズ決定されるが、これは常にそうであるとは限らない。TUは、一般に、PUと同じサイズであるか、またはそれよりも小さい。いくつかの例では、CUに対応する残差サンプルは、「残差4分木」(RQT:residual quad tree)として知られる4分木構造を使用してより小さいユニットに再分割され得る。RQTのリーフノードは変換ユニット(TU)と呼ばれることがある。TUに関連するピクセル差分値は、変換係数を生成するために変換され、その変換係数は量子化され得る。
[0062]リーフCUは、1つまたは複数の予測ユニット(PU)を含み得る。概して、PUは、対応するCUの全部または一部分に対応する空間エリアを表し、そのPUの参照サンプルを取り出すためのデータを含み得る。その上、PUは、予測に関係するデータを含む。たとえば、PUがイントラモード符号化されるとき、PUのためのデータは、PUに対応するTUのためのイントラ予測モードを記述するデータを含み得る残差4分木(RQT)中に含まれ得る。別の例として、PUがインターモード符号化されるとき、PUは、PUのための1つまたは複数の動きベクトルを定義するデータを含み得る。PUのための動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルについての解像度(たとえば、1/4ピクセル精度または1/8ピクセル精度)、動きベクトルが指す参照ピクチャ、および/または動きベクトルの参照ピクチャリスト(たとえば、リスト0、リスト1、またはリストC)を記述し得る。
[0063]1つまたは複数のPUを有するリーフCUはまた、1つまたは複数の変換ユニット(TU)を含み得る。変換ユニットは、上記で説明したように、(TU4分木構造とも呼ばれる)RQTを使用して指定され得る。たとえば、分割フラグ(a split flag)は、リーフCUが4つの変換ユニットに分割されるかどうかを示し得る。次いで、各変換ユニットは、さらなるサブTUにさらに分割され得る。TUがさらに分割されないとき、それはリーフTUと呼ばれることがある。概して、イントラコーディングの場合、リーフCUに属するすべてのリーフTUは、同じイントラ予測モードを共有する。すなわち、同じイントラ予測モードが、概して、リーフCUのすべてのTUのための予測値を計算するために適用される。イントラコーディングの場合、ビデオエンコーダは、イントラ予測モードを使用して各リーフTUの残差値を、TUに対応するCUの一部と元のブロックとの間の差分として計算し得る。TUは、必ずしもPUのサイズに制限されるとは限らない。したがって、TUは、PUよりも大きいことも小さいこともある。イントラコーディングの場合、PUは、同じCUの対応するリーフTUとコロケートされ(collocated)得る。いくつかの例では、リーフTUの最大サイズは、対応するリーフCUのサイズに対応し得る。
[0064]その上、リーフCUのTUはまた、残差4分木(RQT)と呼ばれる、それぞれの4分木データ構造に関連付けられ得る。すなわち、リーフCUは、リーフCUがどのようにTUに区分されるかを示す4分木を含み得る。TU4分木のルートノードは概してリーフCUに対応し、CU4分木のルートノードは概してツリーブロック(またはLCU)に対応する。分割されないRQTのTUはリーフTUと呼ばれる。概して、本開示では、別段に明記されていない限り、リーフCUおよびリーフTUに言及するためにそれぞれCUおよびTUという用語を使用する。
[0065]ビデオシーケンスは、一般に、一連のビデオフレームまたはピクチャを含む。ピクチャグループ(GOP:a group of pictures)は、概して、ビデオピクチャのうちの一連の1つまたは複数を備える。GOPは、GOP中に含まれるいくつかのピクチャを記述するシンタックスデータを、GOPのヘッダ中、ピクチャのうちの1つまたは複数のヘッダ中、または他の場所に含み得る。ピクチャの各スライスは、それぞれのスライスのための符号化モードを記述するスライスシンタックスデータを含み得る。ビデオエンコーダ20は、一般に、ビデオデータを符号化するために、個々のビデオスライス内のビデオブロックに作用する。ビデオブロックは、CU内のコーディングノードに対応し得る。ビデオブロックは、固定サイズまたは変動サイズを有し得、指定されたコーディング規格に応じてサイズが異なり得る。
[0066]一例として、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を指す。
[0067]本開示では、「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に等しいとは限らない。
[0068]CUのPUを使用したイントラ予測コーディングまたはインター予測コーディングに続いて、ビデオエンコーダ20は、CUのTUのための残差データを計算し得る。PUは、(ピクセル領域とも呼ばれる)空間領域において予測ピクセルデータを生成する方法またはモードを記述するシンタックスデータを備え得、TUは、変換、たとえば、残差ビデオデータへの離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に同様の変換の適用に続く変換領域において係数を備え得る。残差データは、符号化されていないピクチャのピクセルと、PUに対応する予測値との間のピクセル差分に対応し得る。ビデオエンコーダ20は、CUのための残差データを含むTUを形成し、次いで、CUのための変換係数を生成するためにTUを変換し得る。
[0069]変換係数を生成するための任意の変換に続いて、ビデオエンコーダ20は、変換係数の量子化を実行し得る。量子化は、一般に、係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を行うプロセスを指す。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。たとえば、nビット値は、量子化中にmビット値に切り捨てられ得、ここで、nはmよりも大きい。
[0070]量子化の後に、ビデオエンコーダは、変換係数を走査して、量子化変換係数を含む2次元行列から1次元ベクトルを生成し得る。走査は、アレイの前部に、より高いエネルギー(したがって、より低い周波数)係数を配置し、アレイの後部に、より低いエネルギー(したがって、より高い周波数)係数を配置するように設計され得る。いくつかの例では、ビデオエンコーダ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が使用するための符号化ビデオデータに関連するシンタックス要素をエントロピー符号化し得る。
[0071]CABACを実行するために、ビデオエンコーダ20は、コンテキストモデル内のコンテキストを、送信されるべきシンボルに割り当て得る。コンテキストは、たとえば、シンボルの隣接値が非0であるか否かに関係し得る。CAVLCを実行するために、ビデオエンコーダ20は、送信されるべきシンボルのための可変長コードを選択し得る。VLC中のコードワードは、比較的より短いコードが優勢シンボル(more probable symbols)に対応し、より長いコードが劣勢シンボル(less probable symbols)に対応するように構成され得る。このようにして、VLCの使用は、たとえば、送信されるべき各シンボルのための等長コードワードを使用することに勝るビット節約を達成し得る。可能性決定(probability determination)は、シンボルに割り当てられたコンテキストに基づき得る。
[0072]本開示の技法によれば、ビデオエンコーダ20またはビデオデコーダ30などのビデオコーダは、改善された照明補償を実行するように構成され得る。一例では、ARPと照明補償の両方が1つのスライスのために有効化され、現在コーディングユニット(CU)がインターコーディングされる(inter-coded)とき、ic_flagのシグナリングは、ARPのためにシグナリングされる重み付け係数の値に依存し得る。ic_flagがシグナリングされないとき、ビデオコーダは、照明補償が現在CUのために無効化されると常に仮定し得る。ic_flagがスライスのどのCUのためにもシグナリングされないとき、ビデオコーダは、現在スライスのための照明補償を無効化し得、したがって、現在ピクチャがイントラランダムアクセスピクチャ(IRAP:an intra random access picture)であるかどうかなど、スライスまたはより高いレベルにおいてシンタックス要素を検査することによって、上記事実が決定される場合、slice_ic_enable_flagはシグナリングされる必要がないことがある。
[0073]一例では、ビデオエンコーダ20またはビデオデコーダ30などのビデオコーダは、概して、現在CUなどの現在ブロックの高度残差予測(ARP)重み付け係数のための値を決定する。ビデオエンコーダ20は、たとえば、ARPがCUの少なくとも一部分(たとえば、PU)を符号化するために使用されるべきであるかどうかを決定し得る。たとえば、ビデオエンコーダ20は、CUの一部分を符号化するとき、ARPがベースレートひずみメトリック(base rate-distortion metric)を生じるかどうかを決定するために、レートひずみ分析を実行し得、ベースレートひずみメトリックを生じる場合、ARPを使用してCUのその部分を符号化し得る。ARPを使用してCUのその部分を符号化することは、ARP重み付け係数に0でない値、たとえば、0.5または1.0を割り当てることを含み得る。別の例として、ビデオデコーダ30は、現在CUのARP重み付け係数のためのシグナリングされる値を決定し、ARP重み付け係数の値に基づいて、照明補償シンタックス要素がビットストリーム中に存在するかどうか(すなわち、照明補償シンタックスが受信されるかどうか)を決定し得る。
[0074]ビデオコーダは、現在CUのための照明補償シンタックス要素(たとえば、ic_flag)をコーディングし、ARP重み付け係数の値が0に等しいとき、照明補償シンタックス要素の値(または、より一般的には、ARPが現在CUを予測するために使用されるかどうか)に少なくとも部分的に基づいて現在CUをコーディングし得る。本明細書で説明するように、照明補償およびARPは一般に一緒に実行されない。すなわち、ビデオコーダが、ARPを使用してブロックをコーディングする場合、ビデオコーダは、おそらく、ブロックをコーディングするために照明補償をも使用することはなく、同様に、ビデオコーダが、照明補償を使用してブロックをコーディングする場合、ビデオコーダは、おそらく、ブロックをコーディングするためにARPをも使用することはない。したがって、(たとえば、ARP重み付け係数のための0の値によって証明されるように)ARPがブロックをコーディングするために使用されない場合、ビデオコーダは、照明補償が使用されるかどうかを示す、ic_flagなどの照明補償シンタックス要素をコーディング(たとえば、シグナリングまたは復号)し得る。同様に、(たとえば、ARP重み付け係数のための0でない値によって証明されるように)ARPが使用される場合、ビデオコーダは、照明補償シンタックス要素をコーディングすることを省略する(すなわち、コーディングすることを実行しないかまたは控える)ことがある。
[0075]たとえば、ARPが使用されないとき(たとえば、ARP重み付け係数が0の値を有するとき)、ビデオエンコーダ20は照明補償シンタックス要素のための値を符号化し得る。ビデオエンコーダ20が(たとえば、上記で説明したようにレートひずみメトリックに基づいて)ブロックをコーディングするために照明補償を使用することを決定した場合、ビデオエンコーダ20は、照明補償が使用されることを示す照明補償シンタックス要素のための値をシグナリングし得、その上、ビデオエンコーダ20は、照明補償を使用してブロックを符号化し得る。同様に、ビデオデコーダ30は、ARP重み付け係数が0の値を有するとき、照明補償シンタックス要素がビットストリーム中に存在すると決定し得る。
[0076]一方、ARP重み付け係数の値が0に等しくない場合、ビデオコーダは現在ブロックのための照明補償シンタックス要素のコーディングをスキップし、たとえば、ARPを使用して現在ブロックをコーディングし得る。ビデオエンコーダ20は、たとえば、ビットストリーム中に照明補償シンタックス要素を挿入しないことによって照明補償シンタックス要素の符号化をスキップし得る。ビデオデコーダ30は、同様に、ブロックのためのARP重み付け係数が0でない値(たとえば、0.5または1.0の値)を有するとき、照明補償シンタックス要素がブロックのためのビットストリーム中に存在しないと決定し得る。
[0077]一例では、ビデオコーダは、現在CUのARP重み付け係数が0に等しくないとき、ic_flagをシグナリング/復号しない。一例では、ic_flagは、以下の条件のすべてが真の場合のみif and only ifシグナリングされる。
a.現在CUのARPのためにシグナリングされる重み付け係数が0に等しい。および
b.以下の少なくとも1つが真である(icEnableFlagが現在の3D−HEVCにおいて1に等しいことに相当する)。
i.(2N×2Nを用いてコーディングされる)現在PUがマージモードを用いてコーディングされ、および(slice_ic_disable_merge_zero_idx_flagが0に等しいか、またはマージインデックスが0に等しくない)、または
ii.(2N×2Nを用いてコーディングされる)現在PUがAMVPモードを用いてコーディングされ、RefPicList0およびRefPicList1に対応する参照インデックスのいずれかがビュー間参照ピクチャに対応する。
c.代替的に、または追加として、現在ピクチャはIRAPピクチャである。
[0078]一例では、ビデオコーダは、ARP重み付け係数と、現在ピクチャがIRAPピクチャであるかどうかとに基づいて、ただし、現在CUが、マージを用いてコーディングされるのか、AMVPを用いてコーディングされるのかに基づかないで、およびマージインデックスに基づかないで、ic_flagをシグナリング/復号する。様々な例としては以下がある。
a.現在コーディングユニット(CU)のARP重み付け係数が0に等しく、現在ピクチャがIRAPピクチャである場合のみ、ic_flagは、エンコーダによってシグナリングされ、デコーダによって復号される。
b.代替的に、現在コーディングユニット(CU)のARP重み付け係数が0に等しく、現在ピクチャが1に等しいslice_ic_disable_merge_zero_idx_flagを有する場合のみ、ic_flagは、エンコーダによってシグナリングされ、デコーダによって復号される。
c.代替的に、現在コーディングユニット(CU)のARP重み付け係数が0に等しく、現在CUがスキップモードを用いてコーディングされる場合のみ、照明補償シンタックス要素は、エンコーダによってシグナリングされ、デコーダによって復号される。
d.代替的に、現在コーディングユニット(CU)のARP重み付け係数が0に等しく、現在CUが1つのパーティションのみ(すなわち、PART_2N×2Nに等しいパーティションモード)を有する場合のみ、照明補償シンタックス要素は、エンコーダによってシグナリングされ、デコーダによって復号される。
[0079]一例では、ビデオコーダは、現在CUのARP重み付け係数が0に等しい場合のみ、ic_flagをシグナリング/復号する。この場合、現在ピクチャがIRAPピクチャであり、ARP重み付け係数がシグナリングされないとき、ARP重み付け係数は現在CUのために0であると推論され得る。
[0080]代替的に、または追加として、ARP重み付け係数はIRAPピクチャのためにもシグナリング/復号され得る。したがって、この重み付け係数が0に等しくないとき、それは照明補償モードの無効化を示し、ic_flagはシグナリングされる必要がない。しかしながら、この場合、ARP重み付け係数が非0であっても、復号プロセスが適切な動きベクトル、視差ベクトルまたは視差動きベクトルを見つけないか、または適切な関連するピクチャを見つけない場合、高度残差予測は現在PUのために無効化され得る。したがって、PUは、ARP重み付け係数が0に等しい場合と同様の方法で復号され得る。したがって、ここで、ARP重み付け係数をシグナリングすることの主要な目的は、ic_flagのシグナリングを無効化することであり得る。
[0081]各レイヤのための、またはすべてのレイヤのためのICの使用を示すために、ビデオパラメータセット(VPS)、シーケンスパラメータセット(SPS)、および/またはピクチャパラメータセット(PPS)中にフラグが追加され得る。
[0082]本開示の技法について、表1〜4に関して以下でより詳細に説明する。現在の3D−HEVCワーキングドラフトと比較した削除は、[removed:“”]を使用して識別されており、新たに追加された部分はイタリック体にされている。表1は、コーディングユニットのための変更シンタックステーブルの例を表す。
[0083]表2は、コーディングユニットのための変更シンタックステーブルの代替例を表す。
[0084]追加または代替として、一般的なスライスヘッダシンタックスは、以下の表3に示されているように変更され得、ここで、照明補償はIRAPピクチャのためにのみ適用され得る。
[0085]この例では、表3の以下のセマンティクスは、以下に示されているように変更され得る。
[0086][removed:“1に等しいslice_ic_disable_merge_zero_idx_flagは、merge_flagが1に等しく、コーディングユニットの第1の予測ユニットのmerge_idxが0に等しいとき、ic_flagが現在スライスのコーディングユニット中に存在しないことを指定する。0に等しいslice_ic_disable_merge_zero_idx_flagは、merge_flagが1に等しく、コーディングユニットの第1の予測ユニットのmerge_idxが0に等しいとき、ic_flagが現在スライスのコーディングユニット中に存在し得ることを指定する。存在しないとき、slice_ic_disable_merge_zero_idx_flagは0に等しいと推論される。[Ed.(GT):第1の予測ユニットという用語を置き換える]”]。
[0087]さらに、または代替として、表3に示された変更に対して、コーディングユニットシンタックスおよびセマンティクスは、以下で表4に関して説明するように変更され得る。
[0088]表4のシンタックス要素のセマンティクスは、以下で説明するように変更され得、ここで、「(H−#)」は3D−HEVCのセクションを指す。
[removed:“可変icEnableFlagは0に等しく設定されて、slice_ic_enable_flagが1に等しく、PartModeが2N×2Nに等しく、PredMode[x0][y0]がMODE_INTRAに等しくないとき、以下が適用される。
− merge_flag[x0][y0]が1に等しい場合、以下が適用される。
− 他の場合(merge_flag[x0][y0]が0に等しい)、以下が適用される。
− Xが0および1によって置き換えられる場合、変数refViewIdxLXは、RefPicListLX[ref_idx_lX[x0][y0]]のビュー順序インデックスに等しく設定される。
− フラグicEnableFlagは、以下において指定されているように導出される。
[0089]ビデオエンコーダ20およびビデオデコーダ30は、それぞれ、適用可能な場合、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理回路、ソフトウェア、ハードウェア、ファームウェアまたはそれらの任意の組合せなど、様々な好適なエンコーダまたはデコーダ回路のいずれかとして実装され得る。ビデオエンコーダ20およびビデオデコーダ30の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれもが合成ビデオエンコーダ/デコーダ(CODEC:a combined video encoder/decoder)の一部として組み込まれ得る。ビデオエンコーダ20および/またはビデオデコーダ30を含むデバイスは、集積回路、マイクロプロセッサ、および/またはセルラー電話などのワイヤレス通信デバイスを備え得る。
[0090]図2は、照明補償をシグナリングするための技法を実装し得るビデオエンコーダ20の一例を示すブロック図である。ビデオエンコーダ20は、ビデオスライス内のビデオブロックのイントラコーディングおよびインターコーディングを実行し得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオ中の空間冗長性を低減または除去するために、空間予測に依拠する。インターコーディングは、ビデオシーケンスの隣接フレームまたはピクチャ内のビデオ中の時間冗長性を低減または除去するために、時間予測に依拠する。イントラモード(Iモード)は、いくつかの空間ベースコーディングモードのいずれかを指し得る。単方向予測(Pモード)または双予測(Bモード)などのインターモードは、いくつかの時間ベースコーディングモードのいずれかを指し得る。
[0091]図2に示されているように、ビデオエンコーダ20は、符号化されるべきビデオフレーム内の現在ビデオブロックを受信する。図2の例では、ビデオエンコーダ20は、モード選択ユニット40と、参照ピクチャメモリ64と、加算器50と、変換処理ユニット52と、量子化ユニット54と、エントロピー符号化ユニット56とを含む。モード選択ユニット40は、動き補償ユニット44と、動き推定ユニット42と、イントラ予測ユニット46と、パーティションユニット48とを含む。ビデオブロック再構成のために、ビデオエンコーダ20はまた、逆量子化ユニット58と、逆変換ユニット60と、加算器62とを含む。再構成されたビデオからブロッキネスアーティファクト(blockiness artifacts)を除去するために、ブロック境界をフィルタ処理するための(図2に示されていない)デブロッキングフィルタも含まれ得る。必要な場合、デブロッキングフィルタは、一般に、加算器62の出力をフィルタ処理する。(ループ中またはループ後の)追加のフィルタもデブロッキングフィルタに加えて使用され得る。そのようなフィルタは、簡潔のために図示していないが、必要な場合、(ループ内フィルタとして)加算器50の出力をフィルタ処理し得る。
[0092]符号化プロセス中に、ビデオエンコーダ20はコーディングされるべきビデオフレームまたはスライスを受信する。フレームまたはスライスは複数のビデオブロックに分割され得る。動き推定ユニット42および動き補償ユニット44は、時間予測を行うために、1つまたは複数の参照フレーム中の1つまたは複数のブロックに対して受信されたビデオブロックのインター予測コーディングを実行する。イントラ予測ユニット46は、代替的に、空間予測を行うために、コーディングされるべきブロックと同じフレームまたはスライス中の1つまたは複数の隣接ブロックに対して受信されたビデオブロックのイントラ予測コーディングを実行し得る。ビデオエンコーダ20は、たとえば、ビデオデータのブロックごとに適切なコーディングモードを選択するために、複数のコーディングパスを実行し得る。
[0093]その上、パーティションユニット48は、前のコーディングパスにおける前の区分方式の評価に基づいて、ビデオデータのブロックをサブブロックに区分し得る。たとえば、パーティションユニット48は、最初にフレームまたはスライスをLCUに区分し、レートひずみ分析(たとえば、レートひずみ最適化)に基づいてLCUの各々をサブCUに区分し得る。モード選択ユニット40は、さらに、LCUのサブCUへの区分を示す4分木データ構造を生成し得る。4分木のリーフノードCUは、1つまたは複数のPUと1つまたは複数のTUとを含み得る。
[0094]モード選択ユニット40は、たとえば、(たとえば、レートひずみメトリックを使用して評価される)誤差結果に基づいて、コーディングモードのうちの1つ、イントラまたはインターを選択し、得られたイントラまたはインターコード化ブロックを、残差ブロックデータを生成するために加算器50に与え、参照フレームとして使用するための符号化ブロックを再構成するために加算器62に与え得る。モード選択ユニット40はまた、動きベクトル、イントラモードインジケータ、パーティション情報、および他のそのようなシンタックス情報など、シンタックス要素をエントロピー符号化ユニット56に与える。
[0095]動き推定ユニット42および動き補償ユニット44は、高度に統合され得るが、概念的な目的のために別々に示してある。動き推定ユニット42によって実行される動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、現在フレーム(または他のコード化ユニット)内でコーディングされている現在ブロックに対する参照フレーム(または他のコード化ユニット)内の予測ブロックに対する現在ビデオフレームまたはピクチャ内のビデオブロックのPUの変位(displacement)を示し得る。予測ブロックは、絶対差分和(SAD:sum of absolute difference)、2乗差分和(SSD:sum of square difference)、または他の差分メトリックによって決定され得るピクセル差分に関して、コーディングされるべきブロックにぴったり一致することがわかるブロックである。いくつかの例では、ビデオエンコーダ20は、参照ピクチャメモリ64に記憶された参照ピクチャのサブ整数ピクセル位置の値を計算し得る。たとえば、ビデオエンコーダ20は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数ピクセル位置(fractional pixel positions)の値を補間し得る。したがって、動き推定ユニット42は、フルピクセル位置と分数ピクセル位置とに対して動き探索を実行し、分数ピクセル精度をもつ動きベクトルを出力し得る。
[0096]動き推定ユニット42は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコード化スライス中のビデオブロックのPUのための動きベクトルを計算する。参照ピクチャは、その各々が、参照ピクチャメモリ64に記憶された1つまたは複数の参照ピクチャを識別する、第1の参照ピクチャリスト(リスト0)または第2の参照ピクチャリスト(リスト1)から選択され得る。動き推定ユニット42は、計算された動きベクトルをエントロピー符号化ユニット56と動き補償ユニット44とに送る。
[0097]動き補償ユニット44によって実行される動き補償は、動き推定ユニット42によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成することを伴い得る。同じく、動き推定ユニット42および動き補償ユニット44は、いくつかの例では、機能的に統合され得る。現在ビデオブロックのPUのための動きベクトルを受信すると、動き補償ユニット44は、動きベクトルが参照ピクチャリストのうちの1つにおいてそれを指す予測ブロックの位置を特定し得る。加算器50は、以下で説明するように、コーディングされている現在ビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって、残差ビデオブロックを形成する。概して、動き推定ユニット42はルーマ成分に対して動き推定を実行し、動き補償ユニット44は、クロマ成分とルーマ成分の両方のための、ルーマ成分に基づいて計算された動きベクトルを使用する。モード選択ユニット40はまた、ビデオスライスのビデオブロックを復号する際にビデオデコーダ30が使用するビデオブロックとビデオスライスとに関連するシンタックス要素を生成し得る。
[0098]動き補償ユニット44は、様々な技法を使用して動き補償を実行するように構成され得る。たとえば、動き補償ユニット44は、実質的に上記で説明したように、現在ブロックのための一般的な時間動き補償を実行し得る。さらに、動き補償ユニット44は、高度残差予測(ARP)を実行するように構成され得る。すなわち、動き補償ユニット44は、現在ブロックを予測するために、時間動きベクトルを使用して取得された、現在ブロックのための第1の予測子と、視差ベクトルと時間動きベクトルの両方を使用して取得された、現在ブロックのための第2の予測子の両方を使用し得る。さらに、動き補償ユニット44はまた、照明補償を実行するように構成され得る。以下でより詳細に説明するように、照明補償は、概して、予測されたブロックに隣接するサンプル/ピクセル、および/または現在ブロックに隣接するサンプル/ピクセルに基づいて、予測されたブロックのサンプル(すなわち、ピクセル)値に1つまたは複数の線形方程式を適用することを伴う。
[0099]イントラ予測ユニット46は、上記で説明したように、動き推定ユニット42と動き補償ユニット44とによって実行されるインター予測の代替として、現在ブロックをイントラ予測し得る。特に、イントラ予測ユニット46は、現在ブロックを符号化するために使用すべきイントラ予測モードを決定し得る。いくつかの例では、イントラ予測ユニット46は、たとえば、別個の符号化パス中に、様々なイントラ予測モードを使用して現在ブロックを符号化し得、イントラ予測ユニット46(または、いくつかの例では、モード選択ユニット40)は、テストされたモードから使用するのに適切なイントラ予測モードを選択し得る。
[0100]たとえば、イントラ予測ユニット46は、様々なテストされたイントラ予測モードのためのレートひずみ分析を使用してレートひずみ値を計算し、テストされたモードの間で最も良好なレートひずみ特性を有するイントラ予測モードを選択し得る。レートひずみ分析は、概して、符号化ブロックと、符号化ブロックを生成するために符号化された元の符号化されていないブロックとの間のひずみ(または誤差)の量、ならびに符号化ブロックを生成するために使用されるビットレート(すなわち、ビット数)を決定する。イントラ予測ユニット46は、どのイントラ予測モードがブロックのための最も良好なレートひずみ値を呈するかを決定するために、様々な符号化ブロックのためのひずみおよびレートから比を計算し得る。
[0101]ブロックのためのイントラ予測モードを選択した後、イントラ予測ユニット46は、ブロックのための選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット56に与え得る。エントロピー符号化ユニット56は、選択されたイントラ予測モードを示す情報を符号化し得る。ビデオエンコーダ20は、送信されたビットストリーム中に、複数のイントラ予測モードインデックステーブルおよび複数の(コードワードマッピングテーブルとも呼ばれる)変更イントラ予測モードインデックステーブルと、様々なブロックのための符号化コンテキストの定義と、コンテキストの各々のために使用すべき最確のイントラ予測モード(a most probable intra-prediction mode)、イントラ予測モードインデックステーブル、および変更イントラ予測モードインデックステーブルの指示とを含み得る、構成データを含み得る。
[0102]ビデオエンコーダ20は、コーディングされている元のビデオブロックから、モード選択ユニット40からの予測データを減算することによって残差ビデオブロックを形成する。加算器50は、この減算演算を実行する1つまたは複数の構成要素を表す。変換処理ユニット52は、離散コサイン変換(DCT)または概念的に同様の変換などの変換を残差ブロックに適用し、残差変換係数値を備えるビデオブロックを生成する。変換処理ユニット52は、概念的にDCTと同様である他の変換を実行し得る。ウェーブレット変換、整数変換、サブバンド変換または他のタイプの変換も使用され得る。
[0103]いずれの場合も、変換処理ユニット52は、変換を残差ブロックに適用し、残差変換係数のブロックを生成する。変換は、残差情報をピクセル値領域から周波数領域などの変換領域に変換し得る。変換処理ユニット52は、得られた変換係数を量子化ユニット54に送り得る。量子化ユニット54は、ビットレートをさらに低減するために変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。量子化プロセスは「スケーリング」プロセスと呼ばれることもあり、したがって、量子化変換係数は「スケーリングされた変換係数」と呼ばれることもある。量子化(またはスケーリング)の程度は、量子化パラメータを調整することによって変更され得る。いくつかの例では、エントロピー符号化ユニット56は、次いで、量子化変換係数を含む行列の走査を実行し得る。
[0104]量子化に続いて、エントロピー符号化ユニット56は、スキャンされた量子化変換係数をエントロピーコーディングする。たとえば、エントロピー符号化ユニット56は、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディングまたは別のエントロピーコーディング技法を実行し得る。コンテキストベースエントロピーコーディングの場合、コンテキストは隣接ブロックに基づき得る。エントロピー符号化ユニット56によるエントロピーコーディングに続いて、符号化ビットストリームは、別のデバイス(たとえば、ビデオデコーダ30)に送信されるか、あるいは後で送信するかまたは取り出すためにアーカイブされ得る。
[0105]逆量子化ユニット58および逆変換ユニット60は、ピクセル領域中で残差ブロックを再構成するために、たとえば参照ブロックとして後で使用するために、それぞれ逆量子化および逆変換を適用する。動き補償ユニット44は、参照ピクチャメモリ64のフレームのうちの1つのものの予測ブロックに残差ブロックを加算することによって参照ブロックを計算し得る。動き補償ユニット44はまた、動き推定において使用するためのサブ整数ピクセル値を計算するために、再構成された残差ブロックに1つまたは複数の補間フィルタを適用し得る。加算器62は、参照ピクチャメモリ64に記憶するための再構築されたビデオブロックを生成するために、動き補償ユニット44によって生成された動き補償予測ブロックに再構築された残差ブロックを加算する。再構成されたビデオブロックは、後続のビデオフレーム中のブロックをインターコーディングするために動き推定ユニット42および動き補償ユニット44によって参照ブロックとして使用され得る。
[0106]モード選択ユニット40は、ブロックのための符号化モードを最終的に選択するために、ブロックのための様々なモード間で符号化結果を比較し得る。たとえば、モード選択ユニット40は、時間動き補償と、ビュー間動き補償と、高度残差予測と、照明補償とを含むモードのためのレートひずみメトリックを比較し得る。モード選択ユニット40は、現在ブロックのための最も良好なレートひずみメトリックを生じるコーディングモードを選択し得る。
[0107]モード選択ユニット40がブロックのためのコーディングモードとしてARPを選択したとき、モード選択ユニット40は、さらに、ARP中に適用されるべき重み付け係数を決定し得る。この場合も、モード選択ユニット40は、様々な潜在的重み付け係数、たとえば、0.5と1.0、の間でレートひずみメトリックを比較し、最良のレートひずみメトリックを生じる重み付け係数を選択し得る。エントロピー符号化ユニット56は、ブロックのためにモード選択ユニット40によって選択された重み付け係数を表す重み付け係数シンタックス要素のための値を符号化し得る。モード選択ユニット40がARP以外のモードを選択したとき、エントロピー符号化ユニット56は、ARP重み付け係数が0の値を有することを示す重み付け係数シンタックス要素のための値を符号化し得る。
[0108]本開示の技法によれば、ARP重み付け係数が0の値を有するとき、エントロピー符号化ユニット56は、さらに、対応するブロックが照明補償を使用して符号化されるかどうかを示す照明補償シンタックス要素(たとえば、ic_flag)のための値を符号化し得る。たとえば、モード選択ユニット40が、ARPを使用してブロックを符号化するのではなく、代わりに照明補償を使用してブロックを符号化することを決定した場合、エントロピー符号化ユニット56は、ブロックが照明補償を使用して符号化されることを示す照明補償シンタックス要素のための値を符号化し得る。同様に、モード選択ユニット40が、ARPを使用して、および照明補償を使用せずにブロックを符号化するのではなく、異なるモードを使用してブロックを符号化することを決定した場合、エントロピー符号化ユニット56は、ブロックが照明補償を使用して符号化されないことを示す照明補償シンタックス要素のための値を符号化し得る。1つまたは複数の別個のシンタックス要素は、次いで、ブロックを符号化するために使用される実際のコーディングモードを示し得る。
[0109]さらに、ARP重み付け係数が0でない値を有するとき、エントロピー符号化ユニット56は照明補償シンタックス要素の符号化をスキップし得る。すなわち、ビデオエンコーダ20は、符号化ビデオデータを含む得られたビットストリーム中に照明補償シンタックス要素のための値を挿入することを回避するように構成され得る。いくつかの例では、ビデオエンコーダ20はまた、ブロックレベル照明補償有効化シンタックス要素(a block-level illumination compensation enabled syntax element)、たとえば、icEnableFlagを符号化し得る。ビデオエンコーダ20は、ブロックレベル照明補償有効化シンタックス要素が、ブロックのために照明補償が有効化されることを示すときのみ、(照明補償がブロックのために実際に使用されるかどうかを示す)ブロックレベル照明補償シンタックス要素のための値をコーディングするようにさらに構成され得る。
[0110]追加または代替として、いくつかの例では、ビデオエンコーダ20は、スライスレベル照明補償シンタックス要素(a slice-level illumination compensation syntax element)、たとえば、slice_ic_enable_flagを符号化し得る。ビデオエンコーダ20は、スライスレベル照明補償シンタックス要素が、対応するブロックを含むスライスのために照明補償が有効化されることを示すときのみ、ブロックレベル照明補償シンタックス要素のための値をコーディングするようにさらに構成され得る。ビデオエンコーダ20が、スライスのブロックのいずれかのために照明補償を使用することを決定することなしにスライス全体のブロックを符号化するとき、ビデオエンコーダ20は、スライスのために照明補償が無効化されることを示すようにスライスレベル照明補償シンタックス要素の値を設定し得る。
[0111]ARPおよび照明補償はインター予測技法である。したがって、いくつかの例では、ビデオエンコーダ20は、対応するブロックがインター予測されるとき、ARP重み付け係数および/または照明補償シンタックス要素のための値を符号化するだけである。イントラ予測ブロックのために、ビデオエンコーダ20は、ARP重み付け係数および照明補償シンタックス要素の符号化をスキップし得る。
[0112]このようにして、図2のビデオエンコーダ20は、ビデオデータの現在ブロックの高度残差予測(ARP)重み付け係数のための値を決定することと、ARP重み付け係数の値が0に等しくないとき、現在ブロックのための照明補償シンタックス要素のコーディング(すなわち、符号化)をスキップすることと、現在ブロックをコーディングすることとを行うように構成されたビデオエンコーダの一例を表す。図2のビデオエンコーダ20の例は、ARP重み付け係数の値が0に等しいとき、現在ブロックのための照明補償シンタックス要素をコーディングすることと、照明補償シンタックス要素の値に少なくとも部分的に基づいて現在ブロックをコーディングすることとを行うようにさらに構成される。別段に規定されていない限り、ビデオエンコーダ20に関して使用される「コーディングする(code)」および「コーディングすること」は、「符号化する(encode)」および「符号化すること」として理解されるべきものである。しかしながら、「コーディングする」および「コーディングすること」は、たとえば、図1、図3のビデオデコーダ30に関して使用されるとき、「復号する(decode)」および「復号すること」を指すこともあることを理解されたい。
[0113]図3は、照明補償をシグナリングするための技法を実装し得るビデオデコーダ30の一例を示すブロック図である。図3の例では、ビデオデコーダ30は、エントロピー復号ユニット70と、動き補償ユニット72と、イントラ予測ユニット74と、逆量子化ユニット76と、逆変換ユニット78と、参照ピクチャメモリ82と、加算器80とを含む。ビデオデコーダ30は、いくつかの例では、ビデオエンコーダ20(図2)に関して説明した符号化パスとは概して逆の復号パスを実行し得る。動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルに基づいて予測データを生成し得、イントラ予測ユニット74は、エントロピー復号ユニット70から受信されたイントラ予測モードインジケータに基づいて予測データを生成し得る。
[0114]復号プロセス中に、ビデオデコーダ30は、ビデオエンコーダ20から、符号化ビデオスライスのビデオブロックと、関連するシンタックス要素とを表す符号化ビットストリームを受信する。ビデオデコーダ30のエントロピー復号ユニット70は、量子化係数と、動きベクトルまたはイントラ予測モードインジケータと、他のシンタックス要素とを生成するために、ビットストリームをエントロピー復号する。エントロピー復号ユニット70は、動き補償ユニット72に動きベクトルおよび他のシンタックス要素をフォワーディングする。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルのシンタックス要素を受信し得る。
[0115]ビデオスライスがイントラコード化(I)スライスとしてコーディングされるとき、イントラ予測ユニット74は、シグナリングされたイントラ予測モードと、現在フレームまたはピクチャの、前に復号されたブロックからのデータとに基づいて、現在ビデオスライスのビデオブロックのための予測データを生成し得る。ビデオフレームがインターコード化(すなわち、B、PまたはGPB)スライスとしてコーディングされるとき、動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルと他のシンタックス要素とに基づいて、現在ビデオスライスのビデオブロックのための予測ブロックを生成する。予測ブロックは、参照ピクチャリストのうちの1つ内の参照ピクチャのうちの1つから生成され得る。ビデオデコーダ30は、参照ピクチャメモリ82に記憶された参照ピクチャに基づいて、デフォルトの構成技法を使用して、参照フレームリスト、すなわち、リスト0およびリスト1を構成し得る。
[0116]動き補償ユニット72は、動きベクトルと他のシンタックス要素とをパーズすること(parsing)によって現在ビデオスライスのビデオブロックのための予測情報を決定し、復号されている現在ビデオブロックのための予測ブロックを生成するために予測情報を使用する。たとえば、動き補償ユニット72は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(たとえば、イントラまたはインター予測)と、インター予測スライスタイプ(たとえば、Bスライス、Pスライス、またはGPBスライス)と、スライスのための参照ピクチャリストのうちの1つまたは複数のための構成情報と、スライスの各インター符号化ビデオブロックのための動きベクトルと、スライスの各インターコード化ビデオブロックのためのインター予測ステータスと、現在ビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、受信されたシンタックス要素のいくつかを使用する。
[0117]動き補償ユニット72はまた、補間フィルタに基づいて補間を実行し得る。動き補償ユニット72は、参照ブロックのサブ整数ピクセルのための補間値(interpolated values)を計算するために、ビデオブロックの符号化中にビデオエンコーダ20によって使用された補間フィルタを使用し得る。この場合、動き補償ユニット72は、受信されたシンタックス要素からビデオエンコーダ20によって使用された補間フィルタを決定し、予測ブロックを生成するためにその補間フィルタを使用し得る。
[0118]本開示の技法によれば、エントロピー復号ユニット70は、現在ブロックのARP重み付け係数のための値をエントロピー復号し得る。ARP重み付け係数が0でない値を有する場合、エントロピー復号ユニット70は、照明補償シンタックス要素(たとえば、ic_flag)がビットストリーム中に含まれず、したがって、ビットストリームの後続のビットが照明補償シンタックス要素とは異なるシンタックス要素を表すと決定し得る。一方、ARP重み付け係数が0の値を有する場合、エントロピー復号ユニット70は、照明補償シンタックス要素がビットストリーム中に存在すると決定し、さらに、照明補償シンタックス要素のための値を復号し得る。
[0119]ARP重み付け係数が0でない値(たとえば、0.5または1.0)を有するとき、動き補償ユニット72は、対応するブロックを復号するためにARPを使用し得る。たとえば、以下でより詳細に説明するように、動き補償ユニット72は、時間動きベクトルを使用して第1の予測子を決定し、視差ベクトルと時間動きベクトルとを使用して第2の予測子を決定し、第2の予測子にARP重み付け係数を適用し、第1の予測子と、ARP重み付け係数がそれに適用された第2の予測子とから現在ブロックのための予測子を計算し得る。
[0120]ARP重み付け係数が0の値を有するとき、エントロピー復号ユニット70は、現在ブロックが照明補償を使用してコーディングされるかどうかを示す現在ブロックのための照明補償シンタックス要素のための値を復号し得る。照明補償シンタックス要素が、照明補償を使用して現在ブロックがコーディングされることを示す場合、動き補償ユニット72は、照明補償を使用して現在ブロックを予測し得る。一方、照明補償シンタックス要素が、照明補償を使用して現在ブロックがコーディングされないことを示す場合、動き補償ユニット72は、異なる予測モード、たとえば、時間予測またはビュー間予測を使用して現在ブロックを予測し得る。
[0121]いくつかの例では、ビデオデコーダ30はまた、ブロックレベル照明補償有効化シンタックス要素、たとえば、icEnableFlagを復号し得る。ビデオデコーダ30は、ブロックレベル照明補償有効化シンタックス要素が、ブロックのために照明補償が有効化されることを示すときのみ、(照明補償がブロックのために実際に使用されるかどうかを示す)ブロックレベル照明補償シンタックス要素のための値を復号するようにさらに構成され得る。
[0122]追加または代替として、いくつかの例では、ビデオデコーダ30は、スライスレベル照明補償シンタックス要素、たとえば、slice_ic_enable_flagを復号し得る。ビデオデコーダ30は、スライスレベル照明補償シンタックス要素が、対応するブロックを含むスライスのために照明補償が有効化されることを示すときのみ、ブロックレベル照明補償シンタックス要素のための値を復号するようにさらに構成され得る。ビデオデコーダ30のスライスレベル照明補償シンタックス要素が、スライスのために照明補償が無効化されることを示すとき、ビデオデコーダ30は、照明補償シンタックス要素がスライスのブロックのいずれかのためのビットストリーム中に存在しないと決定し得る。
[0123]ARPおよび照明補償はインター予測技法である。したがって、いくつかの例では、ビデオデコーダ30は、対応するブロックがインター予測されるとき、ARP重み付け係数および/または照明補償シンタックス要素のための値を復号するだけである。ビデオデコーダ30は、ARP重み付け係数および照明補償シンタックス要素がイントラ予測ブロックのために存在しないと決定し得る。
[0124]概して、ビデオデコーダ30は、ブロックを復号するためにブロックのための予測データと組み合わされるべきブロックのための残差データを再生する。逆量子化ユニット76は、ビットストリーム中に与えられ、エントロピー復号ユニット70によって復号された量子化変換係数を逆量子化(inverse quantize)、すなわち、逆量子化(de-quantize)する。逆量子化プロセスは、量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定するための、ビデオスライス中のビデオブロックごとにビデオエンコーダ30によって計算される量子化パラメータQPYの使用を含み得る。逆変換ユニット78は、ピクセル領域において残差ブロックを生成するために、逆変換、たとえば、逆DCT、逆整数変換、または概念的に同様の逆変換プロセスを変換係数に適用する。
[0125]動き補償ユニット72が、動きベクトルと他のシンタックス要素とに基づいて現在ビデオブロックのための予測ブロックを生成した後、ビデオデコーダ30は、逆変換ユニット78からの残差ブロックを、動き補償ユニット72によって生成された対応する予測ブロックと加算することによって、復号ビデオブロックを形成する。加算器80は、この加算演算を実行する1つまたは複数の構成要素を表す。所望される場合、ブロッキネスアーティファクトを除去するために、復号ブロックをフィルタ処理するためのデブロッキングフィルタも適用され得る。(コーディングループ中の、またはコーディングループの後のいずれかの)他のループフィルタも、ピクセル遷移を平滑化するか、またはさもなければビデオ品質を改善するために使用され得る。所与のフレームまたはピクチャ中の復号ビデオブロックは、次いで、その後の動き補償のために使用される参照ピクチャを記憶する参照ピクチャメモリ82に記憶される。参照ピクチャメモリ82はまた、図1のディスプレイデバイス32などのディスプレイデバイス上で後で提示するために復号ビデオを記憶する。
[0126]このようにして、図3のビデオデコーダ30は、ビデオデータの現在ブロックの高度残差予測(ARP)重み付け係数のための値を決定することと、ARP重み付け係数の値が0に等しくないとき、現在ブロックのための照明補償シンタックス要素のコーディング(すなわち、復号)をスキップすることと、現在ブロックをコーディングすることとを行うように構成されたビデオデコーダの一例を表す。図3のビデオデコーダ30の例は、ARP重み付け係数の値が0に等しいとき、現在ブロックのための照明補償シンタックス要素をコーディングすることと、照明補償シンタックス要素の値に少なくとも部分的に基づいて現在ブロックをコーディングすることとを行うようにさらに構成される。ビデオデコーダ30に関する「コーディングする」および「コーディングすること」という単語は、別段に規定されていない限り、復号することという意味であると意図される。
[0127]図4は、例示的なMVC予測パターンを示す概念図である。マルチビュービデオコーディング(MVC:Multi-view video coding)は、ITU−T H.264/AVCの拡張である。同様の技法が、HEVCに適用され得る。図4の例では、(ビューID「S0」〜「S7」を有する)8つのビューが示され、12個の時間ロケーション(「T0」〜「T11」)がビューごとに示されている。すなわち、図4中の各行はビューに対応し、各列は時間ロケーションを示す。
[0128]図4に、マルチビュービデオコーディングのための(各ビュー内のピクチャ間予測(inter-picture prediction)とビュー間予測(inter-view prediction)の両方を含む)一般的なMVC予測構造が示され、ここで、予測は矢印によって示され、矢印の終点のオブジェクト(pointed-to object)は予測参照のために矢印の始点のオブジェクト(point-from object)を使用する。MVCでは、ビュー間の相関を除去するために、同じアクセスユニットの(すなわち、同じ時間インスタンスをもつ)異なるビュー中でキャプチャされたピクチャの間でビュー間予測が実行される。ビュー間予測を用いてコーディングされたピクチャは、他の非ベースビュー(non-base views)のビュー間予測用の参照ピクチャリスト中に追加され得る。
[0129]MVCはH.264/AVCデコーダによって復号可能であるいわゆるベースビューを有し、ステレオビューペア(stereo view pair)もMVCによってサポートされ得るが、MVCの1つの利点は、それが、3Dビデオ入力として3つ以上のビューを使用し、複数のビューによって表されるこの3Dビデオを復号する例をサポートすることができることである。MVCデコーダを有するクライアントのレンダラ(a renderer)は、複数のビューを用いて3Dビデオコンテンツを予想し得る。
[0130]一般的なMVC復号順序構成は時間優先コーディング(time-first coding)と呼ばれる。アクセスユニットは、1つの出力時間インスタンスのためのすべてのビューのコード化ピクチャを含み得る。たとえば、時間T0のピクチャの各々は共通アクセスユニット中に含まれ得、時間T1のピクチャの各々は第2の共通アクセスユニット中に含まれ得、以下同様である。復号順序は、出力順序または表示順序と必ずしも同一とは限らない。
[0131]図4中のフレームは、対応するフレームがイントラコーディングされる(すなわち、Iフレームである)のか、一方向に(すなわち、Pフレームとして)インターコーディングされるのか、複数の方向に(すなわち、Bフレームとして)インターコーディングされるのかを指定する、文字を含む影付きブロックを使用して、図4中の各行と各列との交差部において示されている。bフレーム(すなわち、小文字の「b」をもつフレーム)として指定されたフレームはまた、複数の方向にインターコーティングされ、概して、ビューまたは時間次元中のコーディング階層中でBフレーム(すなわち、大文字の「B」をもつフレーム)よりも低いフレームを指し得る。概して、予測は矢印によって示され、ここで、矢印の終点のフレーム(pointed-to frame)は予測参照のために矢印の始点のオブジェクトを使用する。たとえば、時間ロケーションT0におけるビューS2のPフレームは、時間ロケーションT0におけるビューS0のIフレームから予測される。
[0132]シングルビュービデオ符号化の場合と同様に、マルチビュービデオコーディングのビデオシーケンスのフレームは、異なる時間ロケーションにおけるフレームに関して予測的に符号化され得る。たとえば、時間ロケーションT1におけるビューS0のbフレームは、時間ロケーションT0におけるビューS0のIフレームからそのbフレームに向けられた矢印を有し、その矢印は、bフレームがIフレームからインター予測されることを示す。しかしながら、さらに、マルチビュービデオ符号化のコンテキストでは、フレームはビュー間予測され得る。すなわち、ビューコンポーネントは、参照のために他のビュー中のビューコンポーネントを使用することができる。MVCでは、たとえば、別のビュー中のビューコンポーネントがインター予測参照であるかのように、ビュー間予測が実現される。潜在的ビュー間参照は、シーケンスパラメータセット(SPS)MVC拡張中でシグナリングされ得、インター予測またはビュー間予測参照のフレキシブルな順序付けを可能にする参照ピクチャリスト構成プロセスによって変更され得る。
[0133]ビュー間予測参照ピクチャは、インター予測参照ピクチャと同様の方法で、参照ピクチャリストの任意の位置に置かれ得る。いくつかの例では、ビュー間参照ピクチャを長期参照ピクチャとして標示することと、時間参照ピクチャを短期参照ピクチャとして標示することとによって、ビュー間参照ピクチャが時間参照ピクチャと区別される。マルチビュービデオコーディングのコンテキストでは、2種類の動きベクトルがある。1つは、時間参照ピクチャを指す通常動きベクトルである。時間動きベクトルのための対応する時間インター予測モードは、動き補償予測(MCP:motion-compensated prediction)と呼ばれる。他のタイプの動きベクトルは、異なるビュー中のピクチャ(すなわち、ビュー間参照ピクチャ)を指す視差動きベクトル(DMV:a disparity motion vector)である。DMVのための対応するインター予測モードは、視差補償予測(DCP:disparity-compensated prediction)と呼ばれる。
[0134]図5は、現在予測ユニット(a current prediction unit)(PU)90とそれの空間隣接PUとの間の関係を示す概念図である。空間隣接PUは、図5の例においてA0、A1、B0、B1、およびB2と標示され、マージモードとAMVPモードの両方のための候補動きベクトルを決定するために使用され得る。いくつかのシンボルは以下のように定義されるものとする。
− ルーマロケーション(xP,yP)は、現在ピクチャの左上サンプルに対する現在予測ユニット(PU)90の左上ルーマサンプルを指定するために使用される。
− 変数nPSWおよびnPSHは、ルーマについてのPUの幅および高さを示す。
− 現在ピクチャの左上サンプルに対する現在予測ユニットNの左上ルーマサンプルは(xN,yN)である。
[0135]これらの例示的な定義を仮定すれば、(xN,yN)(Nは、図5によれば、A0、A1、B0、B1、またはB2によって置き換えられる)は、それぞれ、(xP−1,yP+nPSH)、(xP−1,yP+nPSH−1)、(xP+nPSW,yP−1)、(xP+nPSW−1,yP−1)または(xP−1,yP−1)と定義され得る。いくつかの例では、照明補償は、PUのための動き情報がマージモードを使用して予測されるときに使用され得る。図5は、PUのための動き情報のマージモードコーディング中に使用され得る動きベクトル予測子候補を示す。
[0136]図6は、出力順序でのビデオフレームの予測構造を示す概念図である。HEVCにおけるネットワークアブストラクションレイヤ(NAL:a network abstraction layer)ユニットタイプによって識別され得る4つのピクチャタイプがある。これらは、瞬時復号リフレッシュ(IDR:instantaneous decoding refresh)ピクチャ、クリーンランダムアクセス(CRA:clean random access)ピクチャ、時間レイヤアクセス(TLA:temporal layer access)ピクチャ、およびIDRピクチャ、CRAピクチャ、またはTLAピクチャでないコード化ピクチャである。いくつかの例では、照明補償は、ブロックがIDRピクチャまたはCRAピクチャなどのIRAPピクチャ中に含まれるときに使用され得る。
[0137]IDRピクチャおよびコード化ピクチャは、H.264/AVC仕様から継承されたピクチャタイプである。CRAピクチャタイプおよびTLAピクチャタイプは、HEVCにおいて新しく、H.264/AVC仕様において利用可能でない。CRAピクチャは、IDRピクチャを挿入することよりも効率的である、ビデオシーケンスの中央の任意のランダムアクセスポイントから始まる復号を容易にするピクチャタイプである。HEVCでは、これらのCRAピクチャから開始するビットストリームも適合ビットストリーム(a conforming bitstream)である。TLAピクチャは、有効な時間レイヤ切替えポイントを示すために使用され得るピクチャタイプである。
[0138]ブロードキャスティングおよびストリーミングなどの、ビデオ適用例では、ユーザが、最小遅延で、異なるチャネルの間で切り替え、ビデオの特定の部分にジャンプするための重要な特徴が必要とされる。この特徴は、ビデオビットストリーム中で一定の間隔でランダムアクセスピクチャを有することによって可能にされ得る。H.264/AVCとHEVCの両方において指定されるIDRピクチャは、ランダムアクセスのために使用され得る。しかしながら、IDRピクチャが、コード化ビデオシーケンスを開始し、復号ピクチャバッファ(DPB)を常にクリーンにするので、復号順序でIDRに後続するピクチャは、そのIDRピクチャより前に復号されたピクチャを参照として使用することができない。したがって、ランダムアクセスのためにIDRピクチャに依拠するビットストリームは、著しくより低いコーディング効率(たとえば、6%)を有することがある。コーディング効率を改善するために、HEVCにおけるCRAピクチャは、復号順序でCRAピクチャに後続するが、出力順序でCRAピクチャに先行するピクチャが、そのCRAピクチャの前に復号されたピクチャを参照として使用することを可能にする。
[0139]CRAピクチャの周りの一般的な予測構造が図6に示されており、(24のPOC値をもつ)CRAピクチャは、復号順序でCRAピクチャに後続するが、出力順序でCRAピクチャに先行する、他のピクチャ(POC値17〜23)を含んでいるピクチャグループ(GOP)に属する。これらのピクチャは、CRAピクチャのリーディングピクチャと呼ばれ、現在のCRAピクチャの前のIDRピクチャまたはCRAピクチャから復号が開始する場合に正しく復号され得る。しかしながら、リーディングピクチャは、このCRAピクチャからのランダムアクセスが行われたときに正しく復号されないことがあり、したがって、これらのリーディングピクチャは一般にランダムアクセス復号中に廃棄される。
[0140]復号がどこで開始するかに応じて利用可能でないことがある参照ピクチャからの誤り伝搬を防ぐために、復号順序と出力順序の両方でCRAピクチャに後続する、図6に示されている次のGOP中のすべてのピクチャは、(リーディングピクチャを含む)復号順序または出力順序のいずれかでCRAピクチャに先行するいかなるピクチャをも参照として使用しないものとする。
[0141]同様のランダムアクセス機能がリカバリポイントSEIメッセージとともにH.264/AVCにおいてサポートされる。H.264/AVCデコーダ実装形態が、その機能をサポートすることもしないこともある。HEVCでは、CRAピクチャから開始するビットストリームは適合ビットストリームと見なされる。ビットストリームがCRAピクチャから開始するとき、CRAピクチャのリーディングピクチャは、利用不可能な参照ピクチャを参照し得、したがって正しく復号されないことがある。しかしながら、HEVCは、開始CRAピクチャのリーディングピクチャが出力されないことを規定しており、したがって、「クリーンランダムアクセス」という名称がある。ビットストリームコンフォーマンス要件の確立のために、HEVCは、非出力(non-output)リーディングピクチャの復号のために利用不可能な参照ピクチャを生成するための復号プロセスを規定している。しかしながら、適合デコーダ実装形態は、復号プロセスがビットストリームの開始から実行されるときと比較して、それが同等の出力を生成することができる限り、その復号プロセスに従う必要はない。HEVCでは、適合ビットストリームは、IDRピクチャをまったく含んでいないことがあり、したがって、コード化ビデオシーケンスのサブセットまたは不完全なコード化ビデオシーケンスを含んでいることがある。
[0142]IDRピクチャおよびCRAピクチャのほかに、他のタイプのランダムアクセスポイントピクチャ、たとえば、切断リンクアクセス(BLA:broken link access)がある。ランダムアクセスポイントピクチャの主要なタイプの各々について、ランダムアクセスポイントピクチャがシステムによってどのように潜在的に扱われ得るかに応じて、サブタイプがあり得る。ランダムアクセスポイントピクチャの各サブタイプは、異なるネットワークアブストラクションレイヤ(NAL)ユニットタイプを有する。
[0143]HEVCにおいて、IRAP(イントラランダムアクセスポイント(intra random access point))ピクチャ、すなわち、各VCLNALユニットが、両端値を含むBLA_W_LP〜RSV_IRAP_VCL23の範囲内のnal_unit_typeをそれのために有する、コード化ピクチャも定義されている。IRAPピクチャは、Iスライスのみを含んでおり、BLAピクチャ、CRAピクチャ、またはIDRピクチャであり得る。復号順序でビットストリーム中の第1番目のピクチャ(the first picture)はIRAPピクチャでなければならない。必要なパラメータセットが、それらがアクティブ化される必要があるときに利用可能であるという条件で、IRAPピクチャおよび復号順序で後続のすべての非RASLピクチャは、復号順序でIRAPピクチャに先行する任意のピクチャの復号プロセスを実行することなしに正しく復号され得る。IRAPピクチャでないIスライスのみを含んでいるピクチャがビットストリーム中にあり得る。
[0144]図7は、HEVCによるNALユニットヘッダ100の概念図である。この設計が、以下で手短に説明するように、HEVCスケーラブルおよび3Dビデオコーディング(3DV)拡張、ならびに他の将来の拡張をサポートするのに十分であるという予期で、HEVCでは、2バイトのNALユニットヘッダが導入された。
[0145]図7に示されているように、HEVC NALユニットヘッダの第1番目のバイト(the first byte)は、H.264/AVC NALユニットヘッダと同様である。特に、NALユニットヘッダ100は、F−ビット102と、NALユニットタイプフィールド104と、予約済みビット(reserved bits)106と、時間識別子プラスワン(TIDP:temporal identifier plus one)フィールド108とを含む。
[0146]forbidden_zero(F)ビット102は、MPEG−2システムレガシー環境においてスタートコードエミュレーション(start code emulations)を防ぐために、0の値を有しなければならない。
[0147]H.264/AVCでは、nal_ref_idc(NRI)は2ビット固定コードワードであった。2ビットのための主要なモチベーションは、データ区分をサポートするための異なるトランスポート優先度シグナリング(transport priority signaling)のサポートであった。データ区分の除去は、NRIがHEVCに対して1つの1ビットだけ低減されることを可能にした。さらに、いくつかの参照ピクチャがNALユニットのために有効化されるかどうかを示すために、NALユニットタイプが使用され得る。したがって、NRIは、HEVCにおけるNALユニットヘッダから完全に除去され、このことは、(図7中でNALタイプフィールド104として表される)nal_unit_typeのサイズが5ビットから6ビットに増加することを可能にし、H.264/AVCと比較して2倍の数のNALユニットタイプを与える。
[0148]HEVC NALユニットヘッダの第2番目の部分は、2つのシンタックス要素、すなわち、(6ビットを含む、図7中で予約済みビット106によって表される)reserved_zero_6bitsと、temporal_id_plus1(3ビットを含む、図7中のTIDPフィールド108)とを含む。(両端値を含む0から6にわたる時間識別子を用いて)時間スケーラビリティをサポートするために、TIDPフィールド108が使用され得る。ビデオコーディングレイヤ(VCL)NALユニットは、より大きいTemporalId値を有する任意のNALユニットにアクセスすることなしに正常に復号され得る。
[0149]現在ピクチャは、復号されているとき、現在ピクチャ、または(将来の)現在ピクチャに後続するピクチャのいずれかによって参照のために使用され得るすべてのピクチャを含む参照ピクチャセットを有する。ビデオコーディングデバイスは、現在ピクチャのための参照として使用され得るピクチャと、将来のピクチャのための参照ピクチャとしてのみ使用され得るピクチャとを区別することができる。参照ピクチャリストは、現在ピクチャのために使用され得る参照ピクチャセット(すなわち「現在のためのRPS」)中のピクチャに基づいて、したがって、将来のピクチャのための参照としてのみ使用され得るピクチャに基づかずに構成される。現在RPS中のピクチャは、2つの参照ピクチャリスト、すなわち、RefPicList0またはRefPicList1のいずれか中にあることもないこともある。
[0150]現在、VCEGおよびMPEGのジョイントコラボレーションチームオン3Dビデオコーディング(JCT−3C)は、HEVCに基づく3DV規格を開発中であり、それのために、規格化作業の一部は、HEVCに基づくマルチビュービデオコーデック(MV−HEVC)と、HEVCに基づく3Dビデオコーディング(3D−HEVC)のための別の部分との規格化を含む。3D−HEVCでは、コーディングユニット/予測ユニットレベルのコーディングツールを含む新たなコーディングツールが、テクスチャビューと深度ビューの両方に関して含められ、サポートされ得る。3D−HEVCのための3D−HTMソフトウェアのバージョン7.0は、以下のリンク、すなわち、https://hevc.hhi.fraunhofer.de/svn/svn_3DVCSoftware/tags/HTM-7.0/からダウンロードされ得る。このソフトウェアは、http://phenix.it-sudparis.eu/jct2/doc_end_user/documents/4_Incheon/wg11/JCT3V-D1005-v1.zipで入手可能な、Gerhard Tech、Krzysztof Wegner、Ying Chen、Sehoon Yeaの、「3D-HEVC Test Model 4」、JCT3V−D1005、ITU−T SG16 WP3およびISO/IEC JTC 1/SC29/WG11のジョイントコラボレーティブチームオン3Dビデオコーディング拡張開発、第3回会議、仁川、韓国、2013年4月に、3D−HEVCのワーキングドラフトとともに記載されている。
[0151]図8は、照明補償パラメータの導出のために使用され得る隣接サンプルを示す概念図である。特に、図8は、現在PU122を含む現在コーディングユニット(CU)120と、参照PU128を含む参照CU126とを示す。図8はまた、現在CU120に隣接するサンプル(ピクセル)124、ならびに参照CU126に隣接するサンプル130を示す。
[0152]マルチビュービデオコーディングにおける照明補償(IC)は、各カメラが光源に対して異なる露出を有し得るので、異なるビュー間の照明不一致(illumination discrepancy)を補償するために使用され得る。一般に、重み係数および/またはオフセットは、異なるビュー中のコード化ブロックと予測ブロックとの間の差を補償するために使用される。パラメータはデコーダに明示的に送信されることもされないこともある。
[0153]照明補償は、http://phenix.it-sudparis.eu/jct2/doc_end_user/current_document.php?id=234で入手可能な、Liuらの、「3D-CE2.h : Results of Illumination Compensation for Inter-View Prediction」、ITU−T SG16、WP3およびISO/IEC JTC 1/SC29/WG11のジョイントコラボレーティブチームオン3Dビデオコーディング拡張開発、JCT3V−B0045、上海、中国、2012年10月13〜19日に記載されている。JCT3V−B0045では、照明補償はコーディングユニットレベルにおいてシグナリングされ、パラメータは、現在CU120に隣接するサンプル124と参照CU126に隣接するサンプル130とから導出される。後に、モードのシグナリングは、http://phenix.it-sudparis.eu/jct2/doc_end_user/current_document.php?id=744で入手可能な、Ikaiの、「3D-CE5.h related: Removal of parsing dependency in illumination compensation」、ITU−T SG16、WP3およびISO/IEC JTC 1/SC29/WG11のジョイントコラボレーティブチームオン3Dビデオコーディング拡張開発、JCT3V−D0060、仁川、韓国、2013年4月20〜26日に記載されているように変更された。
[0154]したがって、照明補償は、ビュー間参照ピクチャから予測されるブロックについてコーディング効率を改善するために導入された。このモードは、ビュー間参照ピクチャを使用して予測されるブロックのみに適用され得る。
[0155]隣接サンプル124は、CU120に対して上に隣接する行および左に隣接する列におけるサンプル(ピクセル)を含む。隣接サンプル124は、参照CU126に隣接する対応するサンプル130とともに、最小2乗解(a least squares solution)によってスケーリングファクタaおよびオフセットbを導出し得る、線形モデルのための入力パラメータとして使用され得る。参照ビュー中の対応する隣接サンプル130は、図8に示されているように、現在PUの視差動きベクトルによって識別され得る。特に、図8は、PU122を含む非ベースビュー中の現在ピクチャ132と、(図8のベースビューピクチャ134内で「PUref」と標示された)参照PU128を含むベースビューピクチャ134とを示す。
[0156]ビュー間参照からの動き補償の後、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)は、現在PU122のための予測信号を更新するために、参照ブロック128の各値に線形モデルを適用し得る。参照ブロックの各値は、図8に示されているように、さらにaによってスケーリングされ、さらにbに加算され得る。すなわち、参照PU128の各サンプル値(ピクセル値)は、式「a*(参照PU128のサンプル値)+b」に従って変更され得る。照明補償におけるAMVPモードおよびマージモードは、余剰ビットおよび不要な計算を低減するために、スライスレベルで適応的に有効化または無効化され得る。
[0157]照明補償(IC)の有効化は、フラグ、たとえば、slice_ic_enable_flagによってスライスヘッダ中でシグナリングされ得る。他のフラグと同様に、slice_ic_enable_flagが0に等しい場合、ICモードはスライスのすべてのCUのために無効化され、他の場合、CUは、CUレベルでシグナリングされるフラグ(ic_flag)に応じてこのモードを使用することもしないこともある。
[0158]上記のJCT3V−B0045において提案された1つの設計では、ic_flagは、CUが、RefPicList0またはRefPicList1からのビュー間参照ピクチャから予測される少なくとも1つのPUを有するときのみシグナリングされる。しかしながら、上記条件は、CU中のPUのすべての参照インデックスの導出を必要とする。これは、すべてのPUシンタックス要素のパージング(parsing)と、マージモードを用いてコーディングされた各PUのためのマージ候補リスト構成の完了とを必要とする。概して、特に復号プロセスに(たとえば、マージ候補リスト構成に)基づく、パージングの遅延は、ビデオコーデックにおいて望ましくない。
[0159]したがって、ICモードシグナリングは、上記のJCT3V−D0060において提案されているように変更された。JCT3V−D0060の変更は、2つの部分、すなわち2N×2N以外のパーティションサイズと、スライスヘッダ中の追加のフラグslice_ic_disable_merge_zero_idx_flagとを用いてコーディングされるCUのためのICモードの無効化と、ICモードを示すフラグがマージモードに関する特殊な場合においてシグナリングされるか否かを制御することと、を含む。JCT3V−D0060によれば、ic_flagは、(現在インター予測PUがマージまたはAMVPを用いてコーディングされることを示す)merge_flagの後に常にシグナリングされる。
[0160]同様に、JCT3V−D0060によれば、(2N×2Nを用いてコーディングされる)現在PUがマージモードを用いてコーディングされるとき、ic_flagは、slice_ic_disable_merge_zero_idx_flagが0に等しいか、またはマージインデックスが0に等しくないときのみ、シグナリングされる。さらに、JCT3V−D0060によれば、(2N×2Nを用いてコーディングされる)現在PUがAMVPモードを用いてコーディングされるとき、RefPicList0およびRefPicList1に対応する参照インデックスが知られる。JCT3V−D0060によれば、それらのいずれかがビュー間参照ピクチャに対応するときのみ、ic_flagはシグナリングされる。
[0161]2013年7月3日に出願された米国仮出願第61/842,834号に記載されている技法によると、現在ピクチャがランダムアクセスピクチャであるか否かを確認することによって、ic_flagは簡単に置き換えられ得ることに留意されたい。
[0162]図9は、高度残差予測(ARP)のための技法を示す概念図である。高度残差予測(ARP)は、Part_2N×2Nに等しいパーティションモードをもつCUに適用され得、http://phenix.it-sudparis.eu/jct3v/doc_end_user/current_document.php?id=862tで入手可能な、Zhangらの、「CE4: Advanced residual prediction for multiview coding」、JCT3V−D0177、2013年4月20〜26日において提案されたように、第4回JCT3V会議において採用された。
[0163]図9は、マルチビュービデオコーディングにおけるARPの予測構造を示す。図9に示されているように、現在ブロックの予測において以下のブロックが呼び出される。
1.現在ピクチャ150の現在ブロック152
2.視差ベクトル(DV)168によって導出される参照/ベースビューピクチャ158中の参照ブロック160
3.現在ブロック152の(TMVとして示された)時間動きベクトル166によって導出される現在ブロックと同じビュー中のピクチャ154のブロック156。
4.参照ブロック160に現在ブロック152の時間動きベクトル166を適用することによって導出される参照ブロック160と同じビュー中のピクチャ162のブロック164。ブロック164は、現在ブロック152に対する時間動きベクトル166と視差ベクトル168とを組み合わせることから得られるベクトル170によって識別される。
[0164]残差予測子はBaseTRef−Base(すなわち、ブロック164 マイナス ブロック160)として示され、ここにおいて、減算演算が、示されたピクセルアレイの各ピクセルに適用される。重み付け係数wが残差予測子にさらに乗算される。したがって、現在ブロックの最終予測子は、CurrTRef+w*(BaseTRef−Base)、すなわち、ブロック156+w*(ブロック164 マイナス ブロック160)として示される。重み付け係数wは、たとえば、0.5または1.0の値を有し得る。
[0165]時間動きベクトル166および166’は、値が等しいが、異なるブロックに適用されることを理解されたい。この例では、時間動きベクトル166は、参照ブロック156を識別するためにブロック152に適用され、時間動きベクトル166’は、ブロック164を識別するためにブロック160に適用され得る。同様に、視差ベクトル168および168’は、値が等しいが、異なるブロックに適用される。この例では、視差ベクトル168は、ブロック160を識別するためにブロック152に適用され得、視差ベクトル168’は、ブロック164を識別するためにブロック156に適用され得る。
[0166]図10は、双方向予測の場合の、現在ブロックと参照ブロックと動き補償ブロックとの間の関係を示す概念図である。図9の上記の説明は、単方向予測が適用されるという仮定に基づく。図10に示されているように、双方向予測の場合に拡張されるとき、図9に関して説明した上記のステップは各参照ピクチャリストのために適用され得る。現在ブロックが1つの参照ピクチャリストのための(異なるビュー中の)ビュー間参照ピクチャを使用するとき、残差予測プロセスは無効化され得る。
[0167]デコーダ側における提案するARPの主要なプロシージャについて以下のように説明することができる。
1.ターゲット参照ビューを指す、現在の3D−HEVCにおいて指定されている視差ベクトルを取得する。次いで、同じアクセスユニット内の参照ビューのピクチャ中で、対応するブロックが視差ベクトルによって位置を特定される。
2.参照ブロックのための動き情報を導出するために、現在ブロックの動き情報を再利用する。残差ブロックを導出するために、現在ブロックの同じ動きベクトルと、参照ブロックのための参照ビュー中の導出された参照ピクチャと基づいて、対応するブロックのための動き補償を適用する。現在ブロックと、対応するブロックと、動き補償ブロックとの間の関係が図4に示されている。現在ビュー(Vm)の参照ピクチャと同じPOC(ピクチャ順序カウント(Picture Order Count))値を有する参照ビュー(V0)中の参照ピクチャが、対応するブロックの参照ピクチャとして選択される。
3.重み付けされた残差ブロックを得るために残差ブロックに重み付け係数を適用し、予測されたサンプルに重み付けされた残差ブロックの値を加算する。
[0168]一例では、3つの重み付け係数、すなわち0、0.5、および1がARPにおいて使用される。ビデオエンコーダ、たとえば、ビデオエンコーダ20は、現在CUのための最小レートひずみコストにつながる重み付け係数を最終重み付け係数として選択し得、対応する重み付け係数インデックス(たとえば、それぞれ重み付け係数0、1、および0.5に対応し得る0、1および2)がCUレベルでビットストリーム中で送信され得る。1つのCUにおけるすべてのPU予測は同じ重み付け係数を共有し得る。重み付け係数が0に等しいとき、ARPは現在CUのために使用されない。
[0169]http://phenix.int-evry.fr/jct3v/doc_end_user/current_document.php?id=487で入手可能な、Zhangらの、「3D-CE4: Advanced residual prediction for multiview coding」、JCT3V−C0049、ジュネーブ、スイス、2013年1月17〜23日では、非0の重み付け係数を用いてコーディングされる予測ユニットの参照ピクチャはブロックごとに異なり得る。したがって、参照ビューとは異なるピクチャが、対応するブロックの動き補償ブロック(図9ではブロック164)を生成するためにアクセスされる必要があり得る。JCT3V−C0049は、重み付け係数が0に等しくないとき、残差生成プロセスのための動き補償を実行する前に、固定ピクチャへ現在PUの復号動きベクトルをスケーリングすることを提案した。
[0170]JCT3V−D0177では、固定ピクチャは、それが同じビューからのものである場合、各参照ピクチャリストの第1番目の参照ピクチャとして定義される。復号動きベクトルが固定ピクチャを指さないとき、動きベクトルは、最初にスケーリングされ、次いでCurrTRefおよびBaseTRefを識別するために使用される。ARPのために使用されるそのような参照ピクチャはターゲットARP参照ピクチャと呼ばれる。
[0171]JCT3V−C0049では、双線形フィルタ(a bi-linear filter)が、対応するブロックおよびそれの予測ブロックの補間プロセス中に適用される。非ベースビュー中の現在PUの予測ブロックのために、従来の8/4タップフィルタが適用される。JCT3V−D0177は、ARPが適用されるとき、ブロックがベースビュー中にあるのか非ベースビュー中にあるのかにかかわらず、双線形フィルタを常に採用することを提案した。
[0172]参照ビューは、NBDVプロセスから返されるビュー順序インデックスによって識別される。3D−HTMバージョン7.0におけるARPの設計では、1つの参照ピクチャリスト中の1つのPUの参照ピクチャが現在ビューの異なるビューからのものであるとき、ARPはこの参照ピクチャリストについて無効化される。
[0173]図11は、ARPのさらなる改善を示す概念図である。JCT3V−D0177に記載されているARPは時間予測にのみ適用され得、すなわち、現在ブロックの現在動きベクトルは同じビュー中の参照ピクチャを指す。2013年6月21日に出願された米国仮出願第61/838,208号、および2013年7月14日に出願された米国仮出願第61/846,036号では、ビュー間予測のためにARPを適用するためのソリューション(すなわち、現在ブロックの現在動きベクトルが、異なるビュー中の参照ピクチャを指す)について説明した。これらの2つの仮出願によれば、
ARPにおいて、異なるアクセスユニットにおいて計算されるビュー間残差が、[図11]に示されているように、現在ブロックの残差を予測するために使用され得ることが提案される。現在ブロック(Curr)の動きベクトルが視差動きベクトル(DMV)であり、(DMVによって識別される)参照ビュー中の参照ブロック(Base)が少なくとも1つの時間動きベクトルを含んでいるとき、参照ビュー中の参照ブロック(Base)の時間動きベクトルは、DMVとともに、参照ビュー中の時間参照ブロック(BaseTRef)を識別するために使用され、時間動きベクトルは、現在ビュー中の時間参照ブロック(CurrTRef)を識別するために使用される。したがって、異なるアクセスユニット中のビュー間残差予測子は、これらの2つの後者のブロック間の差、すなわち、CurrTRef−BaseTRefとして計算され得る。ビュー間残差予測子として示された差分信号は、現在ブロックの残差を予測するために使用され得る。現在ブロックの予測信号は、ビュー間予測子(Base)と、重み付け係数wを用いた、異なるアクセスユニット中の予測されたビュー間残差との和、すなわち、Base+w*(CurrTRef−BaseTRef)である。
[0174]より詳細には、図11は、現在ブロック182を含む現在ピクチャ180と、ブロック186を含むピクチャ184と、ブロック190を含む異なるビュー中のピクチャ188と、ブロック194を含むピクチャ192とを示す。図11の例では、ブロック190は、視差動きベクトル198によって示されるように、現在ブロック182のための参照ブロックとして使用され得る。ブロック190は、ブロック190のための参照ブロックとしてブロック194を識別する時間動きベクトル196のためのデータをさらに含み得る。時間動きベクトル196は、ブロック186を識別するために現在ブロック182に適用され得る(時間動きベクトル196’)。重み付け係数がそれに適用され得る、ブロック186とブロック194との間の残差(ピクセルごとの差)は、現在ブロック182のための残差予測子として使用され得る。言い換えれば、現在ブロック182のための予測子は、ブロック190+w*(ブロック186 マイナス ブロック194)に等しいことがあり、ここで、予測子およびブロックは予測子およびブロックのピクセルサンプルを指す。
[0175]以下の表5は、照明補償およびARP関連シンタックス要素を含む、ビデオパラメータセット拡張を示す。以下の表5〜表7の各々の関連するシンタックス要素のためのセマンティクスは、表7の下で与えられる。
[0176]以下の表6は、概略的なスライスヘッダシンタックス要素を示す。
[0177]以下の表7は、概略的なコーディングユニットシンタックス要素を示す。
[0178]表5〜表7のいくつかの関連するシンタックス要素のための例示的なセマンティクスについて以下で説明する。これらのセマンティクスは例であり、他の例では異なる様式で定義され得ることを理解されたい。たとえば、0および1の値のためのセマンティクスはスワップされ得る。同様に、推論値は変更され得る。
[0179]iv_res_pred_flag[layerId]は、layerIdに等しいnuh_layer_idをもつレイヤの復号プロセス中でビュー間残差予測が使用されるかどうかを示す。0に等しいiv_res_pred_flag[layerId]は、layerIdに等しいnuh_layer_idをもつレイヤのためにビュー間残差予測が使用されないことを指定する。1に等しいiv_res_pred_flag[layerId]は、layerIdに等しいnuh_layer_idをもつレイヤのためにビュー間残差予測が使用され得ることを指定する。存在しないとき、iv_res_pred_flag[layerId]の値は0に等しいと推論されるものとする。
[0180]iv_res_pred_weight_idxは、残差予測のために使用される重み付け係数のインデックスを指定する。0に等しいiv_res_pred_weight_idxは、現在コーディングユニットのために残差予測が使用されないことを指定する。0に等しくないiv_res_pred_weight_idxは、現在コーディングユニットのために残差予測が使用されることを指定する。存在しないとき、iv_res_pred_weight_idxの値は0に等しいと推論される。
[0181]変数icEnableFlagは0に等しく設定され、slice_ic_enable_flagが1に等しく、PartModeが2N×2Nに等しく、PredMode[x0][y0]がMODE_INTRAに等しくないとき、以下が適用される。
・merge_flag[x0][y0]が1に等しい場合、以下が適用される。
・他の場合(merge_flag[x0][y0]が0に等しい)、以下が適用される。
○Xが0および1によって置き換えられる場合、変数refViewIdxLXは、RefPicListLX[ref_idx_lX[x0][y0]]のビュー順序インデックスに等しく設定される。
○フラグicEnableFlagは、以下において指定されているように導出される。
[0182]1に等しいic_flagは、現在コーディングユニットのために照明補償が使用されることを指定する。0に等しいic_flagは、現在コーディングユニットのために照明補償が使用されないことを指定する。存在しないとき、ic_flagは0に等しいと推論される。
[0183]1に等しいslice_ic_enable_flagは、現在スライスのために照明補償が有効化されることを指定する。0に等しいslice_ic_enable_flagは、現在スライスのために照明補償が無効化されることを指定する。存在しないとき、slice_ic_enable_flagは0に等しいと推論される。
[0184]1に等しいslice_ic_disable_merge_zero_idx_flagは、merge_flagが1に等しく、コーディングユニットの第1の予測ユニットのmerge_idxが0に等しいとき、ic_flagが現在スライスのコーディングユニット中に存在しないことを指定する。0に等しいslice_ic_disable_merge_zero_idx_flagは、merge_flagが1に等しく、コーディングユニットの第1の予測ユニットのmerge_idxが0に等しいとき、ic_flagが現在スライスのコーディングユニット中に存在し得ることを指定する。存在しないとき、slice_ic_disable_merge_zero_idx_flagは0に等しいと推論される。
[0185]図12は、本開示の技法による、ブロックを符号化するための例示的な方法を示すフローチャートである。説明の目的で、図12の方法についてビデオエンコーダ20に関して説明するが、他のデバイスが図12の方法を実行するように構成され得ることを理解されたい。
[0186]最初に、この例では、ビデオエンコーダ20が、現在ブロック、たとえば、現在コーディングユニット(CU)の現在予測ユニット(PU)、を受信する(250)。次いで、ビデオエンコーダ20のモード選択ユニット40が、現在ブロックのための予測モードを決定する(252)。たとえば、モード選択ユニット40は、時間インター予測、ビュー間予測、高度残差予測(ARP)、および照明補償など、様々な予測モードのためのレートひずみメトリックを決定し得る。
[0187]モード選択ユニット40が現在ブロックのための予測モードとしてARPを選択した場合(254の「はい」分岐)、ビデオエンコーダ20は現在ブロックのための非0のARP重み付け係数をシグナリングする(258)。たとえば、モード選択ユニット40は、この場合もレートひずみメトリックに基づき得る、0.5または1.0のARP重み付け係数を使用すべきかどうかを決定し得る。特に、この場合、ARP重み付け係数が非0であることにより、予測モードは、ARPであり、照明補償でないと推論され得るので、ビデオエンコーダ20は照明補償シンタックス要素(たとえば、ic_flag)をシグナリングする必要はない。
[0188]次いで、ビデオエンコーダ20は、ARPを使用して現在ブロックを予測する(260)。たとえば、動き補償ユニット44は、現在ブロックの時間動きベクトルまたは視差動きベクトルのいずれかを使用して参照ブロックを決定し得る。動き推定ユニット42は、時間動きベクトルまたは視差動きベクトルを計算し得る。動き補償ユニット44は、図9および図11に関して上記で説明したように、たとえば、(視差ベクトルによって識別される)参照ビュー中のブロックまたは(時間動きベクトルによって識別される)現在ビュー中のブロックのいずれかと、(現在ブロックの位置に対する視差ベクトルまたは視差動きベクトルと時間動きベクトルとの組合せによって示される)ベースビュー参照ブロックとの間の差として、残差予測子をさらに計算し得る。
[0189]予測モードがARPでないとき(254の「いいえ」分岐)、および予測モードが照明補償であるとき(256の「はい」分岐)、ビデオエンコーダ20は、ARP重み付け係数(WF)のための0の値、およびic_flagなどの照明補償シンタックス要素のための真の値(たとえば、1)をシグナリングし得る(262)。すなわち、ビデオエンコーダ20は、現在ブロックのために照明補償が使用されることを示す照明補償シンタックス要素のための値をシグナリングする。さらに、ビデオエンコーダ20は、照明補償を使用して現在ブロックを予測し得る(264)。すなわち、図8に関して上記で説明したように、ビデオエンコーダ20は、視差動きベクトルを使用して現在ブロックのための参照ブロックを決定し、現在ブロックに隣接するピクセル(図8中の隣接ピクセル124)と参照ブロックに隣接するピクセル(図8中の隣接ピクセル130)とに基づいて参照ブロックのピクセルを線形的に変更するために使用されるべき値を決定し得る。
[0190]予測モードがARPでないとき(254の「いいえ」分岐)、および予測モードが照明補償でないとき(256の「いいえ」分岐)、ビデオエンコーダ20は、ARP重み付け係数(WF)のための0の値、およびic_flagなどの照明補償シンタックス要素のための偽の値(たとえば、0)をシグナリングし得る(266)。すなわち、ビデオエンコーダ20は、現在ブロックのために照明補償が使用されないことを示す照明補償シンタックス要素のための値をシグナリングする。ビデオエンコーダ20は、さらに、実際の予測モードを示す1つまたは複数のシンタックス要素をシグナリングし得る(268)。代替的に、予測モードはインター予測であると推論され得、現在ブロックのためにシグナリングされる動きパラメータは、追加のシンタックス要素がシグナリングされる必要がないように、予測モードが時間インター予測であるのかビュー間予測であるのかを本質的に示し得る。さらに、ビデオエンコーダ20は、シグナリングされた(またはデフォルトの)予測モードを使用して現在ブロックをさらに予測し得る(270)。
[0191]現在ブロックを予測した後、ビデオエンコーダ20は現在ブロックのための残差ブロックを計算し得る(272)。予測されたブロックを計算するために使用されるモードにかかわらず、ビデオエンコーダ20は、現在ブロックと予測されたブロックとの間のピクセルごとの差を計算することによって残差ブロックを計算し得る。次いで、ビデオエンコーダ20は残差ブロックを変換し、量子化し、エントロピー符号化し得る(274)。より詳細には、変換処理ユニット52は、たとえば、離散コサイン変換(DCT)を使用して残差ブロックを変換し、量子化ユニット54は得られた変換係数を量子化し、エントロピー符号化ユニット56は量子化変換係数をエントロピー符号化する。もちろん、エントロピー符号化ユニット56は、他のシンタックス要素、たとえば、ARP重み付け係数および(シグナリングされる場合)照明補償シンタックス要素、ならびに現在ブロックのための動きパラメータをもエントロピー符号化し得る。
[0192]このようにして、図12の方法は、現在ブロックの高度残差予測(ARP)重み付け係数のための値を決定することと、ARP重み付け係数の値が0に等しくないとき、現在ブロックのための照明補償シンタックス要素の符号化をスキップすることと、現在ブロックを符号化することとを含む、ビデオデータを符号化する方法の例を表す。図12の例示的な方法は、ARP重み付け係数の値が0に等しいとき、現在ブロックのための照明補償シンタックス要素を符号化することと、照明補償シンタックス要素の値に少なくとも部分的に基づいて現在ブロックを符号化することとをさらに含む。
[0193]図13は、本開示の技法による、ブロックを復号するための例示的な方法を示すフローチャートである。説明の目的で、図13の方法についてビデオデコーダ30に関して説明するが、他のデバイスが図13の方法を実行するように構成され得ることを理解されたい。
[0194]最初に、ビデオデコーダ30が現在ブロックを受信する(280)。より詳細には、ビデオデコーダ30は現在ブロックのためのエントロピー符号化シンタックス要素を受信する。ビデオデコーダ30は各シンタックス要素を個々に復号し得る。ARP重み付け係数シンタックス要素に達すると、ビデオデコーダ30は、ARP重み付け係数が現在ブロックのために0の値を有するかどうかを決定し得る(282)。
[0195]ARP重み付け係数が0でない値を有する場合(282の「いいえ」分岐)、ビデオデコーダ30は、ARPが現在ブロックを予測するために使用されると決定し得る。したがって、エントロピー復号ユニット70は、この照明補償シンタックス要素がビットストリーム中に含まれないという暗示に基づいて、現在ブロックのための照明補償シンタックス要素を復号することを試みることをスキップし得る。したがって、ビデオデコーダ30は、ARPを使用して現在ブロックを予測し得る(286)。たとえば、図9および図11に関して上記で説明したように、動き補償ユニット72は、たとえば、(視差ベクトルによって識別される)参照ビュー中のブロックまたは(時間動きベクトルによって識別される)現在ビュー中のブロックのいずれかと、(現在ブロックの位置に対する視差ベクトルまたは視差動きベクトルと時間動きベクトルとの組合せによって示される)ベースビュー参照ブロックとの間の差として、残差予測子を計算し、残差予測子にARP重み付け係数を適用し得る。動き補償ユニット72はまた、視差動きベクトルまたは時間動きベクトルのいずれかを使用して現在ブロックのための予測子を計算し、現在ブロックのための予測されたブロックを生成するために予測子を(ARP重み付け係数によって変更された)残差予測子と組み合わせ得る。
[0196]しかしながら、ARP重み付け係数が0に等しい場合(282の「はい」分岐)、ビデオデコーダ30は、照明補償シンタックス要素が現在ブロックのためのビットストリーム中でシグナリングされると決定し得る。したがって、エントロピー復号ユニット70は、照明補償シンタックス要素(たとえば、ic_flag)のための値を復号し得、ビデオデコーダ30は、照明補償シンタックス要素が真の値(たとえば、1)を有するのか、偽の値(たとえば、0)を有するのかを決定し得(284)、ここで、真の値または1は、照明補償が使用されることを示し、偽または0は、照明補償が使用されないことを示すと仮定する。
[0197]照明補償シンタックス要素が真の値を有するとき(284の「はい」分岐)、ビデオデコーダ30は、照明補償を使用して現在ブロックを予測し得る(288)。すなわち、図8に関して上記で説明したように、ビデオデコーダ30は、視差動きベクトルを使用して現在ブロックのための参照ブロックを決定し、現在ブロックに隣接するピクセル(図8中の隣接ピクセル124)と参照ブロックに隣接するピクセル(図8中の隣接ピクセル130)とに基づいて参照ブロックのピクセルを線形的に変更するために使用されるべき値を決定し得る。
[0198]照明補償シンタックス要素が偽の値を有するとき(284の「いいえ」分岐)、ビデオデコーダ30は、現在ブロックのための実際の予測モードを決定し(290)、その予測モードを使用して現在ブロックを予測し得る(292)。たとえば、現在ブロックがインター予測ブロックであり、予測モードがARPでも照明補償でもないとき、ビデオデコーダ30は、予測モードが、たとえば、現在ブロックのための動きパラメータによって示される、ビュー間予測または時間インター予測のいずれかであり得る、インター予測であると推論し得る。すなわち、参照ピクチャが現在ピクチャと同じPOC値を有する場合、予測モードはビュー間予測であるが、参照ピクチャが現在ピクチャとは異なるPOC値を有する場合、予測モードは時間インター予測である。動き補償ユニット72は、現在ブロックのための動きベクトル(時間または視差)を復号し、動きベクトルを使用して現在ブロックを予測するために、動きパラメータを使用し得る。
[0199]次いで、ビデオデコーダ30は、現在ブロックのための残差ブロックを逆量子化し、逆変換し得る(294)。すなわち、逆量子化ユニット76は、残差ブロックのための変換係数を再生するために残差ブロックのためのエントロピー復号データを逆量子化し得、逆変換ユニット78は、残差ブロックを再生するために変換係数を逆変換し得る。次いで、ビデオデコーダ30は、現在ブロックを復号するために残差ブロックと予測されたブロックとを組み合わせ得る(296)。すなわち、ビデオデコーダ30は、現在ブロックを再生するために残差ブロックと予測されたブロックとの間のピクセルごとの加算を実行し得る。
[0200]このようにして、図13の方法は、現在ブロックの高度残差予測(ARP)重み付け係数のための値を決定することと、ARP重み付け係数の値が0に等しくないとき、現在ブロックのための照明補償シンタックス要素の復号をスキップすることと、現在ブロックを復号することとを含む、ビデオデータを復号する方法の例を表す。図13の方法は、ARP重み付け係数の値が0に等しいとき、現在ブロックのための照明補償シンタックス要素を復号することと、照明補償シンタックス要素の値に少なくとも部分的に基づいて現在ブロックを復号することとをさらに含む。
[0201]上記例に応じて、本明細書で説明した技法のうちのいずれかのいくつかの行為またはイベントが、異なるシーケンス中で実行され得、全体的に追加、結合、または除外され得る(たとえば、すべての説明した行為またはイベントが本技法の実施のために必要であるとは限らない)ことを認識されたい。その上、いくつかの例では、行為またはイベントは、連続的にではなく、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通して同時に実行され得る。
[0202]1つまたは複数の例において、前述の機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応する、コンピュータ可読記憶媒体を含み得るか、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的である有形コンピュータ可読記憶媒体、または(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明する技法の実装のための命令、コードおよび/またはデータ構造を取り出すために、1つまたは複数のコンピュータまたは1つまたは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
[0203]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMもしくは他の光ディスクストレージ、磁気ディスクストレージ、もしくは他の磁気記憶デバイス、フラッシュメモリ、または命令もしくはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る任意の他の媒体を備えることができる。また、任意の接続がコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用してウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)、およびBlu−rayディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
[0204]命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、あるいは他の等価な集積論理回路またはディスクリート論理回路など、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、前述の構造、または、本明細書で説明する技法の実装に好適な他の構造のいずれかを指し得る。さらに、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成された専用のハードウェアモジュールおよび/またはソフトウェアモジュール内に与えられるか、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素で十分に実装され得る。
[0205]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置で実装され得る。本開示では、開示する技法を実行するように構成されたデバイスの機能的態様を強調するために、様々な構成要素、モジュール、またはユニットについて説明したが、それらの構成要素、モジュール、またはユニットは、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。そうではなく、上記で説明したように、様々なユニットは、コーデックハードウェアユニット中で組み合わせられるか、または上記で説明した1つまたは複数のプロセッサを含む、好適なソフトウェアおよび/またはファームウェアとともに相互動作可能なハードウェアユニットの集合によって提供され得る。
[0206]様々な例について説明してきた。これらおよび他の例は以下の特許請求の範囲内に入る。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
[C1]
ビデオデータをコーディングする方法であって、前記方法は、
現在ブロックの高度残差予測(ARP)重み付け係数のための値を決定することと、
前記ARP重み付け係数の前記値が0に等しくないとき、
前記現在ブロックのための照明補償シンタックス要素のコーディングをスキップすることと、
前記現在ブロックをコーディングすることと
を備える方法。
[C2]
前記ARP重み付け係数の前記値が0に等しいとき、前記現在ブロックのための前記照明補償シンタックス要素をコーディングすることと、前記照明補償シンタックス要素の値に少なくとも部分的に基づいて前記現在ブロックをコーディングすることとをさらに備える、C1に記載の方法。
[C3]
前記照明補償シンタックス要素がic_flagシンタックス要素を備える、C2に記載の方法。
[C4]
前記照明補償シンタックス要素をコーディングすることは、前記現在ブロックのために照明補償が有効化されるかどうかを決定することと、前記現在ブロックのために照明補償が有効化されるときのみ、前記照明補償シンタックス要素をコーディングすることとを備える、C2に記載の方法。
[C5]
前記現在ブロックを含むスライスのために照明補償が有効化されるかどうかを示すスライスレベル照明補償シンタックス要素をコーディングすることをさらに備え、ここにおいて、前記現在ブロックのための前記照明補償シンタックス要素をコーディングすることは、前記スライスレベル照明補償シンタックス要素が、前記スライスのために照明補償が有効化されることを示すときのみ、前記現在ブロックのための前記照明補償シンタックス要素をコーディングすることを備える、C2に記載の方法。
[C6]
前記スライスレベル照明補償シンタックス要素がslice_ic_enable_flagを備える、C5に記載の方法。
[C7]
前記照明補償シンタックス要素をコーディングすることは、前記ARP重み付け係数が0に等しい値を有し、(a)または(b)のうちの少なくとも1つが真である場合のみ、前記照明補償シンタックス要素をコーディングすることを備え、ここで、(a)は、前記現在ブロックが、マージモードを用いてコーディングされること、および(i)または(ii)のうちの少なくとも1つであり、ここで、(i)は、前記現在ブロックを含むスライスのためのスライスヘッダ中のシンタックス要素が、現在スライスのために照明補償モードが有効化されることを示す値を有することであり、ここで、(ii)は、前記現在ブロックのためのマージインデックスが0でない値を有することであり、ここで、(b)は、前記現在ブロックが高度動きベクトル予測(AMVP)モードを用いてコーディングされること、および前記現在ブロックのための少なくとも1つの参照インデックスがビュー間参照ピクチャに対応することである、C2に記載の方法。
[C8]
前記スライスのための前記スライスヘッダ中の前記シンタックス要素がslice_ic_disable_merge_zero_idx_flagを備える、C7に記載の方法。
[C9]
前記照明補償シンタックス要素をコーディングすることは、前記現在ブロックを含む現在ピクチャがイントラランダムアクセスピクチャ(IRAP)であるとき、前記照明補償シンタックス要素をコーディングすることを備える、C2に記載の方法。
[C10]
照明補償がマルチレイヤビデオデータの少なくとも1つのレイヤのために使用されるかどうかを示す少なくとも1つのシンタックス要素をコーディングすることをさらに備える、C2に記載の方法。
[C11]
前記照明補償シンタックス要素の前記値に少なくとも部分的に基づいて前記現在ブロックをコーディングすることは、前記照明補償シンタックス要素の前記値が、前記現在ブロックが照明補償を使用してコーディングされるべきであることを示すとき、照明補償を使用して前記現在ブロックをコーディングすることを備える、C2に記載の方法。
[C12]
前記ARP重み付け係数の前記値が0に等しいとき、前記照明補償シンタックス要素の前記値に少なくとも部分的に基づいて前記現在ブロックをコーディングすることは、前記照明補償シンタックス要素の前記値が、前記現在ブロックが、照明補償を使用して、ARPを使用せずに、ARPを使用せずにコーディングされるべきでないことを示すとき、照明補償を使用せずに前記現在ブロックをコーディングすることを備える、C2に記載の方法。
[C13]
前記ARP重み付け係数の前記値を決定することより前に、
前記現在ブロックを含むスライスのためにARPが有効化されるかどうかを決定することと、
前記現在ブロックがインターコーディングされるかどうかを決定することとをさらに備え、
ここにおいて、前記ARP重み付け係数の前記値を決定することは、ARPが有効化されるとき、および前記現在ブロックがインターコーディングされるとき、前記ARP重み付け係数の前記値を決定することを備える、
C1に記載の方法。
[C14]
前記ARP重み付け係数の前記値が0に等しくないとき、前記現在ブロックをコーディングすることが、前記ARP重み付け係数の前記値に基づいてARPを使用して前記現在ブロックをコーディングすることを備える、C1に記載の方法。
[C15]
前記照明補償シンタックス要素のコーディングをスキップすることが、前記照明補償シンタックス要素の復号をスキップすることを備え、前記現在ブロックをコーディングすることが、前記現在ブロックを復号することを備える、C1に記載の方法。
[C16]
前記照明補償シンタックス要素のコーディングをスキップすることが、前記照明補償シンタックス要素のシグナリングをスキップすること備え、前記現在ブロックをコーディングすることが、前記現在ブロックを符号化することを備える、C1に記載の方法。
[C17]
ビデオデータをコーディングするためのデバイスであって、前記デバイスは、ビデオデータを記憶するように構成されたメモリと、前記ビデオデータの現在ブロックの高度残差予測(ARP)重み付け係数のための値を決定することと、前記ARP重み付け係数の前記値が0に等しくないとき、前記現在ブロックのための照明補償シンタックス要素のコーディングをスキップことと、前記ARP重み付け係数の前記値が0に等しくないとき、前記現在ブロックをコーディングすることとを行うように構成されたビデオコーダとを備えるデバイス。
[C18]
前記ビデオコーダは、前記ARP重み付け係数の前記値が0に等しいとき、前記現在ブロックのための前記照明補償シンタックス要素をコーディングすることと、前記照明補償シンタックス要素の値に少なくとも部分的に基づいて前記現在ブロックをコーディングすることとを行うようにさらに構成された、C17に記載のデバイス。
[C19]
前記照明補償シンタックス要素がic_flagシンタックス要素を備える、C18に記載のデバイス。
[C20]
前記ビデオコーダは、前記現在ブロックのために照明補償が有効化されるかどうかを決定することと、前記現在ブロックのために照明補償が有効化されるときのみ、前記照明補償シンタックス要素をコーディングすることとを行うように構成された、C18に記載のデバイス。
[C21]
前記ビデオコーダは、前記現在ブロックを含むスライスのために照明補償が有効化されるかどうかを示すスライスレベル照明補償シンタックス要素をコーディングするようにさらに構成され、前記ビデオコーダは、前記スライスレベル照明補償シンタックス要素が、前記スライスのために照明補償が有効化されることを示すときのみ、前記現在ブロックのための前記照明補償シンタックス要素をコーディングするように構成された、C18に記載のデバイス。
[C22]
前記スライスレベル照明補償シンタックス要素がslice_ic_enable_flagを備える、C21に記載のデバイス。
[C23]
前記ビデオコーダは、前記ARP重み付け係数の前記値を決定することより前に、前記現在ブロックを含むスライスのためにARPが有効化されるかどうかを決定することと、前記現在ブロックがインターコーディングされるかどうかを決定することとを行うようにさらに構成され、前記ビデオコーダは、ARPが有効化されるとき、および前記現在ブロックがインターコーディングされるとき、前記ARP重み付け係数の前記値を決定するように構成された、C17に記載のデバイス。
[C24]
ビデオデータをコーディングするためのデバイスであって、前記デバイスは、
現在ブロックの高度残差予測(ARP)重み付け係数のための値を決定するための手段と、
前記ARP重み付け係数の前記値が0に等しくないとき、前記現在ブロックのための照明補償シンタックス要素のコーディングをスキップするための手段と、
前記ARP重み付け係数の前記値が0に等しくないとき、前記現在ブロックをコーディングするための手段と
を備えるデバイス。
[C25]
命令を記憶したコンピュータ可読記憶媒体であって、前記命令は、実行されたとき、
現在ブロックの高度残差予測(ARP)重み付け係数のための値を決定することと、
前記ARP重み付け係数の前記値が0に等しくないとき、前記現在ブロックのための照明補償シンタックス要素のコーディングをスキップすることと、前記現在ブロックをコーディングすることと
をビデオデータをコーディングするためのデバイスのプロセッサに行わせる、コンピュータ可読記憶媒体。
[C26]
前記ARP重み付け係数の前記値が0に等しいとき、前記現在ブロックのための前記照明補償シンタックス要素をコーディングすることと、前記照明補償シンタックス要素の値に少なくとも部分的に基づいて前記現在ブロックをコーディングすることとを前記プロセッサに行わせる命令をさらに備える、C25に記載のコンピュータ可読記憶媒体。
[C27]
前記照明補償シンタックス要素がic_flagシンタックス要素を備える、C26に記載のコンピュータ可読記憶媒体。
[C28]
前記照明補償シンタックス要素をコーディングすることを前記プロセッサに行わせる前記命令は、前記現在ブロックのために照明補償が有効化されるかどうかを決定することと、前記現在ブロックのために照明補償が有効化されるときのみ、前記照明補償シンタックス要素をコーディングすることとを前記プロセッサに行わせる命令を備える、C26に記載のコンピュータ可読記憶媒体。
[C29]
前記現在ブロックを含むスライスのために照明補償が有効化されるかどうかを示すスライスレベル照明補償シンタックス要素をコーディングすることを前記プロセッサに行わせる命令をさらに備え、ここにおいて、前記現在ブロックのための前記照明補償シンタックス要素をコーディングすることを前記プロセッサに行わせる前記命令は、前記スライスレベル照明補償シンタックス要素が、前記スライスのために照明補償が有効化されることを示すときのみ、前記現在ブロックのための前記照明補償シンタックス要素をコーディングすることを前記プロセッサに行わせる命令を備える、C26に記載のコンピュータ可読記憶媒体。
[C30]
前記ARP重み付け係数の前記値を決定することより前に、
前記現在ブロックを含むスライスのためにARPが有効化されるかどうかを決定することと、
前記現在ブロックがインターコーディングされるかどうかを決定することと
を前記プロセッサに行わせる命令をさらに備え、
ここにおいて、前記ARP重み付け係数の前記値を決定することを前記プロセッサに行わせる前記命令は、ARPが有効化されるとき、および前記現在ブロックがインターコーディングされるとき、前記ARP重み付け係数の前記値を決定することを前記プロセッサに行わせる命令を備える、
C25に記載のコンピュータ可読記憶媒体。