(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-19
(45)【発行日】2024-06-27
(54)【発明の名称】デコーダ側動きベクトル改良に対する制約
(51)【国際特許分類】
H04N 19/577 20140101AFI20240620BHJP
H04N 19/513 20140101ALI20240620BHJP
H04N 19/44 20140101ALI20240620BHJP
【FI】
H04N19/577
H04N19/513
H04N19/44
(21)【出願番号】P 2021549850
(86)(22)【出願日】2020-02-28
(86)【国際出願番号】 US2020020392
(87)【国際公開番号】W WO2020180685
(87)【国際公開日】2020-09-10
【審査請求日】2023-02-01
(32)【優先日】2019-03-01
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-02-27
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】595020643
【氏名又は名称】クゥアルコム・インコーポレイテッド
【氏名又は名称原語表記】QUALCOMM INCORPORATED
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(74)【代理人】
【識別番号】100108855
【氏名又は名称】蔵田 昌俊
(74)【代理人】
【識別番号】100158805
【氏名又は名称】井関 守三
(74)【代理人】
【識別番号】100112807
【氏名又は名称】岡田 貴志
(72)【発明者】
【氏名】ワン、ホンタオ
(72)【発明者】
【氏名】チェン、ウェイ-ジュン
(72)【発明者】
【氏名】カルチェビチ、マルタ
(72)【発明者】
【氏名】ファン、ハン
【審査官】久保 光宏
(56)【参考文献】
【文献】国際公開第2020/069076(WO,A1)
【文献】特表2022-502924(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N19/00-19/98
CSDB(日本国特許庁)
学術文献等データベース(日本国特許庁)
IEEEXplore(IEEE)
(57)【特許請求の範囲】
【請求項1】
ビデオデータを復号する方法であって、
双予測される予測を使用して符号化されたビデオデータの現在のブロックのための動きベクトルを決定することと、
前記現在のブロックの前記双予測される予測のための2つの参照ピクチャリストからの予測子のために使用される重みが等しくないと決定することと、
前記現在のブロックの前記双予測される予測のための前記2つの参照ピクチャリストからの前記予測子のために使用される前記重みが等しくないと決定することに基づいて、前記動きベクトルのための動きベクトル改良プロセスを無効にすると決定することと、
前記動きベクトル改良プロセスは、マージ動きベクトル改良、マージオフセット拡張、双方向テンプレート照合、およびパラメトリックサブペル動きベクトル導出のうちの1つであり、
前記動きベクトル改良プロセスなしで、前記双予測される予測を使用してビデオデータの前記現在のブロックを復号することと、
を備える、方法。
【請求項2】
前記双予測される予測は、重み付け双予測であるか、または一般化された双予測である、請求項1に記載の方法。
【請求項3】
ピクチャレベルにおいてまたはブロックレベルにおいて、前記現在のブロックの前記双予測される予測のための2つの参照ピクチャリストからの予測子のために使用される前記重みを決定することをさらに備える、請求項1に記載の方法。
【請求項4】
前記動きベクトル改良プロセスは、双方向テンプレート照合である、請求項1に記載の方法。
【請求項5】
双予測される予測を使用して符号化されたビデオデータの第2のブロックのための動きベクトルを決定することと、
前記第2のブロックの前記双予測される予測のための2つの参照ピクチャリストからの予測子のために使用される重みが等しいと決定することと、
前記第2のブロックのための前記動きベクトルによって特定される予測されるブロック間の差分を決定することと、
前記第2のブロックの前記双予測される予測のための前記2つの参照ピクチャリストからの前記予測子のために使用される前記重みと、前記第2のブロックのための前記動きベクトルによって特定される前記予測されるブロック間の前記決定された差分とに基づいて、前記第2のブロックのための前記動きベクトルに対して前記動きベクトル改良プロセスを適用すると決定することと、
をさらに備える、請求項1に記載の方法。
【請求項6】
前記動きベクトルによって特定される予測されるブロック間の差分を決定することさらに備え、
前記現在のブロックの前記双予測される予測のための前記2つの参照ピクチャリストからの前記予測子のために使用される前記重みに基づいて、前記動きベクトルに対して前記動きベクトル改良プロセスを無効にすると決定することは、前記動きベクトルによって特定される前記予測されるブロック間の前記決定された差分にさらに基づき、
前記動きベクトルによって特定される前記予測されるブロック間の前記差分が閾値未満である場合、前記動きベクトル改良プロセスを無効にすると決定することをさらに備える、
請求項1に記載の方法。
【請求項7】
前記予測されるブロックの中のサンプルの数および前記予測されるブロックの中の前記サンプルのビット深度に基づいて、前記閾値を決定することをさらに備える、請求項6に記載の方法。
【請求項8】
前記第2のブロックのための前記動きベクトルによって特定される前記予測されるブロック間の前記差分を決定することは、
前記予測されるブロック間の絶対差分和または前記予測されるブロック間の2乗誤差和を使用して、前記第2のブロックのための前記動きベクトルによって特定される前記予測されるブロック間の前記差分を決定することを備える、
請求項5に記載の方法。
【請求項9】
前記動きベクトル改良プロセスは双方向テンプレート照合である、請求項
5に記載の方法。
【請求項10】
前記第2のブロックのための前記動きベクトルに対して前記双方向テンプレート照合を適用することは、
前記双方向テンプレート照合を使用して前記第2のブロックのための2つの予測されるブロックを決定することを備え、前記2つの予測されるブロックのうちの第1の予測されるブロックは前記第2のブロックのための前記動きベクトルに基づいて決定され、前記第2のブロックのための前記動きベクトルは非整数動きベクトルを含み、前記第1の予測されるブロックを決定することは、
前記非整数動きベクトルに基づいて水平補間を実行することと、
内部ビット深度より高いビット深度において前記水平補間の出力を記憶することと、
垂直補間を実行するために、前記より高いビット深度で記憶されている前記水平補間の前記出力を使用することと、
を備える、請求項9に記載の方法。
【請求項11】
ビデオデータを復号するように構成される装置であって、
ビデオデータの現在のブロックを記憶するように構成されるメモリと、
回路において実装され、前記メモリと通信している1つまたは複数のプロセッサと、を備え、前記1つまたは複数のプロセッサは、
双予測される予測を使用して符号化されたビデオデータの現在のブロックのための動きベクトルを決定し、
前記現在のブロックの前記双予測される予測のための2つの参照ピクチャリストからの予測子のために使用される重みが等しくないと決定し、
前記現在のブロックの前記双予測される予測のための前記2つの参照ピクチャリストからの前記予測子のために使用される前記重みが等しくないという前記決定に基づいて、前記動きベクトルのための動きベクトル改良プロセスを無効にすると決定し、
前記動きベクトル改良プロセスは、マージ動きベクトル改良、マージオフセット拡張、双方向テンプレート照合、およびパラメトリックサブペル動きベクトル導出のうちの1つであり、
前記動きベクトル改良プロセスなしで、前記双予測される予測を使用してビデオデータの前記現在のブロックを復号する、
ように構成される、装置。
【請求項12】
前記1つまたは複数のプロセッサは、請求項2~10のいずれか一項に記載の方法を実行するようにさらに構成される、請求項11に記載の装置。
【請求項13】
前記装置がワイヤレス通信デバイスである、請求項11に記載の装置。
【請求項14】
実行されると、ビデオデータを復号するように構成された1つまたは複数のプロセッサに、
双予測される予測を使用して符号化されたビデオデータの現在のブロックのための動きベクトルを決定することと、
前記現在のブロックの前記双予測される予測のための2つの参照ピクチャリストからの予測子のために使用される重みが等しくないと決定することと、
前記現在のブロックの前記双予測される予測のための前記2つの参照ピクチャリストからの前記予測子のために使用される前記重みが等しくないという前記決定に基づいて、前記動きベクトルのための動きベクトル改良プロセスを無効にすると決定することと、
前記動きベクトル改良プロセスは、マージ動きベクトル改良、マージオフセット拡張、双方向テンプレート照合、およびパラメトリックサブペル動きベクトル導出のうちの1つであり、
前記動きベクトル改良プロセスなしで、前記双予測される予測を使用してビデオデータの前記現在のブロックを復号することと、
を行わせる命令を記憶した非一時的コンピュータ可読記憶媒体。
【請求項15】
実行されると、1つまたは複数のプロセッサに、請求項2~10のいずれか一項に記載の方法を実行させる命令をさらに記憶した請求項14に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【優先権の主張】
【0001】
[0001]本出願は、その内容全体が参照により本明細書に組み込まれる、2019年3月1日に出願された米国仮出願第62/812,828号の利益を主張する、2020年2月27日に出願された米国特許出願第16/803,520号の優先権を主張する。
【技術分野】
【0002】
[0002]本開示は、ビデオ符号化およびビデオ復号に関する。
【背景技術】
【0003】
[0003]デジタルビデオ能力は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダー、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラー電話または衛星無線電話、いわゆる「スマートフォン」、ビデオ遠隔会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲のデバイスに組み込まれ得る。デジタルビデオデバイスは、MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4,Part10,アドバンストビデオコーディング(AVC)、ITU-T H.265/高効率ビデオコーディング(HEVC)によって定義された規格、およびそのような規格の拡張に記載されているビデオコーディング技法などの、ビデオコーディング技法を実装する。ビデオデバイスは、そのようなビデオコーディング技法を実装することによって、デジタルビデオ情報をより効率的に送信、受信、符号化、復号、および/または記憶し得る。
【0004】
[0004]ビデオコーディング技法は、ビデオシーケンスに固有の冗長性を低減または除去するための空間(ピクチャ内)予測および/または時間(ピクチャ間)予測を含む。ブロックベースのビデオコーディングでは、ビデオスライス(たとえば、ビデオピクチャまたはビデオピクチャの一部分)が、コーディングツリーユニット(CTU)、コーディングユニット(CU)および/またはコーディングノードと呼ばれることもある、ビデオブロックに区分され得る。ピクチャのイントラコーディングされた(I)スライスの中のビデオブロックは、同じピクチャ中の近隣ブロックの中の参照サンプルに対する空間予測を使用して符号化される。ピクチャのインターコーディングされた(PまたはB)スライスの中のビデオブロックは、同じピクチャ中の隣接ブロックの中の参照サンプルに対する空間予測、または他の参照ピクチャ中の参照サンプルに対する時間予測を使用し得る。ピクチャはフレームと呼ばれることがあり、参照ピクチャは参照フレームと呼ばれることがある。
【発明の概要】
【0005】
[0005]全般に、本開示は、デコーダ側動きベクトル改良(DMVR:decoder-side motion vector refinement)のための技法を説明する。具体的には、本開示は、双方向(bilateral)テンプレート照合などの動きベクトル改良プロセスを、双予測される予測(bi-predicted prediction)を使用して符号化されたビデオデータのブロックにいつ適用するかを決定するための、技法を説明する。一例では、ビデオコーダは、双予測される予測のために使用される重みが等しくないとき、双予測されるブロックのための動きベクトル改良プロセスを無効にし得る。本開示のさらなる例では、ビデオコーダはまた、双予測の動きベクトルによって特定される予測されるブロック間の差分が閾値未満であるとき、動きベクトル改良プロセスを無効にし得る。本開示の技法は、既存のビデオコーデックのいずれの拡張に適用されてもよく、開発中のVVC(汎用ビデオコーディング:Versatile Video Coding)規格とともに使用されてもよく、またはいかなる将来のビデオコーディング規格においても効率的なコーディングツールになり得る。
【0006】
[0006]一例では、方法は、双予測される予測を使用して符号化されたビデオデータの現在のブロックの動きベクトルを決定するステップと、当該現在のブロックの双予測される予測のために使用される重みに基づいて当該動きベクトルに対して動きベクトル改良プロセスを使用すると決定するステップと、動きベクトル改良プロセスを使用するという決定に基づいて、当該動きベクトルに対して動きベクトル改良プロセスを適用するステップとを含む。
【0007】
[0007]別の例では、ビデオデータを復号するように構成される装置は、ビデオデータの現在のブロックを記憶するように構成されるメモリと、回路において実装されメモリと通信している1つまたは複数のプロセッサとを含み、1つまたは複数のプロセッサは、双予測される予測を使用して符号化されたビデオデータの現在のブロックのための動きベクトルを決定し、当該現在のブロックの双予測される予測のために使用される重みに基づいて、当該動きベクトルに対して動きベクトル改良プロセスを使用すると決定し、動きベクトル改良プロセスを使用するという決定に基づいて、当該動きベクトルに対して動きベクトル改良プロセスを適用するように構成される。
【0008】
[0008]別の例では、ビデオデータを復号するように構成される装置は、双予測される予測を使用して符号化されたビデオデータの現在のブロックのための動きベクトルを決定するための手段と、当該現在のブロックの双予測される予測のために使用される重みに基づいて当該動きベクトルに対して動きベクトル改良プロセスを使用すると決定するための手段と、動きベクトル改良プロセスを使用するという決定に基づいて、当該動きベクトルに対して動きベクトル改良プロセスを適用するための手段とを含む。
【0009】
[0009]別の例では、本開示は、実行されると、ビデオデータを復号するように構成される1つまたは複数のプロセッサに、双予測される予測を使用して符号化されたビデオデータの現在のブロックのための動きベクトルを決定させ、当該現在のブロックの双予測される予測のために使用される重みに基づいて当該動きベクトルに対して動きベクトル改良プロセスを使用すると決定させ、動きベクトル改良プロセスを使用するという決定に基づいて、当該動きベクトルに対して動きベクトル改良プロセスを適用させる、命令を記憶した非一時的コンピュータ可読媒体を説明する。
【0010】
[0010]1つまたは複数の例の詳細が添付の図面および以下の説明に記載される。他の特徴、目的、および利点は、説明、図面、および特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【0011】
【
図1】[0011]本開示の技法を実行し得る例示的なビデオ符号化および復号システムを示すブロック図。
【
図2】[0012]本開示の技法を実行し得る例示的なビデオエンコーダを示すブロック図。
【
図3】[0013]本開示の技法を実行し得る例示的なビデオデコーダを示すブロック図。
【
図4A】[0014]マージモードのための空間隣接動きベクトル候補を示す概念図。
【
図4B】[0015]高度動きベクトル予測(AMVP:advanced motion vector prediction)モードのための空間隣接動きベクトル候補を示す概念図。
【
図5A】[0016]時間動きベクトル候補を示す概念図。
【
図5B】[0017]動きベクトルスケーリングを示す概念図。
【
図6A】[0018]マージ動きベクトル改良(MMVR)プロセスを示す概念図。
【
図6B】[0019]MMVR探索点を示す概念図。
【
図7】[0020]オフセットマージ候補を示す概念図。
【
図8】[0021]双方向テンプレート照合を示す概念図。
【
図9】[0022]デコーダ側動きベクトル導出(DMVD)技法のための例示的なパイプライン状態を示す概念図。
【
図10】[0023]例示的なオプティカルフロー軌跡を示す概念図。
【
図11】[0024]8×4ブロックに対する例示的な双方向オプティカルフロー(BIO)を示す概念図。
【
図12】[0025]例示的な符号化方法を示すフローチャート。
【
図13】[0026]例示的な復号方法を示すフローチャート。
【
図14】[0027]デコーダ側動きベクトル改良を適用するための例示的な復号方法を示すフローチャート。
【
図15】[0028]デコーダ側動きベクトル改良を適用するための別の例示的な復号方法を示すフローチャート。
【発明を実施するための形態】
【0012】
[0029]全般に、本開示は、デコーダ側動きベクトル改良(DMVR)のための技法を説明する。具体的には、本開示は、双方向テンプレート照合などの動きベクトル改良プロセスを、双予測される予測を使用して符号化されたビデオデータのブロックにいつ適用するかを決定するための、技法を説明する。本開示の技法によれば、ビデオコーダは、動きベクトル改良が適用されるべきかどうかを示すシンタックス要素を明示的にコーディングする(たとえば、符号化または復号する)ことなく、動きベクトル改良プロセスをいつ適用するかを決定するように構成され得る。このようにして、ビデオコーダは、符号化されたビデオビットストリームにおけるオーバーヘッドシグナリングを増やすことなく、動きベクトル改良を選択的に適用し得る。一例では、ビデオコーダ(たとえば、ビデオエンコーダおよび/またはビデオデコーダ)は、双予測される予測のために使用される重みが等しくないとき、双予測されるブロックのための動きベクトル改良プロセスを無効にし得る。本開示のさらなる例では、ビデオコーダはまた、双予測の動きベクトルによって特定される予測されるブロック間の差分が閾値未満であるとき、動きベクトル改良プロセスを無効にし得る。
【0013】
[0030]
図1は、DMVRのための本開示の技法を実行し得る例示的なビデオ符号および復号システム100を示すブロック図である。本開示の技法は、一般に、ビデオデータをコーディング(符号化および/または復号)することを対象とする。一般に、ビデオデータは、ビデオを処理するための任意のデータを含む。したがって、ビデオデータは、未加工の(raw)コーディングされていないビデオと、符号化されたビデオと、復号された(たとえば、再構築された)ビデオと、シグナリングデータなどのビデオメタデータとを含み得る。以下でより詳細に説明されるように、本開示は、双方向テンプレート照合などのDMVRのための動きベクトル改良プロセスを、双予測される予測を使用して符号化されたビデオデータのブロックにいつ適用するかを決定するための、技法を説明する。一例では、ビデオコーダは、双予測される予測のために使用される重みが等しくないとき、双予測されるブロックのための動きベクトル改良プロセスを無効にし得る。本開示のさらなる例では、ビデオコーダはまた、双予測の動きベクトルによって特定される予測されたブロック間の差分が閾値未満であるとき、動きベクトル改良プロセスを無効にし得る。本開示の技法は、コーディング効率を高め、および/またはDMVR技法の実装を簡単にし得る。
【0014】
[0031]
図1に示されるように、システム100は、この例では、宛先デバイス116によって復号され表示されるべき符号化されたビデオデータを提供するソースデバイス102を含む。具体的には、ソースデバイス102は、コンピュータ可読媒体110を介してビデオデータを宛先デバイス116に提供する。ソースデバイス102および宛先デバイス116は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、スマートフォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲のデバイスのいずれかを備え得る。いくつかの場合、ソースデバイス102および宛先デバイス116は、ワイヤレス通信に対応し得るので、ワイヤレス通信デバイスと呼ばれ得る。
【0015】
[0032]
図1の例では、ソースデバイス102は、ビデオソース104と、メモリ106と、ビデオエンコーダ200と、出力インターフェース108とを含む。宛先デバイス116は、入力インターフェース122と、ビデオデコーダ300と、メモリ120と、ディスプレイデバイス118とを含む。本開示によれば、ソースデバイス102のビデオエンコーダ200および宛先デバイス116のビデオデコーダ300は、デコーダ側動きベクトル改良のための技法を適用するように構成され得る。したがって、ソースデバイス102はビデオ符号化デバイスの例を表し、宛先デバイス116はビデオ復号デバイスの例を表す。他の例では、ソースデバイスおよび宛先デバイスは、他の構成要素または構成を含み得る。たとえば、ソースデバイス102は、外部カメラなどの外部ビデオソースからビデオデータを受信し得る。同様に、宛先デバイス116は、統合されたディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
【0016】
[0033]
図1に示されているシステム100は一例にすぎない。一般に、いかなるデジタルビデオ符号化および/または復号デバイスも、デコーダ側動きベクトル改良のための技法を実行し得る。ソースデバイス102および宛先デバイス116は、ソースデバイス102が宛先デバイス116への送信のためにコーディングされたビデオデータを生成するようなコーディングデバイスの例にすぎない。本開示は、データのコーディング(符号化および/または復号)を実行するデバイスとして「コーディング」デバイスに言及する。したがって、ビデオエンコーダ200およびビデオデコーダ300は、コーディングデバイス、特に、それぞれビデオエンコーダおよびビデオデコーダの例を表す。いくつかの例では、デバイス102、116は、デバイス102、116の各々がビデオ符号化構成要素とビデオ復号構成要素とを含むように、実質的に対称的に動作し得る。したがって、システム100は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、またはビデオ電話のための、ビデオデバイス102とビデオデバイス116との間の一方向または双方向のビデオ送信をサポートし得る。
【0017】
[0034]一般に、ビデオソース104は、ビデオデータのソース(すなわち、未加工の、コーディングされていないビデオデータ)を表し、ピクチャのためのデータを符号化するビデオエンコーダ200にビデオデータの連続した一連のピクチャ(「フレーム」とも呼ばれる)を提供する。ソースデバイス102のビデオソース104は、ビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされた未加工のビデオを包含するビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースを含み得る。さらなる代替として、ビデオソース104は、ソースビデオとしてのコンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブされたビデオとコンピュータで生成されたビデオとの組合せを生成し得る。各々の場合において、ビデオエンコーダ200は、キャプチャされたビデオデータ、プリキャプチャされたビデオデータ、またはコンピュータで生成されたビデオデータを符号化する。ビデオエンコーダ200は、ピクチャを、(「表示順序」と呼ばれることがある)受信順序から、コーディングのためのコーディング順序に並べ替え得る。ビデオエンコーダ200は、符号化されたビデオデータを含むビットストリームを生成し得る。ソースデバイス102は、次いで、たとえば、宛先デバイス116の入力インターフェース122による受信および/または取出しのために、出力インターフェース108を介して符号化されたビデオデータをコンピュータ可読媒体110に出力し得る。
【0018】
[0035]ソースデバイス102のメモリ106、および宛先デバイス116のメモリ120は、汎用メモリを表す。いくつかの例では、メモリ106、120は、未加工のビデオデータ、たとえば、ビデオソース104からの未加工のビデオ、およびビデオデコーダ300からの未加工の、復号されたビデオデータを記憶し得る。追加または代替として、メモリ106、120は、たとえば、それぞれ、ビデオエンコーダ200およびビデオデコーダ300によって実行可能なソフトウェア命令を記憶し得る。この例ではビデオエンコーダ200およびビデオデコーダ300とは別々に示されているが、ビデオエンコーダ200およびビデオデコーダ300は、機能的に同等のまたは等価な目的のために内部メモリも含み得ることを理解されたい。さらに、メモリ106、120は、符号化されたビデオデータ、たとえば、ビデオエンコーダ200からの出力、およびビデオデコーダ300への入力を記憶し得る。いくつかの例では、メモリ106、120の部分は、たとえば、未加工の復号および/または符号化されたビデオデータを記憶するために、1つまたは複数のビデオバッファとして割り振られ得る。
【0019】
[0036]コンピュータ可読媒体110は、ソースデバイス102から宛先デバイス116に符号化されたビデオデータを移送することが可能な任意のタイプの媒体またはデバイスを表し得る。一例では、コンピュータ可読媒体110は、ソースデバイス102が、たとえば、無線周波数ネットワークまたはコンピュータベースのネットワークを介して、符号化されたビデオデータを宛先デバイス116にリアルタイムで直接送信することを可能にするための通信媒体を表す。出力インターフェース108は、符号化されたビデオデータを含む送信信号を変調してもよく、入力インターフェース122は、ワイヤレス通信プロトコルなどの通信規格に従って、受信された送信信号を変調してもよい。通信媒体は、無線周波数(RF)スペクトルまたは1つまたは複数の物理伝送線路などの、任意のワイヤレスまたは有線の通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなどの、パケットベースネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス102から宛先デバイス116への通信を容易にするために有用であり得る任意の他の機器を含み得る。
【0020】
[0037]いくつかの例では、ソースデバイス102は、出力インターフェース108から記憶デバイス116に符号化されたデータを出力し得る。同様に、宛先デバイス116は、入力インターフェース122を介して記憶デバイス116から符号化されたデータにアクセスし得る。記憶デバイス116は、ハードドライブ、Blu-ray(登録商標)ディスク、DVD、CD-ROM、フラッシュメモリ、揮発性もしくは不揮発性メモリ、または符号化されたビデオデータを記憶するための任意の他の好適なデジタル記憶媒体などの、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。
【0021】
[0038]いくつかの例では、ソースデバイス102は、ソースデバイス102によって生成された符号化されたビデオを記憶し得るファイルサーバ114または別の中間記憶デバイスに符号化されたビデオデータを出力し得る。宛先デバイス116は、ストリーミングまたはダウンロードを介して、ファイルサーバ114から、記憶されたビデオデータにアクセスし得る。ファイルサーバ114は、符号化されたビデオデータを記憶し、その符号化されたビデオデータを宛先デバイス116に送信することが可能な任意のタイプのサーバデバイスであり得る。ファイルサーバ114は、(たとえば、ウェブサイトのための)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、コンテンツ配信ネットワークデバイス、またはネットワーク接続ストレージ(NAS)デバイスを表し得る。宛先デバイス116は、インターネット接続を含む、任意の標準データ接続を通じてファイルサーバ114から符号化されたビデオデータにアクセスし得る。これは、ワイヤレスチャネル(たとえば、Wi-Fi(登録商標)接続)、有線接続(たとえば、DSL、ケーブルモデムなど)、または、ファイルサーバ114に記憶された符号化されたビデオデータにアクセスするのに適した、両方の組合せを含み得る。ファイルサーバ114および入力インターフェース122は、ストリーミング伝送プロトコル、ダウンロード伝送プロトコル、またはそれらの組合せに従って動作するように構成され得る。
【0022】
[0039]出力インターフェース108および入力インターフェース122は、ワイヤレス送信機/受信機、モデム、有線ネットワーキング構成要素(たとえば、イーサネット(登録商標)カード)、様々なIEEE802.11規格のいずれかに従って動作するワイヤレス通信構成要素、または他の物理的構成要素を表し得る。出力インターフェース108および入力インターフェース122がワイヤレス構成要素を備える例では、出力インターフェース108および入力インターフェース122は、4G、4G-LTE(登録商標)(ロングタームエボリューション)、LTEアドバンスト、5Gなどのセルラー通信規格に従って、符号化されたビデオデータなどのデータを転送するように構成され得る。出力インターフェース108がワイヤレス送信機を備えるいくつかの例では、出力インターフェース108と入力インターフェース122とは、IEEE802.11仕様、IEEE802.15仕様(たとえば、ZigBee(登録商標))、Bluetooth(登録商標)規格などの、他のワイヤレス規格に従って、符号化されたビデオデータなどのデータを転送するように構成され得る。いくつかの例では、ソースデバイス102および/または宛先デバイス116は、それぞれのシステムオンチップ(SoC)デバイスを含み得る。たとえば、ソースデバイス102は、ビデオエンコーダ200および/または出力インターフェース108に起因する機能を実行するためにSoCデバイスを含んでもよく、宛先デバイス116は、ビデオデコーダ300および/または入力インターフェース122に起因する機能を実行するためにSoCデバイスを含んでもよい。
【0023】
[0040]本開示の技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH:dynamic adaptive streaming over HTTP)などのインターネットストリーミングビデオ送信、データ記憶媒体に符号化されたデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例などの、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。
【0024】
[0041]宛先デバイス116の入力インターフェース122は、コンピュータ可読媒体110(たとえば、記憶デバイス112、ファイルサーバ114など)から符号化されたビデオビットストリームを受信する。符号化されたビデオビットストリームコンピュータ可読媒体110は、ビデオブロックまたは他のコーディングされたユニット(たとえば、スライス、ピクチャ、ピクチャのグループ、シーケンスなど)の特性および/または処理を記述する値を有するシンタックス要素などの、ビデオデコーダ300によっても使用される、ビデオエンコーダ200によって定義されるシグナリング情報を含み得る。ディスプレイデバイス118は、ユーザに復号されたビデオデータの復号されたピクチャを表示する。ディスプレイデバイス118は、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの、様々なディスプレイデバイスのいずれかを表し得る。
【0025】
[0042]
図1には示されていないが、いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は各々、オーディオエンコーダおよび/またはオーディオデコーダと統合されてもよく、共通のデータストリームにオーディオとビデオの両方を含む多重化されたストリームを処理するために、適切なMUX-DEMUXユニット、または他のハードウェアおよび/もしくはソフトウェアを含み得る。
【0026】
[0043]ビデオエンコーダ200およびビデオデコーダ300は各々、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなどの、様々な好適なエンコーダおよび/もしくはデコーダ回路のいずれか、またはそれらの任意の組合せとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、好適な非一時的コンピュータ可読媒体にソフトウェアの命令を記憶し、本開示の技法を実行するために1つまたは複数のプロセッサを使用してその命令をハードウェアで実行し得る。ビデオエンコーダ200およびビデオデコーダ300の各々は、1つまたは複数のエンコーダまたはデコーダに含まれてもよく、それらのいずれかが、それぞれのデバイス中の複合エンコーダ/デコーダ(CODEC)の一部として組み込まれてもよい。ビデオエンコーダ200および/またはビデオデコーダ300を含むデバイスは、集積回路、マイクロプロセッサ、および/または携帯電話などのワイヤレス通信デバイスを備えてもよい。
【0027】
[0044]ビデオエンコーダ200およびビデオデコーダ300は、高効率ビデオコーディング(HEVC)とも呼ばれるITU-T H.265、またはマルチビューおよび/もしくはスケーラブルビデオコーディング拡張などのそれらの拡張などの、ビデオコーディング規格に従って動作し得る。代替的に、ビデオエンコーダ200およびビデオデコーダ300は、共同探査テストモデル(JEM:Joint Exploration Test Model)、または汎用ビデオコーディング(VVC:Versatile Video Coding)とも呼ばれるITU-T H.266などの、他のプロプライエタリまたは業界規格に従って動作し得る。VVC規格のドラフトは、Bross他、「Versatile Video Coding (Draft 4)」、ITU-T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11のジョイントビデオエキスパートチーム(JVET)、第13回会合、マラケシュ、モロッコ、2019年1月9~18日、JVET-M1001-v5(以後「VVC Draft 4)に記載される。しかしながら、本開示の技法は、いかなる特定のコーディング規格にも限定されない。
【0028】
[0045]一般に、ビデオエンコーダ200およびビデオデコーダ300は、ピクチャのブロックベースのコーディングを実行し得る。「ブロック」という用語は一般に、処理されるべき(たとえば、符号化されるべき、復号されるべき、または符号化および/もしくは復号プロセスにおいて他の方法で使用されるべき)データを含む構造を指す。たとえば、ブロックは、ルミナンスおよび/またはクロミナンスデータのサンプルの2次元行列を含み得る。一般に、ビデオエンコーダ200およびビデオデコーダ300は、YUV(たとえば、Y、Cb、Cr)フォーマットで表されるビデオデータをコーディングし得る。すなわち、ピクチャのサンプルのために赤色、緑色、および青色(RGB)データをコーディングするのではなく、ビデオエンコーダ200およびビデオデコーダ300は、ルミナンス成分とクロミナンス成分とをコーディングしてもよく、ここで、クロミナンス成分は、赤色相と青色相の両方のクロミナンス成分を含み得る。いくつかの例では、ビデオエンコーダ200は、符号化より前に、受信されたRGBフォーマットのデータをYUV表現に変換し、ビデオデコーダ300は、YUV表現をRGBフォーマットに変換する。代替的に、前処理および後処理ユニット(図示せず)が、これらの変換を実行し得る。
【0029】
[0046]本開示は、全般に、ピクチャのデータを符号化または復号するプロセスを含むように、ピクチャのコーディング(たとえば、符号化および復号)に言及することがある。同様に、本開示は、ブロックのデータを符号化または復号するプロセス、たとえば、予測および/または残差コーディングを含むように、ピクチャのブロックのコーディングに言及することがある。符号化されたビデオビットストリームは、一般に、コーディング決定(たとえば、コーディングモード)とブロックへのピクチャの区分とを表すシンタックス要素の一連の値を含む。したがって、ピクチャまたはブロックをコーディングすることへの言及は、一般に、ピクチャまたはブロックを形成するシンタックス要素の値をコーディングすることとして理解されるべきである。
【0030】
[0047]HEVCは、コーディングユニット(CU)、予測ユニット(PU)、および変換ユニット(TU)を含む、様々なブロックを定義する。HEVCによれば、(ビデオエンコーダ200などの)ビデオコーダは、4分木構造に従ってコーディングツリーユニット(CTU)をCUに区分する。すなわち、ビデオコーダは、CTUおよびCUを4つの等しい、重複しない矩形に区分し、4分木の各ノードは、0個または4個のいずれかの子ノードを有する。子ノードのないノードは、「リーフノード」と呼ばれることがあり、そのようなリーフノードのCUは、1つまたは複数のPUおよび/または1つまたは複数のTUを含み得る。ビデオコーダは、PUとTUとをさらに区分し得る。たとえば、HEVCでは、残差4分木(RQT)はTUの区分を表す。HEVCでは、PUはインター予測データを表すが、TUは残差データを表す。イントラ予測されるCUは、イントラモード指示などのイントラ予測情報を含む。
【0031】
[0048]別の例として、ビデオエンコーダ200およびビデオデコーダ300は、JEMまたはVVCに従って動作するように構成され得る。JEMまたはVVCに従って、(ビデオエンコーダ200などの)ビデオコーダは、ピクチャを複数のコーディングツリーユニット(CTU)に区分する。ビデオエンコーダ200は、4分木2分木(QTBT)構造またはマルチタイプツリー(MTT)構造などの、木構造に従ってCTUを区分し得る。QTBT構造は、HEVCのCUとPUとTUの区別などの、複数の区分タイプの概念を除去する。QTBT構造は、4分木区分に従って区分される第1のレベル、および2分木区分に従って区分される第2のレベルという、2つのレベルを含む。QTBT構造のルートノードはCTUに対応する。2分木のリーフノードはコーディングユニット(CU)に対応する。
【0032】
[0049]MTT区分構造では、ブロックは、4分木(QT)区分と、2分木(BT)区分と、1つまたは複数のタイプの3分木(TT:triple tree)(3元木(TT:ternary tree)とも呼ばれる)区分とを使用して区分され得る。3分木または3元木区分は、ブロックが3つのサブブロックに分割される区分である。いくつかの例では、3分木または3元木区分は、中心を通って元のブロックを分割することなくブロックを3つのサブブロックに分割する。MTTにおける区分タイプ(たとえば、QT、BT、およびTT)は、対称または非対称であり得る。
【0033】
[0050]いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、ルミナンス成分とクロミナンス成分の各々を表すために単一のQTBTまたはMTT構造を使用してもよく、他の例では、ビデオエンコーダ200およびビデオデコーダ300は、ルミナンス成分のための1つのQTBT/MTT構造、および両方のクロミナンス成分のための別のQTBT/MTT構造(またはそれぞれのクロミナンス成分のための2つのQTBT/MTT構造)などの、2つ以上のQTBTまたはMTT構造を使用してもよい。
【0034】
[0051]ビデオエンコーダ200およびビデオデコーダ300は、HEVCに従う4分木区分、QTBT区分、MTT区分、または他の区分構造を使用するように構成され得る。説明の目的で、本開示の技法の説明はQTBT区分に関して提示される。しかしながら、本開示の技法は、4分木区分、または同様に他のタイプの区分を使用するように構成されたビデオコーダにも適用され得ることを理解されたい。
【0035】
[0052]ブロック(たとえば、CTUまたはCU)は、ピクチャの中で様々な方法でグループ化され得る。一例として、ブリックは、ピクチャの中の特定のタイル内のCTU行の長方形領域を指し得る。タイルは、ピクチャの中の特定のタイル列内および特定のタイル行内のCTUの長方形領域であり得る。タイル列は、ピクチャの高さに等しい高さと、(たとえば、ピクチャパラメータセットの中などにある)シンタックス要素によって指定された幅とを有するCTUの長方形領域を指す。タイル行は、(たとえば、ピクチャパラメータセットの中などにある)シンタックス要素によって指定された高さと、ピクチャの幅に等しい幅とを有するCTUの長方形領域を指す。
【0036】
[0053]本開示は、垂直および水平次元に関して(CUまたは他のビデオブロックなどの)ブロックのサンプル次元に言及するために、「N×N」および「N対N」、たとえば、16×16のサンプルまたは16対16のサンプルを交換可能に使用し得る。一般に、16×16のCUは、垂直方向に16個のサンプルを有し(y=16)、水平方向に16個のサンプルを有する(x=16)。同様に、N×NのCUは、一般に、垂直方向にN個のサンプルを有し、水平方向にN個のサンプルを有し、ここで、Nは非負整数値を表す。CUの中のサンプルは、行および列に配置され得る。さらに、CUは、必ずしも、水平方向において垂直方向と同じ数のサンプルを有するとは限らない。たとえば、CUはN×Mサンプルを備えてもよく、ここで、Mは必ずしもNに等しくない。
【0037】
[0054]ビデオエンコーダ200は、予測および/または残差情報、ならびに他の情報を表す、CUのためのビデオデータを符号化する。予測情報は、CUのための予測ブロックを形成するためにCUがどのように予測されるべきかを示す。残差情報は、一般に、符号化より前のCUのサンプルと予測ブロックとの間のサンプルごとの差分を表す。
【0038】
[0055]CUを予測するために、ビデオエンコーダ200は、一般に、インター予測またはイントラ予測を通じてCUのための予測ブロックを形成し得る。インター予測は、一般に、以前にコーディングされたピクチャのデータからCUを予測することを指し、一方、イントラ予測は、一般に、同じピクチャの以前にコーディングされたデータからCUを予測することを指す。インター予測を実行するために、ビデオエンコーダ200は、1つまたは複数の動きベクトルを使用して予測ブロックを生成し得る。ビデオエンコーダ200は、一般に、たとえば、CUと参照ブロックとの差分に関して、CUと厳密に一致する参照ブロックを特定するために動き探索を実行し得る。ビデオエンコーダ200は、参照ブロックが現在のCUと厳密に一致するかどうかを決定するために、絶対差分和(SAD)、2乗差分和(SSD)、平均絶対差(MAD)、平均2乗差(MSD)、または他のそのような差分計算を使用して差分メトリックを計算し得る。いくつかの例では、ビデオエンコーダ200は、単方向予測または双方向予測を使用して現在のCUを予測し得る。
【0039】
[0056]JEMおよびVVCのいくつかの例はまた、インター予測モードと見なされ得るアフィン動き補償モードを提供する。アフィン動き補償モードでは、ビデオエンコーダ200は、ズームインもしくはズームアウト、回転、射影運動、または他の不規則な運動タイプなどの、非並進運動を表す2つ以上の動きベクトルを決定し得る。
【0040】
[0057]イントラ予測を実行するために、ビデオエンコーダ200は、予測ブロックを生成するためのイントラ予測モードを選択し得る。JEMおよびVVCのいくつかの例は、様々な方向性モード、ならびに平面モードおよびDCモードを含む、67個のイントラ予測モードを提供する。一般に、ビデオエンコーダ200は、現在のブロック(たとえば、CUのブロック)のサンプルをそれから予測すべき、現在のブロックに対する隣接サンプルを記述するイントラ予測モードを選択する。そのようなサンプルは、ビデオエンコーダ200がラスタ走査順序で(左から右に、上から下に)CTUおよびCUをコーディングすると仮定すると、一般に、現在のブロックと同じピクチャの中の現在のブロックの上、左上、または左にあり得る。
【0041】
[0058]ビデオエンコーダ200は、現在のブロックの予測モードを表すデータを符号化する。たとえば、インター予測モードでは、ビデオエンコーダ200は、様々な利用可能なインター予測モードのうちのどれが使用されるか、ならびに対応するモードの動き情報を表すデータを符号化し得る。たとえば、単方向または双方向インター予測では、ビデオエンコーダ200は、高度動きベクトル予測(AMVP)またはマージモードを使用して動きベクトルを符号化し得る。ビデオエンコーダ200は、アフィン動き補償モードの動きベクトルを符号化するために同様のモードを使用し得る。
【0042】
[0059]ブロックのイントラ予測またはインター予測などの予測に続いて、ビデオエンコーダ200は、ブロックのための残差データを計算し得る。残差ブロックなどの残差データは、ブロックと、対応する予測モードを使用して形成された、ブロックについての予測ブロックとの間の、サンプルごとの差分を表す。ビデオエンコーダ200は、サンプル領域ではなく変換領域において変換されたデータを生成するために、残差ブロックに1つまたは複数の変換を適用し得る。たとえば、ビデオエンコーダ200は、離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に同様の変換を残差ビデオデータに適用し得る。さらに、ビデオエンコーダ200は、モード依存非分離可能2次変換(MDNSST:mode-dependent non-separable secondary transform)、信号依存変換、カルーネンレーベ変換(KLT)などの、2次変換を第1の変換に続いて適用し得る。ビデオエンコーダ200は、1つまたは複数の変換の適用に続いて変換係数を生成する。
【0043】
[0060]上述のように、変換係数を生成するための任意の変換に続いて、ビデオエンコーダ200は、変換係数の量子化を実行し得る。量子化は、一般に、係数を表すために使用されるデータの量をできる限り低減してさらなる圧縮をもたらすように、変換係数が量子化されるプロセスを指す。量子化プロセスを実行することによって、ビデオエンコーダ200は、係数の一部またはすべてと関連付けられるビット深度を低減し得る。たとえば、ビデオエンコーダ200は、量子化の間にnビット値をmビット値に丸めてもよく、nはmより大きい。いくつかの例では、量子化を実行するために、ビデオエンコーダ200は、量子化されるべき値のビットごとの右シフトを実行してもよい。
【0044】
[0061]量子化に続いて、ビデオエンコーダ200は、変換係数を走査して、量子化された変換係数を含む2次元行列から1次元ベクトルを生成し得る。走査は、より高いエネルギー(したがって、より低い頻度)の係数をベクトルの前方に配置し、より低いエネルギー(したがって、より高い頻度)の変換係数をベクトルの後方に配置するように設計され得る。いくつかの例では、ビデオエンコーダ200は、量子化された変換係数を走査してシリアル化されたベクトルを生成するためにあらかじめ定められた走査順序を利用し、次いで、ベクトルの量子化された変換係数をエントロピー符号化し得る。他の例では、ビデオエンコーダ200は適応型走査を実行し得る。量子化された変換係数を走査して1次元ベクトルを形成した後に、ビデオエンコーダ200は、たとえば、コンテキスト適応型バイナリ算術コーディング(CABAC:context-adaptive binary arithmetic coding)に従って、1次元ベクトルをエントロピー符号化し得る。ビデオエンコーダ200はまた、ビデオデータを復号する際にビデオデコーダ300によって使用するための、符号化されたビデオデータと関連付けられるメタデータを記述するシンタックス要素のための値をエントロピー符号化し得る。
【0045】
[0062]CABACを実行するために、ビデオエンコーダ200は、コンテキストモデル内のコンテキストを、送信されるべきシンボルに割り当て得る。コンテキストは、たとえば、シンボルの隣接値が0値であるかどうかに関係し得る。確率決定は、シンボルに割り当てられたコンテキストに基づき得る。
【0046】
[0063]ビデオエンコーダ200は、さらに、ブロックベースのシンタックスデータ、ピクチャベースのシンタックスデータ、およびシーケンスベースのシンタックスデータなどのシンタックスデータを、たとえば、ピクチャヘッダ、ブロックヘッダ、スライスヘッダ、またはシーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、もしくはビデオパラメータセット(VPS)などの他のシンタックスデータの中で、ビデオデコーダ300に対して生成し得る。ビデオデコーダ300は、対応するビデオデータをどのように復号すべきかを決定するために、そのようなシンタックスデータを同様に復号し得る。
【0047】
[0064]このようにして、ビデオエンコーダ200は、符号化されたビデオデータ、たとえば、ブロック(たとえば、CU)へのピクチャの区分ならびにブロックの予測および/または残差情報を記述するシンタックス要素を含むビットストリームを生成し得る。最終的に、ビデオデコーダ300は、ビットストリームを受信し、符号化されたビデオデータを復号し得る。
【0048】
[0065]一般に、ビデオデコーダ300は、ビットストリームの符号化されたビデオデータを復号するために、ビデオエンコーダ200によって実行されたものとは逆のプロセスを実行する。たとえば、ビデオデコーダ300は、ビデオエンコーダ200のCABAC符号化プロセスと逆ではあるが、それと実質的に同様の様式でCABACを使用してビットストリームのシンタックス要素の値を復号し得る。シンタックス要素は、CTUのCUを定義するために、CTUへのピクチャの区分情報と、QTBT構造などの対応する区分構造に従う、各CTUの区分とを定義し得る。シンタックス要素は、ビデオデータのブロック(たとえば、CU)のための予測および残差情報をさらに定義し得る。
【0049】
[0066]残差情報は、たとえば、量子化された変換係数によって表され得る。ビデオデコーダ300は、ブロックの残差ブロックを再生するために、ブロックの量子化された変換係数を逆量子化し、逆変換し得る。ビデオデコーダ300は、ブロックの予測ブロックを形成するために、シグナリングされた予測モード(イントラまたはインター予測)と、関連する予測情報(たとえば、インター予測のための動き情報)とを使用する。ビデオデコーダ300は、元のブロックを再生するために(サンプルごとに)予測ブロックと残差ブロックとを組み合わせ得る。ビデオデコーダ300は、ブロックの境界に沿って視覚的アーティファクトを低減するためにデブロッキング処理を実行することなどの、追加の処理を実行し得る。
【0050】
[0067]本開示の技法によれば、ビデオエンコーダ200およびビデオデコーダ300は、双予測される予測を使用して符号化されたビデオデータの現在のブロックの動きベクトルを決定し、現在のブロックの双予測される予測のために使用される重みに基づいて動きベクトルに対して動きベクトル改良プロセスを使用すると決定し、動きベクトル改良プロセスを使用するという決定に基づいて、動きベクトルに対して動きベクトル改良プロセスを適用するように構成され得る。
【0051】
[0068]本開示では、一般に、シンタックス要素などの、ある情報を「シグナリング」することに言及することがある。「シグナリング」という用語は、一般に、値シンタックス要素および/または符号化されたビデオデータを復号するために使用される他のデータの通信を指し得る。すなわち、ビデオエンコーダ200は、ビットストリームにおいてシンタックス要素の値をシグナリングし得る。一般に、シグナリングは、ビットストリームの中に値を生成することを指す。上述されたように、ソースデバイス102は、実質的にリアルタイムでビットストリームを宛先デバイス116に移送するか、または、宛先デバイス116による後の取出しのためにシンタックス要素を記憶デバイス112に記憶するときに起こり得るように、非リアルタイムでビットストリームを宛先デバイス116に移送し得る。
【0052】
[0069]
図2は、本開示の技法を実行し得る例示的なビデオエンコーダ200を示すブロック図である。
図2は、説明のために与えられており、本開示で広く例示され説明される技法を限定するものと見なされるべきではない。説明の目的で、本開示は、HEVCビデオコーディング規格および開発中のH.266ビデオコーディング規格などのビデオコーディング規格の文脈において、ビデオエンコーダ200を説明する。しかしながら、本開示の技法は、これらのビデオコーディング規格に限定されず、一般的にビデオ符号化および復号に適用可能である。
【0053】
[0070]
図2の例では、ビデオエンコーダ200は、ビデオデータメモリ230と、モード選択ユニット202と、残差生成ユニット204と、変換処理ユニット206と、量子化ユニット208と、逆量子化ユニット210と、逆変換処理ユニット212と、再構築ユニット214と、フィルタユニット216と、復号ピクチャバッファ(DPB)218と、エントロピー符号化ユニット220とを含む。ビデオデータメモリ230と、モード選択ユニット202と、残差生成ユニット204と、変換処理ユニット206と、量子化ユニット208と、逆量子化ユニット210と、逆変換処理ユニット212と、再構築ユニット214と、フィルタユニット216と、DPB218と、エントロピー符号化ユニット220とのいずれかまたはすべては、1つまたは複数のプロセッサまたは処理回路において実装され得る。その上、ビデオエンコーダ200は、これらおよび他の機能を実行するための追加または代替のプロセッサまたは処理回路を含み得る。
【0054】
[0071]ビデオデータメモリ230は、ビデオエンコーダ200の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオエンコーダ200は、たとえば、ビデオソース104(
図1)から、ビデオデータメモリ230に記憶されたビデオデータを受信し得る。DPB218は、ビデオエンコーダ200による後続のビデオデータの予測において使用するための参照ビデオデータを記憶する参照ピクチャメモリとして働き得る。ビデオデータメモリ230およびDPB218は、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗性RAM(RRAM(登録商標))、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ230およびDPB218は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ230は、示されるように、ビデオエンコーダ200の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
【0055】
[0072]本開示では、ビデオデータメモリ230への言及は、特にそのように説明されない限り、ビデオエンコーダ200の内部のメモリに限定されるものとして解釈されるべきではなく、または特にそのように説明されない限り、ビデオエンコーダ200の外部のメモリに限定されるものとして解釈されるべきではない。そうではなく、ビデオデータメモリ230への言及は、ビデオエンコーダ200が符号化のために受信するビデオデータ(たとえば、符号化されるべきである現在のブロックのためのビデオデータ)を記憶する参照メモリとして理解されるべきである。
図1のメモリ106はまた、ビデオエンコーダ200の様々なユニットからの出力の一時的記憶を提供し得る。
【0056】
[0073]
図2の様々なユニットは、ビデオエンコーダ200によって実行される動作を理解するのを支援するために示されている。ユニットは、固定機能回路、プログラマブル回路、またはそれらの組合せとして実装され得る。固定機能回路は、特定の機能を与える回路を指し、実行され得る動作に関してあらかじめ設定される。プログラマブル回路は、様々なタスクを実行するように、および実行され得る動作においてフレキシブルな機能を提供するようにプログラムされる回路を指す。たとえば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって定義される様式でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行し得る。固定機能回路は、(たとえば、パラメータを受信するかまたはパラメータを出力するための)ソフトウェア命令を実行し得るが、固定機能回路が実行する動作のタイプは、一般に不変である。いくつかの例では、ユニットのうちの1つまたは複数は、別個の回路ブロック(固定機能またはプログラマブル)であってもよく、いくつかの例では、1つまたは複数のユニットは、集積回路であってもよい。
【0057】
[0074]ビデオエンコーダ200は、算術論理ユニット(ALU)、基本機能ユニット(EFU)、デジタル回路、アナログ回路、および/またはプログラマブル回路から形成されるプログラマブルコアを含み得る。ビデオエンコーダ200の動作が、プログラマブル回路によって実行されるソフトウェアを使用して実行される例では、メモリ106(
図1)は、ビデオエンコーダ200が受信し実行するソフトウェアのオブジェクトコードを記憶してもよく、またはビデオエンコーダ200内の別のメモリ(図示せず)が、そのような命令を記憶してもよい。
【0058】
[0075]ビデオデータメモリ230は、受信されたビデオデータを記憶するように構成される。ビデオエンコーダ200は、ビデオデータメモリ230からビデオデータのピクチャを取り出し、残差生成ユニット204とモード選択ユニット202とにビデオデータを提供し得る。ビデオデータメモリ230の中のビデオデータは、符号化されるべきである未加工のビデオデータであり得る。
【0059】
[0076]モード選択ユニット202は、動き推定ユニット222と、動き補償ユニット224と、イントラ予測ユニット226とを含む。モード選択ユニット202は、他の予測モードに従ってビデオ予測を実行するために追加の機能ユニットを含み得る。例として、モード選択ユニット202は、パレットユニット、(動き推定ユニット222および/または動き補償ユニット224の一部であり得る)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニットなどを含み得る。
【0060】
[0077]モード選択ユニット202は、一般に、符号化パラメータの組合せと、そのような組合せに対して得られたレートひずみ値とをテストするために、複数の符号化パスを協調させる。符号化パラメータは、CUへのCTUの区分、CUのための予測モード、CUの残差データのための変換タイプ、CUの残差データのための量子化パラメータなどを含み得る。モード選択ユニット202は、他のテストされた組合せよりも良好であるレートひずみ値を有する符号化パラメータの組合せを最終的に選択し得る。
【0061】
[0078]ビデオエンコーダ200は、一連のCTUにビデオデータメモリ230から取り出されたピクチャを区分し、スライス内の1つまたは複数のCTUをカプセル化し得る。モード選択ユニット202は、上で説明されたHEVCのQTBT構造または4分木構造などの木構造に従ってピクチャのCTUを区分し得る。上で説明されたように、ビデオエンコーダ200は、木構造に従ってCTUを区分することから1つまたは複数のCUを形成し得る。そのようなCUは、一般に「ビデオブロック」または「ブロック」と呼ばれることもある。
【0062】
[0079]一般に、モード選択ユニット202はまた、現在のブロック(たとえば、現在のCU、またはHEVCでは、PUとTUの重複する部分)のための予測ブロックを生成するように、その構成要素(たとえば、動き推定ユニット222、動き補償ユニット224、およびイントラ予測ユニット226)を制御する。現在のブロックのインター予測のために、動き推定ユニット222は、1つまたは複数の参照ピクチャ(たとえば、DPB218に記憶されている1つまたは複数の以前のコーディングされたピクチャ)の中で1つまたは複数の厳密に一致する参照ブロックを特定するために動き探索を実行し得る。特に、動き推定ユニット222は、たとえば、絶対差分和(SAD)、2乗差分和(SSD)、平均絶対差(MAD)、平均2乗差(MSD)などに従って、現在のブロックに対して潜在的な参照ブロックがどのくらい類似しているかを表す値を計算し得る。動き推定ユニット222は、一般に、現在のブロックと考慮されている参照ブロックとの間のサンプルごとの差分を使用してこれらの計算を実行し得る。動き推定ユニット222は、現在のブロックに最も厳密に一致する参照ブロックを示す、これらの計算から得られた最も低い値を有する参照ブロックを識別し得る。
【0063】
[0080]動き推定ユニット222は、現在のピクチャの中の現在のブロックの位置に対して参照ピクチャの中の参照ブロックの位置を定義する1つまたは複数の動きベクトル(MV)を形成し得る。動き推定ユニット222は、次いで、動きベクトルを動き補償ユニット224に提供し得る。たとえば、単方向インター予測の場合、動き推定ユニット222は、単一の動きベクトルを提供し得るが、双方向インター予測(双予測される予測)の場合、動き推定ユニット222は、2つの動きベクトルを提供し得る。動き補償ユニット224は、次いで、動きベクトルを使用して予測ブロックを生成し得る。たとえば、動き補償ユニット224は、動きベクトルを使用して参照ブロックのデータを取り出し得る。別の例として、動きベクトルが部分サンプル精度を有する場合、動き補償ユニット224は、1つまたは複数の補間フィルタに従って予測ブロックの値を補間し得る。その上、双方向インター予測の場合、動き補償ユニット224は、それぞれの動きベクトルによって特定される2つの参照ブロックのためのデータを取り出し、たとえば、サンプルごとの平均化または重み付け平均化を通じて、取り出されたデータを組み合わせ得る。
【0064】
[0081]以下でより詳細に説明される本開示の技法によれば、動き補償ユニット224は、双予測される予測を使用してビデオデータのブロックを符号化するように構成され得る。上で言及されたように、双予測される予測は、2つの参照ピクチャリストから2つの動きベクトルを使用し得る。いくつかの例では、動き補償ユニット224はまた、双予測される予測において使用される動きベクトルの1つまたは複数に動きベクトル改良プロセス(たとえば、DMVR)を適用し得る。例示的なDMVR技法は、以下で論じられ、マージ動きベクトル改良、マージオフセット拡張、双方向テンプレート照合、パラメトリックサブペル動きベクトル導出、および双方向オプティカルフローのうちの1つまたは複数を含み得る。本開示は、双予測される予測を用いてビデオデータのブロックを符号化するときに、DMVR技法(たとえば、双方向テンプレート照合)をいつ使用するかを決定するための技法を説明する。
【0065】
[0082]本開示の一例では、動き補償ユニット224は、双予測される予測を使用して符号化されたビデオデータの現在のブロックのための動きベクトルを決定し、現在のブロックの双予測される予測のために使用される重みに基づいて動きベクトルに対して動きベクトル改良プロセスを使用すると決定し、動きベクトル改良プロセスを使用するという決定に基づいて、動きベクトルに対して動きベクトル改良プロセスを適用するように構成され得る。たとえば、現在のブロックの双予測される予測のために使用される重みが等しくないとき、動き補償ユニット224は、動きベクトル改良プロセスを無効にすると決定し得る。他の例では、動き補償ユニット224は、動きベクトルによって特定される予測されるブロック間の差分を決定し、現在のブロックの双予測される予測のために使用される重みと、動きベクトルによって特定される予測されるブロック間の決定された差分とに基づいて、動きベクトルに対して動きベクトル改良プロセスを使用すると決定するように構成され得る。たとえば、動き補償ユニット224は、動きベクトルによって特定される予測されるブロック間の差分が閾値未満である場合、動きベクトル改良プロセスを無効にすると決定するように構成され得る。
【0066】
[0083]別の例として、イントラ予測またはイントラ予測コーディングの場合、イントラ予測ユニット226は、現在のブロックに隣接するサンプルから予測ブロックを生成し得る。たとえば、方向モードの場合、イントラ予測ユニット226は、一般に、予測ブロックを生成するために、隣接サンプルの値を数学的に組み合わせ、現在のブロックにわたって定義された方向にこれらの計算された値をポピュレート(populate)し得る。別の例として、DCモードの場合、イントラ予測ユニット226は、現在のブロックに隣接するサンプルの平均を計算し、予測ブロックの各サンプルに対するこの得られた平均を含むように予測ブロックを生成し得る。
【0067】
[0084]モード選択ユニット202は、残差生成ユニット204に予測ブロックを与える。残差生成ユニット204は、ビデオデータメモリ230から現在のブロックの未加工の、コーディングされていないバージョンを受信し、モード選択ユニット202から予測ブロックを受信する。残差生成ユニット204は、現在のブロックと予測ブロックとの間のサンプルごとの差分を計算する。得られたサンプルごとの差分は、現在のブロックのための残差ブロックを定義する。いくつかの例では、残差生成ユニット204はまた、残差差分パルスコード変調(RDPCM:residual differential pulse code modulation)を使用して残差ブロックを生成するために、残差ブロックの中のサンプル値の間の差分を決定し得る。いくつかの例では、残差生成ユニット204は、バイナリ減算を実行する1つまたは複数の減算器回路を使用して形成され得る。
【0068】
[0085]モード選択ユニット202がCUをPUに区分する例では、各PUは、ルーマ予測ユニットおよび対応するクロマ予測ユニットと関連付けられ得る。ビデオエンコーダ200およびビデオデコーダ300は、様々なサイズを有するPUをサポートし得る。上記のように、CUのサイズは、CUのルーマコーディングブロックのサイズを指すことがあり、PUのサイズは、PUのルーマ予測ユニットのサイズを指すことがある。特定のCUのサイズが2N×2Nであると仮定すると、ビデオエンコーダ200は、イントラ予測のための2N×2NまたはN×NのPUサイズと、インター予測のための2N×2N、2N×N、N×2N、N×N、または同様のものの対称的なPUサイズとをサポートし得る。ビデオエンコーダ200およびビデオデコーダ300はまた、インター予測のための2N×nU、2N×nD、nL×2N、およびnR×2NのPUサイズの非対称的区分をサポートし得る。
【0069】
[0086]モード選択ユニットがCUをPUにさらに区分しない例では、各CUは、ルーマコーディングブロックおよび対応するクロマコーディングブロックと関連付けられ得る。上記のように、CUのサイズは、CUのルーマコーディングブロックのサイズを指し得る。ビデオエンコーダ200およびビデオデコーダ300は、2N×2N、2N×N、またはN×2NのCUサイズをサポートし得る。
【0070】
[0087]いくつかの例として、イントラブロックコピーモードコーディング、アフィンモードコーディング、および線形モデル(LM)モードコーディングなどの、他のビデオコーディング技法では、モード選択ユニット202は、コーディング技法と関連付けられたそれぞれのユニットを介して、符号化されている現在のブロックのための予測ブロックを生成する。パレットモードコーディングなどの、いくつかの例では、モード選択ユニット202は、予測ブロックを生成せず、代わりに、選択されたパレットに基づいてブロックを再構築するための方式を示すシンタックス要素を生成し得る。そのようなモードでは、モード選択ユニット202は、符号化されるためにこれらのシンタックス要素をエントロピー符号化ユニット220に提供し得る。
【0071】
[0088]上で説明されたように、残差生成ユニット204は、現在のブロックおよび対応する予測ブロックのための、ビデオデータを受信する。残差生成ユニット204は、次いで、現在のブロックのための残差ブロックを生成する。残差ブロックを生成するために、残差生成ユニット204は、予測ブロックと現在のブロックとの間のサンプルごとの差分を計算する。
【0072】
[0089]変換処理ユニット206は、変換係数のブロック(本明細書では「変換係数ブロック」と呼ばれる)を生成するために、残差ブロックに1つまたは複数の変換を適用する。変換処理ユニット206は、変換係数ブロックを形成するために、残差ブロックに様々な変換を適用し得る。たとえば、変換処理ユニット206は、離散コサイン変換(DCT)、方向変換、カルーネンレーベ変換(KLT)、または概念的に同様の変換を残差ブロックに適用し得る。いくつかの例では、変換処理ユニット206は、残差ブロックに複数の変換、たとえば、回転変換などの1次変換および2次変換を実行し得る。いくつかの例では、変換処理ユニット206は、残差ブロックに変換を適用しない。
【0073】
[0090]量子化ユニット208は、量子化された変換係数ブロックを生成するために変換係数ブロックの中の変換係数を量子化し得る。量子化ユニット208は、現在のブロックと関連付けられる量子化パラメータ(QP)値に従って変換係数ブロックの変換係数を量子化し得る。ビデオエンコーダ200は(たとえば、モード選択ユニット202を介して)、CUと関連付けられたQP値を調整することによって、現在のブロックと関連付けられた係数ブロックに適用される量子化の程度を調整し得る。量子化は、情報の損失をもたらすことがあり、したがって、量子化された変換係数は、変換処理ユニット206によって生成された元の変換係数よりも低い精度を有し得る。
【0074】
[0091]逆量子化ユニット210および逆変換処理ユニット212は、変換係数ブロックから残差ブロックを再構築するために、それぞれ、量子化された変換係数ブロックに逆量子化および逆変換を適用し得る。再構築ユニット214は、再構築された残差ブロックと、モード選択ユニット202によって生成された予測ブロックとに基づいて、(潜在的にある程度のひずみを伴うが)現在のブロックに対応する再構築されたブロックを生成し得る。たとえば、再構築ユニット214は、再構築されたブロックを生成するために、モード選択ユニット202によって生成された予測ブロックからの対応するサンプルに、再構築された残差ブロックのサンプルを加算し得る。
【0075】
[0092]フィルタユニット216は、再構築されたブロックに対して1つまたは複数のフィルタ演算を実行し得る。たとえば、フィルタユニット216は、CUの端部に沿ったブロッキネスアーティファクトを低減するためにデブロッキング動作を実行し得る。いくつかの例では、フィルタユニット216の動作はスキップされてもよい。
【0076】
[0093]ビデオエンコーダ200は、再構築されたブロックをDPB218に記憶する。たとえば、フィルタユニット216の動作が必要とされない例において、再構築ユニット214は、再構築されたブロックをDPB218に記憶し得る。フィルタユニット216の動作が必要とされる例では、フィルタユニット216は、フィルタリングされた再構築されたブロックをDPB218に記憶し得る。動き推定ユニット222および動き補償ユニット224は、後で符号化されるピクチャのブロックをインター予測するために、再構築(および潜在的にフィルタリング)されたブロックから形成された参照ピクチャをDPB218から取り出し得る。加えて、イントラ予測ユニット226は、現在のピクチャの中の他のブロックをイントラ予測するために、現在のピクチャのDPB218の中の再構築されたブロックを使用し得る。
【0077】
[0094]一般に、エントロピー符号化ユニット220は、ビデオエンコーダ200の他の機能構成要素から受信されたシンタックス要素をエントロピー符号化し得る。たとえば、エントロピー符号化ユニット220は、量子化ユニット208からの量子化された変換係数ブロックをエントロピー符号化し得る。別の例として、エントロピー符号化ユニット220は、モード選択ユニット202からの予測シンタックス要素(たとえば、インター予測のための動き情報またはイントラ予測のためのイントラモード情報)をエントロピー符号化し得る。エントロピー符号化ユニット220は、エントロピー符号化されたデータを生成するためにビデオデータの別の例であるシンタックス要素に対して1つまたは複数のエントロピー符号化動作を実行し得る。たとえば、エントロピー符号化ユニット220は、コンテキスト適応型可変長コーディング(CAVLC)動作、CABAC動作、可変対可変(V2V)長コーディング動作、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)動作、確率間隔区分エントロピー(PIPE)コーディング動作、指数ゴロム符号化動作、または別のタイプのエントロピー符号化動作をデータに対して実行し得る。いくつかの例では、エントロピー符号化ユニット220は、シンタックス要素がエントロピー符号化されないバイパスモードで動作し得る。
【0078】
[0095]ビデオエンコーダ200は、スライスまたはピクチャのブロックを再構築するために必要なエントロピー符号化されたシンタックス要素を含むビットストリームを出力し得る。特に、エントロピー符号化ユニット220は、ビットストリームを出力し得る。
【0079】
[0096]上で説明された動作が、ブロックに関して説明される。そのような説明は、ルーマコーディングブロックおよび/またはクロマコーディングブロックのための動作であるものとして理解されるべきである。上で説明されたように、いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、CUのルーマ成分およびクロマ成分である。いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、PUのルーマおよびクロマ成分である。
【0080】
[0097]いくつかの例では、ルーマコーディングブロックに関して実行される動作は、クロマコーディングブロックのために繰り返される必要はない。一例として、ルーマコーディングブロックのための動きベクトル(MV)と参照ピクチャとを識別するための動作は、クロマブロックのためのMVと参照ピクチャとを識別するために繰り返される必要はない。むしろ、ルーマコーディングブロックのためのMVは、クロマブロックのためのMVを決定するためにスケーリングされてもよく、参照ピクチャは同じであってもよい。別の例として、イントラ予測プロセスは、ルーマコーディングブロックおよびクロマコーディングブロックに対して同じであり得る。
【0081】
[0098]ビデオエンコーダ200は、ビデオデータを記憶するように構成されるメモリと、回路において実装される1つまたは複数の処理ユニットとを含む、ビデオデータを符号化するように構成されるデバイスの例を表し、1つまたは複数の処理ユニットは、ビデオデータの現在のブロックのための動きベクトルを決定し、現在のブロックの双予測される予測のために使用される重みに基づいて動きベクトルに対して動きベクトル改良プロセスを使用すると決定し、動きベクトル改良プロセスを使用するという決定に基づいて動きベクトルを改良するように構成される。
【0082】
[0099]
図3は、本開示の技法を実行し得る例示的なビデオデコーダ300を示すブロック図である。
図3は、説明の目的で与えられており、本開示において広く例示され、説明される技法を限定するものではない。説明の目的で、本開示は、JEM、VVC、およびHEVCの技法に従ってビデオデコーダ300を説明する。しかしながら、本開示の技法は、他のビデオコーディング規格に構成されたビデオコーディングデバイスによって実行され得る。
【0083】
[0100]
図3の例では、ビデオデコーダ300は、コーディングピクチャバッファ(CPB)メモリ320と、エントロピー復号ユニット302と、予測処理ユニット304と、逆量子化ユニット306と、逆変換処理ユニット308と、再構築ユニット310と、フィルタユニット312と、復号ピクチャバッファ(DPB)314とを含む。CPBメモリ320と、エントロピー復号ユニット302と、予測処理ユニット304と、逆量子化ユニット306と、逆変換処理ユニット308と、再構築ユニット310と、フィルタユニット312と、DPB314とのいずれかまたはすべては、1つまたは複数のプロセッサまたは処理回路において実装され得る。その上、ビデオデコーダ300は、これらおよび他の機能を実行するために、追加または代替のプロセッサもしくは処理回路を含み得る。
【0084】
[0101]予測処理ユニット304は、動き補償ユニット316とイントラ予測ユニット318とを含む。予測処理ユニット304は、他の予測モードに従って予測を実行するための追加のユニットを含み得る。例として、予測処理ユニット304は、パレットユニット、(動き補償ユニット316の一部を形成し得る)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニットなどを含み得る。他の例では、ビデオデコーダ300は、より多数の、より少数の、または異なる機能の構成要素を含み得る。
【0085】
[0102]CPBメモリ320は、ビデオデコーダ300の構成要素によって復号されるべき、符号化されたビデオビットストリームなどのビデオデータを記憶し得る。CPBメモリ320に記憶されるビデオデータは、たとえば、コンピュータ可読媒体110(
図1)から取得され得る。CPBメモリ320は、符号化されたビデオビットストリームからの符号化されたビデオデータ(たとえば、シンタックス要素)を記憶するCPBを含み得る。また、CPBメモリ320は、ビデオデコーダ300の様々なユニットからの出力を表す一時データなど、コーディングされたピクチャのシンタックス要素以外のビデオデータを記憶し得る。DPB314は、一般に、ビデオデコーダ300が符号化されたビデオビットストリームの後続のデータまたはピクチャを復号するときに出力しおよび/または参照ビデオデータとして使用し得る復号されたピクチャを記憶する。CPBメモリ320およびDPB314は、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗性RAM(RRAM)、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのいずれかによって形成され得る。CPBメモリ320およびDPB314は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、CPBメモリ320は、ビデオデコーダ300の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
【0086】
[0103]追加または代替として、いくつかの例では、ビデオデコーダ300は、メモリ120(
図1)からコーディングされたビデオデータを取り出し得る。すなわち、メモリ120は、CPBメモリ320とともに上で論じられたデータを記憶し得る。同様に、メモリ120は、ビデオデコーダ300の機能の一部またはすべてが、ビデオデコーダ300の処理回路によって実行されるべきソフトウェアにおいて実装されたとき、ビデオデコーダ300によって実行されるべき命令を記憶し得る。
【0087】
[0104]
図3に示されている様々なユニットは、ビデオデコーダ300によって実行される動作を理解するのを支援するために図示されている。ユニットは、固定機能回路、プログラマブル回路、またはそれらの組合せとして実装され得る。
図2と同様に、固定機能回路は、特定の機能を提供する回路を指し、実行され得る動作にプリセットされる。プログラマブル回路は、様々なタスクを実行するように、および実行され得る動作においてフレキシブルな機能を提供するようにプログラムされる回路を指す。たとえば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって定義される様式でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行し得る。固定機能回路は、(たとえば、パラメータを受信するかまたはパラメータを出力するための)ソフトウェア命令を実行し得るが、固定機能回路が実行する動作のタイプは、一般に不変である。いくつかの例では、ユニットのうちの1つまたは複数は、別個の回路ブロック(固定機能またはプログラマブル)であってもよく、いくつかの例では、1つまたは複数のユニットは、集積回路であってもよい。
【0088】
[0105]ビデオデコーダ300は、ALU、EFU、デジタル回路、アナログ回路、および/またはプログラマブル回路から形成されるプログラマブルコアを含み得る。ビデオデコーダ300の動作が、プログラマブル回路上で実行されるソフトウェアによって実行される例では、オンチップまたはオフチップメモリは、ビデオデコーダ300が受信し実行するソフトウェアの命令(たとえば、オブジェクトコード)を記憶し得る。
【0089】
[0106]エントロピー復号ユニット302は、CPBから符号化されたビデオデータを受信し、ビデオデータをエントロピー復号してシンタックス要素を再生し得る。予測処理ユニット304、逆量子化ユニット306、逆変換処理ユニット308、再構成ユニット310、およびフィルタユニット312は、ビットストリームから抽出されるシンタックス要素に基づいて復号されたビデオデータを生成し得る。
【0090】
[0107]一般に、ビデオデコーダ300は、ブロックごとにピクチャを再構築する。ビデオデコーダ300は、各ブロックに対して個々に再構築演算を実行し得る(ここで、現在再構築されているブロック、すなわち、現在復号されているブロックは、「現在のブロック」と呼ばれることがある)。
【0091】
[0108]エントロピー復号ユニット302は、量子化された変換係数ブロックの量子化された変換係数を定義するシンタックス要素、ならびに量子化パラメータ(QP)および/または変換モード指示などの変換情報をエントロピー復号し得る。逆量子化ユニット306は、量子化の程度を決定するために、また同様に、逆量子化ユニット306が適用すべき逆量子化の程度を決定するために、量子化された変換係数ブロックと関連付けられるQPを使用し得る。逆量子化ユニット306は、たとえば、量子化された変換係数を逆量子化するためにビット単位の左シフト演算を実行し得る。逆量子化ユニット306は、それによって、変換係数を含む変換係数ブロックを形成し得る。
【0092】
[0109]逆量子化ユニット306が変換係数ブロックを形成した後に、逆変換処理ユニット308は、現在のブロックと関連付けられる残差ブロックを生成するために、変換係数ブロックに1つまたは複数の逆変換を適用し得る。たとえば、逆変換処理ユニット308は、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向変換、または別の逆変換を、係数ブロックに適用し得る。
【0093】
[0110]さらに、予測処理ユニット304は、エントロピー復号ユニット302によってエントロピー復号された予測情報シンタックス要素に従って、予測ブロックを生成する。たとえば、現在のブロックがインター予測されていることを予測情報シンタックス要素が示す場合、動き補償ユニット316は、予測ブロックを生成し得る。この場合、予測情報シンタックス要素は、参照ブロックをそこから取り出すDPB314の中の参照ピクチャ、ならびに現在のピクチャの中の現在のブロックの位置に対する参照ピクチャの中の参照ブロックの位置を特定する、動きベクトルを示し得る。動き補償ユニット316は、一般に、動き補償ユニット224(
図2)に関して説明されたのと実質的に同様の方式で、インター予測プロセスを実行し得る。
【0094】
[0111]以下でより詳細に説明される本開示の技法によれば、動き補償ユニット316は、双予測される予測を使用してビデオデータのブロックを復号するように構成され得る。上で言及されたように、双予測される予測は、2つの参照ピクチャリストから2つの動きベクトルを使用し得る。いくつかの例では、動き補償ユニット316はまた、双予測される予測において使用される動きベクトルの1つまたは複数に動きベクトル改良プロセス(たとえば、DMVR)を適用し得る。例示的なDMVR技法は、以下で論じられ、マージ動きベクトル改良、マージオフセット拡張、双方向テンプレート照合、パラメトリックサブペル動きベクトル導出、および双方向オプティカルフローのうちの1つまたは複数を含み得る。本開示は、双予測される予測を用いてビデオデータのブロックを復号するときに、DMVR技法(たとえば、双方向テンプレート照合)をいつ使用するかを決定するための技法を説明する。
【0095】
[0112]本開示の一例では、動き補償ユニット316は、双予測される予測を使用して符号化されたビデオデータの現在のブロックのための動きベクトルを決定し、現在のブロックの双予測される予測のために使用される重みに基づいて動きベクトルに対して動きベクトル改良プロセスを使用すると決定し、動きベクトル改良プロセスを使用するという決定に基づいて、動きベクトルに対して動きベクトル改良プロセスを適用するように構成され得る。たとえば、現在のブロックの双予測される予測のために使用される重みが等しくないとき、動き補償ユニット316は、動きベクトル改良プロセスを無効にすると決定し得る。他の例では、動き補償ユニット316は、動きベクトルによって特定される予測されるブロック間の差分を決定し、現在のブロックの双予測される予測のために使用される重みと、動きベクトルによって特定される予測されるブロック間の決定された差分とに基づいて、動きベクトルに対して動きベクトル改良プロセスを使用すると決定するように構成され得る。たとえば、動き補償ユニット316は、動きベクトルによって特定される予測されたブロック間の差分が閾値未満である場合、動きベクトル改良プロセスを無効にすると決定するように構成され得る。
【0096】
[0113]別の例として、予測情報シンタックス要素が、現在のブロックがイントラ予測されることを示す場合、イントラ予測ユニット318は、予測情報シンタックス要素によって示されるイントラ予測モードに従って予測ブロックを生成し得る。再び、イントラ予測ユニット318は、一般に、イントラ予測ユニット226(
図2)に関して説明されたのと実質的に同様の方式で、イントラ予測プロセスを実行し得る。イントラ予測ユニット318は、DPB314から、現在のブロックに対する隣接サンプルのデータを取り出し得る。
【0097】
[0114]再構築ユニット310は、予測ブロックと残差ブロックとを使用して現在のブロックを再構築し得る。たとえば、再構築ユニット310は、現在のブロックを再構築するために、予測ブロックの対応するサンプルに残差ブロックのサンプルを加算し得る。
【0098】
[0115]フィルタユニット312は、再構築されたブロックに対して1つまたは複数のフィルタ演算を実行し得る。たとえば、フィルタユニット312は、再構築されたブロックの端部に沿ってブロッキネスアーティファクトを低減するためにデブロッキング動作を実行し得る。フィルタユニット312の動作は、すべての例において必ずしも実行されるとは限らない。
【0099】
[0116]ビデオデコーダ300は、再構築されたブロックをDPB314に記憶し得る。上で論じられたように、DPB314は、イントラ予測のための現在のピクチャのサンプルおよび後続の動き補償のための以前に復号されたピクチャなどの、参照情報を予測処理ユニット304に提供し得る。その上、ビデオデコーダ300は、DPBからの復号されたピクチャを、後で提示するために、
図1のディスプレイデバイス118などのディスプレイデバイス上に出力し得る。
【0100】
[0117]このようにして、ビデオデコーダ300は、ビデオデータを記憶するように構成されるメモリと、回路において実装される1つまたは複数の処理ユニットとを含む、ビデオ復号デバイスの例を表し、1つまたは複数の処理ユニットは、双予測される予測を使用して符号化されるビデオデータの現在のブロックのための動きベクトルを決定し、現在のブロックの双予測される予測のために使用される重みに基づいて動きベクトルに対して動きベクトル改良プロセスを使用すると決定し、動きベクトル改良プロセスを使用するという決定に基づいて動きベクトルに対して動きベクトル改良プロセスを適用するように構成される。
【0101】
[0118]以下のセクションでは、HEVCおよびJEM技法、ならびに本開示に関する汎用ビデオコーディング(VVC)における進行中の作業が説明される。
【0102】
[0119]HEVCにおけるCU構造および動きベクトル予測
[0120]HEVCでは、スライスの中の最大のコーディングユニットは、コーディングツリーブロック(CTB)またはコーディングツリーユニット(CTU)と呼ばれる。CTBは4分木を含んでおり、そのノードはコーディングユニットである。
【0103】
[0121](技術的に、8×8のCTBサイズがサポートされ得るが)CTBのサイズは、HEVCメインプロファイルにおいて16×16から64×64に及び得る。コーディングユニット(CU)は、CTBと同じサイズであり、8×8程度に小さくなり得る。各コーディングユニットは、1つのモード(たとえば、インター予測、イントラ予測など)でコーディングされる。CUがインターコーディングされるとき、ビデオエンコーダ200およびビデオデコーダ300はさらに、CUを2つもしくは4つの予測ユニット(PU)に区分してもよく、またはさらなる区分が適用されないとき、ただ1つのPUにしてもよい。1つのCUの中に2つのPUが存在するとき、それらは半分のサイズの長方形、またはCUの1/4もしくは3/4のサイズの2つの長方形であり得る。
【0104】
[0122]CUがインターコーディングされるとき、各PUについて動き情報の1つのセットが存在する。加えて、各PUは、動き情報のセットを導出するために、固有のインター予測モードを用いてコーディングされる。
【0105】
[0123]動きベクトル予測
[0124]HEVC規格では、予測ユニット(PU)に対して、それぞれ、マージモード(スキップは残差のないマージの特別な事例と見なされる)および高度動きベクトル予測(AMVP)モードと称する、2つのインター予測モードがある。AMVPモードまたはマージモードのいずれでも、ビデオエンコーダ200およびビデオデコーダ300は、複数の動きベクトル予測子の動きベクトル(MV)候補リストを構築して維持し得る。ビデオエンコーダ200およびビデオデコーダ300は、MV候補リストから1つの候補の動き情報を取ることによって、現在のPUの(1つまたは複数の)動きベクトル、ならびに、マージモードでの参照インデックスを生成し得る。
【0106】
[0125]HEVCでは、MV候補リストは、マージモードのための5つまでの候補と、AMVPモードのための2つのみの候補とを含む。マージ候補は、動き情報のセット、たとえば、両方の参照ピクチャリスト(リスト0およびリスト1)に対応する動きベクトルと、参照インデックスとを含み得る。マージ候補がマージインデックスによって特定される場合、ビデオエンコーダ200およびビデオデコーダ300は、現在のブロックの予測のために参照ピクチャを使用するように構成される。加えて、ビデオエンコーダ200およびビデオデコーダ300は、マージインデックスと関連付けられる動きベクトルを決定するように構成され得る。しかしながら、AMVPモードの下では、リスト0またはリスト1のいずれかからの各々の潜在的な予測方向に対して、AMVP候補が動きベクトルのみを含んでいるので、ビデオエンコーダ200は、MV候補リストへのMV予測子(MVP)インデックスとともに、参照インデックスを明示的にシグナリングする。AMVPモードでは、予測される動きベクトルがさらに改良され得る。
【0107】
[0126]上でわかるように、マージ候補は、動き情報の完全なセットに対応するが、AMVP候補は、特定の予測方向および参照インデックスのための1つだけの動きベクトルを含む。両方のモードのための候補は、同じ空間隣接ブロックおよび時間隣接ブロックから同様に導出される。
【0108】
[0127]空間隣接候補
[0128]HEVCでは、ビデオエンコーダ200およびビデオデコーダ300は、特定のPU(PU
0)について、
図4Aおよび
図4Bに示されるように、隣接ブロックから空間MV候補を導出し得るが、ブロックから候補を生成する技法はマージモードとAMVPモードで異なる。
【0109】
[0129]
図4Aは、マージモードのためのブロック500の空間隣接候補を示す概念図である。
図4Bは、AMVPモードのためのブロック502の空間隣接候補を示す概念図である。マージモードでは、ビデオエンコーダ200およびビデオデコーダ300は、
図4Aに示されている順序で最高で4つの空間MV候補を導出し得る。順序は、左のブロック(0,A1)、上のブロック(1,B1)、右上のブロック(2,B0)、左下のブロック(3,A0)、および左上のブロック(4,B2)である。
【0110】
[0130]AMVPモードでは、ビデオエンコーダ200およびビデオデコーダ300は、
図4Bに示されるように、2つのグループ、すなわち、ブロック0と1とを含む左グループ、およびブロック2と3と4とを含む上グループに隣接ブロックを分割し得る。各グループに対して、シグナリングされる参照インデックスによって示されるのと同じ参照ピクチャを参照する、隣接ブロックの中の潜在的な候補が、グループの最終候補を形成するために選ばれるべき最高の優先度を有する。すべての隣接ブロックが、同じ参照ピクチャを指す動きベクトルを含んでいるとは限らない可能性がある。したがって、そのような候補が発見され得ない場合、ビデオエンコーダ200およびビデオデコーダ300は、最終候補を形成するために第1の利用可能な候補をスケーリングし得る。したがって、時間距離差分が補償され得る。
【0111】
[0131]HEVCにおける時間動きベクトル予測
[0132]HEVCにおける時間動きベクトル予測がここで論じられる。ビデオエンコーダ200およびビデオデコーダ300は、時間動きベクトル予測子(TMVP)候補が有効であり利用可能である場合、それを空間動きベクトル候補の後にMV候補リストへと追加するように構成され得る。TMVP候補に対する動きベクトル導出のプロセスは、マージモードとAMVPモードの両方に対して同じである。しかしながら、HEVCでは、マージモードにおけるTMVP候補に対するターゲット参照インデックスは0に設定される。
【0112】
[0133]
図5Aはブロック604(PU0)のための例示的なTMVP候補を示し、
図5Bは動きベクトルスケーリングプロセス606を示す。TMVP候補導出の主要なブロック位置は、コロケート(collocated)PUの外側の右下のブロックである。この候補は、
図5Aではブロック「T」として示されている。ブロックTの位置は、空間隣接候補を生成するために使用される左上のブロックへの偏り(bias)を補償するために使用される。しかしながら、そのブロックが現在のCTB行の外側に位置するか、または動き情報が利用可能ではない場合、ブロックはPUの中心ブロックと置換される。
【0113】
[0134]TMVP候補のための動きベクトルは、スライスレベルで示されている、コロケートピクチャのコロケートPUから導出される。コロケートPUのための動きベクトルは、コロケートMVと呼ばれる。AVCにおける時間ダイレクトモードと同様に、TMVP候補動きベクトルを導出するために、コロケートMVは、
図5Bに示されるように、時間距離差分を補償するためにスケーリングされ得る。
【0114】
[0135]マージ動きベクトル改良
[0136]S.Jeong他、「CE4 Ultimate Motion Vector Expression (Test 4.5.4)」、ITU-T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11のジョイントビデオエキスパートチーム(JVET)、第12回会合、マカオ、中国、2018年10月3~12日、JVET-L0054、マージ動きベクトル改良(MMVR、究極動きベクトル表現(UMVE:Ultimate Motion Vector Expression)としても知られている)は、シグナリングされた動きベクトル差分に基づいて、マージ候補の動きベクトルを改良するための技法を提示した。UMVEは、開始点と、動きの大きさと、動き方向とを含む、簡略化されたシグナリングを用いる、代替の動きベクトル表現を提供する。マージ動きは、未改良のマージ動きベクトルによって指し示される位置を中心とする十字形パターン(cross-shaped pattern)上で、
図6Aおよび
図6Bにおける図示されたオフセットのうちの1つを使用して改良され得る。加えて、リストL0の中で参照ピクチャを指し示すMVオフセット(たとえば、改良されたMV-元の(original)MV)は、リストL1の中の参照ピクチャにスケーリングされる。
【0115】
[0137]
図6Aは、例示的なUMVE探索プロセスを示す概念図である。
図6Aに示されるように、現在のフレーム702の中の現在のブロック706のための動きベクトル708は、動きの大きさと動きの方向の両方に関して修正され得る。動きの大きさおよび動きの方向の異なる変化は、異なる動きベクトル(たとえば、動きベクトル710または動きベクトル712)を生み出し得る。動きベクトル710および712は、UMVEを伴うマージ候補(この場合は動きベクトル708)と呼ばれ得る(または単にUMVE候補と呼ばれ得る)。すなわち、動きベクトル710および712は、UMVEで動きベクトル708を変えることによって作成される。
【0116】
[0138]動きベクトル708は、異なる予測方向も有し得る。予測方向情報は、L0(フレーム700)、L1(フレーム704)、ならびにL0およびL1予測の中から、予測方向を示す。Bスライスに対して、提案されるUMVE技法を使用して、ビデオエンコーダ200およびビデオデコーダ300は、
図6Aおよび
図6Bに示されるような鏡写し技法を使用することによって、単予測を用いてマージ候補から双予測候補を生成することができる。
図6Bは、例示的なUMVE探索点を示す概念図である。たとえば、マージ候補が参照リストL1を用いた単予測候補である場合、ビデオエンコーダ200およびビデオデコーダ300は、リスト1のための参照ピクチャと鏡写しである、リスト0の中の参照ピクチャを探索することによって、参照リストL0の参照インデックスを決定し得る。対応するピクチャがない場合、ビデオエンコーダ200およびビデオデコーダ300は、現在のピクチャに最も近い参照ピクチャを使用する。ビデオエンコーダ200およびビデオデコーダ300は、L1(フレーム704)の動きベクトルをスケーリングすることによって、L0(フレーム700)の動きベクトルを導出し得る。ビデオエンコーダ200およびビデオデコーダ300は、ピクチャ順序カウント(POC)距離を使用してスケーリング係数を計算し得る。
【0117】
[0139]マージオフセット拡張
[0140]X.Chen他、「CE 4: Merge Offset Extension (Test 4.4.8)」、ITU-T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11のジョイントビデオエキスパートチーム(JVET)、第12回会合、マカオ、中国、2018年10月3~12日、JVET-L0176は、マージ候補リストの第1の候補にのみ基づいて新しい拡張されたMVオフセット候補が構築される技法を説明する。新しい拡張されたMVオフセット候補は、第1の候補の現在のMVに対するMVオフセットのみを含む。他の予測情報は第1の候補と同じである。新たに追加される候補は、時間候補の後にマージ候補リストへ挿入される。サポートされる動きベクトルオフセットが
図7に図示され、現在のサンプル800に対する相対的なオフセット(0または±1、0または±1)を伴う点802と、現在のサンプル800に対する相対的なオフセット(0または±2、0または±2)を伴う点804とを含む。
【0118】
[0141]過去の参照ピクチャ(たとえば、リスト0)からの1つのMV(たとえば、MV0)および未来の参照ピクチャ(たとえば、リスト1)からの別のMV(たとえば、MV1)を用いた双予測に対して、ビデオエンコーダ200およびビデオデコーダ300は、選択されたMVオフセットを第1の候補MV0に加算し(add)、逆のMVオフセットを第1の候補MV1に加算し得る。他の双予測のケースは、同じMVオフセットを、それぞれ、第1の候補MV0およびMV1に加算することを含む。
【0119】
[0142]履歴ベースの動きベクトル予測
[0143]履歴ベースの動きベクトル予測(HMVP:History-based motion vector prediction)(たとえば、L. Zhang他、「CE4-related: History-based Motion Vector Prediction」、ITU-T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11のジョイントビデオエキスパートチーム(JVET)、第11回会合、リュブリャナ、スロベニア、2018年7月10~18日[JVET-K0104]に記載されるような)は、すぐ隣の因果的隣接動きフィールドにおけるMVに加えて、過去から復号されたMVのリストから、各ブロックがそのMV予測子を見つけることを可能にする、履歴ベースの技法である。符号化/復号プロセスの間、複数のHMVP候補を有するテーブルが維持される。新たなスライスに遭遇すると、テーブルは空にされる。インターコーディングされたブロックがあるときはいつでも、関連する動き情報は、新たなHMVP候補として先入れ先出し(FIFO)方式でテーブルに挿入される。次いで、制約FIFO規則が適用され得る。テーブルにHMVPを挿入するとき、テーブルの中に同一のHMVPがあるかどうかを見つけるために、最初に冗長性チェックが適用される。同一のHMVPが発見された場合、その特定のHMVPはテーブルから除去され、以後、すべてのHMVP候補が移動される。
【0120】
[0144]HMVP候補はまた、マージ候補リスト構成プロセスにおいて使用され得る。テーブルの中の最後のエントリから最初のエントリまでのすべてのHMVP候補が、TMVP候補の後に挿入される。HMVP候補に対してプルーニングが適用される。利用可能なマージ候補の総数が、シグナリングされた最大の許容される数のマージ候補に達すると、マージ候補リスト構成プロセスは終了される。
【0121】
[0145]同様に、HMVP候補はまた、AMVP候補リスト構成プロセスにおいて使用され得る。テーブルの中の最後のK個のHMVP候補の動きベクトルは、TMVP候補の後に挿入される。AMVPターゲット参照ピクチャと同じ参照ピクチャを伴うHMVP候補だけが、AMVP候補リストを構成するために使用される。HMVP候補に対してプルーニングが適用される。
【0122】
[0146]HEVCにおける動き予測の他の態様
[0147]マージモードおよびAMVPモードのいくつかの態様には、次のように言及する価値がある。
【0123】
[0148]動きベクトルスケーリング:動きベクトルの値は、提示時間におけるピクチャの距離に比例することが想定される。動きベクトルは、2つのピクチャ、すなわち、参照ピクチャと、動きベクトルを含むピクチャ(すなわち、含有ピクチャ)とを関連付ける。ある動きベクトルが、他の動きベクトルを予測するために利用されるとき、含有ピクチャと参照ピクチャとの距離は、ピクチャ順序カウント(POC)値に基づいて計算される。
【0124】
[0149]予測されるべき動きベクトルについて、その関連する含有ピクチャと参照ピクチャの両方が異なり得る。したがって、(POCに基づく)新しい距離が計算され、動きベクトルは、これらの2つのPOC距離に基づいてスケーリングされる。空間隣接候補では、2つの動きベクトルのための含有ピクチャは同じであるが、参照ピクチャは異なる。HEVCでは、動きベクトルスケーリングは、空間および時間隣接候補のためにTMVPとAMVPの両方に適用される。
【0125】
[0150]擬似(artificial)動きベクトル候補生成:動きベクトル候補リストが完全ではない(たとえば、所定の最大値より少ない候補を有する)場合、擬似動きベクトル候補は、リストが埋まるまで生成されてリストの終わりに挿入される。
【0126】
[0151]マージモードでは、2つのタイプの擬似MV候補、すなわち、Bスライスについてのみ導出された複合候補(combined candidate)と、第1のタイプが十分な擬似候補を与えない場合にAMVPのためにのみ使用されるゼロ候補(zero candidates)とがある。
【0127】
[0152]すでに候補リストの中にあり必要な動き情報を有する候補の各ペアに対して、双方向複合動きベクトル候補が、リスト0の中のピクチャを参照する第1の候補の動きベクトルと、リスト1の中のピクチャを参照する第2の候補の動きベクトルとの組合せによって導出される。
【0128】
[0153]候補挿入のためのプルーニングプロセス:異なるブロックからの候補が偶然同じであることがあり、これはマージ/AMVP候補リストの効率を低下させる。プルーニングプロセスはこの問題に対処するために適用され得る。プルーニングプロセスは、同一の候補を挿入するのをある程度回避するために、ある候補を現在の候補リストの中の他の候補と比較する。複雑さを低減するために、可能な各候補をすべての他の既存の候補と比較するのではなく、限られた数のプルーニングプロセスしか適用されない。
【0129】
[0154]双方向テンプレート照合
[0155]
図8は、双方向テンプレート照合を示す概念図である。双方向照合は、テンプレートベースの改良プロセスを回避するための、デコーダ側動きベクトル改良(DMVR)技法の変形である。現在のブロック900のための双方向テンプレート照合は、初期双予測MV(たとえば、
図8の中のv
0およびv
1)によって指し示される単予測参照ブロック902および904(I
0(x+v
0)およびI
1(x+v
1)と表記され、xは、現在のブロック900内のピクセルの座標である)の間で双方向照合コストを直接計算することを含む。
【0130】
[0156]ビデオエンコーダ200およびビデオデコーダ300は、初期双予測MVの周囲のあらかじめ定められた探索範囲内での双方向照合(bilateral matching)に基づいて、局所的な探索を実行し得る。具体的には、初期MVがv
0
(0)およびv
1
(0)であると仮定して、最初の探索反復において、いくつかのMVペア(たとえば、v
0
(0)+Δおよびv
1
(0)-Δ、ただし、Δ∈{(0,0),(-1,1),(0,1),(1,1),(1,0),(1,-1),(0,-1),(-1,-1),(-1,0)など}である)が、最小の双方向照合コストをもたらすΔ*の最適値を決定するためにテストされる。本開示では、コスト関数は、I
0(x+v
0
(0)+Δ)とI
1(x+v
1
(0)-Δ)との間のひずみ+動きコストとして定義される。ひずみ関数は、平均除去絶対差分和(MRSAD:Mean Removed sum of absolute differences)または絶対差分和(SAD:sum of absolute differences)のいずれかであり得る。
図8は、第1の探索反復において、テストされるMVペアのうちの1つによって示される例示的な探索ブロック906および908を示す。
【0131】
[0157]最適なΔ*が発見された後、ビデオエンコーダ200およびビデオデコーダ300によって実行される反復プロセスは、Δ*を使用することによって初期MV(v0
(0)およびv1
(0))の値を更新する。具体的には、v0
(1)=v0
(0)+Δ*、および、v1
(1)=v1
(0)-Δ*)。次いで、上の説明におけるすべての上付き文字を1だけ増やした後、Δ*が(0,0)に等しいことが達成されるまで、同じ反復プロセスが繰り返す。出力MVペア(v0
(n)およびv1
(n)として表記され、n≧1である)が、次いで、サブペル精度で再び改良され得る。次いで、得られるMVペアが、マージブロックの元のMV(v0
(0)およびv1
(0))を置き換えるために取られる。次いで、改良されたMVに基づいて動き補償が実行される。
【0132】
[0158]パラメトリックサブペル動きベクトル導出
[0159]S.Sethurman他、「Decoder Side MV Refinement/Derivation with CTB-level concurrency and other normative complexity reduction techniques」、ITU-T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11のジョイントビデオエキスパートチーム(JVET)、第11回会合、リュブリャナ、スロベニア、2018年7月10~18日、JVET-K4001では、各々の可能な分数ペルMVに対する予測誤差曲面を形成するために、2次パラメトリック関数(a quadratic parametric function)が使用される。基本的に、2次パラメトリック関数は、推定量としての予測誤差の値を補間する補間関数である。整数探索からの厳密な(exact)予測誤差値に基づいて、2次パラメトリック関数のパラメータが導出され、したがって、この誤差探索における最良の動きサンプリング位置が発見され得る。次いで、実際にサブペル動きベクトル推定を実行するのではなく、元のMVがこの厳密な動きサンプリング位置に調整される。このパラメトリック関数は、参照として、5つの点からコスト値を取って、誤差表面(error surface)を形成し、この表面上で最小コスト値を有する最良の位置を見つける。5つの点は十字形を形成し、隣り合う2つの各点の間のギャップは2ピクセルであり、ここで、中心/左/右/上/下の点は、(0,0)/(-1,0)/(1,0)/(0,-1)/(0,1)に調整される(coordinated)。このパラメトリック誤差曲面関数は、2D放物線誤差曲面方程式(2-D parabolic error surface equation)、すなわち、
【0133】
【0134】
であり、ここで、(Δx,Δy)は最小コストを有する位置に相当し、Cは最小コスト値に相当する。5つの方程式を5つの未知数で解くことによって、(Δx,Δy)は、
【0135】
【0136】
のように計算され、ここで、αは(Δx,Δy)をいくつかのサブペル精度で表すために導入された整数スケーリング係数、たとえば、1/16の精度に対して16、および1/4の精度に対して4である。
【0137】
[0160]デコーダ側の導出された動きベクトルを使用する動きベクトル予測
[0161]動きオーバーヘッドを低減する際にデコーダ側動きベクトル導出(DMVD)は効率的であるが、(DMVRなどの)既存のDMVD設計は、空間隣接CUのコーディングの間の相互依存性に起因する復号レイテンシ問題に遭遇することがある。CUのMVが、DMVRを使用してコーディングされたその空間隣接物から予測される場合、復号プロセスは、隣接CUの改良されたMVが利用可能になるまで待たなければならない。汎用ビデオコーディング規格の開発において、いくつかのデコーダ側MV導出(DMVD)手法のための低レイテンシ設計を達成し得る、いくつかの技法が研究されている。これらの技法のいくつかが、以下で詳述される。
【0138】
[0162]直前のDMVDブロックからの空間MV予測なし
[0163]DMVD技法を使用してコーディングされるブロックに対して、復号プロセスは3つのステップで解釈され得る。
1.初期動きフィールドの再構築および参照ブロックのプリフェッチ、
2.最終MVを得るためのブロック動きの改良プロセス、および
3.最終MVを用いた動き補償。
【0139】
[0164]ステップ2における改良プロセスの後、最終MVがピクチャ動きフィールドに書き戻されるので、空間MV予測、時間MV予測、および境界強度計算に関して、改良されたMVが使用され得る。
図9は、DMVRなどのDMVD技法のためのパイプラインステージのいくつかの実装形態を示す。
図9において、3つの主要なモジュールの再構築とプリフェッチ1000、MV改良1002、および動き補償1004は、DMVD技法のための3つの復号ステップを表す。モジュール1000、1002、および1004は、ビデオデコーダ300の動き補償ユニット316(
図3参照)の一部であり得る。
図9に示されるように、時間T0において、元の(original)動きベクトルV0(V0,orig)を有するCU0に対して、再構築およびプリフェッチが実行される。時間T1において、元の動きベクトルV0は、改良された(refined)動きベクトルV0(V0,refined)を生み出すように改良される。時間T3において、改良された動きベクトルV0が、CU1のための再構築およびプリフェッチにおいて使用される。やはり時間T3において、改良された動きベクトルV0を使用して、CU0のために動き補償が実行される。このカスケーディングプロセスは未来のCUについても続く。
【0140】
[0165]一般に、CUprevは、現在のCU(CUcur)の前の、以前にコーディングされたCUである。CUcurの元のMVを再構築するとき、MV予測子が、偶然DMVDコーディングされたブロックであるCUprevからのものである場合、この予測子は、CUcurにとって利用不可能であるものとしてマークされる。その結果、CUcurの初期MVの再構築は、もはやCUprevの改良されたMVに依存せず、MV改良とMV予測との間の相互依存性は、ある程度除去される。
【0141】
[0166]現在のフレームにおけるDMVDブロックからの空間MV予測なし
[0167]改良されたMVを使用する代わりに、この技法は、空間MV予測子を導出するために、各DMVR CUの元のMVを使用する。時間MV予測の場合、コロケートピクチャが完全に再構築されているので、改良されたMVは復号レイテンシ問題を伴わずに使用され得る。したがって、空間的な隣接CUの間のコーディング依存性がもはや存在しないので、DMVRの復号レイテンシ問題は完全に解決され得る。しかしながら、コーディング性能の低下が予想され得る。
【0142】
[0168]現在のCTU行におけるDMVDブロックからの空間MV予測なし
[0169]この技法は、空間MV予測を実行するために、直接隣接するブロックからの参照として、現在のブロックと一緒にこれらの隣接ブロックがすべて同じCTU行にある場合に、未改良のMVを用いる。(いくつかの他の技法が、そのような隣接ブロックからのMV予測子を、利用不可能であるものとしてマークすることがあることに留意されたい。)一方、改良されたMVは、それらの関連するブロックが、すぐ上のCTUおよび左上のCTUに位置する隣接する因果的CTU内にあるときにのみ、空間MV予測に利用可能である。したがって、この技法は、CTU行の内部で、MV改良と空間MV予測との間の相互依存性を壊す(breaks)。
【0143】
[0170]JEMにおける双方向オプティカルフロー
[0171]双方向オプティカルフロー(BIO)は、双予測のケースにおいてブロック単位の動き補償に加えて(on top of)実行される、ピクセル単位の動き改良である。BIOがブロックの内部の細かい動きを補償するので、BIOを有効にする(enabling)ことは、動き補償に対するブロックサイズの拡大をもたらす。サンプルレベル動き改良は、各サンプルに対して精密な動きベクトルを与える明示的な式があるので、徹底的な(exhaustive)探索またはシグナリングを必要としない。
図10は、オプティカルフロー軌跡1100を示す概念図である。
【0144】
[0172]I(k)は補償ブロックの動きの後の参照k(k=0,1)からのルミナンス値であり、∂I(k)/∂x、∂I(k)/∂yは、それぞれ、I(k)勾配の水平成分および垂直成分である。オプティカルフローが有効であると想定すると、動きベクトルフィールド(vx,vy)は、式:
【0145】
【0146】
により与えられる。
【0147】
[0173]オプティカルフローの式を各サンプルの動き軌跡に対するエルミート補間と組み合わせると、端部において(at the ends)関数値I(k)と導関数∂I(k)/∂x、∂I(k)/∂yの両方と一致する、一意の3次多項式が得られる。t=0におけるこの多項式の値は、BIO予測
【0148】
【0149】
である。
【0150】
[0174]ここで、τ
0およびτ
1は、
図10に示されるように、参照フレームまでの距離を示す。距離τ
0およびτ
1は、Ref0およびRef1に対するPOCに基づいて計算され、すなわち、τ
0=POC(現在)-POC(Ref0)、τ
1=POC(Ref1)-POC(現在)である。両方の予測が同じ時間方向から(両方が過去から、または両方が未来から)来る場合、符号は異なり、τ
0・τ
1<0である。この場合、予測が同じ時間モーメント(time moment)からのものではない(τ
0≠τ
1)場合にのみBIOが適用され、両方の参照される領域は0ではない動きを有し、
【0151】
【0152】
ブロック動きベクトルは時間距離に比例する。
【0153】
【0154】
[0175]点Aの値と点Bの値の差分Δ(
図10の動き軌跡と参照フレーム平面との交差)を最小化することによって、動きベクトルフィールド(v
x,v
y)が決定される。このモデルは、Δに対する局所的なテイラー展開の最初の線形項しか使用しない。
【0155】
【0156】
[0176]式(1)におけるすべての値は、これまでは省略されていたサンプル位置(i’,j’)に依存する。局所的な周辺のサンプルにおいて動きが一貫(consistent)していると仮定すると、現在予測される点(i,j)を中心とする(2M+1)×(2M+1)の正方形ウィンドウΩの内側で、Δが次のように最小化され得る。
【0157】
【0158】
[0177]この最適化問題に対して、まず垂直方向において、次いで水平方向において最小化を行う、簡略化された解決策が使用されてもよく、これは以下をもたらす。
【0159】
【0160】
ここで、
【0161】
【0162】
[0178]0または極めて小さい値による除算を回避するために、正則化パラメータrおよびmが、たとえば次のように式(2)、式(3)に導入され得る。
【0163】
【0164】
[0179]ここで、dは入力ビデオの内部ビット深度である。
【0165】
[0180]いくつかの場合、BIOのMV群は、雑音または不規則な動きにより信頼できないことがある。したがって、BIOでは、MV群の大きさは、ある閾値thBIOへと切り詰められる。閾値は、現在のピクチャのすべての参照ピクチャが、すべて1つの方向からであるかどうかに基づいて決定される。現在のピクチャの現在のピクチャのすべての参照ピクチャが1つの方向からのものである場合、閾値の値は12×214-dに設定され、そうではない場合、閾値は12×213-dに設定される。
【0166】
[0181]BIOに対する勾配は、HEVC動き補償プロセスと整合するオペレーションを使用して動き補償補間と同時に計算される(2D分離可能FIR)。この2D分離可能FIRのための入力は、動き補償プロセスのためのものと同じ参照フレームサンプル、およびブロック動きベクトルの分数部分(fractional part)に従った分数位置(fracX,fracY)である。水平勾配の場合、∂I/∂x信号はまず、デスケーリングシフトd-8を用いて分数位置fracYに対応するBIOfilterSを使用して垂直にまず補間され、次いで、勾配フィルタBIOfilterGが、18-dのデスケーリングシフトを用いて分数位置fracXに対応する水平方向に適用される。垂直勾配∂I/∂yの場合、第1の勾配フィルタは、デスケーリングシフトd-8を用いて分数位置fracYに対応するBIOfilterGを使用して垂直に適用され、次いで、18-dのデスケーリングシフトを用いて分数位置fracXに対応する水平方向においてBIOfilterSを使用して、信号移動(signal displacement)が実行される。実装の複雑さを低く保ちながら望ましいビットレートおよび/またはひずみを達成するために、勾配計算BIOfilterGおよび信号移動BIOfilterFのための補間フィルタの長さはより短い(6タップ)。
【0167】
[0182]
図11は、8×4の現在のブロック1200に対する双方向オプティカルフロー(BIO)を示す概念図である。
図11は特に、現在のブロック1200のための勾配計算の例を示す。8×4の現在のブロック1200に対して、ビデオコーダは、動き補償された予測子をフェッチし、現在のブロック内のすべてのピクセルの、ならびにピクセルの外側の2行の、HOR/VER勾配を計算する。これは、各ピクセルに対してvxおよびvyを解くことは、(4)に示されるように各ピクセルを中心とするウィンドウΩ内のピクセルのHOR/VER勾配値および動き補償された予測子を必要とするからである。JEMでは、このウィンドウのサイズは5×5に設定される。したがって、ビデオコーダは、動き補償された予測子をフェッチし、ピクセルの外側の2行に対する勾配を計算する。
【0168】
[0183]JEMでは、2つの予測が異なる参照ピクチャからのものであるとき、BIOはすべての双方向予測されたブロックに適用される。CUに対してLICが有効である(イネーブルにされる)とき、BIOは無効にされる(ディセーブルにされる)。
【0169】
[0184]一般化された双予測(GBi)
[0185]GBiは、C. Chen、「Generalized bi-prediction for inter coding」、ITU-T SG 16 WP 3およびISO/IEC JTC 1/SG 29/WG 11のジョイントビデオエキスパートチーム(JVET)、第3回会合、ジュネーブ、スイス、2016年5月26日~6月1日、JVET-C0047において提案された。Y.Su他、「CE4.4.1: Generalized bi-prediction for inter coding」、ITU-T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11のジョイントビデオエキスパートチーム(JVET)、第11回会合、リュブリャナ、スロベニア、2018年7月10~18日、JVET-K0248において、提案が、GBiに対する利得と複雑さのトレードオフを改善し、VVCのベンチマークセット2.1(BMS2.1)へと採用された。BMS2.1 GBiは、双予測モードにおけるL0およびL1からの予測子に不均等な重みを適用する。インター予測モードでは、均等な重みペア(1/2,1/2)を含む複数の重みペアが、レートひずみ最適化(RDO:rate-distortion optimization)に基づいて評価され、選択された重みペアのGBiインデックスが、ビデオデコーダ300にシグナリングされる。マージモードでは、GBiインデックスは隣接CUから継承される。BMS2.1 GBiにおいて、双予測モードでの予測子生成が以下に示される。
【0170】
【0171】
ここで、PGBiはGBiの最終予測子である。重みw0およびw1は選択されたGBi重みペアであり、それぞれ、リスト0(L0)およびリスト1(L1)の予測子に適用される。RoundingOffsetGBiおよびshiftNumGBiは、GBiにおける最終予測子を正規化するために使用される。サポートされるw1重みセットは、{-1/4,3/8,1/2,5/8,5/4}であり、これらの5つの重みは1つの均等な重みペアおよび4つの不均等な重みペアに対応する。混合利得(blending gain)、すなわち、w1とw0との合計は、1.0に固定される。したがって、対応するw0重みセットは、{5/4,5/8,1/2,3/8,-1/4}である。重みペア選択はCUレベルにある。
【0172】
[0186]非低遅延ピクチャに対して、重みセットサイズは5つから3つに低減され、ここで、w1重みセットは{3/8,1/2,5/8}であり、w0重みセットは{5/8,1/2,3/8}である。非低遅延ピクチャに対する重みセットサイズ低減は、BMS2.1 GBi、およびJVET-K0248におけるすべてのGBiテストに適用される。
【0173】
[0187]本開示は、デコーダ側動きベクトル改良のための以下の技法を説明する。
【0174】
[0188]1.1 制約されたデコーダ側動きベクトル改良
[0189]本開示は、双予測される予測に対する2つの重みが等しくない場合、デコーダ側動き改良を無効にする(ディセーブルにする)ことを提案する。すなわち、2つの動きベクトルを使用してコーディングされるビデオデータの双予測されるブロックに対して、ビデオエンコーダ200およびビデオデコーダ300は、双予測される予測のために使用される重みが等しいかどうかを決定するように構成され得る。ビデオエンコーダ200およびビデオデコーダ300は、双予測される予測のために使用されるべき重みを決定し得る。重みが等しくない場合、ビデオエンコーダ200およびビデオデコーダ300は、双予測される予測のために使用される動きベクトルに動きベクトル改良プロセス(たとえば、双方向テンプレート照合)を適用しない(たとえば、無効にする)ことがある。すなわち、ビデオエンコーダ200およびビデオデコーダ300は、動きベクトル改良なしで、双予測される予測を使用してビデオデータのブロックをコーディングし得る。重みが等しい場合、ビデオエンコーダ200およびビデオデコーダ300は、双予測される予測のために使用される動きベクトルに動きベクトル改良プロセス(たとえば、双方向テンプレート照合)を適用する(たとえば、有効にする)ことがある。すなわち、ビデオエンコーダ200およびビデオデコーダ300は、動きベクトル改良ありで、双予測される予測を使用してビデオデータのブロックをコーディングし得る。
【0175】
[0190]たとえば、GBiが双予測される予測として適用され、重みw0およびw1が等しくない場合、ビデオエンコーダ200およびビデオデコーダ300は、デコーダ側動きベクトル改良プロセスを無効にし得る。別の例では、現在のブロックをコーディングするために重み付けられた双予測される予測が使用され、重みw0およびw1が等しくない場合、ビデオエンコーダ200およびビデオデコーダ300は、デコーダ側動きベクトル改良プロセスを無効にし得る。上の例では、双方向テンプレート照合が、動きベクトル改良(たとえば、DMVR)プロセスとして使用され得る。しかしながら、本開示の技法は、任意の動きベクトル改良プロセスとともに使用され得る。
【0176】
[0191]したがって、本開示の一例では、ビデオエンコーダ200およびビデオデコーダ300は、双予測される予測を使用して符号化されたビデオデータの現在のブロックのための動きベクトルを決定し、現在のブロックの双予測される予測のために使用される重みに基づいて動きベクトルに対して動きベクトル改良プロセスを使用すると決定し、動きベクトル改良プロセスを使用するという決定に基づいて、動きベクトルに対して動きベクトル改良プロセスを適用するように構成され得る。一例では、現在のブロックの双予測される予測のために使用される重みは等しくない。この例では、ビデオエンコーダ200およびビデオデコーダ300は、動きベクトル改良プロセスを無効にすると決定するように構成され得る。
【0177】
[0192]1.2 デコーダ側動きベクトル改良のための適応的なオン/オフ
[0193]セクション1.2の技法は、セクション1.1の技法と一緒に適用されてもよく、または独立に適用されてもよい。現在のブロックの双予測される予測のために使用される2つの動きベクトル(たとえば、リスト0およびリスト1からの)は、1つまたは複数の参照ピクチャの中の2つの異なるブロックを指す。本開示の別の例では、2つの元の動きベクトル(すなわち、あらゆる動きベクトル改良の前の)を使用する2つの予測されるブロック間の差分が閾値未満である場合、ビデオエンコーダ200およびビデオデコーダ300は、現在のコーディングブロックに対して動きベクトル改良プロセス(たとえば、DMVR)を適用しない(たとえば、無効にする)ことがある。
【0178】
[0194]ビデオエンコーダ200およびビデオデコーダ300は、2つの予測されるブロックの絶対差分和(SAD)または2乗誤差和(SSE)を使用して、予測されるブロック間の「距離」を測定するように構成され得る。当然、他の技法が使用され得る。いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、差分を計算するための予測されたブロックの中のいくつかのサンプルをスキップするために、何らかの簡略化技法を使用し得る。たとえば、ビデオエンコーダ200およびビデオデコーダ300は、予測されるブロックのサンプルの1行おきの行を使用して、予測されたブロックのSAD/SSEを計算し得る。
【0179】
[0195]ビデオエンコーダ200およびビデオデコーダ300は、予測されたブロックの中のサンプルの数およびサンプルのビット深度から、動きベクトル改良を適用すべきかどうかを決定するために使用される、「閾値」を決定し得る。たとえば、ビデオエンコーダ200およびビデオデコーダ300は、(N<<(BD-8))*W*Hとして閾値を計算し得る。WおよびHはそれぞれ、ブロックの幅および高さである。BDはサンプルのビット深度である。Nはあらかじめ定められた値であり、たとえば1、2、4、8他である。Nは高水準シンタックスにおいてもシグナリングされ得る。演算子<<はビットごとの右シフト(bitwise right shift)である。
【0180】
[0196]別の技法では、ビデオエンコーダ200およびビデオデコーダ300は、SAD/SSEおよびサンプルのビット深度を計算するために使用される、予測されるブロックの中のサンプルの数から閾値を決定し得る。たとえば、SAD/SSEが1行おきに計算される場合、閾値は(N<<(BD-8))*W*H/2である。
【0181】
[0197]したがって、本開示の別の例では、ビデオエンコーダ200およびビデオデコーダ300は、動きベクトルによって特定される予測されるブロック間の差分を決定するように構成され得る。現在のブロックの双予測される予測のために使用される重みに基づいて動きベクトルに対して動きベクトル改良プロセスを使用すると決定するために、ビデオエンコーダ200およびビデオデコーダ300は、現在のブロックの双予測される予測のために使用される重みと、動きベクトルによって特定される予測されるブロック間の決定された差分とに基づいて、動きベクトルに対して動きベクトル改良プロセスを使用すると決定するように構成され得る。
【0182】
[0198]別の例では、現在のブロックの双予測される予測のために使用される重みおよび動きベクトルによって特定される予測されるブロック間の決定された差分に基づいて、動きベクトルに対して動きベクトル改良プロセスを使用すると決定するために、ビデオエンコーダ200およびビデオデコーダ300は、動きベクトルによって特定される予測されるブロック間の差分が閾値未満である場合、動きベクトル改良プロセスを無効にすると決定するように構成され得る。
【0183】
[0199]別の例では、動きベクトルによって特定される予測されるブロック間の差分を決定するために、ビデオエンコーダ200およびビデオデコーダ300は、予測されるブロック間の絶対差分和または予測されるブロック間の2乗誤差和を使用して、動きベクトルによって特定される予測されるブロック間の差分を決定するように構成され得る。
【0184】
[0200]本開示の別の例では、ビデオエンコーダ200およびビデオデコーダ300は、予測されるブロックの中のサンプルの数および予測されるブロックの中のサンプルのビット深度に基づいて、閾値を決定するように構成され得る。
【0185】
[0201]1.3 双方向テンプレート照合のための動き補償
[0202]双方向テンプレート照合において、上で説明されたように、ビデオエンコーダ200およびビデオデコーダ300は、2つの予測されるブロックを取得する。非整数動きベクトルの場合、ビデオエンコーダ200およびビデオデコーダ300は、補間によって予測されるブロックを取得する。HEVCなどのように、補間が必要とされるいくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、まず水平補間を実行し、続いて垂直補間を実行することによって、予測されるブロックを取得する。水平補間の出力は、垂直補間のための入力である。ビデオエンコーダ200およびビデオデコーダ300は、ある数のサンプルを加重平均すること、すなわち、対応するサンプルと補間係数を乗じ、次いで重みの合計を除算して正規化することによって、補間を実行し得る。
【0186】
[0203]水平補間の後で得られる中間データは、丸め誤差を減らすために、より高いビット深度に記憶され得る。コーディングのための内部ビット深度はbitDepthIであり、補間の間に(たとえば、水平補間の後に)得られる中間データのためのビット深度はbitDepthIFである。いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、内部補間ビット深度bitDepthIFを達成するために、水平補間(サンプルの加重和)の結果をシフトする。いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、シフトの前にある程度のオフセットを適用し得る。このシフト数はshift1と呼ばれ得る。内部ビット深度bitDepthIを達成するために、垂直補間の結果もシフトされ得る。このシフト数はshift2と呼ばれ得る。変数precIFの数は、重みの合計がprecIFの2乗以下となるように選ばれる。
【0187】
[0204]技法1
[0205]本開示の第1の技法では、双方向テンプレート照合における予測されたブロックのビット深度は固定されており、ビデオをコーディングするための内部ビット深度と必ずしも同じではない。次いで、ビデオエンコーダ200およびビデオデコーダ300は、予測されるブロックの固定されたビット深度によってセクション1.2において説明される「閾値」を決定し得る。たとえば、ビット深度は10であり、閾値は(1<<2)*W*H/2、すなわち4*W*H/2である。したがって、閾値は、ビデオをコーディングするための内部ビット深度とは無関係である。ビデオエンコーダ200およびビデオデコーダ300は、内部ビット深度bitDepthIの代わりに内部補間ビット深度bitDepthIFを達成するために、垂直補間の結果をシフトし得る。
【0188】
[0206]一例では、数shift1はprecIF-min(precIF,bitDepthIF-bitDepthI)として設定され、数shift2はprecIFとして設定される。シフト数が0より大きい場合、ビデオエンコーダ200およびビデオデコーダ300は、右シフトの前にオフセットを適用し得る。shift1について、shift1が0より大きい場合、オフセットは1<<(shift1-1)である。shift2について、shift2が0より大きい場合、オフセットは1<<(shift2-1)である。補間が適用されない場合、すなわち動きベクトルが分数ではない場合、ビデオエンコーダ200およびビデオデコーダ300は、同じ中間ビット深度および出力ビット深度を達成するためにシフトを適用し得る。一例では、双線形補間が使用されるとき、precIFは4であり、bitDepthIFは10である。数shift1は4-min(4,10-bitDepthI)であり、shift2は4である。動きベクトルのx成分が0である場合、すなわち、水平補間が実行されない場合、shift2はprecIFーmin(precIF,bitDepthIF-bitDepthI)としてリセットされる。
【0189】
[0207]別の例では、数shift1はprecIF-min(precIF-1,bitDepthIF-bitDepthI)として設定され、数shift2はprecIFとして設定される。動きベクトルのx成分が0である場合、すなわち、水平補間が実行されない場合、shift2はprecIF-min(precIF,bitDepthIF-bitDepthI)としてリセットされる。
【0190】
[0208]さらに別の例では、数shift1はprecIF-(bitDepthIF-bitDepthI)として設定され、数shift2はprecIFとして設定される。これは、bitDepthIF-bitDepthIが通常はprecFより小さいからである。
【0191】
[0209]双方向テンプレート照合における予測されるブロックのための補間フィルタは、通常の動き補償のための補間フィルタとは異なり得る。したがって、双方向テンプレート照合のprecIFおよびbitDepthIFは、通常の動き補償のそれらとは異なり得る。
【0192】
[0210]前述のことに鑑みて、動きベクトルに対して双方向テンプレート照合を適用するために、ビデオエンコーダ200およびビデオデコーダ300は、双方向テンプレート照合を使用して現在のブロックのための2つの予測されるブロックを決定するように構成されてもよく、2つの予測されるブロックのうちの第1の予測されるブロックは現在のブロックのための動きベクトルに基づいて決定され、動きベクトルは非整数の動きベクトルを含む。第1の予測されるブロックを決定するために、ビデオエンコーダ200およびビデオデコーダ300は、非整数の動きベクトルに基づいて水平補間を実行し、内部ビット深度より高いビット深度で水平補間の出力を記憶し、垂直補間を実行するためにより高いビット深度に記憶されている水平補間の出力を使用するように構成され得る。本開示の技法は、コーディング効率を高め、および/またはDMVR技法の実装を簡単にし得る。
【0193】
[0211]技法2
[0212]第2の技法では、予測されるブロックのビット深度は、ビデオをコーディングするための内部ビット深度と同じなるように設定される。したがって、予測されるブロックのビット深度は、ビデオをコーディングするための内部ビット深度に依存する。セクション1.2において説明される「閾値」は、ビデオをコーディングするための内部ビット深度によって決定される。一例では、双方向テンプレート照合のprecIFおよびbitDepthIFは、通常の動き補償のそれらとは異なり得る。
【0194】
[0213]別の例では、双方向テンプレート照合および通常の動き補償のための補間プロセスは統合される。その例では、双方向テンプレート照合のprecIFおよびbitDepthIFは、通常の動き補償におけるものと同じである。
【0195】
[0214]
図12は、現在のブロックを符号化するための例示的な方法を示すフローチャートである。現在のブロックは現在のCUを備え得る。ビデオエンコーダ200(
図1および
図2)に関して説明されるが、他のデバイスが
図12の方法と同様の方法を実行するように構成され得ることを理解されたい。
【0196】
[0215]この例では、ビデオエンコーダ200は、最初に、現在のブロックを予測する(350)。たとえば、ビデオエンコーダ200は、現在のブロックのための予測ブロックを形成し得る。ビデオエンコーダ200は、次いで、現在のブロックのための残差ブロックを計算し得る(352)。残差ブロックを計算するために、ビデオエンコーダ200は、元の(original)コーディングされていないブロックと、現在のブロックのための予測ブロックとの間の差分を計算し得る。ビデオエンコーダ200は、次いで、残差ブロックの係数を変換および量子化し得る(354)。次に、ビデオエンコーダ200は、残差ブロックの量子化された変換係数を走査し(scan)得る(356)。走査の間、または走査に続いて、ビデオエンコーダ200は、係数をエントロピー符号化し得る(358)。たとえば、ビデオエンコーダ200は、CAVLCまたはCABACを使用して係数を符号化し得る。次いで、ビデオエンコーダ200は、ブロックのエントロピーコーディングされたデータを出力し得る(360)。
【0197】
[0216]
図13は、ビデオデータの現在のブロックを復号するための例示的な方法を示すフローチャートである。現在のブロックは現在のCUを備え得る。ビデオデコーダ300(
図1および
図3)に関して説明されるが、他のデバイスが
図13の方法と同様の方法を実行するように構成され得ることを理解されたい。
【0198】
[0217]ビデオデコーダ300は、エントロピーコーディングされた予測情報、および現在のブロックに対応する残差ブロックの係数に対するエントロピーコーディングされたデータなどの、現在のブロックに対するエントロピーコーディングされたデータを受信し得る(370)。ビデオデコーダ300は、エントロピーコーディングされたデータをエントロピー復号し得、それにより、現在のブロックに対する予測情報を決定し、残差ブロックの係数を再生する(372)。ビデオデコーダ300は、現在のブロックのための予測ブロックを計算するために、たとえば、現在のブロックのための予測情報によって示されるイントラ予測またはインター予測モードを使用して、現在のブロックを予測し得る(374)。たとえば、以下
図14および
図15において説明されるように、動きベクトル改良を実行するかどうかを決定するための本開示の技法は、
図13のプロセス374の前および/または間にビデオデコーダ300によって実行され得る。ビデオデコーダ300は、次いで、量子化された変換係数のブロックを作成するために、再生された係数を逆走査し得る(376)。ビデオデコーダ300は、次いで、残差ブロックを生成するために、係数を逆量子化および逆変換し得る(378)。ビデオデコーダ300は、予測ブロックと残差ブロックとを組み合わせることによって、最終的に現在のブロックを復号し得る(380)。
【0199】
[0218]
図14は、デコーダ側動きベクトル改良を適用するための例示的な復号方法を示すフローチャートである。
図14の技法は、動き補償ユニット316を含む、ビデオデコーダ300を参照して説明される。しかしながら、
図14の技法は、動き補償ユニット224を含む、ビデオエンコーダ200により逆の方式でも実行され得ることを理解されたい。
【0200】
[0219]本開示の一例では、ビデオデコーダ300は、双予測される予測を使用して符号化されたビデオデータの現在のブロックを受信するように構成され得る(1500)。ビデオデコーダ300は次いで、双予測される予測の重みが等しいかどうかを決定し得る(1502)。双予測される予測の重みが等しくない場合、ビデオデコーダ300は、動きベクトル改良プロセスを無効(disable)にし(1504)、動きベクトル改良なしで双予測される予測を使用して現在のブロックを復号し得る(1506)。双予測される予測の重みが等しいとビデオデコーダ300が決定する場合、ビデオデコーダ300は、動きベクトル改良プロセスを有効(enable)にし(1508)、動きベクトル改良ありで双予測される予測を使用して現在のブロックを復号し得る(1510)。
【0201】
[0220]したがって、上の例を鑑みて、ビデオデコーダ300は、双予測される予測を使用して符号化されたビデオデータの現在のブロックのための動きベクトルを決定し、現在のブロックの双予測される予測のために使用される重みに基づいて動きベクトルに対して動きベクトル改良プロセスを使用すると決定し、動きベクトル改良プロセスを使用するという決定に基づいて、動きベクトルに対して動きベクトル改良プロセスを適用するように構成され得る。一例では、現在のブロックの双予測される予測のために使用される重みが等しくないとき、ビデオデコーダ300は、動きベクトル改良プロセスを無効にすると決定するように構成され得る。一例では、動きベクトル改良プロセスは双方向テンプレート照合である。
【0202】
[0221]一例では、双予測予測は重み付け双予測(weighted bi-prediction)である。別の例では、双予測予測は一般化された双予測(generalized bi-prediction)である。
【0203】
[0222]別の例では、ビデオデコーダ300は、ピクチャレベルにおいて現在のブロックの双予測される予測のために使用される重みを決定するように構成され得る。別の例では、ビデオデコーダ300は、ブロックレベルにおいて現在のブロックの双予測される予測のために使用される重みを決定するように構成され得る。
【0204】
[0223]
図15は、デコーダ側動きベクトル改良を適用するための別の例示的な復号方法を示すフローチャートである。
図15の技法は、動き補償ユニット316を含む、ビデオデコーダ300を参照して説明される。しかしながら、
図15の技法は、動き補償ユニット224を含むビデオエンコーダ200によって、逆の方式でも実行され得ることを理解されたい。
【0205】
[0224]本開示の一例では、ビデオデコーダ300は、双予測される予測を使用して符号化されたビデオデータの現在のブロックを受信するように構成され得る(1600)。ビデオデコーダ300は次いで、双予測される予測の重みが等しいかどうかを決定し得る(1602)。双予測される予測の重みが等しくない場合、ビデオデコーダ300は、動きベクトル改良プロセスを無効にし(1604)、動きベクトル改良なしで双予測される予測を使用して現在のブロックを復号し得る(1606)。
【0206】
[0225]双予測される予測の重みが等しいとビデオデコーダ300が決定する場合、ビデオデコーダ300はさらに、双予測されるブロックの動きベクトルによって特定される予測されるブロック間の差分が閾値未満であるかどうかを決定し得る(1608)。閾値未満である場合、ビデオデコーダ300は、動きベクトル改良プロセスを無効にし(1604)、動きベクトル改良なしで双予測される予測を使用して現在のブロックを復号し得る(1606)。閾値未満ではない場合、ビデオデコーダ300は、動きベクトル改良プロセスを有効にし(1610)、動きベクトル改良ありで双予測される予測を使用して現在のブロックを復号し得る(1612)。
【0207】
[0226]したがって、上の例に鑑みて、ビデオデコーダ300は、双予測される予測を使用して符号化されたビデオデータの現在のブロックのための動きベクトルを決定し、動きベクトルによって特定される予測されるブロック間の差分を決定し、現在のブロックの双予測される予測のために使用される重みおよび動きベクトルによって特定される予測されるブロック間の決定された差分に基づいて動きベクトルに対して動きベクトル改良プロセスを使用すると決定し、動きベクトル改良プロセスを使用するという決定に基づいて、動きベクトルに対して動きベクトル改良プロセスを適用するように構成され得る。
【0208】
[0227]本開示の説明のための例は以下のことを含む。
【0209】
[0228]例1: ビデオデータをコーディングする方法であって、ビデオデータの現在のブロックのための動きベクトルを決定するステップと、現在のブロックの双予測される予測のために使用される重みに基づいて動きベクトルに対して動きベクトル改良プロセスを使用すると決定するステップと、決定に基づいて動きベクトルを改良するステップとを備える、方法。
【0210】
[0229]例2:双予測予測は重み付け双予測である、例1の方法。
【0211】
[0230]例3:双予測予測は一般化された双予測である、例1の方法。
【0212】
[0231]例4:ビデオデータの現在のブロックのための動きベクトルを決定することは、双方向テンプレート照合を使用して動きベクトルを決定することを備える、例1の方法。
【0213】
[0232]例5:ビデオデータをコーディングする方法であって、ビデオデータの現在のブロックのための動きベクトルを決定することと、2つの予測されるブロック間の差分に基づいて動きベクトルに対して動きベクトル改良プロセスを使用すると決定することと、決定に基づいて動きベクトルを改良することと、を備える、方法。
【0214】
[0233]例6:ビデオデータをコーディングする方法であって、双方向テンプレート照合を使用してコーディングされるべきビデオデータの現在のブロックを受信することと、双方向テンプレート照合を使用して現在のブロックのための2つの予測されるブロックを決定することとを備え、2つの予測されるブロックのうちの第1のブロックは非整数動きベクトルに基づいて決定され、第1のブロックを決定するステップは、非整数動きベクトルに基づいて水平補間を実行することと、内部ビット深度より高いビット深度で水平補間の出力を記憶することと、垂直補間を実行するために、より高いビット深度で記憶されている水平補間の出力を使用することと、を備える。
【0215】
[0234]例7:コーディングすることは復号することを備える、例1から6のいずれかの方法。
【0216】
[0235]例8:コーディングすることが符号化することを備える、例1から6のいずれかの方法。
【0217】
[0236]例9:ビデオデータをコーディングするためのデバイスであって、例1から例8のいずれかの方法を実行するための1つまたは複数の手段を備える、デバイス。
【0218】
[0237]例10:1つまたは複数の手段が回路中に実装される1つまたは複数のプロセッサを備える、例9のデバイス。
【0219】
[0238]例11:ビデオデータを記憶するように構成されるメモリをさらに備える、例9および10のいずれかのデバイス。
【0220】
[0239]例12:復号されたビデオデータを表示するように構成されるディスプレイをさらに備える、例9から11のいずれかのデバイス。
【0221】
[0240]例13:例9から12のいずれかのデバイスであって、当該デバイスは、カメラ、コンピュータ、モバイルデバイス、ブロードキャスト受信機デバイス、またはセットトップボックスのうちの1つまたは複数を備える。
【0222】
[0241]例14:例9から13のいずれかのデバイスであって、当該デバイスがビデオデコーダを備える。
【0223】
[0242]例15:例9から14のいずれかのデバイスであって、当該デバイスがビデオエンコーダである。
【0224】
[0243]例16:実行されると、例1から8のいずれかの方法を1つまたは複数のプロセッサに実行させる命令を記憶した、コンピュータ可読記憶媒体。
【0225】
[0244]例に応じて、本明細書で説明された技法のいずれかのいくつかの行為またはイベントは、異なる順序で実行されてもよく、追加、統合、または完全に除外されてもよい(たとえば、すべての説明された行為またはイベントが本技法の実践のために必要であるとは限らない)ことを認識されたい。その上、いくつかの例では、行為またはイベントは、連続的にではなく、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通じて同時に実行され得る。
【0226】
[0245]1つまたは複数の例において、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令もしくはコードとして、コンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応する、コンピュータ可読記憶媒体を含み得るか、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を促進する任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、一般に、(1)非一時的な有形コンピュータ可読記憶媒体、または(2)信号もしくは搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示において説明された技法の実装のための命令、コードおよび/またはデータ構造を取り出すために、1つまたは複数のコンピュータまたは1つまたは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
【0227】
[0246]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、フラッシュメモリ、または、命令もしくはデータ構造の形態の所望のプログラムコードを記憶するために使用されコンピュータによってアクセスされ得る、任意の他の媒体を備え得る。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まず、非一時的な有形の記憶媒体を対象とすることを理解されたい。本明細書において使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびブルーレイ(登録商標)ディスク(disc)を含み、ここで、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲に含まれるべきである。
【0228】
[0247]命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他の均等な集積論理回路構成もしくは個別論理回路構成などの、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書において使用される「プロセッサ」および「処理回路」という用語は、前述の構造、または本明細書において説明された技法の実装に好適な任意の他の構造のいずれかを指し得る。加えて、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成された専用ハードウェアおよび/もしくはソフトウェアモジュール内で提供され、または複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素において十分に実装され得る。
【0229】
[0248]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置に実装され得る。本開示では、開示される技法を実行するように構成されたデバイスの機能的態様を強調するために、様々な構成要素、モジュール、またはユニットが説明されたが、それらの構成要素、モジュール、またはユニットは、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上で説明されたように、様々なユニットは、好適なソフトウェアおよび/またはファームウェアとともに、上で説明された1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作可能なハードウェアユニットの集合によって提供され得る。
【0230】
[0249]様々な例が説明された。これらおよび他の例は添付の特許請求の範囲内に入る。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
[C1]
ビデオデータを復号する方法であって、
双予測される予測を使用して符号化されたビデオデータの現在のブロックのための動きベクトルを決定することと、
前記現在のブロックの前記双予測される予測のために使用される重みに基づいて、前記動きベクトルに対して動きベクトル改良プロセスを使用すると決定することと、
前記動きベクトル改良プロセスを使用するという前記決定に基づいて、前記動きベクトルに対して前記動きベクトル改良プロセスを適用することと、
を備える、方法。
[C2]
前記現在のブロックの前記双予測される予測のために使用される前記重みは等しくなく、
前記現在のブロックの前記双予測される予測のために使用される前記重みに基づいて前記動きベクトルに対して前記動きベクトル改良プロセスを使用すると決定することは、
前記動きベクトル改良プロセスを無効にすると決定することを備える、
C1に記載の方法。
[C3]
前記双予測予測は重み付け双予測である、C1に記載の方法。
[C4]
前記双予測予測は一般化された双予測である、C1に記載の方法。
[C5]
ピクチャレベルにおいて、前記現在のブロックの前記双予測される予測のために使用される前記重みを決定することをさらに備える、C1に記載の方法。
[C6]
ブロックレベルにおいて、前記現在のブロックの前記双予測される予測のために使用される前記重みを決定することをさらに備える、C1に記載の方法。
[C7]
前記動きベクトル改良プロセスは、双方向テンプレート照合である、C1に記載の方法。
[C8]
前記動きベクトルによって特定される予測されるブロック間の差分を決定することをさらに備え、
前記現在のブロックの前記双予測される予測のために使用される前記重みに基づいて前記動きベクトルに対して前記動きベクトル改良プロセスを使用すると決定することは、
前記現在のブロックの前記双予測される予測のために使用される前記重みと、前記動きベクトルによって特定される前記予測されるブロック間の前記決定された差分とに基づいて、前記動きベクトルに対して前記動きベクトル改良プロセスを使用すると決定することを備える、
C1に記載の方法。
[C9]
前記現在のブロックの前記双予測される予測のために使用される重みと、前記動きベクトルによって特定される前記予測されるブロック間の前記決定された差分とに基づいて、前記動きベクトルに対して前記動きベクトル改良プロセスを使用すると決定することは、
前記動きベクトルによって特定される前記予測されるブロック間の前記差分が閾値未満である場合、前記動きベクトル改良プロセスを無効にすると決定することを備える、
C8に記載の方法。
[C10]
前記動きベクトルによって特定される前記予測されるブロック間の前記差分を決定することは、
前記予測されるブロック間の絶対差分和または前記予測されるブロック間の2乗誤差和を使用して、前記動きベクトルによって特定される前記予測されるブロック間の前記差分を決定することを備える、
C8に記載の方法。
[C11]
前記予測されるブロックの中のサンプルの数および前記予測されるブロックの中の前記サンプルのビット深度に基づいて、前記閾値を決定することをさらに備える、C10に記載の方法。
[C12]
前記動きベクトル改良プロセスは双方向テンプレート照合であり、前記現在のブロックの前記双予測される予測のために使用される前記重みは等しく、
前記現在のブロックの前記双予測される予測のために使用される前記重みに基づいて前記動きベクトルに対して前記動きベクトル改良プロセスを使用すると決定することは、
前記動きベクトル改良プロセスを有効にすると決定することを備える、
C1に記載の方法。
[C13]
前記動きベクトルに対して前記双方向テンプレート照合を適用することは、
双方向テンプレート照合を使用して前記現在のブロックのための2つの予測されるブロックを決定することを備え、前記2つの予測されるブロックのうちの第1の予測されるブロックは前記現在のブロックのための前記動きベクトルに基づいて決定され、
前記動きベクトルは非整数動きベクトルを含み、前記第1の予測されるブロックを決定することは、
前記非整数動きベクトルに基づいて水平補間を実行することと、
内部ビット深度より高いビット深度において前記水平補間の出力を記憶することと、
垂直補間を実行するために、前記より高いビット深度で記憶されている前記水平補間の前記出力を使用することと、
を備える、C12に記載の方法。
[C14]
ビデオデータを復号するように構成される装置であって、
ビデオデータの現在のブロックを記憶するように構成されるメモリと、
回路において実装され、前記メモリと通信している1つまたは複数のプロセッサと、を備え、前記1つまたは複数のプロセッサは、
双予測される予測を使用して符号化されたビデオデータの現在のブロックのための動きベクトルを決定し、
前記現在のブロックの前記双予測される予測のために使用される重みに基づいて、前記動きベクトルに対して動きベクトル改良プロセスを使用すると決定し、
前記動きベクトル改良プロセスを使用するという前記決定に基づいて、前記動きベクトルに対して前記動きベクトル改良プロセスを適用する、
ように構成される、装置。
[C15]
前記現在のブロックの前記双予測される予測のために使用される前記重みは等しくなく、
前記現在のブロックの前記双予測される予測のために使用される前記重みに基づいて前記動きベクトルに対して前記動きベクトル改良プロセスを使用すると決定するために、前記1つまたは複数のプロセッサはさらに、
前記動きベクトル改良プロセスを無効にすると決定するように構成される、C14に記載の装置。
[C16]
前記双予測予測は重み付け双予測である、C14に記載の装置。
[C17]
前記双予測予測は一般化された双予測である、C14に記載の装置。
[C18]
前記1つまたは複数のプロセッサはさらに、
ピクチャレベルにおいて、前記現在のブロックの前記双予測される予測のために使用される前記重みを決定するように構成される、C14に記載の装置。
[C19]
前記1つまたは複数のプロセッサはさらに、
ブロックレベルにおいて、前記現在のブロックの前記双予測される予測のために使用される前記重みを決定するように構成される、C14に記載の装置。
[C20]
前記動きベクトル改良プロセスは、双方向テンプレート照合である、C14に記載の装置。
[C21]
前記1つまたは複数のプロセッサは、さらに、
前記動きベクトルによって特定される予測されるブロック間の差分を決定するように構成され、
前記現在のブロックの前記双予測される予測のために使用される前記重みに基づいて前記動きベクトルに対して前記動きベクトル改良プロセスを使用すると決定するために、前記1つまたは複数のプロセッサは、さらに、
前記現在のブロックの前記双予測される予測のために使用される前記重みおよび前記動きベクトルによって特定される前記予測されるブロック間の前記決定された差分に基づいて、前記動きベクトルに対して前記動きベクトル改良プロセスを使用すると決定するように構成される、C14に記載の装置。
[C22]
前記現在のブロックの前記双予測される予測のために使用される重みと、前記動きベクトルによって特定される前記予測されるブロック間の前記決定された差分とに基づいて、前記動きベクトルに対して前記動きベクトル改良プロセスを使用すると決定するために、前記1つまたは複数のプロセッサは、さらに、
前記動きベクトルによって特定される前記予測されるブロック間の前記差分が閾値未満である場合、前記動きベクトル改良プロセスを無効にすると決定するように構成される、
C21に記載の装置。
[C23]
前記動きベクトルによって特定される前記予測されるブロック間の前記差分を決定するために、前記1つまたは複数のプロセッサは、さらに、
前記予測されるブロック間の絶対差分和または前記予測されるブロック間の2乗誤差和を使用して、前記動きベクトルによって特定される前記予測されるブロック間の前記差分を決定するように構成される、
C21に記載の装置。
[C24]
前記1つまたは複数のプロセッサは、さらに、
前記予測されたブロックの中のサンプルの数および前記予測されたブロックの中の前記サンプルのビット深度に基づいて、前記閾値を決定するように構成される、C23に記載の装置。
[C25]
前記動きベクトル改良プロセスは双方向テンプレート照合であり、前記現在のブロックの前記双予測される予測のために使用される前記重みは等しく、
前記現在のブロックの前記双予測される予測のために使用される前記重みに基づいて前記動きベクトルに対して前記動きベクトル改良プロセスを使用すると決定するために、前記1つまたは複数のプロセッサは、さらに、
前記動きベクトル改良プロセスを有効にすると決定するように構成される、
C14に記載の装置。
[C26]
前記動きベクトルに対して前記双方向テンプレート照合を適用するために、前記1つまたは複数のプロセッサは、さらに、
双方向テンプレート照合を使用して前記現在のブロックのための2つの予測されるブロックを決定するように構成され、前記2つの予測されるブロックのうちの第1の予測されるブロックは前記現在のブロックのための前記動きベクトルに基づいて決定され、
前記動きベクトルが非整数動きベクトルを含み、前記第1の予測されるブロックを決定するために、前記1つまたは複数のプロセッサは、さらに、
前記非整数動きベクトルに基づいて水平補間を実行し、
内部ビット深度より高いビット深度において前記水平補間の出力を記憶し、
垂直補間を実行するために、前記より高いビット深度で記憶されている前記水平補間の前記出力を使用する、
ように構成される、C25に記載の装置。
[C27]
前記装置がワイヤレス通信デバイスである、C14に記載の装置。
[C28]
実行されると、ビデオデータを復号するように構成された1つまたは複数のプロセッサに、
双予測される予測を使用して符号化されたビデオデータの現在のブロックのための動きベクトルを決定することと、
前記現在のブロックの前記双予測される予測のために使用される重みに基づいて、前記動きベクトルに対して動きベクトル改良プロセスを使用すると決定することと、
前記動きベクトル改良プロセスを使用するという前記決定に基づいて、前記動きベクトルに対して前記動きベクトル改良プロセスを適用することと、
を行わせる命令を記憶した非一時的コンピュータ可読記憶媒体。