(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-07-01
(45)【発行日】2022-07-11
(54)【発明の名称】並行処理による履歴ベースの動きベクトル予測のための方法並びのその装置とコンピュータプログラム
(51)【国際特許分類】
H04N 19/52 20140101AFI20220704BHJP
H04N 19/436 20140101ALI20220704BHJP
【FI】
H04N19/52
H04N19/436
(21)【出願番号】P 2020551396
(86)(22)【出願日】2019-06-25
(86)【国際出願番号】 US2019038995
(87)【国際公開番号】W WO2020018241
(87)【国際公開日】2020-01-23
【審査請求日】2020-09-23
(32)【優先日】2018-07-17
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-12-07
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】シュウ,シアオジョォン
(72)【発明者】
【氏名】リィウ,シャン
(72)【発明者】
【氏名】リ,シアン
【審査官】鉢呂 健
(56)【参考文献】
【文献】米国特許出願公開第2015/0208075(US,A1)
【文献】特表2015-526969(JP,A)
【文献】特表2021-524718(JP,A)
【文献】CHEN, Yi-Wen and WANG, Xianglin et al.,CE4-related: Modified History-based MVP to support parallel processing,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 12th Meeting: Macao, CN, 3-12 Oct. 2018, [JVET-L0106],JVET-L0106 (version 4),ITU-T,2018年10月08日,<URL: http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/12_Macao/wg11/JVET-L0106-v4.zip>: JVET-L0106.docx: pp. 1-3
【文献】ZHANG, Li et al.,CE4-related: History-based Motion Vector Prediction,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 11th Meeting: Ljubljana, SI, 10-18 July 2018, [JVET-K0104-v4],JVET-K0104 (version 4),ITU-T,2018年07月15日,<URL: http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/11_Ljubljana/wg11/JVET-K0104-v4.zip>: JVET-K0104_r3.docx: pp. 1-6
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00-19/98
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
ビデオデコーダが実行するビデオ復号の方法であって:
符号化されたビデオビットストリームから現在のピクチャを取得するステップであって、前記現在のピクチャは複数のユニットに分割され、各ユニットは複数のブロックに分割され、各ユニット内の前記複数のブロックは
各ユニットにおいてグリッドを形成
し、前記複数のユニットは前記現在のピクチャにおいてグリッドを形成する、ステップと;
前記複数のユニットのうちの1つのユニットについて、履歴動きベクトル(HMVP)バッファからのエントリを使用して、前記複数のブロックからの現在のブロックを復号するステップと;
前記復号された現在のブロックの動きベクトルで前記HMVPバッファを更新するステップと;
条件が満たされているかどうかを判断するステップであって、前記条件は(i)前記現在のブロックが
前記現在のピクチャにおけるグリッドの複数のユニットの行のうち最初のユニットにおけるグリッドの最初の行における最初のブロックであることと、(ii)前記複数の
ユニットが並列処理に従って復号されていることとを指定する、ステップと;
前記条件が満たされていると判断したことに応答して、前記HMVPバッファをリセットするステップと;
前記現在のブロックが前記現在のピクチャにおけるグリッドの複数のユニットの行のうち最初のユニットにおけるグリッドの最後の行における最後のブロックであるかどうかを判断するステップと;
前記現在のブロックが前記現在のピクチャにおけるグリッドの複数のユニットの行のうち最初のユニットにおけるグリッドの最後の行における最後のブロックであると判断したことに応答して、前記HMVPバッファの内容を行バッファにコピーするステップと;
を含む、方法。
【請求項2】
前記現在のブロックが
前記現在のピクチャにおけるグリッドの複数のユニットの行のうち2
番目のユニット
におけるグリッドの最後の行における最後のブロックであると判断したことに応答して、前記行バッファの内容を、次の行
におけるユニットの並列復号のために、別のHMVPバッファにコピーするステップ、
を更に含む、請求項
1に記載の方法。
【請求項3】
前記HMVPバッファは先入れ先出し(FIFO)バッファであり、動きベクトルで前記HMVPバッファを更新する前記ステップは、前記HMVPバッファの最後のエントリに前記動きベクトルを格納するステップと、前記HMVPバッファの最初のエントリを削除するステップとを含む、
請求項1
又は2に記載の方法。
【請求項4】
前記ユニットは、符号化ツリーユニット(CTU)である、
請求項1乃至
3のいずれか1項に記載の方法。
【請求項5】
前記ユニットはタイルであり、前記複数のユニットのうちの復号された前記1つのユニットは第1タイルであり、前記第1タイル及び前記複数のユニットからの第2タイルは並列に復号される、
請求項1乃至
4のいずれか1項に記載の方法。
【請求項6】
ビデオ復号のためのビデオデコーダであって:
符号化されたビデオビットストリームから現在のピクチャを取得し、前記現在のピクチャは複数のユニットに分割され、各ユニットは複数のブロックに分割され、各ユニット内の前記複数のブロックは
各ユニットにおいてグリッドを形成し、
前記複数のユニットは前記現在のピクチャにおいてグリッドを形成し、
前記複数のユニットのうちの1つのユニットについて、履歴動きベクトル(HMVP)バッファからのエントリを使用して、前記複数のブロックからの現在のブロックを復号し、
前記復号された現在のブロックの動きベクトルで前記HMVPバッファを更新し、
条件が満たされているかどうかを判断し、前記条件は(i)前記現在のブロックが
前記現在のピクチャにおけるグリッドの複数のユニットの行のうち最初のユニットにおけるグリッドの最初の行における最初のブロックであることと、(ii)前記複数の
ユニットが並列処理に従って復号されていることとを指定しており、
前記条件が満たされていると判断したことに応答して、前記HMVPバッファをリセット
し、
前記現在のブロックが前記現在のピクチャにおけるグリッドの複数のユニットの行のうち最初のユニットにおけるグリッドの最後の行における最後のブロックであるかどうかを判断し、
前記現在のブロックが前記現在のピクチャにおけるグリッドの複数のユニットの行のうち最初のユニットにおけるグリッドの最後の行における最後のブロックであると判断したことに応答して、前記HMVPバッファの内容を行バッファにコピーする、
ように構成された処理回路;
を含む、ビデオデコーダ。
【請求項7】
前記処理回路は、
前記現在のブロックが
前記現在のピクチャにおけるグリッドの複数のユニットの行のうち2
番目のユニット
におけるグリッドの最後の行における最後のブロックであると判断したことに応答して、前記行バッファの内容を、次の行
におけるユニットの並列復号のために、別のHMVPバッファにコピーする、
ように更に構成される、請求項
6に記載のビデオデコーダ。
【請求項8】
前記HMVPバッファは先入れ先出し(FIFO)バッファであり、動きベクトルで前記HMVPバッファを更新することは、前記HMVPバッファの最後のエントリに前記動きベクトルを格納することと、前記HMVPバッファの最初のエントリを削除することを含む、
請求項
6又は7に記載のビデオデコーダ。
【請求項9】
前記ユニットは、符号化ツリーユニット(CTU)である、
請求項
6乃至
8のいずれか1項に記載のビデオデコーダ。
【請求項10】
前記ユニットはタイルであり、前記複数のユニットのうちの復号された前記1つのユニットは第1タイルであり、前記第1タイル及び前記複数のユニットからの第2タイルは並列に復号される、
請求項
6乃至
9のいずれか1項に記載のビデオデコーダ。
【請求項11】
ビデオデコーダ内のプロセッサによって実行されると、該プロセッサに、
符号化されたビデオビットストリームから現在のピクチャを取得するステップであって、前記現在のピクチャは複数のユニットに分割され、各ユニットは複数のブロックに分割され、各ユニット内の前記複数のブロックは
各ユニットにおいてグリッドを形成
し、前記複数のユニットは前記現在のピクチャにおいてグリッドを形成する、ステップと;
前記複数のユニットのうちの1つのユニットについて、履歴動きベクトル(HMVP)バッファからのエントリを使用して、前記複数のブロックからの現在のブロックを復号するステップと;
前記復号された現在のブロックの動きベクトルで前記HMVPバッファを更新するステップと;
条件が満たされているかどうかを判断するステップであって、前記条件は(i)前記現在のブロックが
前記現在のピクチャにおけるグリッドの複数のユニットの行のうち最初のユニットにおけるグリッドの最初の行における最初のブロックであることと、(ii)前記複数の
ユニットが並列処理に従って復号されていることとを指定する、ステップと;
前記条件が満たされていると判断したことに応答して、前記HMVPバッファをリセットするステップと;
前記現在のブロックが前記現在のピクチャにおけるグリッドの複数のユニットの行のうち最初のユニットにおけるグリッドの最後の行における最後のブロックであるかどうかを判断するステップと;
前記現在のブロックが前記現在のピクチャにおけるグリッドの複数のユニットの行のうち最初のユニットにおけるグリッドの最後の行における最後のブロックであると判断したことに応答して、前記HMVPバッファの内容を行バッファにコピーするステップと;
を含む方法を実行させるコンピュータプログラム。
【請求項12】
前記方法は、
前記現在のブロックが
前記現在のピクチャにおけるグリッドの複数のユニットの行のうち2
番目のユニット
におけるグリッドの最後の行における最後のブロックであると判断したことに応答して、前記行バッファの内容を、次の行
におけるユニットの並列復号のために、別のHMVPバッファにコピーするステップ、
を更に実行させる、請求項
11に記載のコンピュータプログラム。
【請求項13】
前記HMVPバッファは先入れ先出し(FIFO)バッファであり、動きベクトルで前記HMVPバッファを更新する前記ステップは、前記HMVPバッファの最後のエントリに前記動きベクトルを格納するステップと、前記HMVPバッファの最初のエントリを削除するステップとを含む、
請求項
11又は12に記載コンピュータプログラム。
【請求項14】
前記ユニットは、符号化ツリーユニット(CTU)である、
請求項
11乃至
13のいずれか1項に記載のコンピュータプログラム。
【請求項15】
前記ユニットはタイルであり、前記複数のユニットのうちの復号された前記1つのユニットは第1タイルであり、前記第1タイル及び前記複数のユニットからの第2タイルは並列に復号される、
請求項
11乃至
14のいずれか1項に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
[参照による組み込み]
本願は、2018年12月7日に出願された米国特許出願第16/213,705号「METHOD AND APPARATUS FOR HISTORY-BASED MOTION VECTOR PREDICTION WITH PARALLEL PROCESSING」の優先権の利益を主張する。同出願は、2018年7月17日に出願された米国仮出願第62/699,372号「TECHNIQUES FOR MOTION VECTOR DIFFERENCE CODING IN BI-DIRECTIONAL MOTION COMPENSATION」の優先権の利益を主張している。これらは、その全体が参照により明細書に組み込まれる。
【0002】
[技術分野]
本開示は、一般的にビデオ符号化に関連する実施形態を説明する。
【背景技術】
【0003】
本明細書で提供される背景の説明は、本開示の文脈を一般的に提示するためのものである。現在の発明者の作業は、その作業がこの背景セクションに記載されている範囲で、並びに出願時に他の方法では先行技術として適格でない可能性がある説明の側面では、本開示に対する先行技術として明示的にも暗示的にも認められていない。
【0004】
動き補償を用いるインターピクチャ予測を使用するビデオ符号化及び復号は、数十年も知られている。非圧縮デジタルビデオは、一連のピクチャを含むことができ、各ピクチャは、例えば1920×1080の輝度サンプル及び関連するクロミナンスサンプルの空間寸法を有する。一連のピクチャは、例えば60ピクチャ/秒又は60Hzの固定又は可変のピクチャレート(略式に、フレームレートとしても知られる)を有することができる。非圧縮ビデオは、かなりのビットレート要件を有する。例えばサンプル当たり8ビットの1080p60 4:2:0ビデオ(60Hzフレームレートで1920×1080の輝度サンプル解像度)は1.5Gbit/sに近い帯域幅を必要とする。このようなビデオの1時間は、600Gバイトを超える記憶領域を必要とする。
【0005】
ビデオ符号化及び復号の1つの目的は、圧縮による入力ビデオ信号の冗長性の低減であり得る。圧縮は、前述の帯域幅又は記憶領域の必要性を、場合によっては2桁以上減らすのに役立つ可能性がある。可逆圧縮及び非可逆圧縮の両方、並びにそれらの組合せを用いることができる。可逆圧縮は、元の信号の正確なコピーを、圧縮された元の信号から再構築することができる技術をいう。非可逆圧縮を使用するとき、再構築された信号は、元の信号と同一ではない可能性があるが、元の信号と再構築された信号との間の歪みは、再構築された信号を意図された用途に役立たせるために十分小さい。ビデオの場合、非可逆圧縮が広く用いられている。許容される歪みの量は、用途に依存し、例えば特定の消費者ストリーミングアプリケーションのユーザは、テレビジョン寄与アプリケーションのユーザよりも高い歪みを許容し得る。達成可能な圧縮比は、より高い許可/許容可能な歪みが、より高い圧縮比をもたらすことができることを反映し得る。
【0006】
動き補償は、非可逆圧縮技術とすることができ、以前に再構築されたピクチャ又はその一部(参照ピクチャ)からのサンプルデータのブロックが、動きベクトル(以下、MV)によって示される方向に空間的にシフトされた後に、新たに再構築されたピクチャ又はその一部の予測のために使用される技術に関連付けることができる。場合によっては、参照ピクチャは、現在再構築中のピクチャと同じものとすることができる。MVは、X及びYの2次元又は3次元を有することができ、3次元は、使用中の参照ピクチャの表示である(後者は間接的に、時間次元とすることができる)。
【0007】
いくつかのビデオ圧縮技術では、サンプルデータのある領域に適用可能なMVを、他のMVから、例えば再構築中の領域に空間的に隣接し、復号順でそのMVに先行するサンプルデータの別の領域に関連するMVから、予測することができる。そのようにすることにより、MVを符号化するために必要なデータ量を大幅に削減することができ、それによって冗長性を除去し、圧縮を増加させることができる。MV予測は、例えばカメラから導出された入力ビデオ信号(ナチュラルビデオとして知られる)を符号化する際に、単一のMVが適用可能な領域よりも大きな領域が同様の方向に移動する統計的可能性があり、したがって、場合によっては、隣接領域のMVから導出される同様の動きベクトルを使用して予測することができるので、効果的に機能することができる。その結果、所与の領域について見つかったMVは、周囲のMVから予測されるMVと類似又は同一になり、そして、これは、エントロピー符号化の後、MVを直接符号化する場合に使用されるであろうものよりも少ないビット数で表現することができる。場合によっては、MV予測は、元の信号(すなわち、サンプルストリーム)から導出された信号(すなわち、MV)の可逆圧縮の例であり得る。他の場合には、MV予測それ自体は、例えばいくつかの周囲のMVから予測子を計算する際の丸め誤差のために、非可逆的であり得る。
【0008】
様々なMV予測機構が、H.265/HEVC(ITU-T Rec.H.265、「High Efficiency Video Coding」、2016年12月)で説明されている。H.265が提供する多くのMV予測機構のうち、ここで説明されるのは、これから「空間マージ」と呼ばれる技術である。
【0009】
動作ベクトル予測子の履歴バッファが、符号化又は復号を実行するために使用されることがある。一般に、履歴バッファの維持は、各ブロックの後に行われ、符号化又は復号の順序で完了する。このブロックがMV情報のセットとインターモードで符号化される場合、このブロックのMVは、バッファを更新するためにHMVPバッファに入れられる。現在のブロックを符号化又は復号するとき、現在のブロックに対するMV予測子は、以前に符号化された空間的/隣接ブロックから来る可能性がある。これらのブロックのいくつかは、依然としてHMVPバッファ内にある可能性がある。新たに復号/符号化されたMVをHMVPバッファに入れるとき、新たなMVがHMVPバッファ内のすべての以前のMVと異なることを確認するために、いくつかの比較が行われることがある。バッファ内に同じ値を有するMVが既に存在する場合、古いMVはバッファから削除されることになり、新しいMVが最後のエントリとしてバッファに入れられる。履歴バッファのこれらの一般的な維持手順は、符号化又は復号されている現在のブロックに関連しない可能性がある情報を履歴バッファから除去する必要があるときに、履歴バッファを適切にリセットしない。さらに、履歴バッファを使用するブロックの符号化又は復号は、ブロックの並列処理を適切に考慮しない。
【発明の概要】
【0010】
本開示の例示的な実施形態は、ビデオ復号のための方法を含む。方法は、符号化されたビデオビットストリームから現在のピクチャを取得するステップを含み、ここで、現在のピクチャは複数のユニットに分割され、各ユニットは複数のブロックに分割され、各ユニット内の複数のブロックはグリッド状を形成する。方法は、複数のユニットのうちの1つのユニットについて、履歴動きベクトル(HMVP)バッファからのエントリを使用して、複数のブロックからの現在のブロックを復号するステップを更に含む。方法は、復号された現在のブロックの動きベクトルでHMVPバッファを更新するステップを更に含む。方法は、条件が満たされているかどうかを判断するステップを更に含み、条件は(i)現在のブロックが複数のユニットのうちの1つのユニットのグリッドにおける行の先頭であることと、(ii)複数のブロックが並列処理に従って復号されていることとを指定する。方法は、条件が満たされていると判断したことに応答して、HMVPバッファをリセットするステップを更に含む。
【0011】
本開示の例示的実施形態は、ビデオデコーダを含む。ビデオデコーダは、符号化されたビデオビットストリームから現在のピクチャを取得するように構成された処理回路を含み、ここで、現在のピクチャは複数のユニットに分割され、各ユニットは複数のブロックに分割され、各ユニット内の複数のブロックはグリッド状を形成する。処理回路は更に、複数のユニットのうちの1つのユニットについて、履歴動きベクトル(HMVP)バッファからのエントリを使用して、複数のブロックからの現在のブロックを復号するように構成される。処理回路は更に、復号された現在のブロックの動きベクトルでHMVPバッファを更新するように構成される。処理回路は更に、条件が満たされているかどうかを判断するように構成され、条件は(i)現在のブロックが複数のユニットのうちの1つのユニットのグリッドにおける行の先頭であることと、(ii)複数のブロックが並列処理に従って復号されていることとを指定する。処理回路は更に、条件が満たされていると判断したことに応答して、HMVPバッファをリセットするように構成される。
【0012】
本開示の例示的実施形態は、ビデオデコーダ内のプロセッサによって実行されると、プロセッサに方法を実行させる命令を有する非一時的なコンピュータ読取可能媒体を含む。方法は、符号化されたビデオビットストリームから現在のピクチャを取得するステップを含み、ここで現在のピクチャは複数のユニットに分割され、各ユニットは複数のブロックに分割され、各ユニット内の複数のブロックはグリッド状を形成する。方法は、複数のユニットのうちの1つのユニットについて、履歴動きベクトル(HMVP)バッファからのエントリを使用して、複数のブロックからの現在のブロックを復号するステップを更に含む。方法は、復号された現在のブロックの動きベクトルでHMVPバッファを更新するステップを更に含む。方法は、条件が満たされているかどうかを判断するステップを更に含み、条件は(i)現在のブロックが複数のユニットのうちの1つのユニットのグリッドにおける行の先頭であることと、(ii)複数のブロックが並列処理に従って復号されていることとを指定する。方法は、条件が満たされていると判断したことに応答して、HMVPバッファをリセットするステップを更に含む。
【図面の簡単な説明】
【0013】
開示される主題の更なる特徴、性質及び様々な利点は、以下の詳細な説明及び添付の図面からより明らかになるであろう:
【0014】
【
図1】一実施形態による通信システム(100)の簡略化されたブロック図の概略図である。
【0015】
【
図2】一実施形態による通信システム(200)の簡略化されたブロック図の概略図である。
【0016】
【
図3】一実施形態によるデコーダの簡略化されたブロック図の概略図である。
【0017】
【
図4】一実施形態によるエンコーダの簡略化されたブロック図の概略図である。
【0018】
【
図5】別の実施形態によるエンコーダのブロック図を示す。
【0019】
【
図6】別の実施形態によるデコーダのブロック図を示す。
【0020】
【
図7】現在のブロックと周囲の空間マージ候補の概略図である。
【0021】
【
図8】動きベクトル差(MVD:motion vector difference)を符号化する例示のシンタックスを示す図である。
【0022】
【
図9】第1MVDを予測子として使用する第2MVDの予測符号化の例を示す図である。
【0023】
【
図10A】履歴ベースの動きベクトル予測バッファの実施形態を示す図である。
【
図10B】履歴ベースの動きベクトル予測バッファの実施形態を示す図である。
【0024】
【
図11】符号化ツリーユニットに分割された例示のピクチャを示す図である。
【0025】
【
図12】タイルに分割されたピクチャの例を示す図である。
【0026】
【
図13】エンコーダ又はデコーダによって実行されるプロセスの一実施形態を示す図である。
【0027】
【
図14】一実施形態によるコンピュータシステムの概略図である。
【発明を実施するための形態】
【0028】
図1は、本開示の一実施形態による通信システム(100)の簡略化されたブロック図を示している。通信システム(100)は、例えばネットワーク(150)を介して互いに通信することができる複数の端末デバイスを含む。例えば通信システム(100)は、ネットワーク(150)を介して相互接続される第1ペアの端末デバイス(110)及び(120)を含む。
図1の例では、第1ペアの端末デバイス(110)及び(120)は、データの一方向送信を行う。例えば端末デバイス(110)は、ネットワーク(150)を介して他の端末デバイス(120)へ伝送するために、ビデオデータ(例えば端末デバイス(110)によってキャプチャされるビデオピクチャのストリーム)を符号化してよい。符号化されたビデオデータを、1つ以上の符号化されたビデオビットストリームの形態で送信することができる。端末デバイス(120)は、ネットワーク(150)から符号化されたビデオデータを受け取り、符号化されたビデオデータを復号してビデオピクチャを復元し、復元されたビデオデータに従ってビデオピクチャを表示してよい。一方向性データ伝送は、媒体提供アプリケーション等において一般的であり得る。
【0029】
別の例では、通信システム(100)は、例えばビデオ会議中に起こり得る符号化されたビデオデータの双方向伝送を行う、第2ペアの端末デバイス(130)及び(140)を含む。データの双方向伝送のために、端末デバイス(130)及び(140)の各端末デバイスは、ネットワーク(150)を介して端末デバイス(130)及び(140)のうちの他の端末デバイスへ伝送するために、ビデオデータ(例えば端末デバイスによってキャプチャされるビデオピクチャのストリーム)を符号化してよい。また、端末デバイス(130)及び(140)の各端末デバイスは、端末デバイス(130)及び(140)のうちの他の端末デバイスによって送信された符号化されたビデオデータを受け取ってよく、符号化されたビデオデータを復号してビデオピクチャを復元してよく、復元されたビデオデータに従って、アクセス可能なディスプレイデバイス上にビデオピクチャを表示してよい。
【0030】
図1の例では、端末デバイス(110)、(120)、(130)及び(140)は、サーバ、パーソナルコンピュータ及びスマートフォンとして図示されているが、本開示の原理はそのように限定され得ない。本開示の実施形態は、ラップトップコンピュータ、タブレットコンピュータ、メディアプレーヤ及び/又は専用のビデオ会議機器での用途を見つける。ネットワーク(150)は、符号化されたビデオデータを端末デバイス(110)、(120)、(130)及び(140)の中で伝達する任意の数のネットワークを表し、例えばワイヤ線(有線)及び/又は無線通信ネットワークを含む。通信ネットワーク(150)は、回路切替及び/又はパケット切替チャネルでデータを交換してよい。代表的なネットワークは、電気通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク及び/又はインターネットを含む。本議論の目的のために、ネットワーク(150)のアーキテクチャ及びトポロジは、以下で説明されない限り、本開示の動作には重要ではないことがある。
【0031】
図2は、本開示の主題の適用の例示として、ストリーミング環境におけるビデオエンコーダ及びビデオデコーダの配置を図示している。開示される主題は、例えばビデオ会議、デジタルテレビ、CD、DVD、メモリスティック等を含むデジタルメディア上における圧縮ビデオの格納を含む、他のビデオ対応アプリケーションに等しく適用可能であり得る。
【0032】
ストリーミングシステムは、キャプチャサブシステム(213)を含んでよい。キャプチャサブシステム(213)は、例えば圧縮されていないビデオピクチャのストリーム(202)を作成するビデオソース(201)、例えばデジタルカメラを含むことができる。一例では、ビデオピクチャのストリーム(202)は、デジタルカメラによって撮られたサンプルを含む。ビデオピクチャのストリーム(202)は、符号化されたビデオデータ(204)(又は符号化されたビデオビットストリーム)と比べると、高データボリュームを強調するために、太線で示されており、ビデオソース(201)に結合されるビデオエンコーダ(203)を含む電子デバイス(220)によって処理することができる。ビデオエンコーダ(203)は、以下でより詳細に説明される開示される主題の態様を可能に又は実装するために、ハードウェア、ソフトウェア又はそれらの組合せを含むことができる。符号化されたビデオデータ(204)(又は符号化されたビットストリーム(204))は、ビデオピクチャのストリーム(202)と比べると、より低いデータボリュームを強調するために、細線で示されており、将来の使用のために、ストリーミングサーバ(205)上に格納され得る。
図2のクライアントサブシステム(206)及び(208)のような1つ以上のストリーミングクライアントサブシステムは、ストリーミングサーバ(205)にアクセスして、符号化されたビデオデータ(204)のコピー(207)及び(209)を取り出すことができる。クライアントサブシステム(206)は、例えば電子デバイス(230)内にビデオデコーダ(210)を含むことができる。ビデオデコーダ(210)は、符号化されたビデオデータの入ってきたコピー(207)を復号し、ディスプレイ(212)(例えばディスプレイ画面)又は他のレンダリングデバイス(図示せず)上にレンダリングすることができるビデオピクチャの出力ストリーム(211)を作成する。いくつかのストリーミングシステムでは、符号化されたビデオデータ(204)(207)及び(209)(例えばビデオストリーム)を、特定のビデオ符号化/圧縮規格に従って符号化することができる。これらの規格の例は、ITU-T推奨のH.265を含む。一例では、開発中のビデオ符号化規格は、略式に、Versatile Video Coding又はVVCとして知られている。開示される主題は、VVCのコンテキストで使用されてよい。
【0033】
電子デバイス(220)及び(230)は他のコンポーネント(図示せず)を含むことができることに留意されたい。例えば電子デバイス(220)はビデオデコーダ(図示せず)を含むことができ、同様に電子デバイス(230)はビデオエンコーダ(図示せず)を含むことができる。
【0034】
図3は、本開示の実施形態によるビデオデコーダ(310)のブロック図を示している。ビデオデコーダ(310)を電子デバイス(330)に含めることができる。電子デバイス(330)は、レシーバ(331)(例えば受信回路)を含むことができる。ビデオデコーダ(310)を、
図2の例のビデオデコーダ(210)の代わりに使用することができる。
【0035】
レシーバ(331)は、ビデオデコーダ(310)によって復号されるべき1つ以上の符号化されたビデオシーケンスを受け取ってよく;同じ又は別の実施形態では、一度に1つの符号化されたビデオシーケンスであってよく、この場合、各符号化されたビデオシーケンスの復号は、他の符号化されたビデオシーケンスとは独立である。符号化されたビデオシーケンスは、チャネル(301)から受け取られてよく、該チャネル(301)は、符号化されたビデオデータを格納するストレージデバイスへのハードウェア/ソフトウェアリンクであってよい。レシーバ(331)は、エンティティ(図示せず)を使用してそれらのそれぞれに転送され得る他のデータ、例えば符号化されたオーディオデータ及び/又は補助データストリームとともに、符号化されたビデオデータを受け取ってよい。レシーバ(331)は、符号化されたビデオストリームを他のデータとは分離してよい。ネットワークジッタと戦うために、バッファメモリ(315)は、レシーバ(331)とエントロピーデコーダ/パーサ(320)(以後、「パーサ(320)」)の間に結合されてよい。特定の適用では、バッファメモリ(315)は、ビデオデコーダ(310)の一部である。他の例では、バッファメモリ(315)は、ビデオデコーダ(31)(図示せず)の外部とすることができる。また他の例では、ビデオデコーダ(310)の内部の、例えば再生タイミングを扱う別のバッファメモリ(315)に加えて、例えばネットワークジッタと戦うバッファメモリ(図示せず)がビデオデコーダ(310)の外部に存在する可能性もある。レシーバ(331)が、十分な帯域幅及び制御可能性の格納/転送デバイスから又は同期ネットワーク(isosynchronous network)からデータを受け取っているとき、バッファメモリ(315)は必要とされないことがあるか又は小さい可能性がある。そのようなベストエフォートのパケットネットワークにおける使用のために、バッファメモリ(315)は必要とされることがあり、比較的大きいものとすることができ、有利には適応サイズとすることができ、少なくとも部分的に、ビデオデコーダ(310)の外部でオペレーティングシステム内又は同様の要素(図示せず)内で実装されてよい。
【0036】
ビデオデコーダ(310)は、符号化されたビデオシーケンスからシンボル(321)を再構築するためにパーサ(320)を含んでよい。これらのシンボルのカテゴリは、ビデオデコーダ(310)の動作を管理するために使用される情報と、潜在的に
図3に示したように電子デバイス(33)の一体部分ではないが、電子デバイス(330)と結合することができるレンダリングデバイス(312)(例えばディスプレイ画面)等のレンダリングデバイスを制御する情報を含む。レンダリングデバイスのための制御情報は、補足強調情報(SEI:Supplementary Enhancement Information)メッセージ又はビデオユーザビリティ情報(VUI:Video Usability Information)パラメータセットフラグメント(図示せず)の形であってよい。パーサ(320)は、受け取った符号化されたビデオシーケンスを解析/エントロピー復号してよい。符号化されるビデオシーケンスの符号化は、ビデオ符号化技術又は規格によるものとすることができ、可変長符号化、ハフマン符号化、文脈依存を伴うか又は伴わない算術符号化等を含む、様々な原理に従うことができる。パーサ(320)は、符号化されたビデオシーケンスから、ビデオデコーダ内のピクセルのサブグループのうちの少なくとも1つについての1組のサブグループパラメータを、グループの少なくとも1つのパラメータに基づいて抽出し得る。サブグループは、グループオブピクチャ(GOP)、ピクチャ、タイル、スライス、マイクロブロック、符号化ユニット(CU)、ブロック、変換ユニット(TU)、予測ユニット(PU)等を含むことができる。パーサ(320)は、符号化されたビデオシーケンスから、例えば変換係数、量子化気パラメータ値、動きベクトル等の情報も抽出し得る。
【0037】
パーサ(320)は、シンボル(321)を作成するよう、バッファメモリ(315)から受け取ったビデオシーケンスに対してエントロピー復号/解析操作を実行し得る。
【0038】
シンボル(321)の再構築は、符号化されたビデオピクチャ又はその一部(例えばインター及びイントラピクチャ、インター及びイントラブロック)のタイプ及び他の因子に応じて、複数の異なるユニットを要する可能性がある。どのユニットが及びどのように関与するかは、符号化されたビデオシーケンスからパーサ(320)によって解析されたサブグループ制御情報によって制御できる。以下、パーサ(320)と複数のユニットとの間のそのようなサブグループ制御情報の流れは、明確性のために示されない。
【0039】
すでに述べた機能ブロックの他に、ビデオデコーダ(310)を、以下で説明されるように複数の機能ユニットに概念的に細分することができる。商業的制約の下で動作する実用的な実装では、これらのユニットの多くは、相互に密接に相互作用し、少なくとも部分的に相互に統合される可能性がある。しかしながら、開示される主題を説明する目的のために、以下、機能ユニットへの概念的細分は適切である。
【0040】
第1ユニットは、スカラー/逆変換ユニット(351)である。スカラー/逆変換ユニット(351)は、量子化された変換係数、並びに使用すべき変換、ブロックサイズ、量子化因子、量子化スケーリングメトリクス等を含む制御情報を、パーサ(32)からのシンボル(321)として受け取る。スカラー/逆変換ユニット(351)は、アグリゲータ(355)に入力することができるサンプル値を含むブロックを出力することができる。
【0041】
場合によって、スカラー/逆変換ユニット(351)の出力サンプルは、イントラ符号化ブロック、すなわち、以前に再構築されたピクチャからの予測情報を使用しないが、現在のピクチャの以前に再構築された部分からの予測情報を使用することができるブロックに関係する可能性がある。そのような予測情報を、イントラピクチャ予測ユニット(352)によって提供することができる。いくつかの場合では、イントラピクチャ予測ユニット(352)は、現在のピクチャバッファ(358)からフェッチされた、周囲の既に再構築された情報を使用して、同じサイズのブロック及び再構築中のそのブロックの形状を生成する。現在のピクチャバッファ(358)は、例えば部分的に再構築された現在のピクチャ及び/又は完全に再構築された現在のピクチャをバッファする。アグリゲータ(355)は、場合によって、サンプルごとに、予測ユニット(352)によって生成された予測情報を、スカラー/逆変換ユニット(351)によって提供されるような出力サンプル情報に追加する。
【0042】
他の場合には、スカラー/逆変換ユニット(351)の出力サンプルは、インター符号化された、潜在的には動き補償されたブロックに関係する可能性がある。そのような場合、動き補償予測ユニット(353)は、参照ピクチャメモリ(357)にアクセスして、予測のために使用されるサンプルをフェッチすることができる。ブロックに関係するシンボル(321)に従って、フェッチされたサンプルを動き補償した後、出力サンプル情報を生成するために、これらのサンプルを、アグリゲータ(355)によって、(この場合、残差サンプル又は残差信号と呼ばれる)スカラー/逆変換ユニット(351)の出力に追加することができる。動き補償予測ユニット(353)が予測サンプルをフェッチする参照ピクチャメモリ(357)内のアドレスを、例えばX、Y及び参照ピクチャコンポーネントを有することができるシンボル(321)の形態で動き補償予測ユニット(343)に利用可能な動きベクトルによって制御することができる。動き補償は、サブサンプルの正確な動きベクトルが使用されているときに、参照ピクチャメモリ(357)からフェッチされるサンプル値の補間、動きベクトル予測機構等も含むことができる。
【0043】
アグリゲータ(355)の出力サンプルは、ループフィルタユニット(356)において様々なループフィルタリング技術を受けることができる。ビデオ圧縮技術は、符号化されたビデオシーケンス(符号化されたビデオビットストリームとも呼ばれる)に含まれるパラメータによって制御され、パーサ(320)からのシンボル(321)としてループフィルタユニット(356)に利用可能にされるインループフィルタ技術を含むことができるが、符号化されたピクチャ又は符号化されたビデオシーケンスの(復号順で)以前の部分の復号の間に取得されるメタ情報に応じるだけでなく、以前に再構築されてループフィルタされたサンプル値にも応じたものとすることができる。
【0044】
ループフィルタユニット(356)の出力は、レンダリングデバイス(312)に出力することができ、将来のインターピクチャ予測での使用のために参照ピクチャメモリ(357)に格納することができ、サンプルストリームとすることができる。
【0045】
特定の符号化されたピクチャは、いったん十分に再構築されると、将来の予測のために参照ピクチャとして使用することができる。例えば現在のピクチャに対応する符号化されたピクチャが十分に再構築されて、符号化されたピクチャが参照ピクチャとして(例えばパーサ(320)によって)識別されると、現在のピクチャバッファ(358)は、参照ピクチャメモリ(357)の一部になることができ、続く符号化されたピクチャの再構築を開始する前にフレッシュな現在のピクチャバッファを再割り当てすることができる。
【0046】
ビデオデコーダ(310)は、ITU-T Rec. H265等の規格の所定のビデオ圧縮技術に従って復号動作を実行してよい。符号化されたビデオシーケンスは、該符号化されたビデオシーケンスが、ビデオ圧縮技術又は規格のシンタックスと、ビデオ圧縮技術又は規格のドキュメントとしてのプロファイルの双方に固着するという意味で、使用されているビデオ圧縮技術又は規格によって指定されるシンタックスに準拠し得る。具体的に、プロファイルは、特定のツールを、ビデオ圧縮技術又は規格で利用可能なツールのすべてから、そのプロファイルの下で使用するための利用可能な唯一のツールとして選択することができる。また、準拠のために必要なことは、符号化されたビデオシーケンスの複雑性が、ビデオ圧縮技術又は規格のレベルによって定義される範囲内にあることである。場合によって、レベルは、最大ピクチャサイズ、最大フレームレート、最大再構築サンプルレート(例えば毎秒メガサンプルで測定される)、最大参照ピクチャサイズ等を制約する。レベルによって設定される制限は、場合によっては、仮想参照デコーダ(HRD:Hypothetical Reference Decoder)の仕様と、符号化されたビデオシーケンスでシグナリングされるHRDバッファ管理のためのメタデータを通して更に制約される可能性がある。
【0047】
実施形態において、レシーバ(331)は、符号化されたビデオとともに追加の(冗長)データを受け取ってよい。追加のデータは、符号化されたビデオシーケンスの一部として含まれてよい。追加のデータは、ビデオデコーダ(310によって、データを適切に復号し、かつ/又は元のビデオデータをより正確に再構築するために使用されてよい。追加のデータは、例えば時間的、空間的又は信号雑音比(SNR)強化層、冗長スライス、冗長ピクチャ、前方エラー訂正コード等の形態とすることができる。
【0048】
図4は、本開示の実施形態によるビデオエンコーダ(403)のブロック図を示している。ビデオエンコーダ(403)は電子デバイス(420)に含まれる。電子デバイス(420)はトランスミッタ(440)(例えば送信回路)を含む。ビデオエンコーダ(403)を、
図2の例のビデオエンコーダ(203)の代わりに使用することができる。
【0049】
ビデオエンコーダ(403)は、ビデオソース(401)(
図4の例では、電子デバイス(420)の一部ではない)からビデオサンプルを受け取ってよく、ビデオソース(401)は、ビデオエンコーダ(403)によって符号化されるべきビデオイメージをキャプチャし得る。別の例では、ビデオソース(401)は、電子デバイス(420)の一部である。
【0050】
ビデオソース(401)は、任意の適切なビット深度(例えば8ビット、10ビット、12ビット、...)、任意の色空間(例えばBT.601 Y CrCB、RGB、...)及び任意の適切なサンプリング構造(例えばY CrCb 4:2:0、Y CrCb 4:4:4)とすることができるデジタルビデオサンプルストリームの形態で、ビデオエンコーダ(403)によって符号化されるべきソースビデオシーケンスを提供してよい。メディアサービングシステムでは、ビデオソース(401)は、以前に準備されたビデオを格納しているストレージデバイスであってよい。ビデ会議システムでは、ビデオソース(401)は、ローカルイメージ情報をビデオシーケンスとしてキャプチャするカメラであってよい。ビデオデータは、シーケンスとして見られるときに動きを伝える、複数の個々のピクチャとして提供されてよい。ピクチャそれ自体が、ピクチャの空間アレイとして構成されてもよく、この場合、各ピクチャは、使用中のサンプリング構造、色空間等に応じて1つ以上のサンプルを含むことができる。当業者は、ピクセルとサンプルとの間の関係を容易に理解することができる。以下の説明は、サンプルに焦点を当てている。
【0051】
実施形態によると、ビデオエンコーダ(403)は、ソースビデオシーケンスのピクチャを、リアルタイムで又は適用によって要求される任意の他の時間制約下で、符号化されたビデオシーケンス(443)に符号化して圧縮することができる。適切な符号化スピードを実施することは、コントローラ(450)の1つの機能である。いくつかの実施形態において、コントローラ(450)は、以下で説明される他の機能ユニットを制御し、それらの他の機能ユニットに機能的に結合される。結合は明確性のために示されていない。コントローラ(450)によって設定されたパラメータは、レート制御関連パラメータ(ピクチャスキップ、量子化器、レート歪み最適化技術のラムダ値、...)、ピクチャサイズ、グループオブピクチャ(GOP)レイアウト、最大動きベクトル検索範囲等を含むことができる。コントローラ(45)は、特定のシステム設計のために最適化されたビデオエンコーダ(403)に関連する、他の適切な機能を有するように構成され得る。
【0052】
いくつかの実施形態において、ビデオエンコーダ(403)は、符号化ループで動作するように構成される。過剰に単純化された説明として、一例において、符号化ループは、(例えば符号化されるべき入力ピクチャ及び参照ピクチャに基づいて、シンボルストリーム等のシンボルを作成することに関与する)ソースコーダ(430)と、ビデオエンコーダ(403)に組み込まれた(ローカル)デコーダ(433)を含むことができる。デコーダ(433)は、(リモート)デコーダが作成する方法と同様の方法で(シンボルと、符号化されたビデオビットストリームとの間の任意の圧縮が、開示される主題で考慮されるビデオ圧縮技術で可逆であるように)シンボルを再構築してサンプルデータを作成する。再構築されたサンプルストリーム(サンプルデータ)は、参照ピクチャメモリ(434)に入力される。シンボルストリームの復号は、デコーダの位置(ローカル又はリモート)に依存しないビット正確な結果(bit-exact results)をもたらすので、参照ピクチャメモリ(434)の内容も、ローカルエンコーダとリモートエンコーダとの間でビット正確である。言い換えると、エンコーダの予測部分は、デコーダが復号中に予測を使用するときに「見る」ものと全く同じサンプル値を、参照ピクチャサンプルとして「見る」。参照ピクチャ同期性のこの基本的原理(及び例えばチャネルエラーのために同期生を維持できない場合に結果として生じるドリフト)は、いくつかの関連技術において同様に使用される。
【0053】
「ローカル」デコーダ(433)の動作は、
図3に関連して上記で既に詳述した、ビデオデコーダ(310)のような「リモート」デコーダのものと同じにすることができる。しかしながら、簡潔に
図3も参照すると、シンボルが利用可能であり、エントロピーコーダ(445)及びパーサ(320)による符号化ビデオシーケンスへのシンボルの符号化/復号は可逆とすることができ、バッファメモリ(315)を含むビデオデコーダ(310)のエントロピー復号部分及びパーサ(320)は、ローカルデコーダ(433)では完全に実装されないことがある。
【0054】
この時点で行うことができる観察は、デコーダ内に存在する構文解析/エントロピー復号を除く任意のデコーダ技術も必ず、対応するエンコーダ内に実質的に同一の機能形態で存在する必要があることである。この理由のために、開示される主題はデコーダ動作に焦点を当てる。エンコーダ技術の説明は、包括的に説明されるデコーダ技術の反対であるので、省略することができる。特定の領域においてのみ、より詳細な説明が必要であり、以下に提供される。
【0055】
動作中に、いくつかの例において、ソースコーダ(430)は、「参照ピクチャ」として指定されたビデオシーケンスからの1つ以上の以前に符号化されたピクチャを参照して入力ピクチャを予測的に符号化する、動き補償予測符号化を実行してよい。このようにして、符号化エンジン(432)は、入力ピクチャのピクセルブロックと、入力ピクチャに対する予測参照として選択され得る参照ピクチャのピクセルブロックとの間の差を符号化する。
【0056】
ローカルビデオデコーダ(433)は、ソースコーダ(430)によって作成されたシンボルに基づいて、参照ピクチャとして指定され得るピクチャの符号化されたビデオデータを復号してよい。符号化エンジン(432)の動作は有利には、非可逆プロセスであり得る。符号化されたビデオデータがビデオデコーダ(
図4では図示せず)で復号され得るとき、再構築されたビデオシーケンスは、典型的に、いくつかのエラーを伴うソースビデオシーケンスのレプリカであってよい。ローカルビデオデコーダ(433)は、参照ピクチャに対してビデオデコーダによって実行され得る復号プロセスを複製し、再構築された参照ピクチャを参照ピクチャキャッシュ(434)に記憶させてよい。このようにして、ビデオエンコーダ(403)は、共通のコンテンツを有する再構築された参照ピクチャのコピーを、遠端のビデオデコーダによって得られることになる(送信エラーのない)再構築された参照ピクチャとしてローカルに記憶してよい。
【0057】
予測子(435)は、符号化エンジン(432)について予測探索を実行してよい。すなわち、符号化されるべき新しいピクチャに対して、予測子(435)は、サンプルデータ(候補参照ピクセルブロックとして)又は参照ピクチャ動きベクトル、ブロック形状等のような特定のメタデータについて、参照ピクチャメモリ(434)を検索してよく、これらは、新たなピクチャについて適切な予測参照として機能し得る。予測子(435)は、適切な予測参照を見つけるために、ピクセルブロックバイサンプルブロックベース(sample block-by-pixel block basis)で作用し得る。場合によっては、予測子(435)によって得られた検索結果によって決定されるように、入力ピクチャは、参照ピクチャメモリ(434)に記憶された複数の参照ピクチャから引き出された予測参照を有してよい。
【0058】
コントローラ(450)は、例えばビデオデータを符号化するために使用されるパラメータ及びサブグループパラメータの設定を含め、ソースコーダ(430)の符号化動作を管理してよい。
【0059】
前述の機能ユニットのすべての出力は、エントロピーコーダ(445)におけるエントロピー符号化を受けてよい。エントロピーコーダ(445)は、例えばハフマン符号化、可変長符号化、算術符号化等の当業者に公知の技術に従ってシンボルを可逆圧縮することにより、様々な機能ユニットによって生成されたシンボルを符号化されたビデオシーケンスに変換する。
【0060】
トランスミッタ(440)は、エントロピーコーダ(445)によって作成された符号化されたビデオシーケンスをバッファリングして、通信チャネル(460)を介した送信の準備を行ってよく、通信チャネル(460)は、符号化されたビデオデータを記憶するストレージデバイスへのハードウェア/ソフトウェアリンクであってよい。トランスミッタ(440)は、ビデオコーダ(403)からの符号化されたビデオデータを、例えば符号化されたオーディオデータ及び/又は補助データストリーム(図示されないソース)のような、送信されるべき他のデータとマージしてよい。
【0061】
コントローラ(450)は、ビデオエンコーダ(403)の動作を管理してよい。符号化の間、コントローラ(450)は、各符号化ピクチャに特定の符号化ピクチャタイプを割り当ててよく、該符号化ピクチャタイプは、それぞれのピクチャに適用され得る符号化技術に影響を及ぼし得る。例えばピクチャは、しばしば、次のピクチャタイプの1つとして割り当てられてよい:
【0062】
イントラピクチャ(Iピクチャ)は、予測のソースとしてシーケンス内のいずれの他のピクチャも使用することなく、符号化されて復号され得るものであり得る。いくつかのビデオコーデックは、例えば独立デコーダリフレッシュ(「IDR」:Independent Decoder Refresh)ピクチャを含む、異なるタイプのイントラピクチャを許容する。当業者は、Iピクチャのこれらの変形例、並びにそれらのそれぞれの用途及び特徴を認識している。
【0063】
予測ピクチャ(Pピクチャ)は、各ブロックのサンプル値を予測するために、最大で1つの動きベクトルと参照インデックスを用いて、イントラ予測又はインター予測を使用して符号化されて復号され得るものであり得る。
【0064】
双方向予測ピクチャ(Bピクチャ)は、各ブロックのサンプル値を予測するために、最大で2つの動きベクトルと参照インデックスを用いて、イントラ予測又はインター予測を使用して符号化されて復号され得るものであり得る。同様に、複数の予測ピクチャは、単一ブロックの再構築のために、2つ以上の参照ピクチャ及び関連するメタデータを使用することができる。
【0065】
ソースピクチャは一般に、空間的に複数のサンプルブロック(例えば各々4×4、8×8、4×8又は16×16サンプルのブロック)に分割され、ブロック毎に符号化されてよい。ブロックは、ブロックのそれぞれのピクチャに適用される符号化割り当てによって決定されるように、他の(既に符号化された)ブロックを参照して予測的に符号化され得る。例えばIピクチャのブロックは、非予測的に符号化されてもよく、あるいはこれらは、同じピクチャの既に符号化されたブロックを参照して予測的に符号化されてもよい(空間予測又はイントラ予測)。Pピクチャのピクセルブロックは、1つの以前に符号化された参照ピクチャを参照して、空間予測又は時間予測を介して、予測的に符号化され得る。Bピクチャのブロックは、1つ又は2つの以前に符号化された参照ピクチャを参照して、空間予測又は時間予測を介して、予測的に符号化され得る。
【0066】
ビデオエンコーダ(403)は、ITU-T Rec. H.265等の所定のビデオ符号化技術又は規格に従って符号化動作を実行してよい。その動作において、ビデオエンコーダ(403)は、入力ビデオシーケンスにおける時間的及び空間的冗長性を悪用する予測符号化動作を含む、様々な圧縮動作を実行してよい。したがって、符号化されたビデオデータは、使用されているビデオ符号化技術又は規格によって指定された構文に準拠し得る。
【0067】
一実施形態では、トランスミッタ(440)は、符号化されたビデオとともに追加データを送信してもよい。ソースコーダ(430)は、そのようなデータを、符号化されたビデオシーケンスの一部として含んでよい。追加データは、時間的/空間的/SNR強調層、冗長ピクチャ及びスライスのような他の形式の冗長データ、SEI(Supplementary Enhancement Information)メッセージ、視覚的ユーザビリティ情報(VUI:Visual Usability Information)パラメータセットフラグメント等を含んでもよい。
【0068】
ビデオは、時間シーケンスにおいて複数のソースピクチャ(ビデオピクチャ)としてキャプチャされ得る。イントラピクチャ予測(しばしばイントラ予測と略される)は、所与のピクチャの空間相関の使用し、インターピクチャ予測は、ピクチャ間の(時間的又は他の)相関を使用する。一例では、現在のピクチャと呼ばれる符号化/復号中の特定のピクチャは、ブロックに分割される。現在のピクチャ内のブロックが、ビデオ内の、以前に符号化されて依然としてバッファリングされている参照ピクチャ内の参照ブロックに類似するとき、現在のピクチャ内のブロックを、動きベクトルと呼ばれるベクトルによって符号化することができる。動きベクトルは、参照ピクチャ内の参照ブロックを指し、複数の参照ピクチャが使用されている場合は、参照ピクチャを識別する三次元(third dimension)を有することができる。
【0069】
いくつかの実施形態において、双予測技術(bi-prediction technique)を、インターピクチャ予測において使用することができる。双予測技術によれば、ビデオ内の現在のピクチャに対して復号順で両方とも先にある(しかし、それぞれ、表示順では、過去及び将来であり得る)第1及び第2参照ピクチャのような2つの参照ピクチャが使用される。現在のピクチャ内のブロックは、第1参照ピクチャ内の第1参照ブロックを指す第1動きベクトルと、第2参照ピクチャ内の第2参照ブロックを指す第2動きベクトルとによって符号化できる。該ブロックは、第1参照ブロックと第2参照ブロックの組合せによって予測できる。
【0070】
さらに、符号化効率を改善するために、マージモード技法をインターピクチャ予測で使用することができる。
【0071】
本開示のいくつかの実施形態によれば、インターピクチャ予測及びイントラピクチャ予測等の予測は、ブロックのユニットで実行される。例えばHEVC規格によれば、ビデオピクチャのシーケンス内のピクチャは、圧縮のために符号化ツリーユニット(CTU:coding tree units)に分割され、ピクチャ内のCTUは、64×64ピクセル、32×32ピクセル又は16×16ピクセルのような同じサイズを有する。一般に、CTUは、1つのルマCTBと2つのクロミナンスCTBである3つの符号化ツリーブロック(CTB)を含む。各CTUを、1つ又は複数の符号化ユニット(CU)に再帰的に4分木分割することができる。例えば64×64ピクセルのCTUを、64×64ピクセルの1つの符号化ユニット(CU)、32×32ピクセルの4つのCU又は16×16ピクセルの16個のCUに分割することができる。一例では、各CUを分析して、インター予測タイプ又はイントラ予測タイプのような、CUの予測タイプを決定する。CUは時間的及び/又は空間的予測可能性に依存して1つ以上の予測ユニット(PU)に分割される。一般に、各PUは、1つのルマ予測ブロック(PB)と2つのクロミナンスPBを含む。一実施形態では、符号化(符号化/復号)における予測動作は、予測ブロックのユニットにおいて実行される。予測ブロックの例としてルマ予測ブロックを用いると、予測ブロックは、8×8ピクセル、16×16ピクセル、8×16ピクセル、16×8ピクセル等のピクセルに対する値(例えばルマ値)の行列を含む。
【0072】
図5は、本開示の別の実施形態によるビデオエンコーダ(503)の図を示す。ビデオエンコーダ(503)は、ビデオピクチャのシーケンス内の現在のビデオピクチャ内のサンプル値の処理ブロック(例えば予測ブロック)を受け取り、処理ブロックを、符号化されたビデオシーケンスの一部である符号化されたピクチャに符号化するように構成される。一実施形態では、ビデオエンコーダ(503)は、
図2の例のビデオエンコーダ(203)の代わりに使用される。
【0073】
HEVCの例では、ビデオエンコーダ(503)は、8×8サンプルの予測ブロック等の処理ブロックのサンプル値のマトリックスを受け取る。ビデオエンコーダ(503)は、処理ブロックが、イントラモード、インターモード、あるいは例えばレート歪み最適化を用いる双予測モードを使用して、最も良く符号化されるかどうかを決定する。処理ブロックがイントラモードで符号化されるとき、ビデオエンコーダ(503)は、イントラ予測技術を使用して、処理ブロックを、符号化されたピクチャに符号化してもよく;処理ブロックがインターモード又は双予測モードで符号化されるとき、ビデオエンコーダ(503)は、それぞれ、インター予測又は双予測技術を使用して、処理ブロックを、符号化されたピクチャに符号化してもよい。ある種のビデオ符号化技術では、マージモードは、インターピクチャ予測サブモードとすることができ、この場合、動きベクトルは、1つ以上の動きベクトル予測子から、該予測子の外部の符号化された動きベクトル構成要素の利益なしに導出される。特定の他のビデオ符号化技術では、対象ブロックに適用可能な動きベクトル構成要素が存在してもよい。一実施形態では、ビデオエンコーダ(503)は、処理ブロックのモードを決定するためのモード決定モジュール(図示せず)等の他の構成要素を含む。
【0074】
図5の例では、ビデオエンコーダ(503)は、
図5に示されるように一緒に結合される、インターエンコーダ(530)、イントラエンコーダ(522)、残差計算機(523)、スイッチ(526)、残差エンコーダ(524)、一般コントローラ(521)及びエントロピーエンコーダ(525)を含む。
【0075】
インターエンコーダ(530)は、現在のブロック(例えば処理ブロック)のサンプルを受け取り、ブロックを参照ピクチャ内の1つ以上の参照ブロックと比較し(例えば以前のピクチャ及び後のピクチャ内のブロック)、インター予測情報(例えばインター符号化技術による冗長情報の説明、動きベクトル、マージモード情報)を生成し、任意の適切な技術を使用して、インター予測情報に基づいてインター予測結果(例えば予測ブロック)を計算するように構成される。
【0076】
イントラエンコーダ(522)は、現在のブロック(例えば処理ブロック)のサンプルを受け取り、場合によっては、ブロックを、同じピクチャ内の既に符号化されているブロックと比較し、変換後に量子化された係数を生成し、場合によっては、イントラ予測情報(例えば1つ以上のイントラ符号化技術によるイントラ予測方向情報)も生成するように構成される。
【0077】
一般コントローラ(521)は、一般制御データを決定し、一般制御データに基づいてビデオエンコーダ(503)の他の構成要素を制御するように構成される。一例では、一般コントローラ(521)は、ブロックのモードを決定し、モードに基づいて制御信号をスイッチ(526)に提供する。例えばモードがイントラのとき、一般コントローラ(521)は、残差計算機(523)による使用のためにイントラモードの結果を選択するようにスイッチ(526)を制御し、イントラ予測情報を選択してビットストリームにイントラ予測情報を含めるようにエントロピーエンコーダ(525)を制御し、モードがインターモードのとき、一般コントローラ(521)は、残差計算機(523)による使用のためにインター予測結果を選択するようにスイッチ(526)を制御し、インター予測情報を選択してビットストリームにインター予測情報を含めるようにエントロピーエンコーダ(525)を制御する。
【0078】
残差計算機(523)は、受け取ったブロックと、イントラエンコーダ(522)又はインターエンコーダ(530)から選択された予測結果との間の差(残差データ)を計算するように構成される。残差エンコーダ(524)は、残差データに基づいて動作し、残差データを符号化して変換係数を生成するように構成される。一例では、残差エンコーダ(524)は、周波数領域の残差データを変換し、変換係数を生成するように構成される。変換係数は、次いで、量子化処理を受けて、量子化された変換係数を得る。
【0079】
エントロピーエンコーダ(525)は、符号化されたブロックを含むようにビットストリームをフォーマットするよう構成される。エントロピーエンコーダ(525)は、HEVC規格等の適切な規格に従った様々な情報を含むように構成される。一例では、エントロピーエンコーダ(525)は、一般制御データ、選択された予測情報(例えばイントラ予測情報又はインター予測情報)、残差情報及びビットストリーム内の他の適切な情報を含むように構成される。開示された主題に従って、インターモード又は双予測モードのいずれかのマージサブモードでブロックを符号化するとき、残差情報は存在しないことに留意されたい。
【0080】
図6は、本開示の別の実施形態によるビデオデコーダ(610)の図を示す。ビデオデコーダ(610)は、符号化されたビデオシーケンスの一部である符号化されたピクチャを受け取り、符号化されたピクチャを復号して、再構築されたピクチャを生成するように構成される。一例では、ビデオデコーダ(610)は、
図2の例のビデオデコーダ(210)の代わりに使用される。
【0081】
図6の例では、ビデオデコーダ(610)は、
図6に図示されるように一緒に結合される、エントロピーデコーダ(671)、インターデコーダ(680)、残差デコーダ(673)、再構築モジュール(674)及びイントラデコーダ(672)を含む。
【0082】
エントロピーデコーダ(671)は、符号化されたピクチャから、該符号化されたピクチャが構成される構文要素を表す特定のシンボルを再構築するように構成されることができる。このようなシンボルは、例えばブロックが符号化されるモード(例えばイントラ、インター、双予測、マージサブモード又は別のサブモードにおける後者の2つ等)、それぞれイントラデコーダ(672)又はインターデコーダ(680)によって予測のために使用される特定のサンプル又はメタデータを識別することができる予測情報(例えばイントラ予測情報又はインター予測情報)、例えば量子化された変換係数等の形態の残差情報を含むことができる。一例では、予測モードがインター又は双予測モードのとき、インター予測情報がインターデコーダ(680)に提供され;予測タイプがイントラ予測タイプのとき、イントラ予測情報がイントラデコーダ(672)に提供される。残差情報は、逆量子化を受けることができ、残差デコーダ(673)に提供される。
【0083】
インターデコーダ(680)は、インター予測情報を受け取り、インター予測情報に基づいてインター予測結果を生成するように構成される。
【0084】
イントラデコーダ(672)は、イントラ予測情報を受け取り、イントラ予測情報に基づいて予測結果を生成するように構成される。
【0085】
残差デコーダ(673)は、逆量子化を実行して非量子化(de-quantized)変換係数を抽出し、非量子化変換係数を処理して残差を周波数領域から空間領域に変換するように構成される。残差デコーダ(673)はまた、特定の制御情報(量子化器パラメータQPを含む)も必要とすることがあり、その情報は、エントロピーデコーダ(671)(低ボリューム制御情報のみであり得るので、データ経路は図示されない)によって提供されてもよい。
【0086】
再構築モジュール(674)は、空間領域において、残差デコーダ(673)による出力としての残差と、(場合によっては、インター又はイントラ予測モジュールによる出力としての)予測結果とを組み合わせて、再構築ブロックを形成するように構成され、再構築ブロックは再構築ピクチャの一部であってもよく、再構築ピクチャは再構築ビデオの一部であってもよい。デブロッキング操作等の他の適切な操作を行って、視覚品質を改善することができることに留意されたい。
【0087】
ビデオエンコーダ(203)、(403)及び(503)、並びにビデオデコーダ(210)、(310)及び(610)は、任意の適切な技術を使用して実装できることに留意されたい。一実施形態では、ビデオエンコーダ(203)、(403)及び(503)、並びにビデオデコーダ(210)、(310)及び(610)を、1つ以上の集積回路を使用して実装することができる。別の実施形態では、ビデオエンコーダ(203)、(403)及び(403)、並びにビデオデコーダ(210)、(310)及び(610)を、ソフトウェア命令を実行する1つ以上のプロセッサを使用して実装することができる。
【0088】
いくつかの実施形態によると、ブロックの動きベクトル(MV)は、動きベクトル予測子との間の差分をシグナリングする明示的方法と、1つの以前に符号化又は生成された動きベクトルから又は双方向予測を用いて符号化された場合には動きベクトルペアから導出されるものとして示される暗黙的方法のいずれかで符号化され得る。動きベクトルの暗黙的符号化は、マージモードと呼ばれることがあり、この場合、現在のブロックは、以前に符号化されたブロックの動き情報を共有することによって、以前に符号化されたブロックにマージされる。
【0089】
マージ候補は、現在のブロックの空間的又は時間的隣接ブロックからの動き情報をチェックすることによって形成されてもよい。
図7を参照すると、現在のブロック(701)は、空間的にシフトされた同じサイズの前のブロックから予測可能である、動き検索プロセス中にエンコーダ/デコーダによって見つけられたサンプルを含む。いくつかの実施形態では、その動きベクトルを直接符号化する代わりに、動きベクトルを、1つ以上の参照ピクチャに関連付けられるメタデータから、(復号順で)最新の参照ピクチャから、例えばD、A、C、B及びE(それぞれ702~706)で示される5つの周囲のサンプルのいずれかに関連付けられる動きベクトルを使用して、導出することができる。ブロックA、B、C、D及びEは、空間マージ候補と呼ばれてよい。これらの候補は、連続的にチェックされてマージ候補リストに入ってよい。重複する候補がリストから除去されることを確実にするために、プルーニング操作が実行されてもよい。
【0090】
いくつかの実施形態では、空間的候補をマージリストに入れた後、時間的候補もチェックしてリストにする。例えば指定された参照ピクチャ内の現在のブロックの並置ブロック(collocated block)を見つける。参照ピクチャ内のC0位置(707)における動き情報は、時間マージ候補として使用される。C0位置は、このブロックの左上の角が、現在のブロック701の参照ピクチャ内の並置ブロックの右下の角である参照ピクチャ内のブロックであってよい。参照ピクチャ内の並置ブロックは、現在のブロック701と同じ位置座標(例えばx及びy座標)を含んでよい。C0位置(707)のブロックがインターモードで符号化されていない又は利用可能でない場合、C1位置のブロックを使用してもよい。C1位置のブロックは、参照ピクチャ内の並置ブロック内のブロックの中心位置(例えばw/2、h/2)に左上の角を有してよい。特に、位置C1のブロックは、参照ピクチャの並置ブロックのサブブロックであってよい。上記の例では、w及びhはそれぞれ、ブロックの幅及び高さである。いくつかの実施形態によれば、追加のマージ候補は、組み合わされた双予測候補及びゼロ動きベクトル候補を含む。
【0091】
いくつかの実施形態によれば、AMVP(Advanced Motion Vector Prediction)は、予測残差が更に符号化されている間に、空間的及び時間的隣接ブロックの動き情報を使用して、現在のブロックの動き情報を予測する。AMVPモードは残差モードとも呼ばれることがある。
図7は、空間的及び時間的隣接候補の例を示す。AMVPモードの例では、2つの候補の動きベクトル予測子リストが形成される。第1候補予測子は、空間A0及びA1位置の順序で左端からの最初の利用可能な動きベクトルからのものである。第2候補予測子は、空間B0、B1及びB2位置の順序で上端からの最初の利用可能な動きベクトルからのものである。チェックされた位置から左端又は上端のいずれかについて有効な動きベクトルが見つからない場合、動きベクトル予測子リスト内に候補が入れられないことになる。2つの候補が利用可能であり、同じである場合、1つの候補が動きベクトル予測子リスト内で保持される。動きベクトル予測子リストが2つの異なる候補で満杯でない場合、参照ピクチャ内の時間的並置ブロックの動きベクトルは、スケーリング後、C0位置で、別の候補として使用される。参照ピクチャ内のC0位置の並置ブロックにおける動き情報が利用可能でない場合、参照ピクチャ内の位置C1の並置ブロックが代わりに使用される。空間的及び時間的候補をチェックした後、まだ十分な運動ベクトル予測子候補が存在しない場合、ゼロ動きベクトルは、動きベクトル予測子リストを満たすために使用される。
【0092】
いくつかの実施形態によると、AMVPモードでは、動きベクトルがMV予測によって予測された後、残差部分は動きベクトル差(MVD)と呼ばれ、これもまたx及びy成分を有する。MVDの符号化は、(i)各構成要素における差分値の二値化及び(ii)二値化されたビンのいくつかに対するコンテキストモデリングを含み得る。
【0093】
双方向予測スライス(B_slice)において、各ブロックは、順方向予測(すなわち、リスト0又はL0の参照ピクチャから予測される)、逆方向予測(すなわち、リスト1又はL1の参照ピクチャから予測される)又は双方向予測(すなわち、リスト0の参照ピクチャとリスト1の参照ピクチャという2つの参照ピクチャから予測される)のいずれかで符号化され得る。前者の2つのケースは、単方向予測とも呼ばれることがある。いくつかの実施形態では、双方向予測が符号化ブロックにおいて使用される場合、2つの参照ピクチャを指す一対の動きベクトルが存在する。さらに、符号化されるべき一対のMVDが存在し、これは既存のビデオ符号化規格によって独立に符号化され得る。
図8は、一対のMVD独立に符号化される例示的な構文を示す。
【0094】
本開示の実施形態は、双方向予測が使用されるとき、一対のMVDの間の相関を探求することによって、MVD符号化のための改善された技術を含む。本開示の実施形態は、双方向予測における符号化効率を改善する。この点に関して、第1MVのMVDは、第2MVのMVDを予測するために使用される。第1MVDによって予測された後、第2MVD残差は、元のMVD符号化モジュール又は修正されたMVD符号化モジュールを使用して更に符号化される。
【0095】
いくつかの実施形態によると、ブロック内の2つ以上の動きベクトルを符号化する必要があり、第1ベクトルのMVDは、ブロック内の他のMVのMVDを予測するための予測子として使用される。一対のMVが符号化される例として、双方向モードを用いて、MVD1は、このMV差についてエントロピー符号化を実行する前に、MVD0によって予測される。
【0096】
図9は、予測スキームの実施形態を示しており、ここで、MVxは、リストx(x=0,1)における動きベクトルであり、MVPxは、リストxにおける動きベクトル予測子であり、MVDxは、リストxにおける動きベクトル差である。
図9に示されるように、第2MVD(すなわち、MVD1)は、予測子として第1MVD(すなわち、MVD0)を使用して予測される。MVP0及びMVP1の各々は、空間的又は時間的隣接ブロックの動きベクトルに由来し得る。MVP0及びMVP1の各々について、2つ以上の動きベクトル候補が存在する場合、候補リストから選択するためにインデックスがシグナリングされ得る。
【0097】
いくつかの実施形態によれば、MVD1がMVD0から予測されるかどうかの条件を指定することができる。例えばMVD1は、(i)L0からの参照ピクチャが、現在のピクチャのピクチャ順カウント(POC:picture order count)よりも小さいPOC数を有し、かつ(ii)L1からの参照ピクチャが、現在のピクチャのPOCよりも大きいPOC数を有するときにのみ、MVD0から予測され得る。別の例では、MVD1は、(i)L0からの参照ピクチャが現在のピクチャのPOCよりも大きいPOC数を有し、かつ(ii)L1からの参照ピクチャが現在のピクチャのPOCよりも小さいPOC数を有するときにのみ、MVD0から予測され得る。
【0098】
いくつかの実施形態では、MVD0及びMVD1の両方が、1つのMVD符号化のみが実行される他の状況のためにも設計される、同じMVDエントロピー符号化モジュールを通過する。別の実施形態では、MVD0が、1つのMVD符号化のみが実行される他の状況のためにも設計される、同じMVDエントロピー符号化モジュールを通過する。
【0099】
本開示の実施形態は、インターピクチャ予測符号化のための動きベクトル予測子を得るいくつかの方法を開示する。これらの方法は、履歴ベースのMV(HMVP)バッファ内にN個の以前の符号化されたブロックのMV予測子を格納することを含む。複数のHMVP候補を有する個のバッファは、符号化/復号プロセス中に維持される。バッファは、このバッファが動きベクトル予測中に使用されるときに、最新の符号化された動き情報が最初に考慮されるように、先入先出し(FIFO)原理で動作してよい。
【0100】
これらの方法は、マージモード又はAMVPモードの両方に適用されてよい。本開示の実施形態は、マージ及び一般的なMV予測概念を使用する任意のビデオ符号化方法に拡張されてもよい。また、本開示の実施形態は、スキップモードがマージモードを使用して動き情報を導出するので、スキップモードに適用されてもよい。
【0101】
図10A及び
図10Bは、それぞれ、候補が挿入される前と後のHMVPバッファを示している。
図10A及び
図10Bに示されるように、HMVPバッファは、インデックス[0]~[4]を有する5つのエントリを含む。
図10Bでは、エントリCL_0は、インデックス[4]に挿入され、これにより、他のエントリが1つずつ左に移動し、その結果、エントリHMPV_0がバッファから除去されることになる。エントリCL_0は、以前に符号化又は復号されたブロックの動きベクトル予測子情報を含んでよい。
【0102】
いくつかの実施形態によれば、HMVPバッファは、条件が満たされると、空にされるか又はゼロ状態にリセットされる。条件は、(i)現在のCUがCTU行の先頭であること、(ii)現在のブロックが、ウェーブフロント型並列処理を使用して符号化/復号されることであってよい。ウェーブフロント型並列処理では、現在の行の符号化又は復号が完了する前に、別の列の符号化又は復号が開始されてよい。
【0103】
いくつかの実施形態によれば、すべてのCTU行の最初のCTUが完了した後、同じサイズのHMVPバッファを有するHMVP_rowバッファを使用して、HMVPバッファのエントリを格納する。したがって、新しいCTU行の開始時に、HMVPバッファは、HMVP_rowバッファ内の情報で満たされ得る。CTU行の最後にHMVPバッファをリセットし、HMVP_rowバッファの内容をHMVPバッファにコピーすることによって、復号されている最初のCTUのブロックは、最初のCTUの真上のCTUからの情報で復号され得る。
【0104】
いくつかの実施形態において、ピクチャ内の各タイルについて、HMVP_rowバッファを使用して、各タイル行の最初のCTUが終了した後にHMVP情報を格納する。したがって、新たなタイル行の最初のCTUについて、HMVPバッファは、HMVP_rowバッファからの情報を使用して満たされ得る。いくつかの実施形態において、HMVP_rowバッファは、タイル又はスライスの最初のCTU行の開始時にゼロ状態に開始される。
【0105】
図11は、CTU_00~CTU_23に分割された例示的なピクチャ1100を示す。CTU_00~CTU_03は、最初のCTU行 CTU_Row_[0]にある。CTU_10~CTU_13は、2番目のCTU行 CTU_Row_[1]にある。CTU_20~CTU_23は、3番目のCTU_行にある。ピクチャ1100内の各CTUは、複数のブロックに更に分割されてもよい。ブロックは、CU又は符号化ブロック(CB)であってよい。
【0106】
いくつかの実施形態において、ウェーブフロント型並列処理が、ピクチャ1100を符号化又は復号するために使用されるとき、少なくとも2つのプロセッサスレッドが使用されてもよい。各プロセッサスレッドは、関連するHMVPバッファ及び共有される行バッファを有してよい。例えばピクチャ1100を参照すると、プロセッサスレッドPT_1及びPT_2が、ピクチャ1100の符号化又は復号のために使用され得る。プロセッサスレッドPT_1は、履歴バッファHMVP_1に関連付けられてよく、プロセッサスレッドPT_2は、履歴バッファHMVP_2に関連付けられてもよい。さらに、プロセッサスレッドPT_1及びPT_2の各々は、同じ履歴行バッファを共有してもよい。
【0107】
いくつかの実施形態では、ピクチャ1100の最初のCTU(例えばCTU_00)内の最初のブロックが符号化又は復号される前に、最初のCTU行内のCTUを符号化又は復号するプロセッサスレッドの関連するHMVPバッファに初期値がロードされる。初期値は、エンコーダ又はデコーダのメモリに格納されてよい。別の例では、最初のCTU行内のCTUを符号化又は復号するプロセッサスレッドの関連するHMVPバッファは、ゼロ状態に初期化されてもよい。加えて、HMVP_rowバッファは、ピクチャ1100の最初のCTU(例えばCTU_00)内の最初のブロックが符号化又は復号される前に、ゼロ状態に初期化されてもよい。
【0108】
プロセッサスレッドPT_1は、CTU_Row_[0]内のCTUの符号化を開始するために使用されてよい。CTU_00の最後のブロック(例えばCTU_Row_[0]の最初のCTU)がPT_1によって符号化又は復号されると、バッファHMVP_1の内容がHMVP_rowバッファにコピーされる。CTU_03の最後のブロックがPT_1によって符号化又は復号されると(例えばCTU_Row_[0]の最後のCTU)、バッファHMVP_1が空にされる。
【0109】
さらに、CTU_01の最後のブロックがPT_1によって符号化又は復号されるとき、HMVP_rowバッファの内容はバッファHMVP_2にコピーされてよく、次のCTU行(すなわち、CTU_Row_[1])におけるCTUの符号化又は復号は、第2プロセッサスレッドPT_2によって開始され得る。この点に関して、プロセッサスレッドPT_2は、プロセッサスレッドPT_1がまだCTU_Row_[0]のCTUを符号化又は復号している間に、CTU_10の最後のブロック(例えばCTU_Row_[1]の最初のCTU)がPT_2によって符号化又は復号されると、バッファHMVP_2の内容がHMVP_rowバッファにコピーされる。CTU_13の最後のブロック(例えばCTU_Row_[1]の最後のCTU)がPT_2によって符号化又は復号されると、バッファHMVP_が空にされる。
【0110】
加えて、最初のプロセッサスレッドPT_1がCTU_Row_[0]のCTUの符号化又は復号を終了したとき、バッファHMVP_2の内容がHMVP_rowバッファにコピーされた後、HMVP_rowバッファの内容がバッファHMVP_1にコピーされ、CTU_row[2]のCTUの符号化又は復号が第1プロセッサスレッドPT_1によって開始され得る。この点に関して、プロセッサスレッドPT_1は、プロセッサスレッドPT_2がまだCTU_Row_[1]のCTUを符号化又は復号している間に、CTU_Row_[2]のCTUの符号化又は復号を開始する。
【0111】
したがって、上記の例では、バッファHMVP_1及びHMVP_2の内容をリセットし、HMVP_rowバッファの内容を上述のようにバッファHMVP_1及びHMVP_2にコピーすることによって、(i)関連する動き情報による各行の最初のCTU内のブロックの符号化又は復号と、(ii)CTU行の並列の符号化及び復号化という、非常に有利な特徴が達成される。
【0112】
図12は、2つのタイルTile_1及びTile_2に分割されたピクチャ1100の例を示す。
ウェーブフロント型並列処理が、ピクチャ1100を符号化又は復号する際に使用されるとき、Tile_1及びTile_2は、別個のプロセッサスレッドを有してもよい。例えばTile_1は、プロセッサスレッドTile_1_PT_1及びTile_1_PT_2を有してもよく、これらのプロセッサスレッドは、それぞれ、バッファTile_1_HMVP_1及びTile_1_HMVP_2に関連付けられている。Tile_2は、プロセッサスレッドTile_2_PT_1及びTile_2_PT_2を有してもよく、これらのプロセッサスレッドは、それぞれ、バッファTile_2_HMVP_1及びTile_2_HMVP_2に関連付けられている。さらに、Tile1のプロセッサスレッドは、共有行バッファHMVP_row_1バッファを使用してよく、Tile2のプロセッサスレッドは、共有行バッファHMVP_row_2を使用してよい。
【0113】
一例として、プロセッサスレッドTile_1_PT_1は、Tile1のTile_Row_[0]内のCTUを処理するために使用される。いくつかの実施形態において、Tile_1の最初のCTU(例えばCTU_00)の最初のブロックが符号化又は復号される前に、バッファTile_1_HMVP_1に初期値がロードされる。初期値は、エンコーダ又はデコーダのメモリに記憶されてよい。別の例では、バッファTile_1_HMVP_1は、ゼロ状態に初期化されてもよい。加えて、行バッファHMVP_row_1は、タイルの最初のCTU(例えばCTU_00)における最初のブロックが符号化又は復号される前に、ゼロ状態に初期化されてもよい。CTU_00の最後のブロック(例えばTile_1のCTU_Row_[0]の最初のCTU)がTile_1_PT_1によって符号化又は復号されると、バッファTile_1_HMVP_1の内容が行バッファHMVP_row_1にコピーされる。CTU_01の最後のブロックが符号化又は復号されると(例えばTile_1のCTU_Row_[0]の最後のCTU)、バッファTile_1_HMVP_1がリセットされる。さらに、CTU_00の最後のブロックが符号化又は復号されると、行バッファHMVP_row_1の内容がバッファTile_1_HMVP_2にコピーされ、プロセッサスレッドTile_1_PT_1がまだTile1のタイル行Tile_Row_[0]内のCTUを符号化又は復号している間に、プロセッサスレッドTile_1_PT_2は、Tile1のTile_Row_[1]内のCTUの符号化又は復号を開始してよい。
【0114】
Tile_2は、Tile_1と並列に符号化又は復号されてもよい。一例として、プロセッサスレッドTile_2_PT_1は、Tile2のTile_Row_[0]内のCTUを処理するために使用される。バッファTile_2_HMVP_1及びHMVP_row_2はそれぞれ、上述のバッファTile_1_HMVP_1及びHMVP_row_1と同様に初期化されてもよい。CTU_02の最後のブロック(例えばTile_2のCTU_Row_[0]の最初のCTU)がTile_2_PT_1によって符号化又は復号されると、バッファTile_2_HMVP_1の内容が行バッファHMVP_row_2にコピーされる。CTU_03の最後のブロックがTile_2_PT_1によって符号化又は復号されると(例えばTile_2のCTU_Row_[0]の最後のCTU)、バッファTile_2_HMVP_1がリセットされる。さらに、CTU_02の最後のブロックが符号化又は復号されると、行バッファHMVP_row_2の内容がバッファTile_2_HMVP_2にコピーされ、プロセッサスレッドTile_1_PT_1がまだTile2のタイル行Tile_Row_[0]内のCTUを符号化又は復号している間に、プロセッサスレッドTile_2_PT_2は、Tile2のTile_Row_[1]内のCTUの符号化又は復号を開始してよい。
【0115】
図13は、エンコーダ503等のエンコーダ又はデコーダ610等のデコーダによって実行されるプロセスの一実施形態を示す。プロセスは、ステップS1300で開始してよく、ステップS1300において、現在のピクチャがビデオビットストリームから取得される。例えばピクチャ1100(
図11)は、この取得されたピクチャであってもよい。プロセスは、ステップS1302に進み、ステップS1302において、現在のピクチャからの現在のブロックが、HMVPバッファからの1つ以上のエントリを使用して符号化/復号される。例えばピクチャ1100を参照すると、CTU_00の最初のブロックが符号化/復号されている場合、バッファHMVP_1は初期状態に初期化されてよく、最初のブロックは、このバッファが初期化された後に、バッファHMVP_1からの1つ以上のエントリで符号化/復号されてもよい。プロセスは、ステップS1304に進み、ステップS1304において、HMVPバッファは、符号化/復号された現在のブロックの動きベクトル情報で更新される。
【0116】
プロセスは、ステップS1306に進み、ステップS1306において、現在のピクチャに対して並列処理が可能であるかどうかを判断する。例えばウェーブフロント型並列処理がピクチャ1100に対して可能であると判断されてもよい。現在のピクチャに対して並列処理が可能でない場合、プロセスはステップS1316に進み、これについては以下で更に詳細に説明される。
【0117】
現在のピクチャに対して並列処理が有効にされた場合、プロセスは、ステップS1308に進み、現在の符号化/復号されたブロックがCTU行の末尾にあるかどうかを判断する。例えばピクチャ1100を参照すると、符号化/復号される現在のブロックがCTU_03の最後のブロックである場合、現在の符号化/復号されたブロックは、CTU_Row_[0]の末尾にある。現在の符号化/復号されたブロックがCTU行の末尾にある場合、プロセスはステップS1310に進み、ステップS1310において、HMVPバッファがリセットされる(例えば空にされる)。例えばプロセッサスレッドPT_1を使用してCTU_Row_[0]のCTUを符号化又は復号する場合、バッファHMVP_1は、CTU_03の最後のブロックが処理された後にリセットされる。プロセスは、ステップS1310からステップS1316に進み、これは、以下に更に詳細に説明される。
【0118】
現在の符号化/復号されたブロックがCTU行の末尾でない場合、プロセスはステップS1312に進み、現在の符号化/復号されたブロックがCTU行の最初のCTUの最後のブロックであるかどうかを判断する。現在の符号化/復号されたブロックがCTU行内の最初のCTUの最後のブロックである場合、プロセスはステップS1314に進み、ステップS1314において、HMVPバッファの内容がHVMP_rowバッファにコピーされる。例えばピクチャ1100を参照すると、現在の符号化/復号されたブロックがCTU_00の最後のブロックである場合、バッファHVMP_1の内容は、CTU_01の最初のブロックが符号化/復号される前に、HMVP_rowバッファの内容にコピーされる。上述のように、CTU_01の最後のブロックが符号化/復号された後、HMVP_rowバッファの内容は、バッファHMVP_2にコピーされ、ここで、プロセッサスレッドPT_2は、プロセッサスレッドがまだCTU_Row_[0]のCTUを符号化/復号している間に、CTU_Row_[1]のCTUの符号化/復号を開始することができる。プロセスは、ステップS1314からステップS1316に進み、これは、以下で更に詳細に説明される。
【0119】
現在の符号化/復号されたブロックがCTU行内の最初のCTUの最後のブロックでない場合、プロセスはステップS1316に進み、現在の符号化/復号されたブロックが取得されたピクチャ内の最後のブロックであるかどうかを判断する。現在の符号化/復号されたブロックが、取得されたピクチャ内の最後のブロックである場合、
図13のプロセスは終了する。例えば現在の符号化/復号されたブロックがCTU_23の最後のブロックである場合、
図13のプロセスは完了する。現在の符号化/復号されたブロックが取得されたピクチャ内の最後のブロックでない場合、プロセスはステップS1316からステップS1302に戻る。
【0120】
上述の技術は、コンピュータ読取可能な命令を使用してコンピュータソフトウェアとして実装でき、1つ以上のコンピュータ読取可能な媒体に物理的に格納できる。例えば
図14は、開示された主題の特定の実施形態を実施するのに適したコンピュータシステム(1400)を示す。
【0121】
コンピュータソフトウェアは、アセンブリ、コンパイル、リンク又は類似のメカニズムの対象となり得る任意の適切な機械コード又はコンピュータ言語を使用してコード化されて、1つ以上のコンピュータ中央処理ユニット(CPU)、グラフィクス処理ユニット(GPU)等によって直接的に、あるいは翻訳、マイクロコード実行等を通して実行され得る命令を含むコードを作成し得る。
【0122】
命令は、例えばパーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲームデバイス、モノのインターネットデバイス等を含む様々なタイプのコンピュータ又はその構成要素上で実行され得る。
【0123】
コンピュータシステム(1400)の
図14に示される構成要素は、性質上例示的なものであり、本開示の実施形態を実装するコンピュータソフトウェアの使用又は機能の範囲に関していかなる限定も示唆するように意図されていない。また、構成要素の構成も、コンピュータシステム(1400)の例示的な実施形態で図示される構成要素の任意の1つ又は組合せに関するいかなる従属性又は要件も有するものとして解釈されるべきではない。
【0124】
コンピュータシステム(1400)は、特定のヒューマンインタフェース入力デバイスを含んでもよい。このようなヒューマンインタフェース入力デバイスは、例えば触覚入力(例えばキーストローク、スワイプ、データグローブの動き)、オーディオ入力(例えば音声、拍手)、視覚入力(例えばジェスチャ)、嗅覚入力(図示せず)を通して、1人以上の人間のユーザによる入力に応答し得る。また、ヒューマンインタフェースデバイスを使用して、オーディオ(例えばスピーチ、音楽、周囲音)、画像(例えばスキャンされた画像、静止画像カメラから得られる写真画像)、ビデオ(例えば2次元ビデオ、立体ビデオを含む3次元ビデオ)といった、人間による意識的入力に必ずしも直接関係しない特定の媒体をキャプチャすることができる。
【0125】
入力ヒューマンインタフェースデバイスは:キーボード(1401)、マウス(1402)、トラックパッド(1403)、タッチスクリーン(1410)、データグローブ(図示せず)、ジョイスティック(1405)、マイクロホン(1406)、スキャナ(1407)、カメラ(1408)、のうちの(図示されているものの1つのみの)1つ以上を含んでもよい。
【0126】
コンピュータシステム(1400)は、特定のヒューマンインタフェース出力デバイスも含んでもよい。そのようなヒューマンインタフェース出力デバイスは、例えば触覚出力、音、光及び嗅覚/味覚を通して、1人以上の人間のユーザの感覚を刺激し得る。そのようなヒューマンインタフェース出力デバイスは、触覚出力デバイス(例えばタッチスクリーン(1410)、データグローブ(図示せず)又はジョイスティック(1405)による触覚フィードバックであるが、入力デバイスとして機能しない触覚フィードバックデバイスも存在する可能性がある)、オーディオ出力デバイス(例えばスピーカ(1409)、ヘッドフォン(図示せず))、視覚出力デバイス(例えばCRT画面、LCD画面、プラズマ画面、OLED画面を含む画面(1410)であり、各々タッチスクリーン入力機能を有するか又は有さず、各々触覚フィードバック機能を有するか有さず、その一部は、二次元視覚出力を出力するか、例えば立体出力、仮想現実グラス(図示せず)、ホログラフィックディスプレイ及びスモークタンク(図示せず)のような手段を通して三次元超の出力を出力する能力を有する可能性がある)及びプリンタ(図示せず)を含んでよい。
【0127】
コンピュータシステム(1400)は、CD/DVD又は同様の媒体(1421)を有するCD/DVD ROM/RW(1420)、サムドライブ(1422)、取り外し可能ハードドライブ又はソリッドステートドライブ(1423)、テープ及びフロッピーディスク(図示せず)のようなレガシー磁気媒体、セキュリティドングル(図示せず)のような特別なROM/ASIC/PLDベースのデバイスのような、人間がアクセス可能なストレージデバイス及びその関連する媒体も含むことができる。
【0128】
当業者はまた、「コンピュータ読取可能媒体」という用語が、現在開示されている主題に関連して使用されるとき、伝送媒体、搬送波又は他の一時的信号を包含しないことも理解すべきである。
【0129】
コンピュータシステム(1400)は、1つ以上の通信ネットワークへのインタフェースも含むことができる。ネットワークは、例えば無線、有線、光であり得る。ネットワークは更に、ローカル、ワイドエリア、メトロポリタン、車両及び産業、リアルタイム、遅延耐性等とすることができる。ネットワークの例は、イーサネット(登録商標)、無線LAN、GSM(登録商標)、3G、4G、5G、LTE等を含むセルラネットワーク、ケーブルTV、衛星TV及び地上放送TVを含むTV有線又は無線ワイドエリアデジタルネットワーク、CANBusを含む車両及び産業等を含む。特定のネットワークは、一般に、特定の汎用データポート又は周辺バス(1449)(例えばコンピュータシステム(1400)のUSBポート)に取り付けられる外部ネットワークインタフェースアダプタを必要とするが、他のものは、一般に、以下で説明されるシステムバスへの取り付けによって、コンピュータシステム(1400)のコアに統合される(例えばPCコンピュータシステムへのイーサネット(登録商標)インタフェース又はスマートフォンコンピュータシステムへのセルラネットワークインタフェース)。これらのネットワークのいずれかを使用して、コンピュータシステム(1400)は、他のエンティティと通信することができる。このような通信は、単指向性、受信専用(例えば放送TV)、単指向性送信専用(例えば特定のCANBusデバイスへのCANBus)又は例えばローカル又はワイドエリアデジタルネットワークを使用する他のコンピュータシステムへの双指向性とすることができる。特定のプロトコル及びプロトコルスタックを、上述のように、それらのネットワーク及びネットワークインタフェースの各々において使用することができる。
【0130】
前述のヒューマンインタフェースデバイス、人間がアクセス可能なストレージデバイス及びネットワークインタフェースを、コンピュータシステム(1400)のコア(1440)に取り付けることができる。
【0131】
コア(1440)は、1つ以上の中央処理ユニット(CPU)(1441)、グラフィクス処理ユニット(GPU)(1442)、フィールドプログラマブルゲートエリア(FPGA)(1443)の形の特別なプログラマブル処理ユニット、特定のタスクのハードウェアアクセラレータ(1444)等を含むことができる。これらのデバイスは、読取専用メモリ(ROM)(1445)、ランダムアクセスメモリ(1446)、内部非ユーザアクセス可能ハードドライブ、SSD(1447)等の内部大容量ストレージとともに、システムバス(1448)を介して接続されてよい。いくつかのコンピュータシステムでは、システムバス(1448)は、追加のCPU、GPU等による拡張を可能にするために、1つ以上の物理プラグの形でアクセス可能であり得る。周辺デバイスは、コアのシステムバス(1448)に直接取り付けられることも、周辺バス(1449)を介して取り付けられることもできる。周辺バスのアーキテクチャは、PCI、USB等を含む。
【0132】
CPU(1441)、GPU(1442)、FPGA(1443)及びアクセラレータ(1444)は、組み合わせて、上述のコンピュータコードを構成することができる特定の命令を実行することができる。そのコンピュータコードは、ROM(1445)又はRAM(1446)に記憶することができる。移行データは、RAM(1446)に記憶することもできるが、永久データは、例えば内部大容量ストレージ(1447)に記憶することができる。1つ以上のCPU(1441)、GPU(1442)、大容量ストレージ(1447)、ROM(1445)、RAM(1446)等と密接に関連付けることができるキャッシュメモリを使用することによって、メモリデバイスのいずれかへの高速記憶及び検索を可能にすることができる。
【0133】
コンピュータ読取可能媒体は、様々なコンピュータ実施動作を実行するためのコンピュータコードをその上に有することができる。媒体及びコンピュータコードは、本開示の目的のために特別に設計及び構築されたものとすることができ、あるいはそれらは、コンピュータソフトウェア分野の当業者に周知かつ入手可能な種類のものとすることができる。
【0134】
限定ではなく一例として、アーキテクチャ(1400)、具体的にはコア(1440)を有するコンピュータシステムは、1つ以上の有形のコンピュータ読取可能媒体に具現化されたソフトウェアを実行するプロセッサ(CPU、GPU、FPGA、アクセラレータ等を含む)の結果として機能を提供することができる。そのようなコンピュータ読取可能媒体は、上述のようなユーザアクセス可能な大容量ストレージ、並びにコア内部大容量ストレージ(1447)又はROM(1445)のように、非一時的な性質のコア(1440)の特定のストレージに関連する媒体とすることができる。本開示の様々な実施形態を実装するソフトウェアを、そのようなデバイスに格納してコア(1440)によって実行することができる。コンピュータ読取可能媒体は、特定のニーズに応じて、1つ以上のメモリデバイス又はチップを含むことができる。ソフトウェアは、コア(1440)及び特にその中のプロセッサ(CPU、GPU、FPGA等を含む)に、RAM(1446)に格納されるデータ構造を定義し、ソフトウェアによって定義されるプロセスに従ってそのようなデータ構造を修正することを含め、本明細書で説明される特定のプロセス又は特定のプロセスの特定の部分を実行させることができる。追加又は代替として、コンピュータシステムは、回路(例えばアクセラレータ(1444))内にハードワイヤードされた又は他の方法で具体化されたロジックの結果として機能を提供することができ、これは、本明細書で説明される特定のプロセス又は特定のプロセスの特定の部分を実行するためのソフトウェアの代わりに又はそれとともに動作することができる。ソフトウェアへの参照はロジックを含み、また、必要に応じて、その逆も可能である。コンピュータ読取可能媒体への参照は、実行のためのソフトウェアを格納する回路(例えば集積回路(IC))、実行のためのロジックを具体化する回路又は適切な場合にはその双方を含むことができる。本開示は、ハードウェア及びソフトウェアの任意の適切な組合せを包含する。
付録A:頭字語
MV:動きベクトル
HEVC:高効率ビデオ符号化
SEI:補足強調情報
VUI:ビデオユーザビリティ情報
GOP:グループオブピクチャ
TU:変換ユニット
PU:予測ユニット
CTU:符号化ツリーユニット
CTB:符号化ツリーブロック
PB:予測ブロック
HRD:仮想参照デコーダ
SNR:信号雑音比
CPU:中央処理ユニット
GPU:グラフィクス処理ユニット
CRT:陰極線管
LCD:液晶ディスプレイ
OLED:有機発光ダイオード
CD:コンパクトディスク
DVD:デジタルビデオディスク
ROM:読取専用メモリ
RAM:ランダムアクセスメモリ
ASIC:特定用途向け集積回路
PLD:プログラマブルロジックデバイス
LAN:ローカルエリアネットワーク
GSM:モバイル通信用グローバルシステム
LTE:ロングタームエボリューション
CANBus:コントローラエリアネットワークバス
USB:ユニバーサルシリアルバス
PCI:周辺コンポーネント相互接続
FPGA:フィールドプログラマブルゲートエリア
SSD:ソリッドステートドライブ
IC:集積回路
CU:符号化ユニット
【0135】
本開示では、いくつかの例示的な実施形態を記載してきたが、本開示の範囲内にある変更、置換及び様々な代替等価物がある。したがって、当業者は、本明細書に明示的に示されていないか又は記載されていないが、本開示の原理を具体化し、したがって、本開示の精神及び範囲内にある多くのシステム及び方法を考案することができることが理解されるであろう。
【0136】
(1)デコーダが実行するビデオ復号の方法であって、当該方法は、符号化されたビデオビットストリームから現在のピクチャを取得するステップであって、現在のピクチャは複数のユニットに分割され、各ユニットは複数のブロックに分割され、各ユニット内の複数のブロックはグリッド状を形成する、ステップと;複数のユニットのうちの1つのユニットについて、履歴動きベクトル(HMVP)バッファからのエントリを使用して、複数のブロックからの現在のブロックを復号するステップと;復号された現在のブロックの動きベクトルでHMVPバッファを更新するステップと;条件が満たされるかどうかを判断するステップであって、条件は(i)現在のブロックが複数のユニットのうちの1つのユニットのグリッドにおける行の先頭であることと、(ii)複数のブロックが並列処理に従って復号されていることとを指定する、ステップと;条件が満たされると判断したことに応答して、HMVPバッファをリセットするステップと;を含む。
【0137】
(2)現在のブロックが行の第1ユニットの最後のブロックであるかどうかを判断するステップと;現在のブロックが行の第1ユニットの最後のブロックであると判断したことに応答して、HMVPバッファの内容を行バッファにコピーするステップと;を更に含む、特徴(1)に記載の方法。
【0138】
(3)現在のブロックが行の第2ユニットの最後のブロックであると判断したことに応答して、行バッファの内容を、次の行の並列符号化のために、別のHMVPバッファにコピーするステップを更に含む、特徴(2)に記載の方法。
【0139】
(4)HMVPバッファは先入れ先出し(FIFO)バッファであり、動きベクトルでHMVPバッファを更新するステップは、HMVPバッファの最後のエントリに動きベクトルを格納するステップと、HMVPバッファの最初のエントリを削除するステップとを含む、特徴(1)~(3)のいずれか1つに記載の方法。
【0140】
(5)ユニットは、符号化ツリーユニット(CTU)である、特徴(1)~(4)のいずれか1つに記載の方法。
【0141】
(6)ユニットはタイルであり、複数のユニットのうちの復号された1つのユニットは第1タイルであり、第1タイル及び複数のユニットからの第2タイルは並列に復号される、特徴(2)~(5)のいずれか1つに記載の方法。
【0142】
(7)ビデオ復号のためのビデオデコーダであって:符号化されたビデオビットストリームから現在のピクチャを取得し、現在のピクチャは複数のユニットに分割され、各ユニットは複数のブロックに分割され、各ユニット内の複数のブロックはグリッド状を形成し、複数のユニットのうちの1つのユニットについて、履歴動きベクトル(HMVP)バッファからのエントリを使用して、複数のブロックからの現在のブロックを復号し、復号された現在のブロックの動きベクトルでHMVPバッファを更新し、条件が満たされるかどうかを判断し、条件は(i)現在のブロックが複数のユニットのうちの1つのユニットのグリッドにおける行の先頭であることと、(ii)複数のブロックが並列処理に従って復号されていることとを指定し、条件が満たされると判断したことに応答して、HMVPバッファをリセットするように構成された処理回路を含む、ビデオデコーダ。
【0143】
(8)処理回路は、現在のブロックが行の第1ユニットの最後のブロックであるかどうかを判断し、現在のブロックが行の第1ユニットの最後のブロックであると判断したことに応答して、HMVPバッファの内容を行バッファにコピーするように更に構成される、特徴(7)に記載のビデオデコーダ。
【0144】
(9)処理回路は、現在のブロックが行の第2ユニットの最後のブロックであると判断したことに応答して、行バッファの内容を、次の行の並列符号化のために、別のHMVPバッファにコピーするように更に構成される、特徴(8)に記載のビデオデコーダ。
【0145】
(10)HMVPバッファは先入れ先出し(FIFO)バッファであり、動きベクトルでHMVPバッファを更新することは、HMVPバッファの最後のエントリに動きベクトルを格納することと、HMVPバッファの最初のエントリを削除することを含む、特徴(7)~(9)のいずれか1つに記載のビデオデコーダ。
【0146】
(11)ユニットは、符号化ツリーユニット(CTU)である、特徴(7)~(10)のいずれか1つに記載のビデオデコーダ。
【0147】
(12)ユニットはタイルであり、複数のユニットのうちの復号された1つのユニットは第1タイルであり、第1タイル及び複数のユニットからの第2タイルは並列に復号される、特徴(8)~(11)のいずれか1つに記載のビデオデコーダ。
【0148】
(13)ビデオデコーダ内のプロセッサによって実行されると、該プロセッサに、符号化されたビデオビットストリームから現在のピクチャを取得するステップであって、現在のピクチャは複数のユニットに分割され、各ユニットは複数のブロックに分割され、各ユニット内の複数のブロックはグリッド状を形成する、ステップと;複数のユニットのうちの1つのユニットについて、履歴動きベクトル(HMVP)バッファからのエントリを使用して、複数のブロックからの現在のブロックを復号するステップと;復号された現在のブロックの動きベクトルでHMVPバッファを更新するステップと;条件が満たされるかどうかを判断するステップであって、条件は(i)現在のブロックが複数のユニットのうちの1つのユニットのグリッドにおける行の先頭であることと、(ii)複数のブロックが並列処理に従って復号されていることとを指定する、ステップと;条件が満たされると判断したことに応答して、HMVPバッファをリセットするステップと;を含む方法を実行させるコンピュータプログラム。
【0149】
(14)方法は、現在のブロックが行の第1ユニットの最後のブロックであるかどうかを判断するステップと;現在のブロックが行の第1ユニットの最後のブロックであると判断したことに応答して、HMVPバッファの内容を行バッファにコピーするステップと;を更に含む、特徴(13)に記載コンピュータプログラム。
【0150】
(15)方法は、現在のブロックが行の第2ユニットの最後のブロックであると判断したことに応答して、行バッファの内容を、次の行の並列符号化のために、別のHMVPバッファにコピーするステップ、を更に含む、特徴(14)に記載のコンピュータプログラム。
【0151】
(16)HMVPバッファは先入れ先出し(FIFO)バッファであり、動きベクトルでHMVPバッファを更新するステップは、HMVPバッファの最後のエントリに動きベクトルを格納するステップと、HMVPバッファの最初のエントリを削除するステップとを含む、特徴(13)~(15)のいずれか1つに記載のコンピュータプログラム。
【0152】
(17)ユニットは、符号化ツリーユニット(CTU)である、特徴(13)~(16)のいずれか1つに記載のコンピュータプログラム
【0153】
(18)ユニットはタイルであり、複数のユニットのうちの復号された1つのユニットは第1タイルであり、第1タイル及び複数のユニットからの第2タイルは並列に復号される、特徴(14)~(17)のいずれか1つに記載のコンピュータプログラム。