(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-09-20
(54)【発明の名称】ビデオコーディングのためのデコーダ側動きベクトル改良のための適応双方向マッチング
(51)【国際特許分類】
H04N 19/567 20140101AFI20240912BHJP
H04N 19/192 20140101ALI20240912BHJP
【FI】
H04N19/567
H04N19/192
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024515628
(86)(22)【出願日】2022-09-07
(85)【翻訳文提出日】2024-03-11
(86)【国際出願番号】 US2022076032
(87)【国際公開番号】W WO2023044253
(87)【国際公開日】2023-03-23
(32)【優先日】2021-09-17
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2022-09-06
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】595020643
【氏名又は名称】クゥアルコム・インコーポレイテッド
【氏名又は名称原語表記】QUALCOMM INCORPORATED
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】セレジン、バディム
(72)【発明者】
【氏名】ファン、ハン
(72)【発明者】
【氏名】カルチェビチ、マルタ
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159MA04
5C159MA05
5C159MA21
5C159MC11
5C159ME01
5C159NN11
5C159NN21
5C159TA62
5C159TB08
5C159TC08
5C159TC18
5C159TD17
5C159UA02
5C159UA05
5C159UA16
(57)【要約】
ビデオデータを符号化又は復号する例示的な方法は、反復探索プロセスを実行することを含むデコーダ側動きベクトル導出プロセスを使用して、ビデオデータのブロックのための動きベクトルを決定することであって、反復探索プロセスを実行することは、前の探索反復を通して最小コストを決定することと、現在の探索反復を通して総最小コストを更新することと、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて、反復探索プロセスを早期に終了することとを含む、動きベクトルを決定することと、動きベクトルを使用してビデオデータのブロックを符号化又は復号することとを含む。
【特許請求の範囲】
【請求項1】
ビデオデータを符号化又は復号する方法であって、
反復探索プロセスを実行することを含むデコーダ側動きベクトル導出プロセスを使用して、ビデオデータのブロックのための動きベクトルを決定することであって、前記反復探索プロセスを実行することが、
前の探索反復を通して最小コストを決定することと、
現在の探索反復を通して総最小コストを更新することと、
前記前の探索反復を通した前記最小コストと前記現在の探索反復を通した前記総最小コストとの比較に基づいて、前記反復探索プロセスを早期に終了することとを含む、動きベクトルを決定することと、
前記動きベクトルを使用してビデオデータの前記ブロックを符号化又は復号することと
を含む、方法。
【請求項2】
前記前の探索反復が、前記反復探索プロセスにおいて前記現在の探索反復の直前にある、請求項1に記載の方法。
【請求項3】
候補位置の少なくとも現在のサブセットに基づいて、前記現在の探索反復を通して前記総最小コストを計算すること
を更に含む、請求項1に記載の方法。
【請求項4】
前記前の探索反復を通した前記最小コストと前記現在の探索反復を通した前記総最小コストとの前記比較に基づいて前記反復探索プロセスを早期に終了することが、
前記前の探索反復を通した前記最小コストと前記現在の探索反復を通した前記総最小コストとの差分を計算することと、
差分閾値に対する前記差分に基づいて前記反復探索プロセスを早期に終了することと
を含む、請求項1に記載の方法。
【請求項5】
前記差分閾値が、前記ブロックのサイズに基づく、請求項4に記載の方法。
【請求項6】
前記前の探索反復を通した前記最小コストと前記現在の探索反復を通した前記総最小コストとの前記比較に基づいて前記反復探索プロセスを早期に終了することが、
前記前の探索反復を通した前記最小コストと前記現在の探索反復を通した前記総最小コストとの比を計算することと、
比閾値に対する前記比に基づいて前記反復探索プロセスを早期に終了することと
を含む、請求項1に記載の方法。
【請求項7】
前記比閾値が、固定されるか、又は前記ブロックのサイズに基づく、請求項6に記載の方法。
【請求項8】
前記前の探索反復を通した前記最小コストと前記現在の探索反復を通した前記総最小コストとの前記比較に基づいて前記反復探索プロセスを早期に終了することが、
前記前の探索反復を通した前記最小コストと前記現在の探索反復を通した前記総最小コストとの差分を計算することと、
前記前の探索反復を通した前記最小コストと前記現在の探索反復を通した前記総最小コストとの差分に対する前記前の探索反復を通した前記最小コストの比を計算することと、
比閾値に対する前記比に基づいて前記反復探索プロセスを早期に終了することと
を含む、請求項1に記載の方法。
【請求項9】
前記比閾値が、固定されるか、又は前記ブロックのサイズに基づく、請求項8に記載の方法。
【請求項10】
前記前の探索反復を通した前記最小コストと前記現在の探索反復を通した前記総最小コストとの前記比較に基づいて前記反復探索プロセスを早期に終了することが、
前記前の探索反復を通した前記最小コストと前記現在の探索反復を通した前記総最小コストとの前記比較、及び前記前の探索反復を通した前記最小コストと前記現在の探索反復の最小コストとの比較に基づいて、前記反復探索プロセスを早期に終了すること
を含む、請求項1に記載の方法。
【請求項11】
前記反復探索プロセスが、3回以上の反復を含む、請求項1に記載の方法。
【請求項12】
前記反復探索プロセスを実行することが、双方向マッチング又はテンプレートマッチングを実行することを含む、請求項1に記載の方法。
【請求項13】
ビデオデータを処理するためのデバイスであって、
前記ビデオデータを記憶するように構成されたメモリと、
処理回路とを備え、前記処理回路は、
反復探索プロセスを含むデコーダ側動きベクトル導出プロセスを使用して、前記ビデオデータのブロックのための動きベクトルを決定するように構成され、ここで、前記反復探索プロセスを実行するために、前記処理回路が、
前の探索反復を通して最小コストを決定し、
現在の探索反復を通して総最小コストを更新し、
前記前の探索反復を通した前記最小コストと前記現在の探索反復を通した前記総最小コストとの比較に基づいて、前記反復探索プロセスを早期に終了する
ように更に構成され、
前記動きベクトルを使用してビデオデータの前記ブロックを符号化又は復号する
ように構成される、デバイス。
【請求項14】
前記前の探索反復が、前記現在の探索反復の直前にある、請求項13に記載のデバイス。
【請求項15】
前記反復探索プロセスを実行するために、前記処理回路が、候補位置の少なくとも現在のサブセットに基づいて、前記現在の探索反復を通して前記総最小コストを計算するように更に構成される、請求項13に記載のデバイス。
【請求項16】
前記前の探索反復を通した前記最小コストと前記現在の探索反復を通した前記総最小コストとの前記比較に基づいて前記反復探索プロセスを早期に終了するために、前記処理回路が、
前記前の探索反復を通した前記最小コストと前記現在の探索反復を通した前記総最小コストとの差分を計算し、
差分閾値に対する前記差分に基づいて前記反復探索プロセスを早期に終了する
ように更に構成される、請求項13に記載のデバイス。
【請求項17】
前記差分閾値が、前記ブロックのサイズに基づく、請求項16に記載のデバイス。
【請求項18】
前記前の探索反復を通した前記最小コストと前記現在の探索反復を通した前記総最小コストとの前記比較に基づいて前記反復探索プロセスを早期に終了するために、前記処理回路が、
前記現在の探索反復を通した前記最小コストと前記現在の探索反復を通した前記総最小コストとの比を計算し、
比閾値に対する前記比に基づいて前記反復探索プロセスを早期に終了する
ように更に構成される、請求項13に記載のデバイス。
【請求項19】
前記比閾値が、固定されるか、又は前記ブロックのサイズに基づく、請求項18に記載のデバイス。
【請求項20】
前記前の探索反復を通した前記最小コストと前記現在の探索反復を通した前記総最小コストとの前記比較に基づいて前記反復探索プロセスを早期に終了するために、前記処理回路が、
前記前の探索反復を通した前記最小コストと前記現在の探索反復を通した前記総最小コストとの差分を計算し、
前記前の探索反復を通した前記最小コストと前記現在の探索反復を通した前記総最小コストとの前記差分に対する前記前の探索反復を通した前記最小コストの比を計算し、
比閾値に対する前記比に基づいて早期に前記反復探索プロセスを終了するように更に構成される、請求項13に記載のデバイス。
【請求項21】
前記比閾値が、固定されるか、又は前記ブロックのサイズに基づく、請求項20に記載のデバイス。
【請求項22】
前記前の探索反復を通した前記最小コストと前記現在の探索反復を通した前記総最小コストとの前記比較に基づいて前記反復探索プロセスを早期に終了するために、前記処理回路が、
前記前の探索反復を通した前記最小コストと前記現在の探索反復を通した前記総最小コストとの前記比較、及び前記前の探索反復を通した前記最小コストと前記現在の探索反復の最小コストとの比較に基づいて、前記反復探索プロセスを早期に終了する
ように更に構成される、請求項13に記載のデバイス。
【請求項23】
前記反復探索プロセスが、3回以上の反復を含む、請求項13に記載のデバイス。
【請求項24】
前記反復探索プロセスを実行するために、前記処理回路が、双方向マッチング又はテンプレートマッチングを実行するように構成される、請求項13に記載のデバイス。
【請求項25】
前記ビデオデータを表示するように構成されたディスプレイを更に備える、請求項13に記載のデバイス。
【請求項26】
前記デバイスが、カメラ、コンピュータ、モバイルデバイス、ブロードキャスト受信機デバイス、又はセットトップボックスのうちの1つ以上を備える、請求項13に記載のデバイス。
【請求項27】
前記デバイスが、前記ビデオデータをキャプチャするように構成されたカメラを備える、請求項13に記載のデバイス。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
[0001] 本出願は、2022年9月6日に出願された米国特許出願第17/929,891号、及び2021年9月17日に出願された米国特許仮出願第63/245,577号の優先権を主張し、両出願の内容全体が参照により本明細書に組み込まれる。2022年9月6日に出願された米国特許出願第17/929,891号は、2021年9月17日に出願された米国特許仮出願第63/245,577号の利益を主張する。
【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)、ITU-T H.266/汎用ビデオコーディング(VVC)によって定義された規格、及びそのような規格の拡張、並びにAlliance for Open Mediaによって開発されたAOMedia Video1(AV1)などのプロプライエタリビデオコーデック/フォーマットに記載されているビデオコーディング技法など、ビデオコーディング技法を実装する。ビデオデバイスは、そのようなビデオコーディング技法を実装することによって、デジタルビデオ情報をより効率的に送信、受信、符号化、復号、及び/又は記憶する場合がある。
【0004】
[0004] ビデオコーディング技法は、ビデオシーケンスに固有の冗長性を低減又は除去するために、空間(ピクチャ内)予測及び/又は時間(ピクチャ間)予測を含む。ブロックベースのビデオコーディングの場合、ビデオスライス(例えば、ビデオピクチャ又はビデオピクチャの一部分)は、ビデオブロックに区分されてもよく、ビデオブロックは、コーディングツリーユニット(CTU)、コーディングユニット(CU)及び/又はコーディングノードと呼ばれることもある。ピクチャのイントラコーディングされた(I)スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間予測を使用して符号化される。ピクチャのインターコーディングされた(P又はB)スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間予測又は他の参照ピクチャ中の参照サンプルに対する時間予測を使用し得る。ピクチャはフレームと呼ばれる場合があり、参照ピクチャは参照フレームと呼ばれる場合がある。
【発明の概要】
【0005】
[0005] 一般に、本開示は、ビデオコーデックにおけるインター予測に関連する技法を記載する。より具体的には、本開示は、動きベクトルを決定及び/又は改良するための反復探索プロセスのデコーダ側動きベクトル改良及び早期終了に関するデバイス及び技法について説明する。ビデオエンコーダ/デコーダは、前の探索反復を通して最小コストを決定し、現在の探索反復を通して総最小コストを更新するように構成され得る。次いで、反復探索プロセスは、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて、早期に終了され得る。このようにして、探索反復探索プロセスは、連続する探索反復の間にわずかな改善が観察されたときに早期に終了され得る。したがって、本開示の技法は、歪みを実質的に増大させることなく、計算複雑性を低減し得る。
【0006】
[0006] 一例では、本開示は、ビデオデータを復号する方法について説明し、方法は、反復探索プロセスを含むデコーダ側動きベクトル導出プロセスを使用して、ビデオデータのブロックのための動きベクトルを決定することであって、反復探索プロセスが、前の探索反復を通して最小コストを決定することと、現在の探索反復を通して総最小コストを更新することと、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて、反復探索プロセスを早期に終了することとを含む、動きベクトルを決定することと、動きベクトルを使用してビデオデータのブロックを復号することとを含む。
【0007】
[0007] 別の例では、本開示は、ビデオデータを符号化するための方法について説明し、方法は、反復探索プロセスを含むデコーダ側動きベクトル導出プロセスを使用して、ビデオデータのブロックのための動きベクトルを決定することであって、反復探索プロセスが、前の探索反復を通して最小コストを決定することと、現在の探索反復を通して総最小コストを更新することと、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて、反復探索プロセスを早期に終了することを含む、動きベクトルを決定することと、動きベクトルを使用してビデオデータのブロックを符号化することとを含む。
【0008】
[0008] 別の例では、ビデオデータを復号するためのデバイスは、ビデオデータを記憶するように構成されたメモリと、処理回路とを含み、処理回路は、反復探索プロセスを含むデコーダ側動きベクトル導出プロセスを使用して、ビデオデータのブロックのための動きベクトルを決定し、反復探索プロセスが、前の探索反復を通して最小コストを決定することと、現在の探索反復を通して総最小コストを更新することと、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて、反復探索プロセスを早期に終了することとを含み、動きベクトルを使用してビデオデータのブロックを復号するように構成される。
【0009】
[0009] 別の例では、ビデオデータを符号化するためのデバイスは、ビデオデータを記憶するように構成されたメモリと、処理回路とを含み、処理回路は、反復探索プロセスを含むデコーダ側動きベクトル導出プロセスを使用して、ビデオデータのブロックのための動きベクトルを決定し、反復探索プロセスが、前の探索反復を通して最小コストを決定することと、現在の探索反復を通して総最小コストを更新することと、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて、反復探索プロセスを早期に終了することとを含み、動きベクトルを使用してビデオデータのブロックを符号化するように構成される。
【0010】
[0010] 1つ以上の例の詳細が、添付図面及び以下の説明に記載されている。他の特徴、目的、及び利点が、説明、図面、及び特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0011】
【
図1】[0011] 本開示の技法を実施し得る例示的なビデオ符号化及び復号システムを示すブロック図である。
【
図2】[0012] 空間マージ候補の位置の一例を示す。
【
図3】[0013] 時間マージ候補のための動きベクトルスケーリングの一例を示す。
【
図4】[0014] 時間マージ候補のための例示的な候補位置を示す。
【
図5】[0015] 双方向(bilateral)マッチングの一例を示す。
【
図6】[0016] 双方向オプティカルフローにおいて使用される拡張コーディングユニット領域の一例を示す。
【
図7】[0017] マルチパスデコーダ側動き改良のための例示的なダイヤモンド探索領域を示す。
【
図8】[0018] 初期動きベクトルの周辺の探索領域に対して実行されるテンプレートマッチングの一例を示す。
【
図9】[0019] 本開示の技法を実行し得る例示的なビデオエンコーダを示すブロック図である。
【
図10】[0020] 本開示の技法を実行し得る例示的なビデオデコーダを示すブロック図である。
【
図11】[0021] 本開示の技法による、現在ブロックを符号化するための例示的な方法を示すフローチャートである。
【
図12】[0022] 本開示の技法による、現在ブロックを復号するための例示的な方法を示すフローチャートである。
【
図13】[0023] 本開示の一例による、反復探索プロセスを早期に終了するための例示的な方法を示すフローチャートである。
【
図14】[0024] 本開示の技法による、現在ブロックを復号するための別の例示的な方法を示すフローチャートである。
【
図15】[0025] 本開示の技法による、現在ブロックを符号化するための別の例示的な方法を示すフローチャートである。
【発明を実施するための形態】
【0012】
[0026] いくつかの例示的なインター予測技法では、ビデオデコーダは、動きベクトルを決定及び/又は改良するために反復探索プロセスを実行するように構成され得る。いくつかの例示的な技法は、双方向マッチングデコーダ側動きベクトル改良(DMVR)及びテンプレートマッチングを含む。例示的なデコーダ側動き探索プロセスでは、双方向マッチングベースのDMVR又はテンプレートマッチングのいずれかについて、コスト基準が定義され、事前定義された探索領域内の候補位置についてのコストを計算するために使用される。最小コストを有する候補位置に関連付けられた動き情報は、反復探索プロセスの出力であり得る。探索プロセスは、複数回の反復で実行され得る。各反復において、探索領域内の候補位置のサブセットが評価される。一般に、初期位置と候補位置との間の距離は、各反復の後に増加する。言い換えれば、現在の探索反復における候補位置は、前の反復の位置よりも初期点から更に離れていてもよい。
【0013】
[0027] 変数minCostは、反復探索プロセス中に計算された最小コストを表し得、minCostは、反復探索プロセス中にそれまでに決定された反復探索プロセスの最小コストを表し得る。いくつかの早期終了方法が、探索プロセスを終了するために適用され得る。いくつかの例では、minCostが閾値未満である場合、探索プロセスは終了され得るか、又は最小コストをもつ最良の候補位置が1つのサブセットから次のサブセットに(例えば、1つの反復から次の反復に)変更されなかった場合、探索プロセスは終了され得る。
【0014】
[0028] しかしながら、いくつかの例では、反復探索プロセス中に計算されたminCostは、閾値よりも大きいままであるが、閾値未満に適時に減少する速度で減少しないことがある。したがって、minCostを閾値と単純に比較することは、ピクチャ歪みにおけるわずかな改善を有する一方で、デコーダ側動きベクトル導出におけるより長い復号時間及びより大きい計算複雑性の例につながり得る。
【0015】
[0029] 計算複雑性を更に低減し、デコーダ側動きベクトル導出における効率を改善するために、ビデオエンコーダ/デコーダは、前の探索反復を通して最小コストを決定し、現在の探索反復を通して総最小コストを更新するように構成され得る。言い換えれば、ビデオエンコーダ/デコーダは、前の探索反復を通して最小コストを決定し、現在の探索反復を通して総最小コストを決定し得る。次いで、反復探索プロセスは、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて、早期に終了され得る。いくつかの例では、前の探索反復を通して最小コストを決定することは、すべての前の探索反復の最小コストを決定することを含み得る。いくつかの例では、反復探索プロセスを早期に終了することは、本明細書で開示する反復探索プロセスが、反復探索プロセスの通常の終了よりも早く終了される能力を有し得ることを意味し得る(すなわち、反復探索プロセスは、反復探索反復を通した最小コスト(例えば、上記で説明したminCost)と閾値との比較に基づいて終了される)。前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとを比較することによって反復探索プロセスを終了することは、歪みを実質的に増加させることなく計算複雑性を低減し得る。
【0016】
[0030] いくつかの例では、反復探索プロセスは、差分閾値に対する、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの差分に基づいて、早期に終了され得る。いくつかの例では、差分が差分閾値よりも小さい場合、探索プロセスは終了する。いくつかの例では、反復探索プロセスは、比閾値に対する、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比に基づいて、早期に終了され得る。いくつかの例では、反復探索プロセスは、比閾値に対する、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの差分に対する前の探索反復を通した最小コストの比に基づいて、早期に終了され得る。いくつかの例では、閾値は、コーディングされているブロックのサイズなど、コーディングされているブロックの特性に基づき得る。
【0017】
[0031] このようにして、連続する探索反復間のわずかな改善のみが観察されたときに、反復探索プロセスが早期に終了され得る。上記で説明した早期終了技法を使用して反復探索プロセスを早期に終了することによって、歪みを実質的に増加させることなく、デコーダ側動きベクトル導出における計算複雑性を低減し得る。
【0018】
[0032] 上記で説明した早期終了技法は、3回以上の反復を有する探索プロセスを伴うデコーダ側動きベクトル導出技法のいずれかとともに使用され得る。一例では、上記で説明した早期終了技法は、DMVRの双方向マッチング又はテンプレートマッチングのいずれかにおいて適用され得る。他の例では、上記で説明した早期終了技法は、他の早期終了方法とともに使用してもよい。
【0019】
[0033]
図1は、本開示の技法を実施し得る例示的なビデオ符号化及び復号システム100を示すブロック図である。本開示の技法は、一般に、ビデオデータをコーディングする(符号化及び/又は復号)することを対象とする。一般に、ビデオデータは、ビデオを処理するための任意のデータを含む。したがって、ビデオデータは、未加工の符号化されていないビデオ、符号化されたビデオ、復号された(例えば、再構成された)ビデオ、及びシグナリングデータなどのビデオメタデータを含んでよい。
【0020】
[0034]
図1に示されるように、この例では、システム100は、デスティネーションデバイス116によって復号され表示されるべき、符号化されたビデオデータを提供するソースデバイス102を含む。具体的には、ソースデバイス102は、コンピュータ可読媒体110を介してデスティネーションデバイス116にビデオデータを提供する。ソースデバイス102及びデスティネーションデバイス116は、デスクトップコンピュータ、ノートブック(例えば、ラップトップ)コンピュータ、モバイルデバイス、タブレットコンピュータ、セットトップボックス、スマートフォンなどの電話ハンドセット、テレビジョン、カメラ、表示デバイス、デジタルメディアプレーヤ、ビデオゲーミングコンソール、ビデオストリーミングデバイス、ブロードキャスト受信機デバイスなどを含む、広範囲にわたるデバイスのいずれかを備えてもよい。場合によっては、ソースデバイス102及びデスティネーションデバイス116は、ワイヤレス通信に対応し得るので、ワイヤレス通信デバイスと呼ばれ得る。
【0021】
[0035]
図1の例では、ソースデバイス102は、ビデオソース104、メモリ106、ビデオエンコーダ200、及び出力インターフェース108を含む。デスティネーションデバイス116は、入力インターフェース122、ビデオデコーダ300、メモリ120、及び表示デバイス118を含む。本開示によれば、ソースデバイス102のビデオエンコーダ200及びデスティネーションデバイス116のビデオデコーダ300は、デコーダ側動きベクトル導出のための技法を適用するように構成され得る。したがって、ソースデバイス102はビデオ符号化デバイスの例を表し、一方でデスティネーションデバイス116はビデオ復号デバイスの例を表す。他の例では、ソースデバイス及びデスティネーションデバイスは、他のコンポーネント又は構成を含み得る。例えば、ソースデバイス102は、外部カメラなどの外部ビデオソースからビデオデータを受信してもよい。同様に、デスティネーションデバイス116は、一体型表示デバイスを含むのではなく、外部表示デバイスとインターフェースしてもよい。
【0022】
[0036]
図1に示すようなシステム100は一例にすぎない。一般に、任意のデジタルビデオ符号化及び/又は復号デバイスは、デコーダ側動きベクトル導出のための技法を実行し得る。ソースデバイス102及びデスティネーションデバイス116は、ソースデバイス102がデスティネーションデバイス116への送信のためにコーディングされたビデオデータを生成するような、コーディングデバイスの例にすぎない。本開示は、データのコーディング(符号化及び/又は復号)を実施するデバイスを「コーディング」デバイスと呼ぶ。したがって、ビデオエンコーダ200及びビデオデコーダ300は、コーディングデバイス、具体的には、それぞれ、ビデオエンコーダ及びビデオデコーダの例を表す。いくつかの例では、ソースデバイス102及びデスティネーションデバイス116は、ソースデバイス102及びデスティネーションデバイス116の各々がビデオ符号化及び復号コンポーネントを含むように、実質的に対称的に動作し得る。したがって、システム100は、例えば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、又はビデオ電話のための、ソースデバイス102とデスティネーションデバイス116との間での一方向又は双方向のビデオ送信をサポートし得る。
【0023】
[0037] 一般に、ビデオソース104は、ビデオデータ(例えば、未加工の符号化されていないビデオデータ)のソースを表し、ビデオデータの連続した一連のピクチャ(「フレーム」とも呼ばれる)をビデオエンコーダ200に提供し、ビデオエンコーダ200は、ピクチャのためのデータを符号化する。ソースデバイス102のビデオソース104は、ビデオカメラなどの、ビデオキャプチャデバイス、以前にキャプチャされた未加工のビデオを含むビデオアーカイブ、及び/又はビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースを含み得る。更なる代替として、ビデオソース104は、ソースビデオとしてのコンピュータグラフィックスベースのデータ、又はライブビデオ、アーカイブされたビデオ、及びコンピュータ生成されたビデオの組合せを生成し得る。各場合において、ビデオエンコーダ200は、キャプチャされたビデオデータ、事前にキャプチャされたビデオデータ、又はコンピュータ生成されたビデオデータを符号化する。ビデオエンコーダ200は、受信された順序(「表示順序」と呼ばれることがある)からコーディングのためのコーディング順序へと、ピクチャを並べ替え得る。ビデオエンコーダ200は、符号化されたビデオデータを含むビットストリームを生成し得る。ソースデバイス102は次いで、例えばデスティネーションデバイス116の入力インターフェース122によって、受信及び/又は取り出しのために、出力インターフェース108を介してコンピュータ可読媒体110へと、符号化されたビデオデータを出力し得る。
【0024】
[0038] ソースデバイス102のメモリ106及びデスティネーションデバイス116のメモリ120は、汎用メモリを表す。いくつかの例では、メモリ106、120は、未加工のビデオデータ、例えば、ビデオソース104からの未加工のビデオと、ビデオデコーダ300からの未加工の復号されたビデオデータとを記憶し得る。追加又は代替として、メモリ106、120は、例えばビデオエンコーダ200及びビデオデコーダ300によってそれぞれ実行可能なソフトウェア命令を記憶し得る。メモリ106及びメモリ120は、この例ではビデオエンコーダ200及びビデオデコーダ300とは別個に示されるが、ビデオエンコーダ200及びビデオデコーダ300がまた、機能的に類似の又は均等な目的のために内部メモリを含み得ることを理解されたい。更に、メモリ106、120は、例えばビデオエンコーダ200から出力されビデオデコーダ300へと入力される、符号化されたビデオデータを記憶し得る。いくつかの例では、メモリ106、120の部分は、例えば、未加工の復号されたビデオデータ及び/又は符号化されたビデオデータを記憶するための、1つ又は複数のビデオバッファとして割り振られ得る。
【0025】
[0039] コンピュータ可読媒体110は、ソースデバイス102からデスティネーションデバイス116に符号化されたビデオデータを移すことが可能な任意のタイプの媒体又はデバイスを表し得る。一例では、コンピュータ可読媒体110は、例えば、無線周波数ネットワーク又はコンピュータベースのネットワークを介して、ソースデバイス102がリアルタイムでデスティネーションデバイス116に符号化されたビデオデータを直接送信することを可能にするための通信媒体を表す。出力インターフェース108は、符号化されたビデオデータを含む送信信号を変調してもよく、入力インターフェース122は、ワイヤレス通信プロトコルなどの通信規格に従って、受信された送信信号を復調してもよい。通信媒体は、無線周波数(RF)スペクトル又は1つ若しくは複数の物理伝送線路などの、任意のワイヤレス又は有線の通信媒体を備えてよい。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、又はインターネットなどのグローバルネットワークなどのパケットベースネットワークの一部を形成してよい。通信媒体は、ルータ、スイッチ、基地局、又はソースデバイス102からデスティネーションデバイス116への通信を容易にするために有用であり得る任意の他の機器を含み得る。
【0026】
[0040] いくつかの例では、ソースデバイス102は、出力インターフェース108から記憶デバイス112に符号化されたデータを出力し得る。同様に、デスティネーションデバイス116は、入力インターフェース122を介して、記憶デバイス112からの符号化されたデータにアクセスし得る。記憶デバイス112は、ハードドライブ、Blu-ray(登録商標)ディスク、DVD、CD-ROM、フラッシュメモリ、揮発性若しくは不揮発性メモリ、又は符号化されたビデオデータを記憶するための任意の他の適切なデジタル記憶媒体などの、様々な分散された又はローカルでアクセスされるデータ記憶媒体のうちのいずれかを含み得る。
【0027】
[0041] いくつかの例では、ソースデバイス102は、符号化ビデオデータを、ソースデバイス102によって生成された符号化されたビデオデータを記憶し得るファイルサーバ114又は別の中間記憶デバイスに出力し得る。デスティネーションデバイス116は、ストリーミング又はダウンロードを介して、ファイルサーバ114からの記憶されたビデオデータにアクセスし得る。
【0028】
[0042] ファイルサーバ114は、符号化されたビデオデータを記憶し、その符号化されたビデオデータをデスティネーションデバイス116に送信することが可能な任意のタイプのサーバデバイスであり得る。ファイルサーバ114は、(例えば、ウェブサイトのための)ウェブサーバ、(ファイル転送プロトコル(FTP)又はFile Delivery over Unidirectional Transport(FLUTE)プロトコルなどの)ファイル転送プロトコルサービスを提供するように構成されたサーバ、コンテンツ配信ネットワーク(CDN)デバイス、ハイパーテキスト転送プロトコル(HTTP)サーバ、Multimedia Broadcast Multicast Service(MBMS)若しくはEnhanced MBMS(eMBMS)サーバ、及び/又はネットワークアタッチトストレージ(NAS)デバイスを表し得る。ファイルサーバ114は、追加又は代替として、Dynamic Adaptive Streaming over HTTP(DASH)、HTTP Live Streaming(HLS)、Real Time Streaming Protocol(RTSP)、HTTP Dynamic Streamingなどの1つ又は複数のHTTPストリーミングプロトコルを実装し得る。
【0029】
[0043] デスティネーションデバイス116は、インターネット接続を含む任意の標準的なデータ接続を通じて、ファイルサーバ114からの符号化されたビデオデータにアクセスし得る。これは、ワイヤレスチャネル(例えば、Wi-Fi接続)、有線接続(例えば、デジタル加入者線(DSL)、ケーブルモデムなど)、又はファイルサーバ114に記憶されている符号化されたビデオデータにアクセスするのに適した、両方の組合せを含み得る。入力インターフェース122は、ファイルサーバ114からメディアデータを取り出すか若しくは受信するための、上で論じられた様々なプロトコル又はメディアデータを取り出すための他のそのようなプロトコルのうちのいずれか1つ又は複数に従って動作するように構成され得る。
【0030】
[0044] 出力インターフェース108及び入力インターフェース122は、ワイヤレス送信機/受信機、モデム、有線ネットワーキング構成要素(例えば、Ethernet(登録商標)カード)、様々な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デバイスを含んでもよい。
【0031】
[0045] 本開示の技法は、オーバージエアテレビジョンブロードキャスト、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH)などのインターネットストリーミングビデオ送信、データ記憶媒体上で符号化されているデジタルビデオ、データ記憶媒体上に記憶されたデジタルビデオの復号、又は他の適用例などの、様々なマルチメディア適用例のうちのいずれかをサポートするビデオコーディングに適用されてよい。
【0032】
[0046] デスティネーションデバイス116の入力インターフェース122は、コンピュータ可読媒体110(例えば、通信媒体、記憶デバイス112、ファイルサーバ114など)から、符号化されたビデオビットストリームを受信する。符号化されたビデオビットストリームは、ビデオブロック又は他のコード化ユニット(例えば、スライス、ピクチャ、ピクチャグループ、シーケンスなど)の特性及び/又は処理を記述する値を有するシンタックス要素などの、ビデオデコーダ300によっても使用されるビデオエンコーダ200によって規定されるシグナリング情報を含んでよい。表示デバイス118は、復号されたビデオデータの復号されたピクチャをユーザに表示する。表示デバイス118は、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、又は別のタイプの表示デバイスなどの、様々な表示デバイスのいずれかを表し得る。
【0033】
[0047]
図1には示されないが、いくつかの例では、ビデオエンコーダ200及びビデオデコーダ300は各々、オーディオエンコーダ及び/又はオーディオデコーダと統合されてもよく、共通のデータストリームの中のオーディオとビデオの両方を含む多重化されたストリームを扱うために、適切なMUX-DEMUXユニット、又は他のハードウェア及び/若しくはソフトウェアを含んでもよい。
【0034】
[0048] ビデオエンコーダ200及びビデオデコーダ300は各々、1つ若しくは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、又はそれらの任意の組合せなどの、様々な適切なエンコーダ及び/又はデコーダ回路のいずれかとして実装され得る。技法が部分的にソフトウェアで実装されるとき、デバイスは、適切な非一時的コンピュータ可読媒体にソフトウェアのための命令を記憶し、本開示の技法を実行するために1つ又は複数のプロセッサを使用してハードウェアでその命令を実行し得る。ビデオエンコーダ200及びビデオデコーダ300の各々は、1つ又は複数のエンコーダ又はデコーダに含まれてもよく、それらのいずれもが、それぞれのデバイスの中で複合エンコーダ/デコーダ(コーデック)の一部として統合されてもよい。ビデオエンコーダ200及び/又はビデオデコーダ300を含むデバイスは、集積回路、マイクロプロセッサ、及び/又はセルラー電話などのワイヤレス通信デバイスを備えてもよい。
【0035】
[0049] ビデオエンコーダ200及びビデオデコーダ300は、High Efficiency Video Coding(HEVC)とも呼ばれるITU-T H.265などのビデオコーディング規格、又は、マルチビュー及び/若しくはスケーラブルビデオコーディング拡張などのそれらの拡張に従って動作し得る。代替として、ビデオエンコーダ200及びビデオデコーダ300は、Versatile Video Coding(VVC)とも呼ばれるITU-T H.266などの、他のプロプライエタリ規格又は業界規格に従って動作し得る。他の例では、ビデオエンコーダ200及びビデオデコーダ300は、AOMedia Video1(AV1)、AV1の拡張、及び/又はAV1の後継バージョン(例えば、AV2)など、プロプライエタリビデオコーデック/フォーマットに従って動作し得る。他の例では、ビデオエンコーダ200及びビデオデコーダ300は、他のプロプライエタリフォーマット又は業界規格に従って動作し得る。ただし、本開示の技法は、いかなる特定のコーディング規格又はフォーマットにも限定されない。一般に、ビデオエンコーダ200及びビデオデコーダ300は、デコーダ側動きベクトル導出技法を使用する任意のビデオコーディング技法とともに本開示の技法を実行するように構成され得る。
【0036】
[0050] 一般に、ビデオエンコーダ200及びビデオデコーダ300は、ピクチャのブロックベースのコーディングを実施してもよい。「ブロック」という用語は、一般に、処理される(例えば、符号化及び/又は復号プロセスにおいて符号化、復号、又は他の方法で使用される)べきデータを含む構造を指す。例えば、ブロックは、輝度及び/又は色度データのサンプルの2次元行列を含んでよい。一般に、ビデオエンコーダ200及びビデオデコーダ300は、YUV(例えば、Y、Cb、Cr)フォーマットで表されるビデオデータをコーディングし得る。すなわち、ピクチャのサンプルに対する赤、緑、及び青(RGB)のデータをコーディングするのではなく、ビデオエンコーダ200及びビデオデコーダ300は、輝度成分及び色度成分をコーディングしてよく、色度成分は、赤色と青色の両方の色度成分を含み得る。いくつかの例では、ビデオエンコーダ200は、符号化する前に、受信されたRGBフォーマットされたデータをYUV表現に変換し、ビデオデコーダ300は、YUV表現をRGBフォーマットに変換する。代替として、前処理ユニット及び後処理ユニット(図示せず)が、これらの変換を実行してもよい。
【0037】
[0051] 本開示は、一般に、ピクチャのデータを符号化又は復号するプロセスを含むものとして、ピクチャのコーディング(例えば、符号化及び復号)に言及することがある。同様に、本開示は、ブロックのためのデータを符号化又は復号するプロセス、例えば予測及び/又は残差コーディングを含むものとして、ピクチャのブロックのコーディングに言及することがある。符号化されたビデオビットストリームは、一般に、コーディング決定(例えば、コーディングモード)及びブロックへのピクチャの区分を表すシンタックス要素のための一連の値を含む。したがって、ピクチャ又はブロックをコーディングすることへの言及は、一般に、ピクチャ又はブロックを形成するシンタックス要素のためのコーディング値として理解されるべきである。
【0038】
[0052] 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は、イントラモード表示などのイントラ予測情報を含む。
【0039】
[0053] 別の例として、ビデオエンコーダ200及びビデオデコーダ300は、VVCに従って動作するように構成され得る。VVCに従って、(ビデオエンコーダ200などの)ビデオコーダは、ピクチャを複数のコーディングツリーユニット(CTU)に区分する。ビデオエンコーダ200は、4分木2分木(QTBT)構造又はマルチタイプツリー(MTT)構造などの木構造に従って、CTUを区分し得る。QTBT構造は、HEVCのCU、PU、及びTUの間の分離などの、複数の区分タイプの概念を排除する。QTBT構造は、2つのレベル、すなわち、4分木区分に従って区分された第1のレベル、及び2分木区分に従って区分された第2のレベルを含む。QTBT構造のルートノードは、CTUに対応する。2分木のリーフノードは、コーディングユニット(CU)に対応する。
【0040】
[0054] MTT区分構造では、ブロックは、4分木(QT)区分、2分木(BT)区分、及び1つ又は複数のタイプの3分木(TT:triple tree)(3元木(TT:ternary tree)とも呼ばれる)区分を使用して区分され得る。3分木区分又は3元木区分は、ブロックが3個のサブブロックに分割される区分である。いくつかの例では、3分木区分又は3元木区分は、中心を通って元のブロックを分割することなく、ブロックを3個のサブブロックに分割する。MTTにおける区分タイプ(例えば、QT、BT、及びTT)は対称又は非対称であり得る。
【0041】
[0055] AV1コーデックに従って動作するとき、ビデオエンコーダ200及びビデオデコーダ300は、ブロック中のビデオデータをコーディングするように構成され得る。AV1では、処理され得る最大コーディングブロックは、スーパーブロックと呼ばれる。AV1では、スーパーブロックは、128×128ルーマサンプル又は64×64ルーマサンプルのいずれかであり得る。しかしながら、後継ビデオコーディングフォーマット(例えば、AV2)では、スーパーブロックは、異なる(例えば、より大きい)ルーマサンプルサイズによって定義され得る。いくつかの例では、スーパーブロックは、ブロック4分木のトップレベルである。ビデオエンコーダ200は、更に、スーパーブロックをより小さいコーディングブロックに区分し得る。ビデオエンコーダ200は、正方形又は非正方形区分を使用してスーパーブロック及び他のコーディングブロックをより小さいブロックに区分し得る。非矩形ブロックは、N/2×N、N×N/2、N/4×N、及びN×N/4ブロックを含み得る。ビデオエンコーダ200及びビデオデコーダ300は、コーディングブロックの各々に対して別個の予測及び変換プロセスを実施し得る。
【0042】
[0056] AV1はまた、ビデオデータのタイルを定義する。タイルは、他のタイルとは無関係にコーディングされ得るスーパーブロックの矩形アレイである。すなわち、ビデオエンコーダ200及びビデオデコーダ300は、他のタイルからのビデオデータを使用せずにタイル内のコーディングブロックを、それぞれ、符号化及び復号し得る。ただし、ビデオエンコーダ200及びビデオデコーダ300は、タイル境界にわたってフィルタ処理を実施し得る。タイルは、サイズの点で均一であっても不均一であってもよい。タイルベースのコーディングは、エンコーダ及びデコーダ実装形態のために、並列処理及び/又はマルチスレッディングを可能にし得る。
【0043】
[0057] いくつかの例では、ビデオエンコーダ200及びビデオデコーダ300は、輝度成分及び色度成分の各々を表すために単一のQTBT構造又はMTT構造を使用してもよく、他の例では、ビデオエンコーダ200及びビデオデコーダ300は、輝度成分のための1つのQTBT/MTT構造及び両方の色度成分のための別のQTBT/MTT構造(又はそれぞれの色度成分のための2つのQTBT/MTT構造)などの、2つ以上のQTBT又はMTT構造を使用してもよい。
【0044】
[0058] ビデオエンコーダ200及びビデオデコーダ300は、4分木区分、QTBT区分、MTT区分、スーパーブロック区分、又は他の区分構造を使用するように構成され得る。
【0045】
[0059] いくつかの例では、CTUは、ルーマサンプルのコーディングツリーブロック(CTB)、3つのサンプルアレイを有するピクチャのクロマサンプルの2つの対応するCTB、又はモノクロームピクチャ若しくはサンプルをコーディングするために使用される3つの別個の色平面及びシンタックス構造を使用してコーディングされたピクチャのサンプルのCTBを含む。CTBは、CTBへの成分の分割が区分であるような、いくつかの値のNに対するサンプルのN×Nブロックであってよい。成分は、1つのアレイ又は4:2:0、4:2:2、若しくは4:4:4カラーフォーマットでピクチャを構成する3つのアレイ(ルーマ及び2つのクロマ)のうちの1つからの単一のサンプル、あるいはアレイ又はモノクロームフォーマットでピクチャを構成するアレイの単一のサンプルである。いくつかの例では、コーディングブロックは、コーディングブロックへのCTBの分割が区分であるような、いくつかの値のM及びNに対するサンプルのM×Nブロックである。
【0046】
[0060] ブロック(例えば、CTU又はCU)は、ピクチャの中で様々な方法でグループ化され得る。一例として、ブリックは、ピクチャの中の特定のタイル内のCTU行の長方形領域を指すことがある。タイルは、ピクチャの中の特定のタイル列及び特定のタイル行内のCTUの長方形領域であり得る。タイル列は、ピクチャの高さに等しい高さ及び(例えば、ピクチャパラメータセットの中などの)シンタックス要素によって指定される幅を有する、CTUの長方形領域を指す。タイル行は、(例えば、ピクチャパラメータセットの中などの)シンタックス要素によって指定される高さ及びピクチャの幅に等しい幅を有する、CTUの長方形領域を指す。
【0047】
[0061] いくつかの例では、タイルは複数のブリックに区分されてよく、ブリックの各々はタイル内の1つ又は複数のCTU行を含み得る。複数のブリックに区分されないタイルも、ブリックと呼ばれることがある。しかしながら、タイルの真のサブセットであるブリックは、タイルと呼ばれないことがある。ピクチャの中のブリックは、スライスとしても並べられ得る。スライスは、単一のネットワークアブストラクションレイヤ(NAL)ユニットの中に独占的に含まれ得る、ピクチャの整数個のブリックであってよい。いくつかの例では、スライスは、いくつかの完全なタイル、又は、1つのタイルの一連の連続する完全なブリックのみの、いずれかを含む。
【0048】
[0062] 本開示は、垂直次元及び水平次元に関して(CU又は他のビデオブロックなどの)ブロックのサンプル次元を指すために、互換的に「N×N」及び「NバイN(N by 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に等しいとは限らない。
【0049】
[0063] ビデオエンコーダ200は、予測及び/又は残差情報、並びに他の情報を表すCUのためのビデオデータを符号化する。予測情報は、CUのための予測ブロックを形成するためにCUがどのように予測されることになるのかを示す。残差情報は、一般に、符号化する前のCUのサンプルと予測ブロックのサンプルとの間のサンプルごとの差分を表す。
【0050】
[0064] CUを予測するために、ビデオエンコーダ200は、一般に、インター予測又はイントラ予測を通じてCUのための予測ブロックを形成してよい。インター予測とは、一般に、以前にコーディングされたピクチャのデータからCUを予測することを指し、イントラ予測とは、概して、同じピクチャの以前にコーディングされたデータからCUを予測することを指す。インター予測を実施するために、ビデオエンコーダ200は、1つ又は複数の動きベクトルを使用して予測ブロックを生成してもよい。ビデオエンコーダ200は、一般に、例えば、CUと参照ブロックとの間の差分に関してCUによく一致する参照ブロックを識別するために、動き探索を実行し得る。ビデオエンコーダ200は、差分絶対和(SAD)、二乗差分和(SSD)、平均絶対差(MAD)、平均二乗差(MSD)、又は他のそのような差分計算を使用して差分メトリックを計算し、参照ブロックが現在のCUとよく一致するかどうかを決定し得る。いくつかの例では、ビデオエンコーダ200は、単方向予測又は双方向予測を使用して現在CUを予測し得る。
【0051】
[0065] VVCのいくつかの例はまた、インター予測モードと見なされ得るアフィン動き補償モードを提供する。アフィン動き補償モードでは、ビデオエンコーダ200は、ズームイン若しくはズームアウト、回転、観点移動、又は他の不規則な動きタイプなどの、非並進動きを表す2つ以上の動きベクトルを決定し得る。
【0052】
[0066] イントラ予測を実行するために、ビデオエンコーダ200は、イントラ予測モードを選択して予測ブロックを生成してよい。VVCのいくつかの例は、様々な方向性モードを含む67個のイントラ予測モード、並びに平面モード及びDCモードを提供する。一般に、ビデオエンコーダ200は、現在のブロック(例えば、CUのブロック)のサンプルをそれから予測すべき、その現在のブロックに対する隣接サンプルを記述する、イントラ予測モードを選択する。そのようなサンプルは一般に、ビデオエンコーダ200がラスター走査順序で(左から右、上から下)CTU及びCUをコーディングすると仮定して、現在ブロックと同じピクチャにおいて、現在ブロックの上、上及び左、又は左にあり得る。
【0053】
[0067] ビデオエンコーダ200は、現在ブロックのための予測モードを表すデータを符号化する。例えば、インター予測モードの場合、ビデオエンコーダ200は、様々な利用可能なインター予測モードのうちのどれが使用されるのか、並びに対応するモードに対する動き情報を表すデータを符号化してよい。単方向又は双方向インター予測の場合、例えば、ビデオエンコーダ200は、高度動きベクトル予測(AMVP)モード又はマージモードを使用して動きベクトルを符号化してよい。ビデオエンコーダ200は、アフィン動き補償モードのための動きベクトルを符号化するために類似のモードを使用してよい。
【0054】
[0068] AV1は、ビデオデータのコーディングブロックを符号化及び復号するための2つの一般的な技法を含む。2つの一般的な技法は、イントラ予測(例えば、イントラフレーム予測又は空間予測)及びインター予測(例えば、インターフレーム予測又は時間予測)である。AV1のコンテキストでは、イントラ予測モードを使用してビデオデータの現在のフレームのブロックを予測するとき、ビデオエンコーダ200及びビデオデコーダ300は、ビデオデータの他のフレームからのビデオデータを使用しない。ほとんどのイントラ予測モードでは、ビデオエンコーダ200は、現在のフレームのブロックを、現在ブロックにおけるサンプル値と、同じフレームにおける参照サンプルから生成された予測値との差分に基づいて符号化する。ビデオエンコーダ200は、イントラ予測モードに基づいて、参照サンプルから生成された予測値を決定する。
【0055】
[0069] ブロックのイントラ予測又はインター予測などの予測に続いて、ビデオエンコーダ200はブロックのための残差データを計算してよい。残差ブロックなどの残差データは、ブロックと、対応する予測モードを使用して形成されたそのブロックのための予測ブロックとの間の、サンプルごとの差分を表す。ビデオエンコーダ200は、サンプル領域ではなく変換領域において変換データを生成するために、1つ又は複数の変換を残差ブロックに適用してよい。例えば、ビデオエンコーダ200は、離散コサイン変換(DCT)、整数変換、ウェーブレット変換、又は概念的に類似の変換を残差ビデオデータに適用してよい。加えて、ビデオエンコーダ200は、モード依存非分離可能二次変換(MDNSST:mode-dependent non-separable secondary transform)、信号依存変換、カルーネンレーベ変換(KLT)などの二次的な変換を、最初の変換に続いて適用し得る。ビデオエンコーダ200は、1つ又は複数の変換の適用に続いて、変換係数を生成する。
【0056】
[0070] 上述のように、変換係数を生成するための任意の変換に続いて、ビデオエンコーダ200は、変換係数の量子化を実行してよい。量子化とは、一般に、変換係数を表すために使用されるデータの量をできる限り低減するために変換係数が量子化され、更なる圧縮を行うプロセスを指す。量子化プロセスを実行することによって、ビデオエンコーダ200は、変換係数の一部又はすべてに関連するビット深度を低減し得る。例えば、ビデオエンコーダ200は、量子化の間にnビット値をmビット値に切り捨てることがあり、ここで、nはmよりも大きい。いくつかの例では、量子化を実施するために、ビデオエンコーダ200は、量子化されるべき値のビットごとの右シフトを実施し得る。
【0057】
[0071] 量子化に続いて、ビデオエンコーダ200は、変換係数を走査してよく、量子化変換係数を含む2次元行列から1次元ベクトルを生成する。走査は、より高いエネルギー(したがって、より低い周波数)の変換係数をベクトルの前方に置き、より低いエネルギー(したがって、より高い周波数)の変換係数をベクトルの後方に置くように設計され得る。いくつかの例では、ビデオエンコーダ200は、シリアル化ベクトルを生成し、次いで、ベクトルの量子化された変換係数をエントロピー符号化するために、量子化された変換係数を走査するためのあらかじめ定義された走査順序を使用し得る。他の例では、ビデオエンコーダ200は適応走査を実行してよい。量子化変換係数を走査して1次元ベクトルを形成した後、ビデオエンコーダ200は、例えば、コンテキスト適応型バイナリ算術コーディング(CABAC)に従って、1次元ベクトルをエントロピー符号化してよい。ビデオエンコーダ200はまた、ビデオデータを復号する際にビデオデコーダ300によって使用するための符号化されたビデオデータに関連するメタデータを記述するシンタックス要素に対する値をエントロピー符号化し得る。
【0058】
[0072] CABACを実行するために、ビデオエンコーダ200は、コンテキストモデル内のコンテキストを、送信されるべきシンボルに割り当ててよい。コンテキストは、例えば、シンボルの隣接値が0値化されているか否かに関係し得る。確率判断は、シンボルに割り当てられたコンテキストに基づき得る。
【0059】
[0073] ビデオエンコーダ200は更に、ビデオデコーダ300への、ブロックベースのシンタックスデータ、ピクチャベースのシンタックスデータ、及びシーケンスベースのシンタックスデータなどのシンタックスデータを、例えば、ピクチャヘッダ、ブロックヘッダ、スライスヘッダ、又は、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、若しくはビデオパラメータセット(VPS)などの他のシンタックスデータにおいて生成し得る。ビデオデコーダ300は、そのようなシンタックスデータを同様に復号して、対応するビデオデータをどのように復号すべきかを決定してよい。
【0060】
[0074] このようにして、ビデオエンコーダ200は、符号化されたビデオデータ、例えば、ブロック(例えば、CU)へのピクチャの区分並びにブロックのための予測情報及び/又は残差情報を記述するシンタックス要素を含む、ビットストリームを生成し得る。最終的に、ビデオデコーダ300は、ビットストリームを受信してよく、符号化されたビデオデータを復号してよい。
【0061】
[0075] 概して、ビデオデコーダ300は、ビデオエンコーダ200によって実行されるプロセスへの相反プロセスを実行して、ビットストリームの符号化されたビデオデータを復号する。例えば、ビデオデコーダ300は、ビデオエンコーダ200のCABAC符号化プロセスとは相反ではあるが実質的に類似の方法で、CABACを使用してビットストリームのシンタックス要素に対する値を復号してよい。シンタックス要素は、CTUへのピクチャの区分及びQTBT構造などの対応する区分構造による各CTUの区分のための、区分情報を規定して、CTUのCUを規定し得る。シンタックス要素は、ビデオデータのブロック(例えば、CU)に対する予測情報及び残差情報を更に規定し得る。
【0062】
[0076] 残差情報は、例えば、量子化変換係数によって表され得る。ビデオデコーダ300は、ブロックの量子化された変換係数を逆量子化し逆変換して、ブロックのための残差ブロックを再生し得る。ビデオデコーダ300は、シグナリングされた予測モード(イントラ予測又はインター予測)及び関連する予測情報(例えば、インター予測のための動き情報)を使用して、ブロックのための予測ブロックを形成する。ビデオデコーダ300は次いで、予測ブロックと残差ブロックとを(サンプルごとに)組み合わせて、元のブロックを再生し得る。ビデオデコーダ300は、ブロックの境界に沿った視覚アーティファクトを低減するためのデブロッキングプロセスを実行するなどの、追加の処理を実行してよい。
【0063】
[0077] 本開示は全般に、シンタックス要素などの何らかの情報を「シグナリングすること」に言及することがある。「シグナリング」という用語は、一般に、シンタックス要素に対する値、及び/又は符号化されたビデオデータを復号するために使用される他のデータの通信を指すことがある。すなわち、ビデオエンコーダ200は、ビットストリームの中でシンタックス要素に対する値をシグナリングし得る。一般に、シグナリングとは、ビットストリームの中で値を生成することを指す。上で述べられたように、ソースデバイス102は、実質的にリアルタイムで、又は非リアルタイムでビットストリームをデスティネーションデバイス116に転送してもよく、これは、デスティネーションデバイス116により後で取り出すためにシンタックス要素を記憶デバイス112に記憶するときなどに起こることがある。
【0064】
[0078] 本開示の技法は、ビデオコーデックにおけるインター予測に関する。より詳細には、本開示は、双方向マッチングを使用するデコーダ側動きベクトル改良に関するデバイス及び技法について説明する。本開示の技法によれば、以下でより詳細に説明されるように、ビデオデコーダ300は、ビデオデータを記憶するように構成されたメモリと、処理回路とを含み、処理回路は、反復探索プロセスを含むデコーダ側動きベクトル導出プロセスを使用して、ビデオデータのブロックのための動きベクトルを決定し、反復探索プロセスが、前の探索反復を通して最小コストを決定することと、現在の探索反復を通して総最小コストを更新することと、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて、反復探索プロセスを早期に終了することとを含み、動きベクトルを使用してビデオデータのブロックを復号するように構成され得る。
【0065】
[0079] 本開示の技法によれば、以下でより詳細に説明されるように、ビデオエンコーダ200は、ビデオデータを記憶するように構成されたメモリと、処理回路とを含み、処理回路は、反復探索プロセスを含むデコーダ側動きベクトル導出プロセスを使用して、ビデオデータのブロックのための動きベクトルを決定し、反復探索プロセスが、前の探索反復を通して最小コストを決定することと、現在の探索反復を通して総最小コストを更新することと、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて、反復探索プロセスを早期に終了することとを含み、動きベクトルを使用してビデオデータのブロックを符号化するように構成され得る。
【0066】
[0080] 双方向マッチング
[0081] 双方向マッチング(BM)は、ペアの初期動きベクトルMV0及びMV1を改良する技法である。一般に、BMは、ブロックマッチングコストを最小化する改良されたMVであるMV0’及びMV1’を導出するために、MV0及びMV1動きベクトルの周囲を探索することを含む。ブロックマッチングコストは、2つのMVを使用して生成された2つの動き補償予測子間の類似性を測定する(いくつかの典型的な基準は、差分絶対和(SAD)、変換差分絶対和(SATD)、二乗誤差和(SSE)などである)。ブロックマッチングコストはまた、現在のMVペアと初期MVペアとの間のMV差分に基づいて導出される正則化項を含み得る。いくつかの制約はまた、MVD0(MV0’-MV0)とMVD1(MV1’-MV1)との間のMV差分に適用され得る。通常、ビデオコーダは、MVD0及びMVD1が、現在ピクチャと、2つのMVによって指し示される参照ピクチャとの間の時間距離(TD)に比例するものとするという仮定で構成される。しかしながら、いくつかの適用例では、BMプロセスは、MVD0が-MVD1に等しいと仮定して設計され得る。
【0067】
[0082] 汎用ビデオコーディング規格におけるインター予測
[0083] VVCにおけるインター予測されたCUの場合、動きパラメータは、動きベクトル、参照ピクチャインデックス、及び参照ピクチャリスト使用インデックス、並びにVVCの新しいコーディング機能に必要とされる任意の追加情報を含む。動きパラメータは、インター予測サンプル生成のために使用される。動きパラメータは、明示的又は暗黙的な方式でシグナリングされ得る。CUがスキップモードでコーディングされる場合、CUは1つのPUに関連付けられ、有意な残差係数、コーディングされた動きベクトルデルタ、又は参照ピクチャインデックスを有しない。マージモードが指定され、それによって、現在のCUの動きパラメータが、空間的及び時間的候補、並びにVVCに導入された追加のスケジュールを含む、隣接するCUから取得される。マージモードは、スキップモードだけでなく、任意のインター予測されたCUに適用することができる。マージモード以外のいくつかの他の予測モードは、動きパラメータの明示的な送信を含み、動きベクトル(例えば、動きベクトル差分)、各参照ピクチャリストの対応する参照ピクチャインデックス、並びに参照ピクチャリスト使用フラグ及び他の必要な情報は、各CUに対して明示的にシグナリングされる。
【0068】
[0084] HEVCにおけるインターコーディング機能を超えて、VVCは、以下のように列挙されるいくつかの新しい改良されたインター予測符号化ツールを含む。
-拡張マージ予測
-MVDを有するマージモード(MMVD)
-対称MVD(SMVD)シグナリング
-アフィン動き補償予測
-サブブロックベースの時間動きベクトル予測(SbTMVP)
-適応動きベクトル解像度(AMVR)
-動きフィールド記憶:1/16ルーマサンプルMV記憶及び8×8動きフィールド圧縮
-CUレベル重みを用いた双予測(BCW)
-双方向オプティカルフロー(BDOF)
-デコーダ側動きベクトル改良(DMVR)
-幾何学的区分モード(GPM)
-組み合わされたインター及びイントラ予測(CIIP)
【0069】
[0085] 拡張マージ予測
[0086] VVC正規マージモードでは、マージ候補リストは、以下の5つのタイプの候補を順に含んで構築される。
1)空間的隣接CUからの空間的動きベクトル予測子(MVP)
2)コロケートされたCUからの時間MVP
3)先入れ先出し(FIFO)テーブルからの履歴ベースのMVP
4)ペアワイズ平均MVP
5)0動きベクトル(MV)
【0070】
[0087] マージリストのサイズは、シーケンスパラメータセット(SPS)ヘッダ中でシグナリングされる。一例では、マージリストの最大許容サイズは6つの候補である。マージモードにおいてコーディングされるCUごとに、選択されたマージ候補のインデックスは、短縮された単項2値化を使用して符号化される。
【0071】
[0088] マージ候補の各カテゴリの導出プロセスは、このセクションで提供される。HEVCにおいて実行されるように、VVCはまた、あるサイズの領域内のすべてのCUのためのマージ候補リストの並列導出をサポートする。
【0072】
[0089] 空間候補導出
[0090] VVCにおける空間マージ候補の導出は、最初の2つのマージ候補の位置が交換されることを除いて、HEVCにおける導出と同じである。
図2は、空間マージ候補の位置の一例を示す。現在のCU400に対して
図2に示す位置にある候補の中から、最大4つのマージ候補が選択される。導出の順序は、B
0、A
0、B
1、A
1、及びB
2である。位置B
2は、(例えば、CUが別のスライス又はタイルに属するので)位置B
0、A
0、B
1、A
1における1つ以上のCUが利用可能でないとき、又はCUがイントラコーディングされるとき、のみ考慮される。位置A
1の候補が追加された後、残りの候補の追加は、コーディング効率が改善するように同じ動き情報を有する候補がリストから除外されることを保証する冗長検査を受ける。
【0073】
[0091] 時間的候補導出
[0092] この技法では、1つの候補のみがリストに追加される。特に、この時間マージ候補の導出では、コロケートされた参照ピクチャに属するコロケートされたCUに基づいて、スケーリングされた動きベクトルが導出される。
図3は、時間マージ候補のための動きベクトルスケーリングの一例を示す。コロケートされたCUの導出のために使用されるべき参照ピクチャリストは、スライスヘッダ中で明示的にシグナリングされる。時間マージ候補のためのスケーリングされた動きベクトル412は、
図3中の点線によって示されるように取得され、それは、ピクチャ順序カウント(POC)距離tb及びtdを使用してコロケートされたCU416の動きベクトルからスケーリングされる。動きベクトル414は、現在のCU400とコロケートされたCU416との間の動きベクトルである。距離tbは、現在ピクチャの参照ピクチャ404と現在ピクチャ406との間のPOC差分であると定義される。距離tdは、コロケートされたピクチャの参照ピクチャ402とコロケートされたピクチャ408との間のPOC差分であるように定義される。時間マージ候補の参照ピクチャインデックスは、0に等しく設定される。
【0074】
[0093]
図4は、時間マージ候補のための例示的な候補位置を示す。現在のCU400の時間的候補の位置は、
図4に示すように、候補C
0とC
1との間で選択される。位置C
0のCUが利用可能でない場合(例えば、はイントラコーディングされているか、又はCTUの現在の行の外側にある)、位置C
1が使用される。他の場合、時間マージ候補の導出において位置C
0が使用される。
【0075】
[0094] 履歴ベースのマージ候補導出
[0095] 履歴ベースのMVP(HMVP)マージ候補は、空間マージ候補(例えば、空間MVP)及び時間マージ候補(例えば、時間MVP又はTMVP)の後にマージリストに追加される。HMVPでは、以前にコーディングされたブロックの動き情報がテーブルに記憶され、現在のCUのMVPとして使用される。符号化/復号プロセスの間に、複数のHMVP候補を有するテーブルが維持される。新しいCTU行に遭遇すると、テーブルがリセットされる(例えば、空にされる)。非サブブロックインターコーディングされたCUがあるときはいつでも、関連する動き情報が新しいHMVP候補としてテーブルの最終エントリに追加される。
【0076】
[0096] HMVPテーブルサイズSは6に設定され、これは、6つまでのHMVP候補がテーブルに追加され得ることを示す。新しい動き候補をテーブルに挿入するとき、制約付き先入れ先出し(FIFO)ルールを利用し、テーブル内に同一のHMVPがあるか否かを見つけるために、冗長検査が最初に適用される。見つかった場合、同一のHMVPがテーブルから除去され、その後すべてのHMVP候補が前方に移動される。
【0077】
[0097] マージ候補リスト構築プロセスでは、HMVP候補を使用してもよい。テーブル内の最新のいくつかのHMVP候補が順にチェックされ、TMVP候補の後に候補リストに挿入される。HMVP候補の動き情報を空間マージ候補又は時間マージ候補と比較するために、HMVP候補に対して冗長検査が適用される。
【0078】
[0098] 冗長検査動作の数を減らすために、以下の簡略化を導入し得る。
a.マージリスト生成のために使用されるHMVP候補の数は、(N<=4)?M:(8-N)として設定されており、ここで、Nはマージリスト中の既存の候補の数を示し、Mはテーブル中の利用可能なHMVP候補の数を示す。
b.利用可能なマージ候補の総数が最大許容マージ候補数-1に達すると、HMVPからのマージ候補リスト構築プロセスは終了する。
【0079】
[0099] ペアワイズ平均マージ候補導出
[0100] ペアワイズ平均候補は、既存のマージ候補リスト内の候補の事前定義されたペアを平均化することによって生成される。一例では、事前定義されたペアは、{(0、1)、(0、2)、(1、2)、(0、3)、(1、3)、(2、3)}として定義され、ここで、数字は、マージ候補リストへのマージインデックスを示す。平均化された動きベクトルは、各参照リストについて別々に計算される。両方の動きベクトルが1つのリストにおいて利用可能である場合、これらの2つの動きベクトルは、異なる参照ピクチャを指すときでも平均化される。1つの動きベクトルのみが利用可能である場合、その1つを直接使用する。動きベクトルが利用可能でない場合、このリストを無効に保つ。
【0080】
[0101] ペアワイズ平均マージ候補が追加された後、マージリストが一杯になっていない場合、最大マージ候補数に達するまで、リストの最後に0個のMVPが挿入される。
【0081】
[0102] CUレベル重みを用いた双予測(BCW)
[0103] HEVCでは、双予測信号は、2つの異なる参照ピクチャから取得された2つの予測信号を平均化すること、及び/又は2つの異なる動きベクトルを使用することによって生成される。VVCでは、双予測モードは、2つの予測信号の重み付き平均化を可能にするために単純な平均を超えて拡張される。
Pbi-pred=((8-w)*P0+w*P1+4)≫3
【0082】
[0104] 重み付き平均化双予測では5つの重み、w∈{-2,3,4,5,10}が許容される。各双予測CUについて、重みwは、2つの方法のうちの1つで決定される。1)非マージCUについて、重みインデックスは、動きベクトル差分の後にシグナリングされる。2)マージCUの場合、重みインデックスは、マージ候補インデックスに基づいて隣接ブロックから推測される。BCWは、256以上のルーマサンプル(例えば、CU幅×CU高さは256以上である)を有するCUにのみ適用される。低遅延ピクチャの場合、すべての5つの重みが使用される。非低遅延ピクチャの場合、3つの重み(w∈{3,4,5})のみが使用される。
-エンコーダでは、エンコーダの複雑さを著しく増加させることなく重みインデックスを見つけるために高速探索アルゴリズムが適用される。これらのアルゴリズムは以下のように要約される。更なる詳細は、VVC試験モデル(VTM)ソフトウェア及びYu-Chi Suら「CE4-related:Generalized bi-prediction improvements combined from JVET-L0197 and JVET-L0296」、ITU-T SG 16 WP 3及びISO/IEC JTC 1/SC 29/WG 11、第12回会議:マカオ、中国、2018年10月3日から12日のJoint Video Experts Team(JVET)(以下、「JVET-L0646」)から入手可能である。AMVRと組み合わされたとき、現在ピクチャが低遅延ピクチャである場合、等しくない重みは、1ペル及び4ペルの動きベクトル精度について条件付きでチェックされるだけである。
-アフィン動き推定(ME)と組み合わされるとき、アフィンMEは、アフィンモードが現在の最良モードとして選択される場合に限り、等しくない重みに対して実行される。
-双予測における2つの参照ピクチャが同じであるとき、等しくない重みは条件付きでチェックされるだけである。
-現在ピクチャとその参照ピクチャとの間のPOC距離、コーディングQP、及び時間レベルに応じて、ある条件が満たされるとき、等しくない重みは探索されない。
【0083】
[0105] BCW重みインデックスは、1つのコンテキストコーディングされたビンと、それに続くバイパスコーディングビンとを使用してコーディングされる。第1のコンテキストコーディングされたビンは、等しい重みが使用されるか否かを示し、等しくない重みが使用される場合、どの等しくない重みが使用されるかを示すために、バイパスコーディングを使用して追加のビンがシグナリングされる。
【0084】
[0106] 重み付き予測(WP)は、フェージングを用いてビデオコンテンツを効率的にコーディングするためにH.264/AVC及びHEVC標準よってサポートされるコーディングツールである。WPのサポートもVVC標準に追加した。WPは、参照ピクチャリストL0及びL1の各々の中の参照ピクチャごとに、重み付けパラメータ(重み及びオフセット)がシグナリングされることを可能にする。次いで、動き補償中に、対応する参照ピクチャの重みとオフセットとが適用される。WPとBCWとは、異なるタイプのビデオコンテンツために設計される。VVCデコーダ設計を複雑にするWPとBCWとの間の対話を回避するために、CUがWPを使用する場合、BCW重みインデックスはシグナリングされず、wは4であると推測される(例えば、等しい重量が加えられる。)。マージCUの場合、重みインデックスは、マージ候補インデックスに基づいて隣接ブロックから推測される。これは、通常マージモード及び継承アフィンマージモードの両方に適用され得る。構築されたアフィンマージモードの場合、アフィン動き情報は、3ブロックまでの動き情報に基づいて構築される。構築されたアフィンマージモードを使用するCUのためのBCWインデックスは、単に第1の制御点MVのBCWインデックスに等しく設定される。
【0085】
[0107] VVCにおいて、CIIP及びBCWは、CUに対して一緒に適用することができない。CUがCIIPモードでコーディングされるとき、現在のCUのBCWインデックスは2に設定され、例えば、等しい重みである。
【0086】
[0108] VVCにおけるデコーダ側動きベクトル改良
[0109] VVCでは、双予測マージ候補のMVの精度を高めるために、BMベースのデコーダ側動きベクトル改良(DMVR)が適用され得る。BM方法は、参照ピクチャリストL0とリストL1の2つの候補ブロック間の差分絶対和(SAD)を計算する。
図5は、双方向(bilateral)マッチングの一例を示す。
図5に示されるように、初期MVの周りの各MV候補に基づくブロック500と502との間のSADが計算される。SADが最低であるMV候補が、改良されたMVになり、双予測される信号を生成するために使用される。初期MVのSADは、正則化項として働くようにSAD値の1/4だけ減算される。2つの参照ピクチャから現在ピクチャまでの時間的距離(例えば、ピクチャ順序カウント(POC:Picture Order Count)差分)は同じであるものとし、したがって、MVD0はMVD1のちょうど反対符号である。
【0087】
[0110] 改良探索範囲は、初期MVから2つの整数ルーマサンプルである。この探索は、整数サンプルオフセット探索段階及び小数サンプル改良段階を含む。整数サンプルオフセット探索のために25ポイントの全探索が適用される。初期MVペアのSADが最初に計算される。初期MVペアのSADが閾値より小さい場合、DMVRの整数サンプル段階は終了する。それ以外の場合、残りの24点のSADが、ラスター走査順序で計算され確認される。SADが最小の点が、整数サンプルオフセット探索段階の出力として選択される。
【0088】
[0111] 整数サンプル探索に分数サンプル改良が後続する。計算の複雑さを減らすために、SAD比較を使用した追加の探索の代わりに、パラメトリック誤差曲面方程式を使用することによって、小数サンプル改良が導出される。小数サンプル改良は、整数サンプル探索段階の出力に基づいて条件的に呼び出される。整数サンプル探索段階が、第1の反復探索又は第2の反復探索のいずれかにおいて、中心が最小のSADを有する状態で終了すると、小数サンプル改良が更に適用される。
【0089】
[0112] パラメトリック誤差曲面ベースのサブピクセルオフセット推定では、中心位置コスト、及び中心からの隣接する4個の位置におけるコストが、以下の形式の2D放物線誤差曲面方程式を当てはめるために使用される。
E(x,y)=A(x-xmin)2+B(y-ymin)2+C (1)
ただし、(xmin、ymin)は最小コストの小数位置に対応し、Cは最小コスト値に対応する。5つの探索点のコスト値を使用することによって上の式を解くことによって、(xmin,ymin)が、
xmin=(E(-1,0)-E(1,0))/(2(E(-1,0)+E(1,0)-2E(0,0))) (2)
ymin=(E(0,-1)-E(0,1))/(2((E(0,-1)+E(0,1)-2E(0,0))) (3)
【0090】
[0113] として計算される。すべてのコスト値が正であり、最小値がE(0,0)であるので、xmin及びyminの値は、-8と8との間となるように自動的に制約される。これは、VVCにおける1/16ペルのMV精度を有する1/2ペルのオフセットに対応する。計算された小数(xmin,ymin)が整数距離改良MVに加算されて、サブピクセル精度の改良デルタMVを得る。
【0091】
[0114] VVCでは、MVの分解能は1/16ルーマサンプルである。小数位置におけるサンプルは、8タップ補間フィルタを使用して補間される。DMVRでは、探索点は、整数サンプルのオフセットを伴って初期の小数ペルMVを取り囲む。したがって、それらの小数位置のサンプルは、DMVR探索プロセスのために補間される。計算の複雑さを減らすために、DMVRにおける探索プロセスのための小数サンプルを生成するために、双線形補間フィルタが使用される。別の効果は、2サンプルの探索範囲とともに双線形フィルタを使用することによって、DVMRは通常の動き補償プロセスと比較してより多くの参照サンプルにアクセスしないということである。改良されたMVがDMVR探索プロセスを用いて得られた後、最終的な予測を生成するために普通の8タップ補間フィルタが適用される。通常の動き補償プロセスより多くの参照サンプルにアクセスしないようにするために、元のMVに基づく補間プロセスには必要とされないが、改良されたMVに基づく補間プロセスに必要とされるサンプルが、利用可能なサンプルからパディングされる。
【0092】
[0115] CUの幅及び/又は高さが16ルーマサンプルよりも大きいとき、CUは、DMVRプロセスのために、幅及び/又は高さが16ルーマサンプルに等しいサブブロックに更に分割されてもよい。
【0093】
[0116] VVCにおいて、DMVRは、以下のモード及び特徴でコーディングされるCUに適用することができる。
-双予測MVを用いるCUレベルマージモード
-現在ピクチャに対して、1つの参照ピクチャは過去にあり、別の参照ピクチャは未来にある
-2つの参照ピクチャから現在のピクチャまでの距離(例えば、POC差分)が同じである
-両方の参照ピクチャは短期参照ピクチャである。
-CUが64個より多くのルーマサンプルを有する
-CUの高さとCUの幅の両方が8ルーマサンプル以上である
-BCW重みインデックスが等しい重みを示す
-現在ブロックに対してWPが有効化されていない
-現在ブロックにはCIIPモードが使用されない
【0094】
[0117] 双方向オプティカルフロー(BDOF)
[0118] 双方向オプティカルフロー(BDOF)は、4×4のサブブロックレベルにおけるCUの中のルーマサンプルの双予測信号を改良するために使用される。その名称が示すように、BDOFモードはオプティカルフローの概念に基づき、この概念は、オブジェクトの動きが滑らかであると仮定する。4×4の各サブブロックに対して、L0予測サンプルとL1予測サンプルとの間の差分を最小化することによって動き改良(vx,vy)が計算される。動き改良は次いで、4×4サブブロックの中の双予測されるサンプル値を調整するために使用される。以下のステップはBDOFプロセスにおいて適用される。
【0095】
[0119] 第1に、2つの予測信号の水平及び垂直勾配、
【0096】
【0097】
k=0,1は、例えば以下のように、2つの隣接するサンプル間の差分を直接計算することによって計算される。
【0098】
【0099】
であり、
ここで、I(k)(i,j)は、リストkにおける予測信号の座標(i,j)におけるサンプル値であり、k,k=0,1であり、shift1は、shift1が6に等しく設定されるので、ルーマビット深度bitDepthに基づいて計算される。
【0100】
[0120] 次に、勾配S1、S2、S3、S5及びS6の自己相関及び相互相関は、以下のように計算される。
【0101】
【0102】
であり、Ωは4×4サブブロックの周りの6×6ウィンドウであり、shift2の値は4に等しく設定され、shift3の値は1に等しく設定される。
【0103】
[0121] 動き改良(vx,vy)が、次いで、以下のことを使用して相互相関項及び自己相関項を使用して導出される。
【0104】
【0105】
であり、
ただし、th’BIO=1≪4である。
【0106】
【0107】
は、床関数である。
【0108】
[0122] 動き改良及び勾配に基づいて、4×4サブブロック中の各サンプルのために以下の調整が計算される。
【0109】
【0110】
[0123] 最後に、CUのBDOFサンプルが、双予測サンプルを調整することによって次のように計算される。
predBDOF(x,y)=(I(0)(x,y)+I(1)(x,y)+b(x,y)+οoffset)≫shift5 (1-6-6)
であり、
ただし、shift5はMax(3,15-BitDepth)に等しく設定され、変数οoffsetは(1<<(shift5-1))に等しく設定される。
【0111】
[0124] これらの値は、BDOFプロセスにおける乗数が15ビットを超えず、BDOFプロセスにおける中間パラメータの最大ビット幅が32ビット以内に保たれるように選択される。
【0112】
[0125] 勾配値を導出するために、現在のCU境界の外側のリストk(k=0,1)内のいくつかの予測サンプルI
(k)(i,j)を生成し得る。
図6は、双方向オプティカルフローにおいて使用される拡張コーディングユニット領域の一例を示す。
図6に示すように、BDOFは、CU600の境界の周囲の、1つの拡張された行/列を使用する。境界外の予測サンプルを生成する計算複雑性を制御するために、拡張されたエリア(白い位置)中の予測サンプルは、補間なしに(座標上でfloor()演算を使用することによって)近くの整数位置の参照サンプルを直接取ることによって生成され、CU(グレー位置)内の予測サンプルを生成するために通常の8タップ動き補償補間フィルタが使用される。これらの拡張されたサンプル値は、勾配計算にのみ使用される。BDOFプロセスの残りのステップでは、CU境界外のサンプル及び勾配値が必要とされる場合、それらは、それらの最近傍からパディングされる(例えば、繰り返される)。
【0113】
[0126] BDOFは、4×4サブブロックレベルにおけるCUの双予測信号を改良するために使用される。次の条件のすべてが満たされる場合、BDOFがCUに適用される。
-「真の」双予測モードを使用してCUがコーディングされ、例えば、2つの参照ピクチャのうちの一方が表示順序で現在ピクチャの前にあり、他方が表示順序で現在ピクチャの後にある
-CUが、アフィンモード又はSbTMVPマージモードを使用してコーディングされない
-CUが64個より多くのルーマサンプルを有する
-CUの高さとCUの幅の両方が8ルーマサンプル以上である
-BCW重みインデックスが等しい重みを示す
-現在のCUに対してWPが有効化されない
-現在のCUにはCIIPモードが使用されない
【0114】
[0127] マルチパスデコーダ側動き改良
[0128] JVET-V会議では、強化された圧縮モデル(ECM、https://vcgit.hhi.fraunhofer.de/ecm/VVCSoftware_VTM/-/tree/ECM)は、VVCを超える圧縮技法を研究するために確立された。ECMでは、「Compression efficiency beyond VVC」(Yao-Jen Changら、ITU-T SG 16 WP 3及びISO/IEC JTC 1/SC 29/WG 11、第21回会議のJoint Video Experts Team(JVET)、2021年1月6日から15日、遠隔会議による(以下、「JVET_U0100」))に記載されているマルチパスデコーダ側動き改良技法が、VVCにおけるDMVRを置き換えるために採用された。第1のパスでは、BM(VVCにおけるDMVRのものと同様)がコーディングブロックに適用される。第2のパスでは、BMは、コーディングブロック内の各16×16サブブロックに適用され、第1のパス改良されたMVが初期MVとして適用される。第3のパスでは、各8×8サブブロック中のMVが、双方向オプティカルフロー(BDOF)を適用することによって更に改良される。
【0115】
[0129] 第1のパス-ブロックベースの双方向マッチングMV改良
[0130] 第1のパスでは、BMをコーディングブロックに適用することによって、改良されたMVが導出される。デコーダ側動きベクトル改良(DMVR)と同様に、双予測動作では、改良されたMVが、参照ピクチャリストL0及びL1中の2つの初期MV(MV0及びMV1)の周りで探索される。改良されたMV(MV0_pass1及びMV1_pass1)は、L0及びL1内の2つの参照ブロック間の最小双方向マッチングコストに基づいて、初期MVの周囲で導出される。
【0116】
[0131] BMは、整数サンプル精度intDeltaMVを導出するためにローカル探索を実行することを含む。ローカル探索は、3×3の正方形探索パターンを適用して、探索範囲[-sHor,sHor]を水平方向に、[-sVer,sVer]を垂直方向にループし、sHor及びsVerの値はブロックの大きさによって決定され、sHor及びsVerの最大値は8である。
【0117】
[0132] 双方向マッチングコストは、bilCost=mvDistanceCost+sadCostとして計算される。ブロックサイズcbW*cbHが64より大きいとき、平均除去SAD(MRSAD)コスト関数が、参照ブロック間の歪みのDC効果を除去するために適用される。3×3の探索パターンの中心点のbilCostが最小コストを有する場合、intDeltaMVローカル探索は終了する。そうでない場合、現在の最小コスト探索点は、3×3探索パターンの新しい中心点になり、ビデオコーダは、探索範囲の最後に達するまで最小コストを探索し続ける。
【0118】
[0133] 既存の小数サンプル改良は、最終デルタMVを導出するために更に適用される。次に、第1のパス後の改良されたMVは、次のように導出される。
-MV0_pass1=MV0+deltaMV
-MV1_pass1=MV1-deltaMV
【0119】
[0134] 第2のパス-サブブロックベースの双方向マッチングMV改良
[0135] 第2のパスでは、BMを16×16グリッドサブブロックに適用することによって、改良されたMVが導出される。サブブロックごとに、参照ピクチャリストL0及びL1において、第1のパスで取得された2つのMV(MV0_pass1及びMV1_pass1)の周りで改良されたMVが探索される。改良されたMV(MV0_pass2(sbIdx2)及びMV1_pass2(sbIdx2))(ここで、sbIdx2=0,...,N-1はサブブロックのインデックスである)は、L0及びL1内の2つの参照サブブロック間の最小双方向マッチングコストに基づいて導出される。
【0120】
[0136] サブブロックごとに、BMは、整数サンプル精度intDeltaMVを導出するために全探索を実行することを含む。全探索は、水平方向に[-sHor,sHor]、垂直方向に[-sVer,sVer]の探索範囲を有し、sHor及びsVerの値はブロックの大きさによって決定され、sHor及びsVerの最大値は8である。
【0121】
[0137] 双方向マッチングコストは、bilCost=satdCost
*costFactorとして、2つの参照サブブロック間の変換差分絶対和(SATD)コストにコスト係数を適用することによって計算される。
図7は、マルチパスデコーダ側動き改良のための例示的なダイヤモンド探索領域700を示す。探索領域(2
*sHor+1)
*(2
*sVer+1)は、
図7に示されるように、5つのダイヤモンド形の探索領域に分割される。各探索領域には、各探索点と開始MVとの間の距離(intDeltaMV)によって決定されるcostFactorが割り当てられる。各ダイヤモンド領域は、探索領域の中心から始まる順序で処理される。各領域において、探索点は、領域の左上隅から開始して右下隅に進むラスター走査順序で処理される。現在の探索領域内の最小bilCostがsbW
*sbHに等しい閾値未満であるとき、int-pel全探索は終了される。そうでない場合には、すべての探索点が調べられるまで、次の探索領域に対してint-pel全探索が継続される。
【0122】
[0138] 既存のVVC DMVR小数サンプル改良は、最終deltaMV(sbIdx2)を導出するために更に適用される。次に、第2のパスにおける改良されたMVは、次のように導出される。
-MV0_pass2(sbIdx2)=MV0_pass1+deltaMV(sbIdx2)
-MV1_pass2(sbIdx2)=MV1_pass1-deltaMV(sbIdx2)
【0123】
[0139] 第3のパス-サブブロックベースの双方向オプティカルフローMV改良
[0140] 第3のパスでは、BDOFを8×8グリッドサブブロックに適用することによって、改良されたMVが導出される。各8×8サブブロックに対して、BDOF改良が適用され、第2のパスの親サブブロックの改良されたMVから開始して、クリッピングなしで、スケーリングされたVx及びVy値を導出する。導出されたbioMv(Vx,Vy)は、1/16サンプル精度に丸められ、-32と32との間でクリッピングされる。
【0124】
[0141] 第3のパスにおける改良されたMV(MV0_pass3(sbIdx3)及びMV1_pass3(sbIdx3))は、以下のように導出される。
・MV0_pass3(sbIdx3)=MV0_pass2(sbIdx2)+bioMv
・MV1_pass3(sbIdx3)=MV0_pass2(sbIdx2)-bioMv
【0125】
マルチパスDMVRの更なる詳細は、2020年12月22日に出願された同時係属中の米国仮特許出願第63/129221号に見出すことができる。
【0126】
[0142] テンプレートマッチング
[0143] テンプレートマッチング(TM)は、現在ピクチャ内のテンプレート(例えば、現在のCUの上及び/又は左の隣接ブロック)と参照ピクチャ内のブロック(例えば、テンプレートと同じサイズ)との間の最も近いマッチングを見つけることによって現在のCUの動き情報を改良するデコーダ側MV導出方法である。
図8は、初期動きベクトルの周辺の探索領域に対して実行されるテンプレートマッチングの例を示す。
図8に示されているように、より良いMVは、参照フレーム808中の[-8,+8]ペル探索範囲806内の現在CU802の初期動き800の周りで探索されるべきである。初期マッチング誤差に基づいてAMVP候補が選択されると、AMVP MVPはテンプレートマッチングによって改良される。シグナリングされたマージインデックスによって示されるマージ候補では、L0及びL1に対応するそのマージされたMVは、テンプレートマッチングによって独立して改良され、次いで、より良好な動きベクトルを初期動きベクトルとして用いて、精度の低い動きベクトルが再び更に改良される(例えば、前の動きベクトル)。
【0127】
[0144] コスト関数:動きベクトルが小数サンプル位置を指すとき、動き補償補間が使用され得る。複雑度を低減するために、テンプレートマッチングのために通常の8タップDCT-IF補間の代わりに双線形補間が使用されて、参照ピクチャ上のテンプレートを生成する。テンプレートマッチングのマッチングコストCは次のように計算される。
C=SAD+w*(|MVx-MVsx|+|MVy-MVsy|),
ここで、wは、0、1、2、3又は4などの整数に設定することができる重み係数であり、MV及び複数のMVは、それぞれ、現在試験されているMV及び初期MV(例えば、AMVPモードにおけるMVP候補、又はマージモードにおけるマージされた動き)を示す。テンプレートマッチングのマッチングコストとして、SADが使用される。
【0128】
[0145] TMが使用される場合、動き情報は、ルーマサンプルのみを使用することによって改良される。導出された動き情報は、動き補償インター予測のためのルーマ及びクロマの両方に使用される。MVが決定された後、ルーマ成分用の8タップ補間フィルタ及びクロマ成分用の4タップ補間フィルタを使用して最終的な動き補償が実行される。
【0129】
[0146] 探索方法:MV改良は、テンプレートマッチングコスト及び階層構造の基準を用いたパターンベースのMV探索である。MV改良に対して、ダイヤモンド探索及び交差探索という、2つの探索パターンがサポートされる。階層構造は、粗いMVD精度(例えば、1/4ペル)において始まり、より細かい精度(例えば、1/8ペル)において終わる、MVを改良するための反復プロセスを指定する。MVは、ダイヤモンドパターンを用いて1/4ルーマサンプルMVD精度で直接探索され、その後、クロスパターンを用いて1/4ルーマサンプルMVD精度で探索される。この後に、クロスパターンを有する1/8ルーマサンプルMVD改良が続く。MV改良の探索範囲は、初期MVの周りの(-8,+8)ルーマサンプルに等しく設定される。現在ブロックが双予測を使用してコーディングされる場合、両方のMVは独立して改良され、次いで、その最良のもの(マッチングコストに関して)が先行MVとして設定され、BCW重み値で他のMVを更に改良する。
【0130】
[0147] 具体的には、「Description of SDR,HDR and 360°video coding technology proposal by Qualcomm and Technicolor-low and high complexity versions」(Y-W Chenら、ITU-T SG 16 WP 3及びISO/IEC JTC 1/SC 29/WG 11のJoint Video Experts Team(JVET)、第10回会議:サンディエゴ、米国、2018年4月10日~20日(以下、「JVET-J0021」とする))において提案されたテンプレートマッチングであり、JVET-U0100は、いくつかの例示的な提案においてAMVPモード及びマージモードに適用される。
【0131】
[0148] 正規マージ候補リストは、以下の候補の順序で構築される。
・空間的隣接CUからの空間MVP:最初の4つの利用可能な候補が、上隣接CU(A)、左隣接CU(L)、右上隣接CU(AR)、左下隣接CU(LB)、左上隣接CU(LA)の順序の中から選択される。
・コロケートされたCUからの時間MVP:1つの候補のみが追加される。
・履歴ベースのMVP:以前にコーディングされたブロックの動き情報がテーブルに記憶され、現在のCUのMVPとして使用される。
・ペアワイズ平均MVP:ペアワイズ平均候補は、既存の正規マージ候補リスト内の候補の事前定義されたペアを平均化することによって生成される。
・0MV。
【0132】
[0149] マージモードを使用してコーディングされたブロックにTMが適用されるとき、テンプレートマッチングに基づいて正規マージ候補のMVPを改良することによって、別個のTMマージ候補リストが構築される。
【0133】
[0150] デコーダ側動き探索プロセスでは、双方向マッチングベースのDMVR又はテンプレートマッチングのいずれかについて、コスト基準が定義され、事前定義された探索領域内の候補位置についてのコストを計算するために使用され得る。最小コストを有する候補位置に関連付けられた動き情報は、反復探索プロセスの出力である。探索プロセスは、複数回の反復で実行され得る。各反復において、探索領域内の候補位置のサブセットを評価し得る。各サブセットについて候補位置を選択するための特定のパターンが適用され得る。例えば、正方形探索、ダイヤモンド探索、及び
図7のダイヤモンド領域である。一般に、初期位置と候補位置との間の距離は、各反復の後に増加する。言い換えれば、現在の探索反復における候補位置は、前の反復の位置よりも初期点から更に離れていてもよい。
【0134】
[0151] 最小コストを追跡するために変数minCostを定義し得る。変数minCostは、反復探索プロセス中に計算される最小値を表し得る。本開示では、minCostを、これまでに決定された反復探索プロセスの最小コストと呼ぶことがある。いくつかの早期終了方法が、探索プロセスを終了するために適用され得る。例えば、minCostが閾値未満である場合にプロセスが終了されるか、又は最小コストを有する最良の候補位置が1つのサブセットから次のサブセットに(例えば、1つの反復から次の反復に)変更されなかった場合に、プロセスが終了される。
【0135】
[0152] 本開示は、探索プロセスの計算複雑性を低減するための、デコーダ側動きベクトル導出技法のための探索プロセスの早期終了のための技法について説明する。本開示の技法は、探索プロセスを伴うデコーダ側動きベクトル導出技法のいずれかとともに使用され得る。一例では、本開示の技法は、DMVRの双方向マッチング又はテンプレートマッチングのいずれかにおいて適用され得る。他の例では、本開示の技法はまた、例えば、上記で説明したように、他の早期終了方法とともに使用され得る。
【0136】
[0153] 本開示の一例では、ビデオエンコーダ200及びビデオデコーダ300は、前の探索反復における最小コストを追跡するために、第2の変数minCostPrevの値を計算し得る。一例では、反復の最大数は、この例が適用される場合、2よりも大きいものとする。一例では、ビデオエンコーダ200及びビデオデコーダ300は、minCostPrevの値を所定の値、例えば、0で初期化し得る。
【0137】
[0154] ビデオデコーダ300は、前の探索反復を通した最小コストと、現在の探索反復を通した総最小コストとを決定し得る。いくつかの例では、前の探索反復は、現在の探索反復の直前にあり得る。例えば、現在の探索反復が4番目の探索反復である場合、前の探索反復は3番目の探索反復になる。この例では、前の探索反復を通した最小コストは、3番目の探索反復を通した最小コストであり、現在の探索反復を通した総最小コストは、4番目の探索反復を通した最小コストである。
【0138】
[0155] ビデオエンコーダ200は、前の探索反復を通した最小コストと、現在の探索反復を通した総最小コストとを決定し得る。いくつかの例では、前の探索反復は、現在の探索反復の直前にあり得る。例えば、現在の探索反復が4番目の探索反復である場合、前の探索反復は3番目の探索反復になる。この例では、前の探索反復を通した最小コストは、3番目の探索反復を通した最小コストであり、現在の探索反復を通した総最小コストは、4番目の探索反復を通した最小コストである。
【0139】
[0156] 別の例では、前の探索反復自体の最小コストが、前の探索反復を通した最小コストの代わりに使用され得る。例えば、現在の探索反復が4番目の探索反復である場合、前の探索反復は3番目の探索反復になる。この例では、3番目の探索反復自体の最小コストが、3番目の探索反復を通した最小コストの代わりに使用され得る。
【0140】
[0157] いくつかの例では、デコーダ側動きベクトル導出プロセスを使用して、ビデオデータのブロックのための動きベクトルを決定するために、ビデオデコーダ300及び/又はビデオエンコーダ200は、本開示で説明する技法に従って反復探索プロセスを早期に終了するように構成され得る。
【0141】
[0158] 開示される終了技法では、ビデオエンコーダ200及びビデオデコーダ300は、反復探索プロセスが終了されるか否かの決定を実行するためにminCost及びminCostPrevを考慮するように構成され得る。一例では、ビデオエンコーダ200及びビデオデコーダ300は、minCostPrev-minCost又はabs(minCostPrev-minCost)の差分を閾値と比較するように構成され、差分が閾値よりも小さい場合、ビデオエンコーダ200及びビデオデコーダ300は反復探索プロセスを終了する。ビデオエンコーダ200及びビデオデコーダ300が反復探索プロセスを終了することを決定すると、ビデオエンコーダ200及びビデオデコーダ300は、探索プロセスにおけるその時点までの最小コストを有する動きベクトルを返すように構成され得る。
【0142】
[0159] したがって、一例では、ビデオエンコーダ200及びビデオデコーダ300は、差分閾値に対する、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの差分に基づいて、反復探索プロセスを早期に終了するように構成され得る。例えば、現在の探索反復が4番目の探索反復であり、前の探索反復が3番目の探索反復である場合、4番目の探索反復を通した最小コストと3番目の探索反復を通した最小コストとの間の差分が差分閾値未満である場合、反復探索プロセスは終了する。いくつかの例では、差分閾値は、固定され得るか、又はビデオデータのブロックのサイズに基づき得る。いくつかの例では、閾値は、ビデオデータのブロックのエリアのS倍に等しく設定され得、ここで、Sは、ビットストリーム中で事前定義又はシグナリングされ得るスケーリングファクタである。
【0143】
[0160] いくつかの例では、ビデオエンコーダ200及びビデオデコーダ300は、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの間の差分の絶対値を差分閾値と比較することに基づいて、反復探索プロセスを早期に終了するように構成され得る。
【0144】
[0161] 他の例では、ビデオエンコーダ200及びビデオデコーダ300は、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの間の差分が差分閾値を下回るとき、反復探索プロセスを早期に終了することによって、歪みを実質的に増加させることなく計算複雑性を低減し得る。
【0145】
[0162] したがって、本開示の一例では、ビデオデコーダ300は、反復探索プロセスを含むデコーダ側動きベクトル導出プロセスを使用して、ビデオデータのブロックのための動きベクトルを決定するように構成され得、反復探索プロセスは、前の探索反復の最小コストを計算することと、前の探索反復を通した最小コストに基づいて反復探索プロセスを早期に終了することとを含む。ビデオデコーダ300は、次いで、動きベクトルを使用してビデオデータのブロックをコーディングし得る。更なる例では、ビデオデコーダ300は、反復探索プロセスについて決定された最小コストを更新し得る。前の探索反復を通した最小コストに基づいて反復探索プロセスを早期に終了するために、ビデオデコーダ300は、反復探索プロセスについて決定された最小コストに対する前の探索反復を通したコストの差分又は比を更に計算し、閾値に対する差分又は比に基づいて反復探索プロセスを早期に終了させ得る。
【0146】
[0163] 一例では、開示された技法は、以下のように説明することができる。ビデオエンコーダ200及びビデオデコーダ300は、例えば、同じ値を有するように、minCostPrev及びminCostを初期化し得る。別の例では、初期化値は、前のプロセスから入力され得るか、又は事前定義された大きい値に等しく設定され得る。反復探索プロセスが終了せず、最大反復に達しない間、ビデオエンコーダ200及びビデオデコーダ300は、以下の反復を実行し得る。
1)minCostPrevをminCostに等しく設定する。
2)候補位置の現在のサブセットを評価し、minCostを決定(例えば、更新)する。
3)minCost及びminCostPrevの両方の値に基づいて終了するか否かを決定する。
【0147】
[0164] ステップ2)の後に、いくつかの他の早期終了技法を適用してもよいことに留意されたい。例えば、他の早期終了技法がステップ3)の前又は後に適用されてもよい。
【0148】
[0165] 一例では、上記のステップ3)は、minCostとminCostPrevとの間の差分を評価することを含む。ビデオエンコーダ200及びビデオデコーダ300は、minCostPrev-minCostが閾値よりも小さい場合、探索プロセスを終了することを決定し得る。
【0149】
[0166] 上記の例では、閾値は、事前定義された値であるか、固定されるか、又はビットストリーム中でシグナリングされ得る。別の例では、閾値は、入力ブロックのサイズに基づいて適応的であり得る。例えば、閾値は、入力ブロックの面積のS倍に等しく設定され得、ここで、Sはスケーリング係数であり、事前定義されるか、又はビットストリーム中でシグナリングされ得る。
【0150】
[0167] 別の例では、上記で使用された2つのコストの差分は、コスト比で置き換えられ得る。例えば、ステップ3)は、minCostとminCostPrevとの間の関係を評価することによって実行される。値Rは、(minCostPrev-minCost)/minCostPrevに等しく設定される。ビデオエンコーダ200及びビデオデコーダ300は、Rが事前定義された閾値よりも小さい場合、探索プロセスを終了することを決定し得る。
【0151】
[0168] したがって、一例では、ビデオエンコーダ200及びビデオデコーダ300は、比閾値に対する、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比に基づいて、反復探索プロセスを早期に終了するように構成され得る反復探索プロセスを早期に終了し得る。例えば、現在の探索反復が4番目の探索反復であり、前の探索反復が3番目の探索反復である場合、3番目の探索反復を通した最小コストに対する4番目の探索反復を通した最小コストの比が比閾値を下回る場合、反復探索プロセスは終了される。いくつかの例では、比閾値は、固定され得るか、又はビデオデータのブロックのサイズに基づき得る。
【0152】
[0169] いくつかの例では、前の探索反復を通した最小コストに対する現在の探索反復を通した総最小コストの比が比閾値を下回るとき、早期に探索プロセスを終了することは、歪みを実質的に増加させることなく計算複雑性を低減し得る。
【0153】
[0170] いくつかの例では、反復探索プロセスは、比閾値に対する、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの差分に対する前の探索反復を通した最小コストの比に基づいて早期に終了され得る。いくつかの例では、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの間の差分の絶対値が、比において使用され得る。例えば、現在の探索反復が4番目の探索反復であり、前の探索反復が3番目の探索反復である場合、4番目の探索反復を通した最小コストと3番目の探索反復を通した最小コストとの間の差分が決定され、3番目の探索反復を通した最小コストに対する差分の比が決定される。いくつかの例では、比が比閾値を下回る場合、反復探索プロセスは終了される。いくつかの例では、比閾値は、固定され得るか、又はビデオデータのブロックのサイズに基づき得る。
【0154】
[0171] いくつかの例では、反復探索プロセスが早期に終了せず、別の探索反復が実行される場合、現在の探索反復を通した最小コストは、次の探索反復のための前の探索反復を通した最小コストになる。例えば、現在の探索反復が4番目の探索反復であり、前の探索反復が3番目の探索反復であり、反復探索プロセスが早期に終了しない場合、5番目の探索反復が実行される。5番目の探索反復では、4番目の探索反復を通した最小コストが、前の探索反復を通した最小コストになり、現在の探索反復を通した総最小コストが、5番目の探索反復を通した最小コストに更新される。したがって、現在の探索反復を通した総最小コスト及び前の探索反復を通した最小コストは、探索反復ごとに更新され得る。
【0155】
[0172] 別の例では、ステップ3)は、前の反復の数がある事前定義された閾値を超える場合にのみ適用される。
【0156】
[0173] 別の例では、currCostとして示される現在の探索位置のコストをminCost及びminCostPrevとともに更に考慮して、反復探索プロセスを終了するか否かの決定を実行することができる。例えば、abs(currCost-minCostPrev)は、例えば閾値と比較することによって評価し得、現在のコストcurrCostがminCostPrevとあまり異ならない場合、探索を終了し得る。別の例では、abs(minCostPrev-minCost)が閾値と比較される追加の条件が追加され、閾値未満であり、abs(currCost-minCostPrev)が別の閾値未満である場合、反復探索プロセスが終了される。
【0157】
[0174] 例えば、現在の探索反復が4番目の探索反復であり、前の探索反復が3番目の探索反復である場合、現在の探索位置のコストは4番目の探索反復自体のコストであり、前の探索反復を通した最小コストは3番目の探索反復を通した最小コストであり、現在の探索反復を通した総最小コストは4番目の探索反復を通した最小コストである。
【0158】
[0175] いくつかの例では、ビデオエンコーダ200及びビデオデコーダ300は、現在の探索位置のコストと前の探索反復を通した最小コストとの間の差分を差分閾値と比較するように構成され得る。いくつかの例では、ビデオエンコーダ200及びビデオデコーダ300は、現在の探索位置のコストと前の探索反復を通した最小コストとの間の差分が差分閾値を下回る場合、反復探索プロセスを早期に終了するように構成され得る。
【0159】
[0176] いくつかの例では、ビデオエンコーダ200及びビデオデコーダ300は、上記で説明したように、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの差分を決定し、その差分を差分閾値と比較するように構成され得る。加えて、ビデオエンコーダ200及びビデオデコーダ300は、現在の探索位置のコストと前の探索反復を通した最小コストとの間の差分を差分閾値と比較するように構成され得る。いくつかの例では、ビデオエンコーダ200及びビデオデコーダ300は、両方の差分がそれぞれの差分閾値を下回るとき、反復探索プロセスを早期に終了するように構成され得る。いくつかの例では、それぞれの差分閾値は等しくてもよい。いくつかの例では、それぞれの差分閾値は、異なり得、及び/又は独立し得る。
【0160】
[0177] いくつかの例では、それぞれの差分閾値は、固定され得るか、又はビデオデータのブロックのサイズに基づき得る。いくつかの例では、それぞれの差分閾値は、ビデオデータのブロックの面積のS倍に等しくなるようにそれぞれ設定され得、ここで、Sは、事前定義され得るか又はビットストリーム中でシグナリングされ得るスケーリング係数である。
【0161】
[0178] いくつかの例では、上記で説明した例のうちの1つ以上に従って、反復探索プロセスを早期に終了するビデオエンコーダ200及びビデオデコーダ300は、歪みを実質的に増加させることなく計算複雑性を低減し得る。
【0162】
[0179]
図9は、本開示の技法を実行し得る例示的なビデオエンコーダ200を示すブロック図である。
図9は、説明のために提供され、本開示において広く例示され説明されるような技法の限定と見なされるべきでない。説明のために、本開示は、VVC(開発中のITU-T H.266)及びHEVC(ITU-T H.265)の技法によるビデオエンコーダ200を説明する。しかしながら、本開示の技法は、他のビデオコーディング規格、並びに、AV1及びAV1ビデオコーディングフォーマットの後継などのビデオコーディングフォーマットに構成された、ビデオ符号化デバイスによって実施され得る。
【0163】
[0180]
図9の例では、ビデオエンコーダ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のユニットは、ハードウェア回路の一部としての1つ又は複数の回路若しくは論理要素として、又はプロセッサ、ASIC、若しくはFPGAの一部として実装され得る。その上、ビデオエンコーダ200は、これら及び他の機能を実行するための追加又は代替のプロセッサ又は処理回路を含んでよい。
【0164】
[0181] ビデオデータメモリ230は、ビデオエンコーダ200のコンポーネントによって符号化されるべきビデオデータを記憶し得る。ビデオエンコーダ200は、ビデオデータメモリ230に記憶されたビデオデータを、例えば、ビデオソース104(
図1)から受信し得る。DPB218は、ビデオエンコーダ200による後続のビデオデータの予測における使用のために参照ビデオデータを記憶する、参照ピクチャメモリとして作用してよい。ビデオデータメモリ230及びDPB218は、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、又は他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ230及びDPB218は、同じメモリデバイス又は別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ230は、示されるように、ビデオエンコーダ200の他のコンポーネントとともにオンチップであってもよく、又はそれらのコンポーネントに対してオフチップであってもよい。
【0165】
[0182] 本開示では、ビデオデータメモリ230への言及は、そのように特に記載されない限り、ビデオエンコーダ200の内部のメモリに、又はそのように特に記載されない限り、ビデオエンコーダ200の外部のメモリに限定されるものとして、解釈されるべきではない。むしろ、ビデオデータメモリ230への言及は、ビデオエンコーダ200が符号化のために受信するビデオデータ(例えば、符号化されるべき現在ブロックに対するビデオデータ)を記憶する参照メモリとして理解されるべきである。
図1のメモリ106はまた、ビデオエンコーダ200の様々なユニットからの出力の一時的な記憶域を提供し得る。
【0166】
[0183]
図9の様々なユニットは、ビデオエンコーダ200によって実行される動作を理解する助けとなるために示される。ユニットは、固定機能回路、プログラマブル回路、又はこれらの組合せとして実装され得る。固定機能回路は、特定の機能を提供する回路を指し、実行され得る動作があらかじめ決められている。プログラマブル回路は、様々なタスクを実行するようにプログラムされ得る回路を指し、実行され得る動作においてフレキシブルな機能性を提供する。例えば、プログラマブル回路は、ソフトウェア又はファームウェアの命令によって定義される方式で、プログラマブル回路を動作させるソフトウェア又はファームウェアを実行し得る。固定機能回路は(例えば、パラメータを受信するか又はパラメータを出力するための)ソフトウェア命令を実行し得るが、固定機能回路が実行する動作のタイプは一般に不変である。いくつかの例では、ユニットのうちの1つ又は複数は、異なる回路ブロック(固定機能又はプログラマブル)であってもよく、いくつかの例では、ユニットのうちの1つ又は複数は集積回路であってもよい。
【0167】
[0184] ビデオエンコーダ200は、算術論理ユニット(ALU)、基本機能ユニット(EFU)、デジタル回路、アナログ回路、及び/又は、プログラム可能回路から形成されるプログラマブルコアを含み得る。ビデオエンコーダ200の動作がプログラマブル回路によって実行されるソフトウェアを使用して実施される例では、メモリ106(
図1)が、ビデオエンコーダ200が受信及び実行するソフトウェアの命令(例えばオブジェクトコード)を記憶してよく、又はビデオエンコーダ200内の別のメモリ(図示せず)が、そのような命令を記憶してよい。
【0168】
[0185] ビデオデータメモリ230は、受信されたビデオデータを記憶するように構成される。ビデオエンコーダ200は、ビデオデータメモリ230からビデオデータのピクチャを取り出してよく、ビデオデータを残差生成ユニット204及びモード選択ユニット202に提供してよい。ビデオデータメモリ230中のビデオデータは、符号化されるべき未加工のビデオデータであってもよい。
【0169】
[0186] モード選択ユニット202は、動き推定ユニット222、動き補償ユニット224、及びイントラ予測ユニット226を含む。モード選択ユニット202は、他の予測モードに従ってビデオ予測を実行するための追加の機能ユニットを含んでよい。例として、モード選択ユニット202は、パレットユニット、(動き推定ユニット222及び/又は動き補償ユニット224の一部であり得る)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニットなどを含んでよい。
【0170】
[0187] モード選択ユニット202は一般に、複数の符号化パスを協調させて、符号化パラメータの組合せと、そのような組合せに対して得られるレート歪み値を試験する。符号化パラメータは、CUへのCTUの区分、CUのための予測モード、CUの残差データのための変換タイプ、CUの残差データのための量子化パラメータなどを含んでよい。モード選択ユニット202は最終的に、他の試験された組合せより良いレート歪み値を有する符号化パラメータの組合せを選択し得る。
【0171】
[0188] ビデオエンコーダ200は、ビデオデータメモリ230から取り出されたピクチャを一連のCTUに区分してよく、1つ又は複数のCTUをスライス内にカプセル化してよい。モード選択ユニット202は、MTT構造、QTBT構造、スーパーブロック構造、又は上記で説明された4分木構造など、ツリー構造に従ってピクチャのCTUを区分し得る。上記で説明したように、ビデオエンコーダ200は、ツリー構造に従ってCTUを区分することから1つ又は複数のCUを形成し得る。そのようなCUは、一般に、「ビデオブロック」又は「ブロック」と呼ばれることもある。
【0172】
[0189] 一般に、モード選択ユニット202はまた、現在のブロック(例えば、現在のCU、又はHEVCでは、PU及びTUの重複部分)に対する予測ブロックを生成するように、そのコンポーネント(例えば、動き推定ユニット222、動き補償ユニット224、及びイントラ予測ユニット226)を制御する。現在ブロックのインター予測の場合、動き推定ユニット222は、1つ又は複数の参照ピクチャ(例えば、DPB218に記憶されている1つ又は複数の以前にコーディングされたピクチャ)の中の1つ又は複数のよく一致する参照ブロックを特定するために、動き探索を実行し得る。具体的には、動き推定ユニット222は、例えば、差分絶対和(SAD)、二乗差分和(SSD)、平均絶対差(MAD)、平均二乗差(MSD)などに従って、潜在的な参照ブロックが現在のブロックとどれだけ類似しているかを表す値を計算し得る。動き推定ユニット222は一般に、現在ブロックと検討されている参照ブロックとの間のサンプルごとの差を使用して、これらの計算を実行し得る。動き推定ユニット222は、現在ブロックと最もよく一致する参照ブロックを示す、これらの計算に起因する最低の値を有する参照ブロックを特定し得る。
【0173】
[0190] 動き推定ユニット222は、現在ピクチャの中の現在ブロックの位置に対する相対的な参照ピクチャの中の参照ブロックの位置を定義する、1つ又は複数の動きベクトル(MV)を形成し得る。動き推定ユニット222は、上記で説明したように、動きベクトルを決定するための技法のいずれかを使用して動きベクトルを形成し得る。例えば、動き推定ユニット222は、反復探索プロセスを含むデコーダ側動きベクトル導出プロセスを使用して、ビデオデータのブロックのための動きベクトルを決定するように構成され得る。前の探索反復を通して最小コストを決定することと、現在の探索反復を通して総最小コストを更新することと、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて、反復探索プロセスを早期に終了することと、を含む反復探索プロセス。動き推定ユニット222は、動きベクトルを使用してビデオデータのブロックを符号化するように更に構成され得る。
【0174】
[0191] 動き推定ユニット222は、次いで、動きベクトルを動き補償ユニット224に提供し得る。例えば、単方向のインター予測の場合、動き推定ユニット222は単一の動きベクトルを提供してもよく、一方、双方向インター予測の場合、動き推定ユニット222は2つの動きベクトルを提供してもよい。動き補償ユニット224は、次いで、動きベクトルを使用して予測ブロックを生成し得る。例えば、動き補償ユニット224は、動きベクトルを使用して参照ブロックのデータを取り出してよい。別の例として、動きベクトルが小数サンプル精度を有する場合、動き補償ユニット224は、1つ又は複数の補間フィルタに従って、予測ブロックに対する値を補間し得る。その上、双方向インター予測の場合、動き補償ユニット224は、それぞれの動きベクトルによって特定される2つの参照ブロックに対するデータを取り出し、例えば、サンプルごとの平均化又は重み付き平均化を通じて、取り出されたデータを組み合わせ得る。
【0175】
[0192] AV1ビデオコーディングフォーマットに従って動作するとき、動き推定ユニット222及び動き補償ユニット224は、並進動き補償、アフィン動き補償、重複ブロック動き補償(OBMC)、及び/又は合成インター-イントラ予測を使用して、ビデオデータのコーディングブロック(例えば、ルーマコーディングブロックとクロマコーディングブロックの両方)を符号化するように構成され得る。
【0176】
[0193] 別の例として、イントラ予測又はイントラ予測コーディングの場合、イントラ予測ユニット226は、現在ブロックに隣接するサンプルから予測ブロックを生成し得る。例えば、方向性モードの場合、イントラ予測ユニット226は一般に、隣接するサンプルの値を数学的に組み合わせて、現在ブロックにわたって定められた方向においてこれらの計算された値をポピュレートして、予測ブロックを生成し得る。別の例として、DCモードの場合、イントラ予測ユニット226は、現在ブロックに隣接するサンプルの平均を計算し、予測ブロックの各サンプルに対するこの得られた平均を含むように予測ブロックを生成し得る。
【0177】
[0194] AV1ビデオコーディングフォーマットに従って動作するとき、イントラ予測ユニット226は、方向性イントラ予測、非方向性イントラ予測、再帰的フィルタイントラ予測、ルーマからクロマ(CFL:chroma-from-luma)予測、イントラブロックコピー(IBC)、及び/又はカラーパレットモードを使用して、ビデオデータのコーディングブロック(例えば、ルーマコーディングブロックとクロマコーディングブロックの両方)を符号化するように構成され得る。モード選択ユニット202は、他の予測モードに従ってビデオ予測を実行するための追加の機能ユニットを含んでよい。
【0178】
[0195] モード選択ユニット202は、予測ブロックを残差生成ユニット204に提供する。残差生成ユニット204は、ビデオデータメモリ230から現在ブロックの未加工の符号化されていないバージョンを受信し、モード選択ユニット202から予測ブロックを受信する。残差生成ユニット204は、現在ブロックと予測ブロックとのサンプルごとの差を計算する。得られるサンプルごとの差は、現在ブロックに対する残差ブロックを定義する。いくつかの例では、残差生成ユニット204はまた、残差差分パルスコード変調(RDPCM:residual differential pulse code modulation)を使用して残差ブロックを生成するために、残差ブロックの中のサンプル値の間の差分を決定し得る。いくつかの例では、残差生成ユニット204は、バイナリ減算を実施する1つ又は複数の減算器回路を使用して形成され得る。
【0179】
[0196] モード選択ユニット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サイズのための非対称区分をサポートし得る。
【0180】
[0197] モード選択ユニット202がCUをPUに更に区分しない例では、各CUはルーマコーディングブロック及び対応するクロマコーディングブロックと関連付けられてもよい。上のように、CUのサイズは、CUのルーマコーディングブロックのサイズを指すことがある。ビデオエンコーダ200及びビデオデコーダ300は、2N×2N、2N×N、又はN×2NのCUサイズをサポートしてよい。
【0181】
[0198] いくつかの例として、イントラブロックコピーモードコーディング、アフィンモードコーディング、及び線形モデル(LM)モードコーディングなどの他のビデオコーディング技法の場合、モード選択ユニット202は、コーディング技法に関連するそれぞれのユニットを介して、符号化されている現在ブロックのための予測ブロックを生成する。パレットモードコーディングなどのいくつかの例では、モード選択ユニット202は、予測ブロックを生成しなくてよく、代わりに、選択されたパレットに基づいてブロックを再構成するための方式を示すシンタックス要素を生成してよい。そのようなモードでは、モード選択ユニット202は、符号化されるようにこれらのシンタックス要素をエントロピー符号化ユニット220に提供し得る。
【0182】
[0199] 上で説明されたように、残差生成ユニット204は、現在ブロック及び対応する予測ブロックに対するビデオデータを受信する。残差生成ユニット204は次いで、現在ブロックに対する残差ブロックを生成する。残差ブロックを生成するために、残差生成ユニット204は、予測ブロックと現在ブロックとのサンプルごとの差を計算する。
【0183】
[0200] 変換処理ユニット206は、変換係数のブロック(本明細書で「変換係数ブロック」と呼ばれる)を生成するために、1つ又は複数の変換を残差ブロックに適用する。変換処理ユニット206は、変換係数ブロックを形成するために、様々な変換を残差ブロックに適用し得る。例えば、変換処理ユニット206は、離散コサイン変換(DCT)、方向性変換、カルーネンレーベ変換(KLT)、又は概念的に類似の変換を残差ブロックに適用し得る。いくつかの例では、変換処理ユニット206は、複数の変換、例えば、回転変換などの1次変換及び2次変換を、残差ブロックに対して実行してよい。いくつかの例では、変換処理ユニット206は、変換を残差ブロックに適用しない。
【0184】
[0201] AV1に従って動作するとき、変換処理ユニット206は、(本明細書では「変換係数ブロック」と呼ばれる)変換係数のブロックを生成するために、残差ブロックに1つ又は複数の変換を適用し得る。変換処理ユニット206は、変換係数ブロックを形成するために、様々な変換を残差ブロックに適用し得る。例えば、変換処理ユニット206は、離散コサイン変換(DCT)と、非対称離散サイン変換(ADST)と、反転ADST(例えば、逆順におけるADST)と、恒等変換(IDTX)とを含み得る水平/垂直変換組合せを適用し得る。恒等変換を使用するとき、変換は、垂直方向又は水平方向のうちの1つにおいてスキップされる。いくつかの例では、変換処理はスキップされ得る。
【0185】
[0202] 量子化ユニット208は、変換係数ブロックの中で変換係数を量子化して量子化変換係数ブロックを生成してよい。量子化ユニット208は、現在ブロックに関連する量子化パラメータ(QP)値に従って、変換係数ブロックの変換係数を量子化し得る。ビデオエンコーダ200は(例えば、モード選択ユニット202を介して)、CUに関連するQP値を調整することによって、現在ブロックに関連する変換係数ブロックに適用される量子化の程度を調整し得る。量子化は情報の損失をもたらすことがあり、したがって、量子化された変換係数は、変換処理ユニット206によって生成される元の変換係数より精度が低いことがある。
【0186】
[0203] 逆量子化ユニット210及び逆変換処理ユニット212は、それぞれ、逆量子化及び逆変換を量子化変換係数ブロックに適用して、変換係数ブロックから残差ブロックを再構成し得る。再構成ユニット214は、モード選択ユニット202によって生成される再構成された残差ブロック及び予測ブロックに基づいて、(ある程度の歪みを伴う可能性があるが)現在ブロックに対応する再構成されたブロックを生成し得る。例えば、再構成ユニット214は、再構成された残差ブロックのサンプルを、モード選択ユニット202によって生成された予測ブロックからの対応するサンプルに加算して、再構成されたブロックを生成し得る。
【0187】
[0204] フィルタユニット216は、再構成されたブロックに対して1つ又は複数のフィルタ動作を実行してよい。例えば、フィルタユニット216は、CUのエッジに沿ったブロッキネスアーティファクトを低減するためにデブロッキング動作を実行し得る。フィルタユニット216の動作は、いくつかの例では、スキップされ得る。
【0188】
[0205] AV1に従って動作するとき、フィルタユニット216は、再構成されたブロックに対して1つ又は複数のフィルタ動作を実施し得る。例えば、フィルタユニット216は、CUのエッジに沿ったブロッキネスアーティファクトを低減するためにデブロッキング動作を実行し得る。他の例では、フィルタユニット216は、制約付き方向性強調フィルタ(CDEF:constrained directional enhancement filter)を適用し得、これは、デブロッキングの後に適用され得、推定されたエッジ方向に基づく、非分離可能、非線形、ローパス方向性フィルタの適用を含み得る。フィルタユニット216は、ループ復元フィルタをも含み得、これは、CDEFの後に適用され、分離可能対称正規化ウィーナーフィルタ又はデュアル自己誘導フィルタを含み得る。
【0189】
[0206] ビデオエンコーダ200は、再構成されたブロックをDPB218に記憶する。例えば、フィルタユニット216の動作が実行されない例では、再構成ユニット214が再構成されたブロックをDPB218に記憶し得る。フィルタユニット216の動作が実行される例では、フィルタユニット216が、フィルタ処理済みの再構成されたブロックをDPB218に記憶し得る。動き推定ユニット222及び動き補償ユニット224は、後で符号化されるピクチャのブロックをインター予測するために、再構成された(かつ、潜在的にフィルタ処理済みの)ブロックから形成された参照ピクチャをDPB218から取り出し得る。加えて、イントラ予測ユニット226は、現在ピクチャの中の他のブロックをイントラ予測するために、現在ピクチャのDPB218の中の再構成されたブロックを使用し得る。
【0190】
[0207] 一般に、エントロピー符号化ユニット220は、ビデオエンコーダ200の他の機能コンポーネントから受信されたシンタックス要素をエントロピー符号化し得る。例えば、エントロピー符号化ユニット220は、量子化ユニット208からの量子化変換係数ブロックをエントロピー符号化し得る。別の例として、エントロピー符号化ユニット220は、モード選択ユニット202からの予測シンタックス要素(例えば、インター予測のための動き情報又はイントラ予測のためのイントラモード情報)をエントロピー符号化し得る。エントロピー符号化ユニット220は、ビデオデータの別の例であるシンタックス要素に対して1つ又は複数のエントロピー符号化動作を実行して、エントロピー符号化データを生成し得る。例えば、エントロピー符号化ユニット220は、コンテキスト適応可変長コーディング(CAVLC)動作、CABAC動作、可変長-可変長(V2V)コーディング動作、シンタックスベースコンテキスト適応バイナリ算術コーディング(SBAC)動作、確率間隔区分エントロピー(PIPE)コーディング動作、指数ゴロム符号化動作、又は別のタイプのエントロピー符号化動作を、データに対して実行し得る。いくつかの例では、エントロピー符号化ユニット220は、シンタックス要素がエントロピー符号化されないバイパスモードで動作し得る。
【0191】
[0208] ビデオエンコーダ200は、スライス又はピクチャのブロックを再構成するために必要とされるエントロピー符号化シンタックス要素を含むビットストリームを出力し得る。詳細には、エントロピー符号化ユニット220がビットストリームを出力してよい。
【0192】
[0209] AV1に従って、エントロピー符号化ユニット220は、シンボル対シンボル適応マルチシンボル算術コーダ(symbol-to-symbol adaptive multi-symbol arithmetic coder)として構成され得る。AV1におけるシンタックス要素はN個の要素のアルファベットを含み、コンテキスト(例えば、確率モデル)はN個の確率のセットを含む。エントロピー符号化ユニット220は、確率をnビット(例えば、15ビット)累積分布関数(CDF)として記憶し得る。エントロピー符号化ユニット22は、コンテキストを更新するために、アルファベットサイズに基づく更新ファクタを用いて、再帰的スケーリングを実施し得る。
【0193】
[0210] 上記で説明した動作はブロックに関して説明される。そのような説明は、ルーマコーディングブロック及び/又はクロマコーディングブロックのための動作であるものとして理解されるべきである。上で説明されたように、いくつかの例では、ルーマコーディングブロック及びクロマコーディングブロックは、CUのルーマ成分及びクロマ成分である。いくつかの例では、ルーマコーディングブロック及びクロマコーディングブロックは、PUのルーマ成分及びクロマ成分である。
【0194】
[0211] いくつかの例では、ルーマコーディングブロックに関して実行される動作は、クロマコーディングブロックに対して繰り返される必要はない。一例として、ルーマコーディングブロックのための動きベクトル(MV)及び参照ピクチャを特定するための動作が、クロマブロックのためのMV及び参照ピクチャを特定するために繰り返される必要はない。むしろ、ルーマコーディングブロックのためのMVは、クロマブロックのためのMVを決定するためにスケーリングされてもよく、参照ピクチャは同じであってもよい。別の例として、イントラ予測プロセスは、ルーマコーディングブロック及びクロマコーディングブロックについて同じであってもよい。
【0195】
[0212] ビデオエンコーダ200は、ビデオデータを記憶するように構成されたメモリと、1つ以上の処理ユニットとを含む、ビデオデータを符号化するように構成されたデバイスの一例を表し、1つ以上の処理ユニットは、回路内に実装され、反復探索プロセスを含むデコーダ側動きベクトル導出プロセスを使用して、ビデオデータのブロックのための動きベクトルを決定し、反復探索プロセスが、前の探索反復の最小コストを計算することと、前の探索反復の最小コストに基づいて反復探索プロセスを早期に終了することとを含み、動きベクトルを使用してビデオデータのブロックをコーディングするように構成される。
【0196】
[0213]
図10は、本開示の技法を実行し得る例示的なビデオデコーダ300を示すブロック図である。
図10は説明のために提供され、本開示において広く例示され説明されるような技法を限定するものではない。説明のために、本開示は、VVC(開発中のITU-T H.266)、及びHEVC(ITU-T H.265)の技法によるビデオデコーダ300について説明する。しかしながら、本開示の技法は、他のビデオコーディング規格に従って構成されるビデオコーディングデバイスによって実行され得る。
【0197】
[0214]
図10の例では、ビデオデコーダ300は、コーディングピクチャバッファ(CPB)メモリ320、エントロピー復号ユニット302、予測処理ユニット304、逆量子化ユニット306、逆変換処理ユニット308、再構成ユニット310、フィルタユニット312、及び復号ピクチャバッファ(DPB)314を含む。CPBメモリ320、エントロピー復号ユニット302、予測処理ユニット304、逆量子化ユニット306、逆変換処理ユニット308、再構成ユニット310、フィルタユニット312、及びDPB314のいずれか又はすべてが、1つ若しくは複数のプロセッサにおいて又は処理回路において実装され得る。例えば、ビデオデコーダ300のユニットは、ハードウェア回路の一部としての1つ又は複数の回路若しくは論理要素として、又はプロセッサ、ASIC、若しくはFPGAの一部として実装され得る。その上、ビデオデコーダ300は、これら及び他の機能を実行するための追加又は代替のプロセッサ又は処理回路を含んでよい。
【0198】
[0215] 予測処理ユニット304は、動き補償ユニット316及びイントラ予測ユニット318を含む。予測処理ユニット304は、他の予測モードに従って予測を実施するための追加のユニットを含み得る。例として、予測処理ユニット304は、パレットユニット、(動き補償ユニット316の一部を形成し得る)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニットなどを含んでよい。他の例では、ビデオデコーダ300は、もっと多数の、もっと少数の、又は異なる機能構成要素を含んでよい。
【0199】
[0216] AV1に従って動作するとき、動き補償ユニット316は、上述したように、並進動き補償、アフィン動き補償、OBMC、及び/又は合成インター-イントラ予測を使用して、ビデオデータのコーディングブロック(例えば、ルーマコーディングブロックとクロマコーディングブロックの両方)を復号するように構成され得る。イントラ予測ユニット318は、上記で説明されたように、方向性イントラ予測、非方向性イントラ予測、再帰的フィルタイントラ予測、CFL、イントラブロックコピー(IBC)、及び/又はカラーパレットモードを使用して、ビデオデータのコーディングブロック(例えば、ルーマコーディングブロックとクロマコーディングブロックの両方)を復号するように構成され得る。
【0200】
[0217] CPBメモリ320は、ビデオデコーダ300の構成要素によって復号されるべき符号化されたビデオビットストリームなどのビデオデータを記憶してよい。CPBメモリ320の中に記憶されたビデオデータは、例えば、コンピュータ可読媒体110(
図1)から取得され得る。CPBメモリ320は、符号化ビデオビットストリームからの符号化されたビデオデータ(例えば、シンタックス要素)を記憶するCPBを含んでよい。また、CPBメモリ320は、ビデオデコーダ300の様々なユニットからの出力を表す一時的なデータなどの、コード化ピクチャのシンタックス要素以外のビデオデータを記憶してよい。DPB314は、一般に、符号化されたビデオビットストリームの後続のデータ又はピクチャを復号するときにビデオデコーダ300が参照ビデオデータとして出力及び/又は使用し得る復号されたピクチャを記憶する。CPBメモリ320及びDPB314は、SDRAMを含むDRAM、MRAM、RRAM、又は他のタイプのメモリデバイスなどの、様々なメモリデバイスのうちのいずれかによって形成され得る。CPBメモリ320及びDPB314は、同じメモリデバイス又は別個のメモリデバイスによって提供され得る。様々な例では、CPBメモリ320は、ビデオデコーダ300の他のコンポーネントとともにオンチップであってよく、又はそれらのコンポーネントに対してオフチップであってよい。
【0201】
[0218] 追加又は代替として、いくつかの例では、ビデオデコーダ300は、メモリ120(
図1)からコード化ビデオデータを取り出し得る。すなわち、メモリ120は、CPBメモリ320について上で論じられたようなデータを記憶し得る。同様に、メモリ120は、ビデオデコーダ300の機能の一部又はすべてがビデオデコーダ300の処理回路によって実行されるべきソフトウェアにおいて実装されるとき、ビデオデコーダ300によって実行されるべき命令を記憶してもよい。
【0202】
[0219]
図10に示す様々なユニットは、ビデオデコーダ300によって実行される動作を理解する助けとなるために示される。ユニットは、固定機能回路、プログラマブル回路、又はこれらの組合せとして実装され得る。
図9と同様に、固定機能回路は、特定の機能を提供する回路を指し、実行され得る動作があらかじめ設定されている。プログラマブル回路は、様々なタスクを実行するようにプログラムされ得る回路を指し、実行され得る動作においてフレキシブルな機能性を提供する。例えば、プログラマブル回路は、ソフトウェア又はファームウェアの命令によって定義される方式で、プログラマブル回路を動作させるソフトウェア又はファームウェアを実行し得る。固定機能回路は(例えば、パラメータを受信するか又はパラメータを出力するための)ソフトウェア命令を実行し得るが、固定機能回路が実行する動作のタイプは一般に不変である。いくつかの例では、ユニットのうちの1つ又は複数は、異なる回路ブロック(固定機能又はプログラマブル)であってもよく、いくつかの例では、ユニットのうちの1つ又は複数は集積回路であってもよい。
【0203】
[0220] ビデオデコーダ300は、ALU、EFU、デジタル回路、アナログ回路、及び/又は、プログラム可能回路から形成されるプログラマブルコアを含み得る。ビデオデコーダ300の動作が、プログラマブル回路上で実行するソフトウェアによって実行される例では、オンチップメモリ又はオフチップメモリが、ビデオデコーダ300が受信及び実行するソフトウェアの命令(例えば、オブジェクトコード)を記憶してよい。
【0204】
[0221] エントロピー復号ユニット302は、CPBから符号化されたビデオデータを受信し、ビデオデータをエントロピー復号して、シンタックス要素を再生してよい。予測処理ユニット304、逆量子化ユニット306、逆変換処理ユニット308、再構成ユニット310、及びフィルタユニット312は、ビットストリームから抽出されたシンタックス要素に基づいて、復号されたビデオデータを生成してよい。
【0205】
[0222] 一般に、ビデオデコーダ300は、ブロックごとにピクチャを再構成する。ビデオデコーダ300は、各ブロックに対する再構成動作を個別に実行し得る(ここで、現在再構成されている、例えば、復号されているブロックは、「現在ブロック」と呼ばれ得る)。
【0206】
[0223] エントロピー復号ユニット302は、量子化変換係数ブロックの量子化変換係数、並びに量子化パラメータ(QP)及び/又は変換モード表示などの変換情報を規定する、シンタックス要素をエントロピー復号してよい。逆量子化ユニット306は、量子化変換係数ブロックに関連するQPを使用して、量子化の程度、及び同様に逆量子化ユニット306が適用すべき逆量子化の程度を決定してよい。逆量子化ユニット306は、例えば、量子化変換係数を逆量子化するために、ビット単位の左シフト演算を実行してよい。それによって、逆量子化ユニット306は、変換係数を含む変換係数ブロックを形成し得る。
【0207】
[0224] 逆量子化ユニット306が変換係数ブロックを形成した後、逆変換処理ユニット308は、現在ブロックに関連する残差ブロックを生成するために、変換係数ブロックに1つ又は複数の逆変換を適用し得る。例えば、逆変換処理ユニット308は、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向変換、又は別の逆変換を変換係数ブロックに適用し得る。
【0208】
更に、予測処理ユニット304は、エントロピー復号ユニット302によってエントロピー復号された予測情報シンタックス要素に従って予測ブロックを生成する。例えば、現在ブロックがインター予測されることを、予測情報シンタックス要素が示す場合、動き補償ユニット316は、予測ブロックを生成し得る。この場合、予測情報シンタックス要素は、参照ブロックをそこから取り出すべきDPB314の中の参照ピクチャ、並びに、現在ピクチャの中の現在ブロックの位置に対する相対的な参照ピクチャの中の参照ブロックの位置を特定する動きベクトルを示し得る。動き補償ユニット316は、一般に、動き補償ユニット224(
図9)に関して説明した方式と実質的に類似の方式で、インター予測プロセスを実行し得る。
【0209】
[0225] 動き補償ユニット316は、上記で説明したように、動きベクトルを決定するための技法のいずれかを使用して動きベクトルを形成し得る。例えば、動き補償ユニット316は、反復探索プロセスを含むデコーダ側動きベクトル導出プロセスを使用して、ビデオデータのブロックのための動きベクトルを決定するように構成され得る。前の探索反復を通して最小コストを決定することと、現在の探索反復を通して総最小コストを更新することと、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて、反復探索プロセスを早期に終了することと、を含む反復探索プロセス。動き補償ユニット316は、動きベクトルを使用してビデオデータのブロックを復号するように更に構成され得る。
【0210】
[0226] 別の例として、現在ブロックがイントラ予測されることを、予測情報シンタックス要素が示す場合、イントラ予測ユニット318は、予測情報シンタックス要素によって示されるイントラ予測モードに従って、予測ブロックを生成し得る。この場合も、イントラ予測ユニット318は、一般に、イントラ予測ユニット226(
図9)に関して説明した方式と実質的に類似の方式で、イントラ予測プロセスを実行してよい。イントラ予測ユニット318は、DPB314から現在ブロックに隣接するサンプルのデータを取り出し得る。
【0211】
[0227] 再構成ユニット310は、予測ブロックと残差ブロックとを使用して現在ブロックを再構成し得る。例えば、再構成ユニット310は、予測ブロックの対応するサンプルに残差ブロックのサンプルを追加して、現在ブロックを再構成し得る。
【0212】
[0228] フィルタユニット312は、再構成されたブロックに対して1つ以上のフィルタ動作を実行してもよい。例えば、フィルタユニット312は、再構成されたブロックのエッジに沿ったブロッキネスアーティファクトを低減するために、デブロッキング動作を実行してよい。すべての例において、フィルタユニット312の動作が必ずしも実行されるとは限らない。
【0213】
[0229] ビデオデコーダ300は、再構成されたブロックをDPB314の中に記憶してよい。例えば、フィルタユニット312の動作が実行されない例では、再構成ユニット310は再構成されたブロックをDPB314に記憶し得る。フィルタユニット312の動作が実行される例では、フィルタユニット312は、フィルタ処理済みの再構成されたブロックをDPB314に記憶し得る。上記で説明したように、DPB314は、イントラ予測のための現在のピクチャ及び後続の動き補償のための以前に復号されたピクチャのサンプルなどの参照情報を、予測処理ユニット304に提供してよい。更に、ビデオデコーダ300は、
図1の表示デバイス118などの表示デバイス上に後で提示するための、DPB314からの復号されたピクチャ(例えば、復号されたビデオ)を出力し得る。
【0214】
[0230] このようにして、ビデオデコーダ300は、ビデオデータを記憶するように構成されたメモリと、1つ以上の処理ユニットとを含む、ビデオ復号デバイスの一例を表し、1つ以上の処理ユニットは、回路内に実装され、反復探索プロセスを含むデコーダ側動きベクトル導出プロセスを使用して、ビデオデータのブロックのための動きベクトルを決定し、反復探索プロセスが、前の探索反復の最小コストを計算することと、前の探索反復の最小コストに基づいて反復探索プロセスを早期に終了することとを含み、動きベクトルを使用してビデオデータのブロックをコーディングするように構成される。
【0215】
[0231]
図11は、本開示の技法による、現在ブロックを符号化するための例示的な方法を示すフローチャートである。現在ブロックは現在CUを備え得る。ビデオエンコーダ200(
図1及び
図9)に関して説明されるが、他のデバイスが
図11の方法と同様の方法を実行するように構成され得ることを理解されたい。
【0216】
[0232] この例では、ビデオエンコーダ200は最初に、現在ブロックを予測する(350)。例えば、ビデオエンコーダ200は、現在ブロックのための予測ブロックを形成し得る。次いで、ビデオエンコーダ200は、現在ブロックに対する残差ブロックを計算し得る(352)。残差ブロックを計算するために、ビデオエンコーダ200は、元の符号化されていないブロックと現在ブロックのための予測ブロックとの間の差分を計算し得る。ビデオエンコーダ200は、次いで、残差ブロックを変換してよく、残差ブロックの変換係数を量子化してよい(354)。次に、ビデオエンコーダ200は、残差ブロックの量子化変換係数を走査してよい(356)。走査の間又は走査に続いて、ビデオエンコーダ200は、変換係数をエントロピー符号化してよい(358)。例えば、ビデオエンコーダ200は、CAVLC又はCABACを使用して変換係数を符号化してよい。ビデオエンコーダ200は、次いで、ブロックのエントロピー符号化データを出力してよい(360)。
【0217】
[0233]
図12は、本開示の技法による、ビデオデータの現在ブロックを復号するための例示的な方法を示すフローチャートである。現在ブロックは現在CUを備え得る。ビデオデコーダ300(
図1及び
図10)に関して説明するが、他のデバイスが
図12の方法と同様の方法を実行するように構成され得ることを理解されたい。
【0218】
[0234] ビデオデコーダ300は、エントロピー符号化された予測情報及び現在ブロックに対応する残差ブロックの変換係数のエントロピー符号化されたデータなどの、現在ブロックについてのエントロピー符号化されたデータを受信し得る(370)。ビデオデコーダ300は、エントロピー符号化されたデータをエントロピー復号して、現在ブロックのための予測情報を決定し、残差ブロックの変換係数を再生し得る(372)。ビデオデコーダ300は、現在ブロックのための予測ブロックを計算するために、例えば、現在ブロックのための予測情報によって示されるようなイントラ予測モード又はインター予測モードを使用して、現在ブロックを予測し得る(374)。ビデオデコーダ300は、次いで、量子化変換係数のブロックを作成するために、再生された変換係数を逆走査してよい(376)。ビデオデコーダ300は、次いで、残差ブロックを生成するために、変換係数を逆量子化してよく、変換係数に逆変換を適用してよい(378)。ビデオデコーダ300は、予測ブロック及び残差ブロックを合成することによって、現在ブロックを最終的に復号し得る(380)。
【0219】
[0235]
図13は、本開示の技法による、反復探索プロセスを早期に終了するための方法の例を示すフローチャートである。現在ブロックは現在CUを備え得る。反復探索プロセスは、ビデオエンコーダ200及び/又はビデオデコーダ300によって実行されることに関して説明される。
【0220】
[0236] ビデオエンコーダ200/デコーダ300は、反復探索プロセスを含むデコーダ側動きベクトル導出プロセスを使用して、ビデオデータのブロックのための動きベクトルを決定し得る。一例では、反復探索プロセスにおいて、ビデオエンコーダ200/デコーダ300は、1番目の探索反復を実行し、前の探索反復を通した最小コストを0に設定する(1300)ように構成され得る。ビデオエンコーダ200/デコーダ300は、1番目の探索反復を通してコストを決定し、現在の探索反復を通した総最小コストを1番目の探索反復を通した全体的なコストとして設定する(1302)ように更に構成され得る。ビデオエンコーダ200/デコーダ300は、前の探索反復を通した最小コストを現在の探索反復を通した総最小コストと比較することに基づいて、反復探索プロセスを終了するか否かを決定する(1304)ように更に構成され得る。ビデオエンコーダ200/デコーダ300が反復探索プロセスを早期に終了すると決定した場合、ビデオエンコーダ200/デコーダ300は、探索プロセスにおけるその時点までの最小コストを有する動きベクトルを使用してビデオデータのブロックをそれぞれ符号化/復号する(1305)ように更に構成される。
【0221】
[0237] ビデオエンコーダ200/デコーダ300が反復探索プロセスを早期に終了させないと決定した場合、ビデオエンコーダ200/デコーダ300は、2番目の探索反復を実行し、前の探索反復を通した最小コストを1番目の探索反復を通した最小コストとして設定する(1306)ように更に構成される。ビデオエンコーダ200/デコーダ300は、現在の探索反復を通した総最小コストを、2番目の探索反復を通した全体的なコストとして更新する(1308)ように更に構成され得る。ビデオエンコーダ200/デコーダ300は、前の探索反復を通した最小コストを現在の探索反復を通した総最小コストと比較することに基づいて、反復探索プロセスを終了するか否かを決定する(1310)ように更に構成され得る。ビデオエンコーダ200/デコーダ300が反復探索プロセスを早期に終了すると決定した場合、ビデオエンコーダ200/デコーダ300は、探索プロセスにおけるその時点までの最小コストを有する動きベクトルを使用してビデオデータのブロックをそれぞれ符号化/復号する(1305)ように更に構成される。
【0222】
[0238] ビデオエンコーダ200/デコーダ300が、反復探索プロセスを早期に終了しないと決定した場合、ビデオエンコーダ200/デコーダ300は、3番目の探索反復を実行し、前の探索反復を通した最小コストを2番目の探索反復を通した最小コストとして設定する(1312)ように更に構成される。ビデオエンコーダ200/デコーダ300は、現在の探索反復を通した総最小コストを、3番目の探索反復を通した全体的なコストとして更新する(1314)ように更に構成され得る。ビデオエンコーダ200/デコーダ300は、前の探索反復を通した最小コストを現在の探索反復を通した総最小コストと比較することに基づいて、反復探索プロセスを終了するか否かを決定する(1316)ように更に構成され得る。ビデオエンコーダ200/デコーダ300が反復探索プロセスを早期に終了すると決定した場合、ビデオエンコーダ200/デコーダ300は、探索プロセスにおけるその時点までの最小コストを有する動きベクトルを使用してビデオデータのブロックをそれぞれ符号化/復号する(1305)ように更に構成される。
【0223】
[0239] ビデオエンコーダ200/デコーダ300が反復探索プロセスを早期に終了しないと決定した場合、ビデオエンコーダ200/デコーダ300は、ビデオエンコーダ200/デコーダ300が反復探索プロセスを終了するまで、前の探索反復に従って次の探索反復を実行する(1318)ように更に構成される。
【0224】
[0240] いくつかの例では、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて反復探索プロセスを早期に終了することは、複数の比較に基づいて実行され得る。
【0225】
[0241]
図14は、本開示の技法による、ビデオデータのブロックを復号するための別の例示的な方法を示すフローチャートである。
図14の技法は、動き補償ユニット316を含むビデオデコーダ300の1つ以上の構造構成要素によって実行され得る。
【0226】
[0242] 本開示の一例では、ビデオデコーダ300は、反復探索プロセスを含むデコーダ側動きベクトル導出プロセスを使用して、ビデオデータのブロックのための動きベクトルを決定する(1400)ように構成され得る。反復探索プロセスでは、ビデオデコーダ300は、前の探索反復を通して最小コストを決定し(1402)、現在の探索反復を通して総最小コストを更新し(1404)、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて反復探索プロセスを早期に終了する(1406)ように更に構成され得る。ビデオデコーダ300は、次いで、動きベクトルを使用してビデオデータのブロックを復号し得る(1408)。
【0227】
[0243] 一例では、ビデオデコーダ300は、候補位置の少なくとも現在のサブセットに基づいて現在の探索反復を通して総最小コストを計算するように構成され得る。
【0228】
[0244] 別の例では、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて反復探索プロセスを早期に終了するために、ビデオデコーダ300は、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの差分を計算し、差分閾値に対する差分に基づいて反復探索プロセスを早期に終了するように構成され得る。
【0229】
[0245] 別の例では、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて反復探索プロセスを早期に終了するために、ビデオデコーダ300は、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比を計算し、比閾値に対する比に基づいて反復探索プロセスを早期に終了するように構成され得る。
【0230】
[0246] 別の例では、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて反復探索プロセスを早期に終了するために、ビデオデコーダ300は、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの差分を計算し、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの差分に対する前の探索反復を通した最小コストの比を計算し、比閾値に対する比に基づいて反復探索プロセスを早期に終了するように構成され得る。
【0231】
[0247] 別の例では、ビデオデコーダ300は、前の探索反復を通した最小コスト、現在の探索反復を通した総最小コスト、及び現在の探索反復の最小コストに基づいて、反復探索プロセスを早期に終了するように構成され得る。例えば、ビデオデコーダ300は、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較、及び前の探索反復を通した最小コストと現在の探索反復の最小コストとの比較に基づいて、反復探索プロセスを早期に終了するように構成され得る。
【0232】
[0248]
図15は、本開示の技法による、ビデオデータのブロックを符号化するための別の例示的な方法を示すフローチャートである。
図15の技法は、動き推定ユニット222及び/又は動き補償ユニット224を含む、ビデオエンコーダ200の1つ以上の構造構成要素によって実行され得る。
【0233】
[0249] 本開示の一例では、ビデオエンコーダ200は、反復探索プロセスを含むデコーダ側動きベクトル導出プロセスを使用して、ビデオデータのブロックのための動きベクトルを決定する(1500)ように構成され得る。反復探索プロセスでは、ビデオデコーダ300は、前の探索反復を通して最小コストを決定し(1502)、現在の探索反復を通して総最小コストを更新し(1504)、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて反復探索プロセスを早期に終了する(1506)ように更に構成され得る。次に、ビデオエンコーダ200は、動きベクトルを使用して、ビデオデータのブロックを符号化し得る(1508)。
【0234】
[0250] 一例では、ビデオエンコーダ200は、候補位置の少なくとも現在のサブセットに基づいて現在の探索反復を通して総最小コストを計算するように構成され得る。
【0235】
[0251] 別の例では、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて反復探索プロセスを早期に終了するために、ビデオエンコーダ200は、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの差分を計算し、差分閾値に対する差分に基づいて反復探索プロセスを早期に終了するように構成され得る。
【0236】
[0252] 別の例では、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて反復探索プロセスを早期に終了するために、ビデオエンコーダ200は、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比を計算し、比閾値に対する比に基づいて反復探索プロセスを早期に終了するように構成され得る。
【0237】
[0253] 別の例では、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて反復探索プロセスを早期に終了するために、ビデオエンコーダ200は、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの差分を計算し、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの差分に対する前の探索反復を通した最小コストの比を計算し、比閾値に対する比に基づいて反復探索プロセスを早期に終了するように構成され得る。
【0238】
[0254] 別の例では、ビデオエンコーダ200は、前の探索反復を通した最小コスト、現在の探索反復を通した総最小コスト、及び現在の探索反復の最小コストに基づいて、反復探索プロセスを早期に終了するように構成され得る。例えば、ビデオデコーダ200は、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較、及び前の探索反復を通した最小コストと現在の探索反復の最小コストとの比較に基づいて、反復探索プロセスを早期に終了するように構成され得る。
【0239】
[0255] 本開示の追加の方法及びデバイスは、以下の態様で説明される。
【0240】
[0256] 態様1A-ビデオデータをコーディングする方法であって、反復探索プロセスを含むデコーダ側動きベクトル導出プロセスを使用して、ビデオデータのブロックのための動きベクトルを決定することであって、反復探索プロセスが、前の探索反復の最小コストを計算することと、前の探索反復の最小コストに基づいて反復探索プロセスを早期に終了することとを含む、動きベクトルを決定することと、動きベクトルを使用してビデオデータのブロックをコーディングすることとを含む、方法。
【0241】
[0257] 態様2A-反復探索プロセスについて決定された最小コストを更新することを更に含む、態様1Aに記載の方法。
【0242】
[0258] 態様3A-前の探索反復の最小コストに基づいて反復探索プロセスを早期に終了することが、前の探索反復の最小コストと反復探索プロセスについて決定された最小コストとの差分又は比を計算することと、閾値に対する差分又は比に基づいて反復探索プロセスを早期に終了することとを含む、態様2Aに記載の方法。
【0243】
[0259] 態様4A-前の探索反復の最小コストに基づいて反復探索プロセスを早期に終了することが、前の探索反復の最小コスト、反復探索プロセスについて決定された最小コスト、及び現在の反復の最小コストに基づいて反復探索プロセスを早期に終了することを含む、態様2Aの方法。
【0244】
[0260] 態様5A-反復探索プロセスが、3回以上の反復を含む、態様1Aに記載の方法。
【0245】
[0261] 態様6A-反復探索プロセスが、双方向マッチング又はテンプレートマッチングを含む、態様1Aに記載の方法。
【0246】
[0262] 態様7A-コーディングすることが復号することを含む、態様1Aから6Aのいずれかに記載の方法。
【0247】
[0263] 態様8A-コーディングすることが符号化することを含む、態様1Aから6Aのいずれかに記載の方法。
【0248】
[0264] 態様9A-ビデオデータをコーディングするためのデバイスであって、態様1Aから8Aのいずれかに記載の方法を実行するための1つ以上の手段を備えるデバイス。
【0249】
[0265] 態様10A-1つ以上の手段が、回路中に実装された1つ以上のプロセッサを備える、態様9Aに記載のデバイス。
【0250】
[0266] 態様11A-ビデオデータを記憶するためのメモリを更に備える、態様9A及び10Aのいずれかに記載のデバイス。
【0251】
[0267] 態様12A-復号されたビデオデータを表示するように構成されたディスプレイを更に備える、態様9A~11Aのいずれかに記載のデバイス。
【0252】
[0268] 態様13A-デバイスが、カメラ、コンピュータ、モバイルデバイス、ブロードキャスト受信機デバイス、又はセットトップボックスのうちの1つ以上を備える、態様9A~12Aのいずれかに記載のデバイス。
【0253】
[0269] 態様14A-デバイスがビデオデコーダを備える、態様9A~13Aのいずれかに記載のデバイス。
【0254】
[0270] 態様15A-デバイスがビデオエンコーダを備える、態様9A~14Aのいずれかに記載のデバイス。
【0255】
[0271] 態様16A-実行されると、1つ以上のプロセッサに態様1Aから8Aのいずれかの方法を実行させる命令を記憶したコンピュータ可読記憶媒体。
【0256】
[0272] 態様17A-ビデオデータをコーディングするためのデバイスであって、反復探索プロセスを含むデコーダ側動きベクトル導出プロセスを使用して、ビデオデータのブロックのための動きベクトルを決定するための手段であって、反復探索プロセスが、前の探索反復の最小コストを計算することと、前の探索反復の最小コストに基づいて反復探索プロセスを早期に終了することとを含む、動きベクトルを決定するための手段と、動きベクトルを使用してビデオデータのブロックをコーディングするための手段とを備える、デバイス。
【0257】
[0273] 態様18A-ビデオデータをコーディングする方法であって、反復探索プロセスを含むデコーダ側動きベクトル導出プロセスを使用して、ビデオデータのブロックのための動きベクトルを決定することであって、反復探索プロセスが、前の探索反復の最小コストを計算することと、前の探索反復の最小コストに基づいて反復探索プロセスを早期に終了することとを含む、動きベクトルを決定することと、動きベクトルを使用してビデオデータのブロックをコーディングすることとを含む、方法。
【0258】
[0274] 態様19A-反復探索プロセスについて決定された最小コストを更新することを更に含む、態様18Aに記載の方法。
【0259】
[0275] 態様20A-前の探索反復の最小コストに基づいて反復探索プロセスを早期に終了することが、前の探索反復の最小コストと反復探索プロセスについて決定された最小コストとの差分又は比を計算することと、閾値に対する差分又は比に基づいて反復探索プロセスを早期に終了することとを含む、態様19Aに記載の方法。
【0260】
[0276] 態様21A-前の探索反復の最小コストに基づいて反復探索プロセスを早期に終了することが、前の探索反復の最小コスト、反復探索プロセスについて決定された最小コスト、及び現在の反復の最小コストに基づいて反復探索プロセスを早期に終了することを含む、態様19Aに記載の方法。
【0261】
[0277] 態様22A-反復探索プロセスが、3回以上の反復を含む、態様18Aから21Aのいずれかに記載の方法。
【0262】
[0278] 態様23A-反復探索プロセスが、双方向マッチング又はテンプレートマッチングを含む、態様18Aから22Aのいずれかに記載の方法。
【0263】
[0279] 態様24A-ビデオデータをコーディングするためのデバイスであって、態様18Aから23Aのいずれかの方法を実行するための1つ以上の手段を備える、デバイス。
【0264】
[0280] 態様1B-ビデオデータを符号化又は復号する方法が、反復探索プロセスを実行することを含むデコーダ側動きベクトル導出プロセスを使用して、ビデオデータのブロックのための動きベクトルを決定することであって、反復探索プロセスを実行することが、前の探索反復を通して最小コストを決定することと、現在の探索反復を通して総最小コストを更新することと、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて、反復探索プロセスを早期に終了することとを含む、動きベクトルを決定することと、動きベクトルを使用してビデオデータのブロックを符号化又は復号することとを含む。
【0265】
[0281] 態様2B-前の探索反復が、反復探索プロセスにおいて現在の探索反復の直前にある、態様1Bに記載の方法。
【0266】
[0282] 態様3B-候補位置の少なくとも現在のサブセットに基づいて、現在の探索反復を通して総最小コストを計算することを更に含む、態様1Bに記載の方法。
【0267】
[0283] 態様4B-前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて反復探索プロセスを早期に終了することが、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの差分を計算することと、差分閾値に対する差分に基づいて反復探索プロセスを早期に終了することとを含む、態様1Bに記載の方法。
【0268】
[0284] 態様5B-差分閾値が、ブロックのサイズに基づく、態様4Bに記載の方法。
【0269】
[0285] 態様6B-前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて反復探索プロセスを早期に終了することが、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比を計算することと、比閾値に対する比に基づいて反復探索プロセスを早期に終了することとを含む、態様1Bに記載の方法。
【0270】
[0286] 態様7B-比閾値が、固定されるか、又はブロックのサイズに基づく、態様6Bに記載の方法。
【0271】
[0287] 態様8B-前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて反復探索プロセスを早期に終了することが、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの差分を計算することと、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの差分に対する前の探索反復を通した最小コストの比を計算することと、比閾値に対する比に基づいて反復探索プロセスを早期に終了することとを含む、態様1Bの記載の方法。
【0272】
[0288] 態様9B-比閾値が、固定されるか、又はブロックのサイズに基づく、態様8Bに記載の方法。
【0273】
[0289] 態様10B-前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて反復探索プロセスを早期に終了することが、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較、及び前の探索反復を通した最小コストと現在の探索反復の最小コストとの比較に基づいて反復探索プロセスを早期に終了することを含む、態様1Bに記載の方法。
【0274】
[0290] 態様11B-反復探索プロセスが、3回以上の反復を含む、態様1Bに記載の方法。
【0275】
[0291] 態様12B-反復探索プロセスを実行することが、双方向マッチング又はテンプレートマッチングを実行することを含む、態様1Bに記載の方法。
【0276】
[0292] 態様13B-ビデオデータを処理するためのデバイスが、ビデオデータを記憶するように構成されたメモリと、処理回路とを含み、処理回路は、反復探索プロセスを含むデコーダ側動きベクトル導出プロセスを使用して、ビデオデータのブロックのための動きベクトルを決定するように構成され、ここで、反復探索プロセスを実行するために、処理回路が、前の探索反復を通して最小コストを決定し、現在の探索反復を通して総最小コストを更新し、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて、反復探索プロセスを早期に終了するように更に構成され、動きベクトルを使用してビデオデータのブロックを符号化又は復号するように構成される。
【0277】
[0293] 態様14B-前の探索反復が、現在の探索反復の直前にある、態様13Bに記載のデバイス。
【0278】
[0294] 態様15B-反復探索プロセスを実行するために、処理回路が、候補位置の少なくとも現在のサブセットに基づいて、現在の探索反復を通して総最小コストを計算するように更に構成される、態様13Bに記載のデバイス。
【0279】
[0295] 態様16B-前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて反復探索プロセスを早期に終了するために、処理回路が、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの差分を計算し、差分閾値に対する差分に基づいて反復探索プロセスを早期に終了するように更に構成される、態様13Bに記載のデバイス。
【0280】
[0296] 態様17B-差分閾値が、ブロックのサイズに基づく、態様16Bに記載のデバイス。
【0281】
[0297] 態様18B-前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて反復探索プロセスを早期に終了するために、処理回路が、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比を計算し、比閾値に対する比に基づいて反復探索プロセスを早期に終了するように更に構成される、態様13Bに記載のデバイス。
【0282】
[0298] 態様19B-比閾値が、固定されるか、又はブロックのサイズに基づく、態様18Bに記載のデバイス。
【0283】
[0299] 態様20B-前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて反復探索プロセスを早期に終了するために、処理回路が、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの差分を計算し、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの差分に対する前の探索反復を通した最小コストの比を計算し、比閾値に対する比に基づいて反復探索プロセスを早期に終了するように更に構成される、態様13Bに記載のデバイス。
【0284】
[0300] 態様21B-比閾値が、固定されるか、又はブロックのサイズに基づく、態様20Bに記載のデバイス。
【0285】
[0301] 態様22B-前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて反復探索プロセスを早期に終了するために、処理回路が、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較、及び前の探索反復を通した最小コストと現在の探索反復の最小コストとの比較に基づいて反復探索プロセスを早期に終了するように更に構成される、態様13Bに記載のデバイス。
【0286】
[0302] 態様23B-反復探索プロセスが、3回以上の反復を含む、態様13Bに記載のデバイス。
【0287】
[0303] 態様24B-反復探索プロセスを実行するために、処理回路が、双方向マッチング又はテンプレートマッチングを実行するように構成される、態様13Bに記載のデバイス。
【0288】
[0304] 態様25B-ビデオデータを表示するように構成されたディスプレイを更に備える、態様13Bのデバイス。
【0289】
[0305] 態様26B-デバイスが、カメラ、コンピュータ、モバイルデバイス、ブロードキャスト受信機デバイス、又はセットトップボックスのうちの1つ以上を備える、態様13Bに記載のデバイス。
【0290】
[0306] 態様27B-デバイスが、ビデオデータをキャプチャするように構成されたカメラを備える、態様13に記載のデバイス。
【0291】
[0307] 態様1C-ビデオデータを符号化又は復号する方法が、反復探索プロセスを実行することを含むデコーダ側動きベクトル導出プロセスを使用して、ビデオデータのブロックのための動きベクトルを決定することであって、反復探索プロセスを実行することが、前の探索反復を通して最小コストを決定することと、現在の探索反復を通して総最小コストを更新することと、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて、反復探索プロセスを早期に終了することとを含む、動きベクトルを決定することと、動きベクトルを使用してビデオデータのブロックを符号化又は復号することとを含む。
【0292】
[0308] 態様2C-前の探索反復が、反復探索プロセスにおいて現在の探索反復の直前にある、態様1Cに記載の方法。
【0293】
[0309] 態様3C-候補位置の少なくとも現在のサブセットに基づいて、現在の探索反復を通して総最小コストを計算することを更に含む、態様1C及び2Cに記載の方法。
【0294】
[0310] 態様4C-前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて反復探索プロセスを早期に終了することが、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの差分を計算することと、差分閾値に対する差分に基づいて反復探索プロセスを早期に終了することとを含む、態様1Cから3Cのいずれかに記載の方法。
【0295】
[0311] 態様5C-差分閾値が、ブロックのサイズに基づく、態様4Cに記載の方法。
【0296】
[0312] 態様6C-前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて反復探索プロセスを早期に終了することが、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比を計算することと、比閾値に対する比に基づいて反復探索プロセスを早期に終了することとを含む、態様1Cから5Cのいずれかに記載の方法。
【0297】
[0313] 態様7C-比閾値が、固定されるか、又はブロックのサイズに基づく、態様6Cに記載の方法。
【0298】
[0314] 態様8C-前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて反復探索プロセスを早期に終了することが、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの差分を計算することと、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの差分に対する前の探索反復を通した最小コストの比を計算することと、比閾値に対する比に基づいて反復探索プロセスを早期に終了することとを含む、態様1Cから7Cのいずれかに記載の方法。
【0299】
[0315] 態様9C-比閾値が、固定されるか、又はブロックのサイズに基づく、態様8Cに記載の方法。
【0300】
[0316] 態様10C-前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて反復探索プロセスを早期に終了することが、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較、及び前の探索反復を通した最小コストと現在の探索反復の最小コストとの比較に基づいて反復探索プロセスを早期に終了することを含む、態様1Cから9Cのいずれかに記載の方法。
【0301】
[0317] 態様11C-反復探索プロセスが、3回以上の反復を含む、態様1Cから10Cのいずれかに記載の方法。
【0302】
[0318] 態様12C-反復探索プロセスを実行することが、双方向マッチング又はテンプレートマッチングを実行することを含む、態様1Cから11Cのいずれかに記載の方法。
【0303】
[0319] 態様13C-ビデオデータを処理するためのデバイスが、ビデオデータを記憶するように構成されたメモリと、処理回路とを含み、処理回路は、反復探索プロセスを含むデコーダ側動きベクトル導出プロセスを使用して、ビデオデータのブロックのための動きベクトルを決定するように構成され、ここで、反復探索プロセスを実行するために、処理回路が、前の探索反復を通して最小コストを決定し、現在の探索反復を通して総最小コストを更新し、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて、反復探索プロセスを早期に終了するように更に構成され、動きベクトルを使用してビデオデータのブロックを符号化又は復号するように構成される。
【0304】
[0320] 態様14C-前の探索反復が、現在の探索反復の直前にある、態様13Cに記載のデバイス。
【0305】
[0321] 態様15C-反復探索プロセスを実行するために、処理回路が、候補位置の少なくとも現在のサブセットに基づいて、現在の探索反復を通して総最小コストを計算するように更に構成される、態様13C及び14Cのいずれかに記載のデバイス。
【0306】
[0322] 態様16C-前の探索反復による最小コストと現在の探索反復による総最小コストとの比較に基づいて反復探索プロセスを早期に終了するために、処理回路が、前の探索反復による最小コストと現在の探索反復による総最小コストとの差分を計算し、差分閾値に対する差分に基づいて反復探索プロセスを早期に終了するように更に構成される、態様13Cから15Cのいずれかに記載のデバイス。
【0307】
[0323] 態様17C-差分閾値が、ブロックのサイズに基づく、態様16Cに記載のデバイス。
【0308】
[0324] 態様18C-前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて反復探索プロセスを早期に終了するために、処理回路が、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比を計算し、比閾値に対する比に基づいて反復探索プロセスを早期に終了するように更に構成される、態様13Cから17Cのいずれかに記載のデバイス。
【0309】
[0325] 態様19C-比閾値が、固定されるか、又はブロックのサイズに基づく、態様18Cに記載のデバイス。
【0310】
[0326] 態様20C-前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて反復探索プロセスを早期に終了するために、処理回路が、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの差分を計算し、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの差分に対する前の探索反復を通した最小コストの比を計算し、比閾値に対する比に基づいて反復探索プロセスを早期に終了するように更に構成される、態様13Cから19Cのいずれかに記載のデバイス。
【0311】
[0327] 態様21C-比閾値が、固定されるか、又はブロックのサイズに基づく、態様20Cに記載のデバイス。
【0312】
[0328] 態様22C-前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較に基づいて反復探索プロセスを早期に終了するために、処理回路が、前の探索反復を通した最小コストと現在の探索反復を通した総最小コストとの比較、及び前の探索反復を通した最小コストと現在の探索反復の最小コストとの比較に基づいて反復探索プロセスを早期に終了するように更に構成される、態様13Cから21Cのいずれかに記載のデバイス。
【0313】
[0329] 態様23C-反復探索プロセスが、3回以上の反復を含む、態様13Cから22Cのいずれか1つに記載のデバイス。
【0314】
[0330] 態様24C-反復探索プロセスを実行するために、処理回路が、双方向マッチング又はテンプレートマッチングを実行するように構成される、態様13Cから23Cのいずれかに記載のデバイス。
【0315】
[0331] 態様25C-ビデオデータを表示するように構成されたディスプレイを更に備える、態様13Cから24Cのいずれかに記載のデバイス。
【0316】
[0332] 態様26C-デバイスが、カメラ、コンピュータ、モバイルデバイス、ブロードキャスト受信機デバイス、又はセットトップボックスのうちの1つ以上を備える、態様13Cから25Cのいずれかに記載のデバイス。
【0317】
[0333] 態様27C-デバイスが、ビデオデータをキャプチャするように構成されたカメラを備える、態様13Cから26Cのいずれかに記載のデバイス。
【0318】
[0334] 例に応じて、本明細書において説明された技法のうちのいずれかのいくつかの行為又はイベントが、異なる順序で実行されることが可能であり、追加され、統合され、又は完全に除外されてもよい(例えば、説明されたすべての行為又はイベントが技法の実践にとって必要であるとは限らない)ことを認識されたい。その上、いくつかの例では、行為又はイベントは、連続的にではなく、例えば、マルチスレッド処理、割込み処理、又は複数のプロセッサを通じて並行して実行されてもよい。
【0319】
[0335] 1つ以上の例では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせで実装されてよい。ソフトウェアで実装される場合、機能は、1つ以上の命令又はコードとして、コンピュータ可読媒体上に記憶されてもよく、又はコンピュータ可読媒体を介して送信されてもよく、ハードウェアベースの処理ユニットによって実行されてもよい。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に相当するコンピュータ可読記憶媒体、又は、例えば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含み得る。このように、コンピュータ読み取り可能な媒体は一般に、(1)非一時的である有形のコンピュータ読み取り可能な記憶媒体、又は(2)信号又は搬送波のような通信媒体に対応し得る。データ記憶媒体は、本開示で説明された技法の実装のための命令、コード、及び/又はデータ構造を取り出すために、1つ以上のコンピュータ又は1つ以上のプロセッサによってアクセスされ得る、任意の利用可能な媒体であってもよい。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
【0320】
[0336] 限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD-ROM若しくは他の光ディスクストレージ、磁気ディスクストレージ若しくは他の磁気ストレージデバイス、フラッシュメモリ、又は、命令若しくはデータ構造の形態の所望のプログラムコードを記憶するために使用でき、コンピュータによってアクセスすることができる任意の他の媒体を備えてもよい。また、任意の接続がコンピュータ可読媒体と適切に呼ばれる。例えば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、又は赤外線、無線、及びマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、又は他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、又は赤外線、無線、及びマイクロ波などのワイヤレス技術は、媒体の定義の中に含まれる。しかしながら、コンピュータ可読記憶媒体及びデータ記憶媒体は、接続、搬送波、信号、又は他の一時的な媒体を含まず、代わりに非一時的な有形記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク(disk)及びディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)、及びブルーレイディスク(disc)を含み、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記のものの組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
【0321】
[0337] 命令は、1つ又は複数のDSP、汎用マイクロプロセッサ、ASIC、FPGA、又は他の均等な集積論理回路構成若しくは個別論理回路構成などの、1つ又は複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」及び「処理回路」という用語は、上記の構造、又は本明細書で説明された技法の実装に適した任意の他の構造のうちのいずれかを指すことがある。加えて、いくつかの態様では、本明細書で説明された機能は、符号化及び復号のために構成された専用のハードウェアモジュール及び/若しくはソフトウェアモジュール内で提供されてもよく、又は複合コーデックの中に組み込まれてもよい。また、技法は、1つ以上の回路又は論理要素において完全に実装されてもよい。
【0322】
[0338] 本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、又はICのセット(例えば、チップセット)を含む、多種多様なデバイス又は装置において実装されてもよい。開示された技法を実施するように構成されたデバイスの機能的態様を強調するために、様々な構成要素、モジュール、又はユニットについて本開示で説明したが、それらは必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上記で説明したように、様々なユニットは、コーデックハードウェアユニットの中で組み合わせられてよく、又は好適なソフトウェア及び/若しくはファームウェアと連携して、上記で説明したような1つ以上のプロセッサを含む、相互動作可能なハードウェアユニットの集合によって提供されてよい。
【0323】
[0339] 様々な例が説明されてきた。これら及び他の例が以下の特許請求の範囲内に入る。
【国際調査報告】