IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ キヤノン株式会社の特許一覧

特許7495923ビデオサンプルの変換されたブロックを符号化および復号する方法、装置、およびシステム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-28
(45)【発行日】2024-06-05
(54)【発明の名称】ビデオサンプルの変換されたブロックを符号化および復号する方法、装置、およびシステム
(51)【国際特許分類】
   H04N 19/122 20140101AFI20240529BHJP
   H04N 19/136 20140101ALI20240529BHJP
   H04N 19/176 20140101ALI20240529BHJP
   H04N 19/436 20140101ALI20240529BHJP
【FI】
H04N19/122
H04N19/136
H04N19/176
H04N19/436
【請求項の数】 12
(21)【出願番号】P 2021501303
(86)(22)【出願日】2019-06-25
(65)【公表番号】
(43)【公表日】2021-12-09
(86)【国際出願番号】 AU2019050654
(87)【国際公開番号】W WO2020033991
(87)【国際公開日】2020-02-20
【審査請求日】2021-03-11
【審判番号】
【審判請求日】2023-05-08
(31)【優先権主張番号】2018217333
(32)【優先日】2018-08-17
(33)【優先権主張国・地域又は機関】AU
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】ロゼワーン, クリストファー ジェームズ
(72)【発明者】
【氏名】ドレル, アンドリュー ジェイムス
【合議体】
【審判長】畑中 高行
【審判官】川崎 優
【審判官】高橋 宣博
(56)【参考文献】
【文献】特表2018-521555(JP,A)
【文献】特表2019-506071(JP,A)
【文献】特表2020-504506(JP,A)
【文献】Chih-Wei Hsu, et al.,“CE1-related:Constraint for binary and ternary partitions”、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 Document:JVET-K0556-v2、2018年7月16日、pp.1-3
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00-19/98
(57)【特許請求の範囲】
【請求項1】
所定の符号化方式に従って、ビットストリームからコーディングユニットを復号する方法であって、
コーディングツリーユニットにおけるコーディングユニットを決定するための情報を前記ビットストリームから復号する第1の復号工程と、
前記情報に基づいて、前記コーディングユニットを決定する第1の決定工程と、
前記コーディングユニットにおける変換ユニットを決定する第2の決定工程と、
前記コーディングユニットを、前記変換ユニットを用いて復号する第2の復号工程と
を有し、
前記所定の符号化方式において、前記コーディングユニットの辺の長さは、128サンプルとすることが可能であり、
前記変換ユニットのサイズに関する第1の制約が前記変換ユニットを決定する際に用いられる場合における前記第2の決定工程において、前記コーディングユニットの少なくとも1つの辺の長さが128サンプルであったとしても、該コーディングユニットにおける前記変換ユニットの輝度成分のサイズとして選択可能な最大値を、128サンプルの4分の1である32サンプルとして、前記変換ユニットを決定し、
前記所定の符号化方式において、水平方向及び垂直方向の内の一方における辺の長さが他方における辺の長さよりも長い形状を前記変換ユニットの形状として用いることが可能であり、
前記コーディングユニットは、3分割を用いて前記コーディングツリーユニットを分割することで決定することができ、
前記コーディングツリーユニットのサイズは128サンプル×128サンプルであり、
当該コーディングツリーユニットにおける前記コーディングユニットが、当該コーディングツリーユニット内の複数の64サンプル×64サンプルの領域にまたがる場合、
前記第2の決定工程において、
当該コーディングユニットにおける複数の変換ユニットの内の第1の変換ユニットが、前記複数の64サンプル×64サンプルの内の第1の領域に含まれ、
当該コーディングユニットにおける前記複数の変換ユニットの内の前記第1の変換ユニットとは異なる第2の変換ユニットが、前記複数の64サンプル×64サンプルの内の前記第1の領域とは異なる第2の領域に含まれ、かつ、
前記複数の変換ユニットにおける各変換ユニットが前記複数の64サンプル×64サンプルの領域の内のいずれかに含まれるように、前記複数の変換ユニットを決定する
ことを特徴とする方法。
【請求項2】
前記コーディングユニットの少なくとも1つの辺の長さは、128サンプルである
ことを特徴とする請求項1に記載の方法。
【請求項3】
前記コーディングユニットにおける複数の変換ユニットのそれぞれの形状は、当該コーディングユニットとは異なる
ことを特徴とする請求項1に記載の方法。
【請求項4】
前記コーディングユニットにおける複数の変換ユニットのそれぞれのアスペクト比は、当該コーディングユニットのアスペクト比とは異なる
ことを特徴とする請求項1に記載の方法。
【請求項5】
所定の符号化方式に従って、コーディングユニットを符号化する方法であって、
コーディングツリーユニットにおけるコーディングユニットを決定する第1の決定工程と、
前記コーディングユニットにおける変換ユニットを決定する第2の決定工程と、
前記コーディングユニットを、前記変換ユニットを用いて符号化する符号化工程と
を有し、
前記所定の符号化方式において、前記コーディングユニットの辺の長さは、128サンプルとすることが可能であり、
前記変換ユニットのサイズに関する第1の制約が前記変換ユニットを決定する際に用いられる場合における前記第2の決定工程において、前記コーディングユニットの少なくとも1つの辺の長さが128サンプルであったとしても、該コーディングユニットにおける前記変換ユニットの輝度成分のサイズとして選択可能な最大値を、128サンプルの4分の1である32サンプルとして、前記変換ユニットを決定し、
前記所定の符号化方式において、水平方向及び垂直方向の内の一方における辺の長さが他方における辺の長さよりも長い形状を前記変換ユニットの形状として用いることが可能であり、
前記コーディングユニットは、3分割を用いて前記コーディングツリーユニットを分割することで決定することができ、
前記コーディングツリーユニットのサイズは128サンプル×128サンプルであり、
当該コーディングツリーユニットにおける前記コーディングユニットが、当該コーディングツリーユニット内の複数の64サンプル×64サンプルの領域にまたがる場合、
前記第2の決定工程において、
当該コーディングユニットにおける複数の変換ユニットの内の第1の変換ユニットが、前記複数の64サンプル×64サンプルの内の第1の領域に含まれ、
当該コーディングユニットにおける前記複数の変換ユニットの内の前記第1の変換ユニットとは異なる第2の変換ユニットが、前記複数の64サンプル×64サンプルの内の前記第1の領域とは異なる第2の領域に含まれ、かつ、
前記複数の変換ユニットにおける各変換ユニットが前記複数の64サンプル×64サンプルの領域の内のいずれかに含まれるように、前記複数の変換ユニットを決定する
ことを特徴とする方法。
【請求項6】
前記コーディングユニットの少なくとも1つの辺の長さは、128サンプルである
ことを特徴とする請求項に記載の方法。
【請求項7】
前記コーディングユニットにおける複数の変換ユニットのそれぞれの形状は、当該コーディングユニットとは異なる
ことを特徴とする請求項に記載の方法。
【請求項8】
前記コーディングユニットにおける複数の変換ユニットのそれぞれのアスペクト比は、当該コーディングユニットのアスペクト比とは異なる
ことを特徴とする請求項に記載の方法。
【請求項9】
所定の符号化方式に従って、ビットストリームからコーディングユニットを復号する装置であって、
コーディングツリーユニットにおけるコーディングユニットを決定するための情報を前記ビットストリームから復号する第1の復号手段と、
前記情報に基づいて、前記コーディングユニットを決定する第1の決定手段と、
前記コーディングユニットにおける変換ユニットを決定する第2の決定手段と、
前記コーディングユニットを、前記変換ユニットを用いて復号する第2の復号手段と
を有し、
前記所定の符号化方式において、前記コーディングユニットの辺の長さは、128サンプルとすることが可能であり、
前記第2の決定手段は、
前記変換ユニットのサイズに関する第1の制約が前記変換ユニットを決定する際に用いられる場合において、前記コーディングユニットの少なくとも1つの辺の長さが128サンプルであったとしても、該コーディングユニットにおける前記変換ユニットの輝度成分のサイズとして選択可能な最大値を、128サンプルの4分の1である32サンプルとして、前記変換ユニットを決定し、
前記所定の符号化方式において、水平方向及び垂直方向の内の一方における辺の長さが他方における辺の長さよりも長い形状を前記変換ユニットの形状として用いることが可能であり、
前記コーディングユニットは、3分割を用いて前記コーディングツリーユニットを分割することで決定することができ、
前記コーディングツリーユニットのサイズは128サンプル×128サンプルであり、
当該コーディングツリーユニットにおける前記コーディングユニットが、当該コーディングツリーユニット内の複数の64サンプル×64サンプルの領域にまたがる場合、
前記第2の決定手段は、
当該コーディングユニットにおける複数の変換ユニットの内の第1の変換ユニットが、前記複数の64サンプル×64サンプルの内の第1の領域に含まれ、
当該コーディングユニットにおける前記複数の変換ユニットの内の前記第1の変換ユニットとは異なる第2の変換ユニットが、前記複数の64サンプル×64サンプルの内の前記第1の領域とは異なる第2の領域に含まれ、かつ、
前記複数の変換ユニットにおける各変換ユニットが前記複数の64サンプル×64サンプルの領域の内のいずれかに含まれるように、前記複数の変換ユニットを決定する
ことを特徴とする装置。
【請求項10】
所定の符号化方式に従って、コーディングユニットを符号化する装置であって、
コーディングツリーユニットにおけるコーディングユニットを決定する第1の決定手段と、
前記コーディングユニットにおける変換ユニットを決定する第2の決定手段と、
前記コーディングユニットを、前記変換ユニットを用いて符号化する符号化手段と
を有し、
前記所定の符号化方式において、前記コーディングユニットの辺の長さは、128サンプルとすることが可能であり、
前記第2の決定手段は、
前記変換ユニットのサイズに関する第1の制約が前記変換ユニットを決定する際に用いられる場合において、前記コーディングユニットの少なくとも1つの辺の長さが128サンプルであったとしても、該コーディングユニットにおける前記変換ユニットの輝度成分のサイズとして選択可能な最大値を、128サンプルの4分の1である32サンプルとして、前記変換ユニットを決定し、
前記所定の符号化方式において、水平方向及び垂直方向の内の一方における辺の長さが他方における辺の長さよりも長い形状を前記変換ユニットの形状として用いることが可能であり、
前記コーディングユニットは、3分割を用いて前記コーディングツリーユニットを分割することで決定することができ、
前記コーディングツリーユニットのサイズは128サンプル×128サンプルであり、
当該コーディングツリーユニットにおける前記コーディングユニットが、当該コーディングツリーユニット内の複数の64サンプル×64サンプルの領域にまたがる場合、
前記第2の決定手段は、
当該コーディングユニットにおける複数の変換ユニットの内の第1の変換ユニットが、前記複数の64サンプル×64サンプルの内の第1の領域に含まれ、
当該コーディングユニットにおける前記複数の変換ユニットの内の前記第1の変換ユニットとは異なる第2の変換ユニットが、前記複数の64サンプル×64サンプルの内の前記第1の領域とは異なる第2の領域に含まれ、かつ、
前記複数の変換ユニットにおける各変換ユニットが前記複数の64サンプル×64サンプルの領域の内のいずれかに含まれるように、前記複数の変換ユニットを決定する
ことを特徴とする装置。
【請求項11】
コンピュータに、請求項1~のいずれか1項に記載の方法を実行させることを特徴とするプログラム。
【請求項12】
コンピュータに、請求項のいずれか1項に記載の方法を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願への参照
本出願は2018年8月17日に出願されたオーストラリア特許出願第2018217333号の出願日の35U.S.C§119に基づく利益を主張し、その全体が本明細書に完全に記載されているかのように参照により本明細書に組み込まれる。
【0002】
本発明は一般に、デジタルビデオ信号処理に関し、特に、ビデオサンプルの変換されたブロックを符号化及び復号するための方法、装置及びシステムに関する。
【0003】
本発明はまた、ビデオサンプルの変換されたブロックを符号化および復号するためのコンピュータプログラムが記録されたコンピュータ可読媒体を含むコンピュータプログラム製品に関する。
【背景技術】
【0004】
ビデオデータの送信及び記憶のためのアプリケーションを含む、ビデオ符号化のための多くのアプリケーションが現在存在する。多くのビデオ符号化規格も開発されており、他の規格も現在開発中である。ビデオ符号化標準化における最近の開発は、「Joint Video Experts Team」(JVET)と呼ばれるグループの形成をもたらした。Joint Video Experts Team(JVET)は、「Video Coding Experts Group」(VCEG)としても知られる国際電気通信連合(ITU)の電気通信標準化セクタ(ITU-T)のStudy Group 16、Question6(SG16/Q6)のメンバー、および「Moving Picture Experts group」(MPEG)としても知られる国際標準化機構/国際電気技術委員会合同技術委員会1/小委員会29/作業グループ11(ISO/IEC JTC1/SC29/WG11)のメンバーを含む。
【0005】
Joint Video Experts Team(JVET)は、米国サンディエゴで開催された10回目の会議でレスポンスを分析し、Call for Proposals(CfP)を発行した。提出されたレスポンスは、現在の最新技術のビデオ圧縮規格、すなわち「高効率ビデオ符号化」(HEVC)のものを著しく上回るビデオ圧縮能力を実証した。このアウトパフォーマンスに基づいて、「versatile video coding」(VVC)と命名される新しいビデオ圧縮規格を開発するプロジェクトを開始することが決定された。VVCは特に、ビデオフォーマットが(例えば、より高い解像度およびより高いフレームレートで)能力を増加させ、帯域幅コストが比較的高いWAN上のサービス配信に対する市場需要の増加に対処することにつれて、絶えずより高い圧縮性能に対する継続的な需要に対処することが予想される。同時に、VVCは、現代のシリコンプロセスで実施可能でなければならず、達成された性能対実施コスト(例えば、シリコン面積、CPUプロセッサ負荷、メモリ使用量、および帯域幅に関して)の間の許容可能なトレードオフを提供しなければならない。
【0006】
ビデオデータは、画像データのフレームのシーケンスを含み、各フレームは、1つまたは複数のカラーチャネルを含む。一般に、1つの一次色チャネル(primary colour channel)と2つの二次色チャネル(secondary colour channel)が必要である。一次色チャネルは一般に「輝度」チャネルと呼ばれ、二次色チャネルは一般に「彩度」チャネルと呼ばれる。ビデオデータは典型的にはRGB(赤-緑-青)色空間で表示されるが、この色空間は3つのそれぞれの要素間に高度の相関を有する。エンコーダまたはデコーダによって見られるビデオデータ表現はしばしば、YCbCrなどの色空間を使用する。YCbCrは、伝達関数に従って「輝度」にマッピングされた輝度をY(一次)チャネルに集中させ、CbおよびCr(二次)チャネルに彩度を集中させる。さらに、CbおよびCrチャネルは、「4:2:0彩度フォーマット」として知られる、輝度チャネルと比較してより低いレート、例えば、水平方向に半分および垂直方向に半分で空間的にサンプリングされてもよい。
【0007】
VVC規格は「ブロックベース」コーデックであり、フレームは最初に、「コーディングツリーユニット」(CTU)として知られる領域の正方配列に分割される。CTUは一般に、128×128輝度サンプルなどの比較的大きな領域を占有する。しかしながら、各フレームの右端および下端のCTUは、面積がより小さくてもよい。各CTUには、「コーディングユニット」(CU)とも呼ばれる、CTUの領域を1組の領域に分解することを定義する「コーディングツリー」が関連付けられる。CUは、特定の順序で符号化または復号するために処理される。コーディングツリーおよび4:2:0彩度フォーマットの使用の結果として、フレーム内の所与の領域は、カラーチャネルにわたるコロケートされたブロックの集合に関連付けられる。輝度ブロックは幅×高さの寸法を有し、彩度ブロックは各彩度ブロックに対して幅/2×高さ/2の寸法を有する。所与の領域に対するコロケートされたブロックのコレクションは一般に、「ユニット」、例えば、上述のCU、ならびに「予測ユニット」(PU)、および「変換ユニット」(TU)と呼ばれる。
【0008】
同じ領域に対する彩度ブロック対輝度ブロックの異なる寸法にもかかわらず、所与の「ユニット」のサイズは一般に、ユニットに対する輝度ブロックの寸法に関して記述される。個々のブロックは、典型的にはブロックが関連付けられるユニットのタイプによって識別される。たとえば、「コーティングブロック(CB)」、「変換ブロック(TB)」、および予測ブロック(PB)は、1つのカラーチャネルのブロックであり、それぞれCU、TU、およびPUに関連付けられている。「ユニット」と「ブロック」との間の上記の区別にもかかわらず、用語「ブロック」は、すべてのカラーチャネルに動作が適用されるフレームのエリアまたは領域に対する一般的な用語として使用されてもよい。
【0009】
各CUに対して、フレームデータの対応する領域の内容(サンプル値)の予測(PU)が生成される(「予測ユニット」)。さらに、予測とエンコーダへの入力で見られる領域の内容との間の差(または空間領域における「残差」)の表現が形成される。各色チャネルの差は、残差係数のシーケンスとして変換符号化され、所与のCUのための1つまたは複数のTUを形成することができる。適用される変換は、残差値の各ブロックに適用される離散コサイン変換(DCT)または他の変換とすることができる。この一次変換は分離可能に適用され、すなわち、二次元変換は、2つのパスで実行される。ブロックは最初に、ブロック内のサンプルの各行に1次元変換を適用することによって変換される。次に、部分結果は、部分結果の各列に1次元変換を適用することによって変換され、残差サンプルを実質的に非相関化する変換係数の最終ブロックを生成する。さまざまなサイズの変換は、矩形形状のブロックの変換を含めて、VVC基準によってサポートされ、各側面寸法は2のべき乗である。変換係数は、ビットストリームへのエントロピー符号化のために量子化される。
【0010】
VVC規格の実装は、典型的には処理を一連のステージに分割するためにパイプライン化を使用する。各ステージは同時に動作し、部分的に処理されたブロックは完全に処理された(すなわち、符号化または復号された)ブロックが出力される前に、1つのステージから次のステージに渡される。VVC規格のための過剰な実装コストを回避するために、パイプライン化アーキテクチャの内容における変換されたブロックの効率的な処理が必要とされる。パイプラインステージが完了する必要がある速度および各ステージで処理されるデータのサイズの両方に関して、メモリ消費に関して、および「最悪の場合」を処理するために必要とされる機能モジュールに関して、過剰な実装コストが必要とされる。
【発明の概要】
【0011】
本発明の目的は、既存の構成の1つまたは複数の欠点を実質的に克服するか、または少なくとも改善することである。
【0012】
本開示の一態様によれば、所定の符号化方式に従って、ビットストリームからコーディングユニットを復号する方法が提供され、方法は、コーディングツリーユニットにおけるコーディングユニットを決定するための情報を前記ビットストリームから復号する第1の復号工程と、前記情報に基づいて、前記コーディングユニットを決定する第1の決定工程と、前記コーディングユニットにおける変換ユニットを決定する第2の決定工程と、前記コーディングユニットを、前記変換ユニットを用いて復号する第2の復号工程とを有し、前記所定の符号化方式において、前記コーディングユニットの辺の長さは、128サンプルとすることが可能であり、前記変換ユニットのサイズに関する第1の制約が前記変換ユニットを決定する際に用いられる場合における前記第2の決定工程において、前記コーディングユニットの少なくとも1つの辺の長さが128サンプルであったとしても、該コーディングユニットにおける前記変換ユニットの輝度成分のサイズとして選択可能な最大値を、128サンプルの4分の1である32サンプルとして、前記変換ユニットを決定し、前記所定の符号化方式において、水平方向及び垂直方向の内の一方における辺の長さが他方における辺の長さよりも長い形状を前記変換ユニットの形状として用いることが可能であり、
前記コーディングユニットは、3分割を用いて前記コーディングツリーユニットを分割することで決定することができ、
前記コーディングツリーユニットのサイズは128サンプル×128サンプルであり、
当該コーディングツリーユニットにおける前記コーディングユニットが、当該コーディングツリーユニット内の複数の64サンプル×64サンプルの領域にまたがる場合、
前記第2の決定工程において、
当該コーディングユニットにおける複数の変換ユニットの内の第1の変換ユニットが、前記複数の64サンプル×64サンプルの内の第1の領域に含まれ、
当該コーディングユニットにおける前記複数の変換ユニットの内の前記第1の変換ユニットとは異なる第2の変換ユニットが、前記複数の64サンプル×64サンプルの内の前記第1の領域とは異なる第2の領域に含まれ、かつ、
前記複数の変換ユニットにおける各変換ユニットが前記複数の64サンプル×64サンプルの領域の内のいずれかに含まれるように、前記複数の変換ユニットを決定する
また、本開示の一態様によれば、所定の符号化方式に従って、コーディングユニットを符号化する方法が提供され、方法は、コーディングツリーユニットにおけるコーディングユニットを決定する第1の決定工程と、前記コーディングユニットにおける変換ユニットを決定する第2の決定工程と、前記コーディングユニットを、前記変換ユニットを用いて符号化する符号化工程とを有し、前記所定の符号化方式において、前記コーディングユニットの辺の長さは、128サンプルとすることが可能であり、前記変換ユニットのサイズに関する第1の制約が前記変換ユニットを決定する際に用いられる場合における前記第2の決定工程において、前記コーディングユニットの少なくとも1つの辺の長さが128サンプルであったとしても、該コーディングユニットにおける前記変換ユニットの輝度成分のサイズとして選択可能な最大値を、128サンプルの4分の1である32サンプルとして、前記変換ユニットを決定し、前記所定の符号化方式において、水平方向及び垂直方向の内の一方における辺の長さが他方における辺の長さよりも長い形状を前記変換ユニットの形状として用いることが可能であり、
前記コーディングユニットは、3分割を用いて前記コーディングツリーユニットを分割することで決定することができ、
前記コーディングツリーユニットのサイズは128サンプル×128サンプルであり、
当該コーディングツリーユニットにおける前記コーディングユニットが、当該コーディングツリーユニット内の複数の64サンプル×64サンプルの領域にまたがる場合、
前記第2の決定工程において、
当該コーディングユニットにおける複数の変換ユニットの内の第1の変換ユニットが、前記複数の64サンプル×64サンプルの内の第1の領域に含まれ、
当該コーディングユニットにおける前記複数の変換ユニットの内の前記第1の変換ユニットとは異なる第2の変換ユニットが、前記複数の64サンプル×64サンプルの内の前記第1の領域とは異なる第2の領域に含まれ、かつ、
前記複数の変換ユニットにおける各変換ユニットが前記複数の64サンプル×64サンプルの領域の内のいずれかに含まれるように、前記複数の変換ユニットを決定する
【0013】
本開示の別の態様によれば、ビットストリームから画像フレーム内のコーディングユニットを復号する方法を実施するためのコンピュータプログラムが格納された非一時的なコンピュータ可読媒体が提供され、プログラムは、
ビットストリームからコーディングユニットのサイズを決定するためのコードと、
画像フレームを複数の等しいサイズの処理領域に分割するためのコードであって、該複数の等しいサイズの処理領域の各々は、ビットストリームを復号するパイプラインの単一段階の間に処理されるブロックであり、
コーディングユニットが、決定された処理領域間の境界と重なる場合、複数の変換サイズからコーディングユニットのための変換サイズを選択するためのコードであって、変換サイズは、コーディングユニット内に適合するように選択され、処理領域とはサイズが異なり、
コーディングユニットにおいて、各変換ユニットの残差係数に逆変換を施してコーディングユニットを復号するコードであって、各変換ユニットは選択された変換サイズのものである、
を有する。
【0014】
本開示のさらに別の態様によれば、
メモリと、
プロセッサであって、該プロセッサはビットストリームから画像フレーム内のコーディングユニットを復号する方法を実現するために、メモリに記憶されたコードを実行するように構成される
を有するシステムが提供され、方法は、
ビットストリームからコーディングユニットのサイズを決定することと、
画像フレームを複数の等しいサイズの処理領域に分割することであって、該複数の等しいサイズの処理領域の各々は、ビットストリームを復号するパイプラインの単一段階の間に処理されるブロックであり、
コーディングユニットが、決定された処理領域間の境界に重なる場合、複数の変換サイズからコーディングユニットのための変換サイズを選択し、変換サイズは、コーディングユニット内に適合するように選択され、処理領域とはサイズが異なり、
コーディングユニットにおける各変換ユニットの残差係数に逆変換を適用することによってコーディングユニットを復号することであって、各変換ユニットは、選択された変換サイズのものである、
を有する。
【0015】
本開示のさらに別の態様によれば、
ビットストリームから画像フレームを受信し、
ビットストリーム内のコーディングユニットのサイズを決定し、
画像フレームを複数の等しいサイズの処理領域に分割し、該複数の等しいサイズの処理領域の各々は、ビットストリームを復号するパイプラインの単一段階の間に処理されるブロックであり、
コーディングユニットが、決定された処理領域間の境界に重なる場合、複数の変換サイズからコーディングユニットのための変換サイズを選択し、変換サイズは、コーディングユニット内に適合するように選択され、処理領域とはサイズが異なり、
コーディングユニットにおける各変換ユニットの残差係数に逆変換を適用することにより、コーディングユニットを復号し、各変換ユニットは、選択された変換サイズのものである
ビデオデコーダが提供される。
【0016】
本開示のさらに別の態様によれば、ビットストリームから画像フレーム内のコーディングユニットを復号する方法が提供され、方法は、
ビットストリームからコーディングユニットのサイズを決定することと、
画像フレームを複数の等しいサイズの処理領域に分割することであって、該複数の等しいサイズの処理領域の各々は、最大の利用可能なコーディングユニットサイズよりも小さく、
候補動きベクトルのリストからコーディングユニットに対応する動きベクトルを選択することであって、動きベクトルを選択することは、(i)コーディングユニットが決定された処理領域のうちの1つ以上のサイズである場合にはマージインデックスを復号すること、または(ii)コーディングユニットが決定された処理領域のうちの1つ以上のサイズでない場合にマージインデックスを復号するためにスキップフラグを復号デコードすること、を含み、
コーディングユニットのために選択された動きベクトルに従ってコーディングユニットを復号することと、
を有する。
【0017】
本開示のさらに別の態様によれば、ビットストリームから画像フレーム内のコーディングユニットを復号する方法を実施するためのコンピュータプログラムが格納された非一時的なコンピュータ可読媒体が提供され、コンピュータプログラムは、
ビットストリームからコーディングユニットのサイズを決定するためのコードと、
画像フレームを複数の等しいサイズの処理領域に分割するためのコードであって、該複数の等しいサイズの処理領域の各々は、最大の利用可能なコーディングユニットサイズよりも小さく、
候補動きベクトルのリストからコーディングユニットに対応する動きベクトルを選択するためのコードであって、動きベクトルを選択することは、(i)コーディングユニットが決定された処理領域のうちの1つ以上のサイズである場合にマージインデックスを復号すること、または(ii)コーディングユニットが決定された処理領域のうちの1つ以上のサイズでない場合にマージインデックスを復号するためにスキップフラグを復号すること、を有し、
コーディングユニットのために選択された動きベクトルに従って、コーディングユニットを復号するためのコードと
を有する。
【0018】
本開示のさらに別の態様によれば、
メモリと、
プロセッサであって、プロセッサはビットストリームから画像フレーム内のコーディングユニットを復号する方法を実現するために、メモリに記憶されたコードを実行するように構成されるシステムが提供され、方法は、
ビットストリームからコーディングユニットのサイズを決定することと、
画像フレームを複数の等しいサイズの処理領域に分割することであって、該複数の等しいサイズの処理領域の各々は、最大の利用可能なコーディングユニットサイズよりも小さく、
候補動きベクトルのリストからコーディングユニットに対応する動きベクトルを選択することであって、動きベクトルを選択することは、(i)コーディングユニットが決定された処理領域のうちの1つ以上のサイズである場合にマージインデックスを復号すること、または(ii)コーディングユニットが決定された処理領域のうちの1つ以上のサイズでない場合にマージインデックスを復号するためにスキップフラグを復号することを含み、
コーディングユニットのために選択された動きベクトルに従ってコーディングユニットを復号すること
を有する。
【0019】
本開示のさらに別の態様によれば、
ビットストリームから画像フレームを受信し、
ビットストリームからコーディングユニットのサイズを決定し、
画像フレームを複数の等しいサイズの処理領域に分割し、該複数の等しいサイズの処理領域の各々は、最大の利用可能なコーディングユニットサイズよりも小さく、
候補動きベクトルのリストからコーディングユニットに対応する動きベクトルを選択し、動きベクトルを選択することは、(i)コーディングユニットが決定された処理領域の1つ以上のサイズである場合にマージインデックスを復号すること、または(ii)コーディングユニットが決定された処理領域の1つ以上のサイズでない場合にマージインデックスを復号するためにスキップフラグを復号すること、を有し、
コーディングユニットのために選択された動きベクトルに従ってコーディングユニットを復号する
ビデオデコーダが提供される。
【0020】
他の態様も開示される。
【図面の簡単な説明】
【0021】
次に、本発明の少なくとも1つの実施形態を、以下の図面および付録を参照して説明する。
図1図1は、ビデオ符号化及び復号システムを示す概略ブロック図である。
図2A図2Aは、図1のビデオ符号化および復号システムの一方または両方を実施することができる汎用コンピュータシステムの概略ブロック図を形成する。
図2B図2Bは、図1のビデオ符号化および復号システムの一方または両方を実施することができる汎用コンピュータシステムの概略ブロック図を形成する。
図3図3はビデオエンコーダの機能モジュールを示す概略ブロック図である。
図4図4は、ビデオデコーダの機能モジュールを示す概略ブロック図である。
図5図5は、汎用ビデオ符号化のツリー構造における1つ以上のブロックへのブロックの利用可能な分割を示す概略ブロック図である。
図6図6は、汎用ビデオ符号化のツリー構造における1つ以上のブロックへのブロックの許可された分割を達成するためのデータフローの概略図である。
図7A図7Aは、コーディングツリーユニット(CTU)をいくつかのコーディングユニットに分割する例を示す。
図7B図7Bは、コーディングツリーユニット(CTU)をいくつかのコーディングユニットに分割する例を示す。
図8A図8Aは、パイプライン化されたアーキテクチャに従って処理されるコーディングツリーユニット(CTU)のシーケンス例を示す。
図8B図8Bはビデオにおけるフレームの「ランダムアクセス」ピクチャグループ構造の例を示す。
図9図9は、VVC規格のための変換サイズを示す図である。
図10A図10Aは、コーディングツリーの最上位レベルにおける3分割のコーディングツリーユニット(CTU)のコーディングユニットを示す図である。
図10B図10Bは、図10Aのコーディングツリーに関連付けられた代替の変換ユニットを示す図である。
図10C図10Cは、反対方向の2つの3分割のコーディングツリーに関連付けられた変換ユニットを示す図である。
図10D図10Dは、垂直3分割、水平2分割、および垂直3分割のコーディングツリーに関連付けられた変換ユニットを示す図である。
図10E図10Eは、2つの垂直3分割のコーディングツリーに関連付けられた変換ユニットを示す図である。
図10F図10Fは、図10Eに対する2つの垂直3分割のコーディングツリーに関連付けられた代替の変換ユニットを示す図である。
図11図11は、コーディングツリーユニットのコーディングツリーにおけるコーディングユニットの予測モードを決定するための方法のフローチャートである。
図12図12は、変換を使用してコーディングユニットを符号化するための方法のフローチャート図であり、この方法は、ビデオエンコーダのパイプライン化された実装を実現することを可能にする。
図13図13は、変換を用いてコーディングユニットを復号する方法のフローチャート図であり、図12の方法に従って選択された変換サイズ。
【発明を実施するための形態】
【0022】
添付の図面の1又は2以上において、同一の参照符号を有するステップ及び/又は特徴を参照する場合、それらのステップ及び/又は特徴は本明細書の目的のために、反対の意図が現れない限り、同一の機能又は動作を有する。
【0023】
図1は、ビデオ符号化及び復号システム100の機能モジュールを示す概略ブロック図である。システム100は、CTUサイズよりも小さい領域(または「パイプライン処理領域」)においてコーディングツリーユニット(CTU)を処理することを可能にするために、大きなブロックまたはコーディングユニット(CU)を複数のより小さなブロックまたは変換ユニット(TU)に暗黙的に分割することを利用することができる。例えば、システム100は、4つの象限(four quadrants)としてCTUを処理することができ、その各々は多くのCUを含むことができ、かつ/または複数の領域にまたがるCUの部分を含むことができる。
【0024】
システム100は、ソース装置110と宛先装置130とを含む。通信チャネル120は、符号化されたビデオ情報をソース装置110から宛先装置130に通信するために使用される。いくつかの構成では、ソース装置110および宛先装置130がそれぞれの携帯電話ハンドセットまたは「スマートフォン」のいずれかまたは両方を備えることができ、その場合、通信チャネル120はワイヤレスチャネルである。他の構成では、ソース装置110および宛先装置130がビデオ会議機器を備えることができ、その場合、通信チャネル120は通常、インターネット接続などの有線チャネルである。さらに、ソース装置110および宛先装置130は、無線テレビ放送、ケーブルテレビアプリケーション、インターネットビデオアプリケーション(ストリーミングを含む)、およびファイルサーバ内のハードディスクドライブなどの何らかのコンピュータ可読記憶媒体上に符号化ビデオデータが取り込まれるアプリケーションをサポートする装置を含む、広範囲の装置のうちの任意のものを備えることができる。
【0025】
図1に示すように、ソース装置110は、ビデオソース112と、ビデオエンコーダ114と、送信機116と、を含む。ビデオソース112は、典型的には撮像センサ等の、撮像されたビデオフレームデータ(113として示されている)のソース、非一時的記録媒体上に格納された前に撮像されたビデオシーケンス、又はリモート撮像センサからのビデオ、を有する。ビデオソース112はまた、コンピュータグラフィックスカードの出力であってもよく、例えば、タブレットコンピュータなどのコンピューティングデバイスで実行されているオペレーティングシステムとさまざまなアプリケーションのビデオ出力を表示する。ビデオソース112として撮像センサを含み得るソース装置110の例は、スマートフォン、ビデオカメラ、業務用ビデオカメラ、およびネットワークビデオカメラを含む。
【0026】
ビデオエンコーダ114は、図3を参照してさらに説明されるように、ビデオソース112からの撮像されたフレームデータ(矢印113によって示される)をビットストリーム(矢印115によって示される)に変換(または「符号化」)する。ビットストリーム115は、符号化されたビデオデータ(または「符号化されたビデオ情報」)として通信チャネル120を介して送信機116によって送信される。ビットストリーム115は後に通信チャネル120を介して送信されるまで、または通信チャネル120を介した送信の代わりに、「フラッシュ」メモリまたはハードディスクドライブなどの非一時的記憶装置122に記憶されることも可能である。
【0027】
宛先装置130は、受信機132と、ビデオデコーダ134と、表示装置136と、を含む。受信機132は、通信チャネル120から符号化されたビデオデータを受信し、受信されたビデオデータをビットストリームとしてビデオデコーダ134に渡す(矢印133によって示される)。そして、ビデオデコーダ134は、(矢印135で示す)復号フレームデータを表示装置136に出力する。表示装置136の例には、陰極線管、スマートフォン、タブレットコンピュータ、コンピュータモニタ、またはスタンドアロンテレビセットなどの液晶ディスプレイが含まれる。また、ソース装置110および宛先装置130の各々の機能性が単一の装置で実現されることも可能であり、その例は、携帯電話ハンドセットおよびタブレットコンピュータを含む。
【0028】
上記の例示的なデバイスにもかかわらず、ソース装置110および宛先装置130のそれぞれは、一般にハードウェアおよびソフトウェア構成要素の組合せを介して、汎用コンピューティングシステム内で構成され得る。図2Aは、コンピュータモジュール201と、キーボード202、マウスポインタデバイス203、スキャナ226、ビデオソース112として構成することができるカメラ227、およびマイクロフォン280などの入力デバイスと、プリンタ215、表示装置136として構成することができるディスプレイデバイス214、およびスピーカ217を含む出力デバイスと、を含む、そのようなコンピュータシステム200を示す。外部変復調器(モデム)トランシーバ装置216は、接続221を介して通信ネットワーク220との間で通信するためにコンピュータモジュール201によって使用され得る。通信チャネル120を表すことができる通信ネットワーク220は、インターネット、セルラ電気通信ネットワーク、またはプライベートWANなどの広域ネットワーク(WAN)であってもよい。接続221が電話回線である場合、モデム216は従来の「ダイヤルアップ」モデムであってもよい。あるいは接続221が大容量(例えば、ケーブルまたは光)接続である場合、モデム216はブロードバンドモデムであってもよい。無線モデムはまた、通信ネットワーク220への無線接続のために使用されてもよい。トランシーバ装置216は、送信機116及び受信機132の機能性を提供することができ、通信チャネル120は、接続221内に具現化することができる。
【0029】
コンピュータモジュール201は、典型的には少なくとも1つのプロセッサユニット205と、メモリユニット206とを含む。例えば、メモリユニット206は、半導体ランダムアクセスメモリ(RAM)及び半導体リードオンリーメモリ(ROM)を有することができる。コンピュータモジュール201はまた、ビデオディスプレイ214、スピーカ217、およびマイクロフォン280に結合するオーディオビデオインターフェース207、キーボード202、マウス203、スキャナ226、カメラ227、およびオプションとしてジョイスティックまたは他のヒューマンインターフェースデバイス(図示せず)に結合するI/Oインターフェース213、ならびに外部モデム216およびプリンタ215のためのインターフェース208を含む、いくつかの入出力(I/O)インターフェースを含む。オーディオビデオインターフェース207からコンピュータモニタ214への信号は一般に、コンピュータグラフィックスカードの出力である。いくつかの実装では、モデム216が、例えばインターフェース208内のコンピュータモジュール201内に組み込まれてもよい。コンピュータモジュール201はまた、ローカルネットワークインターフェース211を有し、これは、接続223を介して、ローカルエリアネットワーク(LAN)として知られるローカルエリア通信ネットワーク222への、コンピュータシステム200の結合を可能にする。図2Aに示すように、ローカル通信ネットワーク222は、通常、いわゆる「ファイアウォール」デバイスまたは同様の機能のデバイスを含む接続224を介してワイドネットワーク220に結合することもできる。ローカルネットワークインターフェース211は、イーサネットTM回路カード、ブルートゥースTMワイヤレス構成又はIEEE802.11ワイヤレス構成を含むことができるが、インターフェース211のために多くの他のタイプのインターフェースが実施されてもよい。ローカルネットワークインターフェース211は、また、送信機116の機能を提供することができ、受信機132および通信チャネル120はまた、ローカル通信ネットワーク222において具現化することができる。
【0030】
I/Oインターフェース208および213は、シリアルコネクティビティおよびパラレルコネクティビティのいずれかまたは両方を提供することができ、前者は、典型的にはユニバーサルシリアルバス(USB)規格に従って実施され、対応するUSBコネクタ(図示せず)を有する。記憶装置209が提供され、典型的にはハードディスクドライブ(HDD)210を含む。フロッピーディスクドライブおよび磁気テープドライブ(図示せず)などの他の記憶装置も使用することができる。光ディスクドライブ212は、典型的にはデータの不揮発性ソースとして機能するために設けられる。例えば、光ディスク(例えば、CD-ROM、DVD、Blu ray DiscTM)、USB-RAM、ポータブル、外部ハードドライブ、およびフロッピーディスクなどのポータブルメモリデバイスは、コンピュータシステム200に対するデータの適切なソースとして使用することができる。典型的にはHDD210、光ドライブ212、ネットワーク220及び222のいずれかはビデオソース112として、又はディスプレイ214を介して再生するために記憶されるべき復号されたビデオデータのための宛先として動作するように構成されてもよい。システム100のソース装置110および宛先装置130は、コンピュータシステム200において具現化されてもよい。
【0031】
コンピュータモジュール201の構成要素205~213は、典型的には相互接続バス204を介して、当業者に知られているコンピュータシステム200の従来の動作モードをもたらす方法で通信する。例えば、プロセッサ205は、接続218を用いてシステムバス204に結合される。同様に、メモリ206および光ディスクドライブ212は、接続219によってシステムバス204に結合される。上記の構成が実行可能なコンピュータの例には、IBM-PCおよび互換機、Sun SPARCステーション、Apple MacTMまたは同様のコンピュータシステムが含まれる。
【0032】
適切または必要な場合、ビデオエンコーダ114およびビデオデコーダ134、ならびに以下で説明する方法は、コンピュータシステム200を使用して実施することができる。具体的には、ビデオエンコーダ114、ビデオデコーダ134、および説明される方法は、コンピュータシステム200内で実行可能な1つまたは複数のソフトウェアアプリケーションプログラム233として実施することができる。具体的には、ビデオエンコーダ114、ビデオデコーダ134、および説明する方法のステップは、コンピュータシステム200内で実行されるソフトウェア233内の命令231(図2B参照)によって実行される。ソフトウェア命令231は、それぞれが1つ以上の特定のタスクを実行するための1つ以上のコードモジュールとして形成されてもよい。ソフトウェアはまた、2つの別個の部分に分割されてもよく、その場合、第1の部分と対応するコードモジュールは説明される方法を実行し、第2の部分と対応するコードモジュールは、第1の部分とユーザとの間のユーザインターフェースを管理する。
【0033】
ソフトウェアは例えば、以下に説明する記憶装置を含むコンピュータ可読媒体に記憶することができる。ソフトウェアは、コンピュータ可読媒体からコンピュータシステム200にロードされ、その後、コンピュータシステム200によって実行される。このようなソフトウェア又はコンピュータ可読媒体に記録されたコンピュータプログラムを有するコンピュータ可読媒体は、コンピュータプログラム製品である。コンピュータシステム200におけるコンピュータプログラム製品の使用は、ビデオエンコーダ114、ビデオデコーダ134、および説明される方法を実施するための有利な装置をもたらすことが好ましい。
【0034】
ソフトウェア233は、典型的にはHDD210またはメモリ206に記憶される。ソフトウェアは、コンピュータ可読媒体からコンピュータシステム200にロードされ、コンピュータシステム200によって実行される。したがって、例えば、ソフトウェア233は、光ディスクドライブ212によって読み取られる光学的に読み取り可能なディスク記憶媒体(例えば、CD-ROM)225に記憶することができる。
【0035】
場合によっては、アプリケーションプログラム233が1つ以上のCD-ROM225上で符号化されてユーザに供給され、対応するドライブ212を介して読み出されてもよく、あるいはネットワーク220または222からユーザによって読み出されてもよい。さらに、ソフトウェアは、他のコンピュータ可読媒体からコンピュータシステム200にロードすることもできる。コンピュータ可読記憶媒体は、実行および/または処理のために記録された命令および/またはデータをコンピュータシステム200に提供する任意の非一時的な有形の記憶媒体を指す。このような記憶媒体の例としては、フロッピーディスク、磁気テープ、CD-ROM、DVD、Blu-ray DiscTM、ハードディスクドライブ、ROMまたは集積回路、USBメモリ、光磁気ディスク、またはPCMCIAカードなどのコンピュータ可読カードを含み、そのような装置がコンピュータモジュール201の内部または外部であるか否かは問わない。コンピュータモジュール401へのソフトウェア、アプリケーションプログラム、命令および/またはビデオデータまたは符号化されたビデオデータの提供にも参加し得る一時的なまたは非有形のコンピュータ可読伝送媒体の例には、無線または赤外線伝送チャネル、ならびに別のコンピュータまたはネットワーク接続された装置へのネットワーク接続、ならびにウェブサイトなどに記録された電子メール伝送および情報を含むインターネットまたはイントラネットが含まれる。
【0036】
アプリケーションプログラム233の第2の部分および上記の対応するコードモジュールは、ディスプレイ214上でレンダリングされるかまたは他の方法で表される1つ以上のグラフィカルユーザインタフェース(GUI)を実装するために実行されてもよい。典型的にはキーボード202およびマウス203の操作を通して、アプリケーションおよびコンピュータシステム200のユーザは機能的に適応可能な方法でインターフェースを操作し、GUIに関連するアプリケーションに制御コマンドおよび/または入力を提供することができる。スピーカ217を介して出力されるスピーチプロンプトおよびマイクロフォン280を介して入力されるユーザ音声コマンドを利用するオーディオインターフェースなど、他の形態の機能的に適応可能なユーザインターフェースを実装することもできる。
【0037】
図2Bは、プロセッサ205および「メモリ」234の詳細な概略ブロック図である。メモリ234は、図2Aのコンピュータモジュール201がアクセス可能な全てのメモリモジュール(HDD209及び半導体メモリ206を含む)の論理集合体を表す。
【0038】
最初にコンピュータモジュール201の電源が入ると、パワーオン自己テスト(POST)プログラム250が実行される。POSTプログラム250は、典型的には図2Aの半導体メモリ206のROM249に記憶される。ソフトウェアを記憶するROM249などのハードウェアデバイスは、ファームウェアと呼ばれることもある。POSTプログラム250は、コンピュータモジュール201内のハードウェアを検査して、適切に機能することを確認し、通常、正しい動作のために、プロセッサ205、メモリ234(209、206)、および基本入出力システムソフトウェア(BIOS)モジュール251(通常はROM249にも格納される)をチェックする。POSTプログラム250が正常に実行されると、BIOS251は、図2Aのハードディスクドライブ210を起動する。ハードディスクドライブ210を起動すると、ハードディスクドライブ210上に常駐するブートストラップローダプログラム252がプロセッサ205を介して実行される。これにより、オペレーティングシステム253がRAMメモリ206にロードされ、その上でオペレーティングシステム253が動作を開始する。オペレーティングシステム253は、プロセッサ205によって実行可能なシステムレベルアプリケーションであり、プロセッサ管理、メモリ管理、デバイス管理、ストレージ管理、ソフトウェアアプリケーションインタフェース、および汎用ユーザインタフェースを含む様々な高レベルの機能を満たす。
【0039】
オペレーティングシステム253は、メモリ234(209、206)を管理して、コンピュータモジュール201上で実行される各プロセスまたはアプリケーションが別のプロセスに割り当てられたメモリと衝突することなく実行するのに十分なメモリを有することを保証する。さらに、図2Aのコンピュータシステム200で利用可能な異なるタイプのメモリは、各プロセスが効果的に実行できるように、適切に使用されなければならない。したがって、集約メモリ234は、メモリの特定のセグメントが(特に明記されていない限り)どのように割り当てられるかを示すことを意図するものではなく、むしろ、コンピュータシステム200によってアクセス可能なメモリの一般的なビューと、そのようなセグメントがどのように使用されるかを提供することを意図するものである。
【0040】
図2Bに示すように、プロセッサ205は、制御部239、演算論理ユニット(ALU)240、時にはキャッシュメモリと呼ばれるローカルまたは内部メモリ248、を含む多数の機能モジュールを含む。キャッシュメモリ248は、典型的にはレジスタセクション内に多数の記憶レジスタ244~246を含む。1つ以上の内部バス241は、これらの機能モジュールを機能的に相互接続する。プロセッサ205はまた、典型的には、接続218を使用して、システムバス204を介して外部装置と通信するための1つ以上のインターフェース242を有する。メモリ234は、接続219を使用してバス204に結合される。
【0041】
アプリケーションプログラム233は、条件分岐およびループ命令を含み得る命令のシーケンス231を含む。プログラム233はまた、プログラム233の実行に使用されるデータ232を含んでもよい。命令231およびデータ232は、それぞれメモリ位置228、229、230および235、236、237に格納される。命令231とメモリ位置228~230の相対的なサイズに応じて、メモリ位置230に示される命令によって示されるように、特定の命令を単一のメモリ位置に記憶することができる。あるいは、命令がメモリ位置228および229に示される命令セグメントによって示されるように、各々が別個のメモリ位置に記憶されるいくつかの部分にセグメント化されてもよい。
【0042】
一般に、プロセッサ205には、その中で実行される命令のセットが与えられる。プロセッサ205は後続の入力を待ち、この入力に対してプロセッサ205は、別の命令セットを実行することによって反応する。各入力は入力装置202、203のうちの1つまたは複数によって生成されたデータ、ネットワーク220、202のうちの1つを介して外部ソースから受信されたデータ、記憶装置206、209のうちの1つから取り出されたデータ、または対応するリーダ212に挿入された記憶媒体225から取り出されたデータを含む、いくつかのソースのうちの1つまたは複数から提供することができ、すべて図2Aに示されている。命令のセットを実行すると、データが出力される場合がある。実行には、データまたは変数をメモリ234に記憶することも含まれ得る。
【0043】
ビデオエンコーダ114、ビデオデコーダ134、および説明される方法は、メモリ234内の対応するメモリ位置255、256、257に格納されている入力変数254を使用することができる。ビデオエンコーダ114、ビデオデコーダ134、および説明される方法は、出力変数261を生成し、これらは、メモリ234内の対応するメモリ位置262、263、264に格納される。中間変数258は、メモリ位置259、260、266および267に格納され得る。
【0044】
図2Bのプロセッサ205を参照すると、レジスタ244、245、246、演算論理ユニット(ALU)240、および制御部239は、プログラム233を構成する命令セット内のすべての命令に対して「フェッチ、デコード、および実行」サイクルを実行するのに必要なマイクロオペレーションのシーケンスを実行するために協働する。各フェッチ、デコード、および実行サイクルは
(a)メモリ位置228、229、230から命令231をフェッチまたは読出すフェッチ動作
(b)制御部239が、どの命令がフェッチされたかを判定するデコード動作
(c)制御部239及び/又はALU240が命令を実行する動作を実行する
を有する。
【0045】
その後、次の命令のフェッチ、デコード、および実行サイクルをさらに実行することができる。同様に、制御部239がメモリ位置232に値を格納または書き込む格納サイクルを実行することができる。
【0046】
後述する図12および図13の方法における各ステップまたはサブプロセスは、プログラム233の1つまたは複数のセグメントに関連付けられ、典型的にはプロセッサ205内のレジスタセクション244、245、247、ALU240、および制御部239が協働して、プログラム233の注記されたセグメントに対する命令セット内のすべての命令に対してフェッチ、デコード、および実行サイクルを実行することによって実行される。
【0047】
図3は、ビデオエンコーダ114の機能モジュールを示す概略ブロック図である。図4は、ビデオデコーダ134の機能モジュールを示す概略ブロック図である。一般に、データは、固定サイズのサブブロックへのブロックの分割などのサンプルまたは係数のグループで、または配列として、ビデオデコーダ134とビデオエンコーダ114の機能モジュールの間を通過する。ビデオエンコーダ114およびビデオデコーダ134は、図2Aおよび図2Bに示すように、汎用コンピュータシステム200を使用して実施することができ、様々な機能モジュールは、ハードディスクドライブ205上に常駐し、プロセッサ205によってその実行中に制御されるソフトウェアアプリケーションプログラム233の1つ以上のソフトウェアコードモジュールなど、コンピュータシステム200内で実行可能なソフトウェアによって、コンピュータシステム200内の専用ハードウェアによって実現することができる。あるいは、ビデオエンコーダ114およびビデオデコーダ134は、コンピュータシステム200内で実行可能なソフトウェアおよび専用ハードウェアの組合せによって実装されてもよい。ビデオエンコーダ114、ビデオデコーダ134、および説明される方法は、代替として、説明される方法の機能またはサブ機能を実行する1つまたは複数の集積回路などの専用ハードウェアで実装され得る。そのような専用ハードウェアは、グラフィック処理ユニット(GPU)、デジタルシグナルプロセッサ(DSP)、特定用途向け標準製品(ASSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または1つまたは複数のマイクロプロセッサおよび関連するメモリを含むことができる。特に、ビデオエンコーダ114は、モジュール310~386を含み、ビデオデコーダ134は、ソフトウェアアプリケーションプログラム233の1つ以上のソフトウェアコードモジュールとしてそれぞれ実装され得るモジュール420~496を含む。
【0048】
図3のビデオエンコーダ114は汎用ビデオ符号化(VVC)ビデオ符号化パイプラインの一例であるが、本明細書で説明する処理ステージを実行するために他のビデオコーデックを使用することもできる。ビデオエンコーダ114は、一連のフレームなどの、撮像されたフレームデータ113を受信し、各フレームは1つ以上のカラーチャネルを含む。ブロックパーティショナ310は最初に、フレームデータ113を、一般には矩形形状のCTUに分割し、CTUのための特定のサイズが使用されるように構成される。CTUのサイズは、例えば、64×64、128×128、または256×256輝度サンプルとすることができる。ブロックパーティショナ310はさらに、各CTUを1つまたは複数のCUに分割し、CUは、二乗および非二乗アスペクト比の両方を含むことができる様々なサイズを有する。しかし、VVC規格では、CU、PU、およびTUは常に2の累乗である辺長を有する。したがって、312として表される現在のCUは、ブロックパーティショナ310から出力され、CTUのコーディングツリーに従って、CTUの1つまたは複数のブロックにわたる反復に従って進行する。CTUをCUに分割するためのオプションは、図5および図6を参照して以下でさらに説明される。
【0049】
フレームデータ113の第1の分割から得られるCTUは、ラスタスキャン順序でスキャンされ、1つまたは複数の「スライス」にグループ化され得る。スライスは「イントラ」(または「I」)スライスであってもよく、イントラスライス(Iスライス)はスライス内のすべてのCUがイントラ予測されることを示す。代替的に、スライスは、単一または双予測(それぞれ、「P」または「B」スライス)であってもよく、それぞれ、スライスにおける単一および双予測のさらなる利用可能性を示す。フレームデータ113は通常、複数のカラーチャネルを含むので、CTUおよびCUはブロックパーティショナ310の動作から定義されたブロック領域と重複するすべてのカラーチャネルからのサンプルに関連付けられる。CUは、フレームデータ113の各カラーチャネルに対して1つのコーディングブロック(CB)を含む。輝度チャネルと比較して彩度チャネルのサンプリングレートが潜在的に異なるために、彩度チャネルのCBの寸法は、輝度チャネルのCBの寸法とは異なり得る。4:2:0彩度フォーマットを使用する場合、CUの彩度チャネルのCBは、CUの輝度チャネルのためのCBの幅および高さの半分の寸法を有する。
【0050】
各CTUに対して、ビデオエンコーダ114は2段階で動作する。第1の段階(「サーチ」ステージと呼ばれる)では、ブロックパーティショナ310がコーディングツリーの様々な潜在的な構成をテストする。コーディングツリーの各潜在的構成は、関連する「候補」CUをもつ。最初の段階は、低歪みで高い圧縮効率を提供するCUを選択するために様々な候補CUをテストすることを含む。このテストは一般にラグランジュ最適化を含み、それによって候補CUがレート(符号化コスト)と歪(入力フレームデータ113に関する誤差)の重み付けされた組合せに基づいて評価される。「最良の」候補CU(最も低いレート/歪みを有するCU)は、ビットストリーム115への後続の符号化のために選択される。候補CUの評価には、所与のエリアに対してCUを使用するか、または様々なスプリットオプションに従ってエリアをスプリットし、結果として生じるより小さいエリアのそれぞれをさらなるCUで符号化するか、またはエリアをさらにスプリットするオプションが含まれる。その結果、CUとコーディングツリー自体の両方が探索段階で選択される。
【0051】
ビデオエンコーダ114は、各CU、例えばCU312に対して矢印320で示される予測ユニット(PU)を生成する。PU320は、関連するCU312のコンテンツの予測である。減算器モジュール322はPU320とCU312との間に、324(または「残差」、空間領域内にある差を参照する)として示される差を生成する。差324は、PU320およびCU312における対応するサンプル間のブロックサイズの差である。差分324は、変換され、量子化され、矢印336によって示される変換ユニット(TU)として表される。PU320および関連するTU336は、典型的には多くの可能な候補CUのうちの「最良の」1つとして選択される。
【0052】
候補コーディングユニット(CU)は、関連するPUおよび結果として生じる残差についてビデオエンコーダ114に利用可能な予測モードの1つから生じるCUである。各候補CUは図10~12を参照して以下に記載されるように、1つ以上の対応するTUを生じる。TU336は、差分324の量子化され、変換された表現である。デコーダ114において予測されたPUと結合されると、TU336は、ビットストリームにおける追加の信号を犠牲にして、デコードされたCUとオリジナルのCU312との間の差を低減する。
【0053】
したがって、各候補コーディングユニット(CU)、すなわち変換ユニット(TU)と組み合わせた予測ユニット(PU)は、関連する符号化コスト(または「レート」)および関連する差(または「歪み」)を有する。レートは、典型的にはビット単位で測定される。CUの歪みは、典型的には絶対差の和(SAD)または二乗差の和(SSD)などのサンプル値の差として推定される。各候補PUから得られる推定は、モード選択器386によって、差324を用いて決定され、イントラ予測モード(矢印388によって表される)を決定する。各候補予測モードと対応する残差符号化に関連する符号化コストの推定は、残差のエントロピー符号化よりもかなり低いコストで実行できる。従って、レート歪み検知における最適モードを決定するために、多数の候補モードを評価することができる。
【0054】
最適モードの決定は、典型的にはラグランジュ最適化の変形を用いて達成される。イントラ予測モード388の選択は、典型的には特定のイントラ予測モードの適用から生じる残差データのための符号化コストを決定することを含む。符号化コストは「絶対変換差の和」(SATD)を使用することによって近似することができ、それによって、アダマール変換などの比較的単純な変換を使用して、推定された変換残差コストを得る。比較的単純な変換を使用するいくつかの実施形態では、単純化された推定方法から得られるコストがさもなければ完全な評価から決定されるのであろう実際のコストに単調に関係する。単調に関連する推定コストを有する実施形態では、単純化された推定方法を使用して、ビデオエンコーダ114の複雑さを低減しながら、同じ決定(すなわち、イントラ予測モード)を行うことができる。推定されたコストと実際のコストとの間の関係における可能な非単調性を可能にするために、簡略化された推定方法を使用して、最良の候補のリストを生成することができる。非単調性は例えば、残差データの符号化に利用可能なさらなるモード決定から生じ得る。最良の候補のリストは、任意の数であってもよい。最良の候補を使用して、より完全な探索を実行して、候補のそれぞれについて残差データを符号化するためのモード選択を確立することができ、他のモード決定と共にイントラ予測モードの最終選択を可能にする。
【0055】
他のモード決定は、「変換スキップ」として知られる順方向変換をスキップする能力を含む。変換をスキップすることは、変換基底関数としての表現を介して符号化コストを低減するための適切な相関を欠く残差データに適している。比較的単純なコンピュータ生成グラフィックスのような特定のタイプのコンテンツは、同様の挙動を示すことがある。「スキップされた変換」の場合、変換自体が実行されなくても、残差係数は依然として符号化される。
【0056】
ラグランジュ処理または類似の最適化処理を採用して、CTUのCUへの分割(ブロックパーティショナ310による)と、複数の可能性からの最良の予測モードの選択の両方を選択することができる。モード選択モジュール386における候補モードのラグランジュ最適化プロセスの適用を通して、最低コスト測定を有するイントラ予測モードが最良のモードとして選択される。最良のモードは、選択されたイントラ予測モード388であり、エントロピーエンコーダ338によってビットストリーム115に符号化される。モード選択モジュール386の動作によるイントラ予測モード388の選択は、ブロックパーティショナ310の動作に拡張する。例えば、イントラ予測モード388の選択のための候補は、所与のブロックに適用可能なモードと、さらに、所与のブロックと一緒に集合的に配置される複数のより小さいブロックに適用可能なモードとを含むことができる。所与のブロックおよびより小さいコロケートされたブロックに適用可能なモードを含む場合、候補を暗黙的に選択するプロセスは、CTUのCUへの最良の階層分解を決定するプロセスでもある。
【0057】
ビデオエンコーダ114の第2の動作段階(「符号化」段階と呼ばれる)では、選択されたコーディングツリー、したがって選択された各CUに対する反復がビデオエンコーダ114内で実行される。反復では、CUが本明細書でさらに説明するように、ビットストリーム115に符号化される。
【0058】
エントロピーエンコーダ338は、構文要素の可変長符号化と構文要素の算術符号化の両方をサポートする。算術符号化は、コンテキスト適応2進算術符号化処理を使用してサポートされる。算術的に符号化された構文要素は1つ以上の’bins’のシーケンスからなる。ビンはビットと同様に、「0」または「1」の値を持つ。しかし、ビンはビットストリーム115内で離散ビットとして符号化されていない。ビンは、「コンテキスト」として知られる、関連する予測(または「可能性」または「最も可能性のある」)値および関連する確率を有する。符号化される実際のビンが予測値と一致するとき、「最確シンボル」(MPS)が符号化される。最も確率の高いシンボルを符号化することは、消費されるビットに関して比較的安価である。符号化されるべき実際のビンがありそうな値と一致しない場合、「最低確率シンボル」(LPS)が符号化される。最低確率シンボルを符号化することは、消費されるビットに関して比較的高いコストを有する。ビン符号化技術は、「0」対「1」の確率がスキューされるビンの効率的な符号化を可能にする。2つの可能な値(すなわちflag)を持つ構文要素に対しては、単一のビンで十分である。可能な値が多い構文要素の場合は、一連のビンが必要である。
【0059】
シーケンス中の後のビンの存在は、シーケンス中の前のビンの値に基づいて決定されてもよい。さらに、各ビンは、2つ以上のコンテキストに関連付けることができる。特定のコンテキストの選択は構文要素の以前のビン、隣接する構文要素のビン値(すなわち、隣接するブロックからのもの)などに依存することができる。コンテキスト符号化ビンが符号化されるたびに、そのビンに対して選択されたコンテキスト(もしあれば)は、新しいビン値を反映する方法で更新される。このように、2進算術符号化方式は適応型であると言われている。
【0060】
また、ビデオエンコーダ114によってサポートされるのは、コンテキストを欠くビン(「バイパスビン」)である。バイパスビンは、「0」と「1」との間の等確率分布を仮定して符号化される。したがって、各ビンは、ビットストリーム115内の1ビットを占有する。コンテキストがないと、メモリが節約され、複雑さが軽減される。したがって、特定のビンの値の分布が偏っていない場合は、バイパスビンが使用される。コンテキストおよび適応を使用するエントロピーコーダの一例はCABAC(コンテキスト適応バイナリ算術コーダ)として当技術分野で知られており、このコーダの多くの変形がビデオ符号化に使用されている。
【0061】
エントロピーエンコーダ338は、コンテキスト符号化ビンとバイパス符号化ビンとの組合せを使用してイントラ予測モード388を符号化する。典型的には、「最確モード」のリストがビデオエンコーダ114において生成される。最も確率の高いモードのリストは典型的には3つまたは6つのモードのような固定長であり、以前のブロックで遭遇したモードを含むことができる。コンテキスト符号化ビンは、イントラ予測モードが最も確率の高いモードの1つかどうかを示すフラグを符号化する。イントラ予測モード388が最も確率の高いモードのうちの1つである場合、バイパス符号化されたビンを使用するさらなるシグナリングが符号化される。符号化されたさらなるシグナリングは例えば、切り捨てられた単項ビンストリングを使用して、どの最も確率の高いモードがイントラ予測モード388に対応するかを示す。そうでない場合、イントラ予測モード388は、「残りのモード」として符号化される。残りのモードとしての符号化は、バイパス符号化されたビンを使用しても符号化される固定長符号などの代替構文を使用して、最も確率の高いモードリストに存在するもの以外のイントラ予測モードを表現する。
【0062】
マルチプレクサモジュール384は決定された最良のイントラ予測モード388に従ってPU 320を出力し、各候補CUのテストされた予測モードから選択する。候補予測モードは、ビデオエンコーダ114によってサポートされるすべての考えられる予測モードを含む必要はない。
【0063】
予測モードは大きく二つのカテゴリーに分類される。第1のカテゴリは、「イントラフレーム予測」(「イントラ予測」とも呼ばれる)である。イントラフレーム予測では、ブロックに対する予測が生成され、生成方法は現在のフレームから得られた他のサンプルを使用してもよい。イントラ予測されたPUの場合、異なるイントラ予測モードが輝度および彩度のために使用されることが可能であり、したがって、イントラ予測は主に、PUではなくPB上での動作に関して説明される。
【0064】
予測モードの第2のカテゴリは、「インターフレーム予測」(「インター予測」とも呼ばれる)である。インターフレーム予測では、ブロックの予測がビットストリーム内のフレームを符号化する順序で現在のフレームに先行する1つまたは2つのフレームからのサンプルを使用して生成される。
【0065】
ビットストリーム内のフレームの符号化順は、キャプチャまたは表示時のフレームの順序とは異なる場合がある。1つのフレームが予測に使用される場合、ブロックは「単一予測」であると言われ、1つの関連する動きベクトルを有する。2つのフレームが予測に使用される場合、ブロックは「双予測」されると言われ、2つの関連する動きベクトルを有する。Pスライスの場合、各CUは、イントラ予測または単一予測され得る。Bスライスの場合、各CUは、イントラ予測、単一予測、または双予測され得る。フレームは、典型的にはフレームの時間的階層を可能にする「ピクチャのグループ」構造を使用して符号化される。フレームの時間的階層は、フレームがフレームを表示する順序で、先行するピクチャおよび後続するピクチャを参照することを可能にする。画像は、各フレームを復号するための依存関係が満たされていることを確認するために必要な順序で符号化される。
【0066】
インター予測のサブカテゴリは、「スキップモード」と呼ばれる。インター予測およびスキップモードは、2つの別個のモードとして説明される。しかしながら、インター予測モード及びスキップモードの両方は、先行するフレームからのサンプルのブロックを参照する動きベクトルを含む。インター予測は符号化された動きベクトルデルタを含み、動きベクトル予測子に対する動きベクトルを指定する。動きベクトル予測子は、「マージインデックス」で選択された1つ以上の候補動きベクトルのリストから得られる。符号化された動きベクトルデルタは、選択された動きベクトル予測に空間オフセットを提供する。また、インター予測は、ビットストリーム133内の符号化された残差を使用する。スキップモードは、インデックス(「マージインデックス」とも呼ばれる)のみを使用して、いくつかの動きベクトル候補のうちの1つを選択する。選択された候補は、さらなるシグナリングなしに使用される。また、スキップモードは、残差係数の符号化をサポートしない。スキップモードが使用されるとき、符号化された残差係数がないことは、スキップモードのための変換を実行する必要がないことを意味する。したがって、スキップモードは、典型的にはパイプライン処理問題を生じない。パイプライン処理問題は、イントラ予測CUおよびインター予測CUの場合であり得る。スキップモードの限定されたシグナリングのために、スキップモードは比較的高品質の参照フレームが利用可能であるときに、非常に高い圧縮性能を達成するために有用である。ランダムアクセスピクチャグループ構造のより高い時間レイヤにおける双予測CUは、典型的には基礎となる動きを正確に反映する高品質の参照ピクチャおよび動きベクトル候補を有する。その結果、スキップモードは、図8Bを参照して説明される、ランダムアクセスピクチャグループ構造内のより高い時間レイヤにおけるフレーム内の双予測ブロックに有用である。
【0067】
サンプルは、動きベクトルおよび参照ピクチャインデックスに従って選択される。動きベクトルおよび参照ピクチャインデックスは、すべてのカラーチャネルに適用され、したがって、インター予測は主に、PBではなくPU上での動作に関して説明される。各カテゴリー内(すなわち、イントラおよびインターフレーム予測)では、PUを生成するために異なる技法を適用することができる。例えば、イントラ予測は、所定のフィルタリング及び生成処理に従ってPUを生成する方向と組み合わせて、以前に再構成されたサンプルの隣接する行及び列からの値を使用することができる。あるいは、PUが少数のパラメータを使用して記述されてもよい。インター予測法は、動きパラメータの数とその精度で変わる可能性がある。動きパラメータは通常、参照フレームのリストからのどの参照フレームが使用されるべきかを示す参照フレームインデックスと、参照フレームの各々のための空間変換とを含むが、より多くのフレーム、特別なフレーム、またはスケーリングおよび回転などの複雑なアフィンパラメータを含むことができる。さらに、参照サンプルブロックに基づいて高密度動き推定を生成するために、所定の動き精緻化処理を適用することができる。
【0068】
最良のPU320を決定し、選択し、減算器322で元のサンプルブロックからPU 320を減算すると、符号化コストが最も低い324で表される残差が得られ、損失のある圧縮を受ける。損失性圧縮プロセスは、変換、量子化、およびエントロピー符号化のステップを含む。変換モジュール326は差分324に順変換を適用し、差分324を周波数領域に変換し、矢印332で表される変換係数を生成する。順変換は典型的には分離可能であり、行のセットを変換し、次いで、各ブロックの列のセットを変換する。行および列の各組の変換は最初にブロックの各行に1次元変換を適用して部分結果を生成し、次に部分結果の各列に1次元変換を適用して最終結果を生成することによって実行される。
【0069】
変換係数332は、量子化器モジュール334に渡される。モジュール334では、「量子化パラメータ」による量子化が実行され、矢印336によって表される残差係数が生成される。量子化パラメータは所与のTBについて一定であり、したがって、TBについての残差係数の生成のための均一なスケーリングをもたらす。「量子化行列」を適用することによって、不均一なスケーリングも可能であり、それによって、各残差係数に適用されるスケーリング係数は、量子化パラメータと、典型的にはTBのサイズに等しいサイズを有するスケーリング行列内の対応するエントリとの組合せから導出される。残差係数336は、ビットストリーム115における符号化のためにエントロピーエンコーダ338に供給される。典型的には、TUの少なくとも1つの有意な残差係数を有する各TBの残差係数がスキャンパターンに従って、値の順序付けられたリストを生成するためにスキャンされる。スキャンパターンは一般に、4×4「サブブロック」のシーケンスとしてTBをスキャンし、残差係数の4×4セットの粒度で規則的なスキャン動作を提供し、サブブロックの配置は、TBのサイズに依存する。さらに、予測モード388および対応するブロック分割もビットストリーム115に符号化される。
【0070】
上述したように、ビデオエンコーダ114は、ビデオデコーダ134に見られるフレーム表現に対応するフレーム表現にアクセスする必要がある。従って、残差係数336も逆量子化器モジュール340によって逆量子化され、矢印342によって表される逆変換係数を生成する。逆変換係数342は、TUの、矢印350によって表される残差サンプルを生成するために、逆変換モジュール348を通過させられる。加算モジュール352は、残差サンプル350とPU320とを加算して、CUの再構成サンプル(矢印354によって示される)を生成する。
【0071】
再構成されたサンプル354は、参照サンプルキャッシュ356およびループ内フィルタモジュール368に渡される。参照サンプルキャッシュ356は、通常ASIC上のスタティックRAMを使用して実現され(したがって、コストのかかるオフチップメモリアクセスを回避する)、フレーム内の後続のCUのためのフレーム内PBを生成するための依存関係を満たすために必要な最小限のサンプル記憶装置を提供する。最小依存関係は、典型的にはCTUの行の最下部に沿ったサンプルの「ラインバッファ」を含み、CTUの次の行および列バッファリングによって使用され、その範囲はCTUの高さによって設定される。参照サンプルキャッシュ356は、参照サンプルフィルタ360に参照サンプル(矢印358で示す)を供給する。サンプルフィルタ360は、平滑化演算を適用して、フィルタリングされた参照サンプル(矢印362によって示される)を生成する。フィルタリングされた参照サンプル362は、イントラフレーム予測モジュール364によって使用され、矢印366によって表されるサンプルのイントラ予測ブロックを生成する。各候補イントラ予測モードについて、イントラフレーム予測モジュール364は、サンプルのブロック、すなわち366を生成する。
【0072】
ループ内フィルタモジュール368は、再構成されたサンプル354にいくつかのフィルタリング段階を適用する。フィルタリング段階は、不連続性から生じるアーチファクトを低減するために、CU境界に整列された平滑化を適用する「デブロッキングフィルタ」(DBF)を含む。インループフィルタモジュール368に存在する別のフィルタリング段階は、「適応ループフィルタ」(ALF)であり、これは、歪みをさらに低減するためにウィナーベースの適応フィルタを適用する。ループ内フィルタモジュール368における更なる利用可能なフィルタリング段階は、「サンプル適応オフセット」(SAO)フィルタである。SAOフィルタは最初に、再構成されたサンプルを1つまたは複数のカテゴリに分類し、割り当てられたカテゴリに従って、サンプルレベルでオフセットを適用することによって動作する。
【0073】
矢印370で表されるフィルタリングされたサンプルは、ループ内フィルタモジュール368から出力される。フィルタリングされたサンプル370は、フレームバッファ372に記憶される。フレームバッファ372は、典型的には、いくつかの(例えば、16までの)ピクチャを格納するための容量を有し、従って、メモリ206に格納される。フレームバッファ372は、大きなメモリ消費が要求されるため、通常、オンチップメモリを使用して記憶されない。したがって、フレームバッファ372へのアクセスは、メモリ帯域幅に関してコストがかかる。フレームバッファ372は、参照フレーム(矢印374によって表される)を動き推定モジュール376および動き補償モジュール380に提供する。
【0074】
動き推定モジュール376は、いくつかの「動きベクトル」(378として示される)を推定し、各々は現在のCUの位置からのデカルト空間オフセットであり、フレームバッファ372内の参照フレームのうちの1つ内のブロックを参照する。参照サンプルのフィルタリングされたブロック(382として表される)は、各動きベクトルに対して生成される。フィルタリングされた参照サンプル382は、モードセレクタ386による潜在的な選択に利用可能なさらなる候補モードを形成する。さらに、所与のCUについて、PU320は、1つの参照ブロック(「単一予測」)を使用して形成されてもよく、または2つの参照ブロック(「双予測」)を使用して形成されてもよい。選択された動きベクトルに対して、動き補償モジュール380は、動きベクトル内のサブピクセル精度をサポートするフィルタリング処理に従って、PU320を生成する。したがって、動き推定モジュール376(多くの候補動きベクトルに対して動作する)は、計算の複雑さを低減するために、動き補償モジュール380(選択された候補のみに対して動作する)と比較して、単純化されたフィルタリング処理を実行することができる。
【0075】
図3のビデオエンコーダ114は汎用ビデオ符号化(VVC)を参照して説明されるが、他のビデオ符号化規格または実装はモジュール310~386の処理段階を使用することもできる。フレームデータ113(およびビットストリーム115)は、メモリ206、ハードディスクドライブ210、CD-ROM、Blu-rayディスクTM、または他のコンピュータ可読記憶媒体から読み取る(または書き込む)こともできる。さらに、フレームデータ113(およびビットストリーム115)は、通信ネットワーク220または無線周波数受信機に接続されたサーバなどの外部ソースから受信(または送信)されてもよい。
【0076】
ビデオデコーダ134を図4に示す。図4のビデオデコーダ134は、汎用ビデオコーディング(VVC)ビデオデコーディングパイプラインの一例であるが、他のビデオコーデックを使用して、本明細書で説明する処理段階を実行することもできる。図4に示すように、ビットストリーム133はビデオデコーダ134に入力される。ビットストリーム133は、メモリ206、ハードディスクドライブ210、CD-ROM、Blu-rayディスクTM、または他の一時的でないコンピュータ可読記憶媒体から読み取ることができる。あるいは、ビットストリーム133が通信ネットワーク220または無線周波数受信機に接続されたサーバなどの外部ソースから受信されてもよい。ビットストリーム133は、復号される撮像フレームデータを表す符号化された構文要素を含む。
【0077】
ビットストリーム133は、エントロピーデコーダモジュール420に入力される。エントロピーデコーダモジュール420は、ビットストリーム133から構文要素を抽出し、構文要素の値をビデオデコーダ134内の他のモジュールに渡す。エントロピーデコーダモジュール420は、ビットストリーム133から構文要素を復号するためにCABACアルゴリズムを適用する。復号された構文要素は、ビデオデコーダ134内のパラメータを再構成するために使用される。パラメータは、残差係数(矢印424によって表される)と、イントラ予測モード(矢印458によって表される)などのモード選択情報とを含む。モード選択情報は、動きベクトル、および各CTUの1つまたは複数のCUへの分割などの情報も含む。パラメータは、典型的には以前に復号されたCUからのサンプルデータと組み合わせて、PUを生成するために使用される。
【0078】
残差係数424は、逆量子化器モジュール428に入力される。逆量子化器モジュール428は、量子化パラメータに従って、矢印440によって表される再構成された変換係数を生成するために、残差係数424に対して逆量子化(または「スケーリング」)を実行する。不均一な逆量子化行列の使用がビットストリーム133に示される場合、ビデオデコーダ134は、スケーリングファクタのシーケンスとしてビットストリーム133から量子化行列を読み出し、スケーリングファクタを行列に配置する。逆スケーリングは、量子化パラメータと組み合わせて量子化行列を使用して、再構成された中間変換係数を生成する。
【0079】
再構成された変換係数440は、逆変換モジュール444に渡される。モジュール444は、係数を周波数領域から空間領域に戻すように変換する。TBは、有効残差係数値および非有効残差係数値に事実上基づいている。モジュール444の動作の結果は、矢印448によって表される残差サンプルのブロックである。残差サンプル448は、対応するCUとサイズが等しい。残差サンプル448は、加算モジュール450に供給される。加算モジュール450において、残差サンプル448は、復号されたPU(452として表される)に加算されて、矢印456によって表される再構成されたサンプルのブロックを生成する。再構成サンプル456は、再構成サンプルキャッシュ460およびループ内フィルタリングモジュール488に供給される。ループ内フィルタリングモジュール488は、492として表されるフレームサンプルの再構成されたブロックを生成する。フレームサンプル492は、フレームバッファ496に書き込まれる。
【0080】
再構成サンプルキャッシュ460は、ビデオエンコーダ114の再構成サンプルキャッシュ356と同様に動作する。再構成されたサンプルキャッシュ460は(例えば、典型的には、オンチップメモリであるデータ232を代わりに使用することによって)メモリ206を介さずに後続のCUをイントラ予測するために必要とされる再構成されたサンプルのための記憶装置を提供する。矢印464によって表される参照サンプルは、再構成サンプルキャッシュ460から得られ、参照サンプルフィルタ468に供給されて、矢印472によって示されるフィルタリングされた参照サンプルを生成する。フィルタリングされた参照サンプル472は、イントラフレーム予測モジュール476に供給される。モジュール476は、ビットストリーム133でシグナリングされ、エントロピーデコーダ420によって復号されたイントラ予測モードパラメータ458に従って、矢印480によって表されるイントラ予測サンプルのブロックを生成する。
【0081】
イントラ予測が現在のCUのためのビットストリーム133において示されるとき、イントラ予測サンプル480は、マルチプレクサモジュール484を介して復号されたPU452を構成する。
【0082】
インター予測が現在のCUのためのビットストリーム133において示されるとき、動き補償モジュール434は、フレームバッファ496からサンプルのブロックを選択してフィルタリングするために、動きベクトルおよび参照フレームインデックスを使用して、438として表されるインター予測サンプルのブロックを生成する。サンプル498のブロックは、フレームバッファ496に記憶された以前に復号されたフレームから得られる。双予測の場合、2つのサンプルブロックが生成され、一緒にブレンドされて、復号されたPU452のためのサンプルが生成される。フレームバッファ496には、ループ内フィルタリングモジュール488からのフィルタリングされたブロックデータ492が入力される。ビデオエンコーダ114のループ内フィルタリングモジュール368と同様に、ループ内フィルタリングモジュール488は、DBF、ALF、およびSAOフィルタリング動作のいずれか、少なくとも、またはすべてを適用する。ループ内フィルタリングモジュール368は、再構成されたサンプル456からフィルタリングされたブロックデータ492を生成する。
【0083】
図5は、汎用ビデオ符号化のツリー構造内の1つまたは複数のサブ領域への領域の利用可能な分割(divisions)または分割(splits)の集合500を示す概略ブロック図である。集合500に示される分割(divisions)は、図3を参照して説明されるように、ラグランジュ最適化によって決定されるように、コーディングツリーに従って各CTUを1つまたは複数のCUに分割するために、エンコーダ114のブロックパーティショナ310に利用可能である。
【0084】
集合500は、正方形領域のみが他の、おそらくは正方形でないサブ領域に分割されていることを示すが、図500は潜在的な分割を示しているが、包含領域が正方形であることを必要としないことを理解されたい。含有領域が非正方形の場合、分割から生じるブロックの寸法は含有ブロックの縦横比に従ってスケールされる。領域がそれ以上分割されなくなると、すなわち、コーディングツリーのリーフノードにおいて、CUがその領域を占有する。ブロックパーティショナ310によるCTUの1つまたは複数のCUへの特定のサブ分割は、CTUの「コーディングツリー」と呼ばれる。領域をサブ領域にサブ分割するプロセスは、結果として生じるサブ領域が最小CUサイズに達したときに終了しなければならない。例えば、4×4より小さいサイズを禁止するようにCUを制約することに加えて、CUは、4の最小幅または高さを有するように制約される。幅および高さの両方に関して、または幅または高さに関して、他の最小値も可能である。サブ分割のプロセスは、最も深いレベルの分解の前に終了することもでき、その結果、CUが最小CUサイズよりも大きくなる。分割が起こらず、その結果、単一のCUがCTUの全体を占有することが可能である。CTUの全体を占有する単一のCUは、最大の利用可能な符号化単位サイズである。また、分割が発生しないCUは、処理領域サイズよりも大きい。コーディングツリーの最高レベルでの2分割または3分割の結果として、64×128、128×64、32×128、および128×32などのCUサイズも可能であり、それぞれも処理領域サイズより大きい。図10A~10Fを参照してさらに説明される処理領域サイズよりも大きいCUSの例。
【0085】
コーディングツリーのリーフノードには、それ以上の細分化のないCUが存在する。例えば、リーフノード510は、1つのCUを含む。コーディングツリーの非リーフノードには2つ以上のさらなるノードへの分割が存在し、各ノードはリーフノード従って1つのCUを含むか、またはより小さな領域へのさらなる分割を含むことができる。
【0086】
四分木分割512は図5に示すように、包含領域を4つの等しいサイズの領域に分割する。HEVCと比較して、汎用ビデオ符号化(VVC)は、水平2分割514および垂直2分割516を追加することにより、さらなる柔軟性を達成する。分割514および516の各々は、包含領域を2つの等しいサイズの領域に分割する。分割は、含有ブロック内の水平境界(514)または垂直境界(516)に沿っている。
【0087】
水平3分割518および垂直3分割520を追加することにより、汎用ビデオ符号化においてさらなる柔軟性が達成される。3分割518および520は、ブロックを、包含領域の幅または高さの1/4および3/4に沿って水平方向(518)または垂直方向(520)のいずれかで境界をつけられた3つの領域に分割する。4分木、2分木、および3分木の組合せは、「QTBTTT」または代替的にマルチツリー(MT)と呼ばれる。
【0088】
四分木のみをサポートし、したがって正方形ブロックのみをサポートするHEVCと比較して、QTBTTTは、特に2分木および/または3分木分割の可能な再帰的適用を考慮すると、より多くの可能なCUサイズをもたらす。異常な(例えば、非正方形の)ブロックサイズの可能性は、ブロック幅または高さが4サンプル未満であるか、または4サンプルの倍数ではないかのいずれかになる分割を排除するように分割オプションを制約することによって低減され得る。一般に、この制約は、輝度サンプルを考慮する際に適用される。しかしながら、この制約は彩度チャネルのブロックに別々に適用することもでき、例えば、フレームデータが4:2:0彩度フォーマットである場合に、輝度対彩度の最小ブロックサイズが異なることになる可能性がある。各分割では、包含領域に関して辺寸法が変わらない、半分になっている、または4分の1になっているサブ領域が生成される。そして、CTUサイズは2のべき乗であるため、全てのCUの辺寸法も2のべき乗である。
【0089】
図6は、汎用ビデオ符号化で使用されるQTBTTT(または「コーディングツリー」)構造のデータフロー600を示す概略フロー図である。QTBTTT構造は、CTUを1つまたは複数のCUに分割することを定義するために、各CTUに対して使用される。各CTUのQTBTTT構造は、ビデオエンコーダ114内のブロックパーティショナ310によって決定され、ビットストリーム115に符号化されるか、またはビデオデコーダ134内のエントロピーデコーダ420によってビットストリーム133から復号される。データフロー600はさらに、図5に示される分割に従って、CTUを1つまたは複数のCUに分割するためにブロックパーティショナ310に利用可能な許容可能な組合せを特徴付ける。
【0090】
階層の最上位レベル、すなわちCTUから始めて、ゼロまたはそれ以上の四分木分割が最初に実行される。具体的には、四分木(QT)分割決定610がブロックパーティショナ310によって行われる。「1」シンボルを返す610での決定は、四分木分割512に従って現在のノードを4つのサブノードに分割する決定を示す。その結果、620などの、4つの新しいノードが生成され、各新しいノードについて、QT分割決定610に戻る。各新しいノードは、ラスタ(またはZスキャン)順序で考慮される。あるいは、QT分割決定610がさらなる分割が実行されるべきでないことを示す(「0」シンボルを返す)場合、四分木分割は停止し、マルチツリー(MT)分割がその後考慮される。
【0091】
まず、MT分割決定612がブロックパーティショナ310によって行われる。612において、MT分割を実行する決定が示される。決定612で「0」のシンボルを返すことは、ノードのサブノードへのそれ以上の分割が実行されないことを示す。ノードのそれ以上の分割が実行されない場合、ノードはコーディングツリーのリーフノードであり、CUに対応する。リーフノードは622で出力される。あるいは、MT分割612がMT分割を実行する決定を示す(「1」シンボルを返す)場合、ブロックパーティショナ310は方向決定614に進む。
【0092】
方向決定614は、水平(「H」または「0」)または垂直(「V」または「1」)のいずれかとしてMT分割の方向を示す。ブロックパーティショナ310は、決定614が水平方向を示す「0」を返す場合、決定616に進む。ブロックパーティショナ310は、決定614が垂直方向を示す「1」を返す場合、決定618に進む。
【0093】
決定616および618のそれぞれにおいて、MT分割のパーティション数は、BT/TT分割で2つ(2分割または「BT」ノード)または3つ(3分割または「TT」)のいずれかとして示される。すなわち、BT/TT分割決定616は、614からの指示された方向が水平であるときにブロックパーティショナ310によって行われ、BT/TT分割決定618は、614からの指示された方向が垂直であるときにブロックパーティショナ310によって行われる。
【0094】
BT/TT分割決定616は、水平分割が「0」を返すことによって示される2分割514であるか、「1」を返すことによって示される3分割518であるかを示す。BT/TT分割決定616が2分割を示す場合、HBT CTUノード生成ステップ625において、水平2分割514に従って、2つのノードがブロックパーティショナ310によって生成される。BT/TT分割616が3分割を示す場合、HTT CTUノード生成ステップ626において、水平3分割518に従って、ブロックパーティショナ310によって3つのノードが生成される。
【0095】
BT/TT分割決定618は、垂直分割が「0」を返すことによって示される2分割516であるか、「1」を返すことによって示される3分割520であるかを示す。BT/TT分割618が2分割を示す場合、VBT CTUノード生成ステップ627では、垂直2分割516に従って、ブロックパーティショナ310によって2つのノードが生成される。BT/TT分割618が3分割を示す場合、VTT CTUノード生成ステップ628において、垂直3分割520に従って、ブロックパーティショナ310によって3つのノードが生成される。ステップ625~628から生じる各ノードについて、MT分割決定612に戻るデータフロー600の再帰が、方向614に応じて、左から右へ、または上から下への順序で適用される。その結果、2分木および3分木分割を適用して、様々なサイズを有するCUを生成することができる。
【0096】
図7Aおよび7Bは、CTU710のいくつかのCUへの分割例700を提供する。CU712の一例を図7Aに示す。図7Aは、CTU710におけるCUの空間配置を示す。分割例700は、図7Bにコーディングツリー720としても示されている。
【0097】
図7AのCTU710内の各非リーフノード、例えばノード714、716および718において、収容されたノード(さらに分割されていてもよいし、CUであってもよい)は、ノードのリストを作成するために「Zオーダー」でスキャンまたはトラバースされ、コーディングツリー720内のカラムとして表される。4分木分割の場合、Zオーダースキャンは、左上から右に続いて左下から右の順序になる。水平分割および垂直分割の場合、Zオーダースキャン(トラバーサル)は、それぞれ、上から下へ、および左から右へのスキャンに単純化する。図7Bのコーディングツリー720は、適用されたスキャンオーダーに従って、すべてのノードおよびCUをリストする。各分割は、リーフノード(CU)に到達するまで、ツリーの次のレベルで2、3、または4個の新しいノードのリストを生成する。
【0098】
ブロックパーティショナ310によって画像をCTUに分解し、さらにCUに分解し、図3を参照して説明されるように、各残差ブロック(324)を生成するためにCUを用いて、残差ブロックは、ビデオエンコーダ114によって順変換および量子化される。結果として得られるTB336は、その後、エントロピー符号化モジュール338の動作の一部として、残差係数の順次リストを形成するためにスキャンされる。同等のプロセスがビットストリーム133からTBを得るために、ビデオデコーダ134内で実行される。
【0099】
図8Aは、CTUのシーケンス、例えば、CTU812、それに続く後続のCTUを含むフレーム800の例を示す。各CTUは、128×128輝度サンプルのサイズを有する。フレーム800が、CTUサイズ、128×128輝度サンプルのために、プロセッサ205のローカルメモリまたは集積回路を使用してCTUごとに処理される場合、結果として生じるローカルメモリ要件は、法外なものとなる。本明細書で説明されるビデオエンコーダ114およびビデオデコーダ134の実施形態は、CTUの領域よりも小さい領域で画像データまたはビットストリームを処理することによって、オンチップメモリ消費を低減することができる。オンチップメモリは、ダイ上の大きな面積を消費するので、オンチップメモリは特に高価である。ソフトウェア実装では、より多くのメモリアクセスを低レベルのキャッシュ(L1キャッシュやL2キャッシュなど)に制限し、外部メモリにアクセスする必要性を減らすことによってもメリットがあります。したがって、メモリ消費を低減するために、ビデオエンコーダ114およびビデオデコーダ134の実装は、一度に1つのCTUの粒度よりも小さい粒度でデータを処理することができる。
【0100】
より小さい粒度は、CTUの1つの四分木細分化と同様に、64×64輝度サンプルの領域(または「パイプライン処理領域」)サイズとすることができる。さらに、より小さい粒状度は、不可分領域として扱われる領域を定義する。不可分領域は、パイプライン化されたアーキテクチャの各処理ステージを通じて渡される。パイプライン処理領域は、フレーム(フレーム800など)上の特定のエリアに対応し、パイプラインを通過するデータの1つのアグリゲーションまたはチャンク(サンプル、ブロックおよび係数のコレクション、ビットストリームの一部など)を領域が定義するという意味で、不可分であると見なされる。領域内では、CUの様々な配置が存在し得、CUはより小さい粒度の領域の複数にわたることができる。領域は、各パイプライン処理段階が128×128のフルCTUサイズに関連するデータとは対照的に、より小さい領域、例えば64×64輝度サンプル以下に関連するデータのみを局所的に記憶することを可能にする。
【0101】
彩度データのための対応するローカルメモリ低減も、上述したパイプライン処理領域を用いて実現される。各CTU内で、領域はZ順に処理される。処理は領域スキャン810によって示されるように、ラスタスキャン方式でCTUからCTUに進行する。ビデオデコーダ134の観点から、第1パイプライン段階はエントロピーデコーダ420である。ビットストリーム133は順番に構文解析されるが、構文解析された構文要素は領域に従ってグループ化されてもよい。例えば、図8Aの領域814は、最初にエントロピーデコーダ420によって処理される。1つの領域がエントロピーデコーダ420によって処理されると、関連する構文要素は第2のパイプライン段階に渡される。第2のパイプライン段階は、逆量子化器428および逆変換444であってもよい。モジュール428および444は、領域内のすべてのCUに対して実行して、その領域の残差サンプル448を生成する。第2段階が完了すると、その領域の残留サンプル448は第3段階に渡される。第3段階は、加算450(イントラ再構成)、参照サンプルキャッシュ460、参照サンプルフィルタ468、およびイントラフレーム予測モジュール476を含むことができる。第3段階モジュールは図4に示され、これを参照して説明されるように、フィードバックループを形成する。フィードバックループは隣接するCU間に存在し、したがって、領域内および1つの領域から次の領域への両方に存在する。フィードバックループは、第3段階モジュールが1つのパイプライン段階内で実行されることを必要とする。ループ内フィルタリング488は、典型的には1つ以上の後続のパイプライン段階において実行される。
【0102】
フレームバッファ496および動き補償モジュール434を含む、インター予測のための別個のフィードバックループも実装することができる。しかしながら、インター予測のためのフィードバックループは現在のフレームから先行フレームまでであり、従って、CTUレベルでのパイプライン動作には影響しない。まだ処理されていない図8Aの領域、例えば816は、ライトシェーディングで示されている。
【0103】
各CTUのコーディングツリーによれば、領域は例えば、図7Aおよび図7Bに関して説明したように、様々なサイズの様々なCUを含むことができる。図7Aおよび図7Bの例は、図7Bに726として示されるコーディングツリーの最上位レベルにおける4分木分割を含む。様々なサイズのCUにさらに分割される、4つの64×64領域への4分木分割は、64×64のパイプライン処理領域サイズで調整される。高度に詳細なテクスチャを含み、利用可能な参照画像がない画像フレームを符号化する場合、「イントラ」フレームの場合のように、少なくとも1つの4分木分割が起こる可能性は高い。したがって、イントラフレーム符号化の場合、128×128のインター予測フレームに使用されるCTUサイズと比較して、より小さいCTUサイズ、たとえば64×64を、ユーザに許容できないレベルの圧縮性能ペナルティを課すことなく使用することができる。
【0104】
より小さいCTUサイズ、特にパイプライン処理のための領域サイズを超えないサイズの使用は、CUがなく、したがってTUが複数の領域にまたがらないことを保証する。変換は、各残差係数がTBからのすべての出力サンプルに影響を及ぼすように、TBにわたる変換スパン内のデータ依存関係として、1つのパイプライン段階内で実行される必要がある演算である。その結果、変換はパイプライン動作が「アトミック」(さらに分割されない)でなければならない最小レベルを表し、したがって、所与の変換のためのデータは、パイプライン内の1つのパイプライン処理領域またはデータのチャンク内に完全に含まれなければならない。
【0105】
しかし、パイプライン処理領域内では、各変換が処理領域内に完全に含まれるので、複数のCU、したがって複数の変換が可能である。変換サイズの制限は、処理領域内で遭遇する可能性のある変換の数に対して最悪の場合を設定する。例えば、64×64の処理領域で、輝度チャネルを考慮すると、処理領域内で遭遇し得る4×4変換の最大個数は、16×16=256である。処理領域内で遭遇し得る8×8変換の最大個数は8×8=64などであり、64×64変換までは、1つのパイプライン処理領域内で1つだけを実行することができる。同様の計算が彩度チャネルに適用される。
【0106】
インター予測されたCUについては、比較的大きなCUが可能となる。高度に一致する参照ブロックを含み得る1つ以上の参照フレームが利用可能であるために、より大きなCUの可能性が生じる。ビデオエンコーダ114は大きなCUを選択し、そうする際に、参照フレームから現在のフレームにサンプルの大きなブロックをコピーすることができる。
【0107】
インター予測されたCUを符号化する1つのアプローチは、「スキップモード」を介するものである。スキップモードで符号化されたCUは、有意な残差係数を有さず、「マージインデックス」を使用して選択された、空間的または時間的近傍から対応する動きベクトルを得るように示される。有意な残差係数がないことは、逆量子化または逆変換ステップを実行する必要がないことを意味する。したがって、CTU内のスキップモードCUの配置は、パイプライン化の結果として制約されず、スキップモードCUのTUサイズを決定する必要はない。スキップモードCUは、パイプライン処理領域に関する特定のCUアラインメントの処理に困難をもたらすことはない。スキップモードCUは、典型的には高品質参照フレームが、容易にモデル化された動きパラメータと共に利用可能である場合に使用される。したがって、スキップモードCUは、デコーダが動きベクトルを正確に予測することができるブロックに対して選択される。動きベクトルは、CUにおける所望の出力に高度に一致する参照ブロックを選択する。
【0108】
スキップモードの使用は、比較的低い詳細を含む画像の部分に限定されない。高度に詳細なテクスチャを含む画像部分は、コーディングツリーが大きなCUサイズで終了し、空間変位を指定するための動きベクトルの符号化が、特にマージインデックスコーディングを介して、高度に効率的であるので、低コストでコピーすることができる。ランダムアクセスピクチャグループ構造のより高い時間レイヤにおけるフレームは、スキップモードが高度の圧縮性能を提供する例である。図6を用いて説明したフレキシブルブロック構造は、例えば128×128の比較的大きなCTUサイズと組み合わせて、大きなCUを各CTU内にかなりフレキシブルに配置することを可能にする。したがって、デコーダまたはエンコーダは例えば、典型的には前景オブジェクトと背景オブジェクトとの間の境界で起こるような、動きフィールドの変化に適応することができる。大きなCUは、典型的には低ビットレートで普及している。さらに、これらの大きなCUは、複数のパイプライン処理領域にまたがることがあり、複数のパイプライン処理領域にまたがることを回避するように制約される必要はない。複数のパイプライン処理領域にまたがることを回避するために制約を適用することは、CTUサイズの縮小と同等である。CTUサイズを小さくすると、CUサイズと各CTU内の配置の両方の柔軟性が制限され、圧縮効率が低下するため好ましくない。
【0109】
図8Bは、ビデオ内のフレームの例示的な「ランダムアクセス」ピクチャグループ(GOP)構成850である。17フレームのシーケンスが示されている。各フレームについて、表示順序851、符号化順序852、および時間レイヤID853が構成850に示されている。ビデオは、イントラフレーム860から始まる。参照ピクチャバッファは空であるので、イントラフレーム860は、イントラ予測されたCUのみを含むことができる。符号化される第2のフレームは、(符号化順序852の第2の値が「16」であるので)単一予測フレーム(Pスライス)870である。単一予測フレーム870は、イントラフレーム860に続いて符号化され、矢印872によって示されるように、フレーム860のみを参照することができる。しかしながら、フレーム870の表示順序は16であるので、フレーム860と870との間のコンテンツの比較的大きな変化がありそうである。したがって、フレーム870の符号化コストは比較的高いが、フレーム870の符号化コストは、参照フレームが利用できないイントラフレーム860の符号化コストよりも低い。
【0110】
中間フレームは、利用可能な参照フレームに対する2つの矢印、例えば、図8Bの矢印891および892を有する各フレームによって示されるように、双予測を使用することができる。より高い時間レイヤでは、フレームから対応する参照フレームまでの距離(表示順序におけるデルタ)はより小さい。一般に、フレームから対応する参照フレームまでの距離が小さいほど、フレーム間で基礎となる画像データの変化が少ないほど、圧縮性能が高くなる。より高い時間レイヤにおけるフレームは一般に、より大きなCUの両方を使用することができ、スキップモードをより頻繁に使用することができる。隠蔽されたオブジェクトが見えるようになる場合は例外である。遮蔽されたオブジェクトが見えるようになると、通常、GOP(group-of-pictures)構造の制約内の利用可能な参照ブロックは存在せず、イントラ予測を伴うより小さいCUの使用は、より可能性が高くなる。
【0111】
図9は、輝度チャネルのためのVVC規格のサポートされる変換サイズの集合900を示す。輝度チャネルのためにサポートされる変換サイズは、以下の通りである:4×4、4×8、4×16、4×32、8×4、8×8、8×16、8×32、16×4、16×8、16×16、16×32、32×4、32×8、32×16、32×32、64×64。4:2:0彩度フォーマットを使用する彩度チャネルについては、各輝度変換サイズについて、対応する彩度変換サイズが利用可能である。彩度変換サイズは、輝度変換サイズの幅および高さの半分を有する。2次元(2D)変換は分離可能であり、1次元(1D)DCT-2変換のいずれかが水平と垂直の両方で実行される。あるいは、変換の水平および垂直段階に対して独立して制御可能な1D DCT-7変換と1D DST-7変換との間の選択を実行することができる。
【0112】
一般に、1つのTUがCUに関連付けられる。各カラーチャネルに対して、1つのTBがTUに関連付けられる。しかしながら、特定のカラーチャネルの変換のための有意な係数がない場合、カラーチャネルのためのTBは存在しないと言うことができる。残差係数の全ゼロアレイに対して変換を行う必要がないので、色チャネルは存在しないと言われる。1次元(1D)変換は、典型的には行列乗算演算に関して定義されるが、バタフライステップおよびリフティングステップを使用する実装は典型的には複雑さを低減するために使用される。アプリケーションの水平および垂直段階のために、各1D変換内および2Dブロックにわたる依存関係が存在する。したがって、各残差サンプルは、(逆変換の観点から)各残差係数によって影響され、対応する関係が順変換のために存在する。

順変換または逆変換を実行する作業は、例えば、TBの半分を変換し、後に残りの半分を変換するために、セクションに分割することはできない。TBの半分を決定する計算コストは、TB全体を決定するコストとほぼ同じである。したがって、セクション内の変換を決定するアーキテクチャは、(処理パイプラインの観点から)変換を「アトミック」(不可分)演算として決定するアーキテクチャよりもかなり高い複雑性を有する。対照的に、PUはセクションで処理される場合、以下に説明するように、セクションサイズ対全体のPUサイズにほぼ比例する各セクションのコストを有する。
【0113】
複数のパイプライン処理領域にわたる大きなCUをサポートするために、イントラ予測およびインター予測の場合のデータ依存関係が考慮される。イントラ予測の場合、予測ブロックは、空間的に隣接する参照サンプルおよびイントラ予測モードを用いて生成される。CUがパイプライン処理領域サイズよりも大きい場合、パイプライン処理領域上で動作する予測パイプライン段階が(1つの領域について)部分PBを計算し、(後続の領域について)追加の部分PBを決定し、部分PBが集合的にPB全体を形成するように、PUを複数の部分で決定することができる。
【0114】
イントラ予測ブロックについて、部分PBを決定することは、PBのための参照サンプルを使用することを必要とする。参照サンプルは、部分PBに隣接する必要はない。例えば、128×64のPBが分割され、2つの64×64の部分PBとして処理される。結果として得られる第2(右端の)64×64部分PBは、第2の64×64部分予測ブロックの位置に存在する64×64予測ブロックで使用される参照サンプルではなく、オリジナルの(完全である)128×64PBに対応する参照サンプルを使用する。その結果、CTUサイズの粒度よりも小さい粒度で動作するパイプライン処理アーキテクチャは、部分PBのための余分な参照サンプルをバッファリングする追加のコストを伴って、パイプライン処理領域サイズよりも大きいPBに対してイントラ予測を実行することができる。追加のバッファリング参照サンプルは、CTUの幅に従ってサイズ設定されたサンプルの行および列であるが、追加のフレーム幅のラインバッファは必要とされない。
【0115】
インター予測ブロックの場合、使用される共通情報が動きベクトルおよび参照フレームインデックス/インデックスを含むので、PUを複数の部分PUに分割することは比較的単純である。したがって、PUは複数のパイプライン処理領域にわたり、複数の部分PUとして処理されてもよく、各部分PUは、別個のパイプライン処理領域内に含まれる。複数のPUが複数のパイプライン処理段階にまたがっている場合であっても、複数のパイプライン処理領域にわたって使用するために関連する動きベクトルを記憶するコストは低い。インター予測のために大きなPUを使用することは、低ビットレートアプリケーションにとって、特に、「ランダムアクセス」などのピクチャグループ(GOP)構造が使用される場合、より高いレベルにおいて非常に有益である。このようなピクチャグループ構造では、特に動きの少ない領域では、比較的大きなPUを使用することができる。大きなPUを使用すると、ビットストリームに存在する最小限の構文で全体像の比較的大きな部分がエンコードされる。
【0116】
図10Aは、コーディングツリーの最上位レベルに垂直3分割を有し、それ以上の分割を有さないCTU1000のCUおよびTUを示す。コーディングツリーを分割すると、それぞれ32×128,64×128,32×128のサイズの3つのCU1020,1022,1024が得られる。CU1020、1022、および1024は、それぞれオフセット(0、0)、(32、0)、および(96、0)でCTU内に位置する。各CUについて、同じサイズの対応するPUが存在し、CTU1000において、対応するPUは、複数のパイプライン処理領域にわたる。1つまたは複数のTUもまた、各CUに関連付けられる。
【0117】
CUサイズが変換サイズの1つに等しい場合、1つのTUがCUに関連付けられ、対応するサイズの変換に等しいサイズを有する。
【0118】
図10Bは、図10AのコーディングツリーのCUに関連するTUの代替配置を有するCTU1040を示す。CUサイズが変換サイズのいずれよりも大きい場合、複数のTUは、CUの全体を占有するように「タイル状」に配置される。タイリングは、幅および高さの制約が与えられると、CU内で「適合」する最大の利用可能な変換を使用する。例えば、図10Bに示すように、32×128 CU1042および32×128 CU1046は、タイル状に4つの32×32TUを使用する。64×128 CU1044は、64×64がCU1044に利用可能な最大の変換サイズであるので、タイル状に2つの64×64TUを使用する。上述のように、CTU1040を分割することは、イントラ予測動作またはインター予測動作のいずれについても性能に関して問題を提起しない。しかしながら、関連するTUの処理は、パイプライン処理領域サイズの調整を必要とする。
【0119】
図9を参照して説明したように、利用可能な変換サイズは、サイズの特定のセットに限定される。符号化または復号のための各TBの処理は、パイプライン処理アーキテクチャの観点からは不可分の操作である。CTU内のCUの様々な配置に適応する必要性、および1つのパイプライン段階内の領域について各変換を完全に実行する必要性のために、2つのアプローチが以下に記載される。
【0120】
第1のアプローチでは、パイプライン処理領域が常に固定サイズ(例えば、64×64)であるとは限らない。その代わりに、パイプライン処理領域のサイズは、各CTUのコーディングツリーに適応する。したがって、第1のアプローチは、「フレキシブルパイプライン処理領域」と呼ぶことができる。用語「フレキシブルパイプライン処理領域」は、領域の固定サイズの場合と区別するために使用され、したがって、本開示の他の箇所で説明されるように、パイプライン処理領域の固定グリッドが画像フレーム内に存在する。特に、フレキシブルパイプライン処理領域を使用して、CTU1040は、以下のように処理することができる:
領域0:32×64(CU1042の上半分は、2つの32×32TUを含む)。
【0121】
領域1:64×64(CU1044の上半分は、1つの64×64TUを含む)。
【0122】
領域2:32×64(CU1046の上半分は、2つの32×32TUを含む)。
【0123】
領域3:32×64(CU1042の下半分は、2つの32×32TUを含む)。
【0124】
領域4:64×64(CU1044の下半分は、1つの64×64TUを含む)。
【0125】
領域5:32×64(CU1046の下半分は、2つの32×32TUを含む)。
【0126】
したがって、CTU1040内のCUの配置は、32×64および64×64のサイズの6つのフレキシブルパイプライン処理領域をもたらす。これは、フレキシブルパイプライン処理領域の数に対する最悪の場合である。
【0127】
TUがフレキシブルパイプライン処理領域境界にまたがらない場合(例えば、図7Aの例のように、四分木分割のため)、フレキシブルパイプライン処理領域の数は4個であり、各々は64×64輝度サンプルのサイズを有する。フレキシブルパイプライン処理領域アプローチは、パイプライン化された実装においてCTUにおけるTUの柔軟な配置を可能にするが、パイプラインの最悪の場合の処理速度は、パイプライン処理領域が各CTUにわたって、したがって画像フレームにわたって固定された配置を有するアーキテクチャと比較して、この例では50%増加する。全体のサンプルレートは変化しないが、パイプラインアーキテクチャでは、個々の領域の処理レートが必ずしも領域サイズにのみリンクされず、したがって、より小さい領域は必ずしも、それらのより小さいサイズに比例するより高いレートで処理されるわけではなく、各領域を処理するオーバーヘッドのために、より低いレートで処理される。したがって、設計の最悪の場合は、すべての領域が同じサイズであるシステムの場合よりも高い。さらに、図10Cを参照して説明されるように、フレキシブル処理領域がCTU当たり7つの領域を必要とする場合も存在し、このようなアーキテクチャの最悪の場合の領域レートをさらに増加させる。
【0128】
第2のアプローチでは、「大きい」CU(利用可能な変換の幅または高さを超えるCU)のタイリングアプローチが拡張されるように、CUとTUとの間の関係が変更される。タイリングアプローチは、さもなければ複数のパイプライン処理領域にまたがるTUを有するCUにも適用されるように拡張される。例えば、CU1022は、32×32TUの2×4アレイに分割される。より小さなTUへのCU(1022)の分割は、ビットストリーム内にさらなる信号(例えば、追加のフラグ)を存在させる必要なしに、コーディングツリーと、CTU内のCUのコーディングツリーの配置と、によって分割が決定されるという点で、暗黙的である。むしろ、分割はコーディングユニット自体の暗黙の特性に基づいて決定することができ、これはコーディングユニットの次元である。コーディングユニット1022の分割は、図10AのCTU1000の以下のパイプライン処理を可能にする:
領域0:64×64(CU1020の上半分、CU1022の上左4半分、全部で4つの32×32TU)。
【0129】
領域1:64×64(CU1022の右上4半分、CU1024の上半分、全部で4つの32×32TU)。
【0130】
領域2:64×64(CU1020の下半分、CU1022の左下4半分、全体で4つの32×32TU)。
【0131】
領域3:64×64(CU1020の右下4半分、CU1022の下半分、全部で4つの32×32TU)。
【0132】
したがって、第2のアプローチを使用すると、コーディングツリーにかかわらず、128×128CTUは、4つの64×64パイプライン処理領域を使用して常に処理される。変換ユニットの形状および/またはアスペクト比は、CUの形状またはサイズとは異なる。パイプライン処理領域の処理速度は、結果として、CTU内のCUの配置にかかわらず一定である。第2のアプローチでは、64×64TUが左上の位置が画像フレームの左上隅に対して64×64格子に整列されているCUに対してのみ可能である。256×256CUを有する分割操作を有さないコーディングツリーを有するCTU、または水平方向および垂直方向のそれぞれに多くとも1つの2分割を有するコーディングツリー(サイズ128×64、64×128、または64×64のCUを与える)、または単一の四分木分割(それぞれサイズ64×64の4つのCUを与える)を有するCTUに対して、必要なコーディングユニット条件が生じる。
【0133】
第3のアプローチでは、64×64TUがビデオエンコーダ114およびビデオデコーダ134には存在せず、したがって、利用可能なTUサイズのセットには存在しない。64×64TUは、比較的まれにしか使用されない。しかしながら、64×64TUは非常に低いビットレートにおいて有益であり得、したがって、64×64変換サイズの欠如はVVC標準に対して圧縮性能ペナルティを課す。しかしながら、64×64変換を除去しても、CUが複数のパイプライン処理領域にまたがるときのTUのタイリングが依然として必要とされる。例えば、図10Eに示されるCTU10300は、2つの垂直3分割結果を有するコーディングツリーを有する。2つの垂直3分割は、CTUの中心に沿って垂直に配向されたサイズ32×128のCU10320をもたらす。CU10320は、CTU10300の左上隅に対してオフセット(48,0)に配置される。CU10320は4つの64×64パイプライン処理領域の各々を占有し、比較的小さいTUを使用する。
【0134】
図10Eは、フレキシブルパイプライン処理領域の(第1の)アプローチに従って領域に分割されたCTU10300を示す。コーディングツリーは、32×64輝度サンプルの2つの追加領域を使用して適応させることができる2つの垂直3分割を有する。追加領域の各々は、2つの32×32TU(CU10320内の1×4列として全体的に配置される)を含むことができ、4つの領域は48×64輝度サンプルを占有する。CTU10320の結果として生じる分割は、図10Eの領域境界10330によって示される。第1のアプローチでは、CU内のTUのタイリングは、変換サイズの利用可能性によってのみ制約される。最大の利用可能なサイズは、CUをTUでタイル化するために使用される。
【0135】
図10FはCTU10400を示している。CTU10400は、さらなるタイリングTUの第2のアプローチに従って領域に分割されたCTU10300に関する。図10Fの例では、32×128CU10420(CU10320に対応する)が32×32TUの1×4アレイの代わりに、16×32TUの2×4アレイに関連付けられる。16×32TUの2×4アレイは、領域境界10430によって示されるように、CTUの4つのパイプライン処理領域のうちの1つに含まれる各TUをもたらす。図10Fの例では、TUは境界10430を横切らず、TUが2つ以上のパイプライン処理領域に重複または広がらないことを意味する。2つの垂直3分割を有するコーディングツリーの例は、複数のパイプライン処理領域にわたるTUを回避するために、CUを複数のTUに分割する結果となる様々なコーディングツリーが可能であることを示す。さらに、例示的なケースは、64×64TUを伴うものに限定されない。(第2の)アプローチでは、CU内のTUのタイリングが各TUが複数のパイプライン処理領域にまたがらないという要件によってさらに制約される。結果として、使用されるよりも小さいTUが使用され、最大の利用可能な変換サイズは、CU内のTUのタイリングに対する制約であった。所与のサイズのブロックにわたって残差サンプルを非相関化するために変換が使用されるので、より小さいTUの使用は、より低い圧縮性能をもたらすことが期待され得る。しかしながら、インター予測されたCUについては、場合によってはより低い圧縮性能は生じない。単一の変換は、変換の比較的少ない基底関数にマッピングする値を含む残差サンプルを非相関化するのに効率的である。したがって、単一の変換は典型的には低周波数の残差サンプル、すなわち、周波数領域においてTBの左上隅に向かって位置する残差サンプルを非相関化するのに効率的である。しかしながら、コンピュータグラフィックスまたはテキストのような高度に不連続なコンテンツを含むか、またはブロックの一部分に集中したコンテンツを含む残差サンプルは、全ての基底関数がTBの全体に及ぶので、相関解除が不十分である。
【0136】
残差サンプルがCUの一部分に集中する場合はインター予測ブロックに共通であり、例えば、前景と背景との間の境界のような差から生じる。一般に、より大きなブロックの使用は、改善された圧縮性能をもたらすが、前景および背景(または他の同様の境界)に及ぶブロックももたらす。前景と背景が異なる動きを有する場合、典型的には、CUの1つの部分が(ゼロまたはゼロに近い値を有する残差サンプルを有する)参照ピクチャから良好に予測される。対照的に、CUの別の部分は、参照ピクチャからはあまり予測されない。
【0137】
1つの解決策は、ビデオエンコーダ114がコーディングツリーをさらに分割し、より小さいCUをもたらすことである。より小さいCUの各々は、基礎となる画像特徴により良く適応するために、異なる予測モードを割り当てられてもよい。オブジェクト境界において、または遮蔽された領域が見えるようになる場合、動き探索は一般に、適切なインター予測されたCUを見つけることができない。代わりに、イントラ予測が典型的に使用される。CU内のTUのタイリングは、個々の残差係数の影響の空間的範囲を、対応するTBのサイズに制限する。したがって、CU内のタイル状TUの使用は、より大きなCUの選択を可能にすることができる。より大きなCUは、画像フレーム内の遮蔽された、前景および/または背景オブジェクトにわたるCUであってもよい。次いで、パイプライン処理領域境界によるTUのさらなるタイリングは、圧縮性能を過度に劣化させることはなく、ビデオエンコーダ114による場合よりも大きなCUの選択により利点さえも提供し得る。
【0138】
図10Cは、反対方向に2つの3分割を有するコーディングツリー10100に関連するTUを示す。垂直方向の第1の3分割は、3つの領域10101、10102、および10103をもたらす。中間領域10102はさらに、水平方向に3分割され、その結果、追加領域が得られる。特に、64×64のCU10122は、領域10102におけるさらなる3分割から生じる。CU10122は、CTU10100の左上隅に対して(32,32)のオフセットに配置されている。CU10122は、処理領域境界10110から見られるように、4つのパイプライン処理領域にまたがる。
【0139】
CU10122のために64×64変換が使用される場合、7つの処理領域が必要とされ、CU10122のためのサイズ64×64の1つの領域と、CTU内の残りの領域を処理するための別の6つの領域(サイズ32×64の2つおよびサイズ64×32の4つ)とから構成される。通常の4つのパイプライン処理領域を超える実質的な増加が生じるので、64×64の変換サイズは、CU10122に適していない。したがって、4つの32×32変換が、CU10122の残差を符号化するために使用される。
【0140】
図10Dは、同一方向に2つの3分割を有し、対向方向に中間2分割を有するCTU10200のためのコーディングツリーに関連するTUを示す。CTU10200のコーディングツリーの結果として、サイズ32×64のCU10222は、CTU10200の左上隅に対して位置(0,48)に位置する。CU10222は、各領域がCU10222の16×64部分を含むように、2つのパイプライン処理領域にまたがる。図9の利用可能な変換サイズに基づいて、16×32のサイズが使用され、CU10200を占有するように2×2の方法でタイリングされる。次に、パイプライン化された実装は、境界10210によって示されるように描かれた領域においてCTUを処理することができる。さらに、パイプライン化された実装は、1つの領域の一部としてのCU10222の左端の2つの変換のための処理と、別の領域の一部としてのCU10222の右端の2つの変換のための処理と、を別々に実行することによって、CU10200を処理することができる。
【0141】
イントラ用のタイリングされたTUは、各TU境界で再構成を実行することができる。各TU境界で再構成を行うと、各CU内の付加的なフィードバックループのために複雑さが増す。しかしながら、各TU境界で再構成を実行することは、より小さいCUを選択する代替案が同じ重大度のフィードバックループをもたらしたので、最悪の場合の複雑さを増加させない。インター予測されたCUについては、追加のフィードバックループは存在しない。
【0142】
図11は、コーディングツリーユニットのコーディングツリーにおけるコーディングユニットの予測モードを決定するための方法1100を示している。方法1100は、ビデオエンコーダ114およびビデオデコーダ134のパイプライン化された実装を実現することを可能にする。CTUのコーディングツリーを決定する際に、ビデオエンコーダ114は図6に関連して説明したように、コーディングツリーを決定するための探索を実行する。CTUの各「候補領域」がさらに分割されるのではなくCUを含むオプションは、リーフノード生成ステップ622によってテストされる。ステップ622で、方法1100が呼び出されて、1つまたは複数の候補CUが生成される。各候補CUは、CTUの領域に対する最良の候補CUと、領域をさらに分割することとの比較に基づいて評価される。分割から得られる最良の候補CUを考慮する際に、結果として得られるCUのコーディングツリーおよび予測モードの両方が決定される。すなわち、「最良の」候補CUが、ビットストリーム115において使用されるように選択される。ビデオエンコーダ114およびビデオデコーダ134の構成は、例えば、CUサイズおよび/または時間レイヤIDなどの態様に基づいて、特定のCUのための利用可能な予測モードを制限し得る。制限は、予測モードの決定に影響を及ぼす。さらに、制限は特にステップ1222および1322に関して図12および13を参照して説明したように、影響を受けたCUのための必要な予測モードシグナリングも低減する。方法1100は、構成されたFPGA、ASIC、またはASSPなどの装置によって実施され得る。さらに、方法1100は、プロセッサ205の実行下でビデオエンコーダ114によって実行されてもよい。そのようなものとして、方法1100は、コンピュータ読み取り可能な記憶媒体および/またはメモリ206に記憶することができる。各候補領域に対して呼び出される方法1100は、スライスタイプテストステップ1110で開始する。
【0143】
スライスタイプテストステップ1110において、プロセッサ205は、ビデオデータ113の現在のフレームのスライスをテストする。一般に、スライスタイプはGOP構造、例えば、図8BのランダムアクセスGOP構造から生じる。スライスタイプがイントラ(「I」)スライスの場合、イントラ候補CU1150は、評価のために追加される。スライスタイプがインター(「P」または「B」)スライスである場合、方法1100は、ステップ1110から候補CUサイズテストステップ1120に進む。
【0144】
候補CUサイズテストステップ1120において、プロセッサ205は、CUのサイズをテストして、CUがスキップモードを使用して符号化されることのみが可能であるべきかどうか、または他の予測モードも利用可能であるべきかどうかを決定する。CUのいずれかの辺の長さ(すなわち、幅または高さ)が64を超える場合、ステップ1120は「大きい」を返し、評価のためだけにスキップモード候補1170が追加される。ステップ1120で「大きい」を返すことは、CUがステップs1210および1310に関連して説明される処理領域にオーバラップすることを推論する。CUが垂直3分割の結果である場合、オーバーラップは垂直であってもよい。CUが垂直3分割の結果である場合、オーバーラップは垂直であってもよい。
【0145】
いずれかのサイズ長が64を超えるCUについての評価のために1つのモードのみが追加されるので、64を超えるサイド長のCUについてのスキップフラグを符号化または復号する必要はない。CUのサイズがビデオデコーダ134がCUの予測モードを決定するのに十分であるため、スキップフラグを符号化または復号する必要はない。さらに、128×128のCTUサイズに対して、64を超えるサイズ長のCUをスキップとして符号化することは、そのような大きなCUに対して生じるパイプライン問題を防止するだけである。パイプライン問題はCU内の追加のTUタイリングによって対処されるように、より小さなサイズのCUに対して依然として生じ得る。大きなCUに対してのみスキップコードを可能にすることはCUのための予測モードを選択するためのビデオエンコーダ114の柔軟性を制限するように思われるが、さらなるスプリットを実行する能力は、そわなければより大きなCUが配置されることになるより小さなCUをもたらすことが利用可能である。さらに、PまたはBスライスにおいてイントラCUが望ましい場合、オクルージョンされたオブジェクトはオクルージョンされた領域の輪郭に従うために、より小さいサイズのCUを必要とする傾向があるので、オクルージョンされたオブジェクトがビデオシーケンスにおいて見えるようになる可能性が高い。ステップ1120は、CUのどちらの辺の長さも64を超えていない場合には、「通常」に戻る。その結果、候補CUについて、イントラ候補モード1150、インター候補モード1160、およびスキップモード候補1170のそれぞれが評価される。
【0146】
CUについての候補予測モードの評価、すなわち1150、1160、および1170のうちの1つまたは複数の評価の後、最良のモードが候補CUとして選択される。「最良」候補予測モードは、最低レートまたは歪みコストに基づいて選択される。図6を参照して説明したようなコーディングツリーのトラバースにより、分割から生じるCUの総コストと、包含領域内の1つのCUと、の比較により、コーディングツリーの決定が可能になる。
【0147】
方法1100の別の構成では、所与のCUに対するテストスキップモードのみに対する制限が、CUがCTUの3分割の結果である場合に限定される。例えば、CUがサイズ32×128、64×128(分割の中心CU、4つのパイプライン処理領域にわたる)、128×32、または4つのパイプライン処理領域にわたる128×64(分割の中心CU)の場合に、テストモードへの制限が行われる。テストスキップモードへの制限は、複数の予測モードがテストされるので、スキップモードが推論されるケースの数を減少させ、CUに対してシグナリングされる最良のものはCTUの2分割から生じる。言い換えると、サイズ64×128または128×64のCUは、いずれも、複数のパイプライン処理領域にわたるTUをもたらさず、使用される。以下に説明される、図12のステップ1222および図13のステップ1322は、それに応じて変化される。
【0148】
方法1100のさらに別の構成では、テストスキップモードのみに対する制限がCTUの3分割の中心CUに制限される。すなわち、この制約は、64×128CU(4つのパイプライン処理領域にわたる分割の中心CU)、または4つのパイプライン処理領域にわたる128×64CU(分割の中心CU)に適用される。以下に記載される、図12のステップ1222および図13のステップ1322は、それに応じて変化される。
【0149】
図12は、CTUのコーディングツリーの結果として生じるCUをビットストリーム115に符号化するための方法1200のフローチャート図であり、この方法は、パイプライン処理領域のサイズがCTUのサイズよりも小さく、方法がパイプラインアーキテクチャで実行され得るように選択された変換サイズを有する。方法1200では、各変換が処理グリッドに従って定義された領域内で全体的に処理され得るように、変換サイズが選択される。方法1200は、構成されたFPGA、ASIC、またはASSPなどの装置によって実施され得る。さらに、方法1200は、プロセッサ205の実行下でビデオエンコーダ114によって実行されてもよい。そのようなものとして、方法1200は、コンピュータ読み取り可能な記憶媒体および/またはメモリ206に記憶することができる。方法1200は、処理領域決定ステップ1210においてプロセッサ205から開始する。
【0150】
処理領域決定ステップ1210において、ビデオエンコーダ114は、プロセッサ205の実行下で、画像フレームの分割を、画像フレームの全体を占める等しいサイズおよび正方形の処理領域の格子に決定する。処理領域は、CTUのサイズよりも小さいサイズを有する各画像フレームの部分を定義する。例えば、128×128のCTUサイズでは処理領域サイズは64×64であってもよく、64×64のCTUサイズでは処理領域サイズは32×32であってもよい。これらの場合の各々において、各CTUは、2×2アレイに配置された4つのパイプライン処理領域に分割される。処理領域の処理順序は、Z順に設定される。Z順スキャンの使用は、CTU内のCUのスキャン順序と一致しており、したがって、1つのパイプライン処理領域から次に進むときにデータ依存関係が満たされることを保証するために必要な順序に整列される。ステップ1210は、画像フレームを複数の等しいサイズの処理領域に分割するように動作し、等しいサイズの処理領域のそれぞれは、ビットストリームを符号化するパイプラインの単一段階の間に処理されるブロックである。プロセッサ205内の制御は、ステップ1210からコーディングツリー符号化ステップ1215に進む。
【0151】
コーディングツリー符号化ステップ1215において、ブロックパーティショナ310はプロセッサ205の実行下で、方法1100によって決定されるように、CTUのためのコーディングツリーをビットストリーム115に符号化する。コーディングツリーは図5および図6を参照して説明したように、図7Aおよび図7Bの例を使用して、一連の分割に従ってCTUを1つまたは複数のCUに分解する。方法1100では、ブロックパーティショナ310が図3を参照して説明したように、復号画像の忠実度を維持しながら、CTUが高い圧縮比で符号化されることを可能にする特定のコーディングツリーに到達するために、分割の多くの異なる組合せをテストした。方法1100は、コーディングツリーを決定することによって、各コーディングユニット(CU)のサイズを効果的に決定する。プロセッサ205内の制御は、ステップ1215からCU選択ステップ1220に進む。
【0152】
CU選択ステップ1220において、ブロックパーティショナは、プロセッサ205の実行下で、CTUのコーディングツリーの1つのCUが選択される。CUを符号化する場合、ステップ1220は、ステップ1215の符号化コーディングツリー内のCUごとに実行される。選択されたCUは、画像フレーム内の特定のサイズおよび位置を有し、したがって、収容しているCTUの左上隅に対する位置を有する。したがって、選択されたCUは、包含するCTU内の所与の領域を占有すると言うことができる。プロセッサ205における制御は、ステップ1220から予測モードテストおよび符号化ステップ1222に進む。
【0153】
予測モードテストおよび符号化ステップ1222において、プロセッサ205は方法1100において決定されるように、選択されたCUの予測モードをテストする。フレームのスライスタイプが(i)「P」または「B」の場合、または(ii)「skip flag」(または「cu_skip_flag」)が符号化されている場合。スキップフラグは、スキップモードを使用してCUが符号化されているかどうかを示す。スキップモードを使用してCUが符号化されていない場合、「pred_mode」フラグが符号化され、CUにインター予測またはイントラ予測のどちらが使用されているかが示される。
【0154】
図11のステップ1120に関連して説明したように、スキップモードは、CUのサイズに基づいて推論することができる。したがって、「大きい」CU(ステップ1120による)の場合、CUは処理領域の1つ以上のサイズであり、スキップモードはCUの暗黙のサイズプロパティによって推論される。CUは、処理領域のうちの1つの境界に効果的にオーバラップする。従ってスキップモードは推論され、スキップフラグはビットストリームに符号化されない。むしろ、マージインデックスは、CUの暗黙のプロパティに基づいて決定される。あるいは推論されたスキップが3分割または3分割の中心CUに基づく場合、マージインデックスは、CUの形状および/または位置である、CUの暗黙のプロパティに基づいて決定される。スキップモードが推論されない場合、ステップ1322は、CUが処理領域の1つ以上のサイズではなく、スキップフラグを含むと判断する。推論スキップモードを有する構成では、スキップフラグが図11のステップ1120を参照して説明したように、CUサイズが所定の閾値未満である場合にのみ符号化される。例えば、いずれの辺の長さも64サンプルを超えない。スキップフラグの符号化は、フレームの時間レイヤID(例えば853)が所定の閾値を下回る場合にのみ、追加的に符号化されてもよい。例えば、時間IDの閾値は、GOPサイズが16ピクチャである場合、4未満など、GOP構造サイズの最大時間レイヤ未満であってもよい。推論されたスキップモードを有する構成は、閾値が満たされた場合(例えば、どちらか一方の辺の長さが64より大きいCU)、スキップフラグを符号化する必要はない。なぜならば、スキップコードのみが方法1100においてそのようなケースについてテストされたからである。さらに、ステップ1222は、2つ以上の予測モードがCUについてテストされた場合のみ予測モード情報が符号化され、ビットストリーム115内に存在するシグナリングの対応する低減、したがって、結果としてより高い圧縮性能が達成され得るという点で、方法1100と一致する。
【0155】
「大きい」セットと「通常」セットとの間のCUの異なる分割は、以下の配置に示されるように可能である。「大きい」セットにおいてより多くのCUを有することは、これらのサイズのCUのための予測モードを選択する際にビデオエンコーダ114により少ない柔軟性を与えるという犠牲を払って、パイプライン処理問題を解決するためのTUタイリングのより少ないインスタンスをもたらす。
【0156】
方法1100のさらに別の構成では、使用されるべきスキップモードが推論されるCUの辺長に関する制約(ステップ1120は「大きい」を返す)が両辺が64以上である任意のCUに適用される。両側が64以上であることを要求すると、スキップ推論が行われるCUのセットは、128×128、64×128、および128×64となる。図12のステップ1222および図13のステップ1322は、それに応じて変化される。
【0157】
方法1100のさらに別の構成では、使用されるべきスキップモードが推論されるCUの辺長に関する制約(ステップ1120は「大きい」を返す)がいずれかの辺長が64より大きい任意のCUに適用され、スキップ推論が行われるCUのセットは128×128、64×128、128×64、128×32、32×128、64×64である。再度、図12のステップ1222および図13のステップ1322は、それに応じて変化される。「大きい」セットと「通常」セットとの間の閾値(または境界)はシステム100の「動作点」(例えば、ビットストリームの所望のビットレート)に依存し得る。固定された境界を有する代わりに、境界は閾値としてビットストリーム115においてシグナリングされることができ、ビデオエンコーダ115がシステム100のための境界を選択することを可能にする。境界は、辺の長さのlog2としてシグナリングすることができ、CUの「どちらかの」側または「両方の」側が、「大きい」セット内にあると見なされるべきCUのためのシグナリングされた境界と一致しなければならないという要件もまた、シグナリングされ得る。
【0158】
予測モードがスキップモードであると判定された(または推論された)場合(ステップ1222は「スキップ」を返す)、プロセッサ205の制御はステップ1222から動き補償実行ステップ1270に進む。そわない場合(予測モードはインター予測またはイントラ予測であり、ステップ1222は「イントラ又はインター」を返す)、プロセッサ205の制御はステップ1222から処理領域特定ステップ1225に進む。
【0159】
処理領域特定ステップ1225で、プロセッサ205は、ステップ1220で選択されたCUの領域を使用して、選択されたCUとオーバーラップする処理領域を識別する。例えば、図10AのCU1022は、CTU1000内の4つの64×64処理領域とオーバーラップする。プロセッサ205内の制御はステップ1225からCU変換サイズ制約決定ステップ1230へと進む。
【0160】
CU変換サイズ制約決定ステップ1230において、プロセッサ205は、CUの初期変換サイズを決定する。初期変換サイズは、選択されたCUの幅を超えない幅および選択されたCUの高さを超えない高さを有する、図9のものなどの変換サイズの所定のセットの最大変換サイズとして設定される。したがって、初期変換サイズは、選択されたCUに「適合する」最大サイズである。輝度チャネルを考慮すると、典型的には、単一の変換がCUの全体を占める。彩度チャネルは同様の関係を有し、彩度変換サイズは4:2:0輝度マフォーマット、すなわち、各変換の幅および高さの半分に調整された輝度チャネルのものに対応する。
【0161】
単一の変換がCUを完全に占有しない場合、初期変換サイズは、ステップ1230で、変換を用いてCUの全体を占有するために「タイリング」プロセスを使用して適用される。例えば、32×128のサイズを有するCU1020の場合、CUの全体を占有するために、1×4タイリングを伴う32×32の初期変換サイズが必要とされる。64×128のサイズを有するCU1022の場合、初期変換サイズは64×64であり、CUの全体を占有するために1×2のファイルを有する。プロセッサ205における制御は、ステップ1230から処理領域境界重なりテストステップ1235に進む。
【0162】
処理領域境界重なりテストステップ1235において、プロセッサ205は初期変換サイズの変換であって、選択されたCUに関連付けられた変換が2つ以上の処理領域にわたる(またはその境界を「またがる」)かどうかを判定する。言い換えれば、ステップ1235において、プロセッサ205は、コーディングユニットが処理領域間の境界に重なるかどうかを判定する。例えば、CTU1000の左上隅に対する位置(0,0)に位置するCU1020の32×32の初期変換サイズで、各変換は、64×64パイプライン処理領域内に完全に含まれる。上の2つの32×32変換は1つの処理領域に配置され、下の2つの32×32変換は別の処理領域に配置される。このような場合、ステップ1235は「いいえ」を返し、プロセッサ205内の制御は、CU変換サイズステップ1240に進む。
【0163】
しかしながら、64×64の初期変換サイズを有し、CTU1000の左上隅に対して位置(32,0)に位置するCU1022の場合、初期変換サイズは、(32,0)から(95,64)までの領域を占める。処理領域が64×64格子に整列されると、最初の第1の変換は2つの処理領域を占め、(32,64)から(95,127)までの領域を占める第2の変換は別の2つの処理領域を占める。結果として得られるこれらの提案された初期変換の少なくとも1つ(図10Aの例では両方とも)が2つ以上の処理領域間の境界にわたるので、ステップ1235は「Yes」を返し、プロセッサ205における制御はステップ1240から処理領域変換サイズステップ1245に進む。
【0164】
一般的な規則として、2つ以上の処理領域にわたる変換の可能性は、コーディングツリーの最上位レベルでの3分割のアプリケーションから生じる。その結果、CTUサイズ、処理領域サイズ、変換のサイド寸法はすべて2のべき乗であり、CTUサイズは処理領域サイズの幅と高さの2倍であることに起因する。したがって、コーディングツリーの最上位レベルの3分割のみが、処理領域の幅または高さの半分だけ空間的に(水平または垂直に)オフセットされたCUを生成することができる。オフセットCUは初期変換サイズの変換を使用する場合、2つ以上の処理領域にわたる変換をもたらし、処理領域の粒度で動作するパイプライン化アーキテクチャのための実質的な実装課題を作り出す。
【0165】
CTUサイズと、処理領域サイズと、変換サイド寸法サイズとの間の関係が与えられると、1つの解決策は、64サンプルを超える辺長を有するコーディングツリー内の領域の3分割を禁止することであり得る。64サンプルを超える辺長を有する領域の残りの選択肢は、それ以上の分割、2分割、または四分木分割ではない。さらなる分割が実行されない場合、4つの64×64変換のタイリングが可能であり、各々はパイプライン処理領域内に完全に含まれる。128×128CTUの2分割がいずれかの方向に実行された場合、結果として生じるサブ領域における反対方向の3分割の禁止は、2つのパイプライン処理領域にわたる可能な64×64CUを防止する。しかしながら、3分割の中央(64×64)CUをさらに分割することにより、パイプライン処理に関する変換配置問題を解決することができる。最初の禁止は、中間コーディングツリーが探索されるのを防止する。2分割がいずれかの方向に実行された場合(サイズ64×128またはサイズ128×64のいずれかの2つの領域をもたらす)、1辺の長さが128であるため、同じ方向に結果として生じるいずれかの領域の3分割を適用することも可能ではない。
【0166】
しかしながら、同じ方向における3分割は、パイプライン処理領域間の境界にわたるいかなる変換ももたらさない。例えば、128×64領域の水平3分割(CTUの水平2分割から生じる)は、16×128、32×128、および別の16×128領域をもたらす。128の辺長に沿って、一般に辺長32の変換が使用され、4回タイル張りされ、複数のパイプライン処理領域にわたるいかなる変換も生じない。最後に、四分木分割が実行された場合、結果として得られる各領域は別々のパイプライン処理領域内にあり、その後の分割に関係なく、それ以上のパイプライン処理の問題は発生しない。
【0167】
したがって、パイプライン処理性能を解決するための1つのアプローチは辺長が64を超える任意の領域上で3分割を禁止することであるが、この禁止は潜在的に有用なブロックサイズを禁止し、圧縮性能を低下させる。また、この制約は、残差係数を持たない場合、変換配置のためにパイプライン処理領域を引き起こさない「スキップモード」インター予測CUの使用を防止する。したがって、スキップモードCU、例えば、大きなCUの柔軟な配置が、特に低ビットレートで望ましいので、この制約は圧縮性能に悪影響を及ぼす。
【0168】
説明したように、ステップ1235のテストは、CTU内のCUサイズおよび位置に基づいて実行される。したがって、ステップ1235はビデオエンコーダ114の「探索空間」を増加させずに、暗黙のテストを実施する。すなわち、ビデオエンコーダ114はTU構成を決定する際に、付加的な自由度(例えば、フラグの付加)を与えられない。自由度の結果を記憶するために、ビットストリーム115に追加の信号を必要としないというTU構成手段を決定する際に、追加の自由度がないこと。言い換えれば、ステップ1235の動作は、CTUのコーディングツリーのプロパティに暗黙的に基づく。ステップ1235の出力はビットストリーム内で符号化されるべきTUサイズに関する明示的な信号とは独立しており、その生成には関係しない。
【0169】
CU変換サイズステップ1240において、プロセッサ205は、ステップ1230の決定されたCU変換サイズとなるCUのための変換サイズを選択する。結果として生じるTUは、複数のパイプライン処理領域にまたがらないので、CUを追加のTUにさらに分割する必要はない。プロセッサ205内の制御は、ステップ1240から順変換適用および量子化ステップ1250まで進む。
【0170】
処理領域変換サイズステップ1245において、プロセッサ205は結果として得られる変換のいずれもが、選択されたCUが及ぶパイプライン処理領域の2つ以上に及ぶことがないように、選択されたCUの変換サイズを決定する。例えば、サイズ64×128のCU1022は、収容CTU1000の左上に対して(32,0)に位置する。したがって、CU1022は、(32,0)から(95,127)までの領域にわたる。水平方向には、CUは64のXオフセットでパイプライン処理領域を通過する。したがって、水平方向には、TU幅が多くとも32である必要があり、パイプライン化された実装に適した最大TU幅である必要がある。垂直方向には、TU幅が多くても64である必要があり、パイプライン化された実施に適した最大TU幅である必要がある。しかしながら、図9に見られるように、利用可能な32×64TUはない。利用可能な最大の利用可能なTUは32×32であるので、32×32サイズのTUが選択される。CTU1000のための32×32TUの選択により、CTUは、図10Aを参照して説明したようにパイプライン方式で処理されてもよい。ステップ1245は例えば図9に示すように、利用可能な(複数の)変換サイズの集合からコーディングユニットの変換サイズを選択するように効果的に動作する。変換サイズは、コーディングユニット内に適合するように選択され、処理領域のサイズとは異なることができる。プロセッサ205内の制御は、ステップ1245から順変換適用および量子化ステップ1250へ進む。
【0171】
順変換適用および量子化ステップ1250において、変換モジュール326および量子化モジュール334はプロセッサ205の実行下で、ステップ1240またはステップ1245のいずれかの選択された変換を適用して、差分324を変換し、残差係数336を生成する。CUサイズが変換サイズに等しい場合、単一の変換が実行される。CUサイズが変換サイズよりも大きい場合、差分324のすべてが変換されるように、変換がタイル方式で適用される。さらに、ステップ1245で選択された変換サイズにより、個々の変換は、パイプライン処理領域の2つ以上にまたがる領域をカバーしない。
【0172】
ビデオ圧縮標準用の「参照ソフトウェア」などのソフトウェア実装は一般に、CTUサイズよりも小さい領域のパイプライン処理など、より細かい粒度の処理を使用せずに、各フレームを時間1CTUずつ処理する。参照ソフトウェア実装では、上記で特定されたパイプライン処理領域の問題などの問題は発生せず、通常、これらはリアルタイムまたはリソースに制約のあるデバイスで実行されないためである。実用的な実装、特にパイプラインアーキテクチャを利用するハードウェア実装と、いくつかのソフトウェア実装は、変換が完全に別個のパイプライン処理領域内に含まれることから利益を得る。変換がまったく別個のパイプライン領域内に含まれていることから利益を受けるソフトウェア実装には、局所性の改善のために同じパイプラインアーキテクチャを使用するマルチコア実装、または例が含まれる。別個のパイプライン領域内に完全に含まれる重要な利益変換は、パイプライン処理領域の均一なサイズおよび速度である。プロセッサ205における制御は、ステップ1250から残差係数符号化ステップ1255に進む。
【0173】
残差係数符号化ステップ1255において、エントロピーエンコーダ338は、プロセッサ205の実行下で、ステップ1250の残差係数をビットストリーム115に符号化する。第1に、「ルート符号化ブロックフラグ」が符号化され、ステップ1250の量子化から生じる少なくとも1つの有意な残差係数の存在を示す。ルート符号化ブロックフラグは、CUについて1回符号化され、CUの任意のTUの任意のTBについてすべてのカラーチャネルにわたって、CUの任意の変換について有意性を信号伝達する。少なくとも1つの有意な残差係数がCUの任意の色チャネルにわたる任意の変換のために存在する場合、各色チャネル内で、別個の符号化ブロックフラグが色チャネル内で適用される各変換のために符号化される。各符号化ブロックフラグは、対応する変換ブロックにおける少なくとも1つの有意な残差係数の存在を示す。少なくとも1つの有意な残差係数を有する変換については、有意性マップ、ならびに有意係数の大きさおよび符号も符号化される。プロセッサ205における制御は、ステップ1255からイントラモードテスト1260に進む。
【0174】
イントラモードテスト1260では、選択されたCUの予測モードがプロセッサ205によってテストされる。予測モードがイントラ予測である場合(ステップ1260で「Yes」)、プロセッサ205の制御は、イントラ予測実行ステップ1265に進む。そわない場合(予測モードがインター予測であり、ステップ1260が「No」を返す)、プロセッサ205における制御は、動き補償実行ステップ1270に進む。
【0175】
イントラ予測実行ステップ1265において、イントラフレーム予測モジュール364は、プロセッサ205の実行下で、サンプルのイントラ予測ブロック(366)を生成する。サンプルのイントラ予測ブロック366は、選択されたCUの各PBについてのイントラ予測モードに従って、フィルタリングされた参照サンプル362を使用して生成される。ステップ1245により、複数のTUがCUに関連付けられると、選択されたCUの内部の各TU境界においてイントラ再構成プロセスが適用される。参照サンプルキャッシュ356は、各CU境界における再構成サンプルに加えて、CU内部の各TU境界における再構成サンプルで更新される。CU内部のTU境界での再構成は、CU内部の現在のTUの上または左のTUの残差係数が現在のTUと一緒に配置されたPBの部分を生成するための参照サンプルに寄与することを可能にする。したがって、CU内部のTU境界で再構成すると、歪みを減らし、圧縮効率を向上させることができる。プロセッサ205における制御は、ステップ1265からCU再構成ステップ1275に進む。
【0176】
動き補償実行ステップ1270において、動き補償モジュール380は、プロセッサ205の実行下で、フィルタリングされたブロックサンプル382を生成する。フィルタリングされたブロックサンプル382は、フレームバッファ372からサンプル374の1つまたは2つのブロックをフェッチすることによって生成される。サンプルの各ブロックに対して、フレームは参照ピクチャインデックスに従って選択され、選択されたCUに対するピクセル単位の空間変位は動きベクトルに従って指定される。フレームバッファ372からフェッチされたサンプルの各ブロックに対して、フィルタリングは、動きベクトルの「サブピクセル」変位部分に従って適用される。動きベクトルのサブピクセル変位部分の精度は、1/4ペル精度または1/16ペル精度にできる。2つのブロックが使用される場合、結果として得られるフィルタリングされたブロックは、一緒にブレンドされる。参照ピクチャインデックスおよび動きベクトルは、方法1100において決定される。プロセッサ205における制御は、ステップ1270からCU再構成ステップ1275に進む。
【0177】
CU再構成ステップ1275において、合計モジュール352は、プロセッサ205の実行下で、インター予測またはイントラ予測されたCUのための残差サンプル350およびPU320を加えることによって、再構成されたサンプル354を生成する。スキップモードCUの場合、残差サンプルは存在せず、したがって、再構成サンプル354はPU320から導出される。再構成されたサンプル354は、現在のフレームにおける後続のイントラ予測されたCUによる参照のために利用可能である。再構成されたサンプル354はループ内フィルタリングが適用された(すなわち、ループ内フィルタ368の適用)後に、フレームバッファ372に書き込まれ、後続のフレームにおけるインター予測CUによって参照される。ループ内フィルタ368のデブロッキングフィルタリングは、CUの内部境界に適用される。すなわち、デブロッキングフィルタリングは、CUサイズおよびパイプライン処理領域境界の両方によるタイリングから生じる、CU内部のTU間の境界に適用される。プロセッサ205内の制御は、ステップ1275から最後のCUテストステップ1285に進む。
【0178】
最後のCUテストステップ1285において、プロセッサは、選択されたCUがCTU内の最後のCUであるかどうかをテストする。そわない場合(ステップ1160で「No」)、プロセッサ205内の制御はステップ1215に戻る。選択されたCUがCUスキャン順序、すなわち深さ優先Z順序スキャンにおけるCTUの最後のCUである場合、方法1200は終了する。方法1200が終了した後、次のCTUが符号化されるか、またはビデオエンコーダ114がビデオの次の画像フレームに進む。
【0179】
図13は、ビットストリーム133からCTUのCUを復号するための方法1300を示す。方法1300では、変換サイズが方法1300がパイプラインアーキテクチャで実行され得るように選択される。対応するパイプライン処理領域はCTUサイズよりもサイズが小さく、パイプライン処理領域のレートは各CTUのコーディングツリーに依存しない。方法1300は、構成されたFPGA、ASIC、またはASSPなどの装置によって実施され得る。さらに、方法1300は、プロセッサ205の実行下で、ビデオデコーダ134によって実行され得る。したがって、方法1300は、コンピュータ読み取り可能な記憶媒体および/またはメモリ206に記憶されてもよい。方法1300は、処理領域決定ステップ1310においてプロセッサ205から開始する。
【0180】
処理領域決定ステップ1310において、ビデオデコーダ134は、プロセッサ205の実行下で、ビットストリームの画像フレームを、画像フレームの全体を占める等しいサイズおよび正方形の処理領域の格子に分割することを決定する。ステップ1310は、ステップ1210と一致するように画像フレームの分割を決定する。ステップ1310は、画像フレームを複数の等しいサイズの処理領域に分割するように動作し、等しいサイズの処理領域の各々は、ビットストリームを復号するパイプラインの単一の段階の間に処理されるブロックである。プロセッサ205内の制御は、ステップ1310からコーディングツリー復号ステップ1315に進む。
【0181】
コーディングツリー復号ステップ1315において、エントロピーデコーダ420は、プロセッサ205の実行下で、ビットストリーム133からCTUのためのコーディングツリーを復号する。コーディングツリーは図5および図6を参照して説明したように、図7Aおよび図7Bの例を使用して、一連の分割に従ってCTUを1つまたは複数のCUに分解する。ビットストリーム133から復号されたコーディングツリーは、図12のステップ1215で決定されたコーディングツリーである。ステップ1315は、コーディングツリーを用いてCTUを復号することによって、各コーディングユニット(CU)のサイズを効果的に決定する。プロセッサ205内の制御は、ステップ1315からCU選択ステップ1320に進む。
【0182】
CU選択ステップ1320において、ビデオデコーダ134は、プロセッサ205の実行下で、コーディングツリーに関連する構文がビットストリーム134内に存在する方向に対応する順方向へのコーディングツリーを介した反復に従って、復号されたコーディングツリーの1つのCUを選択する。順方向は、Zオーダースキャンに関連する。選択されたCUは画像フレーム内の特定のサイズおよび位置を有し、したがって、収容CTUの左上隅に対する位置を有する。したがって、選択されたCUは、収容CTU内の所与の領域を占有すると言うことができる。プロセッサ205における制御は、ステップ1320から予測モード決定テストステップ1322に進む。
【0183】
予測モード決定テストステップ1322において、プロセッサ205は、選択されたCUの予測モードを決定する。フレームのスライスタイプが「P」または「B」である場合、エントロピーデコーダ420は、スキップモードを使用してCUが符号化されているかどうかを示す「スキップフラグ」(または「cu_skip_flag」)を復号する。CUがスキップモードを使用して符号化されていない場合、エントロピーデコーダ420は「pred_mode」フラグを復号する。「pred_mode」フラグは、CUにインター予測またはイントラ予測のどちらが使用されているかを示す。図11のステップ1120に関連して説明したように、スキップモードは、CUのサイズに基づいて推論することができる。したがって、「大きい」CU(ステップ1120による)の場合、CUは処理領域の1つ以上のサイズであり、スキップモードはCUの暗黙のサイズプロパティによって推論される。スキップモードはそれに応じて推論され、スキップフラグはビットストリームに符号化されない。むしろ、マージインデックスは、CUの暗黙のプロパティに基づいて決定される。あるいは推論されたスキップが3分割または3分割の中心CUに基づく場合、マージインデックスはCUの形状および/または位置でCUの暗黙のプロパティに基づいて決定される。スキップモードが推論されない場合、ステップ1322はCUが処理領域の1つ以上のサイズではないと判断し、スキップフラグを含む。
【0184】
推論されたスキップモードを有する構成では、スキップフラグが、CUサイズが所定の閾値より小さい場合、例えば、どちらの辺長も64サンプルを超えない場合にのみ復号される。そわなければ、CUは「大きなCU」であると決定され、スキップモードが使用されていると推論される。スキップフラグの符号化は時間レイヤIDが所定の閾値未満、例えば、GOP構造サイズの最大時間レイヤ未満、例えば、GOPサイズが16ピクチャである場合に4未満である場合にのみ、追加的に符号化されてもよい。推論されたスキップモードを有する構成は、閾値テストが満たされた場合(例えば、閾値を超える大きなCUサイズおよび/または時間レイヤID)、スキップコードのみが方法1100においてそのようなケースについてテストされたので、スキップフラグiを復号する必要はない。これにより、予測モードがスキップモードであると判定される。さらに、ステップ1322は、2つ以上の予測モードがCUについてテストされたときにのみ、予測モード情報が復号されるという点で、方法1100と一致する。CUについて1つの予測モードのみがテストされた場合、ビデオデコーダ134は予測モードを明示的に復号するのではなく、例えば、CUサイズに基づいて予測モードを推論する。
【0185】
予測モードがスキップモードであると判定された(または推論された)場合(ステップ1322で「スキップ」)、プロセッサ205の制御は、ステップ1322から動きパラメータ復号ステップ1370に進む。そわない場合(予測モードがインター予測またはイントラ予測である)、ステップ1322は「イントラまたはインター」を返し、プロセッサ205における制御は処理領域特定ステップ1325に進む。
【0186】
処理領域特定ステップ1325で、プロセッサ205は、ステップ1320で選択されたCUの領域を使用して、選択されたCUとオーバーラップする処理領域を特定する。例えば、図10Aのコーディングユニット1022は、CTU1000内の4つの64×64処理領域とオーバーラップする。ステップ1325は、図12のステップ1225と同様に動作する。プロセッサ205における制御は、ステップ1325からコーディングユニット変換サイズ制約決定ステップ1330に進む。
【0187】
コーディングユニット変換サイズ制約決定ステップ1330において、プロセッサ205は、CUの初期変換サイズを決定する。初期変換サイズは、ステップ1230の決定と同様の方法で設定される。プロセッサ205における制御は、ステップ1330から処理領域境界重なりテストステップ1335に進む。
【0188】
処理領域境界重なりテストステップ1335において、プロセッサ205は重なりテストステップ1235と同様に、選択されたCUに関連する初期変換サイズの変換が2つ以上の処理領域に及ぶかどうかを判定する。言い換えると、ステップ1335は、コーディングユニットが処理領域間の境界と重なるかどうかを判定する。各変換が処理領域内に完全に含まれる場合(ステップ1335で「No」)、プロセッサ205内の制御はCU変換サイズステップ1340に進む。初期変換サイズから生じる変換のうちの少なくとも1つが、2つ以上の処理領域間の境界に及ぶか、または「またがる」場合(ステップ1335で「Yes」)、プロセッサ205内の制御は処理領域変換サイズステップ1345に進む。テストステップ1335の結果はCTU内のCUサイズおよび位置に依存し、これらは、CTUのコーディングツリーによって完全に記述される。したがって、CUが2つの処理領域にまたがるか否かを決定するために、ビットストリーム133から復号される必要のある追加の信号はない。むしろ、CUの暗黙のプロパティ(サイズおよび位置)は、処理領域境界がオーバーラップしているかどうかをテストするために使用される。
【0189】
CU変換サイズステップ1340において、プロセッサ205は、ステップ1240の変換サイズ選択に従って、ステップ1330の決定されたCU変換サイズとなるCUの変換サイズを選択する。プロセッサ205における制御は、ステップ1350から残差係数復号ステップ1350に進む。
【0190】
処理領域変換サイズステップ1345において、プロセッサ205は結果として得られる変換のいずれもが、選択されたCUが及ぶパイプライン処理領域の2つ以上に及ぶことがないように、選択されたCUの変換サイズを決定する。ステップ1345は、ステップ1245の変換サイズ選択に従って動作する。ステップ1345は例えば図9に示すように、利用可能な(複数の)変換サイズの集合からコーディングユニットの変換サイズを選択するように効果的に動作する。変換サイズは、コーディングユニット内に適合するように選択され、処理領域のサイズとは異なることができる。プロセッサ205における制御は、ステップ1345から残差係数復号ステップ1350に進む。
【0191】
残差係数復号ステップ1350において、エントロピーデコーダ420は、プロセッサ205の実行下で、ビットストリーム115から残差係数を復号する。コーディングユニットにおける各変換ユニットの残差係数に逆変換を適用することによる符号化ユニット。
【0192】
残差係数を復号する際には、まず、「ルート符号化ブロックフラグ」が復号される。ルート符号化ブロックフラグは、CUの任意のTUにおける、すなわち、すべてのカラーチャネルにわたる、少なくとも1つの有意な残差係数の存在を示す。ルート符号化ブロックフラグが有意な残差係数がCU内に存在することを示すとき、各色チャネル内で、別個の符号化ブロックフラグが、色チャネル内で適用される各変換について復号される。各符号化ブロックフラグは、対応する変換における少なくとも1つの有意な残差係数の存在を示す。少なくとも1つの有意な残差係数を有する変換の場合、有意性マップ、ならびに有意係数の大きさおよび符号も復号される。プロセッサ205における制御は、ステップ1350から逆量子化および逆変換適用ステップ1355に進む。
【0193】
逆量子化および逆変換適用ステップ1355において、逆量子化モジュール428および逆変換モジュール444は、プロセッサ205の実行下で、逆量子化残差係数をスケーリングされた変換係数440を生成する。ステップ1355では、ステップ1340またはステップ1345のいずれかの選択された変換が適用され、スケールされた変換係数440を変換して、残差サンプル448を生成する。ステップ1250と同様に、変換の適用は、決定された変換サイズに従ってタイル方式で実行される。さらに、ステップ1345で選択された変換サイズにより、個々の変換は、パイプライン処理領域のうちの2つ以上にまたがる領域をカバーしない。方法1200と同様に、実際的な実装、特にパイプラインアーキテクチャを利用するハードウェア実装、そしていくつかのソフトウェア実装は、変換が完全に別個のパイプライン処理領域内に包含されることから利益を得る。記載されている構成に利点をもたらすソフトウェア実装例は、データ局所性の改善のために同じパイプラインアーキテクチャを使用することができるマルチコア実装である。プロセッサ205における制御は、ステップ1355からイントラモードテストステップ1360に進む。
【0194】
イントラモードテスト1360では、選択されたCUの決定された予測モードがプロセッサ205によってテストされる。予測モードがイントラ予測である場合(ステップ1360で「Yes」)、プロセッサ205の制御はイントラ予測実行ステップ1365に進む。そわない場合(予測モードがインター予測である場合)、ステップ1360は「No」を返し、プロセッサ205の制御は動きパラメータ復号ステップ1370に進む。
【0195】
イントラ予測実行ステップ1365において、イントラフレーム予測モジュール476は、プロセッサ205の実行下で、サンプルのイントラ予測ブロック(480)を生成する。サンプルのイントラ予測ブロック480は、選択されたCUの各PBについてのイントラ予測モードに従って、フィルタリングされた参照サンプル472を使用して生成される。複数のTUがステップ1345によるCUと関連付けられている場合、選択されたCUに内部的な各TU境界において、イントラ再構成処理が適用される。再構成サンプルキャッシュ460は、各CU境界における再構成サンプルに加えて、CU内部の各TU境界における再構成サンプルで更新される。CU内部のTU境界での再構成は、CU内の現在のTUの上または左のTUの残りが、現在のTUと一緒に配置されたPBの部分を生成するための参照サンプルに寄与することを可能にする。CU内部のTU境界での再構成は、歪みを低減し、圧縮効率を改善するために動作することができる。プロセッサ205における制御は、ステップ1365からCU再構成ステップ1380に進む。
【0196】
動きパラメータ復号ステップ1370において、エントロピーデコーダ420は、プロセッサ205の実行の下で、選択されたCUのための動きベクトルを復号する。動きベクトルを復号することは、(i)スキップモードが推論された場合にマージインデックスを復号する(1120および1322におけるようにCUのプロパティから特定される)、または(ii)スキップモードがCUによって推論されなかった場合にマージインデックスを復号するためにスキップフラグを復号する、ことによって動きベクトルを選択することを含む。空間的および時間的に隣接するブロックを使用して、候補動きベクトルのリストが作成される(「マージリスト」と呼ばれる)。マージインデックスはマージリストから候補の1つを選択するために、ビットストリーム133から復号される。マージインデックスは、(上述のステップ1322に関連して説明したように)CUの暗黙的なプロパティに基づいて、またはビットストリームから分割モードフラグを復号することから決定されてもよい。選択されたCUがスキップモードを使用して符号化されている場合、選択された候補がCUの動きベクトルになる。選択されたCUがインター予測を使用して符号化される場合、動きベクトルデルタがビットストリーム133から復号され、復号されたマージインデックスに従って選択された候補に追加される。プロセッサにおける制御は、ステップ1370から動き補償実行ステップ1375に進む。
【0197】
動き補償実行ステップ1375において、動き補償モジュール434は、プロセッサ205の実行下で、フィルタリングされたブロックサンプル438を生成する。フィルタリングされたブロックサンプル438は、フレームバッファ496からサンプル498の1つまたは2つのブロックをフェッチすることによって生成される。サンプル498の各ブロックについて、フレームは参照ピクチャインデックスに従って選択され、選択されたCUに対するピクセル単位の空間変位は動きベクトルに従って指定される。フレームバッファ372からフェッチされたサンプルの各ブロックに対して、フィルタリングは、動きベクトルの「サブピクセル」変位部分に従って適用される。動きベクトルのサブピクセル変位部分の精度は、1/4ペル精度または1/16ペル精度にできる。2つのブロックが使用される場合、結果として得られるフィルタリングされたブロックは、一緒にブレンドされる。参照ピクチャインデックスおよび動きベクトルは、ビットストリーム133から復号され、方法1100で決定された。プロセッサ205における制御は、ステップ1375からCU再構成ステップ1380に進む。
【0198】
CU再構成ステップ1380において、加算モジュール450は、プロセッサ205の実行下で、再構成サンプル456を生成する。再構成されたサンプル456は、インター予測またはイントラ予測されたCUのための残差サンプル448およびPU452を加算することによって生成される。スキップモードCUの場合、残差はないので、再構成サンプル456はPU452から導出される。再構成されたサンプル456は、現在のフレームにおける後続のイントラ予測されたCUによる参照のために利用可能である。再構成されたサンプル456はループ内フィルタリングが適用された(すなわち、ループ内フィルタ488の適用)後に、フレームバッファ496に書き込まれ、後続のフレームにおけるインター予測CUによって参照される。ループ内フィルタ488のデブロッキングフィルタリングは、CUの内部境界に適用される。すなわち、デブロッキングフィルタリングは、CUサイズおよびパイプライン処理領域境界の両方によるタイリングから生じる、CU内部のTU間の境界に適用される。プロセッサ205における制御は、ステップ1380から最後のCUテストステップ1385に進む。
【0199】
最後のCUテストステップ1385において、プロセッサ205は選択されたCUがCUスキャン順序におけるCTU内の最後のCUであり、深さ優先Z順序スキャンであるかどうかをテストする。そわない場合(ステップ1385で「No」)、プロセッサ205の制御はステップ1315に戻る。選択されたCUがCTU内の最後のCUである場合(ステップ1385で「Yes」)、方法1300は終了する。方法1300が終了した後、次のCTUが復号されるか、またはビデオデコーダ134がビットストリームの次の画像フレームに進むかのいずれかである。
【0200】
ビデオエンコーダ114およびビデオデコーダ134の代替構成では、複数のパイプライン処理領域にわたるCUが「スキップモード」で符号化されると推定され、したがって、関連する残差係数を有さず、したがって、そのようなブロックを符号化または復号するために変換を実行する必要はない。したがって、ビデオエンコーダ114がステップ1215でコーディングツリーを決定しているとき、TUが複数の処理領域にわたることになるようなCUをテストするとき、関連する残差係数なしに符号化されることが必要とされる。
【0201】
産業上の利用可能性
記載された構成はコンピュータ及びデータ処理産業に適用可能であり、特に、ビデオ及び画像信号のような信号の復号を符号化するためのデジタル信号処理に適用可能であり、メモリ消費、最大のサポートされたブロックサイズ又はCTUサイズよりも小さい処理領域サイズを有するパイプライン化された実装の可能性を与えることによるシリコン面積の点で過剰なコストなしに高い圧縮効率を達成する。いくつかの実装形態では、領域TUのタイリングの実装(たとえば、ステップ1145および1245で実装)は、特にインター予測モードのパイプラインの非効率性を防ぐのに役立つため、説明されている構成はVVC標準に有用である。上述したように、本明細書に記載された実装のいくつかは、より大きなCUのために3値コーディングツリーが使用されること、または処理時間および/または品質への影響が低減された状態で64×64CUが使用されることを可能にする。
【0202】
上記は本発明のいくつかの実施形態のみを記載し、本発明の範囲および精神から逸脱することなく、本発明に修正および/または変更を加えることができ、実施形態は例示的であり、限定的ではない。
【0203】
(オーストラリアのみ)本明細書の文脈において、「含む」という語は「主として含むが、必ずしもそれだけではない」または「有する」または「含む」を意味し、「のみからなる」を意味しない。「含む」および「含む」などの語「含む」の変形は、対応して変化する意味を有する。
図1
図2A
図2B
図3
図4
図5
図6
図7A
図7B
図8A
図8B
図9
図10A
図10B
図10C
図10D
図10E
図10F
図11
図12
図13