(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-12-27
(54)【発明の名称】重複ブロック動き補償
(51)【国際特許分類】
H04N 19/105 20140101AFI20231220BHJP
H04N 19/139 20140101ALI20231220BHJP
H04N 19/176 20140101ALI20231220BHJP
H04N 19/159 20140101ALI20231220BHJP
【FI】
H04N19/105
H04N19/139
H04N19/176
H04N19/159
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023534183
(86)(22)【出願日】2021-11-24
(85)【翻訳文提出日】2023-06-05
(86)【国際出願番号】 US2021072601
(87)【国際公開番号】W WO2022140724
(87)【国際公開日】2022-06-30
(32)【優先日】2020-12-22
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-11-23
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】595020643
【氏名又は名称】クゥアルコム・インコーポレイテッド
【氏名又は名称原語表記】QUALCOMM INCORPORATED
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】チャン、ヤオ-ジェン
(72)【発明者】
【氏名】リ、ジンヤー
(72)【発明者】
【氏名】セレジン、バディム
(72)【発明者】
【氏名】カルチェビチ、マルタ
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159LC09
5C159MA04
5C159MA05
5C159MA19
5C159MA21
5C159MC11
5C159ME01
5C159NN11
5C159NN21
5C159RC12
5C159RC38
5C159TA25
5C159TB08
5C159TC12
5C159TC27
5C159TC42
5C159TD12
5C159UA02
5C159UA05
5C159UA22
(57)【要約】
重複ブロック動き補償(OBMC)のためのシステムおよび技法が提供される。方法は、OBMCモードがビデオデータの現在のサブブロックのために有効にされると決定することと、現在のサブブロックに隣接する(1つまたは複数の)近隣サブブロックについて、第1の条件、第2の条件、および第3の条件が満たされるかどうかを決定することと、第1の条件が、現在のサブブロックを予測するためのすべての参照ピクチャリストが、近隣サブブロックを予測するために使用されることを備え、第2の条件が、同一の参照ピクチャが、現在のサブブロックと近隣サブブロックとに関連する動きベクトルを決定するために使用されることを備え、第3の条件が、現在のサブブロックの動きベクトルと近隣サブブロックの動きベクトルとの間の差分が、しきい値を超えないことを備え、OBMCモードが有効にされ、第1の条件、第2の条件、および第3の条件が満たされると決定することに基づいて、現在のサブブロックの動き補償のために近隣サブブロックの動き情報を使用しないことを決定することとを含むことができる。
【特許請求の範囲】
【請求項1】
ビデオデータを処理するための装置であって、
メモリと、
前記メモリに結合された1つまたは複数のプロセッサと
を備え、前記1つまたは複数のプロセッサは、
重複ブロック動き補償(OBMC)モードがビデオデータのブロックの現在のサブブロックのために有効にされると決定することと、
前記現在のサブブロックに隣接する少なくとも1つの近隣サブブロックについて、
第1の条件、第2の条件、および第3の条件が満たされるかどうかを決定することと、
前記第1の条件が、前記現在のサブブロックを予測するための1つまたは複数の参照ピクチャリストのすべてが、前記近隣サブブロックを予測するために使用されることを備え、
前記第2の条件が、同一の1つまたは複数の参照ピクチャが、前記現在のサブブロックと前記近隣サブブロックとに関連する動きベクトルを決定するために使用されることを備え、
前記第3の条件が、前記現在のサブブロックの水平動きベクトルと前記近隣サブブロックの水平動きベクトルとの間の第1の差分と、前記現在のサブブロックの垂直動きベクトルと前記近隣サブブロックの垂直動きベクトルとの間の第2の差分とが、動きベクトル差分しきい値を超えないことを備え、ここにおいて、前記動きベクトル差分しきい値が0よりも大きい、
前記OBMCモードが前記現在のサブブロックのために有効にされると決定することと、前記第1の条件、前記第2の条件、および前記第3の条件が満たされると決定することとに基づいて、前記現在のサブブロックの動き補償のために前記近隣サブブロックの動き情報を使用しないことを決定することと
を行うように構成された、装置。
【請求項2】
前記1つまたは複数のプロセッサが、
前記現在のサブブロックのためにデコーダ側動きベクトル改良(DMVR)モード、サブブロックベース時間動きベクトル予測(SbTMVP)モード、またはアフィン動き補償予測モードを使用するという決定に基づいて、前記現在のサブブロックのためにサブブロック境界OBMCモードを実施することを決定すること
を行うように構成された、請求項1に記載の装置。
【請求項3】
前記現在のサブブロックのために前記サブブロック境界OBMCモードを実施するために、前記1つまたは複数のプロセッサが、
前記現在のサブブロックに関連する第1の予測と、前記現在のサブブロックの上ボーダーに隣接する第1のOBMCブロックに関連する第2の予測と、前記現在のサブブロックの左ボーダーに隣接する第2のOBMCブロックに関連する第3の予測と、前記現在のサブブロックの下ボーダーに隣接する第3のOBMCブロックに関連する第4の予測と、前記現在のサブブロックの右ボーダーに隣接する第4のOBMCブロックに関連する第5の予測とを決定することと、
第1の重みを前記第1の予測に適用し、第2の重みを前記第2の予測に適用し、第3の重みを前記第3の予測に適用し、第4の重みを前記第4の予測に適用し、第5の重みを前記第5の予測に適用したことの結果に基づいて、第6の予測を決定することと、
前記第6の予測に基づいて、前記現在のサブブロックに対応するブレンドされたサブブロックを生成することと
を行うように構成された、請求項2に記載の装置。
【請求項4】
前記第2の重み、前記第3の重み、前記第4の重み、および前記第5の重みの各々が、前記現在のサブブロックの対応するサブブロックからの1つまたは複数のサンプルに関連する1つまたは複数の重み値を備え、ここにおいて、前記現在のサブブロックのコーナーサンプルの重み値の和が、前記現在のサブブロックの他の境界サンプルの重み値の和よりも大きい、請求項3に記載の装置。
【請求項5】
前記現在のサブブロックの前記他の境界サンプルの重み値の前記和が、前記現在のサブブロックの非境界サンプルの重み値の和よりも大きい、請求項4に記載の装置。
【請求項6】
前記1つまたは複数のプロセッサが、
ビデオデータの追加のブロックのために局所照明補償(LIC)モードを使用することを決定することと、
前記追加のブロックのために前記LICモードを使用するという決定に基づいて、前記追加のブロックのためのOBMCモードに関連する情報のシグナリングをスキップすることと
を行うように構成された、請求項1に記載の装置。
【請求項7】
前記追加のブロックのための前記OBMCモードに関連する情報のシグナリングをスキップするために、前記1つまたは複数のプロセッサが、
空の値をもつシンタックスフラグをシグナリングすること
を行うように構成され、前記シンタックスフラグが前記OBMCモードに関連する、請求項6に記載の装置。
【請求項8】
前記1つまたは複数のプロセッサが、
空の値をもつシンタックスフラグを含む信号を受信すること
を行うように構成され、前記シンタックスフラグが、ビデオデータの追加のブロックのためのOBMCモードに関連する、請求項6に記載の装置。
【請求項9】
前記1つまたは複数のプロセッサが、
前記空の値をもつ前記シンタックスフラグに基づいて、前記追加のブロックのために前記OBMCモードを使用しないことを決定すること
を行うように構成された、請求項8に記載の装置。
【請求項10】
前記追加のブロックのための前記OBMCモードに関連する情報のシグナリングをスキップするために、前記1つまたは複数のプロセッサが、
前記追加のブロックのために前記LICモードを使用するという前記決定に基づいて、前記追加のブロックのためにOBMCモードを使用しないまたは有効にしないことを決定することと、
前記追加のブロックのための前記OBMCモードに関連する値をシグナリングすることをスキップすることと
を行うように構成された、請求項6に記載の装置。
【請求項11】
前記1つまたは複数のプロセッサは、
前記OBMCモードが前記追加のブロックのために有効にされるかどうかを決定することと、
前記OBMCモードが前記追加のブロックのために有効にされるかどうかを決定すること、および前記追加のブロックのために前記LICモードを使用するという前記決定に基づいて、前記追加のブロックのための前記OBMCモードに関連する情報をシグナリングすることをスキップすることを決定することと
を行うように構成された、請求項6に記載の装置。
【請求項12】
前記1つまたは複数のプロセッサが、
ビデオデータの前記ブロックの前記現在のサブブロックのためにコーディングユニット(CU)境界OBMCモードを使用することを決定することと、
前記現在のサブブロックに関連する重みを、前記現在のサブブロックに関連するそれぞれの予測に適用したことの第1の結果と、1つまたは複数のそれぞれの重みを、前記現在のサブブロックに隣接する1つまたは複数のサブブロックに関連する1つまたは複数のそれぞれの予測に適用したことの第2の結果との和に基づいて、前記現在のサブブロックについての最終予測を決定することと
を行うように構成された、請求項1に記載の装置。
【請求項13】
前記現在のサブブロックの動き補償のために前記近隣サブブロックの動き情報を使用しないことを決定するために、前記1つまたは複数のプロセッサが、
前記現在のサブブロックの動き補償のための前記近隣サブブロックの動き情報の使用をスキップすること
を行うように構成された、請求項1に記載の装置。
【請求項14】
前記装置がデコーダを含む、請求項1に記載の装置。
【請求項15】
前記ビデオデータに関連する1つまたは複数の出力ピクチャを表示するように構成されたディスプレイをさらに備える、請求項14に記載の装置。
【請求項16】
前記OBMCモードがサブブロック境界OBMCモードを備える、請求項1に記載の装置。
【請求項17】
前記装置がエンコーダを含む、請求項1に記載の装置。
【請求項18】
前記ビデオデータに関連するピクチャをキャプチャするように構成されたカメラをさらに備える、請求項17に記載の装置。
【請求項19】
前記装置がモバイルデバイスである、請求項1に記載の装置。
【請求項20】
ビデオデータを処理するための方法であって、
重複ブロック動き補償(OBMC)モードがビデオデータのブロックの現在のサブブロックのために有効にされると決定することと、
前記現在のサブブロックに隣接する少なくとも1つの近隣サブブロックについて、第1の条件、第2の条件、および第3の条件が満たされるかどうかを決定することと、
前記第1の条件が、前記現在のサブブロックを予測するための1つまたは複数の参照ピクチャリストのすべてが、前記近隣サブブロックを予測するために使用されることを備え、
前記第2の条件が、同一の1つまたは複数の参照ピクチャが、前記現在のサブブロックと前記近隣サブブロックとに関連する動きベクトルを決定するために使用されることを備え、
前記第3の条件が、前記現在のサブブロックの水平動きベクトルと前記近隣サブブロックの水平動きベクトルとの間の第1の差分と、前記現在のサブブロックの垂直動きベクトルと前記近隣サブブロックの垂直動きベクトルとの間の第2の差分とが、動きベクトル差分しきい値を超えないことを備え、ここにおいて、前記動きベクトル差分しきい値が0よりも大きい、
前記現在のサブブロックのために前記OBMCモードを使用することを決定することと、前記第1の条件、前記第2の条件、および前記第3の条件が満たされると決定することとに基づいて、前記現在のサブブロックの動き補償のために前記近隣サブブロックの動き情報を使用しないことを決定することと
を備える、方法。
【請求項21】
前記現在のサブブロックのためにデコーダ側動きベクトル改良(DMVR)モード、サブブロックベース時間動きベクトル予測(SbTMVP)モード、またはアフィン動き補償予測モードを使用するという決定に基づいて、前記現在のサブブロックのためにサブブロック境界OBMCモードを実施することを決定すること
をさらに備える、請求項20に記載の方法。
【請求項22】
前記現在のサブブロックのために前記サブブロック境界OBMCモードを実施することが、
前記現在のサブブロックに関連する第1の予測と、前記現在のサブブロックの上ボーダーに隣接する第1のOBMCブロックに関連する第2の予測と、前記現在のサブブロックの左ボーダーに隣接する第2のOBMCブロックに関連する第3の予測と、前記現在のサブブロックの下ボーダーに隣接する第3のOBMCブロックに関連する第4の予測と、前記現在のサブブロックの右ボーダーに隣接する第4のOBMCブロックに関連する第5の予測とを決定することと、
第1の重みを前記第1の予測に適用し、第2の重みを前記第2の予測に適用し、第3の重みを前記第3の予測に適用し、第4の重みを前記第4の予測に適用し、第5の重みを前記第5の予測に適用したことの結果に基づいて、第6の予測を決定することと、
前記第6の予測に基づいて、前記現在のサブブロックに対応するブレンドされたサブブロックを生成することと
を備える、請求項21に記載の方法。
【請求項23】
前記第2の重み、前記第3の重み、前記第4の重み、および前記第5の重みの各々が、前記現在のサブブロックの対応するサブブロックからの1つまたは複数のサンプルに関連する1つまたは複数の重み値を備え、ここにおいて、前記現在のサブブロックのコーナーサンプルの重み値の和が、前記現在のサブブロックの他の境界サンプルの重み値の和よりも大きい、請求項22に記載の方法。
【請求項24】
前記現在のサブブロックの前記他の境界サンプルの重み値の前記和が、前記現在のサブブロックの非境界サンプルの重み値の和よりも大きい、請求項23に記載の方法。
【請求項25】
ビデオデータの追加のブロックのために局所照明補償(LIC)モードを使用することを決定することと、
前記追加のブロックのために前記LICモードを使用するという決定に基づいて、前記追加のブロックのためのOBMCモードに関連する情報のシグナリングをスキップすることと
をさらに備える、請求項20に記載の方法。
【請求項26】
前記追加のブロックのための前記OBMCモードに関連する情報のシグナリングをスキップすることが、
空の値をもつシンタックスフラグをシグナリングすること
を備え、前記シンタックスフラグが前記OBMCモードに関連する、請求項25に記載の方法。
【請求項27】
空の値をもつシンタックスフラグを含む信号を受信すること
をさらに備え、前記シンタックスフラグが、ビデオデータの追加のブロックのためのOBMCモードに関連する、請求項25に記載の方法。
【請求項28】
前記空の値をもつ前記シンタックスフラグに基づいて、前記追加のブロックのために前記OBMCモードを使用しないことを決定すること
をさらに備える、請求項27に記載の方法。
【請求項29】
前記追加のブロックのための前記OBMCモードに関連する情報のシグナリングをスキップすることが、
前記追加のブロックのために前記LICモードを使用するという前記決定に基づいて、前記追加のブロックのためにOBMCモードを使用しないまたは有効にしないことを決定することと、
前記追加のブロックのための前記OBMCモードに関連する値をシグナリングすることをスキップすることと
を備える、請求項25に記載の方法。
【請求項30】
前記OBMCモードが前記追加のブロックのために有効にされるかどうかを決定することと、
前記OBMCモードが前記追加のブロックのために有効にされるかどうかを決定すること、および前記追加のブロックのために前記LICモードを使用するという前記決定に基づいて、前記追加のブロックのための前記OBMCモードに関連する情報をシグナリングすることをスキップすることを決定することと
をさらに備える、請求項25に記載の方法。
【請求項31】
ビデオデータの前記ブロックの前記現在のサブブロックのためにコーディングユニット(CU)境界OBMCモードを使用することを決定することと、
前記現在のサブブロックに関連する重みを、前記現在のサブブロックに関連するそれぞれの予測に適用したことの第1の結果と、1つまたは複数のそれぞれの重みを、前記現在のサブブロックに隣接する1つまたは複数のサブブロックに関連する1つまたは複数のそれぞれの予測に適用したことの第2の結果との和に基づいて、前記現在のサブブロックについての最終予測を決定することと
をさらに備える、請求項20に記載の方法。
【請求項32】
前記現在のサブブロックの動き補償のために前記近隣サブブロックの動き情報を使用しないことを決定することが、
前記現在のサブブロックの動き補償のための前記近隣サブブロックの動き情報の使用をスキップすること
を備える、請求項20に記載の方法。
【請求項33】
前記OBMCモードがサブブロック境界OBMCモードを備える、請求項20に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
[0001] 本出願は、一般に、ビデオ符号化および復号(video encoding and decoding)に関する。たとえば、本開示の態様は、重複ブロック動き補償(overlapped block motion compensation)を実施するためのシステムおよび技法に関する。
【背景技術】
【0002】
[0002] デジタルビデオ能力は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダー、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲーミングデバイス、ビデオゲームコンソール、セルラー電話または衛星無線電話、いわゆる「スマートフォン」、ビデオ遠隔会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲のデバイスに組み込まれ得る。そのようなデバイスは、ビデオデータ(video data)が消費のために処理および出力されることを可能にする。デジタルビデオデータは、消費者およびビデオプロバイダの需要を満たすための大量のデータを含む。たとえば、ビデオデータの消費者は、高い忠実度、解像度、フレームレートなどを伴う、最高の品質のビデオを望む。その結果、これらの需要を満たすために必要とされる大量のビデオデータは、ビデオデータを処理および記憶する通信ネットワークおよびデバイスに負担をかける。
【0003】
[0003] デジタルビデオデバイスは、ビデオデータを圧縮するためのビデオコーディング技法を実装することができる。ビデオコーディングは、1つまたは複数のビデオコーディング規格またはフォーマットに従って実施され得る。たとえば、ビデオコーディング規格またはフォーマットは、特に、汎用ビデオコーディング(VVC)、高効率ビデオコーディング(HEVC)、アドバンストビデオコーディング(AVC)、MPEG2パート2コーディング(MPEGはムービングピクチャエクスパーツグループを表す)、ならびにAlliance for Open Mediaによって開発されたAOMedia Video1(AV1)などのプロプライエタリビデオコーデック/フォーマットを含む。ビデオコーディングは、概してビデオ画像またはシーケンス中に存在する冗長を利用する予測方法(たとえば、インター予測、イントラ予測など)を利用する。ビデオコーディング技法の目標は、ビデオ品質に対する劣化を回避するかまたは最小限に抑えながら、より低いビットレートを使用する形式にビデオデータを圧縮することである。常に発展しつつあるビデオサービスが利用可能になるとともに、より良いコーディング効率をもつコーディング技法が必要とされる。
【発明の概要】
【0004】
[0004] 重複ブロック動き補償(OBMC:overlapped block motion compensation)を実施するためのシステム、方法、およびコンピュータ可読媒体が開示される。少なくとも1つの例によれば、OBMCを実施するための方法が提供される。例示的な方法は、重複ブロック動き補償(OBMC)モード(mode)がビデオデータのブロック(block)の現在のサブブロック(current subblock)のために有効にされると決定することと、現在のサブブロックに隣接する少なくとも1つの近隣サブブロック(neighboring subblock)について、第1の条件(first condition)、第2の条件(second condition)、および第3の条件(third condition)が満たされるかどうかを決定することと、第1の条件が、現在のサブブロックを予測する(predict)ための1つまたは複数の参照ピクチャリスト(reference picture list)のすべてが、近隣サブブロックを予測するために使用されることを備え、第2の条件が、同一の1つまたは複数の参照ピクチャ(reference picture)が、現在のサブブロックと近隣サブブロックとに関連する動きベクトル(motion vector)を決定するために使用されることを備え、第3の条件が、現在のサブブロックの水平動きベクトル(horizontal motion vector)と近隣サブブロックの水平動きベクトルとの間の第1の差分(first difference)と、現在のサブブロックの垂直動きベクトル(vertical motion vector)と近隣サブブロックの垂直動きベクトルとの間の第2の差分(second difference)とが、動きベクトル差分しきい値(motion vector difference threshold)を超えないことを備え、ここにおいて、動きベクトル差分しきい値が0よりも大きい、現在のサブブロックのためにOBMCモードを使用することを決定することと、第1の条件、第2の条件、および第3の条件が満たされると決定することとに基づいて、現在のサブブロックの動き補償(motion compensation)のために近隣サブブロックの動き情報(motion information)を使用しないことを決定することとを含むことができる。
【0005】
[0005] 少なくとも1つの例によれば、OBMCのための非一時的コンピュータ可読媒体が提供される。例示的な非一時的コンピュータ可読媒体は、1つまたは複数のプロセッサによって実行されたとき、1つまたは複数のプロセッサ(processor)に、重複ブロック動き補償(OBMC)モードがビデオデータのブロックの現在のサブブロックのために有効にされると決定することと、現在のサブブロックに隣接する少なくとも1つの近隣サブブロックについて、第1の条件、第2の条件、および第3の条件が満たされるかどうかを決定することと、第1の条件が、現在のサブブロックを予測するための1つまたは複数の参照ピクチャリストのすべてが、近隣サブブロックを予測するために使用されることを備え、第2の条件が、同一の1つまたは複数の参照ピクチャが、現在のサブブロックと近隣サブブロックとに関連する動きベクトルを決定するために使用されることを備え、第3の条件が、現在のサブブロックの水平動きベクトルと近隣サブブロックの水平動きベクトルとの間の第1の差分と、現在のサブブロックの垂直動きベクトルと近隣サブブロックの垂直動きベクトルとの間の第2の差分とが、動きベクトル差分しきい値を超えないことを備え、ここにおいて、動きベクトル差分しきい値が0よりも大きい、現在のサブブロックのためにOBMCモードを使用することを決定することと、第1の条件、第2の条件、および第3の条件が満たされると決定することとに基づいて、現在のサブブロックの動き補償のために近隣サブブロックの動き情報を使用しないことを決定することとを行わせる命令を含むことができる。
【0006】
[0006] 少なくとも1つの例によれば、OBMCのための装置(apparatus)が提供される。例示的な装置は、メモリ(memory)と、メモリに結合された1つまたは複数のプロセッサとを含むことができ、1つまたは複数のプロセッサは、重複ブロック動き補償(OBMC)モードがビデオデータのブロックの現在のサブブロックのために有効にされると決定することと、現在のサブブロックに隣接する少なくとも1つの近隣サブブロックについて、第1の条件、第2の条件、および第3の条件が満たされるかどうかを決定することと、第1の条件が、現在のサブブロックを予測するための1つまたは複数の参照ピクチャリストのすべてが、近隣サブブロックを予測するために使用されることを備え、第2の条件が、同一の1つまたは複数の参照ピクチャが、現在のサブブロックと近隣サブブロックとに関連する動きベクトルを決定するために使用されることを備え、第3の条件が、現在のサブブロックの水平動きベクトルと近隣サブブロックの水平動きベクトルとの間の第1の差分と、現在のサブブロックの垂直動きベクトルと近隣サブブロックの垂直動きベクトルとの間の第2の差分とが、動きベクトル差分しきい値を超えないことを備え、ここにおいて、動きベクトル差分しきい値が0よりも大きい、現在のサブブロックのためにOBMCモードを使用することを決定することと、第1の条件、第2の条件、および第3の条件が満たされると決定することとに基づいて、現在のサブブロックの動き補償のために近隣サブブロックの動き情報を使用しないことを決定することとを行うように構成される。
【0007】
[0007] 少なくとも1つの例によれば、OBMCのための別の装置が提供される。例示的な装置は、重複ブロック動き補償(OBMC)モードがビデオデータのブロックの現在のサブブロックのために有効にされると決定することと、現在のサブブロックに隣接する少なくとも1つの近隣サブブロックについて、第1の条件、第2の条件、および第3の条件が満たされるかどうかを決定することと、第1の条件が、現在のサブブロックを予測するための1つまたは複数の参照ピクチャリストのすべてが、近隣サブブロックを予測するために使用されることを備え、第2の条件が、同一の1つまたは複数の参照ピクチャが、現在のサブブロックと近隣サブブロックとに関連する動きベクトルを決定するために使用されることを備え、第3の条件が、現在のサブブロックの水平動きベクトルと近隣サブブロックの水平動きベクトルとの間の第1の差分と、現在のサブブロックの垂直動きベクトルと近隣サブブロックの垂直動きベクトルとの間の第2の差分とが、動きベクトル差分しきい値を超えないことを備え、ここにおいて、動きベクトル差分しきい値が0よりも大きい、現在のサブブロックのためにOBMCモードを使用することを決定することと、第1の条件、第2の条件、および第3の条件が満たされると決定することとに基づいて、現在のサブブロックの動き補償のために近隣サブブロックの動き情報を使用しないことを決定することとを行うための手段を含むことができる。
【0008】
[0008] いくつかの態様では、上記で説明された方法、非一時的コンピュータ可読媒体、および装置は、現在のサブブロックのためにデコーダ側動きベクトル改良(DMVR:decoder side motion vector refinement)モード、サブブロックベース時間動きベクトル予測(SbTMVP:subblock-based temporal motion vector prediction)モード、またはアフィン動き補償予測モード(affine motion compensation prediction mode)を使用するという決定に基づいて、現在のサブブロックのためにサブブロック境界OBMCモード(subblock-boundary OBMC mode)を実施することを決定することを含むことができる。
【0009】
[0009] いくつかの場合には、現在のサブブロックのためにサブブロック境界OBMCモードを実施することは、現在のサブブロックに関連する第1の予測(first prediction)と、現在のサブブロックの上ボーダー(top border)に隣接する第1のOBMCブロック(first OBMC block)に関連する第2の予測(second prediction)と、現在のサブブロックの左ボーダー(left border)に隣接する第2のOBMCブロック(second OBMC block)に関連する第3の予測(third prediction)と、現在のサブブロックの下ボーダー(bottom border)に隣接する第3のOBMCブロック(third OBMC block)に関連する第4の予測(fourth prediction)と、現在のサブブロックの右ボーダー(right border)に隣接する第4のOBMCブロック(fourth OBMC block)に関連する第5の予測(fifth prediction)とを決定することと、第1の重み(first weight)を第1の予測に適用し、第2の重み(second weight)を第2の予測に適用し、第3の重み(third weight)を第3の予測に適用し、第4の重み(fourth weight)を第4の予測に適用し、第5の重み(fifth weight)を第5の予測に適用したことの結果(result)に基づいて、第6の予測(sixth prediction)を決定することと、第6の予測に基づいて、現在のサブブロックに対応するブレンドされたサブブロック(blended subblock)を生成する(generate)こととを含むことができる。
【0010】
[0010] いくつかの例では、第2の重み、第3の重み、第4の重み、および第5の重みの各々は、現在のサブブロックの対応するサブブロックからの1つまたは複数のサンプルに関連する1つまたは複数の重み値(weight value)を含むことができる。いくつかの場合には、現在のサブブロックのコーナーサンプル(corner sample)の重み値の和(sum)が、現在のサブブロックの他の境界サンプル(other boundary sample)の重み値の和よりも大きい。いくつかの例では、現在のサブブロックの他の境界サンプルの重み値の和は、現在のサブブロックの非境界サンプル(non-boundary sample)の重み値の和よりも大きい。
【0011】
[0011] いくつかの態様では、上記で説明された方法、非一時的コンピュータ可読媒体、および装置は、ビデオデータの追加のブロック(additional block)のために局所照明補償(LIC:local illumination compensation)モードを使用することを決定することと、追加のブロックのためにLICモードを使用するという決定に基づいて、追加のブロックのためのOBMCモードに関連する情報(information)のシグナリング(signaling)をスキップする(skip)こととを含むことができる。
【0012】
[0012] いくつかの場合には、追加のブロックのためのOBMCモードに関連する情報のシグナリングをスキップすることは、空の値(empty value)をもつシンタックスフラグ(syntax flag)をシグナリングすることを含むことができ、シンタックスフラグはOBMCモードに関連する。
【0013】
[0013] いくつかの態様では、上記で説明された方法、非一時的コンピュータ可読媒体、および装置は、空の値をもつシンタックスフラグを含む信号(signal)を受信することを含むことができ、シンタックスフラグは、ビデオデータの追加のブロックのためのOBMCモードに関連する。いくつかの態様では、上記で説明された方法、非一時的コンピュータ可読媒体、および装置は、空の値をもつシンタックスフラグに基づいて、追加のブロックのためにOBMCモードを使用しないことを決定することを含むことができる。
【0014】
[0014] いくつかの例では、追加のブロックのためのOBMCモードに関連する情報のシグナリングをスキップすることは、追加のブロックのためにLICモードを使用するという決定に基づいて、追加のブロックのためにOBMCモードを使用しないまたは有効にしないことを決定することと、追加のブロックのためのOBMCモードに関連する値をシグナリングすることをスキップすることとを含むことができる。
【0015】
[0015] いくつかの態様では、上記で説明された方法、非一時的コンピュータ可読媒体、および装置は、OBMCモードが追加のブロックのために有効にされるかどうかを決定することと、OBMCモードが追加のブロックのために有効にされるかどうかを決定すること、および追加のブロックのためにLICモードを使用するという決定に基づいて、追加のブロックのためのOBMCモードに関連する情報をシグナリングすることをスキップすることを決定することとを含むことができる。
【0016】
[0016] いくつかの態様では、上記で説明された方法、非一時的コンピュータ可読媒体、および装置は、ビデオデータのブロックの現在のサブブロックのためにコーディングユニット(CU)境界OBMCモード(coding unit (CU)-boundary OBMC mode)を使用することを決定することと、現在のサブブロックに関連する重みを、現在のサブブロックに関連するそれぞれの予測(respective prediction)に適用したことの第1の結果(first result)と、1つまたは複数のそれぞれの重みを、現在のサブブロックに隣接する1つまたは複数のサブブロックに関連する1つまたは複数のそれぞれの予測に適用したことの第2の結果(second result)との和に基づいて、現在のサブブロックについての最終予測(final prediction)を決定することとを含むことができる。
【0017】
[0017] いくつかの例では、現在のサブブロックの動き補償のために近隣サブブロックの動き情報を使用しないことを決定することは、現在のサブブロックの動き補償のための近隣サブブロックの動き情報の使用(use)をスキップすることを含むことができる。
【0018】
[0018] いくつかの例では、OBMCモードは、サブブロック境界OBMCモードを含むことができる。
【0019】
[0019] いくつかの態様では、上記で説明された装置のうちの1つまたは複数は、モバイルデバイス(mobile device)、カメラデバイス、エンコーダ(encoder)、デコーダ(decoder)、モノのインターネット(IoT)デバイス、および/またはエクステンデッドリアリティ(XR)デバイス(たとえば、仮想現実(VR)デバイス、拡張現実(AR)デバイス、または複合現実(MR)デバイス)の一部であるか、それらの一部であり得るか、またはそれらを含むことができる。いくつかの態様では、装置はカメラデバイスを含む。いくつかの例では、装置は、車両、モバイルデバイス(たとえば、携帯電話またはいわゆる「スマートフォン」または他のモバイルデバイス)、ウェアラブルデバイス、パーソナルコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバコンピュータ、ロボティクスデバイスまたはシステム、航空システム、あるいは他のデバイスを含むか、またはそれらの一部であり得る。いくつかの態様では、装置は、1つまたは複数の画像をキャプチャする(capture)ための画像センサー(たとえば、カメラ(camera))または複数の画像センサー(たとえば、複数のカメラ)を含む。いくつかの態様では、装置は、1つまたは複数の画像、通知、および/または他の表示可能なデータを表示するための1つまたは複数のディスプレイ(display)を含む。いくつかの態様では、装置は、1つまたは複数のスピーカー、1つまたは複数の発光デバイス、および/または1つまたは複数のマイクロフォンを含む。いくつかの態様では、上記で説明された装置は、1つまたは複数のセンサーを含むことができる。
【0020】
[0020] 本概要は、特許請求される主題の重要な特徴または必須の特徴を識別するようには意図されておらず、特許請求される主題の範囲を決定するために別個に使用されるようにも意図されていない。主題は、本特許の明細書全体、いずれかまたはすべての図面、および各請求項の適切な部分を参照することによって理解されたい。
【0021】
[0021] 前述の内容は、他の特徴および実施形態とともに、以下の明細書、特許請求の範囲、および添付の図面を参照すれば、より明らかになるであろう。
【0022】
[0022] 本開示の様々な利点および特徴が取得され得る方式について説明するために、上記で説明された原則のより詳細な説明が、添付の図面に示されるそれらの特定の実施形態を参照して表現されることになる。これらの図面が、本開示の例示的な実施形態を示すにすぎず、それの範囲を限定するものと見なされるべきではないことを理解して、本明細書の原理が、図面の使用によって追加の特異性および詳細とともに説明および解説される。
【図面の簡単な説明】
【0023】
【
図1】[0023] 本開示のいくつかの例による、符号化デバイスおよび復号デバイスの一例を示すブロック図。
【
図2A】[0024] 本開示のいくつかの例による、マージモードのための例示的な空間近隣動きベクトル候補を示す概念図。
【
図2B】[0025] 本開示のいくつかの例による、高度動きベクトル予測(AMVP:advanced motion vector prediction)モードのための例示的な空間近隣動きベクトル候補を示す概念図。
【
図3A】[0026] 本開示のいくつかの例による、例示的な時間動きベクトル予測子(TMVP)候補を示す概念図。
【
図3B】[0027] 本開示のいくつかの例による、動きベクトルスケーリングの一例を示す概念図。
【
図4A】[0028] 本開示のいくつかの例による、現在のコーディングユニットのための動き補償パラメータを推定するために使用される現在のコーディングユニットの近隣サンプルの一例を示す概念図。
【
図4B】[0029] 本開示のいくつかの例による、現在のコーディングユニットのための動き補償パラメータを推定するために使用される参照ブロックの近隣サンプルの一例を示す概念図。
【
図5】[0030] 本開示のいくつかの例による、コーディングユニット境界重複ブロック動き補償(OBMC)モードのためのOBMCブレンディングの一例を示す図。
【
図6】[0031] 本開示のいくつかの例による、サブブロック境界重複ブロック動き補償(OBMC)モードのためのOBMCブレンディングの一例を示す図。
【
図7】[0032] 本開示のいくつかの例による、重複ブロック動き補償のために使用される重複ブロック動き補償サブブロックからの重み付けファクタ(weighting factor)の和の例を示す表。
【
図8】本開示のいくつかの例による、重複ブロック動き補償のために使用される重複ブロック動き補償サブブロックからの重み付けファクタの和の例を示す表。
【
図9】[0033] 本開示のいくつかの例による、ビデオデータのブロック中のサブブロックをもつ例示的なコーディングユニットを示す図。
【
図10】[0034] 本開示のいくつかの例による、重複ブロック動き補償を実施するための例示的なプロセスを示すフローチャート。
【
図11】[0035] 本開示のいくつかの例による、重複ブロック動き補償を実施するための別の例示的なプロセスを示すフローチャート。
【
図12】[0036] 本開示のいくつかの例による、例示的なビデオ符号化デバイスを示すブロック図。
【
図13】[0037] 本開示のいくつかの例による、例示的なビデオ復号デバイスを示すブロック図。
【発明を実施するための形態】
【0024】
[0038] 本開示のいくつかの態様および実施形態が以下で提供される。当業者に明らかであるように、これらの態様および実施形態のうちのいくつかは独立して適用され得、それらのうちのいくつかは組み合わせて適用され得る。以下の説明では、説明の目的で、本出願の実施形態の完全な理解を提供するために具体的な詳細が記載される。ただし、様々な実施形態は、これらの具体的な詳細なしに実施され得ることが明らかであろう。図および説明は限定するものではない。
【0025】
[0039] 以下の説明は、例示的な実施形態を提供するにすぎず、本開示の範囲、適用可能性、または構成を限定するものではない。そうではなく、例示的な実施形態の以下の説明は、例示的な実施形態を実装することを可能にする説明を当業者に提供する。添付の特許請求の範囲に記載されるように、本出願の範囲から逸脱することなく、要素の機能および構成において様々な変更が行われ得ることを理解されたい。
【0026】
[0040] ビデオコーディングにおいて使用されるビデオ圧縮技法は、ビデオシーケンスに固有の冗長を低減または除去するために、空間予測(たとえば、イントラフレーム予測またはイントラ予測)、時間予測(たとえば、インターフレーム予測またはインター予測)、(ビデオデータの異なるレイヤにわたる)レイヤ間予測、および/または他の予測技法を含む、異なる予測モードを適用することを含むことができる。ビデオエンコーダは、元のビデオシーケンスの各ピクチャを(以下でより詳細に説明される)ビデオブロックまたはコーディングユニットと呼ばれる矩形領域に区分することができる。これらのビデオブロックは、特定の予測モードを使用して符号化され得る。
【0027】
[0041] 動き補償は、概して、ビデオ圧縮のためのビデオデータのコーディングにおいて使用される。いくつかの例では、動き補償は、カメラの、および/またはビデオ中の要素(たとえば、オブジェクトなど)の動きを考慮することによって、ビデオの前のおよび/または将来のフレームに基づいてビデオ中のフレームを予測するために使用されるアルゴリズム技法を含み、および/または実装することができる。動き補償は、現在のピクチャへの参照ピクチャの変換に関してピクチャ(picture)について説明することができる。参照ピクチャは、時間的に前である、さらには将来からのものである、ピクチャであり得る。いくつかの例では、動き補償は、画像が、前に送信および/または記憶された画像から正確に合成されることを可能にすることによって、圧縮効率を改善することができる。
【0028】
[0042] 動き補償技術の一例は、動き補償離散コサイン変換(MC DCT:motion-compensated discrete cosine transform)とも呼ばれるブロック動き補償(BMC:block motion compensation)を含み、ここで、フレームは、ピクセルの重複しないブロックに区分され、各ブロックは、1つまたは複数の参照フレーム中の1つまたは複数のブロックから予測される。BMCでは、ブロックは、予測されたブロックの位置にシフトされる。そのようなシフトは、動きベクトル(MV:motion vector)または動き補償ベクトル(motion compensation vector)によって表される。近隣ブロックベクトル間の冗長を活用するために、BMCは、ビデオビットストリーム中の現在の動きベクトルと前の動きベクトルとの間の差分のみを符号化するために使用され得る。いくつかの場合には、BMCは、ブロック境界における不連続性(たとえば、ブロッキングアーティファクト)を導入し得る。そのようなアーティファクトは、概して人間の眼によって知覚可能である鋭い水平および垂直エッジの形態で現れ、残差フレームの変換コーディングのために使用されるフーリエ関係変換の係数の量子化による偽エッジおよびリンギング効果(たとえば、高周波サブバンドにおける大きい係数)をもたらすことがある。
【0029】
[0043] 概して、BMCでは、現在の再構築されたブロックが、(たとえば、動きベクトルによって参照される)前のフレームからの予測されたブロックと、現在ブロックのためのビットストリーム中で送信された残差データとから構成される。動き補償技術の別の例は、重複ブロック動き補償(OBMC)を含む。OBMCは、予測正確さを増加させ、ブロッキングアーティファクトを回避することができる。OBMCでは、予測は、複数の予測の重み付き和であり得るか、またはそれを含むことができる。いくつかの場合には、ブロックは、各次元において、より大きくなり得、近隣ブロックと重複することがある。そのような場合、各ピクセルは、複数のブロックに属し得る。たとえば、いくつかの例示的な例では、各ピクセルは、4つの異なるブロックに属し得る。そのような方式では、OBMCは、各ピクセルについて4つの予測を実装し得、それらは、重み付き平均を算出するために合計される。
【0030】
[0044] いくつかの場合には、OBMCは、CUレベルにおける特定のシンタックス(たとえば、1つまたは複数の特定のシンタックス要素)を使用してオンおよびオフに切り替えられ得る。いくつかの例では、CU境界OBMCモードとサブブロック境界OBMCモードとを含む、OBMCにおける2つの方向モード(たとえば、上、左、右、下、または下側)がある。CU境界OBMCモードが使用されるとき、現在のCU MVを使用する元の予測ブロック(prediction block)と、近隣CU MVを使用する別の予測ブロック(たとえば、「OBMCブロック」)とがブレンドされる。いくつかの例では、CU中の左上サブブロック(たとえば、CUの第1の/上行上の第1のまたは最左サブブロック)は、上および左OBMCブロックを有し、他の最上サブブロック(たとえば、CUの第1の/上行上の他のサブブロック)は、上OBMCブロックのみを有し得る。他の最左サブブロック(たとえば、CUの左側のCUの第1の列上のサブブロック)は、左OBMCブロックのみを有し得る。
【0031】
[0045] サブブロック境界OBMCモードは、サブCUコーディングツールが現在のCUにおいて有効にされるとき、有効にされ得る(たとえば、アフィン動き補償予測、高度時間動きベクトル予測(ATMVP)など)。サブブロック境界モードでは、接続された近隣サブブロックのMVを使用する別個のOBMCブロックが、現在のサブブロックのMVを使用する元の予測ブロックと連続的にブレンドされ得る。いくつかの場合には、CU境界OBMCモードは、サブブロック境界OBMCモードの前に実施され得、サブブロック境界OBMCモードのためのあらかじめ定義されたブレンディング順序は、上と、左と、下と、右とを含み得る。
【0032】
[0046] 近隣サブブロックN(たとえば、現在のサブブロックの上側の、現在のサブブロックの左の、現在のサブブロックの下側の、および現在のサブブロックの右のサブブロック)のMVに基づく予測が、PNとして示され得る。現在のサブブロックのMVに基づく予測が、PCとして示され得る。サブブロックNが、現在のサブブロックと同じ動き情報を含んでいるとき、元の予測ブロックは、サブブロックNのMVに基づく予測ブロックとブレンドされないことがある。いくつかの場合には、PN中の4つの行/列のサンプルが、PC中の同じサンプルとブレンドされ得る。いくつかの例では、PNのために、重み付けファクタ1/4、1/8、1/16、1/32が使用され得、PCのために、対応する重み付けファクタ3/4、7/8、15/16、31/32が使用され得る。いくつかの場合には、コーディングブロックの高さまたは幅が4に等しいか、またはCUがサブCUモードでコーディングされる場合、PN中の2つの行および/または列のみが、OBMCブレンディングを可能にされ得る。
【0033】
[0047] 改善されたビデオコーディングを実施するための(以下で「システムおよび技法」と総称される)システム、装置、方法、およびコンピュータ可読媒体が、本明細書で説明される。いくつかの態様では、本明細書で説明されるシステムおよび技法は、重複ブロック動き補償(OBMC)を実施するために使用され得る。たとえば、局所照明補償(LIC)は、スケーリングファクタとオフセットとを使用する線形モデルを伴って参照ブロックに基づいて現在の予測ブロックの照明を変更するためのコーディングツールである。いくつかの態様では、OBMCとLICは両方とも予測を調整するので、本明細書で説明されるシステムおよび技法は、LICが有効にされるとき、OBMCを無効にすることができるか、または、OBMCが有効にされるとき、LICを無効にすることができる。代替的に、いくつかの態様では、本明細書で説明されるシステムおよび技法は、LICが有効にされるとき、OBMCシグナリングをスキップするか、または、OBMCが有効にされるとき、LICシグナリングをスキップすることができる。
【0034】
[0048] いくつかの態様では、本明細書で説明されるシステムおよび技法は、たとえば、高度動きベクトル予測(AMVP)モード、スキップおよびマージモードなど、インター予測モード、ならびにイントラモードを改善するために、マルチ仮説予測(MHP)を実装することができる。いくつかの例では、本明細書で説明されるシステムおよび技法は、予測モードを余剰マージインデックス付き予測(extra merge indexed prediction)と組み合わせることができる。マージインデックス付き予測は、マージモードの場合のように実施され得、ここで、動き補償予測のための動き情報を収集するために、マージインデックスがシグナリングされる。OBMCおよびMHPは、概して、予測のための異なる参照ピクチャへのアクセスを必要とするので、デコーダは、処理のために大きいバッファを利用し得る。メモリバッファを低減するために、本明細書で説明されるシステムおよび技法は、MHPが有効にされるとき、OBMCを無効にするか、または、OBMCが有効にされるとき、MHPを無効にすることができる。他の例では、本明細書で説明されるシステムおよび技法は、代わりに、MHPが有効にされるとき、OBMCシグナリングをスキップするか、または、OBMCが有効にされるとき、MHPシグナリングをスキップし得る。いくつかの場合には、本明細書で説明されるシステムおよび技法は、MHPとOBMCとが、現在のスライスがインターBスライスであるとき、同時に有効にされることを可能にし得る。
【0035】
[0049] VVCなど、いくつかのビデオコーディング規格では、インター予測のために、幾何学的区分モード(GEO)がサポートされる。このモードが使用されるとき、CUは、幾何学的に位置するラインによって2つの部分にスプリットされ得る。スプリットするラインのロケーションは、特定の区分の角度およびオフセットパラメータから数学的に導出され得る。OBMCおよびGEOは、概して、予測のために異なる参照ピクチャにアクセスする必要があるので、デコーダは、処理のために大きいバッファを利用し得る。いくつかの場合には、メモリバッファを低減するために、本明細書で説明されるシステムおよび技法は、GEOが有効にされるとき、OBMCを無効にするか、OBMCが有効にされるとき、GEOを無効にするか、GEOが有効にされるとき、OBMCシグナリングをスキップするか、または、OBMCが有効にされるとき、GEOシグナリングをスキップすることができる。いくつかの場合には、GEOとOBMCとは、現在のスライスがインターBスライスであるとき、同時に有効にされることを可能にされ得る。
【0036】
[0050] VVCなど、いくつかのビデオコーディング規格では、インター予測のために、アフィン動き補償予測、サブブロックベース時間動きベクトル予測(SbTMVP)、およびデコーダ側動きベクトル改良(DMVR)がサポートされ得る。これらのコーディングツールは、CU中のサブブロックのための異なるMVを生成する。SbTMVPモードは、アフィンマージ候補のうちの1つであり得る。したがって、いくつかの例では、本明細書で説明されるシステムおよび技法は、サブブロック境界OBMCモードが、現在のCUがアフィン動き補償予測モードを使用するとき、現在のCUがSbTMVPを有効にするとき、または現在のCUがDMVRを有効にするとき、有効にされることを可能にすることができる。いくつかの場合には、本明細書で説明されるシステムおよび技法は、サブブロック境界OBMCモードが、現在のCUがDMVRを有効にするとき、有効にされると推論することができる。
【0037】
[0051] いくつかの場合には、CU境界OBMCモードおよび/またはサブブロック境界OBMCモードは、異なる重み付けファクタを適用することができる。他の場合には、CU境界OBMCモードとサブブロック境界OBMCモードとは、同じ重み付けファクタを共有することができる。たとえば、JEMでは、CU境界OBMCモードとサブブロック境界OBMCモードとは、以下のように同じ重み付けファクタを共有することができ、すなわち、ブレンディングのための最終予測が、P=WC*PC+WN*PNとして示され得、ここで、PNは、近隣サブブロックN(たとえば、上側、左、下側、右のサブブロック)のMVに基づく予測を表し、PCは、現在のサブブロックのMVに基づく予測であり、CU境界OBMCモードとサブブロック境界OBMCモードとは、WCおよびWNの同じ値を使用する。重み付けファクタWNは、それぞれ、近隣サブブロックNに1番目に、2番目に、3番目に、4番目に最も近い現在のサブブロックのサンプル行/列について、1/4、1/8、1/16、1/32として設定され得る。サブブロックは、4×4のサイズを有し得る。第1の要素1/4は、近隣サブブロックNに最も近いサンプル行または列についてのものであり、最後の要素1/32は、近隣サブブロックNまで最も遠いサンプル行または列についてのものである。現在のサブブロックの重みWCは、1-WN(近隣サブブロックの重み)に等しいことがある。サブCUモードのためのCU中のサブブロックは、近隣ブロックへのより多くの接続を有し得るので、サブブロック境界OBMCモードのための重み付けファクタは、CU境界OBMCモードのためのものとは異なり得る。したがって、本明細書で説明されるシステムおよび技法は、異なる重み付けファクタを提供することができる。
【0038】
[0052] いくつかの例では、重み付けファクタは、以下の通りであり得る。CU境界OBMCモードでは、WNは、{a1、b1、c1、d1}として設定され得る。他の場合、WNは、{a2、b2、c2、d2}として設定され得、ここで、{a1、b1、c1、d1}は、{a2、b2、c2、d2}とは異なる。例では、a2はa1よりも小さくなり得、b2はb1よりも小さくなり得、c2はc1よりも小さくなり得、および/またはd2はd1よりも小さくなり得る。
【0039】
[0053] JEMでは、サブブロック境界OBMCモードのためのあらかじめ定義されたブレンディング順序は、上、左、下側、および右である。いくつかの場合には、この順序は、算出複雑さを増加させ、性能を減少させ、等しくない重み付けを生じ、および/または不整合をもたらすことがある。いくつかの例では、この連続順序は、連続算出が並列ハードウェア設計にとって使いやすくないので、問題をもたらすことがある。いくつかの場合には、これは、等しくない重み付けを生じることがある。たとえば、ブレンディングプロセス中に、後のサブブロックブレンディングにおける近隣サブブロックのOBMCブロックが、以前のサブブロックブレンディングにおいてよりも多く、最終サンプル予測値に寄与し得る。本明細書で説明されるシステムおよび技法は、1つの式において、4つのOBMCサブブロックをもつ現在のサブブロックの予測値をブレンドし、特定の近隣サブブロックを選好することなしに重み付けファクタを固定することができる。たとえば、最終予測は、P=w1*Pc+w2*Ptop+w3*Pleft+w4*Pbelow+w5*Prightであり得、ここで、Ptopは、上近隣サブブロックのMVに基づく予測であり、Pleftは、左近隣サブブロックのMVに基づく予測であり、Pbelowは、下側近隣サブブロックのMVに基づく予測であり、Prightは、右近隣サブブロックのMVに基づく予測であり、w1、w2、w3、w4、およびw5は、重み付けファクタである。いくつかの場合には、重みw1は、1-w2-w3-w4-w5に等しいことがある。近隣サブブロックNのMVに基づく予測は、サブブロックNまで最も遠い行/列中のサンプルにノイズを追加し/含め/導入し得るので、本明細書で説明されるシステムおよび技法は、それぞれ、近隣サブブロックNに{1番目に、2番目に、3番目に、4番目に}最も近い現在のサブブロックのサンプル行/列について、重みw2、w3、w4、およびw5の各々についての値を{a、b、c、0}に設定することができる。たとえば、第1の要素aは、近隣サブブロックNに最も近い、たとえば、それに隣接する現在のサブブロックのサンプル行または列についてのものであり得、最後の要素0は、近隣サブブロックNまで最も遠い現在のサブブロックのサンプル行または列についてのものであり得る。例示のために、4×4サンプルのサイズを有する現在のサブブロックの左上サンプルに対する位置(0,0)、(0,1)、および(1,1)を例として使用すると、最終予測P(x,y)は、以下のように導出され得る。
【0040】
【0041】
[0054] 4×4の現在のサブブロックについての近隣OBMCサブブロックからの重み付けファクタの和(たとえば、w2+w3+w4+w5)の一例は、以下の表1に示されているようなものであり得る。いくつかの場合には、重み付けファクタは、除算演算を回避するために左シフトされ得る。たとえば、{a’、b’、c’、0}は、{a<<shift、b<<shift、c<<shift、0}であるように設定され得、ここで、shiftは正の整数である。この例では、重みw1は、(1<<shift)-a’-b’-c’に等しいことがあり、Pは、(w1*Pc+w2*Ptop+w3*Pleft+w4*Pbelow+w5*Pright+(1<<(shift-1)))>>shiftに等しいことがある。{a’、b’、c’、0}を設定するための一例は、{15、8、3、0}であり、ここで、それらの値は、元の値の6左シフトされた結果であり、w1は、(1<<6)-a-b-cに等しい。P=(w1*Pc+w2*Ptop+w3*Pleft+w4*Pbelow+w5*Pright+(1<<5))>>6。
【0042】
【0043】
[0055] いくつかの態様では、w2、w3、w4、およびw5の値は、それぞれ、近隣サブブロックNに{1番目に、2番目に、3番目に、4番目に}最も近い現在のサブブロックのサンプル行/列について、{a、b、0、0}に設定され得る。例示のために、4×4サンプルのサイズを有する現在のサブブロックの左上サンプルに対する位置(0,0)、(0,1)、および(1,1)を例として使用すると、最終予測P(x,y)は、以下のように導出され得る。
【0044】
【0045】
[0056] 4×4の現在のサブブロックについての近隣OBMCサブブロックからの重み付けファクタの例示的な和(たとえば、w2+w3+w4+w5)が、以下の表2に示されている。
【0046】
【0047】
[0057] いくつかの例では、重みは、コーナーサンプル(たとえば、(0,0)、(0,3)、(3,0)、および(3,3)におけるサンプル)におけるw2+w3+w4+w5の和が他の境界サンプル(たとえば、(0,1)、(0,2)、(1,0)、(2,0)、(3,1)、(3,2)、(1,3)、および(2,3)におけるサンプル)におけるw2+w3+w4+w5の和よりも大きく、および/または境界サンプルにおけるw2+w3+w4+w5の和が中間サンプル(たとえば、(1,1)、(1,2)、(2,1)、および(2,2)におけるサンプル)における値よりも大きいように、選定され得る。
【0048】
[0058] いくつかの場合には、いくつかの動き補償が、現在のサブブロックのMVと、それの空間近隣ブロック/サブブロック(たとえば、上、左、下側、および右)のMVとの間の類似度に基づいて、OBMCプロセス中にスキップされる。たとえば、動き補償が、所与の近隣ブロック/サブブロックからの動き情報を使用して呼び出される前に、毎回、(1つまたは複数の)近隣ブロック/サブブロックの(1つまたは複数の)MVが、以下の1つまたは複数の条件に基づいて現在のサブブロックの(1つまたは複数の)MVと比較され得る。1つまたは複数の条件は、たとえば、近隣ブロック/サブブロックによって使用されるすべての予測リスト(たとえば、単予測におけるリストL0またはリストL1のいずれか、あるいは双予測におけるL0とL1の両方)が、現在のサブブロックの予測のためにも使用されるという第1の条件、(1つまたは複数の)同じ参照ピクチャが、(1つまたは複数の)近隣サブブロックの(1つまたは複数の)MVと、現在のサブブロックの(1つまたは複数の)MVとによって使用されるという第2の条件、および/または(1つまたは複数の)近隣MVと(1つまたは複数の)現在のMVとの間の水平MV差分の絶対値が、あらかじめ定義されたMV差分しきい値Tよりも大きくなく(またはそれを超えず)、(1つまたは複数の)近隣MVと(1つまたは複数の)現在のMVとの間の垂直MV差分の絶対値が、あらかじめ定義されたMV差分しきい値Tよりも大きくないという第3の条件(双予測が使用される場合、L0 MVとL1 MVの両方が検査され得る)を含むことができる。
【0049】
[0059] いくつかの例では、第1の条件、第2の条件、および第3の条件が満たされる場合、所与の近隣ブロック/サブブロックを使用する動き補償が実施されず、所与の近隣ブロック/サブブロックNのMVを使用するOBMCサブブロックが、無効にされ、元のサブブロックとブレンドされない。いくつかの場合には、CU境界OBMCモードとサブブロック境界OBMCモードとは、しきい値Tの異なる値を有することができる。モードがCU境界OBMCモードである場合、TはT1に設定され、他の場合、TはT2に設定され、ここで、T1およびT2は0よりも大きい。いくつかの場合には、条件が満たされるとき、近隣ブロック/サブブロックをスキップするための不可逆アルゴリズムが、サブブロック境界OBMCモードのみに適用され得る。CU境界OBMCモードは、代わりに、近隣ブロック/サブブロックによって使用されるすべての予測リスト(たとえば、単予測におけるL0またはL1のいずれか、あるいは双予測におけるL0とL1の両方)が、現在のサブブロックの予測のためにも使用されるという第4の条件、(1つまたは複数の)同じ参照ピクチャが、(1つまたは複数の)近隣MVと(1つまたは複数の)現在のMVとによって使用されるという第5の条件、および近隣MVと現在のMVとが同じであるという第6の条件(双予測が使用される場合、L0 MVとL1 MVの両方が検査され得る)など、1つまたは複数の条件が満たされるとき、近隣ブロック/サブブロックをスキップするための可逆アルゴリズムを適用することができる。
【0050】
[0060] いくつかの場合には、第1の条件、第2の条件、および第3の条件が満たされるとき、近隣ブロック/サブブロックをスキップするための不可逆アルゴリズムは、CU境界OBMCモードのみに適用される。いくつかの場合には、サブブロック境界OBMCモードは、第4の条件、第5の条件、および第6の条件が満たされるとき、近隣ブロック/サブブロックをスキップするための可逆アルゴリズムを適用することができる。
【0051】
[0061] いくつかの態様では、CU境界OBMCモードでは、符号化および復号時間を節約するために、不可逆高速アルゴリズムが実装され得る。たとえば、第1のOBMCブロックと隣接するOBMCブロックとは、1つまたは複数の条件が満たされる場合、より大きいOBMCブロックにマージされ、一緒に生成され得る。1つまたは複数の条件は、たとえば、現在のCUの第1の近隣ブロックによって使用されるすべての予測リスト(たとえば、単予測におけるL0またはL1のいずれか、あるいは双予測におけるL0とL1の両方)が、(第1の近隣ブロックと同じ方向にある)現在のCUの第2の近隣ブロックの予測のためにも使用されるという条件、(1つまたは複数の)同じ参照ピクチャが、第1の近隣ブロックのMVと第2の近隣ブロックのMVとによって使用されるという条件、および、第1の近隣ブロックのMVと第2の近隣ブロックのMVとの間の水平MV差分の絶対値が、あらかじめ定義されたMV差分しきい値T3よりも大きくなく、第1の近隣ブロックのMVと第2の近隣ブロックのMVとの間の垂直MV差分の絶対値が、あらかじめ定義されたMV差分しきい値T3よりも大きくないという条件(双予測が使用される場合、L0 MVとL1 MVの両方が検査され得る)を含むことができる。
【0052】
[0062] いくつかの態様では、サブブロック境界OBMCモードでは、符号化および復号時間を節約するために、不可逆高速アルゴリズムが実装され得る。いくつかの例では、SbTMVPモードおよびDMVRは8×8ベースで実施され、アフィン動き補償は4×4ベースで実施される。本明細書で説明されるシステムおよび技法は、8×8ベースでサブブロック境界OBMCモードを実装することができる。いくつかの場合には、本明細書で説明されるシステムおよび技法は、8×8サブブロックが4つの4×4サブブロックにスプリットされるべきであるかどうかを決定するために、あらゆる8×8サブブロックにおいて類似度検査を実施することができ、スプリットされる場合、OBMCが4×4ベースで実施される。いくつかの例では、アルゴリズムは、各8×8サブブロックについて、4つの4×4OBMCサブブロック(たとえば、P、Q、R、およびS)を含むことができ、以下の条件、すなわち、サブブロックP、Q、RおよびSによって使用される(1つまたは複数の)予測リスト(たとえば、単予測におけるL0またはL1のいずれか、あるいは双予測におけるL0とL1の両方)が同じであるという第1の条件、(1つまたは複数の)同じ参照ピクチャがサブブロックP、Q、R、およびSのMVによって使用されるという第2の条件、ならびに任意の2つのサブブロック(たとえば、PおよびQ、PおよびR、PおよびS、QおよびR、QおよびS、ならびにRおよびS)のMV間の水平MV差分の絶対値が、あらかじめ定義されたMV差分しきい値T4よりも大きくなく、任意の2つのサブブロック(たとえば、PおよびQ、PおよびR、PおよびS、QおよびR、QおよびS、ならびにRおよびS)のMV間の垂直MV差分の絶対値が、あらかじめ定義されたMV差分しきい値T4よりも大きくないという第3の条件(双予測が使用される場合、L0 MVとL1 MVの両方が検査され得る)のうちの少なくとも1つが満たされないとき、有効にされることを可能にされる。
【0053】
[0063] 上記の条件のすべてが満たされる場合、本明細書で説明されるシステムおよび技法は、8×8サブブロックOBMCを実施することができ、ここで、上、左、下側、および右MVからの8×8OBMCサブブロックが、サブブロック境界OBMCモードのためのOBMCブレンディングを使用して生成される。そうではなく、上記の条件のうちの少なくとも1つが満たされないとき、OBMCがこの8×8サブブロックにおいて4×4ベースで実施され、8×8サブブロック中のあらゆる4×4サブブロックが、上、左、下側、および右MVから4つのOBMCサブブロックを生成する。
【0054】
[0064] いくつかの態様では、CUがマージモードでコーディングされるとき、OBMCフラグが、マージモードにおける動き情報コピーと同様の方法で、近隣ブロックからコピーされる。そうではなく、CUがマージモードでコーディングされないとき、OBMCフラグが、CUについて、OBMCが適用されるか否かを示すためにシグナリングされ得る。
【0055】
[0065] 本明細書で説明されるシステムおよび技法は、既存のビデオコーデック(たとえば、高効率ビデオコーディング(HEVC)、アドバンストビデオコーディング(AVC)、または他の好適な既存のビデオコーデック)のいずれかに適用され得るか、ならびに/あるいは、たとえば、汎用ビデオコーディング(VVC)、ジョイント探査モデル(JEM)、VP9、AV1フォーマット/コーデック、および/または開発中のもしくは開発されることになる他のビデオコーディング規格など、任意の開発されているビデオコーディング規格および/または将来のビデオコーディング規格のための効率的なコーディングツールであり得る。
【0056】
[0066] システムおよび技法に関するさらなる詳細が、図に関して説明される。
【0057】
[0067]
図1は、符号化デバイス104と復号デバイス112とを含むシステム100の一例を示すブロック図である。符号化デバイス104はソースデバイスの一部であり得、復号デバイス112は受信デバイスの一部であり得る。ソースデバイスおよび/または受信デバイスは、モバイルまたは固定電話ハンドセット(たとえば、スマートフォン、セルラー電話など)、デスクトップコンピュータ、ラップトップまたはノートブックコンピュータ、タブレットコンピュータ、セットトップボックス、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲーミングコンソール、ビデオストリーミングデバイス、インターネットプロトコル(IP)カメラ、あるいは任意の他の好適な電子デバイスなど、電子デバイスを含み得る。いくつかの例では、ソースデバイスおよび受信デバイスは、ワイヤレス通信のための1つまたは複数のワイヤレストランシーバを含み得る。本明細書で説明されるコーディング技法は、(たとえば、インターネットを介した)ストリーミングビデオ送信、テレビジョン放送または送信、データ記憶媒体上に記憶するためのデジタルビデオの符号化、データ記憶媒体上に記憶されたデジタルビデオの復号、あるいは他の適用例を含む、様々なマルチメディア適用例におけるビデオコーディングに適用可能である。本明細書で使用されるコーディングという用語は、符号化および/または復号を指すことがある。いくつかの例では、システム100は、ビデオ会議、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、ゲーミング、および/またはビデオテレフォニーなどの適用例をサポートするために、一方向または二方向のビデオ送信をサポートすることができる。
【0058】
[0068] 符号化デバイス104(またはエンコーダ)は、符号化されたビデオビットストリームを生成するためにビデオコーディング規格、フォーマット、コーデック、またはプロトコルを使用してビデオデータを符号化するために使用され得る。ビデオコーディング規格およびフォーマット/コーデックの例は、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、高効率ビデオコーディング(HEVC)またはITU-T H.265、および汎用ビデオコーディング(VVC)またはITU-T H.266を含む。範囲およびスクリーンコンテンツコーディング拡張、3Dビデオコーディング(3D-HEVC)ならびにマルチビュー拡張(MV-HEVC)ならびにスケーラブル拡張(SHVC)を含む、マルチレイヤビデオコーディングに対処するHEVCへの様々な拡張が存在する。HEVCおよびそれの拡張は、ITU-Tビデオコーディングエキスパートグループ(VCEG)およびISO/IECモーションピクチャエキスパートグループ(MPEG)のジョイントコラボレーションチームオンビデオコーディング(JCT-VC)ならびにジョイントコラボレーションチームオン3Dビデオコーディング拡張開発(JCT-3V)によって開発された。VP9、Alliance for Open Media Alliance of Open Media(AOMedia)によって開発されたAOMedia Video1(AV1)、およびエッセンシャルビデオコーディング(EVC)は、本明細書で説明される技法が適用され得る他のビデオコーディング規格である。
【0059】
[0069] 本明細書で説明される技法は、既存のビデオコーデック(たとえば、高効率ビデオコーディング(HEVC)、アドバンストビデオコーディング(AVC)、または他の好適な既存のビデオコーデック)のいずれかに適用され得るか、ならびに/あるいは、たとえば、VVC、および/または開発中のもしくは開発されることになる他のビデオコーディング規格など、任意の開発されているビデオコーディング規格および/または将来のビデオコーディング規格のための効率的なコーディングツールであり得る。たとえば、本明細書で説明される例は、VVC、HEVC、AVC、および/またはそれらの拡張などのビデオコーデックを使用して実施され得る。しかしながら、本明細書で説明される技法およびシステムは、MPEG、JPEG(または静止画像のための他のコーディング規格)、VP9、AV1、それらの拡張、あるいはすでに利用可能であるか、またはまだ利用可能ではないか、もしくは開発されていない他の好適なコーディング規格など、他のコーディング規格、コーデック、またはフォーマットにも適用可能であり得る。たとえば、いくつかの例では、符号化デバイス104および/または復号デバイス112は、AV1、AVIの拡張、および/あるいはAV1の後継バージョン(たとえば、AV2)、あるいは他のプロプライエタリフォーマットまたは業界規格など、プロプライエタリビデオコーデック/フォーマットに従って動作し得る。したがって、本明細書で説明される技法およびシステムは、特定のビデオコーディング規格を参照しながら説明され得るが、当業者は、説明がその特定の規格にのみ適用されると解釈されるべきではないことを諒解されよう。
【0060】
[0070]
図1を参照すると、ビデオソース102は、符号化デバイス104にビデオデータを提供し得る。ビデオソース102は、ソースデバイスの一部であり得るか、またはソースデバイス以外のデバイスの一部であり得る。ビデオソース102は、ビデオキャプチャデバイス(たとえば、ビデオカメラ、カメラフォン、ビデオフォンなど)、記憶されたビデオを含んでいるビデオアーカイブ、ビデオデータを提供するビデオサーバまたはコンテンツプロバイダ、ビデオサーバまたはコンテンツプロバイダからビデオを受信するビデオフィードインターフェース、コンピュータグラフィックスビデオデータを生成するためのコンピュータグラフィックスシステム、そのようなソースの組合せ、あるいは任意の他の好適なビデオソースを含み得る。
【0061】
[0071] ビデオソース102からのビデオデータは、1つまたは複数の入力ピクチャまたはフレームを含み得る。ピクチャまたはフレームは、いくつかの場合には、ビデオの一部である静止画像である。いくつかの例では、ビデオソース102からのデータは、ビデオの一部でない静止画像であり得る。HEVC、VVC、および他のビデオコーディング仕様では、ビデオシーケンスは、一連のピクチャを含むことができる。ピクチャは、SL、SCb、およびSCrと示される、3つのサンプルアレイを含み得る。SLはルーマサンプルの2次元アレイであり、SCbはCbクロミナンスサンプルの2次元アレイであり、SCrはCrクロミナンスサンプルの2次元アレイである。クロミナンスサンプルは、本明細書では「クロマ」サンプルと呼ばれることもある。ピクセルは、ピクチャのアレイ中の所与のロケーションについてのすべての3つの成分(ルーマおよびクロマサンプル)を指すことがある。他の事例では、ピクチャは、モノクロームであり得、ルーマサンプルのアレイのみを含み得、その場合、ピクセルおよびサンプルという用語は互換的に使用され得る。説明の目的で個々のサンプルに言及する本明細書で説明される例示的な技法に関して、同じ技法がピクセル(たとえば、ピクチャのアレイ中の所与のロケーションについてのすべて3つのサンプル成分)に適用され得る。説明の目的でピクセル(たとえば、ピクチャのアレイ中の所与のロケーションについてのすべて3つのサンプル成分)に言及する本明細書で説明される例示的な技法に関して、同じ技法が個々のサンプルに適用され得る。
【0062】
[0072] 符号化デバイス104のエンコーダエンジン106(またはエンコーダ)は、符号化されたビデオビットストリームを生成するためにビデオデータを符号化する。いくつかの例では、符号化されたビデオビットストリーム(または「ビデオビットストリーム」または「ビットストリーム」)は、一連の1つまたは複数のコーディングされたビデオシーケンスである。コーディングされたビデオシーケンス(CVS)は、ベースレイヤ中の、いくつかのプロパティをもつランダムアクセスポイントピクチャを有するアクセスユニット(AU:access unit)で開始し、ベースレイヤ中の、いくつかのプロパティをもつランダムアクセスポイントピクチャを有する次のAUまでの、次のAUを含まない一連のAUを含む。たとえば、CVSを開始するランダムアクセスポイントピクチャのいくつかのプロパティは、1に等しいRASLフラグ(たとえば、NoRaslOutputFlag)を含み得る。他の場合、(0に等しいRASLフラグをもつ)ランダムアクセスポイントピクチャはCVSを開始しない。アクセスユニット(AU)は、1つまたは複数のコーディングされたピクチャと、同じ出力時間を共有するコーディングされたピクチャに対応する制御情報とを含む。ピクチャのコーディングされたスライスは、ビットストリームレベルにおいて、ネットワークアブストラクションレイヤ(NAL)ユニットと呼ばれるデータユニット中にカプセル化される。たとえば、HEVCビデオビットストリームは、NALユニットを含む1つまたは複数のCVSを含み得る。NALユニットの各々はNALユニットヘッダを有する。一例では、ヘッダは、(マルチレイヤ拡張を除いて)H.264/AVCでは1バイトであり、HEVCでは2バイトである。NALユニットヘッダ中のシンタックス要素は、指定されたビットをとり、したがって、特にトランスポートストリーム、リアルタイムトランスポート(RTP)プロトコル、ファイルフォーマットなど、すべての種類のシステムおよびトランスポートレイヤに可視である。
【0063】
[0073] ビデオコーディングレイヤ(VCL)NALユニットと非VCL NALユニットとを含む、NALユニットの2つのクラスがHEVC規格に存在する。VCL NALユニットは、コーディングされたビデオビットストリームを形成するコーディングされたピクチャデータを含む。たとえば、コーディングされたビデオビットストリームを形成するビットのシーケンスは、VCL NALユニット中に存在する。VCL NALユニットは、コーディングされたピクチャデータの(以下で説明される)1つのスライスまたはスライスセグメントを含むことができ、非VCL NALユニットは、1つまたは複数のコーディングされたピクチャに関係する制御情報を含む。いくつかの場合には、NALユニットはパケットと呼ばれることがある。HEVC AUは、コーディングされたピクチャデータを含んでいるVCL NALユニットと、(もしあれば)コーディングされたピクチャデータに対応する非VCL NALユニットとを含む。非VCL NALユニットは、他の情報に加えて、符号化されたビデオビットストリームに関係する高レベル情報をもつパラメータセットを含んでいることがある。たとえば、パラメータセットは、ビデオパラメータセット(VPS)と、シーケンスパラメータセット(SPS)と、ピクチャパラメータセット(PPS)とを含み得る。いくつかの場合には、ビットストリームの各スライスまたは他の部分は、復号デバイス112がビットストリームのスライスまたは他の部分を復号するために使用され得る情報にアクセスすることを可能にするために単一のアクティブなPPS、SPS、および/またはVPSを参照することができる。
【0064】
[0074] NALユニットは、ビデオ中のピクチャのコーディングされた表現など、ビデオデータのコーディングされた表現を形成するビットのシーケンス(たとえば、符号化されたビデオビットストリーム、ビットストリームのCVSなど)を含んでいることがある。エンコーダエンジン106は、各ピクチャを複数のスライスに区分することによってピクチャのコーディングされた表現を生成する。スライスは、スライス中の情報が、同じピクチャ内の他のスライスからのデータへの依存性なしにコーディングされるように、他のスライスから独立している。スライスは、独立したスライスセグメントを含む1つまたは複数のスライスセグメントと、存在する場合、前のスライスセグメントに依存する1つまたは複数の依存するスライスセグメントとを含む。
【0065】
[0075] HEVCでは、スライスは、次いで、ルーマサンプルおよびクロマサンプルのコーディングツリーブロック(CTB:coding tree block)に区分される。ルーマサンプルのCTBおよびクロマサンプルの1つまたは複数のCTBは、サンプルのためのシンタックスとともに、コーディングツリーユニット(CTU:coding tree unit)と呼ばれる。CTUは「ツリーブロック」または「最大コーディングユニット」(LCU)と呼ばれることもある。CTUは、HEVC符号化のための基本処理ユニットである。CTUは、様々なサイズの複数のコーディングユニット(CU:coding unit)にスプリットされ得る。CUは、コーディングブロック(CB:coding block)と呼ばれるルーマおよびクロマサンプルアレイを含んでいる。
【0066】
[0076] ルーマおよびクロマCBは、予測ブロック(PB:prediction block)にさらにスプリットされ得る。PBは、(利用可能なとき、または使用のために有効にされたとき)インター予測またはイントラブロックコピー(IBC)予測のために同じ動きパラメータを使用するルーマ成分またはクロマ成分のサンプルのブロックである。ルーマPBおよび1つまたは複数のクロマPBは、関連するシンタックスとともに、予測ユニット(PU:prediction unit)を形成する。インター予測の場合、動きパラメータのセット(たとえば、1つまたは複数の動きベクトル、参照インデックスなど)は、PUごとにビットストリーム中でシグナリングされ、ルーマPBおよび1つまたは複数のクロマPBのインター予測のために使用される。動きパラメータは動き情報と呼ばれることもある。CBはまた、1つまたは複数の変換ブロック(TB:transform block)に区分され得る。TBは、予測残差信号をコーディングするために残差変換(たとえば、いくつかの場合には、同じ2次元変換)が適用される色成分のサンプルの正方形ブロックを表す。変換ユニット(TU:transform unit)は、ルーマおよびクロマサンプルのTBと、対応するシンタックス要素とを表す。変換コーディングが以下でより詳細に説明される。
【0067】
[0077] CUのサイズは、コーディングモードのサイズに対応し、形状が正方形であり得る。たとえば、CUのサイズは、8×8サンプル、16×16サンプル、32×32サンプル、64×64サンプル、または対応するCTUのサイズまでの任意の他の適切なサイズであり得る。「N×N」という句は、本明細書では、垂直寸法および水平寸法に関するビデオブロックのピクセル寸法(たとえば、8ピクセル×8ピクセル)を指すために使用される。ブロック中のピクセルは行および列に配置され得る。いくつかの実装形態では、ブロックは、水平方向において垂直方向と同じ数のピクセルを有しないことがある。CUに関連するシンタックスデータは、たとえば、1つまたは複数のPUへのCUの区分を表し得る。区分モードは、CUがイントラ予測モード符号化されるのか、インター予測モード符号化されるのかの間で異なり得る。PUは、形状が非正方形になるように区分され得る。CUに関連するシンタックスデータは、たとえば、CTUに従う1つまたは複数のTUへのCUの区分をも表し得る。TUは、形状が正方形または非正方形であり得る。
【0068】
[0078] HEVC規格によれば、変換は、変換ユニット(TU)を使用して実施され得る。TUは、異なるCUでは異なり得る。TUは、所与のCU内のPUのサイズに基づいてサイズ決定され得る。TUは、PUと同じサイズであるか、またはPUよりも小さくなり得る。いくつかの例では、CUに対応する残差サンプルは、残差クワッドツリー(RQT:residual quad tree)として知られるクワッドツリー構造を使用して、より小さいユニットに再分割され得る。RQTのリーフノードはTUに対応し得る。TUに関連するピクセル差分値は、変換係数を作り出すために変換され得る。変換係数は、次いで、エンコーダエンジン106によって量子化され得る。
【0069】
[0079] ビデオデータのピクチャがCUに区分されると、エンコーダエンジン106は、予測モードを使用して各PUを予測する。予測ユニットまたは予測ブロックは、次いで、(以下で説明される)残差を得るために元のビデオデータから減算される。CUごとに、シンタックスデータを使用してビットストリーム内で予測モードがシグナリングされ得る。予測モードは、イントラ予測(またはピクチャ内予測)またはインター予測(またはピクチャ間予測)を含み得る。イントラ予測は、ピクチャ内の空間的に近隣するサンプル間の相関を利用する。たとえば、イントラ予測を使用して、各PUは、たとえば、PUに関する平均値を見つけるためのDC予測、平坦面をPUに適合させるための平面予測、近隣データから外挿するための方向予測、または任意の他の好適なタイプの予測を使用して、同じピクチャ中の近隣画像データから予測される。インター予測は、画像サンプルのブロックについての動き補償予測を導出するためにピクチャ間の時間相関を使用する。たとえば、インター予測を使用して、各PUは、(出力順序において現在のピクチャの前または後の)1つまたは複数の参照ピクチャ中の画像データからの動き補償予測を使用して予測される。ピクチャ間予測を使用してピクチャエリアをコーディングすべきなのか、ピクチャ内予測を使用してピクチャエリアをコーディングすべきなのかの決定は、たとえば、CUレベルにおいて行われ得る。
【0070】
[0080] エンコーダエンジン106および(以下でより詳細に説明される)デコーダエンジン116は、VVCに従って動作するように構成され得る。VVCによれば、(エンコーダエンジン106および/またはデコーダエンジン116などの)ビデオコーダは、ピクチャを複数のコーディングツリーユニット(CTU)に区分する(ここで、ルーマサンプルのCTBとクロマサンプルの1つまたは複数のCTBとが、サンプルのためのシンタックスとともに、CTUと呼ばれる)。ビデオコーダは、クワッドツリーバイナリツリー(QTBT)構造またはマルチタイプツリー(MTT)構造など、ツリー構造に従ってCTUを区分することができる。QTBT構造は、HEVCのCUとPUとTUとの間の分離など、複数の区分タイプの概念を除去する。QTBT構造は、クワッドツリー区分に従って区分される第1のレベルと、バイナリツリー区分に従って区分される第2のレベルとを含む、2つのレベルを含む。QTBT構造のルートノードは、CTUに対応する。バイナリツリーのリーフノードは、コーディングユニット(CU)に対応する。
【0071】
[0081] MTT区分構造では、ブロックは、クワッドツリー区分と、バイナリツリー区分と、1つまたは複数のタイプのトリプルツリー区分とを使用して区分され得る。トリプルツリー区分は、ブロックが3つのサブブロックにスプリットされる区分である。いくつかの例では、トリプルツリー区分は、中心を通して元のブロックを分割することなしにブロックを3つのサブブロックに分割する。MTTにおける区分タイプ(たとえば、クワッドツリー、バイナリツリー、およびトライプツリー)は、対称的または非対称的であり得る。
【0072】
[0082] AV1コーデックに従って動作しているとき、符号化デバイス104および復号デバイス112は、ブロック中のビデオデータをコーディングするように構成され得る。AV1では、処理され得る最大コーディングブロックは、スーパーブロックと呼ばれる。AV1では、スーパーブロックは、128×128ルーマサンプルまたは64×64ルーマサンプルのいずれかであり得る。しかしながら、後継ビデオコーディングフォーマット(たとえば、AV2)では、スーパーブロックは、異なる(たとえば、より大きい)ルーマサンプルサイズによって定義され得る。いくつかの例では、スーパーブロックは、ブロッククワッドツリーのトップレベルである。符号化デバイス104は、さらに、スーパーブロックをより小さいコーディングブロックに区分し得る。符号化デバイス104は、正方形または非正方形区分を使用してスーパーブロックおよび他のコーディングブロックをより小さいブロックに区分し得る。非正方形ブロックは、N/2×N、N×N/2、N/4×N、およびN×N/4ブロックを含み得る。符号化デバイス104および復号デバイス112は、コーディングブロックの各々に対して別個の予測および変換プロセスを実施し得る。
【0073】
[0083] AV1はまた、ビデオデータのタイルを定義する。タイルは、他のタイルから独立してコーディングされ得るスーパーブロックの矩形アレイである。すなわち、符号化デバイス104および復号デバイス112は、他のタイルからのビデオデータを使用せずにタイル内のコーディングブロックを、それぞれ、符号化および復号し得る。ただし、符号化デバイス104および復号デバイス112は、タイル境界にわたってフィルタ処理を実施し得る。タイルは、サイズが均一または非均一であり得る。タイルベースコーディングは、エンコーダおよびデコーダ実装形態のための並列処理および/またはマルチスレッディングを可能にし得る。
【0074】
[0084] いくつかの例では、ビデオコーダは、ルミナンス成分とクロミナンス成分との各々を表すために単一のQTBTまたはMTT構造を使用することができ、他の例では、ビデオコーダは、ルミナンス成分のための1つのQTBTまたはMTT構造、および両方のクロミナンス成分のための別のQTBTまたはMTT構造(またはそれぞれのクロミナンス成分のための2つのQTBTおよび/またはMTT構造)など、2つまたはそれ以上のQTBTまたはMTT構造を使用することができる。
【0075】
[0085] ビデオコーダは、クワッドツリー区分、QTBT区分、MTT区分、スーパーブロック区分、または他の区分構造を使用するように構成され得る。
【0076】
[0086] いくつかの例では、ピクチャの1つまたは複数のスライスは、スライスタイプを割り当てられる。スライスタイプは、イントラコーディングされたスライス(Iスライス)と、インターコーディングされたPスライスと、インターコーディングされたBスライスとを含む。Iスライス(イントラコーディングされたフレーム、独立して復号可能)は、イントラ予測によってのみコーディングされるピクチャのスライスであり、したがって、Iスライスは、スライスの任意の予測ユニットまたは予測ブロックを予測するためにフレーム内のデータのみを必要とするので、独立して復号可能である。Pスライス(単方向予測されるフレーム)は、イントラ予測を用いて、および単方向インター予測を用いてコーディングされ得るピクチャのスライスである。Pスライス内の各予測ユニットまたは予測ブロックは、イントラ予測またはインター予測のいずれかを用いてコーディングされる。インター予測が適用されるとき、予測ユニットまたは予測ブロックは、1つの参照ピクチャによってのみ予測され、したがって、参照サンプルは、1つのフレームの1つの参照領域からのみのものである。Bスライス(双方向予測フレーム)は、イントラ予測を用いて、およびインター予測(たとえば、双予測または単予測のいずれか)を用いてコーディングされ得るピクチャのスライスである。Bスライスの予測ユニットまたは予測ブロックは、2つの参照ピクチャから双方向予測され得、ここで、各ピクチャが1つの参照領域を導き(contribute)、双方向予測されたブロックの予測信号を作り出すために、2つの参照領域のサンプルセットが(たとえば、等しい重みを用いて、または異なる重みを用いて)重み付けされる。上記で説明されたように、1つのピクチャのスライスが独立してコーディングされる。いくつかの場合には、ピクチャは、ただ1つのスライスとしてコーディングされ得る。
【0077】
[0087] 上述のように、ピクチャのピクチャ内予測は、ピクチャ内の空間的に近隣するサンプル間の相関を利用する。(「イントラモード」とも呼ばれる)複数のイントラ予測モードがある。いくつかの例では、ルーマブロックのイントラ予測は、平面モードと、DCモードと、33個の角モード(たとえば、対角イントラ予測モードおよび対角イントラ予測モードに隣接する角モード)とを含む35個のモードを含む。イントラ予測の35個のモードは、以下で表1に示されているようにインデックス付けされる。他の例では、33個の角モードによってまだ表されていないことがある予測角度を含むより多くのイントラモードが定義され得る。他の例では、角モードに関連する予測角度は、HEVCにおいて使用されるものとは異なり得る。
【0078】
【0079】
[0088] ピクチャ間予測は、画像サンプルのブロックについての動き補償予測を導出するためにピクチャ間の時間相関を使用する。並進動きモデルを使用して、前に復号されたピクチャ(参照ピクチャ)中のブロックの位置は、動きベクトル(Δx,Δy)によって示され、Δxは、現在のブロックの位置に対する参照ブロックの水平変位を指定し、Δyはその垂直変位を指定する。いくつかの場合には、動きベクトル(Δx,Δy)は、(整数正確さとも呼ばれる)整数サンプル正確さであり得、その場合、動きベクトルは、参照フレームの整数ペルグリッド(または整数ピクセルサンプリンググリッド)を指す。いくつかの場合には、動きベクトル(Δx,Δy)は、参照フレームの整数ペルグリッドに制限されることなしに、基礎をなすオブジェクトの移動をより正確にキャプチャするために、(分数ペル正確さまたは非整数正確さとも呼ばれる)分数サンプル正確さのものであり得る。動きベクトルの正確さは、動きベクトルの量子化レベルによって表され得る。たとえば、量子化レベルは、整数正確さ(たとえば、1ピクセル)または分数ペル正確さ(たとえば、1/4ピクセル、1/2ピクセル、または他のサブピクセル値)であり得る。対応する動きベクトルが分数サンプル正確さを有するとき、予測信号を導出するために、参照ピクチャに補間が適用される。たとえば、整数位置において利用可能なサンプルは、分数位置における値を推定するために、(たとえば、1つまたは複数の補間フィルタを使用して)フィルタ処理され得る。前に復号された参照ピクチャは、参照ピクチャリストへの参照インデックス(refIdx)によって示される。動きベクトルおよび参照インデックスは、動きパラメータと呼ばれることがある。単予測と双予測とを含む、2つの種類のピクチャ間予測が実施され得る。
【0080】
[0089] (双方向インター予測とも呼ばれる)双予測を使用するインター予測の場合、動きパラメータの2つのセット(Δx0、y0、refIdx0、および、Δx1、y1、refIdx1)が、(同じ参照ピクチャから、または場合によっては異なる参照ピクチャから)2つの動き補償予測を生成するために使用される。たとえば、双予測の場合、各予測ブロックは、2つの動き補償予測信号を使用し、B予測ユニットを生成する。2つの動き補償予測は、次いで、最終の動き補償予測を得るために組み合わせられる。たとえば、2つの動き補償予測は、平均化によって組み合わせられ得る。別の例では、重み付き予測が使用され得、その場合、異なる重みが、各動き補償予測に適用され得る。双予測において使用され得る参照ピクチャは、リスト0およびリスト1として示される、2つの別個のリストに記憶される。動きパラメータは、動き推定プロセスを使用してエンコーダにおいて導出され得る。
【0081】
[0090] (単方向インター予測とも呼ばれる)単予測を使用するインター予測の場合、動きパラメータ(Δx0,y0,refIdx0)の1つのセットが、参照ピクチャから動き補償予測を生成するために使用される。たとえば、単予測の場合、各予測ブロックは、高々1つの動き補償予測信号を使用し、P予測ユニットを生成する。
【0082】
[0091] PUは、予測プロセスに関係するデータ(たとえば、動きパラメータまたは他の好適なデータ)を含み得る。たとえば、PUがイントラ予測を使用して符号化されるとき、PUは、PUのためのイントラ予測モードを表すデータを含み得る。別の例として、PUがインター予測を使用して符号化されるとき、PUは、PUのための動きベクトルを定義するデータを含み得る。PUのための動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分(Δx)、動きベクトルの垂直成分(Δy)、動きベクトルの解像度(たとえば、整数精度、1/4ピクセル精度、または1/8ピクセル精度)、動きベクトルが指す参照ピクチャ、参照インデックス、動きベクトルのための参照ピクチャリスト(たとえば、リスト0、リスト1、またはリストC)、またはそれらの任意の組合せを表し得る。
【0083】
[0092] AV1は、ビデオデータのコーディングブロックを符号化および復号するための2つの一般的な技法を含む。2つの一般的な技法は、イントラ予測(たとえば、イントラフレーム予測または空間予測)およびインター予測(たとえば、インターフレーム予測または時間予測)である。AV1のコンテキストでは、イントラ予測モードを使用するビデオデータの現在のフレームのブロックを予測するとき、符号化デバイス104および復号デバイス112は、ビデオデータの他のフレームからのビデオデータを使用しない。たいていのイントラ予測モードでは、ビデオ符号化デバイス104は、現在のブロック中のサンプル値と、同じフレーム中の参照サンプルから生成される予測される値との間の差分に基づいて、現在のフレームのブロックを符号化する。ビデオ符号化デバイス104は、イントラ予測モードに基づいて参照サンプルから生成される予測される値を決定する。
【0084】
[0093] イントラ予測および/またはインター予測を使用して予測を実施した後に、符号化デバイス104は、変換および量子化を実施することができる。たとえば、予測の後に、エンコーダエンジン106は、PUに対応する残差値を計算し得る。残差値は、コーディングされているピクセルの現在のブロック(PU)と、現在のブロックを予測するために使用される予測ブロック(たとえば、現在のブロックの予測されたバージョン)との間のピクセル差分値を備え得る。たとえば、予測ブロックを生成した(たとえば、インター予測またはイントラ予測を出した)後に、エンコーダエンジン106は、現在のブロックから、予測ユニットによって作り出された予測ブロックを減算することによって、残差ブロックを生成することができる。残差ブロックは、現在のブロックのピクセル値と予測ブロックのピクセル値との間の差分を定量化するピクセル差分値のセットを含む。いくつかの例では、残差ブロックは、2次元ブロックフォーマット(たとえば、ピクセル値の2次元行列またはアレイ)で表され得る。そのような例では、残差ブロックはピクセル値の2次元表現である。
【0085】
[0094] 予測が実施された後に残存していることがあるいずれの残差データも、離散コサイン変換、離散サイン変換、整数変換、ウェーブレット変換、他の好適な変換関数、またはそれらの任意の組合せに基づき得るブロック変換を使用して変換される。いくつかの場合には、1つまたは複数のブロック変換(たとえば、サイズ32×32、16×16、8×8、4×4、または他の好適なサイズ)が各CU中の残差データに適用され得る。いくつかの実施形態では、エンコーダエンジン106によって実装される変換および量子化プロセスのためにTUが使用され得る。1つまたは複数のPUを有する所与のCUは、1つまたは複数のTUをも含み得る。以下でさらに詳細に説明されるように、残差値は、ブロック変換を使用して変換係数に変換され得、次いで、エントロピーコーディングのためのシリアル化変換係数を作り出すために、TUを使用して量子化および走査され得る。
【0086】
[0095] いくつかの実施形態では、CUのPUを使用したイントラ予測コーディングまたはインター予測コーディングの後に、エンコーダエンジン106は、CUのTUのための残差データを計算し得る。PUは、空間ドメイン(またはピクセルドメイン)においてピクセルデータを備え得る。TUは、ブロック変換の適用の後に変換ドメインにおいて係数を備え得る。前記のように、残差データは、符号化されていないピクチャのピクセルとPUに対応する予測値との間のピクセル差分値に対応し得る。エンコーダエンジン106は、CUのための残差データを含むTUを形成し得、次いで、CUのための変換係数を作り出すためにTUを変換し得る。
【0087】
[0096] エンコーダエンジン106は、変換係数の量子化を実施し得る。量子化は、係数を表すために使用されるデータの量を低減するために変換係数を量子化することによって、さらなる圧縮を提供する。たとえば、量子化は、係数の一部または全部に関連するビット深度を低減し得る。一例では、nビット値をもつ係数は、量子化中にmビット値に切り捨てられ得、nはmよりも大きい。
【0088】
[0097] 量子化が実施されると、コーディングされたビデオビットストリームは、量子化された変換係数と、予測情報(たとえば、予測モード、動きベクトル、ブロックベクトルなど)と、区分情報と、他のシンタックスデータなどの任意の他の好適なデータとを含む。コーディングされたビデオビットストリームの異なる要素は、次いで、エンコーダエンジン106によってエントロピー符号化され得る。いくつかの例では、エンコーダエンジン106は、エントロピー符号化され得るシリアル化ベクトルを作り出すために、量子化変換係数を走査するためにあらかじめ定義された走査順序を利用し得る。いくつかの例では、エンコーダエンジン106は適応型走査を実施し得る。ベクトル(たとえば、1次元ベクトル)を形成するために量子化変換係数を走査した後に、エンコーダエンジン106は、ベクトルをエントロピー符号化し得る。たとえば、エンコーダエンジン106は、コンテキスト適応型可変長コーディング、コンテキスト適応型バイナリ算術コーディング、シンタックスベースコンテキスト適応型バイナリ算術コーディング、確率間隔区分エントロピーコーディング、または別の好適なエントロピー符号化技法を使用し得る。
【0089】
[0098] 符号化デバイス104の出力部110は、通信リンク120を介して受信デバイスの復号デバイス112に、符号化されたビデオビットストリームデータを構成するNALユニットを送り得る。復号デバイス112の入力部114はNALユニットを受信し得る。通信リンク120は、ワイヤレスネットワーク、ワイヤードネットワーク、またはワイヤードネットワークとワイヤレスネットワークとの組合せによって提供されるチャネルを含み得る。ワイヤレスネットワークは、任意のワイヤレスインターフェースまたはワイヤレスインターフェースの組合せを含み得、任意の好適なワイヤレスネットワーク(たとえば、インターネットまたは他のワイドエリアネットワーク、パケットベースネットワーク、WiFi(登録商標)、無線周波数(RF)、超広帯域(UWB)、WiFi-Direct、セルラー、ロングタームエボリューション(LTE(登録商標))、WiMax(登録商標)など)を含み得る。ワイヤードネットワークは、任意のワイヤードインターフェース(たとえば、ファイバー、イーサネット(登録商標)、電力線イーサネット、同軸ケーブルを介したイーサネット、デジタル信号線(DSL)など)を含み得る。ワイヤードおよび/またはワイヤレスネットワークは、基地局、ルータ、アクセスポイント、ブリッジ、ゲートウェイ、スイッチなど、様々な機器を使用して実装され得る。符号化されたビデオビットストリームデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、受信デバイスに送信され得る。
【0090】
[0099] いくつかの例では、符号化デバイス104は、符号化されたビデオビットストリームデータをストレージ108に記憶し得る。出力部110は、エンコーダエンジン106から、またはストレージ108から符号化されたビデオビットストリームデータを取り出し得る。ストレージ108は、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。たとえば、ストレージ108は、ハードドライブ、記憶ディスク、フラッシュメモリ、揮発性または不揮発性メモリ、あるいは符号化されたビデオデータを記憶するための任意の他の好適なデジタル記憶媒体を含み得る。ストレージ108は、インター予測において使用するための参照ピクチャを記憶するための復号ピクチャバッファ(DPB)をも含むことができる。さらなる例では、ストレージ108は、ソースデバイスによって生成された符号化されたビデオを記憶し得るファイルサーバまたは別の中間ストレージデバイスに対応することができる。そのような場合、復号デバイス112を含む受信デバイスは、ストリーミングまたはダウンロードを介してストレージデバイスから記憶されたビデオデータにアクセスすることができる。ファイルサーバは、符号化されたビデオデータを記憶することと、その符号化されたビデオデータを受信デバイスに送信することとが可能な任意のタイプのサーバであり得る。例示的なファイルサーバは、(たとえば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブを含む。受信デバイスは、インターネット接続を含む、任意の標準のデータ接続を通して、符号化されたビデオデータにアクセスし得る。これは、ワイヤレスチャネル(たとえば、Wi-Fi(登録商標)接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、または、ファイルサーバに記憶された符号化されたビデオデータにアクセスするのに好適である、両方の組合せを含み得る。ストレージ108からの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組合せであり得る。
【0091】
[0100] 復号デバイス112の入力部114は、符号化されたビデオビットストリームデータを受信し、ビデオビットストリームデータをデコーダエンジン116に、またはデコーダエンジン116による後の使用のためにストレージ118に提供し得る。たとえば、ストレージ118は、インター予測において使用するための参照ピクチャを記憶するためのDPBを含むことができる。復号デバイス112を含む受信デバイスは、ストレージ108を介して復号されるべき符号化されたビデオデータを受信することができる。符号化されたビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、受信デバイスに送信され得る。符号化されたビデオデータを送信するための通信媒体は、無線周波数(RF)スペクトルまたは1つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体を備えることができる。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイスから受信デバイスへの通信を可能にするために有用であり得る任意の他の機器を含み得る。
【0092】
[0101] デコーダエンジン116は、(たとえば、エントロピーデコーダを使用して)エントロピー復号し、符号化されたビデオデータを構成する1つまたは複数のコーディングされたビデオシーケンスの要素を抽出することによって、符号化されたビデオビットストリームデータを復号し得る。デコーダエンジン116は、次いで、符号化されたビデオビットストリームデータを再スケーリングし、符号化されたビデオビットストリームデータに対して逆変換を実施し得る。残差データが、次いで、デコーダエンジン116の予測段階にパスされる。デコーダエンジン116は、次いで、ピクセルのブロック(たとえば、PU)を予測する。いくつかの例では、逆変換の出力(残差データ)に予測が加算される。
【0093】
[0102] ビデオ復号デバイス112は、復号されたビデオをビデオ宛先デバイス122に出力し得、ビデオ宛先デバイス122は、復号されたビデオデータをコンテンツの消費者に表示するためのディスプレイまたは他の出力デバイスを含み得る。いくつかの態様では、ビデオ宛先デバイス122は、復号デバイス112を含む受信デバイスの一部であり得る。いくつかの態様では、ビデオ宛先デバイス122は、受信デバイス以外の別個のデバイスの一部であり得る。
【0094】
[0103] いくつかの実施形態では、ビデオ符号化デバイス104および/またはビデオ復号デバイス112は、それぞれオーディオ符号化デバイスおよびオーディオ復号デバイスと統合され得る。ビデオ符号化デバイス104および/またはビデオ復号デバイス112はまた、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せなど、上記で説明されたコーディング技法を実装するために必要である他のハードウェアまたはソフトウェアを含み得る。ビデオ符号化デバイス104およびビデオ復号デバイス112は、それぞれのデバイスにおいて複合エンコーダ/デコーダ(コーデック)の一部として統合され得る。
【0095】
[0104]
図1に示されている例示的なシステムは、本明細書で使用され得る1つの例示的な例である。本明細書で説明される技法を使用してビデオデータを処理するための技法は、任意のデジタルビデオ符号化および/または復号デバイスによって実施され得る。概して、本開示の技法はビデオ符号化デバイスまたはビデオ復号デバイスによって実施されるが、本技法は、一般に「コーデック」と呼ばれる複合ビデオエンコーダデコーダによっても実施され得る。その上、本開示の技法はまた、ビデオプリプロセッサによって実施され得る。ソースデバイスおよび受信デバイスは、ソースデバイスが受信デバイスへの送信のためのコーディングされたビデオデータを生成するような、コーディングデバイスの例にすぎない。いくつかの例では、ソースデバイスおよび受信デバイスは、デバイスの各々がビデオ符号化構成要素とビデオ復号構成要素とを含むように、実質的に対称的に動作し得る。したがって、例示的なシステムは、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオテレフォニーのための、ビデオデバイス間の一方向または二方向のビデオ送信をサポートし得る。
【0096】
[0105] HEVC規格に対する拡張は、MV-HEVCと呼ばれるマルチビュービデオコーディング拡張と、SHVCと呼ばれるスケーラブルビデオコーディング拡張とを含む。MV-HEVC拡張およびSHVC拡張は、階層化コーディングの概念を共有し、異なるレイヤが、符号化されたビデオビットストリーム中に含まれる。コーディングされたビデオシーケンス中の各レイヤは、一意のレイヤ識別子(ID)によってアドレス指定される。レイヤIDは、NALユニットがそれに関連するレイヤを識別するために、NALユニットのヘッダ中に存在し得る。MV-HEVCでは、異なるレイヤは、通常、ビデオビットストリーム中の同じシーンの異なるビューを表す。SHVCでは、異なる空間解像度(またはピクチャ解像度)で、または異なる再構築忠実度でビデオビットストリームを表す異なるスケーラブルレイヤが提供される。スケーラブルレイヤは、(レイヤID=0である)ベースレイヤと(レイヤID=1、2、...nである)1つまたは複数のエンハンスメントレイヤとを含み得る。ベースレイヤは、HEVCの第1のバージョンのプロファイルに適合し得、ビットストリーム中の利用可能な最下位レイヤを表す。エンハンスメントレイヤは、ベースレイヤと比較して、増加された空間解像度、時間解像度またはフレームレート、および/あるいは再構築忠実度(または品質)を有する。エンハンスメントレイヤは、階層的に編成されており、下位レイヤに依存すること(または依存しないこと)がある。いくつかの例では、単一規格コーデックを使用して、異なるレイヤがコーディングされ得る(たとえば、HEVC、SHVC、または他のコーディング規格を使用して、すべてのレイヤが符号化される)。いくつかの例では、多規格コーデックを使用して、異なるレイヤがコーディングされ得る。たとえば、ベースレイヤは、AVCを使用してコーディングされ得るが、1つまたは複数のエンハンスメントレイヤは、HEVC規格に対するSHVC拡張および/またはMV-HEVC拡張を使用してコーディングされ得る。
【0097】
[0106] 概して、レイヤは、VCL NALユニットのセットと非VCL NALユニットの対応するセットとを含む。NALユニットは、特定のレイヤID値を割り当てられる。レイヤは、あるレイヤが下位レイヤに依存し得るという意味で、階層的であり得る。レイヤセットは、自己完結型であるビットストリーム内で表されるレイヤのセットを指し、これは、レイヤセット内のレイヤが、復号プロセスにおいてレイヤセット中の他のレイヤに依存することがあるが、復号のために任意の他のレイヤに依存しないことを意味する。したがって、レイヤセット中のレイヤは、ビデオコンテンツを表すことができる独立したビットストリームを形成することができる。レイヤセット中のレイヤのセットは、サブビットストリーム抽出プロセスの動作によって別のビットストリームから取得され得る。レイヤセットは、デコーダがいくつかのパラメータに従って動作することを希望するときに復号されるべきであるレイヤのセットに対応し得る。
【0098】
[0107] 前に説明されたように、HEVCビットストリームは、VCL NALユニットと非VCL NALユニットとを含む、NALユニットのグループを含む。VCL NALユニットは、コーディングされたビデオビットストリームを形成するコーディングされたピクチャデータを含む。たとえば、コーディングされたビデオビットストリームを形成するビットのシーケンスは、VCL NALユニット中に存在する。非VCL NALユニットは、他の情報に加えて、符号化されたビデオビットストリームに関係する高レベル情報をもつパラメータセットを含んでいることがある。たとえば、パラメータセットは、ビデオパラメータセット(VPS)と、シーケンスパラメータセット(SPS)と、ピクチャパラメータセット(PPS)とを含み得る。パラメータセットの目標の例は、ビットレート効率と、エラーレジリエンシーと、システムレイヤインターフェースを提供することとを含む。各スライスは、復号デバイス112がそのスライスを復号するために使用し得る情報にアクセスするために、単一のアクティブなPPS、SPS、およびVPSを参照する。VPS識別子(ID)と、SPS IDと、PPS IDとを含むIDが、パラメータセットごとにコーディングされ得る。SPSは、SPS IDとVPS IDとを含む。PPSは、PPS IDとSPS IDとを含む。各スライスヘッダはPPS IDを含む。IDを使用して、アクティブなパラメータセットが所与のスライスについて識別され得る。
【0099】
[0108] PPSは、所与のピクチャ中のすべてのスライスに適用される情報を含む。このため、ピクチャ中のすべてのスライスは、同じPPSを指す。異なるピクチャ中のスライスも、同じPPSを指し得る。SPSは、同じコーディングされたビデオシーケンス(CVS)またはビットストリーム中のすべてのピクチャに適用される情報を含む。前に説明されたように、コーディングされたビデオシーケンスは、(上記で説明された)ベースレイヤ中の、いくつかのプロパティをもつランダムアクセスポイントピクチャ(たとえば、瞬時復号参照(IDR:instantaneous decode reference)ピクチャまたは切断リンクアクセス(BLA:broken link access)ピクチャ、あるいは他の適切なランダムアクセスポイントピクチャ)で開始し、ベースレイヤ中の、いくつかのプロパティをもつランダムアクセスポイントピクチャを有する次のアクセスユニット(AU:access unit)(またはビットストリームの終端)までの、それを含まない、一連のAUである。SPS中の情報は、コーディングされたビデオシーケンス内でピクチャごとに変化しないことがある。コーディングされたビデオシーケンス中のピクチャは、同じSPSを使用し得る。VPSは、コーディングされたビデオシーケンスまたはビットストリーム内のすべてのレイヤに適用される情報を含む。VPSは、コーディングされたビデオシーケンス全体に適用されるシンタックス要素をもつシンタックス構造を含む。いくつかの実施形態では、VPS、SPS、またはPPSは、符号化されたビットストリームとともに帯域内で送信され得る。いくつかの実施形態では、VPS、SPS、またはPPSは、コーディングされたビデオデータを含んでいるNALユニットとは別個の送信において帯域外で送信され得る。
【0100】
[0109] 本開示は、概して、シンタックス要素などのある情報を「シグナリング」することに言及し得る。「シグナリング」という用語は、概して、符号化されたビデオデータを復号するために使用されるシンタックス要素および/または他のデータについての値の通信を指し得る。たとえば、ビデオ符号化デバイス104は、ビットストリーム中のシンタックス要素についての値をシグナリングし得る。概して、シグナリングは、ビットストリーム中で値を生成することを指す。上述のように、ビデオソース102は、実質的にリアルタイムでビットストリームをビデオ宛先デバイス122にトランスポートするか、または、ビデオ宛先デバイス122による後の取出しのためにシンタックス要素をストレージ108に記憶するときに行われ得るように、非リアルタイムでビットストリームをビデオ宛先デバイス122にトランスポートし得る。
【0101】
[0110] ビデオビットストリームは、補足エンハンスメント情報(SEI)メッセージをも含むことができる。たとえば、SEI NALユニットはビデオビットストリームの一部であり得る。いくつかの場合には、SEIメッセージは、復号プロセスによって必要とされない情報を含んでいることがある。たとえば、SEIメッセージ中の情報は、ビットストリームのビデオピクチャを復号するためのデコーダにとって必須でないことがあるが、デコーダは、ピクチャの表示または処理(たとえば、復号された出力)を改善するためにその情報を使用することができる。SEIメッセージ中の情報は埋込みメタデータであり得る。1つの例示的な例では、SEIメッセージ中の情報は、コンテンツの視認性を改善するためにデコーダ側エンティティによって使用され得る。いくつかの事例では、いくつかの適用例規格は、適用例規格に準拠するすべてのデバイスに品質の改善がもたらされ得るように、ビットストリーム中のそのようなSEIメッセージの存在(たとえば、多くの他の例に加えて、フレームパッキングSEIメッセージがビデオのあらゆるフレームのために搬送される、フレーム互換平面立体視3DTVビデオフォーマットのためのフレームパッキングSEIメッセージの搬送、リカバリポイントSEIメッセージのハンドリング、DVBにおけるパンスキャンスキャン矩形SEIメッセージの使用)を規定し得る。
【0102】
[0111] 上記で説明されたように、各ブロックについて、(本明細書では動きパラメータとも呼ばれる)動き情報のセットが利用可能であり得る。動き情報のセットは、前方予測方向および後方予測方向のための動き情報を含んでいる。前方予測方向および後方予測方向は、双方向予測モードの2つの予測方向であり、その場合、「前方」および「後方」という用語は、必ずしも幾何学的意味を有するとは限らない。代わりに、「前方」および「後方」は、現在のピクチャの参照ピクチャリスト0(RefPicList0またはL0)および参照ピクチャリスト1(RefPicList1またはL1)に対応する。いくつかの例では、ピクチャまたはスライスについて1つの参照ピクチャリストのみが利用可能であるとき、RefPicList0のみが利用可能であり、スライスの各ブロックの動き情報は常に前方である。
【0103】
[0112] いくつかの場合には、動きベクトルが、その参照インデックスとともに、コーディングプロセス(たとえば、動き補償)において使用される。関連する参照インデックスをもつそのような動きベクトルは、動き情報の単予測セットとして示される。各予測方向について、動き情報は、参照インデックスと動きベクトルとを含んでいることがある。いくつかの場合には、簡単のために、動きベクトル自体は、それが、関連する参照インデックスを有すると仮定されるように言及され得る。参照インデックスは、現在の参照ピクチャリスト(RefPicList0またはRefPicList1)中の参照ピクチャを識別するために使用される。動きベクトルは、現在のピクチャにおける座標位置から、参照インデックスによって識別される参照ピクチャにおける座標へのオフセットを提供する水平成分と垂直成分とを有する。たとえば、参照インデックスは、現在のピクチャ中のブロックのために使用されるべきである特定の参照ピクチャを示すことができ、動きベクトルは、参照ピクチャ中で、最も良く一致したブロック(現在のブロックに最も良く一致するブロック)が参照ピクチャ中のどこにあるかを示すことができる。
【0104】
[0113] ビデオコーディング規格において、ピクチャの表示順序を識別するためにピクチャ順序カウント(POC:picture order count)が使用され得る。1つのコーディングされたビデオシーケンス内の2つのピクチャが同じPOC値を有し得る場合があるが、それは、一般に、コーディングされたビデオシーケンス内で起こらない。複数のコーディングされたビデオシーケンスがビットストリーム中に存在するとき、POCの同じ値をもつピクチャは、復号順序に関して互いに近いことがある。ピクチャのPOC値は、参照ピクチャリスト構築と、HEVCの場合のような参照ピクチャセットの導出と、動きベクトルスケーリングとのために使用され得る。
【0105】
[0114] H.264/AVCでは、各インターマクロブロック(MB)は、1つの16×16MB区分と、2つの16×8MB区分と、2つの8×16MB区分と、4つの8×8MB区分とを含む、4つの異なる方法で区分され得る。1つのMB中の異なるMB区分は、各方向について異なる参照インデックス値(RefPicList0またはRefPicList1)を有し得る。いくつかの場合には、MBが4つの8×8MB区分に区分されないとき、MBは、各MB区分について各方向において1つの動きベクトルのみを有することができる。いくつかの場合には、MBが4つの8×8MB区分に区分されるとき、各8×8MB区分は、サブブロックにさらに区分され得、その場合、各サブブロックは、各方向において異なる動きベクトルを有することができる。いくつかの例では、8×8MB区分から、1つの8×8サブブロックと、2つの8×4サブブロックと、2つの4×8サブブロックと、4つの4×4サブブロックとを含むサブブロックを得るための4つの異なる方法がある。各サブブロックは、各方向において異なる動きベクトルを有することができる。したがって、動きベクトルは、サブブロックよりも高いに等しいレベルにおいて存在する。
【0106】
[0115] AVCでは、時間直接モードは、Bスライス中のスキップおよび/または直接モードについてMBレベルまたはMB区分レベルのいずれかにおいて有効にされ得る。各MB区分について、動きベクトルを導出するために、現在のブロックのRefPicList1[0]中の現在のMB区分とコロケートされたブロックの動きベクトルが使用される。コロケートされたブロック中の各動きベクトルは、POC距離に基づいてスケーリングされる。
【0107】
[0116] 空間直接モードはまた、AVCで実施され得る。たとえば、AVCでは、直接モードはまた、空間ネイバーから動き情報を予測することができる。
【0108】
[0117] 上述のように、HEVCでは、スライス中の最大コーディングユニットはコーディングツリーブロック(CTB)と呼ばれる。CTBはクワッドツリーを含んでおり、そのノードはコーディングユニットである。CTBのサイズは、HEVCメインプロファイルにおいて16×16から64×64にわたることができる。いくつかの場合には、8×8CTBサイズがサポートされ得る。コーディングユニット(CU)は、CTBの同じサイズであり、8×8程度に小さくなり得る。いくつかの場合には、各コーディングユニットは1つのモードでコーディングされる。CUがインターコーディングされるとき、CUは、2つまたは4つの予測ユニット(PU)にさらに区分され得るか、あるいは、さらなる区分が適用されないとき、ただ1つのPUになり得る。1つのCU中に2つのPUが存在するとき、それらは半分のサイズの矩形、あるいはCUの1/4または3/4のサイズを有する2つの矩形であり得る。
【0109】
[0118] CUがインターコーディングされるとき、各PUについて動き情報の1つのセットが存在する。さらに、各PUは、動き情報のセットを導出するために固有のインター予測モードでコーディングされる。
【0110】
[0119] たとえば、HEVCにおける動き予測の場合、予測ユニット(PU)のためのマージモードと高度動きベクトル予測(AMVP)モードとを含む、2つのインター予測モードがある。スキップは、マージの特殊な場合と見なされる。AMVPモードまたはマージモードのいずれかでは、動きベクトル(MV)候補リストが、複数の動きベクトル予測子について維持される。現在のPUの、(1つまたは複数の)動きベクトル、ならびにマージモードにおける参照インデックスは、MV候補リストから1つの候補をとることによって生成される。いくつかの例では、1つまたは複数のスケーリングウィンドウオフセットが、記憶された動きベクトルとともにMV候補リスト中に含まれ得る。
【0111】
[0120] MV候補リストがブロックの動き予測のために使用される例では、MV候補リストは、符号化デバイスと復号デバイスとによって別個に構築され得る。たとえば、MV候補リストは、ブロックを符号化するときに符号化デバイスによって生成され得、ブロックを復号するときに復号デバイスによって生成され得る。MV候補リスト中の動き情報候補に関係する情報(たとえば、1つまたは複数の動きベクトルに関係する情報、場合によってはMV候補リスト中に記憶され得る1つまたは複数のLICフラグに関係する情報、および/または他の情報)は、符号化デバイスと復号デバイスとの間でシグナリングされ得る。たとえば、マージモードでは、記憶された動き情報候補へのインデックス値が、(たとえば、ピクチャパラメータセット(PPS)、シーケンスパラメータセット(SPS)、ビデオパラメータセット(VPS)などのシンタックス構造、スライスヘッダ、ビデオビットストリーム中でまたはビデオビットストリームとは別個に送られる補足エンハンスメント情報(SEI)メッセージ、および/あるいは他のシグナリング中で)符号化デバイスから復号デバイスにシグナリングされ得る。復号デバイスは、MV候補リストを構築し、動き補償予測のために使用するために、構築されたMV候補リストから1つまたは複数の動き情報候補を取得するために、シグナリングされた参照またはインデックスを使用することができる。たとえば、復号デバイス112は、MV候補リストを構築し、ブロックの動き予測のために、インデックス付けされたロケーションからの動きベクトル(および、場合によっては、LICフラグ)を使用し得る。AMVPモードの場合、参照またはインデックスに加えて、差分または残差値もデルタとしてシグナリングされ得る。たとえば、AMVPモードの場合、復号デバイスは、1つまたは複数のMV候補リストを構築し、ブロックの動き補償予測を実施する際に、シグナリングされたインデックス値を使用して取得された1つまたは複数の動き情報候補に、デルタ値を適用することができる。
【0112】
[0121] いくつかの例では、MV候補リストは、マージモードのための最高5つの候補とAMVPモードのための2つの候補とを含んでいる。他の例では、異なる数の候補が、マージモードおよび/またはAMVPモードのためのMV候補リスト中に含まれ得る。マージ候補は、動き情報のセットを含んでいることがある。たとえば、動き情報のセットは、両方の参照ピクチャリスト(リスト0およびリスト1)に対応する動きベクトルと、参照インデックスとを含むことができる。マージ候補がマージインデックスによって識別される場合、現在のブロックの予測のために参照ピクチャが使用され、ならびに関連する動きベクトルが決定される。しかしながら、AMVPモードの下では、リスト0またはリスト1のいずれかからの各潜在的な予測方向について、AMVP候補が動きベクトルのみを含んでいるので、MV候補リストへのMVPインデックスとともに参照インデックスが明示的にシグナリングされる必要がある。AMVPモードでは、予測される動きベクトルはさらに改良され得る。
【0113】
[0122] 上記でわかるように、マージ候補は動き情報のフルセットに対応し、AMVP候補は、特定の予測方向および参照インデックスのためのただ1つの動きベクトルを含んでいる。両方のモードのための候補は、同じ空間および時間近隣ブロックから同様に導出される。
【0114】
[0123] いくつかの例では、マージモードは、インター予測PUが、空間的に近隣する動きデータ位置と2つの時間的にコロケートされた動きデータ位置のうちの1つとのグループから選択される動きデータ位置を含むインター予測PUから、1つまたは複数の同じ動きベクトルと、予測方向と、1つまたは複数の参照ピクチャインデックスとを継承することを可能にする。AMVPモードの場合、PUの1つまたは複数の動きベクトルは、エンコーダおよび/またはデコーダによって構築されたAMVP候補リストからの1つまたは複数の動きベクトル予測子(MVP)に対して叙述的にコーディングされ得る。いくつかの事例では、PUの単一方向インター予測の場合、エンコーダおよび/またはデコーダは、単一のAMVP候補リストを生成することができる。いくつかの事例では、PUの双方向予測の場合、エンコーダおよび/またはデコーダは、1つが前方予測方向からの空間および時間近隣PUの動きデータを使用し、1つが後方予測方向からの空間および時間近隣PUの動きデータを使用する、2つのAMVP候補リストを生成することができる。
【0115】
[0124] 両方のモードのための候補は、空間および/または時間近隣ブロックから導出され得る。たとえば、
図2Aおよび
図2Bは、空間近隣候補を示す概念図を含む。
図2Aは、マージモードのための空間近隣動きベクトル(MV)候補を示す。
図2Bは、AMVPモードのための空間近隣動きベクトル(MV)候補を示す。空間MV候補は、特定のPU(PU0)について、近隣ブロックから導出されるが、ブロックから候補を生成する方法は、マージモードおよびAMVPモードについて異なる。
【0116】
[0125] マージモードでは、エンコーダは、様々な動きデータ位置からマージング候補を考慮することによって、マージング候補リストを形成することができる。たとえば、
図2Aに示されているように、最高5つの空間MV候補が、
図2Aにおいて番号0~4で示されている空間的に近隣する動きデータ位置に関して導出され得る。MV候補は、番号0~4によって示されている順序で、マージング候補リスト中で順序付けられ得る。たとえば、位置および順序は、左位置(0)と、上側位置(1)と、右上側位置(2)と、左下側位置(3)と、左上側位置(4)とを含むことができる。
図2Aでは、ブロック200はPU0 202とPU1 204とを含む。いくつかの例では、ビデオコーダが、マージモードを使用してPU0 202のための動き情報をコーディングすべきであるとき、ビデオコーダは、空間近隣ブロック210、空間近隣ブロック212、空間近隣ブロック214、空間近隣ブロック216、および空間近隣ブロック218からの動き情報を、上記で説明された順序で候補リストに追加することができる。
【0117】
[0126]
図2Bに示されているAVMPモードでは、近隣ブロックは、2つのグループ、すなわち、ブロック0および1を含む左グループと、ブロック2、3、および4を含む上側グループとに分割される。
図2Bでは、ブロック0、1、2、3、および4は、それぞれ、ブロック230、232、234、236、および238としてラベルをつけられている。ここで、ブロック220は、PU0 222とPU1 224とを含み、ブロック230、232、234、236、および238は、PU0 222に対する空間ネイバーを表す。各グループについて、シグナリングされた参照インデックスによって示された参照ピクチャと同じ参照ピクチャを参照する近隣ブロック中の潜在的候補が、グループの最終候補を形成するために選定されるべき最高優先度を有する。すべての近隣ブロックが、同じ参照ピクチャを指す動きベクトルを含んでいるとは限らない可能性がある。したがって、そのような候補が見つけられ得ない場合、第1の利用可能な候補は、最終候補を形成するためにスケーリングされることになり、したがって時間距離差分が補償され得る。
【0118】
[0127]
図3Aおよび
図3Bは、時間動きベクトル予測を示す概念図を含む。
図3Aは、PU0 302とPU1 304とを含む例示的なCU300を示す。PU0 302は、PU0 302のための中心ブロック310とPU0 302に対する右下ブロック306とを含む。
図3Aはまた、以下で説明されるように、動き情報がPU0 302の動き情報からそれについて予測され得る外部ブロック308を示す。
図3Bは、動き情報がそれについて予測されるべきである現在のブロック326を含む現在のピクチャ342を示す。
図3Bはまた、(現在のブロック326に対するコロケートされたブロック324を含む)現在のピクチャ342に対するコロケートされたピクチャ330と、現在の参照ピクチャ340と、コロケートされた参照ピクチャ332とを示す。コロケートされたブロック324は、ブロック326の動き情報のための時間動きベクトル予測子(TMVP)候補322として使用される、コロケートされた動きベクトル320を使用して予測される。
【0119】
[0128] ビデオコーダは、時間動きベクトル予測子(TMVP:temporal motion vector predictor)候補(たとえば、TMVP候補322)を、有効にされ、利用可能である場合、任意の空間動きベクトル候補の後にMV候補リストに追加することができる。TMVP候補のための動きベクトル導出のプロセスは、マージモードとAMVPモードの両方について同じである。しかしながら、いくつかの事例では、マージモードでのTMVP候補のためのターゲット参照インデックスは、常に0に設定される。
【0120】
[0129] TMVP候補導出のための1次ブロックロケーションは、空間近隣候補を生成するために使用される上側および左ブロックへのバイアスを補償するための、
図3Aに示されているような、コロケートされたPU304の外側の右下ブロック306である。しかしながら、ブロック306が、(たとえば、
図3A中のブロック308によって示されているように)現在のCTB(またはLCU)行の外側に位置する場合、またはブロック306のための動き情報が利用可能でない場合、ブロックはPU302の中心ブロック310と置換される。
【0121】
[0130]
図3Bを参照すると、TMVP候補322のための動きベクトルは、スライスレベルで示されるコロケートされたピクチャ330のコロケートされたブロック324から導出され得る。AVCにおける時間直接モードと同様に、TMVP候補の動きベクトルは、動きベクトルスケーリングを受けることがあり、動きベクトルスケーリングは、現在のピクチャ342と現在の参照ピクチャ340との間の、およびコロケートされたピクチャ330とコロケートされた参照ピクチャ332との間の距離差分を補償するために実施される。すなわち、動きベクトル320は、現在のピクチャ(たとえば、現在のピクチャ342)と現在の参照ピクチャ(たとえば、現在の参照ピクチャ340)との間の、およびコロケートされたピクチャ(たとえば、コロケートされたピクチャ330)とコロケートされた参照ピクチャ(たとえば、コロケートされた参照ピクチャ332)との間の距離差分に基づいてTMVP候補322を作り出すためにスケーリングされ得る。
【0122】
[0131] 動き予測の他の態様は、HEVC規格および/あるいは他の規格、フォーマット、またはコーデックにおいてカバーされる。たとえば、マージモードおよびAMVPモードのいくつかの他の態様がカバーされる。一態様は動きベクトルスケーリングを含む。動きベクトルスケーリングに関して、動きベクトルの値は、提示時間におけるピクチャの距離に比例すると仮定され得る。動きベクトルは、2つのピクチャ、すなわち、参照ピクチャと、動きベクトルを含んでいるピクチャ(すなわち、含有(containing)ピクチャ)とを関連付ける。他の動きベクトルを予測するために動きベクトルが利用されるとき、含有ピクチャと参照ピクチャとの距離は、ピクチャ順序カウント(POC)値に基づいて計算される。
【0123】
[0132] 予測されるべき動きベクトルについて、それの関連する含有ピクチャと参照ピクチャの両方は異なり得る。したがって、(POCに基づく)新しい距離が計算される。その上、動きベクトルは、これらの2つのPOC距離に基づいてスケーリングされ得る。空間近隣候補では、2つの動きベクトルのための含有ピクチャは同じであるが、参照ピクチャは異なる。HEVCでは、動きベクトルスケーリングは、空間および時間近隣候補のためにTMVPとAMVPの両方に適用される。
【0124】
[0133] 動き予測の別の態様は擬似動きベクトル候補生成を含む。たとえば、動きベクトル候補リストが完全でない場合、擬似動きベクトル候補が生成され、すべての候補が取得されるまでリストの最後に挿入される。マージモードでは、2つのタイプの擬似MV候補、すなわち、Bスライスについてのみ導出された組合せ候補と、第1のタイプが十分な擬似候補を提供しない場合にAMVPのためにのみ使用される0候補とがある。すでに候補リスト中にあり、必要な動き情報を有する候補の各ペアについて、双方向組合せ動きベクトル候補が、リスト0中のピクチャを参照する第1の候補の動きベクトルと、リスト1中のピクチャを参照する第2の候補の動きベクトルとの組合せによって導出される。
【0125】
[0134] いくつかの実装形態では、MV候補リストに新しい候補を追加または挿入するとき、プルーニングプロセスが実施され得る。たとえば、いくつかの場合には、異なるブロックからのMV候補が同じ情報を含むことが可能である。そのような場合、MV候補リスト中の複数のMV候補の重複する動き情報を記憶することは、MV候補リストの冗長および効率の減少につながることがある。いくつかの例では、プルーニングプロセスは、MV候補リスト中の冗長をなくすかまたは最小限に抑えることができる。たとえば、プルーニングプロセスは、MV候補リストに追加されるべき潜在的MV候補を、MV候補リストにすでに記憶されたMV候補と比較することを含むことができる。1つの例示的な例では、記憶された動きベクトルの(現在のブロックの位置に対する参照ブロックの位置を示す)水平変位(Δx)および垂直変位(Δy)は、潜在的候補の動きベクトルの水平変位(Δx)および垂直変位(Δy)と比較され得る。その比較が、潜在的候補の動きベクトルが1つまたは複数の記憶された動きベクトルのいずれにも一致しないことを明らかにした場合、潜在的候補は、プルーニングされるべき候補と見なされず、MV候補リストに追加され得る。この比較に基づいて一致が見つけられた場合、潜在的MV候補は、MV候補リストに追加されず、これは、同一の候補の挿入を回避する。いくつかの場合には、複雑さを低減するために、各潜在的MV候補をすべての既存の候補と比較する代わりに、プルーニングプロセス中に、限られた数の比較のみが実施される。
【0126】
[0135] HEVCなど、いくつかのコーディング方式では、重み付き予測(WP)がサポートされ、その場合、(aによって示される)スケーリングファクタ、(sによって示される)シフト数、および(bによって示される)オフセットが、動き補償において使用される。参照ピクチャの位置(x,y)におけるピクセル値がp(x,y)であると仮定すると、動き補償における予測値として、p(x,y)の代わりにp’(x,y)=((a*p(x,y)+(1<<(s-1)))>>s)+bが使用される。
【0127】
[0136] WPが有効にされるとき、現在のスライスの各参照ピクチャについて、WPが参照ピクチャのために適用されるか否かを示すためのフラグがシグナリングされる。WPが1つの参照ピクチャについて適用される場合、WPパラメータのセット(すなわち、a、sおよびb)がデコーダに送られ、参照ピクチャからの動き補償のために使用される。いくつかの例では、ルーマおよびクロマ成分のためのWPをフレキシブルにオン/オフするために、WPフラグおよびWPパラメータは、ルーマ成分とクロマ成分とについて別個にシグナリングされる。WPでは、WPパラメータの1つの同じセットが、1つの参照ピクチャ中のすべてのピクセルのために使用される。
【0128】
[0137]
図4Aは、単方向インター予測のために使用される、現在のブロック402のネイバーの再構築されたサンプルと、参照ブロック404のネイバーサンプルとの一例を示す図である。現在のブロック402のために動きベクトルMV410がコーディングされ得、ここで、MV410は、参照ブロック404を識別するための、参照ピクチャリストへの参照インデックス、および/または他の動き情報を含むことができる。たとえば、MVは、現在のピクチャにおける座標位置から、参照インデックスによって識別される参照ピクチャにおける座標へのオフセットを提供する水平成分と垂直成分とを含むことができる。
図4Bは、双方向インター予測のために使用される、現在のブロック422のネイバーの再構築されたサンプルと、第1の参照ブロック424および第2の参照ブロック426のネイバーサンプルとの一例を示す図である。この場合、現在のブロック422のために、2つの動きベクトルMV0およびMV1が、それぞれ、第1の参照ブロック424および第2の参照ブロック426を識別するためにコーディングされ得る。
【0129】
[0138] 前に説明されたように、OBMCは、動き補償のために実装され得る例示的な動き補償技術である。OBMCは、予測正確さを増加させ、ブロッキングアーティファクトを回避することができる。OBMCでは、予測は、複数の予測の重み付き和であるか、またはそれを含むことができる。いくつかの場合には、ブロックは、各次元において、より大きくなり得、近隣ブロックと象限的に重複することがある。したがって、各ピクセルは、複数のブロックに属し得る。たとえば、いくつかの例示的な場合では、各ピクセルは、4つのブロックに属し得る。そのような方式では、OBMCは、各ピクセルについて4つの予測を実装し得、それらは、重み付き平均まで合計される。
【0130】
[0139] いくつかの場合には、OBMCは、CUレベルにおける特定のシンタックスを使用してオンおよびオフに切り替えられ得る。いくつかの例では、CU境界OBMCモードとサブブロック境界OBMCモードとを含む、OBMCにおける2つの方向モード(たとえば、上、左、右、下または下側)がある。CU境界OBMCモードが使用されるとき、現在のCU MVを使用する元の予測ブロックと、近隣CU MVを使用する別の予測ブロック(たとえば、「OBMCブロック」)とがブレンドされる。いくつかの例では、CU中の左上サブブロック(たとえば、CUの第1の/上行上の第1のまたは最左サブブロック)は、上および左OBMCブロックを有し、他の最上サブブロック(たとえば、CUの第1の/上行上の他のサブブロック)は、上OBMCブロックのみを有し得る。他の最左サブブロック(たとえば、CUの左側のCUの第1の列上のサブブロック)は、左OBMCブロックのみを有し得る。
【0131】
[0140] サブブロック境界OBMCモードは、サブCUコーディングツールが現在のCUにおいて有効にされるとき、有効にされ得(たとえば、アフィン動き補償予測、高度時間動きベクトル予測(ATMVP)など)、これは、サブブロックベースでの異なるMVを可能にする。サブブロック境界OBMCモードでは、接続された近隣サブブロックのMVを使用する別個のOBMCブロックが、現在のサブブロックのMVを使用する元の予測ブロックとブレンドされ得る。いくつかの例では、サブブロック境界OBMCモードでは、接続された近隣サブブロックのMVを使用する別個のOBMCブロックが、本明細書でさらに説明されるように、現在のサブブロックのMVを使用する元の予測ブロックと並列にブレンドされ得る。他の例では、サブブロック境界モードでは、接続された近隣サブブロックのMVを使用する別個のOBMCブロックが、現在のサブブロックのMVを使用する元の予測ブロックと連続的にブレンドされ得る。いくつかの場合には、CU境界OBMCモードは、サブブロック境界OBMCモードの前に実施され得、サブブロック境界OBMCモードのためのあらかじめ定義されたブレンディング順序は、上と、左と、下と、右とを含み得る。
【0132】
[0141] 近隣サブブロックN(たとえば、現在のサブブロックの上側の、現在のサブブロックの左の、現在のサブブロックの下側の、および現在のサブブロックの右のサブブロック)のMVに基づく予測が、PNとして示され得、現在のサブブロックのMVに基づく予測が、PCとして示され得る。サブブロックNが、現在のサブブロックと同じ動き情報を含んでいるとき、元の予測ブロックは、サブブロックNのMVに基づく予測ブロックとブレンドされないことがある。いくつかの場合には、PN中の4つの行/列のサンプルが、PC中の同じサンプルとブレンドされ得る。いくつかの例では、PNのために、重み付けファクタ1/4、1/8、1/16、1/32が使用され得、PCのために、対応する重み付けファクタ3/4、7/8、15/16、31/32が使用され得る。いくつかの場合には、コーディングブロックの高さまたは幅が4に等しいか、またはCUがサブCUモードでコーディングされる場合、PN中の2つの行/列のみが、OBMCブレンディングを可能にされ得る。
【0133】
[0142]
図5は、CU境界OBMCモードのためのOBMCブレンディングの一例を示す図である。
図5に示されているように、CU境界OBMCモードが使用されるとき、現在のCU動きベクトル(MV)を使用する(
図5において「元のブロック」として示される)元の予測ブロックと、近隣CU MVを使用する(
図5において「OBMCブロック」として示される)別の予測ブロックとがブレンドされる。CU530の最左上サブブロックが、上および左OBMCブロックを有することができ、それらは、本明細書で説明されるように、ブレンドされたブロックを生成するために使用され得る。CU530の他の最上サブブロックは上OBMCブロックのみを有し、それは、本明細書で説明されるように、ブレンドされたブロックを生成するために使用され得る。たとえば、CU530の上に位置するサブブロック502は、
図5においてOBMCサブブロック504として示されている、上OBMCブロックのみを有する。OBMCサブブロック504は、1つまたは複数のサブブロックを含み得る、上近隣CUのサブブロックであり得る。CU530の他の最左サブブロックは左OBMCブロックのみを有し、それは、本明細書で説明されるように、ブレンドされたブロックを生成するために使用され得る。たとえば、CU530のサブブロック506は、
図5においてOBMCサブブロック508として示されている、左OBMCブロックのみを有する。OBMCサブブロック508は、1つまたは複数のサブブロックを含み得る、左近隣CUのサブブロックであり得る。
【0134】
[0143]
図5に示されている例では、サブブロック502およびOBMCサブブロック504は、ブレンドされたブロック515を生成するために使用され得る。たとえば、サブブロック502についての第1の予測結果を生成するために、サブブロック502のロケーションにおけるCU530のサンプルは、サブブロック502のMVを使用して予測され、次いで、重みファクタ510を乗算され得る。同様に、サブブロック502についての第2の予測結果を生成するために、サブブロック502のロケーションにおけるCU530のサンプルは、OBMCサブブロック504のMVを使用して予測され、次いで、重みファクタ512を乗算され得る。サブブロック502について生成された第1の予測結果は、ブレンドされたブロック515を導出するために、サブブロック502について生成された第2の予測結果と加算され得る。重みファクタ510は、重みファクタ512と同じであるかまたはそれとは異なり得る。いくつかの例では、重みファクタ510は重みファクタ512とは異なり得る。いくつかの場合には、重みファクタ510は、サブブロック502からブレンドされている画像データおよび/またはサンプルのCU境界までの(たとえば、CU530の境界までの)距離に依存することがあり、重みファクタ512は、サブブロック502からブレンドされている画像データおよび/またはサンプルのCU境界までの(たとえば、CU530の境界までの)距離に依存することがある。重みファクタ510と重みファクタ512とは合計1になり得る。
【0135】
[0144] サブブロック506およびOBMCサブブロック508は、ブレンドされたブロック520を生成するために使用され得る。たとえば、サブブロック506についての第1の予測結果を生成するために、サブブロック506のロケーションにおけるCU530のサンプルは、サブブロック506のMVを使用して予測され、次いで、重みファクタ516を乗算され得る。同様に、サブブロック506についての第2の予測結果を生成するために、サブブロック506のロケーションにおけるCU530のサンプルは、OBMCサブブロック508のMVを使用して予測され、次いで、重みファクタ518を乗算され得る。サブブロック506について生成された第1の予測結果は、ブレンドされたブロック520を導出するために、サブブロック506について生成された第2の予測結果と加算され得る。重みファクタ516は、重みファクタ518と同じであるかまたはそれとは異なり得る。いくつかの例では、重みファクタ516は重みファクタ518とは異なり得る。いくつかの場合には、重みファクタ516は、サブブロック506からブレンドされている画像データおよび/またはサンプルのCU境界までの(たとえば、CU530の境界までの)距離に依存することがあり、重みファクタ518は、サブブロック506からブレンドされている画像データおよび/またはサンプルのCU境界までの(たとえば、CU530の境界までの)距離に依存することがある。
【0136】
[0145]
図6は、サブブロック境界OBMCモードのためのOBMCブレンディングの一例を示す図である。いくつかの例では、サブブロック境界OBMCモードは、サブCUコーディングツール、たとえば、アフィンモードまたはツール、高度時間動きベクトル予測(ATMVP)モードまたはツールなどが現在のCUのために有効にされるとき、有効にされ得る。
図6に示されているように、4つの接続された近隣サブブロックのMVを使用する4つの別個のOBMCブロックが、現在のサブブロックMVを使用する元の予測ブロックとブレンドされる。言い換えれば、4つの別個のOBMCブロックからのMVが、現在のサブブロックMVを使用する元の予測に加えて現在のサブブロック602のサンプルの4つの予測を生成するために使用され、次いで、ブレンドされたブロック625を形成するために元の予測と組み合わせられる。たとえば、CU630のサブブロック602は、近隣OBMCブロック604~610とブレンドされ得る。いくつかの場合には、サブブロック602は、サブブロック境界OBMCモードのためのブレンディング順序に従ってOBMCブロック604~610とブレンドされ得る。いくつかの例では、ブレンディング順序は、上OBMCブロック(たとえば、OBMCブロック604)と、左OBMCブロック(たとえば、OBMCブロック606)と、下OBMCブロック(たとえば、OBMCブロック608)と、最後に右OBMCブロック(たとえば、OBMCブロック610)とを含むことができる。いくつかの場合には、サブブロック602は、本明細書でさらに説明されるように、OBMCブロック604~610と並列にブレンドされ得る。
【0137】
[0146]
図6に示されている例では、サブブロック602は、式622に従って各OBMCブロック620とブレンドされ得る。式622は、OBMCブロック604~610の各々について1回実施され得、それぞれの結果が、ブレンドされたブロック625を生成するために加算され得る。たとえば、式622中のOBMCブロック620は、OBMCブロック604~610からの式622中で使用されるOBMCブロックを表すことができる。いくつかの例では、重み測定ファクタ612が、ブレンドされているサブブロック602内の画像データおよび/またはサンプルのロケーションに依存することがある。いくつかの例では、重み測定ファクタ612は、ブレンドされているそれぞれのOBMCブロック(たとえば、OBMCブロック604、OBMCブロック606、OBMCブロック608、OBMCブロック610)からの画像データおよび/またはサンプルの距離に依存することがある。
【0138】
[0147] 例示のために、OBMCブロック620は、OBMCブロック604のMVを使用する予測が、式622に従って、サブブロック602のMVを使用する予測とブレンドされるとき、OBMCブロック604を表すことができる。ここで、サブブロック602の元の予測は、重み測定ファクタ612を乗算され得、その結果が、OBMCブロック604のMVを使用する予測に重み測定ファクタ614を乗算したことの結果と加算され得る。OBMCブロック620はまた、OBMCブロック606のMVを使用する予測が、式622に従って、サブブロック602のMVを使用する予測とブレンドされるとき、OBMCブロック606を表すことができる。ここで、サブブロック602の元の予測は、重み測定ファクタ612を乗算され得、その結果が、OBMCブロック606のMVを使用する予測に重み測定ファクタ614を乗算したことの結果と加算され得る。OBMCブロック620は、さらに、OBMCブロック608のMVを使用する予測が、式622に従って、サブブロック602のMVを使用する予測とブレンドされるとき、OBMCブロック608を表すことができる。サブブロック602の元の予測は、重み測定ファクタ612を乗算され得、その結果が、OBMCブロック608のMVを使用する予測に重み測定ファクタ614を乗算したことの結果と加算され得る。最後に、OBMCブロック620は、OBMCブロック610のMVを使用する予測が、式622に従って、サブブロック602のMVを使用する予測とブレンドされるとき、OBMCブロック610を表すことができる。サブブロック602の元の予測は、重み測定ファクタ612を乗算され得、その結果が、OBMCブロック610のMVを使用する予測に重み測定ファクタ614を乗算したことの結果と加算され得る。OBMCブロック604~610の各々についての式622からの結果は、ブレンドされたブロック625を導出するために加算され得る。
【0139】
[0148] 式622に従う並列ブレンディングは、並列ハードウェア算出設計にとって使いやすく、等しくない重み付けを回避または制限すること、不整合を回避することなどを行うことができる。たとえば、JEMでは、サブブロック境界OBMCモードのためのあらかじめ定義された連続ブレンディング順序は、上、左、下側、および右である。この順序は、算出複雑さを増加させ、性能を減少させ、等しくない重み付けを生じ、および/または不整合をもたらすことがある。いくつかの例では、この連続順序は、連続算出が並列ハードウェア設計にとって使いやすくないので、問題をもたらすことがある。その上、この連続順序は、等しくない重み付けを生じることがある。たとえば、ブレンディングプロセス中に、後のサブブロックブレンディングにおける近隣サブブロックのOBMCブロックが、以前のサブブロックブレンディングにおいてよりも多く、最終サンプル予測値に寄与し得る。
【0140】
[0149] 一方、本明細書で説明されるシステムおよび技法は、
図6に示されているように並列ブレンディングを実装する1つの式において、4つのOBMCサブブロックをもつ現在のサブブロックの予測値をブレンドすることができ、特定の近隣サブブロックを選好することなしに重み付けファクタを固定することができる。たとえば、並列ブレンディングを実装する式を使用すると、最終予測Pは、P=w1*P
c+w2*P
top+w3*P
left+w4*P
below+w5*P
rightであり得、ここで、P
topは、上近隣サブブロックのMVに基づく予測であり、P
leftは、左近隣サブブロックのMVに基づく予測であり、P
belowは、下側近隣サブブロックのMVに基づく予測であり、P
rightは、右近隣サブブロックのMVに基づく予測であり、w1、w2、w3、w4、およびw5は、それぞれの重み付けファクタである。いくつかの場合には、重みw1は、1-w2-w3-w4-w5に等しいことがある。近隣サブブロックNのMVに基づく予測は、サブブロックNまで最も遠い行/列中のサンプルにノイズを追加し/含め/導入し得るので、本明細書で説明されるシステムおよび技法は、それぞれ、近隣サブブロックNに{1番目に、2番目に、3番目に、4番目に}最も近い現在のサブブロックのサンプル行/列について、重みw2、w3、w4、およびw5の各々についての値を{a、b、c、0}に設定することができる。
【0141】
[0150] たとえば、第1の要素a(たとえば、重み付けファクタa)は、それぞれの近隣サブブロックNに最も近いサンプル行または列についてのものであり得、最後の要素0は、それぞれの近隣サブブロックNまで最も遠いサンプル行または列についてのものであり得る。例示のために、4×4サンプルのサイズを有する現在のサブブロックの左上サンプルに対する位置(0,0)、(0,1)、および(1,1)を例として使用すると、最終予測P(x,y)は、以下のように導出され得る。
【0142】
【0143】
[0151] 4×4の現在のサブブロックについての近隣OBMCサブブロックからの重み付けファクタの例示的な和(たとえば、w2+w3+w4+w5)は、
図7に示されている表700に示されているようなものであり得る。いくつかの場合には、重み付けファクタは、除算演算を回避するために左シフトされ得、これは、算出複雑さ/負担を増加させ、および/または結果の不整合をもたらすことがある。たとえば、{a’、b’、c’、0}は、{a<<shift、b<<shift、c<<shift、0}であるように設定され得、ここで、shiftは正の整数である。この例では、重みw1は、(1<<shift)-a’-b’-c’に等しいことがあり、Pは、(w1*P
c+w2*P
top+w3*P
left+w4*P
below+w5*P
right+(1<<(shift-1)))>>shiftに等しいことがある。{a’、b’、c’、0}を設定するための例示的な例は、{15、8、3、0}であり、ここで、それらの値は、元の値の6左シフトされた結果であり、w1は、(1<<6)-a-b-cに等しい。P=(w1*P
c+w2*P
top+w3*P
left+w4*P
below+w5*P
right+(1<<5))>>6。
【0144】
[0152] いくつかの態様では、w2、w3、w4、およびw5の値は、それぞれ、近隣サブブロックNに{1番目に、2番目に、3番目に、4番目に}最も近い現在のサブブロックのサンプル行/列について、{a、b、0、0}に設定され得る。例示のために、4×4サンプルのサイズを有する現在のサブブロックの左上サンプルに対する位置(0,0)、(0,1)、および(1,1)を例として使用すると、最終予測P(x,y)は、以下のように導出され得る。
【0145】
【0146】
[0153] 4×4の現在のサブブロックについての近隣OBMCサブブロックからの重み付けファクタの例示的な和(たとえば、w2+w3+w4+w5)は、
図8に示されている表800に示されている。図示のように、いくつかの例では、重み付けファクタは、コーナーサンプル(たとえば、(0,0)、(0,3)、(3,0)、および(3,3)におけるサンプル)におけるw2+w3+w4+w5の和が他の境界サンプル(たとえば、(0,1)、(0,2)、(1,0)、(2,0)、(3,1)、(3,2)、(1,3)、および(2,3)におけるサンプル)におけるw2+w3+w4+w5の和よりも大きく、および/または境界サンプルにおけるw2+w3+w4+w5の和が中間サンプル(たとえば、(1,1)、(1,2)、(2,1)、および(2,2)におけるサンプル)における値よりも大きいように、選定され得る。
【0147】
[0154] いくつかの場合には、いくつかの動き補償が、現在のサブブロックのMVと、それの空間近隣ブロック/サブブロック(たとえば、上、左、下側、および右)のMVとの間の類似度に基づいて、OBMCプロセス中にスキップされ得る。たとえば、動き補償が、所与の近隣ブロック/サブブロックからの動き情報を使用して呼び出される前に、毎回、(1つまたは複数の)近隣ブロック/サブブロックの(1つまたは複数の)MVが、以下の1つまたは複数の条件に基づいて現在のサブブロックの(1つまたは複数の)MVと比較され得る。1つまたは複数の条件は、たとえば、近隣ブロック/サブブロックによって使用されるすべての予測リスト(たとえば、単予測におけるリストL0またはリストL1、あるいは双予測におけるL0とL1の両方)が、現在のサブブロックの予測のためにも使用されるという第1の条件、(1つまたは複数の)同じ参照ピクチャが、(1つまたは複数の)近隣ブロック/サブブロックの(1つまたは複数の)MVと、現在のサブブロックの(1つまたは複数の)MVとによって使用されるという第2の条件、および/または(1つまたは複数の)近隣MVと(1つまたは複数の)現在のMVとの間の水平MV差分の絶対値が、あらかじめ定義されたMV差分しきい値Tよりも大きくなく、(1つまたは複数の)近隣MVと(1つまたは複数の)現在のMVとの間の垂直MV差分の絶対値が、あらかじめ定義されたMV差分しきい値Tよりも大きくないという第3の条件(双予測が使用される場合、L0 MVとL1 MVの両方が検査され得る)を含むことができる。
【0148】
[0155] いくつかの例では、第1の条件、第2の条件、および第3の条件が満たされる場合、所与の近隣ブロック/サブブロックを使用する動き補償が実施されず、所与の近隣ブロック/サブブロックNのMVを使用するOBMCサブブロックが、無効にされ、元のサブブロックとブレンドされない。いくつかの場合には、CU境界OBMCモードとサブブロック境界OBMCモードとは、しきい値Tの異なる値を有することができる。モードがCU境界OBMCモードである場合、TはT1に設定され、他の場合、TはT2に設定され、ここで、T1およびT2は0よりも大きい。いくつかの場合には、条件が満たされるとき、近隣ブロック/サブブロックをスキップするための不可逆アルゴリズムが、サブブロック境界OBMCモードのみに適用され得る。CU境界OBMCモードは、代わりに、近隣ブロック/サブブロックによって使用されるすべての予測リスト(たとえば、単予測におけるL0またはL1のいずれか、あるいは双予測におけるL0とL1の両方)が、現在のサブブロックの予測のためにも使用されるという第4の条件、(1つまたは複数の)同じ参照ピクチャが、(1つまたは複数の)近隣MVと(1つまたは複数の)現在のMVとによって使用されるという第5の条件、および近隣MVと現在のMVとが同じであるという第6の条件(双予測が使用される場合、L0 MVとL1 MVの両方が検査され得る)など、1つまたは複数の条件が満たされるとき、近隣ブロック/サブブロックをスキップするための可逆アルゴリズムを適用することができる。
【0149】
[0156] いくつかの場合には、第1の条件、第2の条件、および第3の条件が満たされるとき、近隣ブロック/サブブロックをスキップするための不可逆アルゴリズムは、CU境界OBMCモードのみに適用される。いくつかの場合には、サブブロック境界OBMCモードは、第4の条件、第5の条件、および第6の条件が満たされるとき、近隣ブロック/サブブロックをスキップするための可逆アルゴリズムを適用することができる。
【0150】
[0157] いくつかの態様では、CU境界OBMCモードでは、符号化および復号時間を節約するために、不可逆高速アルゴリズムが実装され得る。たとえば、第1のOBMCブロックと隣接するOBMCブロックとは、1つまたは複数の条件が満たされる場合、より大きいOBMCブロックにマージされ、一緒に生成され得る。1つまたは複数の条件は、たとえば、現在のCUの第1の近隣ブロックによって使用されるすべての予測リスト(たとえば、単予測におけるL0またはL1のいずれか、あるいは双予測におけるL0とL1の両方)が、(第1の近隣ブロックと同じ方向にある)現在のCUの第2の近隣ブロックの予測のためにも使用されるという条件、(1つまたは複数の)同じ参照ピクチャが、第1の近隣ブロックのMVと第2の近隣ブロックのMVとによって使用されるという条件、および、第1の近隣ブロックのMVと第2の近隣ブロックのMVとの間の水平MV差分の絶対値が、あらかじめ定義されたMV差分しきい値T3よりも大きくなく、第1の近隣ブロックのMVと第2の近隣ブロックのMVとの間の垂直MV差分の絶対値が、あらかじめ定義されたMV差分しきい値T3よりも大きくないという条件(双予測が使用される場合、L0 MVとL1 MVの両方が検査され得る)を含むことができる。
【0151】
[0158] いくつかの態様では、サブブロック境界OBMCモードでは、符号化および復号時間を節約するために、不可逆高速アルゴリズムが実装され得る。いくつかの例では、SbTMVPモードおよびDMVRは8×8ベースで実施され、アフィン動き補償は4×4ベースで実施される。本明細書で説明されるシステムおよび技法は、8×8ベースでサブブロック境界OBMCモードを実装することができる。いくつかの場合には、本明細書で説明されるシステムおよび技法は、8×8サブブロックが4つの4×4サブブロックにスプリットされるべきであるかどうかを決定するために、あらゆる8×8サブブロックにおいて類似度検査を実施することができ、スプリットされる場合、OBMCが4×4ベースで実施される。
【0152】
[0159]
図9は、1つの8×8ブロック中のサブブロック902~908をもつ例示的なCU910を示す図である。いくつかの例では、サブブロック境界OBMCモードにおける不可逆高速アルゴリズムは、各8×8サブブロックについて、4つの4×4OBMCサブブロック(たとえば、OBMCサブブロック902(P)、OBMCサブブロック904(Q)、OBMCサブブロック906(R)、およびOBMCサブブロック908(S))を含むことができる。OBMCサブブロック902~908は、以下の条件、すなわち、サブブロック902(P)、904(Q)、906(R)、および908(S)によって使用される(1つまたは複数の)予測リスト(たとえば、単予測におけるL0またはL1のいずれか、あるいは双予測におけるL0とL1の両方)が同じであるという第1の条件、(1つまたは複数の)同じ参照ピクチャがサブブロック902(P)、904(Q)、906(R)、および908(S)のMVによって使用されるという第2の条件、ならびに任意の2つのサブブロック(たとえば、902(P)および904(Q)、902(P)および906(R)、902(P)および908(S)、904(Q)および906(R)、904(Q)および908(S)、ならびに906(R)および908(S))のMV間の水平MV差分の絶対値が、あらかじめ定義されたMV差分しきい値T4よりも大きくなく、任意の2つのサブブロック(たとえば、902(P)および904(Q)、902(P)および906(R)、902(P)および908(S)、904(Q)および906(R)、904(Q)および908(S)、ならびに906(R)および908(S))のMV間の垂直MV差分の絶対値が、あらかじめ定義されたMV差分しきい値T4よりも大きくないという第3の条件(双予測が使用される場合、L0 MVとL1 MVの両方が検査され得る)のうちの少なくとも1つが満たされないとき、OBMCブレンディングのために有効にされ得る。
【0153】
[0160] 上記の条件のすべてが満たされる場合、本明細書で説明されるシステムおよび技法は、8×8サブブロックOBMCを実施することができ、ここで、上、左、下側、および右MVからの8×8OBMCサブブロックが、サブブロック境界OBMCモードのためのOBMCブレンディングを使用して生成される。そうではなく、上記の条件のうちの少なくとも1つが満たされないとき、OBMCがこの8×8サブブロックにおいて4×4ベースで実施され、8×8サブブロック中のあらゆる4×4サブブロックが、上、左、下側、および右MVから4つのOBMCサブブロックを生成する。
【0154】
[0161] いくつかの態様では、CUがマージモードでコーディングされるとき、OBMCフラグが、マージモードにおける動き情報コピーと同様の方法で、近隣ブロックからコピーされる。そうではなく、CUがマージモードでコーディングされないとき、OBMCフラグが、CUについて、OBMCが適用されるか否かを示すためにシグナリングされ得る。
【0155】
[0162]
図10は、OBMCを実施するための例示的なプロセス1000を示すフローチャートである。ブロック1002において、プロセス1000は、OBMCモードがビデオデータのブロックの現在のサブブロックのために有効にされると決定することを含むことができる。いくつかの例では、OBMCモードは、サブブロック境界OBMCモードを含むことができる。
【0156】
[0163] ブロック1004において、プロセス1000は、現在のサブブロックに関連する第1の予測と、現在のサブブロックの上ボーダーに隣接する第1のOBMCブロックに関連する第2の予測と、現在のサブブロックの左ボーダーに隣接する第2のOBMCブロックに関連する第3の予測と、現在のサブブロックの下ボーダーに隣接する第3のOBMCブロックに関連する第4の予測と、現在のサブブロックの右ボーダーに隣接する第4のOBMCブロックに関連する第5の予測とを決定することを含むことができる。
【0157】
[0164] ブロック1006において、プロセス1000は、第1の重みを第1の予測に適用し、第2の重みを第2の予測に適用し、第3の重みを第3の予測に適用し、第4の重みを第4の予測に適用し、第5の重みを第5の予測に適用したことの結果に基づいて、第6の予測を決定することを含むことができる。いくつかの場合には、対応するサブブロック(たとえば、現在のサブロック、第1のOBMCブロック、第2のOBMCブロック、第3のOBMCブロック、第4のOBMCブロック)のコーナーサンプルの重み値の和は、対応するサブブロックの他の境界サンプルの重み値の和よりも大きくなり得る。いくつかの場合には、他の境界サンプルの重み値の和は、対応するサブブロックの非境界サンプル(たとえば、サブブロックの境界に接し(border)ていないサンプル)の重み値の和よりも大きくなり得る。
【0158】
[0165] たとえば、いくつかの場合には、第1の重み、第2の重み、第3の重み、および第4の重みの各々は、現在のサブブロック、第1のOBMCブロック、第2のOBMCブロック、第3のOBMCブロック、または第4のOBMCブロックの対応するサブブロックからの1つまたは複数のサンプルに関連する1つまたは複数の重み値を含むことができる。その上、対応するサブブロックのコーナーサンプルの重み値の和は、対応するサブブロックの他の境界サンプルの重み値の和よりも大きくなり得、対応するサブブロックの他の境界サンプルの重み値の和は、対応するサブブロックの非境界サンプルの重み値の和よりも大きくなり得る。
【0159】
[0166] ブロック1008において、プロセス1000は、第6の予測に基づいて、ビデオデータのブロックの現在のサブブロックに対応するブレンドされたサブブロックを生成することを含むことができる。
【0160】
[0167]
図11は、OBMCを実施するための別の例示的なプロセス1100を示すフローチャートである。ブロック1102において、プロセス1100は、OBMCモードがビデオデータのブロックの現在のサブブロックのために有効にされると決定することを含むことができる。いくつかの例では、OBMCモードは、サブブロック境界OBMCモードを含むことができる。
【0161】
[0168] ブロック1104において、プロセス1100は、現在のサブブロックに隣接する少なくとも1つの近隣サブブロックについて、第1の条件、第2の条件、および第3の条件が満たされるかどうかを決定することを含むことができる。いくつかの例では、第1の条件は、現在のサブブロックを予測するための1つまたは複数の参照ピクチャリストのすべてが、近隣サブブロックを予測するために使用されることを含むことができる。
【0162】
[0169] いくつかの例では、第2の条件は、同一の1つまたは複数の参照ピクチャが、現在のサブブロックと近隣サブブロックとに関連する動きベクトルを決定するために使用されることを含むことができる。
【0163】
[0170] いくつかの例では、第3の条件は、現在のサブブロックの水平動きベクトルと近隣サブブロックの水平動きベクトルとの間の第1の差分と、現在のサブブロックの垂直動きベクトルと近隣サブブロックの垂直動きベクトルとの間の第2の差分とが、動きベクトル差分しきい値を超えないことを含むことができる。いくつかの例では、動きベクトル差分しきい値は0よりも大きい。
【0164】
[0171] ブロック1106において、プロセス1100は、OBMCモードが現在のサブブロックのために有効にされると決定することと、第1の条件、第2の条件、および第3の条件が満たされると決定することとに基づいて、現在のサブブロックの動き補償のために近隣サブブロックの動き情報を使用しないことを決定することを含むことができる。
【0165】
[0172] いくつかの態様では、プロセス1100は、現在のサブブロックのためにデコーダ側動きベクトル改良(DMVR)モード、サブブロックベース時間動きベクトル予測(SbTMVP)モード、またはアフィン動き補償予測モードを使用するという決定に基づいて、現在のサブブロックのためにサブブロック境界OBMCモードを実施することを決定することを含むことができる。
【0166】
[0173] いくつかの態様では、プロセス1100は、サブブロックのためにサブブロック境界OBMCモードを実施することを含むことができる。いくつかの場合には、サブブロックのためにサブブロック境界OBMCモードを実施することは、現在のサブブロックに関連する第1の予測と、現在のサブブロックの上ボーダーに隣接する第1のOBMCブロックに関連する第2の予測と、現在のサブブロックの左ボーダーに隣接する第2のOBMCブロックに関連する第3の予測と、現在のサブブロックの下ボーダーに隣接する第3のOBMCブロックに関連する第4の予測と、現在のサブブロックの右ボーダーに隣接する第4のOBMCブロックに関連する第5の予測とを決定することと、第1の重みを第1の予測に適用し、第2の重みを第2の予測に適用し、第3の重みを第3の予測に適用し、第4の重みを第4の予測に適用し、第5の重みを第5の予測に適用したことの結果に基づいて、第6の予測を決定することと、第6の予測に基づいて、現在のサブブロックに対応するブレンドされたサブブロックを生成することとを含むことができる。
【0167】
[0174] いくつかの場合には、対応するサブブロック(たとえば、現在のサブロック、第1のOBMCブロック、第2のOBMCブロック、第3のOBMCブロック、第4のOBMCブロック)のコーナーサンプルの重み値の和は、対応するサブブロックの他の境界サンプルの重み値の和よりも大きくなり得る。いくつかの場合には、他の境界サンプルの重み値の和は、対応するサブブロックの非境界サンプル(たとえば、現在のサブブロックの境界に接していないサンプル)の重み値の和よりも大きくなり得る。
【0168】
[0175] たとえば、いくつかの場合には、第2の重み、第3の重み、第4の重み、および第5の重みの各々は、現在のサブブロックの対応するサブブロックからの1つまたは複数のサンプルに関連する1つまたは複数の重み値を含むことができる。その上、現在のサブブロックのコーナーサンプルの重み値の和は、現在のサブブロックの他の境界サンプルの重み値の和よりも大きくなり得、現在のサブブロックの他の境界サンプルの重み値の和は、現在のサブブロックの非境界サンプルの重み値の和よりも大きくなり得る。
【0169】
[0176] いくつかの態様では、プロセス1100は、ビデオデータの追加のブロックのために局所照明補償(LIC)モードを使用することを決定することと、追加のブロックのためにLICモードを使用するという決定に基づいて、追加のブロックのためのOBMCモードに関連する情報のシグナリングをスキップすることとを含むことができる。いくつかの例では、追加のブロックのためのOBMCモードに関連する情報のシグナリングをスキップすることは、空の値をもつシンタックスフラグ(たとえば、そのフラグについて値が含まれない)をシグナリングすることを含むことができ、シンタックスフラグはOBMCモードに関連する。いくつかの態様では、プロセス1100は、空の値をもつシンタックスフラグを含む信号を受信することを含むことができ、シンタックスフラグは、ビデオデータの追加のブロックのためのOBMCモードに関連する。いくつかの態様では、プロセス1100は、空の値をもつシンタックスフラグに基づいて、追加のブロックのためにOBMCモードを使用しないことを決定することを含むことができる。
【0170】
[0177] いくつかの場合には、追加のブロックのためのOBMCモードに関連する情報のシグナリングをスキップすることは、追加のブロックのためにLICモードを使用するという決定に基づいて、追加のブロックのためにOBMCモードを使用しないまたは有効にしないことを決定することと、追加のブロックのためのOBMCモードに関連する値をシグナリングすることをスキップすることとを含むことができる。
【0171】
[0178] いくつかの態様では、プロセス1100は、OBMCモードが追加のブロックのために有効にされるかどうかを決定することと、OBMCモードが追加のブロックのために有効にされるかどうかを決定すること、および追加のブロックのためにLICモードを使用するという決定に基づいて、追加のブロックのためのOBMCモードに関連する情報をシグナリングすることをスキップすることを決定することとを含むことができる。
【0172】
[0179] いくつかの態様では、プロセス1100は、ビデオデータのブロックの現在のサブブロックのためにコーディングユニット(CU)境界OBMCモードを使用することを決定することと、現在のサブブロックに関連する重みを、現在のサブブロックに関連するそれぞれの予測に適用したことの第1の結果と、1つまたは複数のそれぞれの重みを、現在のサブブロックに隣接する1つまたは複数のサブブロックに関連する1つまたは複数のそれぞれの予測に適用したことの第2の結果との和に基づいて、現在のサブブロックについての最終予測を決定することとを含むことができる。
【0173】
[0180] いくつかの例では、現在のサブブロックの動き補償のために近隣サブブロックの動き情報を使用しないことを決定することは、現在のサブブロックの動き補償のための近隣サブブロックの動き情報の使用をスキップすることを含むことができる。
【0174】
[0181] いくつかの場合には、プロセス1000および/またはプロセス1100は、エンコーダおよび/またはデコーダによって実装され得る。
【0175】
[0182] いくつかの実装形態では、(プロセス1000およびプロセス1100を含む)本明細書で説明されるプロセス(または方法)は、
図1に示されているシステム100など、コンピューティングデバイスまたは装置によって実施され得る。たとえば、プロセスは、
図1および
図12に示されている符号化デバイス104によって、別のビデオソース側デバイスまたはビデオ送信デバイスによって、
図1および
図13に示されている復号デバイス112によって、ならびに/あるいは、プレーヤデバイス、ディスプレイ、または任意の他のクライアント側デバイスなど、別のクライアント側デバイスによって実施され得る。いくつかの場合には、コンピューティングデバイスまたは装置は、プロセス1000および/またはプロセス1100のステップを行うように構成された、1つまたは複数の入力デバイス、1つまたは複数の出力デバイス、1つまたは複数のプロセッサ、1つまたは複数のマイクロプロセッサ、1つまたは複数のマイクロコンピュータ、および/または(1つまたは複数の)他の構成要素を含み得る。
【0176】
[0183] いくつかの例では、コンピューティングデバイスは、モバイルデバイス、デスクトップコンピュータ、サーバコンピュータおよび/またはサーバシステム、あるいは他のタイプのコンピューティングデバイスを含み得る。コンピューティングデバイスの構成要素(たとえば、1つまたは複数の入力デバイス、1つまたは複数の出力デバイス、1つまたは複数のプロセッサ、1つまたは複数のマイクロプロセッサ、1つまたは複数のマイクロコンピュータ、および/または他の構成要素)は、回路において実装され得る。たとえば、構成要素は、本明細書で説明される様々な動作を実施するために、1つまたは複数のプログラマブル電子回路(たとえば、マイクロプロセッサ、グラフィックス処理ユニット(GPU)、デジタル信号プロセッサ(DSP)、中央処理ユニット(CPU)、および/または他の好適な電子回路)を含むことができる、電子回路もしくは他の電子ハードウェアを含むことができ、および/またはそれらを使用して実装され得、ならびに/あるいは、コンピュータソフトウェア、ファームウェア、もしくはそれらの任意の組合せを含むことができ、および/またはそれらを使用して実装され得る。いくつかの例では、コンピューティングデバイスまたは装置は、ビデオフレームを含むビデオデータ(たとえば、ビデオシーケンス)をキャプチャするように構成されたカメラを含み得る。いくつかの例では、ビデオデータをキャプチャするカメラまたは他のキャプチャデバイスは、コンピューティングデバイスとは別個であり、その場合、コンピューティングデバイスは、キャプチャされたビデオデータを受信または取得する。コンピューティングデバイスは、ビデオデータを通信するように構成されたネットワークインターフェースを含み得る。ネットワークインターフェースは、インターネットプロトコル(IP)ベースのデータまたは他のタイプのデータを通信するように構成され得る。いくつかの例では、コンピューティングデバイスまたは装置は、ビデオビットストリームのピクチャのサンプルなど、出力ビデオコンテンツを表示するためのディスプレイを含み得る。
【0177】
[0184] プロセスは、論理流れ図に関して説明され得、その動作は、ハードウェア、コンピュータ命令、またはそれらの組合せにおいて実施され得る動作のシーケンスを表す。コンピュータ命令のコンテキストでは、動作は、1つまたは複数のプロセッサによって実行されたとき、具陳された動作を実施する1つまたは複数のコンピュータ可読記憶媒体に記憶されたコンピュータ実行可能命令を表す。概して、コンピュータ実行可能命令は、特定の機能を実施するか、または特定のデータタイプを実装する、ルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。動作が説明される順序は、限定として解釈されるものではなく、任意の数の説明される動作は、プロセスを実装するために任意の順序でおよび/または並行して組み合わせられ得る。
【0178】
[0185] さらに、プロセスは、実行可能命令で構成された1つまたは複数のコンピュータシステムの制御下で実施され得、まとめて1つまたは複数のプロセッサ上で、ハードウェアによって、またはそれらの組合せで実行するコード(たとえば、実行可能命令、1つまたは複数のコンピュータプログラム、または1つまたは複数のアプリケーション)として実装され得る。上述のように、コードは、たとえば、1つまたは複数のプロセッサによって実行可能な複数の命令を備えるコンピュータプログラムの形態で、コンピュータ可読または機械可読記憶媒体に記憶され得る。コンピュータ可読または機械可読記憶媒体は非一時的であり得る。
【0179】
[0186] 本明細書で説明されるコーディング技法は、例示的なビデオ符号化および復号システム(たとえば、システム100)において実装され得る。いくつかの例では、システムは、宛先デバイスによって後で復号されるべき符号化されたビデオデータを提供するソースデバイスを含む。特に、ソースデバイスは、コンピュータ可読媒体を介してビデオデータを宛先デバイスに提供する。ソースデバイスおよび宛先デバイスは、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスのいずれかを備え得る。いくつかの場合には、ソースデバイスおよび宛先デバイスはワイヤレス通信のために装備され得る。
【0180】
[0187] 宛先デバイスは、コンピュータ可読媒体を介して復号されるべき符号化されたビデオデータを受信し得る。コンピュータ可読媒体は、ソースデバイスから宛先デバイスに符号化されたビデオデータを移動することが可能な任意のタイプの媒体またはデバイスを備え得る。一例では、コンピュータ可読媒体は、ソースデバイスが符号化されたビデオデータを宛先デバイスにリアルタイムで直接送信することを可能にするための通信媒体を備え得る。符号化されたビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイスに送信され得る。通信媒体は、無線周波数(RF)スペクトルまたは1つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイスから宛先デバイスへの通信を可能にするために有用であり得る任意の他の機器を含み得る。
【0181】
[0188] いくつかの例では、符号化されたデータは、出力インターフェースからストレージデバイスに出力され得る。同様に、符号化されたデータは、入力インターフェースによってストレージデバイスからアクセスされ得る。ストレージデバイスは、ハードドライブ、Blu-ray(登録商標)ディスク、DVD、CD-ROM、フラッシュメモリ、揮発性または不揮発性メモリ、あるいは符号化されたビデオデータを記憶するための任意の他の好適なデジタル記憶媒体など、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。さらなる一例では、ストレージデバイスは、ソースデバイスによって生成された符号化されたビデオを記憶し得るファイルサーバまたは別の中間ストレージデバイスに対応し得る。宛先デバイスは、ストリーミングまたはダウンロードを介してストレージデバイスから記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶し、その符号化されたビデオデータを宛先デバイスに送信することが可能な任意のタイプのサーバであり得る。例示的なファイルサーバは、(たとえば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブを含む。宛先デバイスは、インターネット接続を含む、任意の標準のデータ接続を通して、符号化ビされたデオデータにアクセスし得る。これは、ファイルサーバに記憶された符号化されたビデオデータにアクセスするのに好適であるワイヤレスチャネル(たとえば、Wi-Fi接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、またはその両方の組合せを含み得る。ストレージデバイスからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組合せであり得る。
【0182】
[0189] 本開示の技法は、必ずしもワイヤレス適用例または設定に限定されるとは限らない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システムは、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオテレフォニーなどの適用例をサポートするために、一方向または二方向のビデオ送信をサポートするように構成され得る。
【0183】
[0190] 一例では、ソースデバイスは、ビデオソースと、ビデオエンコーダと、出力インターフェースとを含む。宛先デバイスは、入力インターフェースと、ビデオデコーダと、ディスプレイデバイスとを含み得る。ソースデバイスのビデオエンコーダは、本明細書で開示される技法を適用するように構成され得る。他の例では、ソースデバイスおよび宛先デバイスは、他の構成要素または構成を含み得る。たとえば、ソースデバイスは、外部カメラなどの外部ビデオソースからビデオデータを受信し得る。同様に、宛先デバイスは、一体型ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
【0184】
[0191] 上記の例示的なシステムは一例にすぎない。ビデオデータを並行して処理するための技法は、任意のデジタルビデオ符号化および/または復号デバイスによって実施され得る。概して、本開示の技法はビデオ符号化デバイスによって実施されるが、本技法は、一般に「コーデック」と呼ばれるビデオエンコーダ/デコーダによっても実施され得る。その上、本開示の技法はビデオプリプロセッサによっても実施され得る。ソースデバイスおよび宛先デバイスは、ソースデバイスが宛先デバイスへの送信のためのコーディングされたビデオデータを生成するような、コーディングデバイスの例にすぎない。いくつかの例では、ソースデバイスおよび宛先デバイスは、デバイスの各々がビデオ符号化構成要素とビデオ復号構成要素とを含むように、実質的に対称的に動作し得る。したがって、例示的なシステムは、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオテレフォニーのための、ビデオデバイス間の一方向または二方向のビデオ送信をサポートし得る。
【0185】
[0192] ビデオソースは、ビデオカメラなどのビデオキャプチャデバイス、前にキャプチャされたビデオを含んでいるビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースを含み得る。さらなる代替として、ビデオソースは、ソースビデオとしてのコンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブビデオとコンピュータ生成ビデオとの組合せを生成し得る。いくつかの場合には、ビデオソースがビデオカメラである場合、ソースデバイスおよび宛先デバイスは、いわゆるカメラフォンまたはビデオフォンを形成し得る。ただし、上述のように、本開示で説明される技法は、概してビデオコーディングに適用可能であり得、ワイヤレスおよび/またはワイヤード適用例に適用され得る。各場合において、キャプチャされたビデオ、プリキャプチャされたビデオ、またはコンピュータ生成ビデオは、ビデオエンコーダによって符号化され得る。符号化されたビデオ情報は、次いで、出力インターフェースによってコンピュータ可読媒体上に出力され得る。
【0186】
[0193] 述べられたように、コンピュータ可読媒体は、ワイヤレスブロードキャストまたはワイヤードネットワーク送信などの一時媒体、あるいはハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、Blu-rayディスク、または他のコンピュータ可読媒体などの記憶媒体(すなわち、非一時的記憶媒体)を含み得る。いくつかの例では、ネットワークサーバ(図示せず)は、たとえば、ネットワーク送信を介して、ソースデバイスから符号化されたビデオデータを受信し、その符号化されたビデオデータを宛先デバイスに提供し得る。同様に、ディスクスタンピング設備など、媒体製造設備のコンピューティングデバイスは、ソースデバイスから符号化されたビデオデータを受信し、その符号化されたビデオデータを含んでいるディスクを作り出し得る。したがって、コンピュータ可読媒体は、様々な例において、様々な形態の1つまたは複数のコンピュータ可読媒体を含むことが理解され得る。
【0187】
[0194] 宛先デバイスの入力インターフェースはコンピュータ可読媒体から情報を受信する。コンピュータ可読媒体の情報は、ビデオエンコーダによって定義され、ビデオデコーダによっても使用される、ブロックおよび他のコーディングされたユニット、たとえば、ピクチャグループ(GOP)の特性および/または処理を記述するシンタックス要素を含む、シンタックス情報を含み得る。ディスプレイデバイスは、復号されたビデオデータをユーザに対して表示し、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。本出願の様々な実施形態が説明された。
【0188】
[0195] 符号化デバイス104および復号デバイス112の具体的な詳細が、それぞれ
図12および
図13に示されている。
図12は、本開示で説明される技法のうちの1つまたは複数を実装し得る例示的な符号化デバイス104を示すブロック図である。符号化デバイス104は、たとえば、本明細書で説明されるシンタックス構造(たとえば、VPS、SPS、PPS、または他のシンタックス要素のシンタックス構造)を生成し得る。符号化デバイス104は、ビデオスライス内のビデオブロックのイントラ予測コーディングおよびインター予測コーディングを実施し得る。前に説明されたように、イントラコーディングは、所与のビデオフレームまたはピクチャ内の空間冗長性を低減または除去するために、空間予測に少なくとも部分的に依拠する。インターコーディングは、ビデオシーケンスの隣接フレームまたは周囲のフレーム内の時間冗長性を低減または除去するために、時間予測に少なくとも部分的に依拠する。イントラモード(Iモード)は、いくつかの空間ベースの圧縮モードのいずれかを指すことがある。単方向予測(Pモード)または双予測(Bモード)などのインターモードは、いくつかの時間ベースの圧縮モードのいずれかを指すことがある。
【0189】
[0196] 符号化デバイス104は、区分ユニット35と、予測処理ユニット41と、フィルタユニット63と、ピクチャメモリ64と、加算器50と、変換処理ユニット52と、量子化ユニット54と、エントロピー符号化ユニット56とを含む。予測処理ユニット41は、動き推定ユニット42と、動き補償ユニット44と、イントラ予測処理ユニット46とを含む。ビデオブロック再構築のために、符号化デバイス104はまた、逆量子化ユニット58と、逆変換処理ユニット60と、加算器62とを含む。フィルタユニット63は、デブロッキングフィルタ、適応ループフィルタ(ALF)、およびサンプル適応オフセット(SAO)フィルタなど、1つまたは複数のループフィルタを表すものとする。
図12では、フィルタユニット63はループ内フィルタであるとして示されているが、他の構成では、フィルタユニット63はループ後フィルタとして実装され得る。後処理デバイス57は、符号化デバイス104によって生成された符号化されたビデオデータに対して追加の処理を実施し得る。本開示の技法は、いくつかの事例では、符号化デバイス104によって実装され得る。しかしながら、他の事例では、本開示の技法のうちの1つまたは複数は、後処理デバイス57によって実装され得る。
【0190】
[0197]
図12に示されているように、符号化デバイス104はビデオデータを受信し、区分ユニット35はデータをビデオブロックに区分する。区分はまた、たとえば、LCUおよびCUのクワッドツリー構造に従って、スライス、スライスセグメント、タイル、または他のより大きいユニットへの区分、ならびにビデオブロック区分を含み得る。符号化デバイス104は、概して、符号化されるべきビデオスライス内のビデオブロックを符号化する構成要素を示す。スライスは、複数のビデオブロックに(および場合によっては、タイルと呼ばれるビデオブロックのセットに)分割され得る。予測処理ユニット41は、誤差結果(たとえば、コーディングレートおよびひずみレベルなど)に基づいて現在のビデオブロックについて、複数のイントラ予測コーディングモードのうちの1つ、または複数のインター予測コーディングモードのうちの1つなど、複数の可能なコーディングモードのうちの1つを選択し得る。予測処理ユニット41は、得られたイントラコーディングされたブロックまたはインターコーディングされたブロックを、残差ブロックデータを生成するために加算器50に提供し、参照ピクチャとして使用するための符号化されたブロックを再構築するために加算器62に提供し得る。
【0191】
[0198] 予測処理ユニット41内のイントラ予測処理ユニット46は、空間圧縮を行うために、コーディングされるべき現在のブロックと同じフレームまたはスライス中の1つまたは複数の近隣ブロックに対して現在のビデオブロックのイントラ予測コーディングを実施し得る。予測処理ユニット41内の動き推定ユニット42および動き補償ユニット44は、時間圧縮を行うために、1つまたは複数の参照ピクチャ中の1つまたは複数の予測ブロックに対して現在のビデオブロックのインター予測コーディングを実施する。
【0192】
[0199] 動き推定ユニット42は、ビデオシーケンスに対する所定のパターンに従って、ビデオスライスのためのインター予測モードを決定するように構成され得る。所定のパターンは、シーケンス中のビデオスライスを、Pスライス、Bスライス、またはGPBスライスに指定し得る。動き推定ユニット42と動き補償ユニット44とは、高度に統合され得るが、概念的な目的のために別個に示されている。動き推定ユニット42によって実施される動き推定は、ビデオブロックについての動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、参照ピクチャ内の予測ブロックに対する、現在のビデオフレームまたはピクチャ内のビデオブロックの予測ユニット(PU)の変位を示し得る。
【0193】
[0200] 予測ブロックは、絶対差分和(SAD)、2乗差分和(SSD)、または他の差分メトリックによって決定され得るピクセル差分に関して、コーディングされるべきビデオブロックのPUにぴったり一致することがわかるブロックである。いくつかの例では、符号化デバイス104は、ピクチャメモリ64に記憶された参照ピクチャのサブ整数ピクセル位置についての値を計算し得る。たとえば、符号化デバイス104は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動き推定ユニット42は、フルピクセル位置および分数ピクセル位置に対して動き探索を実施し、分数ピクセル精度で動きベクトルを出力し得る。
【0194】
[0201] 動き推定ユニット42は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコーディングされたスライス中のビデオブロックのPUについての動きベクトルを計算する。参照ピクチャは、第1の参照ピクチャリスト(リスト0)または第2の参照ピクチャリスト(リスト1)から選択され得、それらの各々は、ピクチャメモリ64に記憶された1つまたは複数の参照ピクチャを識別する。動き推定ユニット42は、計算された動きベクトルをエントロピー符号化ユニット56と動き補償ユニット44とに送る。
【0195】
[0202] 動き補償ユニット44によって実施される動き補償は、動き推定によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成すること、場合によっては、サブピクセル精度への補間を実施することを伴い得る。現在のビデオブロックのPUのための動きベクトルを受信すると、動き補償ユニット44は、動きベクトルが参照ピクチャリストにおいて指す予測ブロックの位置を特定し得る。符号化デバイス104は、コーディングされている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって、残差ビデオブロックを形成する。ピクセル差分値は、ブロックのための残差データを形成し、ルーマ差分成分とクロマ差分成分の両方を含み得る。加算器50は、この減算演算を実施する1つまたは複数の構成要素を表す。動き補償ユニット44はまた、ビデオスライスのビデオブロックを復号する際に復号デバイス112が使用するための、ビデオブロックとビデオスライスとに関連するシンタックス要素を生成し得る。
【0196】
[0203] イントラ予測処理ユニット46は、上記で説明されたように、動き推定ユニット42と動き補償ユニット44とによって実施されるインター予測の代替として、現在のブロックをイントラ予測し得る。特に、イントラ予測処理ユニット46は、現在のブロックを符号化するために使用すべきイントラ予測モードを決定し得る。いくつかの例では、イントラ予測処理ユニット46は、たとえば、別個の符号化パス中に、様々なイントラ予測モードを使用して現在のブロックを符号化し得、イントラ予測処理ユニット46は、テストされたモードから使用するために適切なイントラ予測モードを選択し得る。たとえば、イントラ予測処理ユニット46は、様々なテストされたイントラ予測モードのためにレートひずみ分析を使用してレートひずみ値を計算し得、テストされたモードの中で最良のレートひずみ特性を有するイントラ予測モードを選択し得る。レートひずみ分析は、概して、符号化されたブロックと、符号化されたブロックを作り出すために符号化された元の符号化されていないブロックとの間のひずみ(または誤差)の量、ならびに符号化されたブロックを作り出すために使用されるビットレート(すなわち、ビット数)を決定する。イントラ予測処理ユニット46は、どのイントラ予測モードがブロックについて最良のレートひずみ値を呈するかを決定するために、様々な符号化されたブロックについてのひずみおよびレートから比を計算し得る。
【0197】
[0204] いずれの場合も、ブロックのためのイントラ予測モードを選択した後に、イントラ予測処理ユニット46は、ブロックのための選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット56に提供し得る。エントロピー符号化ユニット56は、選択されたイントラ予測モードを示す情報を符号化し得る。符号化デバイス104は、様々なブロックのための符号化コンテキストの構成データ定義、ならびにコンテキストの各々について使用すべき、最確イントラ予測モード、イントラ予測モードインデックステーブル、および修正されたイントラ予測モードインデックステーブルの指示を送信ビットストリーム中に含め得る。ビットストリーム構成データは、複数のイントラ予測モードインデックステーブルと、(コードワードマッピングテーブルとも呼ばれる)複数の修正されたイントラ予測モードインデックステーブルとを含み得る。
【0198】
[0205] 予測処理ユニット41が、インター予測またはイントラ予測のいずれかを介して、現在のビデオブロックのための予測ブロックを生成した後、符号化デバイス104は、現在のビデオブロックから予測ブロックを減算することによって残差ビデオブロックを形成する。残差ブロック中の残差ビデオデータは、1つまたは複数のTU中に含まれ、変換処理ユニット52に適用され得る。変換処理ユニット52は、離散コサイン変換(DCT)または概念的に同様の変換などの変換を使用して、残差ビデオデータを残差変換係数に変換する。変換処理ユニット52は、残差ビデオデータをピクセルドメインから周波数ドメインなどの変換ドメインにコンバートし得る。
【0199】
[0206] 変換処理ユニット52は、得られた変換係数を量子化ユニット54に送り得る。量子化ユニット54は、ビットレートをさらに低減するために変換係数を量子化する。量子化プロセスは、係数の一部またはすべてに関連するビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって修正され得る。いくつかの例では、量子化ユニット54は、次いで、量子化された変換係数を含む行列の走査を実施し得る。代替的に、エントロピー符号化ユニット56が走査を実施し得る。
【0200】
[0207] 量子化の後に、エントロピー符号化ユニット56は量子化された変換係数をエントロピー符号化する。たとえば、エントロピー符号化ユニット56は、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディングまたは別のエントロピー符号化技法を実施し得る。エントロピー符号化ユニット56によるエントロピー符号化の後に、符号化ビットストリームは、復号デバイス112に送信されるか、あるいは復号デバイス112が後で送信するかまたは取り出すためにアーカイブされ得る。エントロピー符号化ユニット56はまた、コーディングされている現在のビデオスライスのための動きベクトルと他のシンタックス要素とをエントロピー符号化し得る。
【0201】
[0208] 逆量子化ユニット58および逆変換処理ユニット60は、参照ピクチャの参照ブロックとして後で使用するためにピクセルドメインにおいて残差ブロックを再構築するために、それぞれ逆量子化および逆変換を適用する。動き補償ユニット44は、残差ブロックを参照ピクチャリスト内の参照ピクチャのうちの1つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット44はまた、動き推定において使用するためのサブ整数ピクセル値を計算するために、再構築された残差ブロックに1つまたは複数の補間フィルタを適用し得る。加算器62は、ピクチャメモリ64に記憶するための参照ブロックを作り出すために、再構築された残差ブロックを動き補償ユニット44によって作り出された動き補償予測ブロックに加算する。参照ブロックは、後続のビデオフレームまたはピクチャ中のブロックをインター予測するために、動き推定ユニット42および動き補償ユニット44によって参照ブロックとして使用され得る。
【0202】
[0209] このようにして、
図12の符号化デバイス104は、
図10に関して上記で説明されたプロセスおよび/または
図11に関して上記で説明されたプロセスを含む、本明細書で説明される技法のいずれかを実施するように構成されたビデオエンコーダの一例を表す。いくつかの場合には、本開示の技法のうちのいくつかは、後処理デバイス57によっても実装され得る。
【0203】
[0210]
図13は、例示的な復号デバイス112を示すブロック図である。復号デバイス112は、エントロピー復号ユニット80と、予測処理ユニット81と、逆量子化ユニット86と、逆変換処理ユニット88と、加算器90と、フィルタユニット91と、ピクチャメモリ92とを含む。予測処理ユニット81は、動き補償ユニット82と、イントラ予測処理ユニット84とを含む。復号デバイス112は、いくつかの例では、
図12からの符号化デバイス104に関して説明された符号化パスとは概して逆の復号パスを実施し得る。
【0204】
[0211] 復号プロセス中に、復号デバイス112は、符号化デバイス104によって送られた、符号化されたビデオスライスのビデオブロックと、関連するシンタックス要素とを表す符号化されたビデオビットストリームを受信する。いくつかの実施形態では、復号デバイス112は、符号化デバイス104から符号化されたビデオビットストリームを受信し得る。いくつかの実施形態では、復号デバイス112は、サーバ、メディアアウェアネットワーク要素(MANE)、ビデオエディタ/スプライサ、または上記で説明された技法のうちの1つまたは複数を実装するように構成された他のそのようなデバイスなど、ネットワークエンティティ79から符号化されたビデオビットストリームを受信し得る。ネットワークエンティティ79は、符号化デバイス104を含むことも、含まないこともある。本開示で説明される技法のうちのいくつかは、ネットワークエンティティ79が符号化されたビデオビットストリームを復号デバイス112に送信するより前に、ネットワークエンティティ79によって実装され得る。いくつかのビデオ復号システムでは、ネットワークエンティティ79および復号デバイス112は別個のデバイスの部分であり得るが、他の事例では、ネットワークエンティティ79に関して説明される機能は、復号デバイス112を備える同じデバイスによって実施され得る。
【0205】
[0212] 復号デバイス112のエントロピー復号ユニット80は、量子化された係数と、動きベクトルと、他のシンタックス要素とを生成するためにビットストリームをエントロピー復号する。エントロピー復号ユニット80は、動きベクトルと他のシンタックス要素とを予測処理ユニット81にフォワーディングする。復号デバイス112は、ビデオスライスレベルおよび/またはビデオブロックレベルのシンタックス要素を受信し得る。エントロピー復号ユニット80は、VPS、SPS、およびPPSなど、または複数のパラメータセット中の固定長シンタックス要素と可変長シンタックス要素の両方を処理し、パース(parse)し得る。
【0206】
[0213] ビデオスライスが、イントラコーディングされた(I)スライスとしてコーディングされたとき、予測処理ユニット81のイントラ予測処理ユニット84は、シグナリングされたイントラ予測モードと、現在のフレームまたはピクチャの前に復号されたブロックからのデータとに基づいて、現在のビデオスライスのビデオブロックのための予測データを生成し得る。ビデオフレームが、インターコーディングされた(すなわち、B、PまたはGPB)スライスとしてコーディングされたとき、予測処理ユニット81の動き補償ユニット82は、エントロピー復号ユニット80から受信された動きベクトルと、他のシンタックス要素とに基づいて、現在のビデオスライスのビデオブロックのための予測ブロックを作り出す。予測ブロックは、参照ピクチャリスト内の参照ピクチャのうちの1つから作り出され得る。復号デバイス112は、ピクチャメモリ92に記憶された参照ピクチャに基づいて、デフォルトの構築技法を使用して、参照フレームリスト、すなわち、リスト0とリスト1とを構築し得る。
【0207】
[0214] 動き補償ユニット82は、動きベクトルと他のシンタックス要素とをパースすることによって現在のビデオスライスのビデオブロックのための予測情報を決定し、復号されている現在のビデオブロックのための予測ブロックを作り出すために、その予測情報を使用する。たとえば、動き補償ユニット82は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(たとえば、イントラまたはインター予測)と、インター予測スライスタイプ(たとえば、Bスライス、Pスライス、またはGPBスライス)と、スライスのための1つまたは複数の参照ピクチャリストのための構築情報と、スライスの各インター符号化されたビデオブロックのための動きベクトルと、スライスの各インターコーディングされたビデオブロックのためのインター予測ステータスと、現在のビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、パラメータセット中の1つまたは複数のシンタックス要素を使用し得る。
【0208】
[0215] 動き補償ユニット82はまた、補間フィルタに基づいて補間を実施し得る。動き補償ユニット82は、参照ブロックのサブ整数ピクセルのための補間値を計算するために、ビデオブロックの符号化中に符号化デバイス104によって使用された補間フィルタを使用し得る。この場合、動き補償ユニット82は、受信されたシンタックス要素から符号化デバイス104によって使用された補間フィルタを決定し得、予測ブロックを作り出すためにその補間フィルタを使用し得る。
【0209】
[0216] 逆量子化ユニット86は、ビットストリーム中で提供され、エントロピー復号ユニット80によって復号された量子化された変換係数を逆量子化、すなわち、量子化解除する。逆量子化プロセスは、量子化の程度を決定し、同様に、適用されるべきである逆量子化の程度を決定するための、ビデオスライス中のビデオブロックごとに符号化デバイス104によって計算される量子化パラメータの使用を含み得る。逆変換処理ユニット88は、ピクセルドメインにおける残差ブロックを作り出すために、逆変換(たとえば、逆DCTまたは他の好適な逆変換)、逆整数変換、または概念的に同様の逆変換プロセスを変換係数に適用する。
【0210】
[0217] 動き補償ユニット82が、動きベクトルおよび他のシンタックス要素に基づいて現在のビデオブロックのための予測ブロックを生成した後に、復号デバイス112は、逆変換処理ユニット88からの残差ブロックを動き補償ユニット82によって生成された対応する予測ブロックと加算することによって、復号されたビデオブロックを形成する。加算器90は、この加算演算を実施する1つまたは複数の構成要素を表す。所望される場合、(コーディングループ内またはコーディングループ後のいずれかの)ループフィルタも、ピクセル遷移を平滑化するために、またはさもなければビデオ品質を改善するために使用され得る。フィルタユニット91は、デブロッキングフィルタ、適応ループフィルタ(ALF)、およびサンプル適応オフセット(SAO)フィルタなど、1つまたは複数のループフィルタを表すものとする。
図13では、フィルタユニット91はループ内フィルタであるとして示されているが、他の構成では、フィルタユニット91はループ後フィルタとして実装され得る。所与のフレームまたはピクチャ中の復号されたビデオブロックは、次いで、後続の動き補償のために使用される参照ピクチャを記憶するピクチャメモリ92に記憶される。ピクチャメモリ92はまた、
図1に示されているビデオ宛先デバイス122など、ディスプレイデバイス上での後の提示のために、復号されたビデオを記憶する。
【0211】
[0218] このようにして、
図13の復号デバイス112は、
図10に関して上記で説明されたプロセスおよび
図11に関して上記で説明されたプロセスを含む、本明細書で説明される技法のいずれかを実施するように構成されたビデオデコーダの一例を表す。
【0212】
[0219] 本明細書で使用される「コンピュータ可読媒体」という用語は、限定はしないが、ポータブルまたは非ポータブルストレージデバイス、光ストレージデバイス、ならびに(1つまたは複数の)命令および/またはデータを記憶、含有、または担持することが可能な様々な他の媒体を含む。コンピュータ可読媒体は、データが記憶され得、ワイヤレスに、またはワイヤード接続を介して伝搬する搬送波および/または一時的な電子信号を含まない、非一時的媒体を含み得る。非一時的媒体の例は、限定はしないが、磁気ディスクまたはテープ、コンパクトディスク(CD)またはデジタル多用途ディスク(DVD)などの光記憶媒体、フラッシュメモリ、メモリまたはメモリデバイスを含み得る。コンピュータ可読媒体は、プロシージャ、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、あるいは命令、データ構造、またはプログラムステートメントの任意の組合せを表し得る、コードおよび/または機械実行可能命令をその上に記憶していることがある。コードセグメントは、情報、データ、引数、パラメータ、またはメモリコンテンツをパスおよび/または受信することによって、別のコードセグメントまたはハードウェア回路に結合され得る。情報、引数、パラメータ、データなどは、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク送信などを含む、任意の好適な手段を介してパス、フォワーディング、または送信され得る。
【0213】
[0220] いくつかの実施形態では、コンピュータ可読ストレージデバイス、媒体、およびメモリは、ビットストリームなどを含んでいるケーブル信号またはワイヤレス信号を含むことができる。しかしながら、述べられるとき、非一時的コンピュータ可読記憶媒体は、エネルギー、キャリア信号、電磁波、および信号自体などの媒体を明確に除外する。
【0214】
[0221] 本明細書で提供される実施形態および例の完全な理解を提供するために、具体的な詳細が上記の説明で提供される。ただし、実施形態はこれらの具体的な詳細なしに実施され得ることを当業者は理解されよう。説明の明快のために、いくつかの事例では、本技術は、デバイス、デバイス構成要素、ソフトウェアで具現される方法におけるステップまたはルーチン、あるいはハードウェアとソフトウェアとの組合せを備える機能ブロックを含む個々の機能ブロックを含むものとして提示され得る。図に示されているおよび/または本明細書で説明される構成要素以外の追加の構成要素が使用され得る。たとえば、回路、システム、ネットワーク、プロセス、および他の構成要素は、実施形態を不要な詳細で不明瞭にしないためにブロック図の形式で構成要素として示され得る。他の事例では、実施形態を不明瞭にすることを回避するために、よく知られている回路、プロセス、アルゴリズム、構造、および技法が不要な詳細なしに示され得る。
【0215】
[0222] 個々の実施形態は、フローチャート、流れ図、データフロー図、構造図、またはブロック図として示されるプロセスまたは方法として、上記で説明され得る。フローチャートは、動作を逐次的なプロセスとして説明し得るが、動作の多くは、並行してまたは同時に実施され得る。さらに、動作の順序は並べ替えられ得る。プロセスの動作が完了されるとき、プロセスは終了されるが、図中に含まれない追加のステップを有し得る。プロセスは、方法、関数、プロシージャ、サブルーチン、サブプログラムなどに対応し得る。プロセスが関数に対応するとき、それの終了は呼出し関数またはメイン関数への関数の復帰に対応することができる。
【0216】
[0223] 上記で説明された例によるプロセスおよび方法は、記憶されるかまたはさもなければコンピュータ可読媒体から利用可能である、コンピュータ実行可能命令を使用して実装され得る。そのような命令は、たとえば、汎用コンピュータ、専用コンピュータ、または処理デバイスが、ある関数または関数のグループを実施することを引き起こすか、あるいはさもなければそれらを実施するように構成する、命令とデータとを含むことができる。使用されるコンピュータリソースの部分が、ネットワークを介してアクセス可能であり得る。コンピュータ実行可能命令は、たとえば、バイナリ、アセンブリ言語などの中間フォーマット命令、ファームウェア、ソースコードなどであり得る。命令、使用される情報、および/または説明される例による方法中に作成される情報を記憶するために使用され得るコンピュータ可読媒体の例は、磁気または光ディスク、フラッシュメモリ、不揮発性メモリを備えたUSBデバイス、ネットワーク化されたストレージデバイスなどを含む。
【0217】
[0224] これらの開示によるプロセスおよび方法を実装するデバイスは、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組合せを含むことができ、様々なフォームファクタのいずれかをとることができる。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードで実装されるとき、必要なタスクを実施するためのプログラムコードまたはコードセグメント(たとえば、コンピュータプログラム製品)は、コンピュータ可読媒体または機械可読媒体に記憶され得る。(1つまたは複数の)プロセッサが、必要なタスクを実施し得る。フォームファクタの典型的な例は、ラップトップ、スマートフォン、モバイルフォン、タブレットデバイスまたは他のスモールフォームファクタパーソナルコンピュータ、携帯情報端末、ラックマウントデバイス、スタンドアロンデバイスなどを含む。本明細書で説明される機能はまた、周辺機器またはアドインカードで具現され得る。そのような機能はまた、さらなる例として、異なるチップの中の回路基板または単一デバイスにおいて実行する異なるプロセス上で実装され得る。
【0218】
[0225] 命令、そのような命令を伝達するための媒体、それらを実行するためのコンピューティングリソース、およびそのようなコンピューティングリソースをサポートするための他の構造は、本開示で説明される機能を提供するための例示的な手段である。
【0219】
[0226] 上記の説明では、本出願の態様がそれの特定の実施形態を参照しながら説明されたが、本出願はそれに限定されないことを、当業者は認識されよう。したがって、本出願の例示的な実施形態が本明細書で詳細に説明されているが、従来技術によって限定される場合を除いて、発明概念が、場合によっては様々に具現および採用され得、添付の特許請求の範囲が、そのような変形形態を含むように解釈されるものであることを理解されたい。上記で説明された適用例の様々な特徴および態様は、個々にまたは一緒に使用され得る。さらに、実施形態は、本明細書のより広い趣旨および範囲から逸脱することなく、本明細書で説明される環境および適用例以外に、任意の数の環境および適用例において利用され得る。したがって、本明細書および図面は、限定的なものではなく例示的なものとして考慮されるべきである。例示の目的で、方法は、特定の順序で説明された。代替実施形態では、方法は、説明された順序とは異なる順序で実施され得ることを諒解されたい。
【0220】
[0227] 本明細書で使用される、よりも小さい(「<」)、および、よりも大きい(「>」)のシンボルまたは専門用語は、本説明の範囲から逸脱することなく、それぞれ、よりも小さいかまたはそれに等しい(「≦」)、および、よりも大きいかまたはそれに等しい(「≧」)のシンボルと置き換えられ得ることを、当業者は諒解されよう。
【0221】
[0228] 構成要素がいくつかの動作を実施する「ように構成される」ものとして説明される場合、そのような構成は、たとえば、動作を実施するように電子回路または他のハードウェアを設計することによって、動作を実施するようにプログラマブル電子回路(たとえば、マイクロプロセッサ、または他の好適な電子回路)をプログラムすることによって、あるいはそれらの任意の組合せで達成され得る。
【0222】
[0229] 「に結合された」という句は、直接的にまたは間接的に、のいずれかで別の構成要素に物理的に接続された任意の構成要素、および/あるいは直接的にまたは間接的に、のいずれかで別の構成要素と通信している(たとえば、ワイヤードまたはワイヤレス接続、および/あるいは他の好適な通信インターフェースを介して別の構成要素に接続された)任意の構成要素を指す。
【0223】
[0230] セット「のうちの少なくとも1つ」、および/またはセットのうちの「1つまたは複数」を具陳するクレームの文言または本開示における他の文言は、セットのうちの1つのメンバーまたは(任意の組合せにおける)セットのうちの複数のメンバーがクレームを満足することを示す。たとえば、「AおよびBのうちの少なくとも1つ」を具陳するクレームの文言は、A、B、またはAおよびBを意味する。別の例では、「A、B、およびCのうちの少なくとも1つ」を具陳するクレームの文言は、A、B、C、またはAおよびB、またはAおよびC、またはBおよびC、またはAおよびBおよびCを意味する。セット「のうちの少なくとも1つ」および/またはセットのうちの「1つまたは複数」という文言は、セットを、セットに記載されている項目に限定しない。たとえば、「AおよびBのうちの少なくとも1つ」を具陳するクレームの文言は、A、B、またはAおよびBを意味することができ、さらに、AおよびBのセットに記載されていない項目を含むことができる。
【0224】
[0231] 本明細書で開示される実施形態に関して説明される、様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、ファームウェア、またはそれらの組合せとして実装され得る。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップが、上記では概してそれらの機能に関して説明された。そのような機能がハードウェアとして実装されるのか、ソフトウェアとして実装されるのかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明された機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本出願の範囲からの逸脱を引き起こすものとして解釈されるべきではない。
【0225】
[0232] 本明細書で説明される技法は、電子ハードウェア、コンピュータソフトウェア、ファームウェア、またはそれらの任意の組合せにおいても実装され得る。そのような技法は、汎用コンピュータ、ワイヤレス通信デバイスハンドセット、またはワイヤレス通信デバイスハンドセットおよび他のデバイスにおける適用を含む複数の用途を有する集積回路デバイスなど、様々なデバイスのいずれかにおいて実装され得る。モジュールまたは構成要素として説明された特徴は、集積論理デバイスに一緒に、または個別であるが相互運用可能な論理デバイスとして別個に実装され得る。ソフトウェアで実装された場合、本技法は、実行されたとき、上記で説明された方法のうちの1つまたは複数を実施する命令を含むプログラムコードを備えるコンピュータ可読データ記憶媒体によって、少なくとも部分的に実現され得る。コンピュータ可読データ記憶媒体は、パッケージング材料を含み得るコンピュータプログラム製品の一部を形成し得る。コンピュータ可読媒体は、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)などのランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電気的消去可能プログラマブル読取り専用メモリ(EEPROM(登録商標))、フラッシュメモリ、磁気または光データ記憶媒体など、メモリまたはデータ記憶媒体を備え得る。本技法は、追加または代替として、伝搬信号または電波など、命令またはデータ構造の形態でプログラムコードを搬送または通信し、コンピュータによってアクセスされ、読み取られ、および/または実行され得るコンピュータ可読通信媒体によって少なくとも部分的に実現され得る。
【0226】
[0233] プログラムコードは、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、あるいは他の等価な集積論理回路またはディスクリート論理回路など、1つまたは複数のプロセッサを含み得るプロセッサによって実行され得る。そのようなプロセッサは、本開示で説明される技法のいずれかを実施するように構成され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つまたは複数のマイクロプロセッサ、または任意の他のそのような構成として実装され得る。したがって、本明細書で使用される「プロセッサ」という用語は、上記の構造、上記の構造の任意の組合せ、あるいは本明細書で説明される技法の実装に適した任意の他の構造または装置のいずれかを指し得る。さらに、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成された専用のソフトウェアモジュールまたはハードウェアモジュール内に提供され得、あるいは複合ビデオエンコーダ/デコーダ(コーデック)に組み込まれ得る。
【0227】
[0234] 本開示の例示的な例は、以下を含む。
【0228】
[0235] 態様1. ビデオデータを処理するための装置であって、メモリと、メモリに結合された1つまたは複数のプロセッサとを備え、1つまたは複数のプロセッサは、重複ブロック動き補償(OBMC)モードがビデオデータのブロックの現在のサブブロックのために有効にされると決定することと、現在のサブブロックに隣接する少なくとも1つの近隣サブブロックについて、第1の条件、第2の条件、および第3の条件が満たされるかどうかを決定することと、第1の条件が、現在のサブブロックを予測するための1つまたは複数の参照ピクチャリストのすべてが、近隣サブブロックを予測するために使用されることを備え、第2の条件が、同一の1つまたは複数の参照ピクチャが、現在のサブブロックと近隣サブブロックとに関連する動きベクトルを決定するために使用されることを備え、第3の条件が、現在のサブブロックの水平動きベクトルと近隣サブブロックの水平動きベクトルとの間の第1の差分と、現在のサブブロックの垂直動きベクトルと近隣サブブロックの垂直動きベクトルとの間の第2の差分とが、動きベクトル差分しきい値を超えないことを備え、ここにおいて、動きベクトル差分しきい値が0よりも大きい、OBMCモードが現在のサブブロックのために有効にされると決定することと、第1の条件、第2の条件、および第3の条件が満たされると決定することとに基づいて、現在のサブブロックの動き補償のために近隣サブブロックの動き情報を使用しないことを決定することとを行うように構成された、装置。
【0229】
[0236] 態様2. 1つまたは複数のプロセッサが、現在のサブブロックのためにデコーダ側動きベクトル改良(DMVR)モード、サブブロックベース時間動きベクトル予測(SbTMVP)モード、またはアフィン動き補償予測モードを使用するという決定に基づいて、現在のサブブロックのためにサブブロック境界OBMCモードを実施することを決定することを行うように構成された、態様1に記載の装置。
【0230】
[0237] 態様3. 現在のサブブロックのためにサブブロック境界OBMCモードを実施するために、1つまたは複数のプロセッサが、現在のサブブロックに関連する第1の予測と、現在のサブブロックの上ボーダーに隣接する第1のOBMCブロックに関連する第2の予測と、現在のサブブロックの左ボーダーに隣接する第2のOBMCブロックに関連する第3の予測と、現在のサブブロックの下ボーダーに隣接する第3のOBMCブロックに関連する第4の予測と、現在のサブブロックの右ボーダーに隣接する第4のOBMCブロックに関連する第5の予測とを決定することと、第1の重みを第1の予測に適用し、第2の重みを第2の予測に適用し、第3の重みを第3の予測に適用し、第4の重みを第4の予測に適用し、第5の重みを第5の予測に適用したことの結果に基づいて、第6の予測を決定することと、第6の予測に基づいて、現在のサブブロックに対応するブレンドされたサブブロックを生成することとを行うように構成された、態様2に記載の装置。
【0231】
[0238] 態様4. 第2の重み、第3の重み、第4の重み、および第5の重みの各々が、現在のサブブロックの対応するサブブロックからの1つまたは複数のサンプルに関連する1つまたは複数の重み値を備え、ここにおいて、現在のサブブロックのコーナーサンプルの重み値の和が、現在のサブブロックの他の境界サンプルの重み値の和よりも大きい、態様3に記載の装置。
【0232】
[0239] 態様5. 現在のサブブロックの他の境界サンプルの重み値の和が、現在のサブブロックの非境界サンプルの重み値の和よりも大きい、態様4に記載の装置。
【0233】
[0240] 態様6. 1つまたは複数のプロセッサが、ビデオデータの追加のブロックのために局所照明補償(LIC)モードを使用することを決定することと、追加のブロックのためにLICモードを使用するという決定に基づいて、追加のブロックのためのOBMCモードに関連する情報のシグナリングをスキップすることとを行うように構成された、態様1から5のいずれかに記載の装置。
【0234】
[0241] 態様7. 追加のブロックのためのOBMCモードに関連する情報のシグナリングをスキップするために、1つまたは複数のプロセッサが、空の値をもつシンタックスフラグをシグナリングするように構成され、シンタックスフラグがOBMCモードに関連する、態様6に記載の装置。
【0235】
[0242] 態様8. 1つまたは複数のプロセッサが、空の値をもつシンタックスフラグを含む信号を受信するように構成され、シンタックスフラグが、ビデオデータの追加のブロックのためのOBMCモードに関連する、態様6から7のいずれかに記載の装置。
【0236】
[0243] 態様9. 1つまたは複数のプロセッサが、空の値をもつシンタックスフラグに基づいて、追加のブロックのためにOBMCモードを使用しないことを決定することを行うように構成された、態様7から8のいずれかに記載の装置。
【0237】
[0244] 態様10. 追加のブロックのためのOBMCモードに関連する情報のシグナリングをスキップするために、1つまたは複数のプロセッサが、追加のブロックのためにLICモードを使用するという決定に基づいて、追加のブロックのためにOBMCモードを使用しないまたは有効にしないことを決定することと、追加のブロックのためのOBMCモードに関連する値をシグナリングすることをスキップすることとを行うように構成された、態様6から9のいずれかに記載の装置。
【0238】
[0245] 態様11. 1つまたは複数のプロセッサは、OBMCモードが追加のブロックのために有効にされるかどうかを決定することと、OBMCモードが追加のブロックのために有効にされるかどうかを決定すること、および追加のブロックのためにLICモードを使用するという決定に基づいて、追加のブロックのためのOBMCモードに関連する情報をシグナリングすることをスキップすることを決定することとを行うように構成された、態様1から10のいずれかに記載の装置。
【0239】
[0246] 態様12. 1つまたは複数のプロセッサが、ビデオデータのブロックの現在のサブブロックのためにコーディングユニット(CU)境界OBMCモードを使用することを決定することと、現在のサブブロックに関連する重みを、現在のサブブロックに関連するそれぞれの予測に適用したことの第1の結果と、1つまたは複数のそれぞれの重みを、現在のサブブロックに隣接する1つまたは複数のサブブロックに関連する1つまたは複数のそれぞれの予測に適用したことの第2の結果との和に基づいて、現在のサブブロックについての最終予測を決定することとを行うように構成された、態様1から11のいずれかに記載の装置。
【0240】
[0247] 態様13. 現在のサブブロックの動き補償のために近隣サブブロックの動き情報を使用しないことを決定するために、1つまたは複数のプロセッサが、現在のサブブロックの動き補償のための近隣サブブロックの動き情報の使用をスキップすることを行うように構成された、態様1から12のいずれかに記載の装置。
【0241】
[0248] 態様14. 装置がデコーダを含む、態様1から13のいずれかに記載の装置。
【0242】
[0249] 態様15. ビデオデータに関連する1つまたは複数の出力ピクチャ(output picture)を表示するように構成されたディスプレイをさらに備える、態様1から14のいずれかに記載の装置。
【0243】
[0250] 態様16. OBMCモードがサブブロック境界OBMCモードを備える、態様1から15のいずれかに記載の装置。
【0244】
[0251] 態様17. 装置がエンコーダを含む、態様1から16のいずれかに記載の装置。
【0245】
[0252] 態様18. ビデオデータに関連するピクチャをキャプチャするように構成されたカメラをさらに備える、態様1から17のいずれかに記載の装置。
【0246】
[0253] 態様19. 装置がモバイルデバイスである、態様1から18のいずれかに記載の装置。
【0247】
[0254] 態様20. ビデオデータを処理するための方法であって、重複ブロック動き補償(OBMC)モードがビデオデータのブロックの現在のサブブロックのために有効にされると決定することと、現在のサブブロックに隣接する少なくとも1つの近隣サブブロックについて、第1の条件、第2の条件、および第3の条件が満たされるかどうかを決定することと、第1の条件が、現在のサブブロックを予測するための1つまたは複数の参照ピクチャリストのすべてが、近隣サブブロックを予測するために使用されることを備え、第2の条件が、同一の1つまたは複数の参照ピクチャが、現在のサブブロックと近隣サブブロックとに関連する動きベクトルを決定するために使用されることを備え、第3の条件が、現在のサブブロックの水平動きベクトルと近隣サブブロックの水平動きベクトルとの間の第1の差分と、現在のサブブロックの垂直動きベクトルと近隣サブブロックの垂直動きベクトルとの間の第2の差分とが、動きベクトル差分しきい値を超えないことを備え、ここにおいて、動きベクトル差分しきい値が0よりも大きい、現在のサブブロックのためにOBMCモードを使用することを決定することと、第1の条件、第2の条件、および第3の条件が満たされると決定することとに基づいて、現在のサブブロックの動き補償のために近隣サブブロックの動き情報を使用しないことを決定することとを備える、方法。
【0248】
[0255] 態様21. 現在のサブブロックのためにデコーダ側動きベクトル改良(DMVR)モード、サブブロックベース時間動きベクトル予測(SbTMVP)モード、またはアフィン動き補償予測モードを使用するという決定に基づいて、現在のサブブロックのためにサブブロック境界OBMCモードを実施することを決定することをさらに備える、態様20に記載の方法。
【0249】
[0256] 態様22. 現在のサブブロックのためにサブブロック境界OBMCモードを実施することが、現在のサブブロックに関連する第1の予測と、現在のサブブロックの上ボーダーに隣接する第1のOBMCブロックに関連する第2の予測と、現在のサブブロックの左ボーダーに隣接する第2のOBMCブロックに関連する第3の予測と、現在のサブブロックの下ボーダーに隣接する第3のOBMCブロックに関連する第4の予測と、現在のサブブロックの右ボーダーに隣接する第4のOBMCブロックに関連する第5の予測とを決定することと、第1の重みを第1の予測に適用し、第2の重みを第2の予測に適用し、第3の重みを第3の予測に適用し、第4の重みを第4の予測に適用し、第5の重みを第5の予測に適用したことの結果に基づいて、第6の予測を決定することと、第6の予測に基づいて、現在のサブブロックに対応するブレンドされたサブブロックを生成することとを備える、態様21に記載の方法。
【0250】
[0257] 態様23. 第2の重み、第3の重み、第4の重み、および第5の重みの各々が、現在のサブブロックの対応するサブブロックからの1つまたは複数のサンプルに関連する1つまたは複数の重み値を備え、ここにおいて、現在のサブブロックのコーナーサンプルの重み値の和が、現在のサブブロックの他の境界サンプルの重み値の和よりも大きい、態様22に記載の方法。
【0251】
[0258] 態様24. 現在のサブブロックの他の境界サンプルの重み値の和が、現在のサブブロックの非境界サンプルの重み値の和よりも大きい、態様23に記載の方法。
【0252】
[0259] 態様25. ビデオデータの追加のブロックのために局所照明補償(LIC)モードを使用することを決定することと、追加のブロックのためにLICモードを使用するという決定に基づいて、追加のブロックのためのOBMCモードに関連する情報のシグナリングをスキップすることとをさらに備える、態様20から24のいずれかに記載の方法。
【0253】
[0260] 態様26. 追加のブロックのためのOBMCモードに関連する情報のシグナリングをスキップすることが、空の値をもつシンタックスフラグをシグナリングすることを備え、シンタックスフラグがOBMCモードに関連する、態様25に記載の方法。
【0254】
[0261] 態様27. 空の値をもつシンタックスフラグを含む信号を受信することをさらに備え、シンタックスフラグが、ビデオデータの追加のブロックのためのOBMCモードに関連する、態様25から26のいずれかに記載の方法。
【0255】
[0262] 態様28. 空の値をもつシンタックスフラグに基づいて、追加のブロックのためにOBMCモードを使用しないことを決定することをさらに備える、態様26から27のいずれかに記載の方法。
【0256】
[0263] 態様29. 追加のブロックのためのOBMCモードに関連する情報のシグナリングをスキップすることが、追加のブロックのためにLICモードを使用するという決定に基づいて、追加のブロックのためにOBMCモードを使用しないまたは有効にしないことを決定することと、追加のブロックのためのOBMCモードに関連する値をシグナリングすることをスキップすることとを備える、態様25から28のいずれかに記載の方法。
【0257】
[0264] 態様30. OBMCモードが追加のブロックのために有効にされるかどうかを決定することと、OBMCモードが追加のブロックのために有効にされるかどうかを決定すること、および追加のブロックのためにLICモードを使用するという決定に基づいて、追加のブロックのためのOBMCモードに関連する情報をシグナリングすることをスキップすることを決定することとをさらに備える、態様25から29のいずれかに記載の方法。
【0258】
[0265] 態様31. ビデオデータのブロックの現在のサブブロックのためにコーディングユニット(CU)境界OBMCモードを使用することを決定することと、現在のサブブロックに関連する重みを、現在のサブブロックに関連するそれぞれの予測に適用したことの第1の結果と、1つまたは複数のそれぞれの重みを、現在のサブブロックに隣接する1つまたは複数のサブブロックに関連する1つまたは複数のそれぞれの予測に適用したことの第2の結果との和に基づいて、現在のサブブロックについての最終予測を決定することとをさらに備える、態様20から30のいずれかに記載の方法。
【0259】
[0266] 態様32. 現在のサブブロックの動き補償のために近隣サブブロックの動き情報を使用しないことを決定することが、現在のサブブロックの動き補償のための近隣サブブロックの動き情報の使用をスキップすることを備える、態様20から31のいずれかに記載の方法。
【0260】
[0267] 態様33. 1つまたは複数のプロセッサによって実行されたとき、1つまたは複数のプロセッサに態様20から32のいずれかに記載の方法を実施させる命令を記憶した非一時的コンピュータ可読媒体。
【0261】
[0268] 態様34. 態様20から32のいずれかに記載の方法を実施するための手段を備える装置。
【国際調査報告】